summaryrefslogtreecommitdiff
path: root/Data
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2020-09-06 03:23:16 -0400
committerGitHub <noreply@github.com>2020-09-06 03:23:16 -0400
commitaee69b03c5677ceea600cf88321bf762dd2aecfa (patch)
tree68d2beb8345eb941aa7fb818f67f2e32d298c54a /Data
parentdb067104ed42debf28e60f31c31131ae2a7c8441 (diff)
parent49e6478817f17431612ab6246256fa83a1997d6f (diff)
Merge pull request #9007 from AdmiralCurtiss/orre-save-patches
GameSettings: Add patches for Pokémon Colosseum and Pokémon XD to circumvent the check that the save being overwritten matches the last known save.
Diffstat (limited to 'Data')
-rw-r--r--Data/Sys/GameSettings/GC6E01.ini27
-rw-r--r--Data/Sys/GameSettings/GC6J01.ini27
-rw-r--r--Data/Sys/GameSettings/GC6P01.ini27
-rw-r--r--Data/Sys/GameSettings/GXXE01.ini7
-rw-r--r--Data/Sys/GameSettings/GXXJ01.ini7
-rw-r--r--Data/Sys/GameSettings/GXXP01.ini7
6 files changed, 102 insertions, 0 deletions
diff --git a/Data/Sys/GameSettings/GC6E01.ini b/Data/Sys/GameSettings/GC6E01.ini
new file mode 100644
index 0000000000..7fa89bcfad
--- /dev/null
+++ b/Data/Sys/GameSettings/GC6E01.ini
@@ -0,0 +1,27 @@
+# GC6E01 - Pokémon Colosseum
+
+[OnFrame]
+# This game has extra memory card checks compared to most games,
+# presumably to prevent Pokémon duping. These can interfere with
+# saving your game when using savestates.
+#
+# 0x801cfc2c:
+# Originally a branch that checks if the save counter in memory
+# matches the one on the memory card. We patch this to instead
+# overwrite the counter in memory with the one from the memory
+# card. We need to do this because each memory card file actually
+# contains three save slots the game rotates when saving, and
+# when loading it loads the save with the biggest save counter.
+# So we need to make sure the newly written save (which uses
+# the value from memory + 1) is higher than any save currently
+# on the card.
+#
+# 0x801cfc7c:
+# Another branch. Not entirely sure what this one checks, but
+# not patching this one sometimes still makes it recognize the
+# memory card as 'not the same Memory Card as the one used to
+# load the saved data', so nop it out.
+#
+$Allow Memory Card saving with Savestates
+0x801cfc2c:dword:0x9005002c
+0x801cfc7c:dword:0x60000000
diff --git a/Data/Sys/GameSettings/GC6J01.ini b/Data/Sys/GameSettings/GC6J01.ini
new file mode 100644
index 0000000000..5368a547a0
--- /dev/null
+++ b/Data/Sys/GameSettings/GC6J01.ini
@@ -0,0 +1,27 @@
+# GC6J01 - ポケモンコロシアム
+
+[OnFrame]
+# This game has extra memory card checks compared to most games,
+# presumably to prevent Pokémon duping. These can interfere with
+# saving your game when using savestates.
+#
+# 0x801cb5b8:
+# Originally a branch that checks if the save counter in memory
+# matches the one on the memory card. We patch this to instead
+# overwrite the counter in memory with the one from the memory
+# card. We need to do this because each memory card file actually
+# contains three save slots the game rotates when saving, and
+# when loading it loads the save with the biggest save counter.
+# So we need to make sure the newly written save (which uses
+# the value from memory + 1) is higher than any save currently
+# on the card.
+#
+# 0x801cb608:
+# Another branch. Not entirely sure what this one checks, but
+# not patching this one sometimes still makes it recognize the
+# memory card as 'not the same Memory Card as the one used to
+# load the saved data', so nop it out.
+#
+$Allow Memory Card saving with Savestates
+0x801cb5b8:dword:0x9005002c
+0x801cb608:dword:0x60000000
diff --git a/Data/Sys/GameSettings/GC6P01.ini b/Data/Sys/GameSettings/GC6P01.ini
new file mode 100644
index 0000000000..cfc8c6cbe0
--- /dev/null
+++ b/Data/Sys/GameSettings/GC6P01.ini
@@ -0,0 +1,27 @@
+# GC6P01 - Pokémon Colosseum
+
+[OnFrame]
+# This game has extra memory card checks compared to most games,
+# presumably to prevent Pokémon duping. These can interfere with
+# saving your game when using savestates.
+#
+# 0x801d429c:
+# Originally a branch that checks if the save counter in memory
+# matches the one on the memory card. We patch this to instead
+# overwrite the counter in memory with the one from the memory
+# card. We need to do this because each memory card file actually
+# contains three save slots the game rotates when saving, and
+# when loading it loads the save with the biggest save counter.
+# So we need to make sure the newly written save (which uses
+# the value from memory + 1) is higher than any save currently
+# on the card.
+#
+# 0x801d42ec:
+# Another branch. Not entirely sure what this one checks, but
+# not patching this one sometimes still makes it recognize the
+# memory card as 'not the same Memory Card as the one used to
+# load the saved data', so nop it out.
+#
+$Allow Memory Card saving with Savestates
+0x801d429c:dword:0x9005002c
+0x801d42ec:dword:0x60000000
diff --git a/Data/Sys/GameSettings/GXXE01.ini b/Data/Sys/GameSettings/GXXE01.ini
new file mode 100644
index 0000000000..fa16f3d897
--- /dev/null
+++ b/Data/Sys/GameSettings/GXXE01.ini
@@ -0,0 +1,7 @@
+# GXXE01 - Pokémon XD: Gale of Darkness
+
+[OnFrame]
+# Very similar to Pokémon Colosseum's save check, see those files for details.
+$Allow Memory Card saving with Savestates
+0x801cc304:dword:0x90e5002c
+0x801cc4b0:dword:0x60000000
diff --git a/Data/Sys/GameSettings/GXXJ01.ini b/Data/Sys/GameSettings/GXXJ01.ini
new file mode 100644
index 0000000000..a03a774a0d
--- /dev/null
+++ b/Data/Sys/GameSettings/GXXJ01.ini
@@ -0,0 +1,7 @@
+# GXXJ01 - ポケモンXD 闇の旋風ダーク・ルギア
+
+[OnFrame]
+# Very similar to Pokémon Colosseum's save check, see those files for details.
+$Allow Memory Card saving with Savestates
+0x801c7984:dword:0x90e5002c
+0x801c7b30:dword:0x60000000
diff --git a/Data/Sys/GameSettings/GXXP01.ini b/Data/Sys/GameSettings/GXXP01.ini
new file mode 100644
index 0000000000..837c59c3e4
--- /dev/null
+++ b/Data/Sys/GameSettings/GXXP01.ini
@@ -0,0 +1,7 @@
+# GXXP01 - Pokémon XD: Gale of Darkness
+
+[OnFrame]
+# Very similar to Pokémon Colosseum's save check, see those files for details.
+$Allow Memory Card saving with Savestates
+0x801cd764:dword:0x90e5002c
+0x801cd910:dword:0x60000000