Coder Social home page Coder Social logo
yocto-8 photo

yocto-8 Goto Github PK

repos: 5.0 gists: 0.0

Name: yocto-8

Type: Organization

Bio: A (WIP) PICO-8 cartridge runner for the Raspberry Pi Pico. Org includes forks of libraries used in y8.

yocto-8

A (WIP) open-source PICO-8 cartridge runner for the Raspberry Pi Pico.

PICO-8 is a fantasy game console from Lexaloffle which allows you to create, edit, share and play small games in a virtual console.
yocto-8 is a PICO-8 implementation that aims to run unmodified games.

That's the plan anyway -- see the current progress.

The main implementation goals are:

  • To reach good PICO-8 compatibility
  • To be as fast as possible, and to minimize the RAM footprint as much as reasonably possible
  • To be generally portable to platforms with a high quality C++20 toolchain

The current plan is not to be a PICO-8 devkit, that is, it will not provide any editor tools.

yocto = pico².

Progress and plans

With some modifications, some demos and games run. We're far from good compatibility, especially on real hardware.

It is possible to build and run yocto-8 on the desktop which is currently the preferred way for implementing new API features due to facilitated debugging and allowing a faster development cycle in general. The main target remains the embedded implementation.

This is currently in an early stage: there is no user-friendly way to get this working yet and most cartridges will not work.

A significant problem is the reliance on a hack that enables mapping of SPI RAM.
At the moment, this hack is very slow and may compromise the usage of the RP2040 for a real handheld project. Many games and demos rely on using way more memory than the RP2040 SRAM could provide no matter how many optimizations are done.
There is a lot of room for optimization for the RAM hack routine. It is currently not known what real world performance can be theoretically reached.

There are (uncertain) plans to design a real handheld. The main two contenders are the RP2040 and the ESP32-S3 (which supports QSPI RAM), but there are drawbacks to both of these.

Limitations

  • This does currently only aim to be a pico-8-compatible game runner, not an editor.
  • There is currently no plan to support games that require the mouse or extra keyboard keys to function.
  • No emulation of "CPU cycles" as calculated by pico-8 is planned for now: Game performance will be limited by how fast the RP2040 can run it. This is usually slower than official pico-8 anyways, but may be faster at some operations, namely draw calls.
  • Yocto-8 uses an external SPI RAM chip to provide more Lua memory when the malloc pool limit is reached (pico-8 allows allocating up to 2MB of Lua memory). As this requires expensive emulation on the RP2040, games that heavily allocate may run significantly slower.

Supported platforms


yocto-8 running Celeste Classic on the PicoSystem.

  • Y8_ARCH=desktop: Desktop (both with a SFML frontend and headless)
  • Y8_ARCH=pico: Raspberry Pi Pico based platforms
    • Y8_PLATFORM=asupico: My setup (Pico+SSD1351 display+8MB PSRAM+push buttons)
    • Y8_PLATFORM=picosystem: Pimoroni PicoSystem

Pros and cons against a SBC-based solution

Pros:

  • ~Instant bootup
  • Some extra appeal: hackable firmware and allowing to support a niche specific-purpose device
  • Usually lower cost
  • It should be possible to drive power draw quite a bit lower

Cons:

  • SBCs-based solutions are more general purpose (e.g. cheap emulation handhelds)
  • SBCs are more versatile (WiFi & Bluetooth, etc)
  • Will probably never be fully compatible with all PICO-8 games
  • No editor tools, etc.
  • More standard hardware

yocto-8's Projects

lua icon lua

The Lua repo, as seen by the Lua team. Mirrored irregularly. Please DO NOT send pull requests. Send any issue to the Lua mailing list https://www.lua.org/lua-l.html

yocto-8 icon yocto-8

A (WIP) PICO-8 cartridge runner for the Raspberry Pi Pico

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.