You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
9.3 KiB

  1. <!DOCTYPE html>
  2. <!--[if IE]><![endif]-->
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <title> </title>
  8. <meta name="viewport" content="width=device-width">
  9. <meta name="title" content=" ">
  10. <meta name="generator" content="docfx 2.45.0.0">
  11. <link rel="shortcut icon" href="favicon.ico">
  12. <link rel="stylesheet" href="styles/docfx.vendor.css">
  13. <link rel="stylesheet" href="styles/docfx.css">
  14. <link rel="stylesheet" href="styles/main.css">
  15. <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
  16. <meta property="docfx:navrel" content="toc.html">
  17. <meta property="docfx:tocrel" content="articles/toc.html">
  18. <meta property="docfx:rel" content="">
  19. <meta property="docfx:newtab" content="true">
  20. </head> <body data-spy="scroll" data-target="#affix" data-offset="120">
  21. <div id="wrapper">
  22. <header>
  23. <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
  24. <div class="container">
  25. <div class="navbar-header">
  26. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
  27. <span class="sr-only">Toggle navigation</span>
  28. <span class="icon-bar"></span>
  29. <span class="icon-bar"></span>
  30. <span class="icon-bar"></span>
  31. </button>
  32. <a class="navbar-brand" href="index.html">
  33. <img id="logo" class="svg" src="logo.svg" alt="">
  34. </a>
  35. </div>
  36. <div class="collapse navbar-collapse" id="navbar">
  37. <form class="navbar-form navbar-right" role="search" id="search">
  38. <div class="form-group">
  39. <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
  40. </div>
  41. </form>
  42. </div>
  43. </div>
  44. </nav>
  45. <div class="subnav navbar navbar-default">
  46. <div class="container hide-when-search" id="breadcrumb">
  47. <ul class="breadcrumb">
  48. <li></li>
  49. </ul>
  50. </div>
  51. </div>
  52. </header>
  53. <div class="container body-content">
  54. <div id="search-results">
  55. <div class="search-list"></div>
  56. <div class="sr-items">
  57. <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
  58. </div>
  59. <ul id="pagination"></ul>
  60. </div>
  61. </div>
  62. <div role="main" class="container body-content hide-when-search">
  63. <div class="sidenav hide-when-search">
  64. <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
  65. <div class="sidetoggle collapse" id="sidetoggle">
  66. <div id="sidetoc"></div>
  67. </div>
  68. </div>
  69. <div class="article row grid-right">
  70. <div class="col-md-10">
  71. <article class="content wrap" id="_content" data-uid="">
  72. <h1 id="beat-saber-ipa-reloadedimagesbannerdarksvg-build-statushttpsciappveyorcomapiprojectsstatus1ruhnnfeudrrd097svgtruehttpsciappveyorcomprojectnike4613beatsaber-ipa-reloaded-9smsb"><img src="images/banner_dark.svg" alt="Beat Saber IPA Reloaded"> <a href="https://ci.appveyor.com/project/nike4613/beatsaber-ipa-reloaded-9smsb"><img src="https://ci.appveyor.com/api/projects/status/1ruhnnfeudrrd097?svg=true" alt="Build status"></a></h1>
  73. <p>Beat Saber IPA - The mod injector tailored for Beat Saber</p>
  74. <h2 id="how-to-install">How To Install</h2>
  75. <ol>
  76. <li><a href="https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/releases">Download a release</a></li>
  77. <li>Extract the contents into the game folder</li>
  78. <li>Run <strong>IPA.exe</strong></li>
  79. <li>Start the game as usual</li>
  80. </ol>
  81. <p>A console window should open before the game starts if the installation was successful.</p>
  82. <p>To disable this console window, pass <code>--no-console</code> to the game.</p>
  83. <h2 id="how-to-uninstall">How To Uninstall</h2>
  84. <ol>
  85. <li>Drag &amp; drop the game exe onto <strong>IPA.exe</strong> while holding <kbd>Alt</kbd><ul>
  86. <li>Or run <code>ipa -rn</code> in a command window</li>
  87. </ul>
  88. </li>
  89. </ol>
  90. <h2 id="arguments">Arguments</h2>
  91. <p><code>IPA.exe file-to-patch [arguments]</code></p>
  92. <ul>
  93. <li><code>--launch</code>: Launch the game after patching</li>
  94. <li><code>--revert</code>: Revert changes made by IPA (= unpatch the game)</li>
  95. <li><code>--nowait</code>: Never keep the console open</li>
  96. <li>See <code>-h</code> or <code>--help</code> for more options.</li>
  97. </ul>
  98. <p>Unconsumed arguments will be passed on to the game in case of <code>--launch</code>.</p>
  99. <h2 id="how-to-develop">How To Develop</h2>
  100. <ol>
  101. <li>Create a new <strong>Class Library</strong> C# project (.NET 4.6)</li>
  102. <li>Download a release and add <strong>IPA.Loader.dll</strong> to your references</li>
  103. <li>Implement <code>IBeatSaberPlugin</code> or <code>IEnhancedBeatSaberPlugin</code></li>
  104. <li>Build the project and copy the DLL into the Plugins folder of the game.</li>
  105. </ol>
  106. <p>See <a href="https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/wiki/Developing">Developing</a> for more information.</p>
  107. <h2 id="how-to-keep-the-game-patched">How To Keep The Game Patched</h2>
  108. <p>BSIPA will automatically repatch the game when it updates, as long as <code>winhttp.dll</code> is present in the install directory.</p>
  109. <h2 id="notes-for-running-under-wine">Notes for running under Wine</h2>
  110. <p>For some reason, by default, Wine does not load DLLs in quite the same way that Windows does, causing issues with the injection.
  111. To make the injection work with Wine, <code>winhttp</code> has to have a DLL override set to <code>native,builtin</code>. This can be set either through
  112. Protontricks, or with the following <code>.reg</code> file.</p>
  113. <pre><code class="lang-reg">REGEDIT4
  114. [HKEY_CURRENT_USER\Software\Wine\DllOverrides]
  115. &quot;winhttp&quot;=&quot;native,builtin&quot;
  116. </code></pre><p>For Steam there&#39;s a per-game Wine prefix under <code>compatdata</code>. In this case <code>SteamLibrary/steamapps/compatdata/620980/pfx/user.reg</code>.
  117. Changes to this file will likely be ovewritten when the game updates or if local files are validated through Steam.</p>
  118. <h2 id="developing-bsipa-itself">Developing BSIPA itself</h2>
  119. <h3 id="prerequisites">Prerequisites</h3>
  120. <ul>
  121. <li>Microsoft Visual Studio 2019 or later (2017 may work, no guarantees)</li>
  122. <li>Tools for C/C++ (MSVC) v141</li>
  123. <li>.NET 4.6.1 SDK and .NET 4.7.2 SDK</li>
  124. </ul>
  125. <h3 id="building">Building</h3>
  126. <ol>
  127. <li>Clone with <code>git clone https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded.git --recursive</code></li>
  128. <li>Create a file, <code>bsinstalldir.txt</code> in the solution root. Do NOT create this in Visual Studio; VS adds a BOM at the begginning of the file that the tools used cannot read.
  129. It should contain the path to your Beat Saber installation, using forward slashes with a trailing slash. e.g.
  130. <code>C:/Program Files (x86)/Steam/steamapps/common/Beat Saber/</code></li>
  131. <li>Open <code>BSIPA.sln</code> in Visual Studio.</li>
  132. <li>Choose the configuration <code>x64-Net4</code></li>
  133. <li><p>Rebuild all. </p>
  134. <p>When you make a change somewhere in BSIPA itself, right click on <code>BSIPA-Meta</code> and click <code>Build</code> or <code>Rebuild</code>. This sets up the output in <code>path/to/solution/BSIPA-Meta/bin/&lt;Configuration&gt;</code> to be what
  135. should be copied to the game directory.</p>
  136. <p>When making a change to the Mod List, you only need to build the mod list. Install by copying everything in <code>path/to/solution/BSIPA-ModList/bin/&lt;Configuration&gt;</code> to your game
  137. directory.</p>
  138. </li>
  139. </ol>
  140. <p>When building a Debug build, all referenced assemblies from Beat Saber will be copied from the install directory provided in <code>bsinstalldir.txt</code> into <code>Refs/</code>. Any new references
  141. should reference the copy in there. When building for Release, it just uses the files already in <code>Refs/</code></p>
  142. </article>
  143. </div>
  144. <div class="hidden-sm col-md-2" role="complementary">
  145. <div class="sideaffix">
  146. <div class="contribution">
  147. <ul class="nav">
  148. <li>
  149. <a href="https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded/blob/a87bebd670362a56e329e28a9044bc622fcba575/docs/index.md/#L1" class="contribution-link">Improve this Doc</a>
  150. </li>
  151. </ul>
  152. </div>
  153. <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
  154. <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
  155. </nav>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <footer>
  161. <div class="grad-bottom"></div>
  162. <div class="footer">
  163. <div class="container">
  164. <span class="pull-right">
  165. <a href="#top">Back to top</a>
  166. </span>
  167. <span>Generated by <strong>DocFX</strong></span>
  168. </div>
  169. </div>
  170. </footer>
  171. </div>
  172. <script type="text/javascript" src="styles/docfx.vendor.js"></script>
  173. <script type="text/javascript" src="styles/docfx.js"></script>
  174. <script type="text/javascript" src="styles/main.js"></script>
  175. </body>
  176. </html>