npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tic80-typescript

v2.1.0

Published

A workflow to create TIC-80 games with Typescript

Downloads

11

Readme

TSC-80 - TypeScript for the TIC-80


The documentation for TSC-80 1.0 is available here - Projects created for TSC-80 1.0 are incompatible with 2.0


Write your TIC-80 PRO games in TypeScript.

TSC-80 contains all the functions declarations (.d.ts) for the TIC-80 API, and will compile your TypeScript code in JavaScript to inject it into your TIC-80 cart.

Installation and usage

Pre-requisites

This tool has been tested with TIC-80 version 1.2.x (pro edition) on Windows 10, and should work on all platforms compatible with TIC-80 and TypeScript.

  1. Install NodeJS LTS
  2. Install TypeScript: npm install -g typescript
  3. Install TSC-80: npm install -g tic80-typescript

Create a project

  1. tsc80 init will create the necessary files (config, declarations, and game files) into the current directory
  2. Set the correct values inside the tsc80-config.json

Configuration

You need to complete the tsc80-config.json for each project.

{
  "ticExecutable": "path/to/tic/executable/file", // The file path to your TIC executable.
  "entry": "main.ts", // The entry point of your game's code
  "outfile": "build/output.js", // Path to bundled file. You should not have to change this.
  "minify": false // If you want to minify your build. May provide very slight performances improvements
}

Run TSC-80

  • $ tsc80 build will build your game into the "build" directory
  • $ tsc80 run will build, watch the changes, and launch your game through TIC-80

Once that TIC-80 is running, all code changes in .ts files will be reflected after a reload (ctrl+r). You can update and save your assets directly in TIC-80.

Workflow

$ tsc80 run continuously watches changes in your .ts files and compiles them on the fly. You then alt-tab to TIC-80, and hit ctrl+r to reload the game. This instructs TIC-80 to load game.js and inject the compiled code inside the cart.

❗ You must not edit the compiled JavaScript code inside the TIC-80 editor. Your changes would be overwritten.

You must only edit assets (sprites, map, sounds, music) inside the TIC-80 editor. Don't forget to save your changes before reloading the code.

When you hit ctrl+s inside TIC-80, game.js is saved as a standalone TIC-80 cart.

Version control

The build folder can be ignored, but you must commit game.js, since it contains all non-code assets.

Code & Modules

If you know TypeScript and modern web development, writing your TIC-80 game with TSC-80 should be straightforward. It uses esbuild to compile and bundle the code, targets ES2020 and uses the modern ESM syntax (import & export).

tsc80 build|run only transpiles your TypeScript files to JavaScript, and compiles them together as a single output file. Internally, TIC-80 uses QuickJS as its JavaScript engine.

The following limitations apply:

  • JS code up to ES2020. This tool does not provide polyfills.
  • ! No export from your entry file
  • Required to have a single file output
  • Tree-shaking is disabled by default, as esbuild would strip important "unused" functions like TIC()

Issues

TIC-80 doesn't reload my code

If you're building TIC-80 yourself, make sure to use the correct settings

$ cd <path-to-tic>/build
$ cmake -G "Visual Studio 16 2019" -DBUILD_PRO=On -DCMAKE_BUILD_TYPE=MinSizeRel ..
$ cmake --build . --config MinSizeRel --parallel

Changelog

2.0.0 - 2024-02-16 - BREAKING CHANGES

  • Projects created for TSC-80 1.0 must be refactored to be compatible with 2.0
  • Builds are now done with esbuild, instead of tsc
  • Projects now use ESM, with import and export

1.1.0 - 2023-08-18

  • Formal tsconfig update to output ES2020 code for TIC-80 1.1.x

1.0.3 - 2023-08-09

  • Dependencies update

1.0.1 - 2022-06-22

  • Cleaner code
  • Fixed race condition by @tmountain

1.0.0 - 2022-05-15

  • Official release for TIC-80 1.0
  • Added ttri()

1.0.0-dev - 2021-08-19

  • Refactoring to make this tool compatible with TIC-80 1.0.x-dev
  • Simplified workflow
  • Added peek1(), peek2(), poke1(), poke2(), vbank()

0.4.9 - 2021-07-17

  • Added elli(), ellib(), and trib()

0.4.8 - 2021-04-19

  • Fixed mouse() signature

0.4.7 - 2021-04-08

  • Removing "use strict" from output file, since it breaks the global scope in TIC-80 engine.
  • Updated dependencies
  • Stricter TypeScript
  • Better documentation

0.4.6 - 2021-04-03

  • Cleaned a bit of code
  • Added information in README
  • compress and mangle now default to true

0.4.5 - 2020-06-15

  • Added new function declarations (up-to-date with TIC version 0.80)
  • Added jsdocs for all functions. Thanks a lot @miltoncandelero

0.4.3 - 2019-01-17

  • Fixed the return types of multiple functions
  • Updated the boilerplate code to meet TS standards

0.4.2 - 2018-04-19

  • Added key(), keyp() and reset() declarations
  • Updated the boilerplate code for latest TIC-80 version
  • Updated README for better, step-by-step instructions

0.4.1 - 2017-10-13

  • Fixed missing input support (thanks @matanegui)
  • Fixed tsc80 cmd help message

0.4 - 2017-10-08

  • Added textri() declaration

0.3 - 2017-08-05

  • Refactored code

0.2 - 2017-08-04

  • Making a real npm package

2017-07-31

  • Added a backup option to copy your cart to your project's folder

2017-07-29

  • Updated print() and spr() declarations

2017-07-27

  • Added exit() declaration to tic.d.ts
  • Updated README.md

2017-07-19

  • Updated tic.d.ts

2017-07-11

  • Compile from TS to JS (finally...)
  • Renamed "main.ts" to "sample.ts"
  • Described a small trick to ensure that the init code waits for its dependencies
  • Removed the require of the compiled file
  • Cleared README a bit

2017-07-09

  • Added a require of the compiled code to catch exceptions
  • Added uglify-js to compress the compiled code
  • Rewrote the launch script

2017-07-06

  • Project birth: created a definitions file for TIC-80, and a tsconfig.json