mirror of
https://github.com/rvtr/rmc_website.git
synced 2025-10-31 13:31:21 -04:00
348 lines
14 KiB
HTML
348 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>DSi TAD format | rmc's site</title>
|
|
<link rel="icon" type="image/png" href="/icon.png"/>
|
|
<link rel="stylesheet" type="text/css" href="https://ianskinner1982.github.io/assets/css/styledsi.css">
|
|
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
|
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
|
<script src="https://ianskinner1982.github.io/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
|
<script src="https://ianskinner1982.github.io/assets/js/main.js"></script>
|
|
|
|
<meta property="og:title" content="DSi TAD format">
|
|
|
|
<meta property="og:locale" content="en_US">
|
|
<meta name="description" content="DSi TAD format | rmc's site">
|
|
<meta property="og:description" content="DSi TAD format | rmc's site">
|
|
<link rel="canonical" href="https://ianskinner1982.github.io">
|
|
<meta property="og:url" content="https://ianskinner1982.github.io">
|
|
<meta property="og:site_name" content="rmc's site">
|
|
|
|
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
</head>
|
|
<body>
|
|
<style>
|
|
body {
|
|
background-image: url('https://ianskinner1982.github.io/assets/dsi/background.jpg');
|
|
}
|
|
.nav ul {
|
|
list-style-type: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
padding-left: 3.5%;
|
|
/* overflow: hidden; */
|
|
}
|
|
.navstd {
|
|
float: left;
|
|
}
|
|
.navalt {
|
|
float: right;
|
|
}
|
|
.container {
|
|
position: relative;
|
|
}
|
|
.imageOne {
|
|
z-index: 0;
|
|
}
|
|
.imageTwo {
|
|
z-index: 1;
|
|
}
|
|
.imageThree {
|
|
z-index: 2;
|
|
}
|
|
.imageFour {
|
|
z-index: 3;
|
|
}
|
|
.image {
|
|
position: absolute;
|
|
width: 100px;
|
|
height: 100px;
|
|
}
|
|
.navimgoverlay {
|
|
opacity: 0.0;
|
|
text-align: center;
|
|
float: left;
|
|
padding-top: .6vw;
|
|
width: 6vw;
|
|
height: auto;
|
|
}
|
|
.navimgoverlay:hover {
|
|
opacity: 1.0;
|
|
width: 6vw;
|
|
}
|
|
.navimg {
|
|
text-align: center;
|
|
float: left;
|
|
padding-top: .6vw;
|
|
width: 6vw;
|
|
height: auto;
|
|
}
|
|
.navicon {
|
|
text-align: center;
|
|
float: left;
|
|
padding-top: 2.1vw;
|
|
padding-left: 1.38vw;
|
|
width: 3.2vw;
|
|
height: auto;
|
|
}
|
|
.navedge {
|
|
text-align: center;
|
|
float: left;
|
|
margin: 1%;
|
|
width: 1.5vw;
|
|
height: auto;
|
|
}
|
|
.navpadding li {
|
|
padding-top: 1.5%;
|
|
}
|
|
.image2 {
|
|
position: absolute;
|
|
border-color: #FFFFFF
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
.image3 {
|
|
position: relative;
|
|
border-color: #FFFFFF
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
.text {
|
|
position: absolute;
|
|
text-align: left;
|
|
border-color: #FFFFFF;
|
|
font-size: 30px;
|
|
font-size: 1vw;
|
|
padding-top: 2.2vw;
|
|
padding-left: 6.2vw;
|
|
}
|
|
.icon {
|
|
padding-top:2.2vw;
|
|
margin-left: -9.3vw;
|
|
z-index: 2;
|
|
}
|
|
.titleimgoverlay {
|
|
margin: 0% 2% 0%;
|
|
opacity: 0.0;
|
|
text-align: center;
|
|
float: left;
|
|
width: 16vw;
|
|
height: auto;
|
|
}
|
|
.titleimgoverlay:hover {
|
|
opacity: 1.0;
|
|
}
|
|
.titleimg {
|
|
margin: 0% 2% 0%;
|
|
text-align: center;
|
|
float: left;
|
|
width: 16vw;
|
|
height: auto;
|
|
margin-bottom: 10vw;
|
|
}
|
|
.titleedge {
|
|
text-align: center;
|
|
float: left;
|
|
margin: 1%;
|
|
width: 18vw;
|
|
height: auto;
|
|
}
|
|
.titlepadding li {
|
|
padding-top: 1.5%;
|
|
margin: 0% 2% 0%
|
|
}
|
|
.homeimg {
|
|
margin: 6% 5% 0%;
|
|
text-align: center;
|
|
float: right;
|
|
width: 16vw;
|
|
height: auto;
|
|
margin-bottom: 5vw;
|
|
}
|
|
.hometext {
|
|
position: absolute;
|
|
text-align: center;
|
|
border-color: #FFFFFF;
|
|
font-size: 40px;
|
|
font-size: 1.1vw;
|
|
}
|
|
.homeicon {
|
|
padding-top: 6.99vw;
|
|
margin-left: -1.59vw;
|
|
z-index: 2;
|
|
}
|
|
.othertext {
|
|
position: absolute;
|
|
text-align: left;
|
|
border-color: #FFFFFF;
|
|
font-size: 40px;
|
|
font-size: 1.2vw;
|
|
padding-top: 1vw;
|
|
padding-left: 1.2vw;
|
|
}
|
|
</style>
|
|
<div class="nav">
|
|
<nav>
|
|
<ul>
|
|
<li class="navedge"><img src="https://ianskinner1982.github.io/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
|
<div class="navpadding">
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/boxfull.png" class="navimg"></div>
|
|
<div class="imageTwo image"><img src="https://ianskinner1982.github.io/assets/dsi/icon/back.png" class="navicon"></div>
|
|
<div class="imageThree image"><a href="/"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/boxfull.png" class="navimg"></div>
|
|
<div class="imageTwo image"><img src="https://ianskinner1982.github.io/assets/dsi/icon/home.png" class="navicon"></div>
|
|
<div class="imageThree image"><a href="/dsi.html"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/boxfull.png" class="navimg"></div>
|
|
<div class="imageTwo image"><img src="https://ianskinner1982.github.io/assets/dsi/icon/devshop.png" class="navicon"></div>
|
|
<div class="imageThree image"><a href="/dsidev/dsishop/startup.html"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/box.png" class="navimg"></div>
|
|
<div class="imageThree image"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/boxfull.png" class="navimg"></div>
|
|
<div class="imageTwo image"><img src="https://ianskinner1982.github.io/assets/dsi/icon/discord.png" class="navicon"></div>
|
|
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
|
</div>
|
|
</li>
|
|
<li class="navimg">
|
|
<div class="container">
|
|
<div class="imageOne image"><img src="https://ianskinner1982.github.io/assets/dsi/boxfull.png" class="navimg"></div>
|
|
<div class="imageTwo image"><img src="https://ianskinner1982.github.io/assets/dsi/icon/github.png" class="navicon"></div>
|
|
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="https://ianskinner1982.github.io/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
|
</div>
|
|
</li>
|
|
</div>
|
|
<li class="navedge"><img src="https://ianskinner1982.github.io/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
|
|
<div id="content-wrap">
|
|
<style>
|
|
.float-container {
|
|
border: 0px solid #fff;
|
|
font-size: 0;
|
|
}
|
|
|
|
.float-child1 {
|
|
width: 40%;
|
|
height: 40%;
|
|
float: left;
|
|
padding: 1vw;
|
|
}
|
|
|
|
.float-child2 {
|
|
width: 20%;
|
|
height: 40%;
|
|
float: right;
|
|
padding: 1vw;
|
|
}
|
|
</style>
|
|
<div class="float-container">
|
|
<div class="float-child1">
|
|
<div class="container">
|
|
<div class="imageOne image">
|
|
<img src="https://ianskinner1982.github.io/assets/dsi/widebarnoprompt_u.png" style="width:96vw;">
|
|
<img src="https://ianskinner1982.github.io/assets/dsi/widepromptnobar.png" style="width:96vw;height:52vw;">
|
|
<img src="https://ianskinner1982.github.io/assets/dsi/widebarnoprompt_d.png" style="width:96vw;">
|
|
</div>
|
|
<div class="othertext" style="width:93.5vw;">
|
|
<h2>What's this "TAD" thing?</h2>
|
|
Not to be confused with the DSiWare <a href="https://problemkaputt.de/gbatek.htm#dsisdmmcdsiwarefilesonexternalsdcardbinakatadfiles">backup format,</a> TAD files are
|
|
SRLs (DS programs) that have been packaged into an installable format. TADs are intended only for TwlNmenu (a title manager) on development/factory DSis and as such will only work on those. These share similarities with Wii WADs:<br><br>
|
|
<i>"The installable format, TAD share many similarities to the WAD format, including the same offsets for title ID's and using the same devsign as WADs. A TAD can be resigned using Wii resigning tools and a RVL devkey. However, due to TwlNmenu's anti-tampering methods, the tool lets you not install resigned TAD files."</i> - <a href="https://wiki.raregamingdump.ca/index.php?title=TwlNmenu">RGDWiki</a>
|
|
<br>
|
|
<h2>How do I install a TAD?</h2>
|
|
The only way to install a TAD directly is to use a developer DSi, real or emulated (there is a workaround for retail below). If you have one, open TwlNmenu and select your TADs from the SD card tab.
|
|
<h4 style="color:red;">DO NOT install TADs on a retail DSi.</h4>Attempting to do so will just result in a <code>-2011</code> error, due to the TAD being signed for a developer unit. Resigning the TAD to retail will not work as TwlNmenu protects against this. Additionally, <span style="color:red;">TwlNmenu will OVERWRITE WHAT IT'S TRYING TO INSTALL</span>, so if it fails, your apps may be deleted.
|
|
<h2>How can I safely run a TAD?</h2>
|
|
To run a TAD on retail hardware, you have to decrypt it and extract the SRL. You can use <a href="https://ianskinner1982.github.io/assets/dsi/decrypt_tad.py">this</a> python script to do so.<br>Usage is <code>python3 decrypt_tad.py [path to file].tad</code><br>
|
|
<br>Rename the SRL to NDS, and it should work in emulators or on real hardware.
|
|
<h2>How do I make a TAD?</h2>
|
|
|
|
TAD files can be created with the command line tool <code>maketad.exe</code>, from the TwlSDK ( <code>TwlSDK/tools/bin/maketad.exe</code>). Only apps that are installed to the <code>00030004</code> (DSiWare) folder are able to be converted to the TAD format.<br><!--Note: makesrl.exe cannot be used to convert TADs back to SRL. This instead packages the TAD into and SRL-->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
<footer>
|
|
<br><br><br><footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
|
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
|
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
|
</div>
|
|
<div align='center' hidden><a href='https://www.free-website-hit-counter.com'><img src='https://www.free-website-hit-counter.com/c.php?d=9&id=141120&s=39' border='0' alt='Free Website Hit Counter'></a><br / ><small><a href='https://www.free-website-hit-counter.com' title="Free Website Hit Counter">(page hits)</a></small></div>
|
|
|
|
</footer>
|
|
|
|
</footer>
|
|
</html>
|