Log In  

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)

https://twitter.com/neoberg/status/789023521766793216

P#31149 2016-10-18 09:44 ( Edited 2016-11-13 16:24)

Looks good, Burakcan ! are you going to include an IDE ?

P#31166 2016-10-18 14:04 ( Edited 2016-10-18 18:04)

nice crt shader!

P#31176 2016-10-18 15:04 ( Edited 2016-10-18 19:04)

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.

P#31207 2016-10-19 00:40 ( Edited 2016-10-19 04:40)

Hmm ... Interesting, Burakcan. Perhaps you'll get past the HTML 5 Online stagger. Here's hoping !

P#31208 2016-10-19 01:14 ( Edited 2016-10-19 05:14)

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
    ;)
P#31290 2016-10-20 09:22 ( Edited 2016-10-20 13:22)

thank you @ultrabrite :)

Can you provide some examples for green/amber/gray/gbdotmatrix filters?

P#31298 2016-10-20 11:18 ( Edited 2016-10-20 15:18)

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


4 levels here, could work with 16...

P#31304 2016-10-20 12:33 ( Edited 2016-10-20 16:33)

Oh very nice thank you 👍

P#31310 2016-10-20 13:19 ( Edited 2016-10-20 17:19)
P#32273 2016-11-06 12:47 ( Edited 2016-11-06 17:47)

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?

P#32274 2016-11-06 13:18 ( Edited 2016-11-06 18:18)

@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?

P#32275 2016-11-06 13:29 ( Edited 2016-11-06 18:29)

naive mobile controller: http://jsgsmobile.bitballoon.com/

P#32276 2016-11-06 14:16 ( Edited 2016-11-06 19:16)

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...

P#32285 2016-11-06 20:31 ( Edited 2016-11-07 01:31)

@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.

P#32290 2016-11-07 07:42 ( Edited 2016-11-07 12:42)

Cast demo: http://cast.bitballoon.com/

This is the first demo of running directly from cartridge :) including lua.

P#32411 2016-11-12 09:02 ( Edited 2016-11-12 14:02)

will you opensource it ?

P#32431 2016-11-13 06:21 ( Edited 2016-11-13 11:21)

Hi, i published it on Github: https://github.com/burakcan/jsgs

P#32438 2016-11-13 11:23 ( Edited 2016-11-13 16:23)

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 11:16:26 | 0.025s | Q:34