Skip to content

Version 0.3.1

Choose a tag to compare

@fedyfausto fedyfausto released this 28 Oct 12:28
· 4 commits to main since this release

Jet Studio 0.3.1

Faster displays and much less RAM on STM32 boards. Projects don't need to be exported again
(the package format is still v14). Flash the firmware again to get the changes.

New

  • Display DMA on STM32: the display gets each field through DMA in the background while the
    next one is drawn, with SPI up to 54 MHz. On a Nucleo-F746ZG with an ILI9341, textured_boxes
    went from 29.5 to 12 ms per frame (83 fps).
  • JetRun on the Nucleo-F746ZG: the OutRun-style demo now fits in 320 KB of RAM and runs at
    about 25 ms per frame.
  • B1 USER button: the blue button of the Nucleo-144 boards (F722ZE, F746ZG, F767ZI) can be
    used in the Input Map, for example to start a game.
  • D11 as MOSI on the Nucleo-F746ZG/F767ZI: remove jumper JP6 to disconnect it from the Ethernet.

Improved

  • Nodes use about 43% less RAM (860 → 488 bytes each on ARM). The fields of the less common
    node types (2D, camera, light, environment, physics, particles) are only kept by the nodes that
    use them. Nothing changes in how scenes behave, and frames are identical to before.
  • STM32: textures stay in flash. Palette textures are read straight from the package instead
    of being copied to RAM (about 300 KB saved in JetRun).
  • Jet's triangle queues are sized once per scene instead of doubling while drawing, which
    briefly needed the old and the new buffer at once.
  • STM32: running out of RAM:
    • the firmware first gives up the second field buffer and keeps running (drawing then waits
      for the DMA);
    • if that's not enough, the log says "Out of memory", with the size requested and the RAM
      left, instead of crashing.
  • The serial log shows how much RAM the scene's nodes use when it loads.
  • The Arduino Nano ESP32 runs as fast as in 0.3.0.

Fixed

  • STM32F7: LovyanGFX's display DMA hung (no interrupt handler for SPI1's DMA stream, data
    cache not written back). Our fix is in tools/patches/LovyanGFX-stm32-dma.patch.

For developers

  • ./jet-studio setup now applies our fixes to the dependencies from tools/patches/
    (LovyanGFX STM32 DMA, Jet Scene::reserveTriangles). It removes them before moving to
    another revision.

Known issues

  • On the F746, JetRun runs with a single field buffer, so drawing waits for the DMA.