Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
LittlePlanetCD committed Aug 2, 2023
2 parents 87ec47f + 2acf349 commit 77ebed1
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 14 deletions.
10 changes: 8 additions & 2 deletions FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -20,16 +23,19 @@ 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.

### 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)?
Expand Down
66 changes: 54 additions & 12 deletions RSDKv4/Script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -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];
Expand Down

0 comments on commit 77ebed1

Please sign in to comment.