Remix.run Logo
elpocko 6 days ago

>very close to the metal

>(pico8)

But PICO-8 with its integrated tools and Lua programming is super high level, pretty far removed from "8bit". It's only 8 bit in aesthetics, entirely artificial and forced. Why not write games for the 2600, the C64 or the NES to experience real constraints of an actual 8 bit platform, the actual "metal."

dr_dshiv 6 days ago | parent [-]

I know, tell me about it, we’ve been debating this, tbh. We landed on pico8 to introduce the ideas of creativity within constraints as there is a very active community and nice tooling. We’ve done NES workshops before, but always with CS students and eproms. 6502 assembly isn’t that complicated, but can be scary.

elpocko 6 days ago | parent [-]

I've been thinking about making a fantasy computer/console that uses an emulated 65C02 CPU, maybe a bit simplified -- every instruction only taking 1 cycle, for example. You could use all existing tools for the 6502, like the amazing 64tass, and there's an interesting high level language called prog8 (https://github.com/irmen/prog8) that's relatively easy to use. Not sure if there's any interest for something like that.

Lerc 6 days ago | parent [-]

I was working on something using AVR assembly as a fantasy console.

I never quite completed it, but I managed a emulator/assembler IDE in the browser. Making my own assembler let me play around with some ideas for macros.

It could even load programs from gists.

https://k8.fingswotidun.com/static/ide/?gist=ad96329670965dc...

Reflecting on it now, I think one feature that could help a assembler on devices like this is the ability to inline compile assignment expressions that use values of only one type. It would be easy enough to emit a stream of instructions for

    x=32+(x*(y+2))
or even

    r15=32+(r15*(y+2))
using registers as expression values.

The result would usually be what an assembler writer would write themselves.

I think a macro assembler that did that would ease a lot of the tedium of assembly while maintaining the near absolute control over memory use and IO that you need for low level coding.