Hacker News new | past | comments | ask | show | jobs | submit login
TIC-80, a fantasy computer to learn programming (tic.computer)
360 points by zeveb 10 months ago | hide | past | web | favorite | 72 comments



Maybe this is a good time to plug PICO-8 which describes itself as a "fantasy console for making, sharing and playing tiny games and other computer programs."

https://www.lexaloffle.com/pico-8.php

I don't even know the difference between the two programs, but someone interested in TIC might also be interested in PICO.


The PICO-8 is where the current trend for fantasy consoles began. There's a growing number of them (I'm making one myself). They all have slightly different areas of focus.

Some are scripting language based, some emulate CPUs. TIC-80 programs are "64KB of Lua or Moonscript or JavaScript". My own is 8-bit AVR (128k rom, 64k ram). Z80 seems a popular base as well.


Celeste, which was released to rave reviews this past year for the Switch, started life as a PICO-8 game. I played it on the PICO-8 at first and was blown away!

Enjoy: https://www.lexaloffle.com/bbs/?tid=2145


PICO-8 (and I assume, TIC-80 as well) are actually great for prototyping bigger game development projects - specifically due to its harsh constraints, which force a limited scope and sharp focus on the design.

I'm actually in the process of making SlipWays, a fast-paced 4X game for PC that started as a PICO-8 prototype (https://krajzeg.itch.io/slipways). A major reason for the tight game design of the game were the tight confines on the console.


I love SlipWays! It's really impressive that you crammed a game that deep into such a small system. That and Celeste were big inspirations to look into PICO-8 myself. Looking forward to the full release.


One of the coolest hidden easter eggs in the main release of Celeste is stumbling upon the little room with the PICO-8 version of the game (https://i.imgur.com/7iNbBNA.png). I didn't know PICO-8 was a thing, so imagine my surprise when I found an entire complete game built into the main game!


Do you know how it was ported to the Switch?

TIC-80 uses SDL, which doesn't have a working port (for the Switch) so far as I know.


The commercial release of Celeste is a new game, written from scratch, implemented in C# (XNA/FNA/MonoGame). It includes a port of the original. I'm kind of curious if they actually wrote a PICO-8 emulator for that or just ported it to C#.


They have a Github repo with some of the source code up (mostly just stuff to do with character movement and control).

https://github.com/noelfb/celeste

Apparently it's based on this framework:

https://bitbucket.org/MattThorson/monocle-engine/src/default...


They ported the PICO-8 version line by line to C#. Since there aren't that many lines, apparently it wasn't that hard.


There is an SDL port for the Switch but it's under NDA and you need to request access for it [1].

[1] https://twitter.com/icculus/status/981730137736712192


There's an SDL port, but it can't be publicly distributed due to NDAs.


Boy, wouldn’t it be fun if there was a Z80-based retro console with an 8-bit color screen and easy access from modern machines (USB, etc)?




Amstrad CPC with a HxC card...


That's interesting. I'm currently building a Chip-8 emulator using an Atmega1284, keypad and SSD1306.

What ram chip are you using? I've been looking at 23K640 but it's proving a nightmare to get running on a breadboard.


To me it seems that trend started somewhere along with Notch's dcpu16 and assorted virtual hardware from 0x10c.


Pico 8 and Voxatron (its predecessor/3d succesor) both predate the 0x10c experiment I believe.


Hmm, I can only trace PICO-8 as far back as late 2014, while 0x10c happened in 2012. However Lexaloffle likes to label it, Voxatron is hardly a fantasy console, it's a voxel game engine (with fantasy console features retrofitted in later on).


PICO-8’s limits are partly tbere to try to ensure all games run on all platforms at full speed including raspberry pi.

it can export a stand alone game for windows, macos, linux, and html5


There is also LIKO-12 which is open source and has changeable "BIOS" and "OS." https://github.com/RamiLego4Game/LIKO-12


They are conceptually very similar and both obviously inspired by the old CHIP-8.

TIC-80 is a bit more 'powerful' in that it's a bit higher resolution with double the sprite count.

The most substantial differences:

>PICO-8 has its own BASIC-like language

>TIC-80 is programmed in Lua or JS

>

>PICO-8 is commercial software, costs $15

>TIC-80 is open source


Pico-8 is restrained by design.

> The harsh limitations of PICO-8 are carefully chosen to be fun to work with, encourage small but expressive designs and hopefully to give PICO-8 cartridges their own particular look and feel.

It can be a little frustrating at first, but if you focus on the other important elements of a good game it can be really satisfying.

In addition, there are some people doing some very cool stuff really pushing that limit as far as possible.

- https://twitter.com/paloblancogames/status/97765346516502528...

- https://hackernoon.com/pico-8-lighting-part-1-thin-dark-line...

Just to cherry pick a few. Personally, I like the restraints.

To add to the others, Pico-8 definitely uses a modified version of Lua 5.1/5.2.


PICO-8 may be commercial software for creators, but players can play PICO-8 games published via the web app for free.

The author, "zep" (of lexaloffle games), is also a wonderful human being that goes out of their way to support people who buy it / play PICO-8 games and deserves every penny for it.

While I hope they some day consider open sourcing PICO-8 so it may live on, for now, it provides them with meaningful income and lets them actively develop it, which I wholeheartedly support.


The author is actually Zep. Lexaloffle is the company.


As ungzd already said, PICO-8 doesn't use its own language, but instead uses a slightly modified version of Lua

https://www.lexaloffle.com/pico-8.php?page=manual


PICO-8 uses plain old Lua also; the editor downcases everything on save which is why it seems case-insensitive.


It also adds a couple of convenience language features and a simplified API, which is why it appears "BASIC-like".


The PICO-8 language is just Lua with some minor syntactic sugar.

It's also worth noting that TIC-80 has a $5 "PRO" version; the free (as in no cost) and open source version is basically shareware.


From the README:

> For users who can't spend the money, we made it easy to build the pro version from the source code.

So the pro version is still FOSS, their builds are just not gratis.


That's a nice mixed model.


PICO-8 uses Lua too.


pico-8 is a fantasy that probably couldn't have existed with out a whole subsystem below it. Mojang's DCPU-16 is probably closer to a fantasy computer.


PICO-8 is proprietary; TIC-80 is MIT-licensed free software. There is no reason to consider using PICO-8 now that TIC-80 exists.


This really reminds me of a lot of Niklas Jansson's concepts over at https://androidarts.com/

I love the way he thinks and distills a design to give it so much character. He does lots of retro hardware re-designs too, which are singularly cool. I bet he'd have a blast playing with TIC-80.


This makes me think of TIS-100, an amazing and challenging game to learn assembly basics.

http://www.zachtronics.com/tis-100/


Literally anything by zachronics deserves a recommendation.


The programming system looks really interesting, but that font is super annoying.


You apparently can change the font in config.lua:

https://itch.io/t/58932/configure-system-font-and-palette-in...


The font is awesome for the first minute or two, but yeah, hard to work with after that.


Indeed, for an 8x8 pixel font one can't really go wrong with something more similar to what was used in the early microcomputers:

https://int10h.org/oldschool-pc-fonts/fontlist/

Edit: it actually looks like a 5x7, in which case the best font would probably be something like the 5x7 a lot of character LCDs use: https://www.pjrc.com/mp3/lcdfont2a.jpg


I don’t remember them being that annoying in the 80s, or maybe we just read less text back then.


Having a bitmapped screen was already a huge improvement over character based graphics so I guess that everybody that could get it did so and took the lower resolution letters in stride.

I'm trying to remember how much we squeezed out of a Dragon32 'high resolution' mode, 256x192 pixels, I think it was 64 characters by 27 lines or so at 4x7 (that's really not the nicest font). Hard to read but the increased linecount made it worth it and eventually you got used to it.

Before that it felt like looking at your code through a keyhole.

My first 'decent' screen was an Atari ST at 640x400. That was such a huge step up. And after that ever improving Tseng cards in a 286 based PC, that's when 132 colums became workable.

Funniest thing though, for a long time I thought there never would be enough characters on a screen and now my eyes have gone so far backwards that I have to use a 32" screen with huge fonts to get anything done at all. I'll probably end at a 4x7 font again but with pixels the size of lego bricks.


Blurry CRTs hide a lot of font sins


And if you're feeling brave, TIC-80 has a port that uses Brainfuck instead of Lua. [0]

[0] https://github.com/lolbot-iichan/TIC-80/wiki


More like masochistic...


If you are interested in real retro-ish DIY hardware, check out Hackeboy

https://program.sha2017.org/events/153.html

http://hackefuffel.com/hackeboy0001.html


Please allow me to plug in my own project also, the bitbox console. It's a non portable, very simple to build (one chip, solderable by hand) arm32 console. It had a dozen games or so, all open-source. http://bitboxconsole.blogspot.com Edit: typo and link.


I've played around with the TIC-80 and I gotta say that the development environment is something that is enjoyable for small projects but larger projects are a headache.


If you're doing a larger project on it then I think you need to re-calibrate your expectations. It's more for educational play.


I like the 'batteries included' aspect of it; I wish more 'for practical use' development systems had that. The fact that you can package the result for different platforms, makes it interesting for trying out game mechanics on the go and distributing them inside small games. The style it was made in works on low res, small screens, so programming on small devices (small (cheap) Android tablets, GPD Pocket(high res but small screen), Pandora, Pyra etc) is ok.


The last "practical" environment that was really batteries included, as far as I can tell, was Macromedia Flash. It lives on as Haxe, the FlashDevelop IDE feels like a blast from the past (it feels so lightweight!) and it supports quite a few platforms (web, mobile, etc). But it's awfully niche now.


It was not designed for games at all. Making games in in was too hacky.


Per the Itch.io page, you can use the $5 premium version which has features like saving as text and allowing you to edit in an external editor, which might help. Pico-8 has this by default, and can definitely confirm it would be awful to try and code a whole game in the built-in editor.



For those who get into the "Hello World!" screen, or other screens, and can't figure out how you're supposed to escape (short of hitting refresh), hit the 'ESCAPE' key. :)


There's also antirez' LOAD81:

http://github.com/antirez/load81

And .. as its open source (unlike TIC-80 or PICO-8), its quite possible to add features and extend the console in interesting ways ..


TIC-80 is open source (however there is also "pro version" which isn't). "Regular", open source version supports editing only in built-in editor, no external text files.

Update: seems that "pro" version is built from the same MIT licensed source, only prebuilt binaries on releases page is "non-pro". So it's completely open source.


Anyone else having issues with playing in FireFox? Seems like a really cool project, looks like I might have to install it instead of using it in browser ... a bit disappointed :(


What version FF are you using? It could be that you are on a beta build and something is slowing it down, or you are running an older version.


59.0.3 On Win10 (x64)


OK, I'm running the same version on x64 Win10 as well. No problems here. It could be you have some sort of ad-blocking extension installed that's degrading performance on that page.


Works fine for me on Firefox 59 on Windows.


Weird. I have 59.0.3 on Win also.


Does it run on a Pocket C.H.I.P?


It would be pretty cool, but I just find something sad: https://hackaday.com/2018/04/03/is-this-the-end-for-the-c-h-...


There is a pocket CHIP build available


Another interesting fantasy console is LIKO-12, with a huge advantage of being free software:

https://github.com/RamiLego4Game/LIKO-12


TIC-80 has the exact same license (MIT):

https://github.com/nesbox/TIC-80/blob/master/LICENSE


Only the free version, there is another (Pro) version which has additional features and a closed source.


This isn't correct either

"For users who can't spend the money, we made it easy to build the pro version from the source code."

https://github.com/nesbox/TIC-80#pro-version

https://github.com/nesbox/TIC-80/blob/master/Makefile




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: