This is the source code to VVVVVV

Related tags

Miscellaneous VVVVVV
Overview

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

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).

Comments
  • Port to FAudio

    Port to FAudio

    Changes:

    I was browsing the repo and saw #829, with the note that porting to FAudio should be "really easy" for someone else to do. Answer is no it wasn't (tbf I never touched any audio stuff ever), but I tried nonetheless.

    This should be functional, but buggy. I'm opening the PR to see if I should continue or just stop. ~~Thanks for looking at my awful code~~

    CI is failing because I used a submodule for FAudio. I can either make CI clone recursive or just copy folder contents, will wait for feedback on that. Had to increase C Standard Version due to stb_vorbis (90 -> 99). If someone has suggestions on how to avoid that please share.

    Most Bugs revolve around tabbing in and out of the game. Sometimes there is no Resume() generated for some reason I think. For example, tabbing out during the intro sequence causes the game to stay mute until you do it again during gameplay. I think it might be because of FAudio_StopEngine() in Pause(), but as that was written in the comment I let it be.

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    required for 2.4 
    opened by N00byKing 93
  • 2.3 TODO

    2.3 TODO

    This is a quick tracker for things we're going to check out before 2.3 is tagged. We're on ~month 6 of the VVVVVV source release and we've gotten a ton of contributions (and horrifying bug discoveries), so I think this is a good time to start thinking about pushing an official update.

    Current Schedule: July 1 will be a feature freeze, and ~July 14 31~ ~October 1 31~ January 10 will be the release. No features will be merged after July 1, only bug fixes will be accepted until 2.3 is out.

    I'll add a milestone tag for issues already filed, but the broader things we need to do featurewise:

    • [x] Merge the 60fps patchset
    • [x] Close or Acknowledge bugs tagged as 2.3 items
    • [x] Update the CONTRIBUTORS file, GitHub Friends list
    • [x] GitHub Superfriends list

    Not much, but the 60fps patchset in particular needs as much playtesting as possible this month. Other than that, @InfoTeddy's got some things from CE to upstream, I'll let them maintain a list here as well.

    required for 2.3 
    opened by flibitijibibo 43
  • Add localization system

    Add localization system

    Changes:

    This PR, when finished, adds a localization system to VVVVVV.

    The most important design goals I hope to achieve are the following:

    • The system should be easy enough for everyone involved to understand: ideally it should not get in the way of code contributors knowing how to add features that have text to the game, code contributors and maintainers should preferably not have to read too many instructions or follow too complex/repetitive/error-prone procedures on how to maintain full translatability.
    • It should not be hard for translators to avoid accidentally making text run offscreen, out of boxes, etc; there should be enough room for translations where possible; translators should not have to manually wordwrap their strings (except CJK because it's hard to automate there). Strings should come with defined limits where possible.
    • Context and meaning of text should be clear as much as possible; in particular, roomnames should be translated while seeing the room in action.
    • If all language resource files (including any 'English' files) are missing, the game should still be fully functional in English.
    • People should be able to make fully-functional translations by just making resource files for it, without needing to recompile the game (if that language doesn't require technical changes, such as RTL text, or otherwise special unsupported font handling)

    The idea is more or less inspired by the gettext approach, by surrounding hardcoded English text by a function loc::gettext(). If the language is not set to English, this function would look up the string in the list of translations and return the matching translation if found. The language files are XML files that look somewhat like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <strings>
    	<string english="Game paused" translation="Spel gepauzeerd"/>
    	<string english="Aa" translation="Bb" explanation="appears somewhere" max="30"/>
    </strings>
    

    Cutscenes, roomnames, etc have their own more specialized XML files and functions. There is also an Excel spreadsheet with macros that can be used as an "editor" for the XML files, as an alternative for translators who prefer working in a spreadsheet instead of with XML.

    One of the problems that also needed to be solved in VVVVVV is text wrapping, both in menus and in cutscenes, because manually inserting newlines would require a lot of effort to get right and would be extremely error-prone. So, an automatic text wrapping function has been added for the interface and cutscenes, and while strings were extracted, manually wrapped strings have been changed to use the automatic wrapping function instead. For cutscenes, I have even been able to leave the cutscenes themselves almost entirely unchanged - the text command unwraps its lines, looks up the translation for that dialogue in that cutscene, and re-wraps it. (This possibly results in more or less lines in the translation, but that's not an issue because position comes after text, not before.)

    I have considered a key-based system too (GAME_PAUSED), but that also has disadvantages, for example, it becomes less obvious off the bat how to add new features that have text, all keys would have to probably appear at least twice or thrice in the code, the source becomes less self-documenting and it'd be harder to gracefully fall back to English if something wasn't translated or if language files (even the English one) are incomplete somehow.

    These are the language files that can be found for each language:

    • meta.xml - some language-specific configuration
    • strings.xml - the main list of strings, accessed in the code using loc::gettext(const char* eng)
    • numbers.xml - the list of numbers from Zero to One Hundred, as well as plural form configuration
    • strings_plural.xml - similar to strings.xml, except strings can have different forms depending on number (1 trinket, 2 trinkets). This can be adapted to how plurals work in the language. Accessed in the code using loc::gettext_plural(const char* eng_plural, const char* eng_singular, int count) or the convenience function gettext_plural_fill(char* buf, size_t buf_len, const char* eng_plural, const char* eng_singular, const char* args_index, ...) (using VFormat)
    • cutscenes.xml - the dialogue texts for all cutscenes, and per-dialogue formatting attributes (centering, padding, ...)
    • roomnames.xml - all regular room names
    • roomnames_special.xml - special cases for room names, such as Prize for the Reckless, glitch/change, and hidden names/generic area names

    There is also a translator menu (only shown in specific cases), which provides options like testing menus, translating room names within the game, syncing all language files with the English template files, and other things.

    Lastly, there's a README.txt file for translators and maintainers in the languages directory, which explains a lot more than this PR description does (and which can be updated after this is merged).

    This PR does not yet aim to include support for bigger fonts as needed for Chinese, Japanese and Korean (and different fonts for different languages in the first place). My plan is to first have this PR merged (that is, squashed; and it's already massive enough as-is!) and then to make a new PR that adds support for different and bigger fonts. I already have that mostly thought out.

    After this PR is merged, officially distributed builds (Steam, Itch, Make and Play, etc) should bundle the corresponding versions of the lang and fonts folders (which are in /desktop_version/) as folders next to data.zip, and have a folder/text file with C-HashMap's license as discussed below in the comments. Instructions for compiling VVVVVV yourself should not have to change - people should not download these separately like they have to do with data.zip, everything will just work in most cases. The language and font files are in the repo, and subject to constant change along with the code, so if they're not found next to data.zip, the game will look for them in /desktop_version/ automatically, or the user can pass -langdir. (And if language files are not found for some reason, the game will remain fully functional in English and use the traditional font from data.zip.) Better explained by f4b423032bac6f1251107ca12f8a3183601e5959:

    So the better idea is this: VVVVVV should be distributed with the lang folder in the same place where data.zip is (so for example, in the user's Steam folder), and the game will use that if it exists.

    If it doesn't, that probably means someone has compiled VVVVVV and created a build folder for themselves. In that case, the game checks if /desktop_version/ (or \desktop_version\ on Windows) is somewhere up in the path, and if it is (which is likely, since the build folder was probably made inside of desktop_version/), the game will try to use desktop_version/lang/. Which is convenient, because that's the up-to-date version that belongs to the code you compiled, and it's under version control!

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV (for example, a 2.3 update on Steam for Windows/macOS/Linux)
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    localization 
    opened by Dav999-v 34
  • Make the game (visually) run at framerates above ~30 FPS

    Make the game (visually) run at framerates above ~30 FPS

    Changes:

    VVVVVV is a game that runs at 1000/34 frames per second, which is approximately 29.4 frames a second, which is close to, but not quite, 30 frames a second. This odd number comes from the fact that the amount of times it takes for each frame is coded to be 34 milliseconds, and not 33.333333333... milliseconds.

    This pull request unlocks VVVVVV's framecap of 1000/34 FPS. It does this in such a way that the underlying engine still runs at an actual framerate of 1000/34 FPS (which we should be calling tickrate now), and in between each actual frame we just draw what the frames in between each frame should be, using something called "linear interpolation". So now the game will visually run at the same rate as your monitor (my monitor is 60hz, I'm not a true gamer :( ​ ​ ​ ​ ).

    What's linear interpolation, you might ask? Well it's basically like drawing a straight line between two points on a graph. But it's more akin to averaging something. All the rendering does is go like, "Ok so on this frame, we have 2, and on the next frame, we have 4. What's the average of 2 and 4? Why, it's 3! So we should draw a frame using 3."

    This approach means that the underlying physics isn't changed, which is a very good thing because if I changed the physics around to update at, say, twice the speed but with half the values, that would run the risk of breaking custom levels. Also, it's easier to do it this way because it requires changing less values, although it does require disentangling all pieces of update code from render code so as to make sure things don't update as quickly as possible. And regardless of those concerns, this approach is the cleanest imo, since the physics don't subtly change depending on your refresh rate (unlike games like Super Meat Boy, which apparently desyncs TASes depending on if your refresh rate is 59hz or 60hz, oh and also different resolutions have different refresh rates, good luck).

    Oh, and by the way, the Switch version (made by some weird company named Nicalis) actually does the screw-up-the-physics approach instead of what I'm doing. They've apparently had to change some custom levels because the way they did it broke things like edge-flipping. Maddening.

    Most of the work I took was from Colon-D's fork of VVVVVV attempting to run it at over 30 FPS. However, his mod is incomplete (for example, the title screen still runs at 1000/34 FPS) and also does some things inefficiently (like re-drawing warp backgrounds every single frame, instead of scrolling a surface + incoming textures after drawing an initial background). Also it hasn't been updated in months.

    This patch also seems to improve the 100 milliseconds of SDL_Delay the unfocus-pause gives, in that it actually seems to have an effect now and be noticeable when you re-focus (possibly because before we were using SDL_Delay as the frame limiter, too, and I guess one of them kind of canceled the other out?).

    To enable this, you need to go into "graphic options" and turn on the "toggle fps" option. You can turn on "toggle vsync" as well if you feel like it, too.

    Honestly, after playing the game at 60 FPS, it feels really strange to play the game at normal 30 FPS.

    #99 is already closed, but seems relevant to mention in this PR.

    (Current base commit ID for this PR: 62441edbc9b279d4e37ea6a640f376288ffc8417)

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [X] My changes may be used in a future commercial release of VVVVVV (for example, a 2.3 update on Steam for Windows/macOS/Linux)
    • [X] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    required for 2.3 
    opened by InfoTeddy 33
  • Unicode rendering

    Unicode rendering

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV (for example, a 2.3 update on Steam for Windows/macOS/Linux)
    • [x] I will be credited in a CONTRIBUTORS file for all of said releases, but will NOT be compensated for these changes

    Changes:

    If font.png is more than 128px tall, it is assumed to be the .png version of the Space Station font. Compatibility with the original font is preserved.

    All characters outside ASCII have a width of 8.

    The Space Station font (font.png) was created by Matt 'Stelpjo' Aaldenberg.

    utfcpp is by @nemtrif. It does not require attribution in binary releases.

    opened by leo60228 31
  • [Question] Linux build requirements

    [Question] Linux build requirements

    I don't really want to ask y'all to put in a bunch of extra labor to figure out Linux build requirements when I'm assuming you just used what shipped with CentOS 7, but it would be nice to know what the additional build requirements are for other systems like Ubuntu especially, which is the most common base environment folks would be using who would want to build on Linux. It's possible we could figure this out just by trying to install and following the error messages.. I'm opening this issue to be able to track what those requirements are and hopefully add them to the desktop readme.

    opened by benwiley4000 26
  • SDL in Ubuntu stable releases is too old

    SDL in Ubuntu stable releases is too old

    These commits added the use of SDL_zeroa(): 70b9ffe6a58b71122aa60280bae4194326d026a0 a113662050d29a01819a2f606c9bb1d55d941abb bd97378862c6b01d1de59f59a98a8a53a74fb696

    The problem is that SDL_zeroa() was added in SDL 2.0.12, and the earliest version of Ubuntu that can easily install SDL 2.0.12 via apt is the very latest, Ubuntu 20.10 (see 20.04 and 20.10), and 20.10 is not an LTS version.

    So now anyone on most versions of Ubuntu or related distros (or anywhere else an earlier SDL is used than March 2020) will get a compilation error and will have to be told their SDL is too old. This makes "just" compiling VVVVVV more difficult on those systems.

    wontfix not our bug 
    opened by Dav999-v 25
  • [Docs] License is not open source

    [Docs] License is not open source

    It's cool that you released the code! Unfortunately it's not actually an open source license!

    I would recommend you use something like the GPLv3+ like John Carmack did when he release Quake source.

    Happy to answer any licensing questions you have! Good luck!

    opened by purpleidea 25
  • [Third Party] Traditional (and Sandboxed ?) Packaging Checklist

    [Third Party] Traditional (and Sandboxed ?) Packaging Checklist

    Hello!

    First, a huge thanks for releasing this incredible game source code :D! This is truly awesome! But what could be even better, is to package it properly for Linux Distributions. And you seem to not be against this idea according to your comment in #2. So, this is a basic checklist to what needs to be done in order to have it packaged (at least, in RPM):

    Mandatory changes

    • [x] Technical: Adding a .desktop file: would allow it to show in start menus
    • [x] Technical: Adding a .appdata.xml: would allow it to show in application stores
    • [x] Technical: Adding the possibility to load this data.zip from XDG_DATA_DIRS to avoid having a .zip in the binary directory (#139)

    I would be happy to help with these.

    Optional changes

    • [x] Legal: Adding a non-proprietary, "redistributable" data.zip: or that would mean that the user should do some further steps to get it working which would defeat the whole purpose of packaging

    • [REFUSED] Legal: Change the license to choose a more common one: easier to be accepted by distribution's legal teams #7

    Progress

    With all those who declared their interest in packaging VVVVVV in this thread. Please confirm you're willing to package it ;).

    • [ ] Flatpak: Through Flathub (?) and Athenaeum
    • [ ] Snap: ?

    • [x] Arch: Already available
    • [ ] Debian: ?
    • [ ] Fedora: Through official repo (need Legal review process) or RPM Fusion (@LyesSaadi)
    • [ ] Gentoo: (@lanodan ?)
    • [ ] NixOS: (@dkudriavtsev)
    • [ ] Ubuntu: ?

    Documentation

    • Requirements: (SDL2, SDL2_mixer / libsdl2, libsdl2-mixer)
    • BuildRequirements: gcc, make, cmake, (SDL2-devel, SDL2_mixer-devel / libsdl2-dev, libsdl2-mixer-dev)
    • Desktop and AppData entries [WIP]

    I also have to insist on the importance of the legal changes if you want VVVVVV to be packaged. ~~If the second of the optional changes (license) is not met, it would be a LOT harder to get it to land in official repos, maybe some unofficial ones.~~ And if the first (data.zip) is not met, packaging would be useless.

    But, hey, this is your (awesome) game and these are your choice. So, feel free to decide otherwise :).

    Also, I would be happy to be VVVVVV's Fedora Packager.

    opened by LyesSaadi 24
  • Don't lie to the player if a file failed to save

    Don't lie to the player if a file failed to save

    2.3 has already fixed the fact that the game doesn't produce an error message if a custom level fails to be saved (#266), but it turns out the game will basically never produce an error message if touching a teleporter fails to save your game, or if quicksaving (in custom level or not) fails to save your game, and so on. This is most noticeable if you playtest a level in Ved and quicksave, where the game will attempt to write the file saves/special/stdin.vvvvvv.vvv, and fails because the special/ folder doesn't exist. The fact that you're able to quicksave (among other things) during command-line playtesting is a separate bug, but the game will still say "Game saved ok!" even though it didn't.

    Furthermore, 2.2's unlock.vvv saving is iffy at best, leading to things like Super Gravitron high scores being lost because the player didn't specifically close the game by using the "quit game" option in the main menu.

    While 2.3's saving is more robust, it would be best if there was a notification saying unlock.vvv got saved properly whenever it gets written to, and if the game attempted to save the file but somehow failed, then it should say that, too.

    Maybe the notification should say "Your score has been saved" for Time Trials and the Super Gravitron, "Your unlock has been saved" whenever something new got unlocked, and "Your settings have been saved" whenever your settings have been saved, but the point is, the player should actually be confident that their progress got saved, the game shouldn't succeed or fail silently, and if it fails the game shouldn't be lying to the player.

    required for 2.3 
    opened by InfoTeddy 18
  • Compiling on Haiku

    Compiling on Haiku

    I've been trying to get the code compiling in Haiku shortly after the announcement dropped. I've added a few minor changes to some of the source files, which can be seen in this fork. This is being done in the latest Haiku x86_64, with libsdl2_devel and sdl2_mixer_devel installed along with their dependencies. I was eventually able to get everything to build, but linking fails with this:

    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: libphysfs-static.a(physfs.c.o): in function `calculateBaseDir':
    physfs.c:(.text+0x1efc): undefined reference to `__PHYSFS_platformCalcBaseDir'
    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: libphysfs-static.a(physfs.c.o): in function `PHYSFS_init':
    physfs.c:(.text+0x20dd): undefined reference to `__PHYSFS_platformInit'
    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: libphysfs-static.a(physfs.c.o): in function `doDeinit':
    physfs.c:(.text+0x273f): undefined reference to `__PHYSFS_platformDeinit'
    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: libphysfs-static.a(physfs.c.o): in function `PHYSFS_getCdRomDirs':
    physfs.c:(.text+0x2f3f): undefined reference to `__PHYSFS_platformDetectAvailableCDs'
    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: libphysfs-static.a(physfs.c.o): relocation R_X86_64_PC32 against undefined hidden symbol `__PHYSFS_platformDetectAvailableCDs' can not be used when making a shared object
    /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: final link failed: bad value
    collect2: error: ld returned 1 exit status
    CMakeFiles/VVVVVV.dir/build.make:551: recipe for target 'VVVVVV' failed
    make[2]: *** [VVVVVV] Error 1
    CMakeFiles/Makefile2:137: recipe for target 'CMakeFiles/VVVVVV.dir/all' failed
    make[1]: *** [CMakeFiles/VVVVVV.dir/all] Error 2
    Makefile:83: recipe for target 'all' failed
    make: *** [all] Error 2
    

    Is there a flag that needs to be passed or files to be changed? Asking since the PhysicsFS static library version in the repo does seem to have some Haiku support already: https://github.com/TerryCavanagh/VVVVVV/blob/master/third_party/physfs/physfs_platforms.h

    opened by win8linux 17
  • Trinket Overlay won't go away if warped to ship

    Trinket Overlay won't go away if warped to ship

    Interesting bug I encountered due to a misunderstanding on my part. Screencast from 2023-01-02 13-43-43.webm

    To reproduce this, get a trinket, go to the map menu, hit right, warp back to ship and try to hit the action button. I am on Ubuntu 22.04 using the latest version on Steam at the time of writing this

    bug 
    opened by NightScript370 2
  • Roomname additions

    Roomname additions

    Changes:

    Roomname animations ("glitchy" and "changing" ones, used in the final level) are very hardcoded. Roomnames are solely visual, and some fun could be had with making them look cool.

    Sample:

            <SpecialRoomnames>
                <static x="0" y="0" flag="2">This shows if flag 2 is on!</static>
                <glitch x="0" y="0" flag="1">
                    <text>On the Waterfront</text>
                    <text>On the Vaterfront</text>
                </glitch>
                <transform x="1" y="0" loop="0" flag="1">
                    <text>Television Newsveel</text>
                    <text>Television Newsvel</text>
                    <text>TelevisvonvNewsvel</text>
                    <text>TvlvvvsvonvNevsvel</text>
                    <text>vvvvvvsvovvNe svel</text>
                    <text>vhv vvv'vvovv vevl</text>
                    <text>vhv V v'Cvovv vewv</text>
                    <text>vhe 9 v'Cvovv vewv</text>
                    <text>vhe 9 v'Cvovv Newv</text>
                    <text>The 9 O'Cvovk Newv</text>
                    <text>The 9 O'Clock News</text>
                </transform>
            </SpecialRoomnames>
    

    Additionally, a setroomname command has been added, which sets the roomname temporarily to the next script line.

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    enhancement required for 2.4 
    opened by AllyTally 0
  • Supercrewmate interaction fixes

    Supercrewmate interaction fixes

    Changes:

    Supercrewmates now interact with gravity lines, gravity tokens and oneways correctly. They're now moved by horizontal moving platforms and conveyors.

    Closes #901.

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    enhancement required for 2.5 
    opened by AllyTally 0
  • Allow 26 textbox lines

    Allow 26 textbox lines

    Changes:

    For some reason, textboxes can only have 11 lines added before the line list gets cleared. This changes that behavior, allowing a total of 26 lines before ignoring extra lines added. 26 is the maximum amount of lines that the screen can display vertically without the textbox going off-screen. As far as I can tell, this is only visual, and doesn't affect any used glitches.

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    enhancement required for 2.4 
    opened by AllyTally 0
  • Custom minimap markers

    Custom minimap markers

    Changes:

    More visual changes. Allows the map legend to have custom markers. Requires #898.

    Level file sample XML:

    <Markers>
        <marker visited_id="1087" hidden_id="1126" name="core" />
        <room name="core" x="0" y="0"/>
        <room name="core" x="1" y="0"/>
        <room name="core" x="2" y="0"/>
    </Markers>
    

    The bare minimum a marker tag requires is a visited_id property and a name property. hidden_id defaults to visited_id if it's missing. There's also flip mode properties as well, since teleporters use different graphics in flip mode as well. These are saved and loaded to/from the save file as well.

    showmarker(name,visited) - Show name markers in visited rooms showmarker(name,hidden) - Show name markers in unvisited rooms showmarker(name,both) - Show name markers hidemarker exists as well, used in the same way.

    placemarker(name, x, y) - Places a marker at those coordinates removemarker(name, x, y) - Removes a marker at those coordinates

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    enhancement required for 2.4 
    opened by AllyTally 0
  • Custom textbox colors

    Custom textbox colors

    Changes:

    Textbox colors are also hardcoded, this loads them from XML, this is a visual change.

      <TextboxColours>
          <colour r="170" g="47" b="88" name="test"></colour>
      </TextboxColours>
    

    Legal Stuff:

    By submitting this pull request, I confirm that...

    • [x] My changes may be used in a future commercial release of VVVVVV
    • [x] I will be credited in a CONTRIBUTORS file and the "GitHub Friends" section of the credits for all of said releases, but will NOT be compensated for these changes
    enhancement required for 2.4 
    opened by AllyTally 0
Releases(2.3.6)
  • 2.3.6(Dec 22, 2021)

    Looks like a patch that was backported wasn't the whole patch... so one last thing before the holiday panic starts!

    • Fix a regression from the hardreset fix in 2.3.5
    • Add some error checking to the image loader
    Source code(tar.gz)
    Source code(zip)
  • 2.3.5(Dec 21, 2021)

    A batch of fixes while 2.4 work continues:

    • Fix achievements regarding total deaths in one playthrough
    • Fix winning in No Death Mode saying "One trinkets"
    • Fix a glitch where someone's name was rendered incorrectly in the credits
    • Removed a trailing space at the end of the "Press to Teleport" dialog
    • The Elephant is now stitched correctly
    • Fix a regression for destroy(platforms)
    • hardreset now resets ingame_titlemode
    • Fix in-game timer going away after playing Super Gravitron
    • Added centiseconds to timer overlays
    • Added outline support to text that previously didn't have it
    • Fix warp sprites of big sprites sometimes not being drawn
    Source code(tar.gz)
    Source code(zip)
  • 2.3.4(Sep 11, 2021)

    Another week, another batch of fixes. I'm expecting this to be the last one for a while!

    • Prevent users from opening the map on the first frame of a gamemode animation
    • Prevent corruption of game state after dying during a collection prompt
    • Fix unused map memory getting initialized to a weird value
    • deletestats now actually deletes all stats
    • A whole bunch of fixes for music playback
    Source code(tar.gz)
    Source code(zip)
  • 2.3.3(Sep 4, 2021)

    Some regression fixes for the weekend:

    • Updated the .ico, RIP the secret Flash logo
    • Fix a case where music fading out didn't happen when it was supposed to
    • Fix the menu key being permanently blocked after certain menu animations
    Source code(tar.gz)
    Source code(zip)
  • 2.3.2(Sep 3, 2021)

    Another minor update to address some more regressions, and also address a UI issue:

    • Add message when player is kicked out of Super Gravitron (invincibility/slowdown is enabled)
    • Prevent user-initiated map menu changes during menu animations, which could cause a softlock
    • Fix the teleporter mode render path during teleporter mode, preventing a possible softlock
    • Fix the transition to teleporter mode when already in teleporter mode
    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Sep 1, 2021)

    This is a minor update to address some issues found after launch:

    • VSync is now enabled by default when starting 2.3 for the first time
    • Fix not-Flip-Mode flag turning off when returning from options menu
    • Minor fixes for the official build systems
    Source code(tar.gz)
    Source code(zip)
  • 2.3(Aug 31, 2021)

  • 2.2(Jul 11, 2020)

Owner
Terry Cavanagh
Terry Cavanagh
Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem4CPM This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so eve

null 11 Aug 31, 2022
Source code for the article "Code vs Data Driven Displacement"

Code vs Data Driven Displacement This repo contains the source code for all the demos from this article. It uses raylib or more specifically raygui so

Daniel Holden 421 Dec 29, 2022
Phan Sang 17 Dec 29, 2022
Reverse engineered source code of the engineowning cheat for cod9 (tags, ignore. Fortnite cheat, engineowning, engineowning cracked, cheat cracked, cod cracked cheat, cod cheat source)

engineowning-cod9 Reverse engineered source code of the engineowning cheat for cod9 Cracked by CODEX notinjector = C:\Windows\Release\ .exe drSYS = C:

null 8 Oct 12, 2022
A simple processor emulator written in c++ that can parse and execute x32 code. x32 is binary code made by me for this processor.

A SIMPLE PROCESSOR EMULATOR AND CODE EXECUTOR The Repository This is a fairly new project and is still heavy in development. If you find and bugs feel

Luka Golob 4 Jan 20, 2022
This is a compilation of the code and images for all Arduino code in the Robotics 11 class.

Robotics 11 - Arduino This is a compilation of the code and images for all Arduino code in the Robotics 11 class. All code can be viewed in each proje

GuhBean 1 Oct 29, 2021
This is the source code of SATCH a SAT solver written from scratch in C.

The main purpose of this solver is to provide a simple and clean code base for explaining and experimenting with SAT solvers. It is simpler than the source code of CaDiCaL and of Kissat in particular, while still featuring most important implementation techniques needed to obtain a state-of-the-art SAT solver

Armin Biere 73 Dec 16, 2022
Official Vanguard Anti-Cheat source code.

Vanguard Official Vanguard Anti-Cheat source code. Using the compiled binary For ease, an unprotected compiled version of Vanguard is available. Downl

Riot Vanguard 435 Jan 5, 2023
Companion source code for "Programming with C++20 - Concepts, Coroutines, Ranges, and more"

Companion Source Code for "Programming with C++20 - Concepts, Coroutines, Ranges, and more" 1. Edition Code examples This repository contains runnable

Andreas Fertig 162 Dec 31, 2022
Rasdisys Open Source code for a LTE eNB on Qualcomm FSM9955

Downloaded on June 1st, 2021 from https://www.radisys.com/OpenRadisys-4G-RAN-Software which clearly stated that this code was licensed under GNU AGPLv

Harald Welte 19 Nov 26, 2022
Flutter-v2 Firebase Messaging, Foreground and Background Notifications + Topic Subscription and Broadcast Notifications Source code

Flutter Notification & FCM The repo is about flutter notification and FCM (Firebase Cloud Messaging). It is updated with Flutter v2 and new updates of

Amanullah 36 Nov 10, 2022
Some source code to demonstrate avoiding certain direct syscall detections by locating and JMPing to a legitimate syscall instruction within NTDLL.

hiding-your-syscalls What is this? This repository contains all of the source code from my blog post about avoiding direct syscall detections, which y

null 198 Dec 1, 2022
Open source release of challenges and other code used in the Hack-A-Sat 2 Qualifier in 2021.

Hack-a-Sat 2 Qualifier This repository contains the open source release for the Hack-a-Sat 2 qualifier from 2021. Released artifacts include: Source c

Cromulence 59 Sep 18, 2022
Despertar del Cementerio and M33 CFW source code

DC-M33 Despertar del Cementerio and M33 CFW source code This project is a continuation of the M33 Team's work with using modern technics and exploits.

Balázs Triszka 82 Nov 26, 2022
Source Code for 'Clean C++20' by Stephan Roth

Apress Source Code This repository accompanies Clean C++20 by Stephan Roth (Apress, 2021). Download the files as a zip using the green button, or clon

Apress 20 Dec 24, 2022
Fully reverse engineered source code of a pasted valorant spoofer called archine.

Archine Valorant Spoofer Fully reverse engineered source code of a pasted valorant spoofer called archine. Please do not buy archine spoofer, the owne

null 13 Feb 18, 2022
A Bouncing Seal Discord Bot's Source Code.

A Bouncing Seal It's a fun bot with leveling and funny bouncing seal videos. Information Invite Support Server How to run locally You need DPP, follow

SirObsidian 4 Sep 10, 2021
Historic source code for version 0.01 of the Linux kernel

Linux v0.01 Source Code (A historic repository of the first official release of the Linux Kernel) About This Repo This repo is a means of keeping and

Robert Menes 3 Jun 27, 2022
NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

Plummer's Software LLC 631 Dec 28, 2022