mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-30 01:48:15 +03:00
5e557ffd1a96949810f25982f24b0eafb9b65bac
With commit48313169b6(PR #453), AllyTally added a single-case patch for a regression, instead of fixing it at its root cause. In fact, that commit only fixes the music if Presenting VVVVVV is playing while exiting to the menu, not if you enter a level that plays Presenting VVVVVV - so it only fixes it going one way, and not going the other way around; neither fixing also all the other cases this could happen. It doesn't, say, fix the case where you are exited to the menu automatically after collecting the last crewmate in the level (or if the level calls gamestate 1013 itself), which is what happens in my MIRA-VIU TAS video at the end, and which I noted in the description of that video ( https://www.youtube.com/watch?v=OYQO4ePbYW4&t=111 ). So, the problem here is that when musicclass::play() is called, it sees that currentsong is the same as its input, and decides that since the music is already playing, it shouldn't play the music again. Thus, the music fades out, and we get silence instead of the music playing again. But I said this was a regression. Why didn't this happen in 2.2? Well, it's because of the fact that 2.2 sets currentsong to -1 (no music playing at all) immediately when starting a fadeout, and not when the fadeout completes (commitfacb079b35, PR #316). As you can imagine, this discrepancy could lead to bugs, given that the game would think that music wasn't playing when in actuality it was, but fixing this bug could also break code that expected this wrong behavior. And in this case, it has. So to properly fix the root cause of this, instead of naïvely single-case patching out every case that comes up randomly, in musicclass::play(), the function will now ignore if the input given is the same as currentsong if the music is currently fading out.
This is the source code to VVVVVV, version 2.0+. For more context about this release, see the announcement on Terry's blog!
License
VVVVVV's source code is made available under a custom license. See LICENSE.md for more details.
In general, if you're interested in creating something that falls outside the license terms, get in touch with Terry and we'll talk about it!
Authors
- Created by Terry Cavanagh
- Room Names by Bennett Foddy
- Music by Magnus Pålsson
- Metal Soundtrack by FamilyJules
- 2.0 Update (C++ Port) by Simon Roth
- 2.2 Update (SDL2/PhysicsFS/Steamworks port) by Ethan Lee
- Beta Testing by Sam Kaplan and Pauli Kohberger
- Ending Picture by Pauli Kohberger
Versions
There are two versions of the VVVVVV source code available - the desktop version (based on the C++ port, and currently live on Steam), and the mobile version (based on a fork of the original flash source code, and currently live on iOS and Android).
Description
Languages
ActionScript
54.4%
C++
44.3%
C
0.7%
Java
0.4%
CMake
0.2%