From 916c6b6abddf3bb79591966e871f8612427ba78a Mon Sep 17 00:00:00 2001 From: MegAmi Date: Sun, 30 Jul 2023 13:35:06 -0500 Subject: [PATCH 1/2] hi person with nothing better to do than reading these commit names! --- FAQ.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/FAQ.md b/FAQ.md index 28ff553..fe96f2c 100644 --- a/FAQ.md +++ b/FAQ.md @@ -5,6 +5,9 @@ A: You can find a tutorial for setting up both the game and mods [here](https:// ### Q: The screen is tearing, how do I fix it? A: Try turning on VSync in settings.ini. +### Q: I'm on Windows and experiencing issues such as mods not appearing in the mod menu, what's wrong? +A: A likely reason for this is that you put the decomp in a directory that's managed by OneDrive (Desktop, Downloads, etc). These directories are known to cause issues, so move your decomp installation elsewhere, such as the root of the C drive or another drive. + ### Q: I found a bug! A: Submit an issue in the issues tab and we _might_ fix it in the main branch. Don't expect any major future releases, however. @@ -20,7 +23,7 @@ A: This is due to a change made in recent Sega Forever versions of the games. Us A: The RSDK files from Sonic Origins are encrypted in the RSDKv5 datapack format, not the RSDKv4 format. Repacking the files in the correct format or using Data Folder Mode will fix the issue. ### Q: Why is there no audio? -A: Sonic Origins doesn't have any music or sound effects contained in the games' data files, instead storing and handling all in-game audio itself through Hedgehog Engine 2. You can fix this by simply inserting the audio files from the mobile versions of the games. +A: Sonic Origins doesn't have any music or sound effects contained in the games' data files, instead storing and handling all in-game audio itself through Hedgehog Engine 2. You can fix this by simply inserting the audio files from the mobile versions of the games. Sound effects added in Origins will have to be inserted manually. ### Q: The game crashes when trying to load the main menu or pause screen, what's wrong? A: Similar to above, Origins removes some of the assets for the original mobile versions' menus. Also similar to above, the fix is to insert those files from the mobile versions. @@ -28,8 +31,11 @@ A: Similar to above, Origins removes some of the assets for the original mobile ### Q: Why is the Drop Dash disabled by default? How do I turn it on? A: By default, the game mode is set to Classic Mode, which disables the Drop Dash. The only way to change this is through a mod, either by changing the default value of the `game.playMode` global variable in `GameConfig.bin` or by setting the variable to another value via scripts. +### Q: How do I play as Amy? +A: Sonic Team implemented Amy in a way where she isn't playable on the decomp out of the box. This can be fixed via mods. **Do not ask about this in an issue, as we will not be able to help you.** + ### Q: Why doesn't local 2P VS work in Sonic 2? -A: In the version of the Retro Engine that Origins uses, RSDKv5U, certain features that local multiplayer uses, such as splitscreen and multiple controller support, rely on tech found in RSDKv5. This is a decompilation of standalone RSDKv4, and recreating this tech is outside of the scope of the project. +A: In the version of the Retro Engine that Origins uses (RSDKv5U), certain features that local multiplayer uses, such as splitscreen and multiple controller support, rely on tech found in RSDKv5. This is a decompilation of standalone RSDKv4, and recreating this tech is outside of the scope of the project. # Miscellaneous ### Q: Will you do a decompilation for Sonic CD (2011)? From 2acf349baa26b54de951b0baadb4efa4887a51c6 Mon Sep 17 00:00:00 2001 From: MegAmi Date: Wed, 2 Aug 2023 17:34:05 -0500 Subject: [PATCH 2/2] the fog is coming. run --- RSDKv4/Script.cpp | 66 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/RSDKv4/Script.cpp b/RSDKv4/Script.cpp index 270de4d..3d6e847 100644 --- a/RSDKv4/Script.cpp +++ b/RSDKv4/Script.cpp @@ -1092,8 +1092,15 @@ void CheckAliasText(char *text) { if (FindStringToken(text, "publicalias", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount]; @@ -1136,8 +1143,15 @@ void CheckAliasText(char *text) } else if (FindStringToken(text, "privatealias", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount]; @@ -1183,8 +1197,15 @@ void CheckStaticText(char *text) { if (FindStringToken(text, "publicvalue", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount]; @@ -1235,8 +1256,15 @@ void CheckStaticText(char *text) } else if (FindStringToken(text, "privatevalue", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount]; @@ -1292,8 +1320,15 @@ bool CheckTableText(char *text) if (FindStringToken(text, "publictable", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return false; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount]; @@ -1361,8 +1396,15 @@ bool CheckTableText(char *text) } else if (FindStringToken(text, "privatetable", 1) == 0) { #if !RETRO_USE_ORIGINAL_CODE - if (scriptValueListCount >= SCRIPT_VAR_COUNT) - PrintLog("WARNING: SCRIPT VALUE COUNT ABOVE MAXIMUM"); + if (scriptValueListCount >= SCRIPT_VAR_COUNT) { + SetupTextMenu(&gameMenu[0], 0); + AddTextMenuEntry(&gameMenu[0], "SCRIPT PARSING FAILED"); + AddTextMenuEntry(&gameMenu[0], " "); + AddTextMenuEntry(&gameMenu[0], "TOO MANY ALIASES, STATIC"); + AddTextMenuEntry(&gameMenu[0], "VALUES, AND TABLES"); + Engine.gameMode = ENGINE_SCRIPTERROR; + return false; + } #endif ScriptVariableInfo *variable = &scriptValueList[scriptValueListCount];