Skip to content

Releases: nesbox/TIC-80

TIC-80 tiny computer 1.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 15:15

TIC-80 v1.4.0

Following v1.3.1, TIC-80 v1.4.0 refreshes the studio with a new menu bar and better sprite/music editing tools, adds line numbers and new drawing/input APIs, expands language support, and modernizes the desktop, web, and Android platform layers.

What's new

  • Studio UI: New menu bar replaces the toolbar, export options are grouped by type, and menu/submenu behavior is more predictable.
  • Line numbers: Optional line-number gutter with a toggle; visibility is preserved when toggling the gutter.
  • Sprite editor: Palette presets, a tools menu, and an initial random brush.
  • Music editor: Remembers its active tab and gets reworked tracker shortcuts plus general improvements.
  • Drawing/input APIs: Added btnr/keyr; added and fixed rrect/rrectb rounded-rectangle drawing across languages.
  • Languages: Gravity support; JavaScript runtime migrated to quickjs-ng; MiniScript 2.0.0; mruby 4.0.0; YueScript 0.34.3; Squirrel fixes and improvements.
  • Editor/console polish: Improved comment-line shortcut; console commands answer cleanly; command history is more robust.

Platform

  • Desktop player moved onto the sokol layer, with three desktop gamepad backends, better Windows gamepad/Switch Joy-Con report handling, XInput-unplaced pad support, restored CRT mask, and detached console for Windows GUI launches.
  • Web player gets a WebGPU build; web clipboard fills ahead of the paste click.
  • Android: Ruby returns to the APK; keyboard input works without TOUCH_INPUT_SUPPORT.
  • WASM: fixed wasmtic_paint export, Zig signature/compile errors, and wasm macro formatting.
  • Sokol layer now owns typed text; platform input and window behavior are more consistent.

Bug fixes

  • Fixed undo placing the cursor in the wrong place.
  • Fixed line-number visibility and gutter lag.
  • Prevented mouse movement from changing the active compact-mode menu; kept submenus visible unless another parent item is hovered.
  • Fixed clip() with no arguments in Python and Scheme.
  • Fixed languages requiring too many arguments for rrect/rrectb.
  • Fixed Scheme sfx() ignoring note/octave/speed from the SFX editor.
  • Fixed the Squirrel TIC/BOOT stack leak.
  • Fixed console command/answer boundaries; history survives allocation failure and bounds stored deltas.
  • Trimmed trailing filesystem slashes when creating studio.
  • Included browser hotfix items for the add dialog, alone=1, and Ctrl+R.

Build & infrastructure

  • CI split into checks and artifact builds; added an API conformance suite at the C boundary, plus broader conformance coverage and Forth measurement.
  • Added tests for btnr/keyr.
  • Enforced MSVC /W4, -Wall -Wextra -Werror, .clang-format linting, and analyzer/tidy checks for owned sources.
  • Modularized studio menu, console, strip/splash helpers, and boot cart handling.
  • Forth leaves release builds; pforth binary is placed in the CMake sub-build directory.
  • Updated README build instructions; pinned naett; updated vendored engines and dependencies.

Statistics: 78 commits, 63 pull requests, 11 contributors.

On tic80.com

The site moved on too:

  • A WebGPU player. In browsers that support WebGPU, a game page now loads
    a second player build that uses it; everywhere else the existing WebGL one
    still runs. Nothing to switch on.
  • Your saved game gets its own name and icon on iOS. Adding the player page
    to the home screen on an iPhone or iPad names the app after the game and
    gives it the game's cover as the icon.
  • Cartridge names are unique per account. Two live cartridges of yours can
    no longer share a name; the older duplicates were renamed with their id, and
    old /play/{id} links redirect to the game's own page.
  • Forth cartridges are no longer accepted. The engine dropped pForth from
    its release builds, so an upload of a Forth cartridge is refused.

What's Changed

  • feat(js): migrate JavaScript runtime to quickjs-ng by @Kaleidosium in #3056
  • chore(deps): bump YueScript to 0.34.3 by @Kaleidosium in #3057
  • tests: the API conformance suite — every call recorded at the C boundary by @nesbox in #3065
  • [WASM - Zig] Fix signature and compile errors by @codingglitch in #3061
  • add missing wasmtic_paint export by @DOCtorActoAntohich in #3062
  • Fix Squirrel TIC and BOOT stack leak by @HarshDhru23 in #3064
  • sokol: the CRT mask lands on the window's pixels again by @nesbox in #3067
  • naett: pin to 5f695cf, the Linux worker stops waiting out a second per request by @nesbox in #3068
  • boot: the cart an app carries becomes a module by @nesbox in #3069
  • studio: the strip's shared helpers become modules, and so does the splash by @nesbox in #3070
  • studio: the console becomes a module by @nesbox in #3072
  • Fix #3004: Scheme sfx() ignores note/octave/speed from SFX editor by @theluckystrike in #3073
  • sokol: the gamepad abstraction gains the three desktop backends by @nesbox in #3071
  • build: -Wall -Wextra -Werror for the sources we own by @nesbox in #3074
  • build: msvc /W4 for the sources we own by @nesbox in #3075
  • sokol: Windows reads the pads XInput does not place by @nesbox in #3076
  • android: fix keyboard input without TOUCH_INPUT_SUPPORT by @iyzsong in #3077
  • format: the .clang-format describes the code, and the lint job holds a change to it by @nesbox in #3078
  • tidy: the analyzer checks the tree, and the findings that were bugs are fixed by @nesbox in #3079
  • sokol: the desktop moves to the sokol layer by @nesbox in #3084
  • Add semicolons after macros to fix bad formatting in wasm.c by @swoolcock in #3085
  • Adds rrect and rrectb functions by @swoolcock in #3086
  • Line numbers by @swoolcock in #3088
  • Gravity language support by @swoolcock in #3083
  • Implement rrect/rrectb for Gravity by @swoolcock in #3089
  • Initial implementation of random brush by @swoolcock in #3087
  • ci: checks.yml takes the checks, build.yml keeps the artifacts by @nesbox in #3090
  • conformance: coverage semantics, and nine more languages measured by @nesbox in #3092
  • Add a button to toggle line numbers by @swoolcock in #3091
  • conformance: forth measured, and the RRECT/RRECTB the measuring found missing by @nesbox in #3093
  • sokol: a WebGPU build of the browser player by @nesbox in #3096
  • Fix gutter lag by @swoolcock in #3094
  • sokol: the web clipboard fills ahead of the paste click by @nesbox in #3097
  • android: ruby returns to the APK by @nesbox in #3098
  • mruby: the vendored engine moves to 4.0.0 by @nesbox in #3099
  • Update build instructions in README.md by @Kacper-aka-Lep in #3100
  • Fix some languages requiring too many arguments to rrect/rrectb by @swoolcock in #3102
  • Trim trailing slashes in filesystem path when creating studio by @swoolcock in #3103
  • Various squirrel fixes and improvements by @swoolcock in #3105
  • studio: the menu bar replaces the toolbar by @nesbox in #3101
  • Put the pforth binary in the cmake sub-build directory by @swoolcock in #3106
  • Fix clip() with no arguments in Python and Scheme by @r3wretrhy in #3108
  • studio: the sprite editor gets its tools menu by @nesbox in #3109
  • Keep submenus visible unless the user hovers another parent menu item by @swoolcock in #3110
  • Music tracker improvements by @swoolcock in #3111
  • studio: the menu becomes a module by @nesbox in #3113
  • studio: group the export menu by type by @nesbox in #3115
  • history: survive allocation failure, and bound the stored deltas by @nesbox in #3116
  • console: a command ends where its answer does by @nesbox in #3117
  • Add btnr and keyr API and tests by @swoolcock in #3112
  • Update MiniScript for 2.0.0 release by @minero...
Read more

TIC-80 tiny computer 1.3.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 17:25
62c24e5

TIC-80 v1.3.1

A hotfix for the three things the 1.3.0 release left broken: the browser console's add command, the PRO alone=1 export, and Ctrl+R in the web player. The C and C++ templates gained an alternative Zig build.

Bug fixes

  • The browser console's add works again. The file dialog the command needs is back on the site's player pages, where 1.3.0's player rewrite had dropped it, and the picked file now reaches the machine — the callback still called dynCall, which current emscripten no longer emits.
  • alone=1 exports without the editors again. A same-platform native export preferred the running client — editors and all — so the PRO flag was ignored; it now takes the server's editorless stub, the way the html export already did.
  • Ctrl+R no longer reloads the web player. The key that is RUN in the studio is consumed by the player again, as it was in the 1.2 SDL web build, so Ctrl+R runs the cart instead of the browser reloading the page.

Platform

  • The C and C++ templates gained an alternative Zig build system (#3051).

On tic80.com

  • The add dialog is back on the site's player pages: the site carries the server half of the fix, and this client the rest.

Statistics: 2 commits, 2 pull requests, 2 contributors

What's Changed

  • Add alternative build system for the C template using zig, add CPP template also using zig by @sergeypdev in #3051
  • hotfix 1.3.1: the add dialog, alone=1, and Ctrl+R in the browser by @nesbox in #3058

Full Changelog: v1.3.0...v1.3.1

TIC-80 tiny computer 1.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 10:49

TIC-80 v1.3.0

TIC-80 v1.3.0 adds MiniScript and Forth runtimes, new audio-analysis APIs, native Metal rendering for macOS/iOS, and a wide set of web, editor, controller, and platform fixes since v1.2.0.

What's new

  • New runtimes: MiniScript and Forth are now supported, with MiniScript updated to the latest MiniScript 2 main. Help/version docs now name both as post-1.2.0 runtimes.
  • Audio APIs: Added VQT audio analysis and spectral whitening APIs, plus raw FFT magnitude APIs fftr and fftrs.
  • Script eval: Python and JavaScript now implement eval; JavaScript also no longer crashes when there is nothing to evaluate.
  • Editor & templates: Python editor now outlines defs/classes; code from codeimport updates before running; new TinyGo-based Go starter template; Zig template updated for Zig 0.17.
  • Web & export: Added a Surf build option, a sokol web system layer, 4M wasm stack plus a check, and HTML export/site-player improvements. A played cart now returns to the browser on CLOSE GAME, and Surf no longer starves the browser or leaks fetch bodies.

Platform

  • Apple: New Metal renderer with native macOS/iOS support; optimized gamepad polling, border rendering, and file-change checks on Metal.
  • Linux/ARM: Added Linux ARM GLESv2 support; Linux icons/mimetypes moved to the hicolor theme.
  • Android: Manifest now uses the Game category and fixes .tic association on Android 12+.
  • Controllers: Dynamic controller assignment; SDL right stick moves the cursor and only shows after first movement.
  • Web/libretro: WASM libretro core no longer fails at runtime; optional libretro environment calls are non-fatal; console add survives Emscripten runtime trimming.
  • Console: Improved eval feedback when no cart is loaded; help tables and VRAM docs cleaned up.

Bug fixes

  • Fixed bookmark panel crash when a bookmark is on a blank line.
  • Fixed Squirrel out-of-bounds array indexing and a scanline/border callback memory leak.
  • Fixed Python sfx() ignoring note/octave/speed from the SFX editor.
  • Fixed world map preview ignoring the map editor BPP setting.
  • Fixed space key with KEYBOARD_LAYOUT_ES after tic_key_iso_extra removal.
  • Fixed code editor tab width after horizontal scroll.
  • Fixed same-platform export preferring an external native template instead of the local one.
  • Fixed JavaScript eval crash when there is nothing to evaluate.
  • Improved code rendering by adjusting viewport handling.
  • Fixed Studio net field declaration and tic80_tick callback declarations.

Build & infrastructure

  • CI now builds main and pull requests instead of every branch, builds players on every build, and restores stubs to releases.
  • Site now consumes per-language HTML pairs on every build.
  • Added a PRO linux-arm64 build; removed GCC 14 from the matrix.
  • Configure now warns when the build has no network.
  • Release tag builds receive Android signing secrets; stub lists include MiniScript and Forth.
  • Release notes now lead with this summary before GitHub's PR list; SECURITY.md no longer pins specific versions.
  • Build asset directory now follows the build itself; toolbar modularized.

Statistics: 62 commits, 54 pull requests, 19 contributors.

On tic80.com

The site moved on too:

  • Games delete and restore. Your own cartridges, from their page or your
    profile: hidden at once, recoverable for 30 days, comments and +1s included.
    An account can delete itself the same way.
  • A notifications page — comments and +1s on your cartridges, with a
    counter in the navigation.
  • A liked-games page — everything you have +1'd, in one place.
  • +1 is open to everyone: the old gate that required your own games to be
    liked first is gone.
  • Sign in with your e-mail as well as your user name.
  • A full-screen player — a game page, and the browser IDE, can open the
    cartridge alone: no site chrome, the player fills the screen, and the game
    starts as soon as the page opens.
  • Every game states the language it is written in.
  • Game pages load a player built for that language — several times smaller
    than the universal one, so they start faster.
  • New games are announced in the community chat again.

What's Changed

  • Fix #2773: space key broken with KEYBOARD_LAYOUT_ES after tic_key_iso_extra removal by @joshgoebel in #2962
  • Fix #2920: Python sfx() ignores note/octave/speed from SFX editor by @joshgoebel in #2963
  • Fix #1558: world map preview ignores map editor bpp setting by @joshgoebel in #2964
  • fix: squirrel scanline/border callback memory leak (#2825) by @joshgoebel in #2965
  • Update SECURITY.md to remove specific versions by @pixelbath in #2948
  • libretro: don't treat optional environment calls as fatal by @wescopeland in #2980
  • Declare tic80_tick's callbacks as they are defined and called by @annejan in #2981
  • Declare Studio's net field under the condition it is used by @annejan in #2982
  • Fix WASM libretro core build failing at runtime by @Ferk in #2983
  • Fix attempting to out-of-bounds index Squirrel arrays by @swoolcock in #2988
  • Fix bookmark panel crashing if there is a bookmark on a blank line by @swoolcock in #2993
  • [Fix] [Export] prefer local native template for same-platform export by @RDeckard in #2916
  • Fix code editor tab width after horizontal scroll by @RDeckard in #2957
  • web: 4M of stack for the wasm build, and a check on it by @nesbox in #3006
  • ci: build main and pull requests, not every branch by @nesbox in #3008
  • AndroidManifest -> Set to Game category, and fix .tic association on Android 12+ by @imsys in #2956
  • Optimize code rendering by adjusting viewport handling by @Wang-Yue in #2974
  • [SDL] Uses right stick to move cursor + only shows after first move by @imsys in #2936
  • Dynamic controller assignment by @imsys in #2958
  • Change in the index.html file for html exports by @bettywolfy in #2998
  • Adds support for Linux ARM GLESv2 by @imsys in #2912
  • templates: add Go starter project template using TinyGo by @akhenakh in #3002
  • Add raw FFT magnitude APIs fftr and fftrs by @aliceisjustplaying in #3000
  • Add VQT audio analysis and spectral whitening APIs by @aliceisjustplaying in #3001
  • Add MiniScript support by @MineRobber9000 in #2992
  • Forth by @luginf in #2947
  • release: grow the stub lists with MiniScript and Forth by @nesbox in #3009
  • version: a build's asset directory follows from the build itself by @nesbox in #3010
  • help version: name the two runtimes added after 1.2.0 by @nesbox in #3011
  • console: one definition per help table, and VRAM without angle brackets by @nesbox in #3013
  • ci: a PRO linux-arm64 build, and gcc14 out of the matrix by @nesbox in #3014
  • surf: a played cart returns to the browser on CLOSE GAME by @nesbox in #3016
  • Add Metal Renderer and native macOS/iOS support for TIC-80 by @Wang-Yue in #2973
  • ci: the per-language html pairs on every build the site consumes by @nesbox in #3027
  • html: the site's players keep the editors by @nesbox in #3030
  • ci: the players on every build, the stubs back to releases by @nesbox in #3031
  • python: implement eval by @zayfod in #3019
  • js: implement eval, and stop crashing when there is nothing to eval by @zayfod in #3020
  • console: say when eval has no cart to evaluate against by @zayfod in #3022
  • Update MiniScript 2 to latest main by @MineRobber9000 in #3012
  • Always update code from codeimport before running game by @MartinRykfors in #3025
  • console: the add command survives emscripten's runtime trimming by @zayfod in #3018
  • macOS Metal: optimize gamepad polling, border rendering & rate-limit file change checks by @Wang-Yue in #3021
  • Move Linux Icon to hicolor Theme by @amayer5125 in #3026
  • Add Linux Mimetype Icon by @amayer5125 in #3029
  • python: outline the code edit...
Read more

TIC-80 tiny computer 1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 13:20

TIC-80 v1.2.0

TIC-80 v1.2.0 is a major update since v1.1.2837, adding new scripting options, platform ports, editor and input fixes, and a rebuilt release pipeline.

What's new

  • YueScript support added as a scripting language, with contributor credits.
  • New language/runtime updates: Lua 5.4, Python bindings v2.1.0, Fennel 1.5.0, Janet, Squirrel, QuickJS, pocketpy v2.0.4, and a Nim WASM template.
  • FFT support: fft and ffts restored for Python, plus general FFT support.
  • Editor/API additions: remap(), flood fill paint, sprite import BPP option, Ruby scrollx/scrolly in mouse(), Wren map() with no args, resume reload, autosave Surf carts, JSON options saving, flags editbox, informative screenshot names, rm alias for del, console wrapped-line indentation, cursor-position search, and Alt caret.
  • Music editor: more piano-roll notes and a DAW-like keyboard layout, note preview routed to the active editor channel, better track switching, and Caps Lock hex input.
  • Touch/gamepad: mobile touch controls for HTML export, gamepad shortcut to Surf/exit Surf, and gamepad state reset.
  • PCM sound channel: 128 samples per frame written straight into RAM, played at 7680 Hz, poked from any language with no new API to learn.
  • Menu behavior: the pause menu now follows where the run came from, not what the cartridge declares. ESC in a player's run always opens it (a game tag adds the game's own items), while a run started from the studio, Ctrl+R or run, steps back to the editor or console. devmode is gone.
  • Byte Battle feature added.

Platform

  • Nintendo Switch port added; libretro NSwitch build fixed.
  • 3DS port revamped, with updated toolchain and CI fixes.
  • Android: .tic/.png file associations, external keyboard arrow keys, Ctrl shortcut fixes, SDL 2.32.10, and Gradle 9.0.0.
  • Linux: .tic/.png associations, F-Droid badge, openSUSE instructions, and ARM link fix.
  • macOS: horizontal scroll direction fix, OpenGL backend, arm64 CI, macOS-15-intel image, and updated build instructions.
  • Web/WASM: touch controls, Safari arrow keys, btnp/fget return type, config saving, and templates after the lld --stack-first change.
  • libretro: monolithic static build, frametime/cursor fixes, updated state handling, zlib option, and PNG extension support.
  • Baremetal: Raspberry Pi fixes and circle-stdlib update.

Bug fixes

  • Fixed memory leaks in TIC/BOOT/BDR callbacks and fs/console/studio; fixed buffer overflow and strncat issues.
  • Fixed crashes from ESC during popup hide, custom --scale, tab completion, #2595, and palette out-of-bounds.
  • Input: stuck keys on focus loss, Android arrow keys, French AZERTY layout, Alt+1 layouts, Safari arrows, F1 hotkey conflict, and mouse cursor mapping with tab width.
  • Editors: sprite hotkeys, map editor tile/tool behavior, bookmarks whitespace, horizontal scrolling with Shift/trackpads, command history visibility, alias autocomplete, and command-line parsing.
  • Scripting: Janet/Scheme keyword commas, Python issues #2841/#2856, Wren bindings, Ruby mouse coordinates, Lua traces, deprecated Lua/Fennel features, tic_modulo, pmemset, and tic_api_memcpy.
  • Graphics/audio: ttri low bpp, bpp2 import, tilesheet segment offsets, negative texture rounding, font chromakey order, and miniaudio updates.
  • File/config: WASM config saving, options JSON, tic_fs_changedir overflow, Windows XP folder error, and whitespace trimming on save.

Build & infrastructure

  • Tag-driven release pipeline with Android signing secrets, itch.io publishing, and self-hosted /create.
  • CMake refactored into submodules, with configurable script languages, system libraries, BUILD_SURF/WREN/zlib options, debug options, and fixed optimization flag ordering.
  • Updated GitHub Actions, macOS images, Ubuntu 24.04/MSYS2/MINGW/openSUSE docs, Zig 0.14.0-dev, and docker toolchains.
  • Vendor updates: SDL 2.32.10, miniaudio, libpng 1.6.43, zlib 1.3.1, zip v0.3.6, QuickJS, Janet, Squirrel, pocketpy, Fennel, and Python bindings.
  • Replaced the msf_gif submodule with a single header; added THIRD_PARTY_LICENSES/LICENSES; removed sokol support; applied cleanup and .clang-format.

Statistics: 286 commits, 218 pull requests, 64 contributors.

What's Changed

Read more

TIC-80 tiny computer 1.1.2837

Choose a tag to compare

@nesbox nesbox released this 22 Oct 12:16

What's Changed

New Contributors

Full Changelog: v1.1.2736...v1.1.2837

TIC-80 tiny computer 1.1.2736

Choose a tag to compare

@nesbox nesbox released this 27 Aug 10:17

What's Changed

  • Android: version code stuck #2283 by relan
  • Sprite editor touch screen not working properly(Android) #2270 by MateusH7
  • [Bug] [QuickJS] Glitches and crashes #2268 by scambier
  • Remap signature has changed in JavaScript #2267 by scambier
  • Some keys are not working #2265 by Kitsuinox
  • [Bug] CRT shader doesn't work on HTML exports with alone=1 #2229 by scambier
  • Some Android devices can't access tic files without rooted phone #2222 by rubensoleao

Full Changelog: v1.1.2729...v1.1.2736

v1.1.2729

Choose a tag to compare

@nesbox nesbox released this 17 Aug 18:50

What's Changed

New Contributors

Read more

TIC-80 tiny computer 1.0.2164

Choose a tag to compare

@nesbox nesbox released this 02 May 08:54

What's Changed

New Contributors

Full Changelog: 0.90.1723...v1.0.2164

TIC-80 tiny computer 0.90.1723

Choose a tag to compare

@nesbox nesbox released this 16 Jul 14:59

CHANGELOG v0.90.1723

CLOSED ISSUES

  1. #1517 - [0.90] "Cart has changed" dialog does not close
  2. #1513 - map editor: tile cursor not visible in 0.90
  3. #1494 - [0.90] Watcher fails when loading multiple carts
  4. #1510 - Unable to draw to bigger circles in 0.90
  5. #1499 - TIC-80 keeps stopping (Android)
  6. #1490 - [0.90] (Win7) getsystemtimepreciseasfiletime error in exported executable
  7. #1501 - TIC-80 is not opening on linux
  8. #1493 - Wonky icon [0.90 Bug]
  9. #1495 - [0.90] TIC-80 does not start
  10. #1492 - [0.90]No name and author name by pressing Ctrl+S to save cart.png
  11. #1496 - Won't Start in Firefox
  12. #1489 - [0.90 bug] ctrl+r returns multiple times

CHANGELOG v0.90.1706

THANKS to all the people who helped release this version, especially the contributors

@cogk
@Voklen
@brickviking
@schraf
@Karethoth
@jminor
@cgrs
@RobLoach
@txgruppi
@tstopak
@phlubby
@joshgoebel
@technomancy
@nalquas
@msx80
@asiekierka
@drako0812

MAIN CHANGES

image

Added text selection/copy/paste to the console

ezgif-1-3ed349c748d5


A cart can be saved and distributes as a PNG image, use save game.png command.
meat


TIC-80 can work like a compiler without UI with --cli command line parameter, for example here we load game.tic cart from current dir (use --fs .) and export it as game.exe executable for Windows:

$ ./tic80 --cli --fs . --cmd "load game.tic & export win game.exe & exit"

cart game.tic loaded!
use RUN command to run it

GET /export/0.90/win [100%]

game.exe exported :)

Also, games can be exported without access to the editors with alone=1 flag (PRO feature)
export linux game.exe alone=1


The help command was redesigned and you can get info about spec/ram/api/command/...

>help

usage: help [<text>|version|welcome|
spec|ram|vram|commands|api|startup|
terms|license]

>help api
API functions:
OVR SCN TIC btn btnp circ circb clip 
cls elli ellib exit fget font fset key 
keyp line map memcpy memset mget mouse 
mset music peek peek4 pix pmem poke 
poke4 print rect rectb reset sfx spr 
sync textri time trace tri trib tstamp

>help sync
---=== API ===---
sync(mask=0 bank=0 tocart=false)

The pro version of TIC-80 contains 8 
memory banks.
To switch between these banks, sync can 
be used to either load contents from a 
memory bank to runtime, or save 
contents from the active runtime to a 
bank.
The function can only be called once 
per frame.If you have manipulated the 
runtime memory (e.g. by using mset), 
you can reset the active state by 
calling sync(0,0,false).
This resets the whole runtime memory to 
the contents of bank 0.Note that sync 
is not used to load code from banks; 
this is done automatically.

Another useful thing you can export whole help info in Markdown format, use command export help cheatsheet.md


Added mouse capture functionality to receive relative values instead of the current cursor position (useful in first-person 3D games), the cursor is hidden and this mode. To enable this mode pls use poke(0x7FC3F,1,1) command.
Small example with enabling the relative mode:

function flip(val)return val>0 and 0 or 1 end

function TIC()
	if btnp(4)then 
		poke(0x7FC3F,flip(peek(0x7FC3F,1)),1)
	end	
		
	cls()
	local x,y=mouse()
	print(x..":"..y)
end

Added baremetal/rpi/3ds builds to Github Actions and all the Nightly Builds can be downloaded here https://nightly.link/nesbox/TIC-80/workflows/build/master


Now you can change bit mode in the map editor
ezgif-1-4c01dcf4fc08


On Android, you can switch between the system keyboard and TIC-80 internal keyboard
image
Hardware keyboard now detects automatically.

CLOSED ISSUES

  1. #1486 - Problems with Jxx and row parameter of the music () function again present. Old lines are being used in src/core/sound.c
  2. #1482 - Website: Can’t upload Fennel cartridges
  3. #1480 - Website: Page titles
  4. #1477 - saveid not working when exporting with alone=1
  5. #1475 - Add an additional parameter to peek/poke functions for diferent bit resolutions
  6. #1469 - TIC-80 crash on Windows XP
  7. #1455 - Move all the icons to the config.lua
  8. #1454 - TIC throws OOMs when trying to run this cart in browser
  9. #1447 - Cursor shows over bookmarks tab
  10. #1446 - M command retriggers note
  11. #1434 - map editor select appears over show tiles
  12. #1430 - Horizontal scrolling while shift is held
  13. #1421 - Navigate palette with [ and ] keys
  14. #1414 - Please add Git SHA to the build number version in console
  15. #1405 - Code outline items corruption
  16. #1398 - TIC-80 Crashes when I stream it in a Discord voice channel.
  17. #1396 - Buffer Overflow Vulnerability in src/studio/fs.c
  18. #1395 - Distribute Linux version as zip on itch.io for better itch.io app integration
  19. #1394 - Incorrect OVR palette
  20. #1388 - RESUME command doesn't restore screen bug
  21. #1380 - Update wiki: CHUNK_SCREEN, tic_screen, sync, etc.
  22. #1372 - Path does not update on console correctly bug
  23. #1370 - Editor does not update when pressing enter bug
  24. #1360 - music function crashes in javascript bug
  25. #1356 - Saving cartridge crashes the dev (Pro) build bug
  26. #1345 - Crash in editor with 1BPP mode bug
  27. #1343 - (end) add "Debug" to TIC_VERSION_LABEL for debug builds
  28. #1338 - TIC80 Freezes When Trying To Run Game After Saving As Lua bug
  29. #1332 - alt-tab inserts a space in the code editor bug
  30. #1331 - Little pause at the beginning of the music
  31. #1326 - current build crashes on 3ds
  32. #1323 - duktape submodule fetches all duktape versions ever released
  33. #1319 - Add new & popular filter to the website
  34. #1315 - Add pagination to the website website
  35. #1312 - [Request] Please add THEME.CODE.FG to alter foreground text in code editor
  36. #1308 - Add a chunk to load default palette/waveforms
  37. #1306 - Game exits to the console if you press ESC twice
  38. #1290 - Live reload not working bug
  39. #1282 - Dividing by Zero in line function causes Tic-80 to crash. bug
  40. #1275 - Please add back ability to name gifs
  41. #1273 - Distorted sound with 0.80.1345 Pro on Linux
  42. #1271 - new fennel creates the cart with the old palette
  43. #1269 - tic80 -h command outputs to nowhere unless redirected
  44. #1268 - Zlib compression does not seem to work in 0.80+ versions of TIC-80
  45. #1267 - Command line arguments do not work anymore in the latest commit
  46. #1264 - Make all the network requests async
  47. #1255 - CRT effect in mac
  48. #1254 - better clipboard support
  49. #1247 - Make TIC work more like a compiler. console
  50. #1246 - Add benchmark demos for every supported script.
  51. #1240 - When compiling TIC-80 with GCC Mingw-w64 it (mingw64) adds additional DLL dependencies
  52. #1239 - Gif export does not automatically add .gif extension
  53. #1227 - Feature: Add colors to text with control characters (like Commodore 64)
  54. #1226 - music() parameter changed? bug lang: javascript
  55. #1225 - Change Bits Per Pixel in the Map Editor editor: map
  56. #1224 - install target on Linux does not follow CMAKE_INSTALL_PREFIX
  57. #1220 - In HTML exported games, all unused buttons on Xbox One controller open/close the TIC menu
  58. #1216 - Please add a export for web platform: html5
  59. #1213 - Default text color is now a dark grey
  60. #1210 - Missing Xext.h on Armbian buster
  61. #1206 - Minor bug when typing "cd "
  62. #1205 - 0.80 running quite slower than 0.70.6
  63. #1195 - editor outline command ctrl+o scrolling not possible
  64. #1193 - Music() function with tempo parameters API
  65. #1192 - editor command for comment/uncomment for multiple lines bug editor: code
  66. #1188 - Creating or loading a cartridge resets font setting to default in code editor editor: code enhancement
  67. #1159 - (0.80 beta) No wave cut/copy/paste anymore in new SFX editor?
  68. #1111 - tic.c could be split into quasi-independent parts for api, io, core loop, drawing, music...
  69. #1102 - Add Keyboard Shortcuts for switching banks
  70. #1084 - Building without GTK dependencies
  71. #1044 - Error on openig in linux platform: linux
  72. #1033 - ls/dir fails to sort properly
  73. #1017 - Build succeeded : TIC-80 for Raspberry Pi (Raspbian Buster)
  74. #1003 - please add to the music editor the button "play from now on" editor: music
  75. #1001 - Use cover as raw binary screen buffer instead GIF
  76. #999 - (0.80-dev suggestion) Allow array of volumes in sfx() for left/right API
  77. #987 - key()/keyp() codes 66 to 78 don't work bug
  78. #986 - Suggestion: add a mouse capture functionality
  79. #979 - Replacement of circ() and circb() functions
  80. #978 - Add Keyboard Shortcuts to Music Editor
  81. #957 - CTRL+R doesn't work when launching a tic.computer/play cart SURF
  82. #923 - Website "store" improvements website
  83. #921 - Setup CI using Github Actions
  84. #912 - Integrating Raspberry Baremetal build
  85. #909 - Small font not working in "player" executable bug
  86. #901 - Properly name of cart.tic software in website website
  87. #832 - (0.80.0-dev Pro) Custom system sounds won't play at the correct speed bug
  88. #823 - corrupted size vs prev_size
  89. #799 - Native export shows "File not downloaded" bug
  90. #764 - Map editor: replace tile feature editor: map enhancement
  91. #755 - [Feature Request] Cartridge embedded in PNG export for easy sharing enhancement
  92. #749 - Music "joins" ch...
Read more

TIC-80 tiny computer 0.80.1344

Choose a tag to compare

@nesbox nesbox released this 03 Sep 13:20

CHANGELOG v0.80.1344

MAIN CHANGES

First of all, I want to say THANKS to all the people who helped release this version, especially the contributors

@asiekierka
@RobLoach
@ddelemeny
@technomancy
@anatolse
@stefandevai
@gouchi
@phcoder
@michaeldel
@wadetb
@farvardin
@buckle2000
@kawa-yoiko
@cuu
@GrahamClemo
@rudenkoarts
@librorumque
@kostik1337

The new version has a new UI made with the Sweetie16 palette designed by GrafxKid.

Code Editor

  1. added bookmarks support toggle [CTRL+F1], next [F1], prev [SHIFT+F1], remove all [CTRL+SHIFT+F1]
  2. added parentheses matching by @technomancy
  3. removed code banks and all the code limited by 64K of compressed data now
  4. added font shadow button
  5. removed dofile() function, but you can save cart in text format and edit in any editor you want, use save game.lua and folder to locate it
    image

Sprite Editor

  1. changed default palette to Sweetie16 made by GrafxKid
    image
  2. added the Advanced Mode button where you can edit sprite flags, scanline/overline palette, switch bits per pixel
    image
  3. with 4bpp, 2bpp, 1bpp modes you can store more sprites by lowering the color bit (added by @ddelemeny). Please, read Advanced Drawing Techniques article and look at bpp.tic demo
    bpp

Sfx Editor

  1. added stereo sound support, you can set the volume for left/right channels
  2. fully redesigned UI, I tried to fit all screens in one and added some wave animation
    sfx

Music Editor

  1. added music effects support, you can change master volume, play a chord, jump to frame, pitch bend, vibrato, delay
  2. added new Piano Mode, where you can edit notes/octaves using mouse
    image
  3. added waveform animation and follow mode
    music

Console

  1. added export sfx/music [index] command to export .wav
  2. export html creates .zip ready for production on itch.io with Web Assembly inside

CLOSED ISSUES

  1. #1148 - pmem command with html exports?
  2. #1145 - found bug in 0.80.1278-dev
  3. #1140 - difference in sfx noise behaviour switching from 0.70.6 to 0.80-dev
  4. #1139 - surf does not show all games
  5. #1138 - surf loops around at end only
  6. #1136 - workaround to load code from multi bank carts
  7. #1135 - add menu command to show game menu console
  8. #1130 - saving to a cart extension that isn't .tic doesn't display the overwrite warning
  9. #1090 - music editor with piano roll editor: music
  10. #1089 - create a tool to compile text carts to .tic
  11. #1085 - suggestion: change show/hide grid key in map editor
  12. #1075 - paren matching in code editor
  13. #1071 - sprite editor select tool jumbles the selection content when moved
  14. #1054 - remove all the duk_is_null_or_undefined in jsapi.c
  15. #983 - (0.80.0-dev) some carts that poke to sound registers are broken
  16. #977 - (0.80.0-dev) jxy command in music editor can softlock tic-80
  17. #973 - (0.80.0-dev) add stereo panning registers to ram layout?
  18. #972 - sounds not playing in google chrome in exported game
  19. #962 - loading cartridges with active code banks broken
  20. #948 - update squirrel
  21. #940 - tic-80 surf: show the cover image resolution is 480x272 after tic-80 cover image is broken
  22. #938 - use curl instead sdl2-net
  23. #931 - [music tracker] can no longer change octave
  24. #917 - appveyor failing
  25. #909 - small font not working in "player" executable
  26. #902 - palette loading bug
  27. #896 - copy table data directly to ram using memcpy()
  28. #889 - restore keyconfig command
  29. #873 - it's time to change default palette
  30. #870 - deploy all the builds to https://builds.tic80.com
  31. #850 - pmem with saveid is broken at least in chrome
  32. #837 - program crashes after random interval (10 min), bringing down xwayland
  33. #816 - command+k clear console
  34. #815 - osx: "no mountable file systems"
  35. #810 - --input: [gamepad/mouse/keyboard] issue
  36. #807 - display in non-sokol build
  37. #785 - keyboard on android version
  38. #783 - get rid of max_carts const
  39. #782 - extract 16kb vram from 80kb ram
  40. #777 - emscripten build issues and build instructions
  41. #747 - keyboard layout broken again! (0.80.0-dev)
  42. #732 - stereo sound support
  43. #725 - sound and music exporter
  44. #693 - add ovr() palette to the sprite editor
  45. #668 - 0.70.1 pro on android: back button broken bug
  46. #657 - switching between apps turns tic-80's screen black on android
  47. #585 - divide by zero crashes tic80
  48. #557 - "wiki" command does nothing in web build
  49. #452 - start into surf mode.
  50. #435 - fold function in code editor
  51. #382 - music editor: sustaining notes through frames
  52. #320 - maybe move to cmake or something similar?
  53. #261 - implement effects column in the music editor

MERGED PULL REQUESTS

  1. @asiekierka #1122 - 3ds port
  2. @asiekierka #1120 - surf: add support for using left/right or page up/page down to scroll
  3. @asiekierka #1119 - minor rendering optimizations
  4. @RobLoach #1114 - display the stack when there is an error
  5. @RobLoach #1053 - fix font() breaking when retrieving arguments
  6. @RobLoach #1045 - add timestamp() function
  7. @RobLoach #1028 - split up 3rd-party submodule into individual vendor submodules
  8. @RobLoach #851 - update to duktape 2.3.0
  9. @ddelemeny #1105 - modify blit segment spec
  10. @ddelemeny #1099 - variable bit-per-pixel drawing api
  11. @ddelemeny #1097 - draw studio popup after everything else
  12. @ddelemeny #1095 - enable chromakey array on map and textri
  13. @ddelemeny #1094 - fix segmentation fault caused by findmatcheddelim unsafe null pointer
  14. @ddelemeny #1061 - sort points vertically in ticline
  15. @technomancy #1101 - allow "export html foo.zip" to provide name non-interactively.
  16. @technomancy #1091 - wip: upgrade to fennel version 0.4
  17. @technomancy #1078 - accept and run commands from argv.
  18. @technomancy #840 - when -code-watch flag is passed, reload all the code upon resume.
  19. @anatolse #1066 - fixed some warnings from a static analyzer
  20. @stefandevai #1067 - update generated html
  21. @stefandevai #1064 - add sustain to notes and effects on frame change
  22. @stefandevai #1063 - follow cursor on music editor
  23. @gouchi #1048 - add libretro makefile
  24. @phcoder #1031 - make merge_static.sh executable
  25. @phcoder #1030 - allow overriding cmake_position_independent_code from command line
  26. @phcoder #1024 - fix resulting name for libretro emscripten variant
  27. @michaeldel #1012 - fix sdl cursors memory leak
  28. @wadetb #975 - touch keyboard tweaks and fix
  29. @wadetb #974 - fix android black screen when paused
  30. @wadetb #968 - map view fixes when wrapping around the edge
  31. @wadetb #967 - misc code editor additions/fixes
  32. @farvardin #930 - adding extra keys for the trackers
  33. @buckle2000 #839 - add using and local as moonscript keywords
  34. @kawa-yoiko #826 - fix sokol build vertically flipped under linux
  35. @kawa-yoiko #821 - fix (and simplify) blurry sokol rendering
  36. @kawa-yoiko #820 - fix colour replacement misses borders
  37. @kawa-yoiko #819 - workaround for freeze on fullscreen under macos
  38. @cuu #813 - fix -fullscreen
  39. @GrahamClemo #759 - add squirrel language support to tic-80
  40. @rudenkoarts #744 - wren code outline
  41. @librorumque #739 - respect palette map for sprite colorkey
  42. @kostik1337 #733 - added single-param pmem function in wren api