From ecf092d7f8e9f423c8099da0df3f6fc56bd4650e Mon Sep 17 00:00:00 2001 From: JMC47 Date: Tue, 3 Aug 2021 16:09:53 -0400 Subject: [PATCH] GameINI: Add Gladius Patch to Other Regions Only the NTSC version of Gladius got a patch with smurf3tte's reverse engineering work. Since most of the work was done, I ported over the fix to the PAL, French, and German releases. Leoetlino helped figure out a consistent way to find the correct address. --- Data/Sys/GameSettings/GLSD64.ini | 20 ++++++++++++++++++++ Data/Sys/GameSettings/GLSF64.ini | 20 ++++++++++++++++++++ Data/Sys/GameSettings/GLSP64.ini | 20 ++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 Data/Sys/GameSettings/GLSD64.ini create mode 100644 Data/Sys/GameSettings/GLSF64.ini create mode 100644 Data/Sys/GameSettings/GLSP64.ini diff --git a/Data/Sys/GameSettings/GLSD64.ini b/Data/Sys/GameSettings/GLSD64.ini new file mode 100644 index 0000000000..83fcec325f --- /dev/null +++ b/Data/Sys/GameSettings/GLSD64.ini @@ -0,0 +1,20 @@ +# GLSD64 - Gladius + +[OnFrame] +# This game can deadlock the CPU and GPU by setting FIFO breakpoints too +# infrequently, provided the CPU gets too far ahead, as can happen under Dolphin +# due to timing inaccuracies. The game never clears breakpoints, and it will +# skip setting them if the previous one has not been hit by the GPU. If the CPU +# gets far enough ahead it will reach the FIFO high water mark and trigger an +# overflow interrupt, causing the render thread to be suspended. The GPU will +# make forward progress until it hits the last set breakpoint. However, if the +# distance between that breakpoint and the FIFO write pointer is greater than +# the low water mark, then the GPU will never generate an underflow interrupt +# and the render thread will never be resumed. This patch forces the game to +# update the breakpoint unconditionally and has been tested on real hardware +# with no apparent ill effect. +$Fix freeze in opening cutscene +0x8010A2EC:dword:0x60000000 + +[OnFrame_Enabled] +$Fix freeze in opening cutscene diff --git a/Data/Sys/GameSettings/GLSF64.ini b/Data/Sys/GameSettings/GLSF64.ini new file mode 100644 index 0000000000..a29a7cc587 --- /dev/null +++ b/Data/Sys/GameSettings/GLSF64.ini @@ -0,0 +1,20 @@ +# GLSF64 - Gladius + +[OnFrame] +# This game can deadlock the CPU and GPU by setting FIFO breakpoints too +# infrequently, provided the CPU gets too far ahead, as can happen under Dolphin +# due to timing inaccuracies. The game never clears breakpoints, and it will +# skip setting them if the previous one has not been hit by the GPU. If the CPU +# gets far enough ahead it will reach the FIFO high water mark and trigger an +# overflow interrupt, causing the render thread to be suspended. The GPU will +# make forward progress until it hits the last set breakpoint. However, if the +# distance between that breakpoint and the FIFO write pointer is greater than +# the low water mark, then the GPU will never generate an underflow interrupt +# and the render thread will never be resumed. This patch forces the game to +# update the breakpoint unconditionally and has been tested on real hardware +# with no apparent ill effect. +$Fix freeze in opening cutscene +0x8010A388:dword:0x60000000 + +[OnFrame_Enabled] +$Fix freeze in opening cutscene diff --git a/Data/Sys/GameSettings/GLSP64.ini b/Data/Sys/GameSettings/GLSP64.ini new file mode 100644 index 0000000000..251eccc4e5 --- /dev/null +++ b/Data/Sys/GameSettings/GLSP64.ini @@ -0,0 +1,20 @@ +# GLSP64 - Gladius + +[OnFrame] +# This game can deadlock the CPU and GPU by setting FIFO breakpoints too +# infrequently, provided the CPU gets too far ahead, as can happen under Dolphin +# due to timing inaccuracies. The game never clears breakpoints, and it will +# skip setting them if the previous one has not been hit by the GPU. If the CPU +# gets far enough ahead it will reach the FIFO high water mark and trigger an +# overflow interrupt, causing the render thread to be suspended. The GPU will +# make forward progress until it hits the last set breakpoint. However, if the +# distance between that breakpoint and the FIFO write pointer is greater than +# the low water mark, then the GPU will never generate an underflow interrupt +# and the render thread will never be resumed. This patch forces the game to +# update the breakpoint unconditionally and has been tested on real hardware +# with no apparent ill effect. +$Fix freeze in opening cutscene +0x8010A0F4:dword:0x60000000 + +[OnFrame_Enabled] +$Fix freeze in opening cutscene