From 49e6478817f17431612ab6246256fa83a1997d6f Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Wed, 5 Aug 2020 01:23:26 +0200 Subject: [PATCH] =?UTF-8?q?GameSettings:=20Add=20patches=20for=20Pok=C3=A9?= =?UTF-8?q?mon=20Colosseum=20and=20Pok=C3=A9mon=20XD=20to=20circumvent=20t?= =?UTF-8?q?he=20check=20that=20the=20save=20being=20overwritten=20matches?= =?UTF-8?q?=20the=20last=20known=20save.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Data/Sys/GameSettings/GC6E01.ini | 27 +++++++++++++++++++++++++++ Data/Sys/GameSettings/GC6J01.ini | 27 +++++++++++++++++++++++++++ Data/Sys/GameSettings/GC6P01.ini | 27 +++++++++++++++++++++++++++ Data/Sys/GameSettings/GXXE01.ini | 7 +++++++ Data/Sys/GameSettings/GXXJ01.ini | 7 +++++++ Data/Sys/GameSettings/GXXP01.ini | 7 +++++++ 6 files changed, 102 insertions(+) create mode 100644 Data/Sys/GameSettings/GC6E01.ini create mode 100644 Data/Sys/GameSettings/GC6J01.ini create mode 100644 Data/Sys/GameSettings/GC6P01.ini create mode 100644 Data/Sys/GameSettings/GXXE01.ini create mode 100644 Data/Sys/GameSettings/GXXJ01.ini create mode 100644 Data/Sys/GameSettings/GXXP01.ini 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