# nesbox/tic-80

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nesbox-tic-80).**

5,825 stars · 584 forks · C · mit

## Links

- GitHub: https://github.com/nesbox/TIC-80
- Homepage: https://tic80.com
- awesome-repositories: https://awesome-repositories.com/repository/nesbox-tic-80.md

## Topics

`8bit` `fantasy-computer` `fantasy-console` `gamedev` `gameengine` `retro` `tic-80` `tic80` `tiny`

## Description

TIC-80 is a fantasy console platform and multi-language game engine that provides a virtual retro game development environment. It operates via a bytecode virtual machine that executes game logic within fixed memory and resolution constraints.

The project distinguishes itself by offering integrated asset editors for pixel art, tile maps, and a pattern-based chiptune audio workstation all within a single environment. It supports multi-language scripting, allowing developers to write logic in Lua, JavaScript, or Ruby, and provides a standalone game exporter to package projects into native executables for Windows, Linux, macOS, and Raspberry Pi.

The platform covers a broad range of capabilities, including 2D and textured triangle rendering, raw RAM access with bank-switched memory management, and comprehensive input processing for keyboards, mice, and gamepads. It also includes a virtual filesystem for project organization and a scanline interrupt system for creating raster effects.

## Tags

### Part of an Awesome List

- [Fantasy Consoles](https://awesome-repositories.com/f/awesome-lists/more/fantasy-consoles.md) — Implements a virtual retro console environment with fixed resolution, color palette, and memory constraints.

### Game Development

- [Fantasy Consoles](https://awesome-repositories.com/f/game-development/fantasy-consoles.md) — Operates as a complete fantasy console platform with integrated asset editors and a bytecode virtual machine.
- [Animated Tilemap Rendering](https://awesome-repositories.com/f/game-development/animated-tilemap-rendering.md) — Pico-8 draws a rectangular region of the map to the screen with sprite animation callbacks. ([source](https://tic80.com/learn))
- [Chiptune Audio Production](https://awesome-repositories.com/f/game-development/chiptune-audio-production.md) — Provides an integrated pattern-based audio workstation for composing chiptune music and sound effects.
- [Game Logic Scripting](https://awesome-repositories.com/f/game-development/game-logic-scripting.md) — Supports writing game logic using a unified API across Lua, JavaScript, and Ruby.
- [Real-time Input Processing](https://awesome-repositories.com/f/game-development/real-time-input-processing.md) — Pico-8 detects state changes for gamepads, keyboards, and mouse movements to drive real-time interactivity. ([source](https://tic80.com/learn))
- [Retro Game Engines](https://awesome-repositories.com/f/game-development/retro-game-engines.md) — Offers a complete engine for creating games with vintage aesthetics and constrained technical specifications.
- [Cross-Platform Game Compilation](https://awesome-repositories.com/f/game-development/cross-platform-game-clients/cross-platform-game-compilation.md) — Provides a pipeline to build native binaries for Windows, Linux, macOS, and Raspberry Pi from a single project.

### Programming Languages & Runtimes

- [Bytecode Virtual Machines](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-virtual-machines.md) — Provides a bytecode virtual machine that emulates a retro console with fixed memory and display constraints.
- [Multi-Language Script Execution](https://awesome-repositories.com/f/programming-languages-runtimes/multi-language-script-execution.md) — Supports the execution of game logic written in multiple scripting languages including Lua, JavaScript, and Ruby. ([source](https://cdn.jsdelivr.net/gh/nesbox/tic-80@main/README.md))
- [Bytecode Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/bytecode-compilation.md) — Compiles multiple scripting languages into a unified bytecode format for execution on the virtual machine.

### Development Tools & Productivity

- [Integrated Asset Editors](https://awesome-repositories.com/f/development-tools-productivity/integrated-asset-editors.md) — Ships an integrated suite of editors for creating pixel art, tile maps, and chiptune audio.
- [Debugging Consoles](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/in-app-debugging-consoles/debugging-consoles.md) — Includes an embedded console for printing debug messages to track execution flow and variable states. ([source](https://tic80.com/learn))
- [Execution Environment Controllers](https://awesome-repositories.com/f/development-tools-productivity/execution-environment-controllers.md) — Ships an execution environment controller for managing debug logging, session resets, and exiting to the system prompt. ([source](https://tic80.com/learn))
- [Standalone Binary Packaging](https://awesome-repositories.com/f/development-tools-productivity/lightweight-application-frameworks/standalone-binary-packaging.md) — Packages the virtual machine and game assets into native standalone executables for multiple platforms.

### Graphics & Multimedia

- [Chiptune Trackers](https://awesome-repositories.com/f/graphics-multimedia/digital-audio-workstations/chiptune-trackers.md) — Includes an integrated pattern-based chiptune audio workstation for composing music and sound effects.
- [Pixel Art Editors](https://awesome-repositories.com/f/graphics-multimedia/pixel-art-editors.md) — Includes built-in editors for designing pixel-perfect sprite sheets and grid-based world maps.
- [2D Primitive Rendering](https://awesome-repositories.com/f/graphics-multimedia/2d-spatial-rendering/2d-primitive-rendering.md) — Draws basic geometric shapes and text to a fixed-resolution screen. ([source](https://tic80.com/learn))
- [Audio Playback](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-playback.md) — Provides controls for playing back sound effects and music with adjustable pitch, volume, and looping. ([source](https://tic80.com/learn))
- [In-Engine Track Streaming](https://awesome-repositories.com/f/graphics-multimedia/audio-music/music-utilities/music-streaming-interfaces/in-engine-track-streaming.md) — Streams pre-composed music tracks with integrated controls for tempo and looping. ([source](https://tic80.com/learn))
- [Dynamic Pixel Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/dynamic-pixel-renderers.md) — Programmatically calculates and draws shapes, sprites, and maps on a pixel display. ([source](https://tic80.com/learn))
- [Shape Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shape-rendering.md) — Renders filled or outlined circles, rectangles, triangles, and lines. ([source](https://tic80.com/learn))
- [Sprite Manipulation Tools](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/sprite-manipulation-tools.md) — Supports placing, scaling, flipping, and rotating individual or composite sprites on screen. ([source](https://tic80.com/learn))
- [Sprite State Managers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/texture-management-systems/sprite-state-managers.md) — Provides built-in state storage by attaching eight boolean flags to each sprite for game metadata.
- [Boolean State Flags](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/texture-management-systems/sprite-state-managers/boolean-state-flags.md) — Allows developers to set and read boolean flags on sprites to manage game-specific object states. ([source](https://tic80.com/learn))
- [Tile Map Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/tile-map-renderers.md) — Renders grid-based map sections to the screen with support for real-time tile replacement. ([source](https://tic80.com/learn))
- [Tilemap Data Modification](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/tile-map-renderers/tilemap-data-modification.md) — Allows getting and setting sprite identifiers at specific map coordinates to modify game worlds. ([source](https://tic80.com/learn))
- [Scanline Interrupts](https://awesome-repositories.com/f/graphics-multimedia/scanline-interrupts.md) — Enables raster effects by executing custom logic during the vertical blanking interval. ([source](https://tic80.com/learn))
- [Interactive Sound Effect Managers](https://awesome-repositories.com/f/graphics-multimedia/sound-effect-libraries/interactive-sound-effect-managers.md) — Triggers specific sound identifiers across multiple channels to provide interactive audio feedback. ([source](https://tic80.com/learn))
- [Textured Mesh Rendering](https://awesome-repositories.com/f/graphics-multimedia/textured-mesh-rendering.md) — Fills triangles using textures sampled from image RAM to simulate 3D graphics. ([source](https://tic80.com/learn))

### Operating Systems & Systems Programming

- [Direct Memory Access](https://awesome-repositories.com/f/operating-systems-systems-programming/direct-memory-access.md) — Implements low-level raw memory access via peek and poke operations to manage the virtual machine's memory space. ([source](https://tic80.com/learn))
- [Memory Banking Implementation](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-banking-implementation.md) — Implements a bank-switching memory model to manage RAM and persistence within the virtual console.
- [Persistent Memory Banks](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-banking-implementation/persistent-memory-banks.md) — Saves and loads runtime memory to persistent banks for game progress and save-state features. ([source](https://tic80.com/learn))
- [Stateful Bank Synchronization](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-banking-implementation/stateful-bank-synchronization.md) — Synchronizes runtime memory to specific banks to manage stateful game progression. ([source](https://tic80.com/learn))

### Software Engineering & Architecture

- [Fixed-Timestep Loops](https://awesome-repositories.com/f/software-engineering-architecture/reactive-update-scheduling/update-cycle-controllers/update-application-timing/animation-frame-synchronization/game-loop-updates/fixed-timestep-loops.md) — Executes game logic at a constant, fixed frame rate to ensure consistent simulation speed across different hardware. ([source](https://tic80.com/learn))
- [Volatile Register Access](https://awesome-repositories.com/f/software-engineering-architecture/shared-memory-management/memory-access-profilers/volatile-register-access.md) — Provides access to memory-mapped system registers for low-level hardware interaction within the virtual console. ([source](https://tic80.com/learn))

### Data & Databases

- [Virtualized Filesystem Layers](https://awesome-repositories.com/f/data-databases/storage-abstraction/local-filesystem-storage/virtualized-filesystem-layers.md) — Implements a virtual filesystem to organize and manage project files within the sandboxed environment. ([source](https://tic80.com/learn))

### DevOps & Infrastructure

- [Cross-Platform Execution](https://awesome-repositories.com/f/devops-infrastructure/cross-platform-deployment-targets/cross-platform-execution.md) — Ensures that packaged game files can be executed across multiple operating systems and devices. ([source](https://cdn.jsdelivr.net/gh/nesbox/tic-80@main/README.md))

### Scientific & Mathematical Computing

- [Bit Manipulation Techniques](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/algorithms-and-complexity/algorithms/bit-manipulation-techniques.md) — Provides the ability to manipulate individual bits and bytes in RAM to modify sprites, maps, and sounds. ([source](https://tic80.com/learn))

### System Administration & Monitoring

- [Double-Buffered Rendering](https://awesome-repositories.com/f/system-administration-monitoring/terminal-buffering-systems/double-buffering/graphical-frame-buffers/double-buffered-rendering.md) — Utilizes double-buffered rendering with dual VRAM banks to eliminate screen flicker.

### User Interface & Experience

- [Bitmap Font Rendering](https://awesome-repositories.com/f/user-interface-experience/font-renderers/bitmap-font-rendering.md) — Renders text strings by mapping characters to custom fonts defined within the sprite set. ([source](https://tic80.com/learn))
- [Sprite & Particle Rendering](https://awesome-repositories.com/f/user-interface-experience/interactive-graphics-libraries/sprite-particle-rendering.md) — Displays tiles from sprite sheets with support for scaling, flipping, and rotation. ([source](https://tic80.com/learn))
