mirror of
https://github.com/yuzu-mirror/yuzu-mirror.github.io.git
synced 2025-12-06 07:12:21 +01:00
244 lines
13 KiB
HTML
244 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html lang=" en-us "class="has-navbar-fixed-top">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
|
|
<meta name="theme-color" content="#404040">
|
|
|
|
<meta property="og:title" content="Game Modding · yuzu" />
|
|
<meta property="og:site_name" content="yuzu" />
|
|
<meta property="og:url" content="https://yuzu-mirror.github.io/help/feature/game-modding/" />
|
|
<meta property="og:description" content="Game modding features" />
|
|
<meta name="description" content="Game modding features" />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:image" content="https://yuzu-mirror.github.io/logo.png" />
|
|
|
|
<link rel="icon" href="https://yuzu-mirror.github.io/favicon.ico" />
|
|
<link rel="shortcut icon" href="https://yuzu-mirror.github.io/favicon.ico" type="image/x-icon" />
|
|
<link rel="canonical" href="https://yuzu-mirror.github.io/help/feature/game-modding/">
|
|
|
|
<title>Game Modding - yuzu</title>
|
|
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
|
<link href="https://use.fontawesome.com/releases/v6.4.0/css/all.css" rel="stylesheet">
|
|
|
|
<link rel="stylesheet" href="https://yuzu-mirror.github.io/scss/style.min.css" />
|
|
|
|
|
|
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112443698-1"></script>
|
|
|
|
|
|
<script type="text/javascript">
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag() { dataLayer.push(arguments); }
|
|
gtag('js', new Date());
|
|
gtag('config', 'UA-112443698-1');
|
|
</script>
|
|
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<nav class="navbar is-dark is-size-6 is-fixed-top" role="navigation" aria-label="main navigation">
|
|
<div class="container">
|
|
<div class="navbar-brand">
|
|
<a class="navbar-item" href="https://yuzu-mirror.github.io">
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="navbar-logo" viewBox="0 0 515.83 163.11"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#ff3c28;}.cls-3{fill:#0ab9e6;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M515.83,23.23v73c0,14.5-2.24,25.24-6.84,32.82-5.92,10.15-16.2,15.32-30.53,15.32s-24.62-5.23-30.58-15.57c-4.56-7.64-6.79-18.42-6.79-32.92V23.23a4.51,4.51,0,0,1,4.51-4.51h2.28a4.51,4.51,0,0,1,4.51,4.51v72.5c0,33.53,14.88,37.4,26.07,37.4,12.14,0,26.08-4.17,26.08-36.71V23.23a4.51,4.51,0,0,1,4.51-4.51h2.27A4.51,4.51,0,0,1,515.83,23.23Z"/><path class="cls-1" d="M421.34,144.4H353.45c-2.35,0-4.72-1.88-4.72-6.08a8.32,8.32,0,0,1,1.33-4.49L410.39,29.36H360.8a4.51,4.51,0,0,1-4.51-4.5V23.28a4.51,4.51,0,0,1,4.48-4.51h.81c58.68-.11,59.11,0,59.66.07a5.19,5.19,0,0,1,4,5.8,8.74,8.74,0,0,1-1.32,3.75L363.33,133.17h58a4.51,4.51,0,0,1,4.51,4.51v2.21A4.51,4.51,0,0,1,421.34,144.4Z"/><path class="cls-1" d="M248.45,23.23v82.06c0,26-11.8,38.44-37.12,39.09h-.12a4.51,4.51,0,0,1-4.51-4.51V137.5a4.51,4.51,0,0,1,4.48-4.5c18.49-.15,26-8.23,26-27.9v-2.37a32.34,32.34,0,0,1-3.34,3.28c-6.39,5.5-14.5,8.29-24.07,8.29-22.86,0-35-12.41-35-35.89V23.23a4.52,4.52,0,0,1,4.51-4.51h2.22a4.52,4.52,0,0,1,4.5,4.51v55c0,7.6,1.82,14.22,5,18.18,3.57,4.56,9.17,6.49,18.75,6.49,10.13,0,17.32-3.76,22-11.5,3.61-5.92,5.43-13.66,5.43-23V23.23a4.52,4.52,0,0,1,4.51-4.51h2.22A4.52,4.52,0,0,1,248.45,23.23Z"/><path class="cls-1" d="M338.12,23.23v73c0,14.5-2.24,25.24-6.84,32.82-5.92,10.15-16.2,15.32-30.53,15.32s-24.62-5.23-30.58-15.57c-4.56-7.64-6.79-18.42-6.79-32.92V23.23a4.51,4.51,0,0,1,4.51-4.51h2.28a4.51,4.51,0,0,1,4.51,4.51v72.5c0,33.53,14.88,37.4,26.07,37.4,12.14,0,26.08-4.17,26.08-36.71V23.23a4.51,4.51,0,0,1,4.51-4.51h2.27A4.51,4.51,0,0,1,338.12,23.23Z"/><g id="g823"><g id="right"><g id="g827"><g id="g833"><path id="path835" class="cls-2" d="M81.56,32.62V163.11a65.25,65.25,0,0,0,0-130.49M94.3,46.91a52.54,52.54,0,0,1,0,101.91V46.91"/></g></g></g><g id="left"><g id="g839"><g id="g845"><path id="path847" class="cls-3" d="M65.24,0a65.25,65.25,0,0,0,0,130.49ZM52.5,14.29V116.2A52.52,52.52,0,0,1,28.12,28.12,52.16,52.16,0,0,1,52.5,14.29"/></g></g></g></g></g></g></svg>
|
|
</a>
|
|
|
|
<div class="burger navbar-burger is-dark" data-target="navMenu">
|
|
<span></span>
|
|
<span></span>
|
|
<span></span>
|
|
</div>
|
|
</div>
|
|
<div class="navbar-menu" id="navMenu">
|
|
<div class="navbar-start">
|
|
|
|
<a class="navbar-item px-lg" href="/entry">
|
|
Blog
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="/downloads">
|
|
Download
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="/wiki/faq">
|
|
FAQs
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="/game">
|
|
Compatibility
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="/screenshots">
|
|
Screenshots
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="https://www.patreon.com/yuzuteam">
|
|
Patreon
|
|
</a>
|
|
|
|
<a class="navbar-item px-lg" href="https://profile.yuzu-mirror.github.io">
|
|
Profile
|
|
</a>
|
|
|
|
|
|
<a class="navbar-item px-lg is-hidden-desktop" href="https://discord.gg/u77vRWY" target="_blank">
|
|
<i class="fab fa-discord mr-sm"></i> Discord
|
|
</a>
|
|
<a class="navbar-item px-lg is-hidden-desktop" href="https://twitter.com/yuzuemu" target="_blank">
|
|
<i class="fab fa-twitter mr-sm"></i> Twitter
|
|
</a>
|
|
<a class="navbar-item px-lg is-hidden-desktop" href="https://github.com/yuzu-mirror/yuzu" target="_blank">
|
|
<i class="fab fa-github mr-sm"></i> GitHub
|
|
</a>
|
|
</div>
|
|
|
|
<div class="navbar-end">
|
|
|
|
<a class="navbar-item px-lg is-hidden-touch" href="https://discord.gg/u77vRWY" target="_blank">
|
|
<span class="icon">
|
|
<i class="fab fa-2x fa-discord"></i>
|
|
</span>
|
|
</a>
|
|
<a class="navbar-item px-lg is-hidden-touch" href="https://twitter.com/yuzuemu" target="_blank">
|
|
<span class="icon">
|
|
<i class="fab fa-2x fa-twitter"></i>
|
|
</span>
|
|
</a>
|
|
<a class="navbar-item px-lg is-hidden-touch" href="https://github.com/yuzu-mirror/yuzu" target="_blank">
|
|
<span class="icon">
|
|
<i class="fab fa-2x fa-github"></i>
|
|
</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
<section class="section" style="padding-bottom: 0px;">
|
|
<div class="container">
|
|
<a href="/help/">
|
|
<article class="message">
|
|
<div class="message-body">
|
|
<span class="icon">
|
|
<i class="fas fa-arrow-circle-left"></i>
|
|
</span>
|
|
Return to the previous page.
|
|
</div>
|
|
</article>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="container">
|
|
<div class="columns is-centered">
|
|
<div class="column is-four-fifths">
|
|
|
|
<section class="section">
|
|
<h1 class="title">Game Modding</h1>
|
|
<div class="content">
|
|
<h1 id="game-modding">Game Modding</h1>
|
|
<p>Yuzu has a powerful modding framework allowing for multiple formats of patches, flexibility in distribution, and easy organization and change.</p>
|
|
<h3 id="directory-structure">Directory Structure</h3>
|
|
<p>The following is an example of a mod in yuzu.<br>
|
|
Each one is its own directory within the Mod Data dir that can be opened by right-clicking on the game in yuzu (alternatively <code>%YUZU_DIR%/load/<title_id></code>)</p>
|
|
<pre tabindex="0"><code>mod_directory
|
|
- exefs
|
|
- romfs
|
|
- romfs_ext
|
|
</code></pre><h4 id="exefs">ExeFS</h4>
|
|
<p>The ExeFS dir contains patches for the game’s executable(s).
|
|
These types of mods typically alter game behavior or logic.
|
|
Currently this translates to two types of patches: <code>IPS</code> and <code>IPSwitch</code>.</p>
|
|
<p>To use an <code>IPS</code> patch, create a file with the NSO build ID as the name and <code>.ips</code> as the extension and put it in the ExeFS dir.
|
|
More details on the <code>IPS</code> format can be found on <a href="https://zerosoft.zophar.net/ips.php">ZeroSoft</a>.</p>
|
|
<p>For <code>IPSwitch</code>, the filename can be whatever you want as long as the extension is <code>.pchtxt</code> and it contains a NSO build ID.
|
|
More details on the <code>IPSwitch</code> format can be found on it’s <a href="https://github.com/3096/ipswitch">GitHub repo</a>.</p>
|
|
<h4 id="romfs">RomFS</h4>
|
|
<p>The RomFS dir contains replacements for the game’s assets and general files.
|
|
These types of mods typically alter a game’s textures, text, fonts, sounds, or other graphical assets.
|
|
If this directory is not empty, yuzu will combine the contents of it with the base game with files from this directory taking precedence over the base.
|
|
This technique is called LayeredFS.</p>
|
|
<pre tabindex="0"><code>It is important to note that for this to work properly,
|
|
the directory structure of the game has to be mirrored in this dir.
|
|
</code></pre><p>It is much easier to get started with a RomFS mod than an ExeFS mod.
|
|
To dump the game’s RomFS, right-click on the game and select <code>Dump RomFS</code>.
|
|
Selecting full will extract everything while skeleton will only create the directories.
|
|
The output of this will be opened after the dump and can be found at <code>%YUZU_DIR%/dump/<title id></code>.</p>
|
|
<h4 id="romfs-extension-romfs_ext">RomFS Extension (romfs_ext)</h4>
|
|
<p>The RomFS Extension dir contains patches and stubs for romfs files.
|
|
This allows modders to delete files within the romfs if a file of the same name but the extension <code>.stub</code> is found at the same directory within <code>romfs_ext</code>.
|
|
Similarly, if a file with the same name but with extension <code>.ips</code> is found at the same directory within <code>romfs_ext</code>, the base game file will be patched with it.</p>
|
|
<h3 id="example">Example</h3>
|
|
<p>For example, let’s examine Splatoon 2, a popular game for modding.</p>
|
|
<p>Since Splatoon 2’s title id is <code>01003BC0000A0000</code>, all of our mods for this game will go in <code>%YUZU_DIR%/load/01003BC0000A0000</code>.</p>
|
|
<p>Say we have two mods to play with, Mod X and Mod Y.
|
|
Therefore, we would make two directories in the <code>01003BC0000A0000</code> folder, one called “Mod X” and one called “Mod Y”.</p>
|
|
<p>Within the “Mod X” folder, there are the <code>exefs</code>, <code>romfs</code>, and <code>romfs_ext</code> directories provided by the author.
|
|
It is okay to omit one (or more) of them if it is empty. Additionally, if the mod folder is empty yuzu will ignore it.</p>
|
|
<h3 id="conclusion">Conclusion</h3>
|
|
<p>If you are a modder looking to distribute mods for yuzu and have another question or found part of this guide confusing, feel free to come ask in out discord.</p>
|
|
<p>If you are a user trying to install a mod for yuzu and it seems like a critical piece of the puzzle is missing, try asking the mod author for help. Otherwise, feel free to come ask in the discord.</p>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
</div>
|
|
<div class="column">
|
|
|
|
|
|
<div class="px-md">
|
|
|
|
<ins class="adsbygoogle"
|
|
style="display:block; margin-left:25px;"
|
|
data-ad-client="ca-pub-4126545610079023"
|
|
data-ad-slot="6276099127"
|
|
data-ad-format="auto"></ins>
|
|
<br>
|
|
<p class="is-size-6 has-text-centered">Advertisement</p>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
|
|
|
|
<div class="px-md has-text-centered">
|
|
<p class="is-size-6 has-text-centered">Advertisement</p>
|
|
<br>
|
|
<ins class="adsbygoogle" style="display:inline-block;width:728px;height:100px" data-ad-client="ca-pub-4126545610079023" data-ad-slot="1038554045"></ins>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="container">
|
|
<footer class="footer">
|
|
<div class="content has-text-centered">
|
|
copyright © 2025 yuzu emulator team
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
|
|
|
|
<script src="https://yuzu-mirror.github.io/js/script.min.js"></script>
|
|
<script type="text/javascript">
|
|
for (var i = 0; i < document.getElementsByClassName('adsbygoogle').length; i++) {
|
|
(adsbygoogle = window.adsbygoogle || []).push({});
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|