Hi, i'm working on implementing a pico-8 emulator in javascript (browser) and wanted to share current progress with you.
UPDATES:
It's open source now
https://github.com/burakcan/jsgs
First steps
Sprites / Multiple screens / Crt filter on-off
Inputs / Current status (video)
thanks all,
@dw817 i'll probably don't include an IDE because my goal is not to compete with pico-8. I'm just emulating it's runtime for games.
@geistvonpa It will not be used for developing games; it's only for playing games online. The difference with html5 export that the html5 exporter compiles whole code via emscripten and pretty heavy.
Hmm ... Interesting, Burakcan. Perhaps you'll get past the HTML 5 Online stagger. Here's hoping !
can't wait!
crt filter = great!
- proper gamepad support (including dpad!) = awesome!
- controls overlay for phone/tablet = super awesome!
- integrated keyconfig = faints
- green/amber/gray/gbdotmatrix filter = NDE
;)
thank you @ultrabrite :)
Can you provide some examples for green/amber/gray/gbdotmatrix filters?
found a green/amber/gray example there:
http://magicbox.imejl.sk/smooth-resize/
(combine with crt filter for best effect)
gameboy dot matrix:
green + mosaic + subtle lcd pixel dropshadow
Status update: http://3dcamera.bitballoon.com/
(direct port of this: https://www.lexaloffle.com/bbs/?tid=27580)
It looks great!
What does the todo-list look like? What is still missing preventing it from running any pico-8 cart?
By the way, is this open source?
@Offler thank you :)
It's not open sourced yet but it'll probably be. I didn't think about open sourcing/licencing yet.
Missing stuff:
- It doesn't undestand lua yet. I couldn't find a performant way to convert lua to javascript on the fly. Current demos are built by translating lua to js, line by line - by hand.
- Sfx / Music is not available now. I couldn't understand the ram layout of the sfx section. I managed to get tempo, loop info etc but couldnt decode notes yet.
- Desktop application: I'm planning to wrap it with electron. It'l also be possible to export cartridges as electron apps.
- Mobile layout / Controller: I'm currently working on this. I'm building a handheld console like layout with onscreen buttons.
- Future idea: I'm also thinking about the possibility of running cartridges on react-native.
An idea is to leave language part as is and build tooling around javascript. As well as it's own cartridge format. This way, it'll be competing pico-8 (i don't know if it's fine?)
What do you think?
If I'm not strongly mistaken, the html export uses the lua VM converted from c to js with emscripten. that seems efficient enough, since the lua machine is throttled down anyway. that also means 100% code compatibility, not sure a converter can compete.
if you ditch pico8 compatibility, you're going for something completely different. that'll be far less interesting for us around here...
@ultrabrite there some problems with pico's original html export i think. One problem is 1.3mb of js content, which is pretty heavy especially for mobile. The other problem is it's too hard to customize.
My current implementation is (except sound) mostly compatible with pico-8, including ram operations. I managed to run lua codes by lua -> ast -> escodegen -> js. It's not perfect yet but it shows that it's doable. You're right; ditching pico8 compability means that i'm going to a totally different way but wouldn't it be interesting to have a competition on the "fantasy console" area? But i'm not sure yet if it's ethical or not.
Cast demo: http://cast.bitballoon.com/
This is the first demo of running directly from cartridge :) including lua.
Hi, i published it on Github: https://github.com/burakcan/jsgs
[Please log in to post a comment]