Compare commits

...

2 Commits

Author SHA1 Message Date
DeaTh-G 12f2e6a42a implement fix for potential window size crash 2026-02-03 17:53:29 +01:00
Hyper 5e8695a157 Fix Werehog rotating into walls when leaving them at HFR (#1570) 2026-02-01 14:09:38 +03:00
3 changed files with 28 additions and 3 deletions
+8
View File
@@ -195,3 +195,11 @@ bool SparkleLocusMidAsmHook()
// This has the side effect of the locus particle eventually snapping to the rest position during pause, but it's better than vertices exploding. // This has the side effect of the locus particle eventually snapping to the rest position during pause, but it's better than vertices exploding.
return App::s_deltaTime < (1.0 / 60.0); return App::s_deltaTime < (1.0 / 60.0);
} }
void CEvilSonicContext_CStateWall_LeaveRotationMidAsmHook(PPCRegister& f1)
{
// The code in the Werehog's "wall" state for leaving walls adds a constant
// value of 0.05 to his transform every frame. This makes the value respect
// delta time whilst maintaining the original behaviour at 30 FPS.
f1.f64 = f1.f64 * (std::min(App::s_deltaTime, 1.0 / 15.0) / (1.0 / 30.0));
}
+8 -3
View File
@@ -1255,9 +1255,14 @@ static void DrawConfigOptions()
case 3: // VIDEO case 3: // VIDEO
{ {
DrawConfigOption(rowCount++, yOffset, &Config::WindowSize, auto displayModeCount = (int32_t)GameWindow::GetDisplayModes().size();
!Config::Fullscreen, &Localise("Options_Desc_NotAvailableFullscreen"), auto canChangeWindowSize = !Config::Fullscreen && displayModeCount > 1;
0, 0, (int32_t)GameWindow::GetDisplayModes().size() - 1, false); auto windowSizeReason = &Localise("Options_Desc_NotAvailableFullscreen");
if (!Config::Fullscreen && displayModeCount <= 1)
windowSizeReason = &Localise("Options_Desc_NotAvailableHardware");
DrawConfigOption(rowCount++, yOffset, &Config::WindowSize, canChangeWindowSize, windowSizeReason, 0, 0, displayModeCount - 1, false);
auto displayCount = GameWindow::GetDisplayCount(); auto displayCount = GameWindow::GetDisplayCount();
auto canChangeMonitor = Config::Fullscreen && displayCount > 1; auto canChangeMonitor = Config::Fullscreen && displayCount > 1;
+12
View File
@@ -1141,3 +1141,15 @@ registers = ["r3"]
name = "EndingTextPositionMidAsmHook" name = "EndingTextPositionMidAsmHook"
address = 0x82580168 address = 0x82580168
registers = ["r31", "f13"] registers = ["r31", "f13"]
# Wall Leave - Left
[[midasm_hook]]
name = "CEvilSonicContext_CStateWall_LeaveRotationMidAsmHook"
address = 0x824067BC
registers = ["f1"]
# Wall Leave - Right
[[midasm_hook]]
name = "CEvilSonicContext_CStateWall_LeaveRotationMidAsmHook"
address = 0x82406774
registers = ["f1"]