The source code to VVVVVV! http://thelettervsixtim.es/
Find a file
NyakoFox 6810c5fa8c Fix #1223 (analogue mode segfault)
When `SDL_RenderReadPixels` fails for some reason, the game tries to
free the temporary source surface it creates. Unfortunately, it never
sets it to `NULL` after, so the next time the game tries to render the
filter, it'll try to work with a memory region that was already freed.

To fix this, I just replaced `SDL_FreeSurface(*src);` with
`VVV_freefunc(SDL_FreeSurface, *src);` which is a helper macro which
sets the pointer to NULL after freeing.

Now, there's a new issue -- since the temporary buffer is now NULL,
next frame we'll try to remake it! So I've introduced a static bool
which disables the filter entirely if `SDL_RenderReadPixels` fails.
Without this, it'd create and destroy a surface every frame, which
could lead to slowdown. (Not as slow as the filter when it DOES work,
but still...)

I also added a line which frees the second temporary surface... it's
weird that was missing in the first place, but I think reimplementing
analogue mode was one of the last things I did for the renderer
rewrite anyways.

Resolves #1223.
2025-04-29 20:54:11 -04:00
.github CI: Migrate to SLR Sniper SDK for Linux builds 2024-11-03 16:57:17 -08:00
desktop_version Fix #1223 (analogue mode segfault) 2025-04-29 20:54:11 -04:00
mobile_version Update readme.MD 2024-01-02 22:27:05 +01:00
third_party Update to latest FAudio 2024-02-01 11:08:02 -05:00
tools Update readme.MD 2024-01-02 22:27:05 +01:00
.gitattributes fix actionscript misclassified as angelscript 2020-01-12 15:18:45 -05:00
.gitmodules Add SheenBidi submodule 2024-01-08 19:17:44 -08:00
License exceptions.md Added license exception for Recalbox project 2024-05-02 17:12:36 +01:00
LICENSE.md Update LICENSE.md 2024-01-02 22:27:05 +01:00
logo.gif Update logo.gif 2024-01-02 22:27:05 +01:00
README.md Added a link in the readme directly to the desktop_version folder 2024-01-02 22:27:05 +01:00

logo

This is the source code to VVVVVV, the 2010 indie game by Terry Cavanagh, with music by Magnus Pålsson. You can read the announcement of the source code release on Terry's blog!

The source code for the desktop version is in this folder.

VVVVVV is still commerically available at thelettervsixtim.es if you'd like to support it, but you are completely free to compile the game for your own personal use. If you're interested in distributing a compiled version of the game, see LICENSE.md for more information.

Discussion about VVVVVV updates mainly happens on the "unofficial" VVVVVV discord, in the vvvvvv-code channel.

Credits