This page will always show the latest version and update status.

  • R-cade version:
  • CSFML version:

To check if your installed versions of the R-cade package (and the CSFML dependency) or to update to the latest versions, you can use raco:

# to check installed versions
$ raco pkg show

# to update to the latest versions
$ raco pkg update csfml
$ raco pkg update r-cade


  • Added subtle blur effect to CRT shader.


This update has a couple breaking changes with respect to button input to make it much easier to use and understand. Please read the documentation to understand the changes.

  • Better btn-* functions.
  • The action function updated, will be deprecated in next update.
  • A timer function.
  • Improved shader.
  • Start of a Centipede example.


  • Added new font support and there are now 3 fonts.
  • Using dynamic-wind for main loop.
  • Fixed music bug finally!
  • All examples now use module+ main to launch; thank you, wu-lee.


  • Updated for Racket 7.7 and now works with Racket/CS.


  • Fixed bug where screen size to fit wasn’t an exact number.


  • Fixed fragment shader compilation bug.


  • The game-loop function is now parameterized.
  • New goto function is used to transfer control from one game loop to another.

The game Columns has been added to the examples. My blog post about it can be found here.


NOTE: This version slightly changed the music function. The #:instrument keyword argument was replaced with #:voice.

  • Fixed a music related crash where music streams were being freed twice.
  • Added the draw-ex function, which allows drawing of sprites that are 16-bits wide.
  • Added voice support to the music function, which allows for custom envelope functions applied to individual notes.
  • Exposed the adsr-envelope function and the basic-note default voice for music.

Additionally, there is a new example, horse racing game: derby. My blog post about it can be found here.


NOTE: This version requires updating both the r-cade and csfml packages!

This was the first step in a pretty massive audio overhaul, which did the following:

  • The font and palette are both parameterized now. This should allow for using different palettes or fonts in the future.
  • Fixed set-color! bug.
  • Fixed a lot of mixing issues by generating 16-bit PCM waves.
  • Increasing the maximum number of playing sounds from 4 to 8.
  • Much improved sawtooth, triangle, and noise wave functions.
  • The play-sound function now queues sounds to be played. If multiples of the same sound are queued in the same frame, only one will be played. This helps with mixing.
  • Removed volume and pitch parameters from play-sound and play-music.
  • Removed looping from play-sound.
  • Added new sound-volume and music-volume functions.
  • Exposed the voice API to users.
  • All sound generation functions now take an optional voice instead of an instrument and envelope.
  • Added a new synth macro for creation of instruments.

Additionally, I’ve begun work on a space invaders example, which I’m using pieces of as the basis for future, pixel-perfect collision detection functions that will be added.