Skip to content

Commit

Permalink
automatically replace link to file accordingly to selected version
Browse files Browse the repository at this point in the history
  • Loading branch information
danny8376 authored and lifehackerhansol committed Oct 7, 2024
1 parent 0fc307d commit 59cb3e1
Show file tree
Hide file tree
Showing 13 changed files with 264 additions and 37 deletions.
8 changes: 8 additions & 0 deletions docs/el_GR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Εγκατάσταση του boot9strap (Soundhax)

:::details Τεχνικές λεπτομέρειες (προαιρετικό)
Expand Down
1 change: 1 addition & 0 deletions docs/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
noneSelected: System model is required.
invalidVersion: This doesn't seem to be a valid system version.
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---
Expand Down
8 changes: 8 additions & 0 deletions docs/hu_HU/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Boot9strap telepítése (Soundhax)

:::details Technikai részletek (opcionális)
Expand Down
8 changes: 8 additions & 0 deletions docs/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installing boot9strap (Soundhax)

::: details Technical Details (optional)
Expand Down
8 changes: 8 additions & 0 deletions docs/installing-boot9strap-(super-skaterhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/skater-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installing boot9strap (super-skaterhax)

::: details Technical Details (optional)
Expand Down
8 changes: 8 additions & 0 deletions docs/it_IT/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installazione di boot9strap (Soundhax)

:::details Dettagli tecnici (opzionale)
Expand Down
8 changes: 8 additions & 0 deletions docs/ko_KR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# boot9strap 설치 (Soundhax)

:::details 기술적 상세 정보 (선택 사항)
Expand Down
8 changes: 8 additions & 0 deletions docs/pt_BR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Instalando boot9strap (Soundhax)

:::details Detalhes Técnicos (opcional)
Expand Down
66 changes: 66 additions & 0 deletions docs/public/assets/js/common.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
Copyright (C) 2024 Nintendo Homebrew
SPDX-License-Identifier: MIT
*/

(() => {

// probably not really needed?
function c(key, value) {
Object.defineProperty(window, key, { value, writable: false, enumerable: true, configurable: false });
}

if (!window.COMMON_LOADED) {
c("COMMON_LOADED", true);

// Possible max minor for each major, major as key
const major_minor_map = {
0: -1, // invalidate all 0.x
1: 1,
2: 2,
3: 1,
4: 5,
5: 1,
6: 4,
7: 2,
8: 1,
9: 9,
10: 7,
11: 17
}

// Validate version
// CHN/TWN doesn't have new model
// KOR/CHN/TWN doesn't have 11.17 currently
c("validate_version", (major, minor, native, region, model) => {
if (model == DEVICE_N3DS && ["C", "T"].includes(region)) {
return false;
}

if (major == 11 && minor == 17 && ["K", "C", "T"].includes(region)) {
return false;
}

const minor_max = major_minor_map[major];
if (!isNaN(minor_max) && minor > minor_max) {
return false;
}

return true;
});

c("DEVICE_N3DS", 1);
c("DEVICE_O3DS", 0);

c("FILENAME_REGION_MAP", {
"U": "usa",
"E": "eur",
"J": "jpn",
"K": "kor",
"C": "cnh",
"T": "twn",
});
}

})();
33 changes: 33 additions & 0 deletions docs/public/assets/js/link-common.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
Copyright (C) 2024 DannyAAM
SPDX-License-Identifier: MIT
*/

(() => {

const selectedVersion = sessionStorage.getItem("selected_version");
if (selectedVersion && window.MATCH && window.generateLink) {
function replaceLink() {
const {major, minor, nver, region, model} = JSON.parse(selectedVersion);
if (!validate_version(major, minor, nver, region, model)) {
return;
}

const links = document.querySelectorAll(`a[href*="${MATCH}"]`);
for(const link of links) {
const newLink = generateLink(major, minor, nver, region, model, link.href);
if (newLink) {
link.setAttribute("href", newLink);
}
}
}

if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", replaceLink);
} else {
replaceLink();
}
}

})();
48 changes: 11 additions & 37 deletions docs/public/assets/js/selecting.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,11 @@
SPDX-License-Identifier: MIT
*/

const DEVICE_N3DS = 1;
const DEVICE_O3DS = 0;

// Possible max minor for each major, major as key
const major_minor_map = {
0: -1, // invalidate all 0.x
1: 1,
2: 2,
3: 1,
4: 5,
5: 1,
6: 4,
7: 2,
8: 1,
9: 9,
10: 7,
11: 17
}

// Validate version
// CHN/TWN doesn't have new model
// KOR/CHN/TWN doesn't have 11.17 currently
function validate_version(major, minor, native, region, model) {
if (model == DEVICE_N3DS && ["C", "T"].includes(region)) {
return false;
}
// required as vitepress don't always fully reload page
// without putting script in its own scope will have const redefine issue
(() => {

if (major == 11 && minor == 17 && ["K", "C", "T"].includes(region)) {
return false;
}

const minor_max = major_minor_map[major];
if (!isNaN(minor_max) && minor > minor_max) {
return false;
}

return true;
}
// validate_version moved to common.js

// Soundhax
// 1.0-11.3
Expand Down Expand Up @@ -208,6 +175,9 @@ function redirect() {
return;
}

// Store selected version for some later pages
sessionStorage.setItem("selected_version", JSON.stringify({major, minor, nver, region, model}));

const redirected = [
can_soundhax,
can_ssloth,
Expand All @@ -221,3 +191,7 @@ function redirect() {
document.getElementById("result_methodUnavailable").style.display = "block";
return false;
}

window.redirect = redirect;

})();
43 changes: 43 additions & 0 deletions docs/public/assets/js/skater-link.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
Copyright (C) 2024 DannyAAM
SPDX-License-Identifier: MIT
*/

(() => {

const BASE = "https://hacksguidewiki.sfo3.digitaloceanspaces.com/hacksguidewiki/Super-skaterhax";

window.MATCH = "skater.nintendohomebrew.com";

window.generateLink = (major, minor, nver, region, model, link) => {
const fileRegion = FILENAME_REGION_MAP[region];

if (model != DEVICE_N3DS || major < 11) {
return null;
}

let fileVersion;
switch (region) {
case "U":
if (minor == 17) {
fileVersion = "v11.17";
} else {
fileVersion = "pre17";
}
break;
case "K":
if (minor == 17) {
return null;
} else {
fileVersion = "pre17";
}
break;
default:
fileVersion = "all";
break;
}
return `${BASE}-${fileRegion}-${fileVersion}.zip`;
}

})();
54 changes: 54 additions & 0 deletions docs/public/assets/js/soundhax-link.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
Copyright (C) 2024 DannyAAM
SPDX-License-Identifier: MIT
*/

(() => {

const BASE = "https://github.com/nedwill/soundhax/raw/master/soundhax";

window.MATCH = "soundhax.com";

window.generateLink = (major, minor, nver, region, model, link) => {
const fileRegion = FILENAME_REGION_MAP[region];

if (model == DEVICE_N3DS) {
return `${BASE}-${fileRegion}-n3ds.m4a`;
}

if (model == DEVICE_O3DS) {
if (major <= 2 && ["K", "C", "T"].includes(region)) {
return null;
}

let fileVersion;
switch (parseInt(major)) {
case 1:
fileVersion = "pre2.1";
break;
case 2:
// 2.1 special case:
// - if nver lower than 4, use pre 2.1, as sound app is not updated
// - otherwise, use 2.1/2.2 for newer soundhax app
if (minor == 1 && nver < 4) {
fileVersion = "pre2.1";
} else {
fileVersion = "v2.1and2.2";
}
break;
case 3:
case 4:
fileVersion = "v3.xand4.x";
break;
default: // 5.x and later... maybe reject past 11.3?
fileVersion = "post5.0";
break;
}
return `${BASE}-${fileRegion}-o3ds-${fileVersion}.m4a`;
}

return null; // wtf?
}

})();

0 comments on commit 59cb3e1

Please sign in to comment.