Deploying to gh-pages from @ hacks-guide/Guide_3DS@24466e3963 🚀
This commit is contained in:
parent
48567f8592
commit
b8ca2e7db8
2 changed files with 40 additions and 34 deletions
|
@ -5,6 +5,9 @@
|
||||||
SPDX-License-Identifier: MIT
|
SPDX-License-Identifier: MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
const DEVICE_N3DS = 1;
|
||||||
|
const DEVICE_O3DS = 0;
|
||||||
|
|
||||||
// Soundhax
|
// Soundhax
|
||||||
// 1.0-11.3, all regions, all consoles
|
// 1.0-11.3, all regions, all consoles
|
||||||
function can_soundhax(major, minor, native, region, model) {
|
function can_soundhax(major, minor, native, region, model) {
|
||||||
|
@ -45,11 +48,11 @@ function can_ssloth(major, minor, native, region, model) {
|
||||||
} else if (region == "K") {
|
} else if (region == "K") {
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
(model && minor == 4 && native == 33) ||
|
(model == DEVICE_N3DS && minor == 4 && native == 33) ||
|
||||||
(model && minor == 5 && native == 34) ||
|
(model == DEVICE_N3DS && minor == 5 && native == 34) ||
|
||||||
(model && minor == 6 && native == 35) ||
|
(model == DEVICE_N3DS && minor == 6 && native == 35) ||
|
||||||
(model && minor == 7 && native == 35) ||
|
(model == DEVICE_N3DS && minor == 7 && native == 35) ||
|
||||||
(model && minor == 8 && native == 35) ||
|
(model == DEVICE_N3DS && minor == 8 && native == 35) ||
|
||||||
(minor == 9 && native == 36) ||
|
(minor == 9 && native == 36) ||
|
||||||
(minor == 10 && native == 37) ||
|
(minor == 10 && native == 37) ||
|
||||||
(minor == 12 && native == 38) ||
|
(minor == 12 && native == 38) ||
|
||||||
|
@ -73,7 +76,7 @@ function can_ssloth(major, minor, native, region, model) {
|
||||||
// Soundhax and SSLoth should be validated before this
|
// Soundhax and SSLoth should be validated before this
|
||||||
function can_safecerthax(major, minor, native, region, model) {
|
function can_safecerthax(major, minor, native, region, model) {
|
||||||
let do_redirect = false;
|
let do_redirect = false;
|
||||||
if (model == 0) {
|
if (model == DEVICE_O3DS) {
|
||||||
if (major <= 10) do_redirect = true;
|
if (major <= 10) do_redirect = true;
|
||||||
else if (major == 11 && minor <= 14) do_redirect = true;
|
else if (major == 11 && minor <= 14) do_redirect = true;
|
||||||
}
|
}
|
||||||
|
@ -87,13 +90,13 @@ function can_safecerthax(major, minor, native, region, model) {
|
||||||
|
|
||||||
// super-skaterhax
|
// super-skaterhax
|
||||||
// EUR/JPN/USA: 11.17 only
|
// EUR/JPN/USA: 11.17 only
|
||||||
// KOR: 11.16 only, KOR does not have 11.17
|
// KOR: 11.16 only, KOR does not have 11.17 (Do seedminer first though)
|
||||||
// CHN/TWN has no N3DS
|
// CHN/TWN has no N3DS
|
||||||
function can_superskaterhax(major, minor, native, region, model) {
|
function can_superskaterhax(major, minor, native, region, model) {
|
||||||
let do_redirect_sysupdate = false;
|
let do_redirect_sysupdate = false;
|
||||||
let do_redirect = false;
|
let do_redirect = false;
|
||||||
// N3DS only
|
// N3DS only
|
||||||
if(model == 1) {
|
if(model == DEVICE_N3DS) {
|
||||||
if (major == 11) {
|
if (major == 11) {
|
||||||
if (["E", "J", "U"].includes(region)) {
|
if (["E", "J", "U"].includes(region)) {
|
||||||
if (minor == 17) do_redirect = true;
|
if (minor == 17) do_redirect = true;
|
||||||
|
@ -121,16 +124,19 @@ function can_superskaterhax(major, minor, native, region, model) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mii mining
|
||||||
|
// Only do on 11.15 O3DS (except KOR and TWN, those don't have 11.17 and can update and do seedminer)
|
||||||
function can_miimine(major, minor, native, region, model) {
|
function can_miimine(major, minor, native, region, model) {
|
||||||
let do_redirect = false;
|
let do_redirect = false;
|
||||||
|
|
||||||
if (major == 11) {
|
if (model == DEVICE_O3DS) {
|
||||||
if (model == 0 && minor == 15) {
|
if (major == 11 && minor == 15) {
|
||||||
// KOR and TWN can do normal seedminer
|
// KOR and TWN can do normal seedminer
|
||||||
// All other O3DS must Mii mine
|
// All other O3DS must Mii mine
|
||||||
if (region != "K" && region != "T") do_redirect = true;
|
if (region != "K" && region != "T") do_redirect = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_redirect) {
|
if (do_redirect) {
|
||||||
window.location.href = "seedminer-(mii)";
|
window.location.href = "seedminer-(mii)";
|
||||||
return true;
|
return true;
|
||||||
|
@ -150,8 +156,8 @@ function can_seedminer(major, minor, native, region, model) {
|
||||||
else if (region == "T") do_redirect_twn = true;
|
else if (region == "T") do_redirect_twn = true;
|
||||||
}
|
}
|
||||||
// KOR O3DS on any version should update to 11.16
|
// KOR O3DS on any version should update to 11.16
|
||||||
else if (model == 0 && region == "K") do_redirect_sysupdate_kor = true;
|
else if (model == DEVICE_O3DS && region == "K") do_redirect_sysupdate_kor = true;
|
||||||
// KOR O3DS on any version should update to 11.16
|
// TWN on any version should update to 11.16
|
||||||
else if (region == "T") do_redirect_sysupdate_twn = true;
|
else if (region == "T") do_redirect_sysupdate_twn = true;
|
||||||
|
|
||||||
if (do_redirect_sysupdate_twn) {
|
if (do_redirect_sysupdate_twn) {
|
||||||
|
@ -182,29 +188,29 @@ function can_seedminer(major, minor, native, region, model) {
|
||||||
General exploits are as follows:
|
General exploits are as follows:
|
||||||
- 1.0 - 11.3
|
- 1.0 - 11.3
|
||||||
- Soundhax, compatible in all regions, all models
|
- Soundhax, compatible in all regions, all models
|
||||||
- 11.4 - 11.13 with matching NVer for each version:
|
- 11.4 - 11.13 with matching NVer for each version (and some KOR quirk):
|
||||||
- SSLoth-Browser, doesn't work on cart-updated FW
|
- SSLoth-Browser, doesn't work on cart-updated FW
|
||||||
- O3DS & 11.4 - 11.14 & any cart-updated FW between said version:
|
- O3DS & 11.4 - 11.14 & any cart-updated FW between said version:
|
||||||
- safecerthax, compatible in all regions, O3DS only
|
- safecerthax, compatible in all regions, O3DS only
|
||||||
- This way O3DS still gets an easy way to install something if browser isn't functional
|
- This way O3DS still gets an easy way to install something if browser isn't functional
|
||||||
- N3DS & 11.14 - 11.15 (EUR / JPN)
|
- N3DS & 11.14 - 11.15 (EUR / JPN / USA)
|
||||||
- Update and do 11.17 guide
|
- Update and do 11.17 guide
|
||||||
- O3DS & 11.15:
|
- O3DS & 11.15:
|
||||||
- Not implemented in this guide
|
- Mii mine
|
||||||
- 11.16 (KOR is O3DS only):
|
- 11.16:
|
||||||
- Seedminer
|
- Seedminer
|
||||||
- KOR N3DS 11.16, N3DS & 11.17 (EUR / JPN / USA):
|
- N3DS & 11.17 (EUR / JPN / USA):
|
||||||
- super-skaterhax
|
- super-skaterhax
|
||||||
- O3DS & 11.17:
|
- O3DS & 11.17:
|
||||||
- Unhackable
|
- Unhackable
|
||||||
*/
|
*/
|
||||||
function redirect() {
|
function redirect() {
|
||||||
var major = document.getElementById("major");
|
let major = document.getElementById("major");
|
||||||
var minor = document.getElementById("minor");
|
let minor = document.getElementById("minor");
|
||||||
var nver = document.getElementById("nver");
|
let nver = document.getElementById("nver");
|
||||||
var region = document.getElementById("region");
|
let region = document.getElementById("region");
|
||||||
var isN3DS = document.getElementById("new3DS").checked;
|
let isN3DS = document.getElementById("new3DS").checked;
|
||||||
var isO3DS = document.getElementById("old3DS").checked;
|
let isO3DS = document.getElementById("old3DS").checked;
|
||||||
document.getElementById("result_noneSelected").style.display = "none";
|
document.getElementById("result_noneSelected").style.display = "none";
|
||||||
document.getElementById("result_invalidVersion").style.display = "none";
|
document.getElementById("result_invalidVersion").style.display = "none";
|
||||||
document.getElementById("result_methodUnavailable").style.display = "none";
|
document.getElementById("result_methodUnavailable").style.display = "none";
|
||||||
|
@ -217,18 +223,18 @@ function redirect() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// O3DS = 0
|
// Realistically only one of these should be possible with the given elements
|
||||||
// N3DS = 1
|
let model = -1;
|
||||||
var model = 0;
|
if(isO3DS) model = DEVICE_O3DS
|
||||||
if(isN3DS) model = 1;
|
else if(isN3DS) model = DEVICE_N3DS;
|
||||||
|
|
||||||
let redirected = [
|
let redirected = [
|
||||||
can_soundhax,
|
can_soundhax,
|
||||||
can_ssloth,
|
can_ssloth,
|
||||||
can_safecerthax,
|
can_safecerthax,
|
||||||
can_miimine,
|
can_miimine,
|
||||||
can_seedminer,
|
can_seedminer,
|
||||||
can_superskaterhax,
|
can_superskaterhax,
|
||||||
].some(func => func(major.value, minor.value, nver.value, region.value, model));
|
].some(func => func(major.value, minor.value, nver.value, region.value, model));
|
||||||
if (redirected) return true;
|
if (redirected) return true;
|
||||||
|
|
||||||
|
|
2
feed.xml
2
feed.xml
|
@ -1 +1 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator><link href="https://3ds.hacks.guide/feed.xml" rel="self" type="application/atom+xml" /><link href="https://3ds.hacks.guide/" rel="alternate" type="text/html" /><updated>2023-05-30T17:44:28+00:00</updated><id>https://3ds.hacks.guide/feed.xml</id><title type="html">3DS Hacks Guide</title><subtitle>A complete guide to 3DS custom firmware</subtitle><author><name>Nintendo Homebrew</name></author></feed>
|
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator><link href="https://3ds.hacks.guide/feed.xml" rel="self" type="application/atom+xml" /><link href="https://3ds.hacks.guide/" rel="alternate" type="text/html" /><updated>2023-05-30T18:11:25+00:00</updated><id>https://3ds.hacks.guide/feed.xml</id><title type="html">3DS Hacks Guide</title><subtitle>A complete guide to 3DS custom firmware</subtitle><author><name>Nintendo Homebrew</name></author></feed>
|
Loading…
Reference in a new issue