Repository navigation
Releases: nesbox/TIC-80
Release list
TIC-80 tiny computer 1.4.0
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 fixedrrect/rrectbrounded-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_paintexport, 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-formatlinting, 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...
TIC-80 tiny computer 1.3.1
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
addworks 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 calleddynCall, which current emscripten no longer emits. alone=1exports 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
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
fftrandfftrs. - 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
codeimportupdates 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
.ticassociation 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
addsurvives 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_ESaftertic_key_iso_extraremoval. - 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_tickcallback 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.mdno 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
.ticassociation 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...
TIC-80 tiny computer 1.2.0
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:
fftandfftsrestored for Python, plus general FFT support. - Editor/API additions:
remap(), flood fill paint, sprite import BPP option, Rubyscrollx/scrollyinmouse(), Wrenmap()with no args,resume reload, autosave Surf carts, JSON options saving, flags editbox, informative screenshot names,rmalias fordel, 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
gametag adds the game's own items), while a run started from the studio,Ctrl+Rorrun, steps back to the editor or console.devmodeis 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/.pngfile associations, external keyboard arrow keys, Ctrl shortcut fixes, SDL 2.32.10, and Gradle 9.0.0. - Linux:
.tic/.pngassociations, 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/fgetreturn type, config saving, and templates after thelld --stack-firstchange. - 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
strncatissues. - 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, andtic_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_changediroverflow, 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_gifsubmodule with a single header; addedTHIRD_PARTY_LICENSES/LICENSES; removed sokol support; applied cleanup and.clang-format.
Statistics: 286 commits, 218 pull requests, 64 contributors.
What's Changed
- Increase in possible notes for playing on piano roll, new keyboard layout (like in popular DAWs) by @jejikeh in #2336
- [Python] Fix incorrect signature of
printby @blueloveTH in #2340 - zig: Replace
addSharedLibrarywithaddExecutableby @peterhellberg in #2351 - Upgrade Python language bindings to
v1.3.0by @blueloveTH in #2353 - #2335: added REVERT_SCROLL option to the config by @nesbox in #2355
- #2345: fixed crash with custom --scale parameter by @nesbox in #2356
- fix high fps bug for >60Hz displays by @borbware in #2354
- api/wasm:
writeToStoragedefaults totrue, updatewasmtic_pmemsignature fromi(ii)toi(iI)by @peterhellberg in #2362 - Alt caret by @bonjorno7 in #2373
- #2358: fixed horizontal scroll in the code editor by @nesbox in #2376
- Upgrade Python language bindings to
v1.3.1by @blueloveTH in #2382 - Trim whitespace on save by @bonjorno7 in #2377
- fix horizontal scrolling when using trackpads. by @Wang-Yue in #2393
- Gamepad shortcut to Surf by @LettucePie in #2387
- Use OpenGL backend for macOS by @Wang-Yue in #2390
- Fix typo in max scale calculation by @Wang-Yue in #2391
- Fix horizontal scrolling when press the shift key by @Wang-Yue in #2400
- enumerate all music tab values in switch by @Wang-Yue in #2395
- size_t should print with %zu by @Wang-Yue in #2396
- return 0 when pos is not a valid tab character for removeTab by @Wang-Yue in #2397
- remove unsequenced modification and access by @Wang-Yue in #2398
- pointers should be printed with %p by @Wang-Yue in #2399
- fix memory leak of mainmenu in studio.c by @Wang-Yue in #2404
- Fix memory leak of script in console.c by @Wang-Yue in #2405
- Fix memory leak of script in fs.c by @Wang-Yue in #2406
- fix memory leak of buffer in fs.c by @Wang-Yue in #2407
- Autosave option for keeping carts from Surf by @LettucePie in #2410
- Update Python's time() to return a float instead of an int by @MineRobber9000 in #2412
- Use memmove in tic_api_memcpy by @mbikovitsky in #2417
- add
--target=wasm32-unknown-unknownto README.md by @phocks in #2420 - Upgrade Python language bindings to
v1.3.5by @blueloveTH in #2413 - Make WREN a configurable build option. by @Wang-Yue in #2418
- Split CMake into submodules by @nesbox in #2421
- Added cmake build options for all the supported scripts by @nesbox in #2423
- Fix typo in cmake message by @Wang-Yue in #2424
- Add "self" to the lua syntax by @lipx1508 in #2425
- naett: Allow disabling when curl isn't available by @RobLoach in #2432
- #2383: fixed track number switching by @nesbox in #2442
- Add "rm" as an alias for "del" by @squidink7 in #2449
- Update build.zig by @Angluca in #2460
- Upgrade Python language bindings to
v1.4.1by @blueloveTH in #2459 - Add BPP arg to sprites import by @TheDrawingCoder-Gamer in #2452
- #2444: fixed name for screenshots by @nesbox in #2463
- console: Indent all wrapped lines by @foxeng in #2451
- add remap function by @TheDrawingCoder-Gamer in #2453
- fix 2 bpp import by @TheDrawingCoder-Gamer in #2464
- Makes Rust template
PrintOptionsandFontOptionsstructs fields public by @turbohz in #2474 - Upgrade Python language bindings to v
1.4.2by @blueloveTH in #2477 - PCM sound channel by @nesbox in #2488
- Upgrade Python language bindings to v
1.4.5by @blueloveTH in #2513 - #2257: build languages as shared libs by @nesbox in #2519
- Fix missing dash in build.yml by @aliceisjustplaying in #2525
- #2526: added flags editbox by @nesbox in #2527
- Compile for MacOS arm64 in CI as well by @aliceisjustplaying in #2528
- Fix tab-completion crash with load/save/etc. by @aliceisjustplaying in https://github....
TIC-80 tiny computer 1.1.2837
What's Changed
- Some keys are not working with foreign keyboard (i.e. right parenthesis for azerty layout) by @nesbox #2310
- add build instruction for ubuntu 22.04 by @jackygoule in #2277
- Change janet's withsyms to with-syms by @sogaiu in #2287
- Disable structured editing on non-Emacs editors by @neolight1010 in #2294
- Update zig examples and template to latest Zig by @tupini07 in #2298
- Update "help keys" output to include keycodes for ESC, F1-F12, and numpad keys by @cdwfs in #2299
- Add true, false, nil to FennelKeywords by @neolight1010 in #2303
- bump janet version to 1.31.0 by @AlecTroemel in #2306
- Fix issue 2291 by @Eulenmensch93 in #2309
- Handle Numpad Enter key as regular Enter key by @neolight1010 in #2305
- Add a few more emacs bindings by @non in #2318
- Upgrade Python language bindings to
v1.2.xby @blueloveTH in #2315 - Janet language bindings for ttri fn, texsrc arg can be int or bool by @AlecTroemel in #2323
- fixed eval command in ruby by @zacx-z in #2326
tracecan log object-type argument in ruby to be consistent with lua by @zacx-z in #2332
New Contributors
- @jackygoule made their first contribution in #2277
- @sogaiu made their first contribution in #2287
- @tupini07 made their first contribution in #2298
- @Eulenmensch93 made their first contribution in #2309
- @non made their first contribution in #2318
- @zacx-z made their first contribution in #2326
Full Changelog: v1.1.2736...v1.1.2837
TIC-80 tiny computer 1.1.2736
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
What's Changed
- Refactor and improve browser versions (tic-html, export stubs, webapp) by @tranxuanthang in #1912
- Adjust scroll of console when a command spills to the next line. by @sakisakira in #1925
- Enable scrolling Code Editor by key-combinations like Ctrl-P and Ctrl-N. by @sakisakira in #1926
- Update fedora build instructions by @rktjmp in #1936
- Building on FreeBSD by @peterhil in #1941
- Add djgpp support by @phcoder in #1942
- Feature: Optional auto-closing of delimiters by @benthor in #1946
- Support OSX PPC, GameCube, Wii and WiiU as libretro core by @phcoder in #1943
- Add credits for PR #1946 by @benthor in #1947
- Fix mget function signature in WASM binding by @soxfox42 in #1951
- Add metainfo and fix case typo in desktop category. by @kevinsmia1939 in #1957
- Fix loading full-size BINARY chunks by @soxfox42 in #1964
- Add smooth line drawing in sprite editor by @solarized-fox in #1967
- Fix WASM font signature by @soxfox42 in #1971
- Improve the Zig template by @soxfox42 in #1974
- Add a Rust WASM template by @soxfox42 in #1977
- Add C template by @Gota7 in #1981
- Add DocumentsProvider for Android. by @sakisakira in #1998
- Add receiving intent of ACTION_SEND for Android. by @sakisakira in #2003
- Support fn+enter alias for insert on mac keyboards by @fiskWasTaken in #2010
- override some scale settings; finer-grained SDL init by @dhorlick in #2007
- (typo) fix name of utility in usage instructions by @joshgoebel in #2044
- (fix) fix
time()API call - revert theclock()changes by @joshgoebel in #2047 - (fix) help = by @joshgoebel in #2057
- (fix) help api/cmd/usage is not exclusive by @joshgoebel in #2058
- Fix rare segfault during shutdown by @jezze in #2063
- Fix segfault in player-sdl by @jezze in #2062
- Fix counter and freq for libretro by @jezze in #2072
- Adding png chunk cartridge support by @bztsrc in #2045
- Fixes #2016 by @Podepi in #2070
- Don't show "unknown topic" when help message is displayed by @iacore in #2068
- Skip empty menu option by @iacore in #2067
- Minor fixes by @jezze in #2066
- Fix typo and reduce 2 newlines at end to 1 in
baremetalrpiinstructions by @tylerms887 in #2052 - Add png chunk loading by @bztsrc in #2088
- janet support by @AlecTroemel in #2079
- (docs) <96kb is reserved RAM, not free by @joshgoebel in #2094
- make errBuffer pointer, avoid memory bug by not using janet_buffer_init by @AlecTroemel in #2095
- add function definitions for music args count 4 through 7 by @AlecTroemel in #2096
- Correct dev MacOS app path by @lzap in #2098
- add default waves and SFX for demo janet and fennel carts by @AlecTroemel in #2099
- use different lua class setup to avoid weird field clobbering by @AlecTroemel in #2101
- renamed misspelled tmap to map by @AlecTroemel in #2103
- Improve the Janet demo cart by @soxfox42 in #2106
- Add janet outline function by @AlecTroemel in #2110
- S7 Scheme language support by @sthilaid in #2113
- Update README.md by @sthilaid in #2116
- Code Editor upgrades: structured s-expresion edition and emacs-mode by @sthilaid in #2117
- update janet vendor, sandbox file (and everything else), implement OVR callback by @AlecTroemel in #2118
- Added hotkey option to menu items. Used in Yes/No dialog. by @sthilaid in #2120
- Language specific string delimiters by @sthilaid in #2119
- Scheme defstruct by @sthilaid in #2122
- Delete line improvement by @sthilaid in #2123
- fixed error in scheme SPR api function by @sthilaid in #2125
- Upgrade to Fennel 1.3.0. by @technomancy in #2130
- Remove defaults for sx/sy in WASM map() function by @Madadog in #2132
- Fix strict mode in default fennel cart. by @technomancy in #2136
- Update list of Fennel keywords for version 1.3.0. by @technomancy in #2139
- Bypass checks which disable Fennel friendly compiler errors. by @technomancy in #2140
- Better scheme errors by @sthilaid in #2145
- Clamp input to animEffect() by @Madadog in #2149
- Upgrade janet to 1.27, add mingw workflow build by @AlecTroemel in #2155
- Update README.md by @theKapcioszek in #2167
- fix janet pmem implementation, which was completely broken. by @AlecTroemel in #2171
- n3ds: fix crash on exit due to incorrect free() on screen buffer by @asiekierka in #2180
- Vi mode by @koltenpearson in #2174
- fix implementation of janet sfx function by @AlecTroemel in #2186
- Python language bindings by @koltenpearson in #2184
- Convert
vendor/pocketpyinto a git submodule by @blueloveTH in #2200 - Fix bank parameter for music export by @borbware in #2202
- Update Rust template to remove optimisation issue by @soxfox42 in #2204
- Update macOS build instructions to match included plist file by @jpaquim in #2206
- #2191 focus the canvas on click by @AlecTroemel in #2209
- update pocketpy to v1.0 by @koltenpearson in #2212
- adds editor options for indentation with spaces or tabs by @koltenpearson in #2217
- C API accuracy improvements and better layout by @Gota7 in #2227
- Run key processing even when ctrl key is pressed by @blind in #2234
- fix typos by @kianmeng in #2242
- Add numpad keys to keycodes by @cdwfs in #2245
- Remove whitespaces before colons in pythondemo.py by @sudo-piko in #2236
- Upgrade to Fennel 1.3.1 by @fosskers in #2246
- Fix C template build error by @soxfox42 in #2254
- #2260: Updated Rust template build instructions by @villesundell in #2261
New Contributors
- @tranxuanthang made their first contribution in #1912
- @sakisakira made their first contribution in #1925
- @rktjmp made their first contribution in #1936
- @peterhil made their first contribution in #1941
- @benthor made their first contribution in #1946
- @soxfox42 made their first contribution in #1951
- @kevinsmia1939 made their first contribution in #1957
- @solarized-fox made their first contribution in #1967
- @Gota7 made their first contribution in #1981
- @fiskWasTaken made their first contribution in #2010
- @dhorlick made their first contribution in #2007
- @jezze made their first contribution in #2063
- @bztsrc made their first contribution in #2045
- @Podepi made their first contribution in #2070
- @iacore made their first contribution in #2068
- @tylerms887 made their first contribution in #2052
- @AlecTroemel made their first contribut...
TIC-80 tiny computer 1.0.2164
What's Changed
- Added --version command line argument by @nalquas in #1503
- Handle emacs ^n ^p and ^e keys in the editor by @trufae in #1530
- sdl: Fix comparision warning by @RobLoach in #1537
- Add TIC_UNUSED() to handle unused parameter warnings by @RobLoach in #1538
- Update Fennel to version 0.10.0. by @technomancy in #1539
- fix path problems with baremeta #1541 by @msx80 in #1582
- Improvements for language support by @msx80 in #1590
- Baremetal RPI: added Squirrel language which was previously disabled. by @msx80 in #1596
- Fix eval command by @technomancy in #1633
- Optimize tic api call performance in LUA. by @vsariola in #1628
- #714: fix crackling audio. by @vsariola in #1618
- Activate strict mode in Fennel when strict: true header is found. by @technomancy in #1653
- Poke1 and Peek1 by @SuperPupperDoggo in #1616
- (fix) ignore negative index passed to spr by @joshgoebel in #1665
- (enh) errors when mkdir fails by @joshgoebel in #1667
- (chore) move moonscript into separate C file by @joshgoebel in #1670
- fixup: move moon script and fennel into sep files by @joshgoebel in #1671
- (enh) Music editor: Skip over sharp column when using cursor keys by @joshgoebel in #1672
- Fedora build instructions by @lzap in #1679
- add MacOS application instructions by @lzap in #1680
- suggest pro when trying to open source with standard by @joshgoebel in #1684
- Replace a right single apostrophe in the API help with an apostrophe by @blinry in #1697
- Improvements to README.md by @Tyler887 in #1701
- Add community guidelines by @Tyler887 in #1703
- Update Fennel to version 1.0.0. by @technomancy in #1708
- squirrel: Fix mouse() from returning null values by @RobLoach in #1719
- Add some missing spaces, and reword a few phrases by @blinry in #1722
- sdl: Fix warnings of string.h missing by @RobLoach in #1724
- Fix OpenDingux builds by @RobLoach in #1725
- Ruby scripting support by @remi6397 in #1726
- Small changes to the Ruby bindings by @remi6397 in #1733
- Add Shift+Return shortcut to the code editor that auto-closes a block by @blinry in #1721
- When listing language options in the spec, use "x, y, or z" format by @blinry in #1745
- On Linux, use Ctrl+L to clear the console, per default of other shells by @blinry in #1753
- Add help topics for keys and buttons by @blinry in #1754
- Typo: Correct variable was not getting updated by @joshgoebel in #1783
- Create SECURITY.md by @joshgoebel in #1786
- Console:
cdwith no args returns home by @joshgoebel in #1789 - add default license, version, site tags to demos by @joshgoebel in #1790
- support CTRL-A, CTRL-E console editing keystrokes by @joshgoebel in #1791
- (chore) bring all Demo header into sync with new tags by @joshgoebel in #1793
- fix: prevent cartridges hijacking keyboard events by @joshgoebel in #1787
- Do not default to the first available language for new carts. by @remi6397 in #1792
- (enh) moonscript supports eval now by @joshgoebel in #1800
- faster drawTile, remove repeat clipping checks by @joshgoebel in #1801
- order langauges by alphabetical order by @joshgoebel in #1804
- split out main menu code from studio by @joshgoebel in #1813
- Fix compilation for emscripten libretro by @phcoder in #1821
- mruby: Make Ruby Build Optional by @RobLoach in #1823
- Update SDL2 version by @luizdepra in #1825
- Export without editor in pro version is done. by @Darenn in #1837
- (chore) update Zig source to use new BOOT() by @joshgoebel in #1863
- [WIP] Advanced tab-completion for the console by @blinry in #1840
- fix(zig) fix template compiling and add TextureSource by @joshgoebel in #1850
- D WebAssembly binding by @PierceNg in #1886
- Fix crash when internet is disabled by @OldiLo in #1890
- Improved D template by @PierceNg in #1891
New Contributors
- @trufae made their first contribution in #1530
- @vsariola made their first contribution in #1628
- @lzap made their first contribution in #1679
- @blinry made their first contribution in #1697
- @Tyler887 made their first contribution in #1701
- @remi6397 made their first contribution in #1726
- @luizdepra made their first contribution in #1825
- @Darenn made their first contribution in #1837
- @PierceNg made their first contribution in #1886
- @OldiLo made their first contribution in #1890
Full Changelog: 0.90.1723...v1.0.2164
TIC-80 tiny computer 0.90.1723
CHANGELOG v0.90.1723
CLOSED ISSUES
- #1517 - [0.90] "Cart has changed" dialog does not close
- #1513 - map editor: tile cursor not visible in 0.90
- #1494 - [0.90] Watcher fails when loading multiple carts
- #1510 - Unable to draw to bigger circles in 0.90
- #1499 - TIC-80 keeps stopping (Android)
- #1490 - [0.90] (Win7) getsystemtimepreciseasfiletime error in exported executable
- #1501 - TIC-80 is not opening on linux
- #1493 - Wonky icon [0.90 Bug]
- #1495 - [0.90] TIC-80 does not start
- #1492 - [0.90]No name and author name by pressing Ctrl+S to save cart.png
- #1496 - Won't Start in Firefox
- #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
Added text selection/copy/paste to the console
A cart can be saved and distributes as a PNG image, use save game.png command.

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)
endAdded 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

On Android, you can switch between the system keyboard and TIC-80 internal keyboard

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

Sprite Editor
- changed default palette to Sweetie16 made by GrafxKid

- added the Advanced Mode button where you can edit sprite flags, scanline/overline palette, switch bits per pixel

- with
4bpp,2bpp,1bppmodes you can store more sprites by lowering the color bit (added by @ddelemeny). Please, read Advanced Drawing Techniques article and look atbpp.ticdemo

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

Music Editor
- added music effects support, you can change master volume, play a chord, jump to frame, pitch bend, vibrato, delay
- added new Piano Mode, where you can edit notes/octaves using mouse

- added waveform animation and follow mode

Console
- added
export sfx/music [index]command to export.wav export htmlcreates.zipready for production on itch.io with Web Assembly inside
CLOSED ISSUES
- #1148 - pmem command with html exports?
- #1145 - found bug in 0.80.1278-dev
- #1140 - difference in sfx noise behaviour switching from 0.70.6 to 0.80-dev
- #1139 - surf does not show all games
- #1138 - surf loops around at end only
- #1136 - workaround to load code from multi bank carts
- #1135 - add menu command to show game menu console
- #1130 - saving to a cart extension that isn't .tic doesn't display the overwrite warning
- #1090 - music editor with piano roll editor: music
- #1089 - create a tool to compile text carts to .tic
- #1085 - suggestion: change show/hide grid key in map editor
- #1075 - paren matching in code editor
- #1071 - sprite editor select tool jumbles the selection content when moved
- #1054 - remove all the
duk_is_null_or_undefinedin jsapi.c - #983 - (0.80.0-dev) some carts that poke to sound registers are broken
- #977 - (0.80.0-dev) jxy command in music editor can softlock tic-80
- #973 - (0.80.0-dev) add stereo panning registers to ram layout?
- #972 - sounds not playing in google chrome in exported game
- #962 - loading cartridges with active code banks broken
- #948 - update squirrel
- #940 - tic-80 surf: show the cover image resolution is 480x272 after tic-80 cover image is broken
- #938 - use curl instead sdl2-net
- #931 - [music tracker] can no longer change octave
- #917 - appveyor failing
- #909 - small font not working in "player" executable
- #902 - palette loading bug
- #896 - copy table data directly to ram using memcpy()
- #889 - restore keyconfig command
- #873 - it's time to change default palette
- #870 - deploy all the builds to https://builds.tic80.com
- #850 - pmem with saveid is broken at least in chrome
- #837 - program crashes after random interval (10 min), bringing down xwayland
- #816 - command+k clear console
- #815 - osx: "no mountable file systems"
- #810 - --input: [gamepad/mouse/keyboard] issue
- #807 - display in non-sokol build
- #785 - keyboard on android version
- #783 - get rid of max_carts const
- #782 - extract 16kb vram from 80kb ram
- #777 - emscripten build issues and build instructions
- #747 - keyboard layout broken again! (0.80.0-dev)
- #732 - stereo sound support
- #725 - sound and music exporter
- #693 - add ovr() palette to the sprite editor
- #668 - 0.70.1 pro on android: back button broken bug
- #657 - switching between apps turns tic-80's screen black on android
- #585 - divide by zero crashes tic80
- #557 - "wiki" command does nothing in web build
- #452 - start into surf mode.
- #435 - fold function in code editor
- #382 - music editor: sustaining notes through frames
- #320 - maybe move to cmake or something similar?
- #261 - implement effects column in the music editor
MERGED PULL REQUESTS
- @asiekierka #1122 - 3ds port
- @asiekierka #1120 - surf: add support for using left/right or page up/page down to scroll
- @asiekierka #1119 - minor rendering optimizations
- @RobLoach #1114 - display the stack when there is an error
- @RobLoach #1053 - fix font() breaking when retrieving arguments
- @RobLoach #1045 - add timestamp() function
- @RobLoach #1028 - split up 3rd-party submodule into individual vendor submodules
- @RobLoach #851 - update to duktape 2.3.0
- @ddelemeny #1105 - modify blit segment spec
- @ddelemeny #1099 - variable bit-per-pixel drawing api
- @ddelemeny #1097 - draw studio popup after everything else
- @ddelemeny #1095 - enable chromakey array on map and textri
- @ddelemeny #1094 - fix segmentation fault caused by findmatcheddelim unsafe null pointer
- @ddelemeny #1061 - sort points vertically in ticline
- @technomancy #1101 - allow "export html foo.zip" to provide name non-interactively.
- @technomancy #1091 - wip: upgrade to fennel version 0.4
- @technomancy #1078 - accept and run commands from argv.
- @technomancy #840 - when -code-watch flag is passed, reload all the code upon resume.
- @anatolse #1066 - fixed some warnings from a static analyzer
- @stefandevai #1067 - update generated html
- @stefandevai #1064 - add sustain to notes and effects on frame change
- @stefandevai #1063 - follow cursor on music editor
- @gouchi #1048 - add libretro makefile
- @phcoder #1031 - make merge_static.sh executable
- @phcoder #1030 - allow overriding cmake_position_independent_code from command line
- @phcoder #1024 - fix resulting name for libretro emscripten variant
- @michaeldel #1012 - fix sdl cursors memory leak
- @wadetb #975 - touch keyboard tweaks and fix
- @wadetb #974 - fix android black screen when paused
- @wadetb #968 - map view fixes when wrapping around the edge
- @wadetb #967 - misc code editor additions/fixes
- @farvardin #930 - adding extra keys for the trackers
- @buckle2000 #839 - add using and local as moonscript keywords
- @kawa-yoiko #826 - fix sokol build vertically flipped under linux
- @kawa-yoiko #821 - fix (and simplify) blurry sokol rendering
- @kawa-yoiko #820 - fix colour replacement misses borders
- @kawa-yoiko #819 - workaround for freeze on fullscreen under macos
- @cuu #813 - fix -fullscreen
- @GrahamClemo #759 - add squirrel language support to tic-80
- @rudenkoarts #744 - wren code outline
- @librorumque #739 - respect palette map for sprite colorkey
- @kostik1337 #733 - added single-param pmem function in wren api

