GrahfAzura

Ryujinx and Yuzu Save Game Transfer Script

Oct 3rd, 2021 (edited)
7,068
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 14.65 KB | None | 0 0
  1. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. :: Switch Save Game Transfer Script                                           ::
  3. ::     For Ryujinx and Yuzu Switch Emulators                                  ::
  4. ::         by Grahf Azura                                                     ::
  5. ::             Version 1.0                                                    ::
  6. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. ::                                                                            ::
  8. :: This script will allow you to easily transfer your game save files between ::
  9. :: Ryujinx and Yuzu Switch emulators. Just run the script, select the game,   ::
  10. :: and then select which emulator to copy from (Ryujinx to Yuzu or Yuzu to    ::
  11. :: Ryujinx).                                                                  ::
  12. ::                                                                            ::
  13. :: How To Setup:                                                              ::
  14. :: 1. Replace the text between the {brackets} and remove the {brackets}.      ::
  15. ::    For example, {xx} could be 04, 0b, or 13.                               ::
  16. :: 2. Add new games by copying one already added and update the title and     ::
  17. ::    Ryujinx/Yuzu save directory folders.                                    ::
  18. :: 3. Run the script and and make your game save transfer selections.         ::
  19. ::                                                                            ::
  20. :: Notes:                                                                     ::
  21. :: Only one backup will be made per game save transfer and running the script ::
  22. :: 2+ times with the same game, in the same direction will also overwrite the ::
  23. :: backup. So please make proper backups before using this script. I won't be ::
  24. :: held responsible for you accidently overwriting your newer game save files ::
  25. :: with older game save files.                                                ::
  26. ::                                                                            ::
  27. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  28.  
  29.  
  30. MODE CON COLS=128 LINES=1000
  31. @ECHO OFF
  32. setlocal EnableExtensions EnableDelayedExpansion
  33.  
  34.  
  35. :: Backup game saves before overwriting
  36. set create_backup_before_overwriting=True
  37.  
  38. :: When backing up game save folders they will be renamed with this at the end.
  39. set backup_extention=__backup
  40.  
  41. :: Ryujinx Save File Directory
  42. set ryujinx_save_file_directory=%APPDATA%\Ryujinx\bis\user\save
  43.  
  44. :: Yuzu Save File Directory (Get ID from the folder and not the app as it's reversed)
  45. set yuzu_save_file_directory=%APPDATA%\yuzu\nand\user\save\0000000000000000\{your yuzu user id}
  46.  
  47.  
  48. :: Array Of Game Save Directory Paths
  49. set /a i=1
  50. set switch_save_directories[0].title=Transfer All Game Saves [Backup Your Save Files First]
  51. :: Astral Chain
  52. set switch_save_directories[!i!].title=Astral Chain
  53. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  54. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01007300020FA000
  55. call :AddAboveGame
  56. :: Bayonetta
  57. set switch_save_directories[!i!].title=Bayonetta
  58. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  59. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010076F0049A2000
  60. call :AddAboveGame
  61. :: Bayonetta 2
  62. set switch_save_directories[!i!].title=Bayonetta 2
  63. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  64. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01007960049A0000
  65. call :AddAboveGame
  66. :: Bravely Default II
  67. set switch_save_directories[!i!].title=Bravely Default II
  68. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  69. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010056F00C7B4000
  70. call :AddAboveGame
  71. :: Dragon Quest XI S: Echoes of an Elusive Age -Definitive Edition-
  72. set switch_save_directories[!i!].title=Dragon Quest XI S: Echoes of an Elusive Age -Definitive Edition-
  73. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  74. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01006C300E9F0000
  75. call :AddAboveGame
  76. :: Donkey Kong Country: Tropical Freeze
  77. set switch_save_directories[!i!].title=Donkey Kong Country: Tropical Freeze
  78. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  79. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100C1F0051B6000
  80. call :AddAboveGame
  81. :: Final Fantasy Crystal Chronicles Remastered Edition
  82. set switch_save_directories[!i!].title=Final Fantasy Crystal Chronicles Remastered Edition
  83. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  84. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100CE4010AAC000
  85. call :AddAboveGame
  86. :: Fire Emblem: Three Houses
  87. set switch_save_directories[!i!].title=Fire Emblem: Three Houses
  88. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  89. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010055D009F78000
  90. call :AddAboveGame
  91. :: Luigi's Mansion 3
  92. set switch_save_directories[!i!].title=Luigi's Mansion 3
  93. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  94. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100DCA0064A6000
  95. call :AddAboveGame
  96. :: Mario + Rabbids Kingdom Battle (Japan)
  97. set switch_save_directories[!i!].title=Mario + Rabbids Kingdom Battle (Japan)
  98. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  99. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100E46003042000
  100. call :AddAboveGame
  101. :: Mario + Rabbids Kingdom Battle
  102. set switch_save_directories[!i!].title=Mario + Rabbids Kingdom Battle
  103. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  104. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010067300059A000
  105. call :AddAboveGame
  106. :: Mario Kart 8 Deluxe
  107. set switch_save_directories[!i!].title=Mario Kart 8 Deluxe
  108. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  109. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100152000022000
  110. call :AddAboveGame
  111. :: Metroid Dread
  112. set switch_save_directories[!i!].title=Metroid Dread
  113. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  114. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010093801237C000
  115. call :AddAboveGame
  116. :: Pikmin 3 Deluxe
  117. set switch_save_directories[!i!].title=Pikmin 3 Deluxe
  118. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  119. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100F4C009322000
  120. call :AddAboveGame
  121. :: Splatoon 2
  122. set switch_save_directories[!i!].title=Splatoon 2
  123. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  124. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01003BC0000A0000
  125. call :AddAboveGame
  126. :: Super Mario 3D All-Stars
  127. set switch_save_directories[!i!].title=Super Mario 3D All-Stars
  128. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  129. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010049900F546000
  130. call :AddAboveGame
  131. :: Super Mario 3D World + Bowser's Fury
  132. set switch_save_directories[!i!].title=Super Mario 3D World + Bowser's Fury
  133. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  134. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010028600EBDA000
  135. call :AddAboveGame
  136. :: Super Mario Odyssey
  137. set switch_save_directories[!i!].title=Super Mario Odyssey
  138. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  139. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100000000010000
  140. call :AddAboveGame
  141. :: Super Mario Party
  142. set switch_save_directories[!i!].title=Super Mario Party
  143. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  144. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\010036B0034E4000
  145. call :AddAboveGame
  146. :: Super Smash Bros. Ultimate
  147. set switch_save_directories[!i!].title=Super Smash Bros. Ultimate
  148. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  149. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01006A800016E000
  150. call :AddAboveGame
  151. :: The Legend of Zelda: Breath of the Wild
  152. set switch_save_directories[!i!].title=The Legend of Zelda: Breath of the Wild
  153. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  154. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01007EF00011E000
  155. call :AddAboveGame
  156. :: The Legend of Zelda: Link's Awakening
  157. set switch_save_directories[!i!].title=The Legend of Zelda: Link's Awakening
  158. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  159. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\01006BB00C6F0000
  160. call :AddAboveGame
  161. :: Xenoblade Chronicles: Definitive Edition
  162. set switch_save_directories[!i!].title=Xenoblade Chronicles: Definitive Edition
  163. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  164. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100FF500E34A000
  165. call :AddAboveGame
  166. :: Xenoblade Chronicles 2
  167. set switch_save_directories[!i!].title=Xenoblade Chronicles 2
  168. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  169. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100E95004038000
  170. call :AddAboveGame
  171. :: Xenoblade Chronicles 2: Torna - The Golden Country
  172. set switch_save_directories[!i!].title=Xenoblade Chronicles 2: Torna - The Golden Country
  173. set switch_save_directories[!i!].ryujinx=%ryujinx_save_file_directory%\00000000000000{xx}\0
  174. set switch_save_directories[!i!].yuzu=%yuzu_save_file_directory%\0100C9F009F7A000
  175. call :AddAboveGame
  176.  
  177.  
  178. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  179. ::  No need to edit below this line                                           ::
  180. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  181.  
  182.  
  183. set transfer_from.indexes=1 2
  184. set transfer_from[1]=Ryujinx to Yuzu
  185. set transfer_from[2]=Yuzu to Ryujinx
  186. call echo/
  187. call echo  Game Save Transfer Script
  188. call echo  Used to transfer save files between Ryujinx and Yuzu Switch Emulators.
  189. call echo/
  190.  
  191. call :Start
  192. :: Menu Loop
  193. :Start
  194.     call echo ================================================================
  195.     for %%i in (0 %switch_save_directories.indexes%) do (
  196.         call echo   [!check%%i!] %%i. !switch_save_directories[%%i].title!
  197.         if %%i==0 (
  198.             call echo ================================================================
  199.         )
  200.     )
  201.     call echo ================================================================
  202.     set /p game="--> Which game save files do you wish to transfer? Enter # "
  203.     call echo/
  204.    
  205.     call echo ================================================================
  206.     for %%i in (%transfer_from.indexes%) do (
  207.         call echo     %%i. !transfer_from[%%i]!
  208.     )
  209.     call echo ================================================================
  210.     set /p emu="--> From which emulator do you want to transfer to? Enter # "
  211.     call echo/
  212.    
  213.     if "!game!"=="0" (
  214.         call echo     You chose to transfer [All] save game files [from !transfer_from[%emu%]!].
  215.         call echo     Are you absolutely sure because you can easily overwrite files you might not intend to?
  216.         set /p confirm="--> Have you backed up all your game saves and ready to proceed? [y/n]
  217.         set transfer_all=True
  218.     ) else (
  219.         call echo     You chose to transfer [!switch_save_directories[%game%].title!] save game files [from !transfer_from[%emu%]!].
  220.         set /p confirm="--> Is this correct? [y/n]"
  221.         set transfer_all=False
  222.         call echo/
  223.     )
  224.    
  225.     if "!confirm!"=="y" (
  226.         if "!transfer_all!"=="True" (
  227.             call :TransferAllSaveFilesFrom "!emu!"
  228.         ) else (
  229.             call :TransferSaveFilesFrom "!game!", "!emu!"
  230.         )
  231.     ) else (
  232.     if "!confirm!"=="Y" (
  233.         if "!transfer_all!"=="True" (
  234.             call :TransferAllSaveFilesFrom "!emu!"
  235.         ) else (
  236.             call :TransferSaveFilesFrom "!game!", "!emu!"
  237.         )
  238.     ) else (
  239.         call :Start
  240.     ))
  241.    
  242.     call echo\
  243.     call echo\
  244.     set /p loop="All Done, Press [Enter] To Display The Game Save Menu Again -or- [Enter Q] To Quit: "
  245.     call echo\
  246.    
  247.     if "!loop!"=="q" (
  248.         call echo Closing...
  249.         EXIT
  250.     ) else (
  251.     if "!loop!"=="Q" (
  252.         call echo Closing...
  253.         EXIT
  254.     ) else (
  255.         call :Start
  256.     ))
  257.     exit /b 0
  258.  
  259.  
  260. :: %1 Game Index #
  261. :: %2 Transfer From Index #
  262. ::    1. Ryujinx to Yuzu
  263. ::    2. Yuzu to Ryujinx
  264. :TransferSaveFilesFrom
  265.     if %~2 == 1 (
  266.         set copy_folder=!switch_save_directories[%~1].ryujinx!
  267.         set paste_folder=!switch_save_directories[%~1].yuzu!
  268.     ) else (
  269.     if %~2 == 2 (
  270.         set copy_folder=!switch_save_directories[%~1].yuzu!
  271.         set paste_folder=!switch_save_directories[%~1].ryujinx!
  272.     ) else (
  273.         call echo\
  274.         call echo  Error: Invalid Entry
  275.         exit /b 1
  276.     ))
  277.     call :CreateBackupOf "!paste_folder!"
  278.     robocopy /E "!copy_folder!" "!paste_folder!"
  279.     call :TransferSaveCheck "%~1"
  280.     exit /b 0
  281.  
  282.  
  283. :: %1 Transfer From Index #
  284. ::    1. Ryujinx to Yuzu
  285. ::    2. Yuzu to Ryujinx
  286. :TransferAllSaveFilesFrom
  287.     for %%i in (%switch_save_directories.indexes%) do (
  288.         if %~1 == 1 (
  289.             set copy_folder=!switch_save_directories[%%i].ryujinx!
  290.             set paste_folder=!switch_save_directories[%%i].yuzu!
  291.         ) else (
  292.             set copy_folder=!switch_save_directories[%%i].yuzu!
  293.             set paste_folder=!switch_save_directories[%%i].ryujinx!
  294.         )
  295.         call :CreateBackupOf "!paste_folder!"
  296.         robocopy /E "!copy_folder!" "!paste_folder!"
  297.         call :TransferSaveCheck "%%i"
  298.     )
  299.     call :TransferSaveCheck "0"
  300.     exit /b 0
  301.  
  302.  
  303. :: %1 Index
  304. :TransferSaveCheck
  305.     set check%~1=x
  306.     exit /b 0
  307.  
  308.  
  309. :: %1 Folder To Backup
  310. :CreateBackupOf
  311.     if %create_backup_before_overwriting%==True (
  312.         robocopy /E "%~1" "%~1%backup_extention%"
  313.         call echo/
  314.     )
  315.     exit /b 0
  316.  
  317.  
  318. :AddAboveGame
  319.     set "switch_save_directories.indexes=!switch_save_directories.indexes!!i! "
  320.     set /a i=i+1
  321.     exit /b 0
  322.  
Add Comment
Please, Sign In to add comment