Skip to content

Making CTGP‐7 Work

jack4455667788 edited this page Oct 3, 2024 · 20 revisions

Tutorial

For mario kart fans, Mario Kart 7 in 3d on a VR headset is the crowning gem of CitraVR. Doubly so with CTGP-7.

Below is how to get it working, albeit with an older version of ctgp (< v1.5, which requires code changes and recompiling of CitraVR)

Please take note that this process is, so far, only working with an older, possibly buggy, and completely unsupported version of ctgp-7. Do not under any circumstances bother the developer of CTGP-7 about it if you encounter issues. If you want to report an issue, either do so in this repo and/or mention the issue to me directly on the citravr discord that can be found in the main readme of this repo.

Prerequisites

  • Mario Kart 7 Game (.cia/.3ds/.cci/.cxi)
  • Mario Kart 7 v1.2 update (.cia/.3ds/.cci/.cxi)
  • Ability to extract the game and update files (lime3ds/citra, 3dstool, etc.)
  • Version of CTGP-7 < v1.5 with the citra specific loader app and 3gx plugin!!! The ones that typically come with available archived citravr versions require a 3ds and will crash citra/citraVR. The only version of this I have found readily available is 1.4.9, and requires you to download both v1.3.14 and the v1.4.9 Update
  • Sideloading/adb (obviously)

Steps

  1. If citraVR didn't have the cia install bug, we would just install the base game and update file (assuming they are decrypted - citra/citraVR/lime3ds cannot use encrypted .cia's) - but alas. If your copies of the game and update are encrypted, you need to decrypt them first. Then install both the game and the update using citra/lime3ds or extract them manually.
  2. Copy the extracted files from the sdmc folder in the citra/lime3ds install folder to the sdmc folder in your citravr install folder on the headset (using sideloader / adb)
  3. Extract the CTGP-7 folder from the base v1.3.14 7z file to a temporary location. Then copy/extract the files from the v1.4.9 update archive in the "CTGP-7updates-1.4.9/updates/data/" path into that same CTGP-7 folder at the temporary location - overwriting the existing files with the updated ones. Then copy/extract the files from the update archive path "CTGP-7updates-1.4.9/updates/dataCitra/" to that same CTGP-7 folder at the temporary location, again overwriting the files (which copies the citra specific/compatible loader app, 3gx plugin, and ghosts.bin).
  4. Sideload/adb/copy the tooInstall.3dsx file from the cia folder in the CTGP-7 folder at the temporary location from the previous step to the location where you keep citraVR games on the headset. You may want to rename it from "toolInstall.3dsx" to something more accurate - like "ctgp-7 v1.4.9 loader.3dsx".
  5. Sideload/adb/copy the entire CTGP-7 folder from the temporary location to the sdmc folder in the citraVR install folder on the headset.
  6. Load citraVR, go into Settings -> System -> 3gx Plugin Loader and make sure that the 3gx plugin loader setting is enabled. This is not strictly necessary because the default setting below it allows homebrew to override that setting and load the 3gx plugin anyway.
  7. Make sure you have aes_keys.txt in your CitraVR sysdata folder. Without it, it will crash when you try to load ctgp from the launcher.
  8. Run CitraVR and load the tooInstall.3dsx (or whatever you named it to) to load ctgp-7 and enjoy!

Notes/Known Issues

  1. There is a significant (maybe 5-10 seconds) delay and accompanying blackscreen when loading the v1.4.9 "toolInstall" ctgp-7 launcher app. Be patient!
  2. Sometimes citraVR will crash when you launch ctgp from the loader app. This seems random; just keep trying until it works. If it never works you have done something wrong in the steps above or perhaps there is something wrong with the game and/or update file you are using. Also, I have only tested this on a Quest2 on OS v64 - so there may be other potential problems with other headsets and OS versions too...
  3. MK7 only runs with hardware shaders enabled on v0.3.2 of citravr. This is a known issue with citravr. See more details here, including a copy of v0.3.2 that can be installed simultaneously with the latest version. This issue is now fixed! Download the latest (v0.5.0 at the time of this writing) citravr apk from releases!
  4. The language set in the "hacks" menu in ctgp-7 (accessed from the main game menu screen by pressing start) is not set to english. Likely editing and/or replacing "resources/langSetting.bin" in the ctgp-7 folder can fix this, but i just clicked around until i found the language select screen and changed it to english.
  5. In the same ctgp "hacks" menu is an option "Game Settings -> Render Optimizations" which is enabled by default. This disables stereoscopy. Disable that option to restore the 3D glory.
  6. The latest version of CTGP-7 (currently 1.5.13 at the time of this writing) is required for online racing to even be possible (and citraVR would have to have such online functionality, which is unknown). However, all versions > v1.5 are incompatible with citraVR as is. CitraVR would require code changes as described here : https://gbatemp.net/attachments/1709674669248-png.423999/. Local multiplayer may function, but this is also unknown.
  7. In conjunction with the .cia install bug, citravr (v0.3.2 at least) does not recognize/display/run games that are installed in the sdcard folder. What this means is that, unlike on the 3ds/lime3ds/citra, in order to play vanilla mk7 you will need to keep 2 copies of mk7 on your headset (one installed on the sd in its extracted form for ctgp-7, and one .3ds/.3dsx/.cci/.cxi copy to play vanilla mk7). Strangely citravr does seem to scan and recognize the update for mk7 and displays "v1.2" on the icon of the vanilla .3ds/.3dsx/.cci/.cxi copy - but I do not know if it actually loads it when you run.
  8. For whatever reason, the v1.4.9 update doesn't include a config/versions.bin file, so the launcher app displays the wrong version (v1.3.14). Edit the versions.bin file manually if you wish, it's just plaintext. This is mostly cosmetic, but does seem to be used to determine whether the launcher should bother downloading an update file. I changed mine to something like "1.3.14 -> 1.4.9" and it appears to have disabled/stymied the update process and possibly made the loader app load slightly more quickly.