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