1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-26 06:28:30 +02:00
VVVVVV/desktop_version/src
Misa dea77e98fa Defer hardreset to end of frame in quittomenu
This fixes a bug where the wrong music can play on the title screen, as
reported by AllyTally on Discord.

The bug can be triggered by triggering a room transition right as
game.quittomenu() is called (which is easiest to achieve by placing the
player on an oscillating/"out of bounds" room border in a custom level
so they go back and forth between two rooms every frame, and triggering
gamestate 1013, which starts a fadeout to menu if all custom crewmates
are rescued).

When this happens, game.quittomenu() calls script.hardreset(), but the
rest of the frame still executes, even though we set game.gamestate to
TITLEMODE too (because game.quittomenu() was called by
game.updatestate() which was called by gamelogic(), and game.gamestate
is only checked at the start of the frame). This ends up triggering a
room transition, and since map.custommode is guaranteed to now be off
(because of script.hardreset()), the main game music area code kicks in,
and plays something that isn't Presenting VVVVVV.

The bug here is that we're resetting too early when we still have the
rest of an in-game frame to execute. So, instead, we should only reset
at the end of the frame, and this can be achieved with a defer callback.
2023-05-18 19:11:04 -07:00
..
ActionSets.h Add controller button layout mappings 2023-03-21 19:59:48 -07:00
Alloc.h Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
BinaryBlob.cpp Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
BinaryBlob.h Use fixed-size int types for resourceheader 2021-09-23 22:21:49 -07:00
BlockV.cpp Remove hardcoded textbox colours 2023-03-29 13:48:44 -07:00
BlockV.h Remove x-position from setactivityposition 2023-02-17 20:47:32 -08:00
ButtonGlyphs.cpp Show correct button glyph for interact if Enter/E are not split 2023-03-26 17:56:10 -07:00
ButtonGlyphs.h Switch between controller glyphs and keyboard keys automatically 2023-03-21 19:59:48 -07:00
Constants.h Fix SCREEN_HEIGHT_PIXELS being wrong constant 2021-10-01 09:35:28 -07:00
Credits.h Add Jules de Sartiges to Credits.h 2023-02-21 12:28:57 -08:00
CustomLevels.cpp Use setLevelDirError for level not found & parse errors 2023-05-17 10:09:59 -07:00
CustomLevels.h Separate CustomEntity global positions internally 2023-03-29 13:49:08 -07:00
CWrappers.cpp Use loc::toupper_ch instead of SDL_toupper in VFormat 2022-12-31 20:04:56 -08:00
CWrappers.h Use loc::toupper_ch instead of SDL_toupper in VFormat 2022-12-31 20:04:56 -08:00
DeferCallbacks.c Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
DeferCallbacks.h Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
Editor.cpp Fix regression: Editing script disables mute buttons 2023-05-15 18:25:43 -07:00
Editor.h Add fill bucket subtool 2023-04-02 23:48:09 -07:00
Ent.cpp Disable more flashing elements if a11y is on 2023-04-05 20:02:29 -07:00
Ent.h Use SDL_Color for colors instead of colourTransform 2023-01-01 16:36:43 -08:00
Entity.cpp Disable more flashing elements if a11y is on 2023-04-05 20:02:29 -07:00
Entity.h Remove x-position from setactivityposition 2023-02-17 20:47:32 -08:00
Enums.h Remove unused game-gamestates 2021-12-18 00:01:32 -08:00
Exit.h Use SDL_NORETURN 2021-09-27 10:32:23 -07:00
FileSystemUtils.cpp Use setLevelDirError for level not found & parse errors 2023-05-17 10:09:59 -07:00
FileSystemUtils.h Use setLevelDirError for level not found & parse errors 2023-05-17 10:09:59 -07:00
Finalclass.cpp Strip out old special roomname system 2023-03-02 22:58:12 -08:00
Finalclass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
Font.cpp Use levelDirError for graphics errors too 2023-05-17 17:11:26 -07:00
Font.h Change font::len text argument from std::string to const char* 2023-03-04 16:10:17 -08:00
Game.cpp Defer hardreset to end of frame in quittomenu 2023-05-18 19:11:04 -07:00
Game.h Fix regression with controller binds on first launch 2023-04-15 11:20:48 -07:00
GlitchrunnerMode.c Split glitchrunner mode into multiple versions 2021-08-05 13:35:21 -04:00
GlitchrunnerMode.h Split glitchrunner mode into multiple versions 2021-08-05 13:35:21 -04:00
GOGNetwork.c Axe NETWORK_[set/get]AchievementProgress() 2021-09-19 21:49:54 -07:00
Graphics.cpp Use levelDirError for graphics errors too 2023-05-17 17:11:26 -07:00
Graphics.h Use levelDirError for graphics errors too 2023-05-17 17:11:26 -07:00
GraphicsResources.cpp Whiten texture only after loading surface 2023-03-30 19:54:46 -07:00
GraphicsResources.h Start rewrite of font system 2023-02-13 23:27:00 -08:00
GraphicsUtil.cpp Fix analogue filter allocating/freeing surfaces every frame 2023-03-04 14:02:47 -08:00
GraphicsUtil.h Fix analogue filter allocating/freeing surfaces every frame 2023-03-04 14:02:47 -08:00
Input.cpp Fix rebinding "menu" (esc) bindings to different actions 2023-04-15 10:58:57 -07:00
Input.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
InterimVersion.h Use PR_RIGHT for interim version info in main menu 2023-02-13 23:27:00 -08:00
InterimVersion.in.c Use PR_RIGHT for interim version info in main menu 2023-02-13 23:27:00 -08:00
KeyPoll.cpp Switch between controller glyphs and keyboard keys automatically 2023-03-21 19:59:48 -07:00
KeyPoll.h Add localization "foundation" (many code changes) 2022-12-31 20:04:56 -08:00
Labclass.cpp Add level exploring menu for translators 2022-12-31 20:04:56 -08:00
Labclass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
Localization.cpp Remove key casts from hashmap function calls 2023-03-05 13:21:43 -08:00
Localization.h Add button glyphs support to selection hint on language screen 2023-03-26 17:54:47 -07:00
LocalizationMaint.cpp Add button glyphs support to selection hint on language screen 2023-03-26 17:54:47 -07:00
LocalizationMaint.h Add cutscene test menu 2022-12-31 20:04:56 -08:00
LocalizationStorage.cpp Add button glyphs support to selection hint on language screen 2023-03-26 17:54:47 -07:00
LocalizationStorage.h Write max_local to language files during sync 2023-02-13 23:27:00 -08:00
lodepng_wrapper.c Migrate LodePNG to submodule 2022-03-13 23:50:37 -07:00
Logic.cpp Remove x-position from setactivityposition 2023-02-17 20:47:32 -08:00
Logic.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
main.cpp Use levelDirError for graphics errors too 2023-05-17 17:11:26 -07:00
MakeAndPlay.h Use multiline comments in C files 2021-04-17 00:50:04 -04:00
Map.cpp Separate CustomEntity global positions internally 2023-03-29 13:49:08 -07:00
Map.h Strip out old special roomname system 2023-03-02 22:58:12 -08:00
Maths.h Use SDL_Point instead of rolling our own point struct 2023-01-28 23:32:14 -08:00
Music.cpp Fix regression with music fade transitions not working 2023-04-05 19:32:42 -07:00
Music.h Fix regression with music fade transitions not working 2023-04-05 19:32:42 -07:00
Network.c Axe NETWORK_[set/get]AchievementProgress() 2021-09-19 21:49:54 -07:00
Network.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Otherlevel.cpp Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
Otherlevel.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
preloader.cpp Migrate more prints and graphics.len calls to font:: 2023-02-13 23:27:00 -08:00
preloader.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
ReleaseVersion.h De-duplicate release version 2022-08-23 00:00:39 -07:00
Render.cpp Use levelDirError for graphics errors too 2023-05-17 17:11:26 -07:00
Render.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
RenderFixed.cpp Clean up scripts in the editor 2023-03-21 15:41:49 -07:00
RenderFixed.h Remove now-unneeded deltaframe fix when going to in-game settings 2021-03-21 02:55:42 -04:00
RoomnameTranslator.cpp Unhardcode textbox colors in textbox arguments 2023-03-29 13:48:44 -07:00
RoomnameTranslator.h Migrate more prints to font::, determine font for most textboxes 2023-02-13 23:27:00 -08:00
Screen.cpp Store display index of window to settings 2023-03-21 00:23:42 -07:00
Screen.h Store display index of window to settings 2023-03-21 00:23:42 -07:00
ScreenSettings.h Store display index of window to settings 2023-03-21 00:23:42 -07:00
Script.cpp Set custommode and custommodeforreal before loading level 2023-05-17 12:12:36 -07:00
Script.h Add textboxtimer command 2023-05-08 12:49:05 -07:00
Scripts.cpp Add textbuttons() script command, make Violet's ENTER dialogue dynamic 2023-03-21 19:59:48 -07:00
Spacestation2.cpp Add level exploring menu for translators 2022-12-31 20:04:56 -08:00
Spacestation2.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
SteamNetwork.c Silence GCC warnings about void*-to-function-pointer casts 2021-10-21 01:00:06 -07:00
TerminalScripts.cpp Add textcase(n) commands to scripts 2022-12-31 20:04:56 -08:00
Textbook.c Replace all localization SDL_free with VVV_free 2022-12-31 20:04:56 -08:00
Textbook.h Add Textbook 2022-12-31 20:04:56 -08:00
Textbox.cpp Add textbuttons() script command, make Violet's ENTER dialogue dynamic 2023-03-21 19:59:48 -07:00
Textbox.h Add textbuttons() script command, make Violet's ENTER dialogue dynamic 2023-03-21 19:59:48 -07:00
ThirdPartyDeps.c Replace all free calls with VVV_free[func] 2022-11-30 22:50:08 -08:00
Tower.cpp Add POS_MOD macro and use for all positive modulos 2021-09-24 17:48:15 -07:00
Tower.h Remove vmult lookup tables 2021-09-24 16:37:27 -07:00
TowerBG.h Move from surfaces to the SDL render system 2023-01-28 14:36:28 -08:00
Unreachable.h Use _SDL_HAS_BUILTIN 2022-12-29 16:13:54 -08:00
Unused.h Factor out UNUSED macro to header file 2021-05-25 15:23:34 -04:00
UTF8.c Add UTF8.c 2023-02-27 23:00:41 -08:00
UTF8.h Add UTF8.c 2023-02-27 23:00:41 -08:00
UtilityClass.cpp Add controller button layout mappings 2023-03-21 19:59:48 -07:00
UtilityClass.h Add controller button layout mappings 2023-03-21 19:59:48 -07:00
VFormat.c Add controller button layout mappings 2023-03-21 19:59:48 -07:00
VFormat.h Add support for button glyph display 2023-03-21 19:59:48 -07:00
Vlogging.c Add color support to Windows console output, properly 2022-11-14 21:57:01 -08:00
Vlogging.h Add -console option on Windows 2022-11-14 19:40:23 -08:00
WarpClass.cpp Add level exploring menu for translators 2022-12-31 20:04:56 -08:00
WarpClass.h Indicate what special roomnames are in the levels 2022-12-31 20:04:56 -08:00
XMLUtils.cpp Move all settings to settings.vvv 2020-11-04 12:06:57 -05:00
XMLUtils.h Add localization "foundation" (many code changes) 2022-12-31 20:04:56 -08:00
Xoshiro.c Move xoshiro_seed debug print to top 2022-11-14 13:14:25 -08:00
Xoshiro.h Replace Gravitron RNG with seeded Xoshiro 2021-08-27 12:28:35 -07:00