diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..17337ab5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,375 @@ +# Created by https://www.toptal.com/developers/gitignore/api/hugo,python,pycharm+all,visualstudiocode,kate,emacs,vim +# Edit at https://www.toptal.com/developers/gitignore?templates=hugo,python,pycharm+all,visualstudiocode,kate,emacs,vim + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +### Hugo ### +# Generated files by hugo +/public/ +/resources/_gen/ +/assets/jsconfig.json +hugo_stats.json + +# Executable may be added to repository +hugo.exe +hugo.darwin +hugo.linux + +# Temporary lock file while building +/.hugo_build.lock + +### Kate ### +# Swap Files # +.*.kate-swp +.swp.* + +### PyCharm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PyCharm+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# End of https://www.toptal.com/developers/gitignore/api/hugo,python,pycharm+all,visualstudiocode,kate,emacs,vim + +data_imports/title_list_*.csv diff --git a/11_update_links.py b/11_update_links.py new file mode 100644 index 00000000..6d4d4ebd --- /dev/null +++ b/11_update_links.py @@ -0,0 +1,124 @@ +import argparse +import functools +import re +import sys +from pathlib import Path +from typing import Optional, Dict, List + +ROOT_DIR = Path(__file__).resolve().parent +CONTENT_DIR = ROOT_DIR / "content" +MDLINK_RE = re.compile(r']\(([^ ]+)(\s+"[^"]*")?\)') + + +parser = argparse.ArgumentParser() +parser.add_argument("-a", "--allow-ambiguous", action="store_true") +args = parser.parse_args() +fail_on_ambiguous = not args.allow_ambiguous + + +# Build page index +pages: Dict[str, Path] = {} +ambiguous: Dict[str, List[Path]] = {} +for page_path in CONTENT_DIR.rglob("*.md"): + # _index are accessed through their directory name + if page_path.name.startswith("_index"): + path = page_path.parent + if path == CONTENT_DIR: + name = "/" + else: + name = page_path.parent.name + else: + name = page_path.stem + path = page_path.with_suffix("") + if name in pages: + ambiguous[name] = [pages[name]] + del pages[name] + if name in ambiguous: + ambiguous[name].append(path) + else: + pages[name] = path + +print(f"{len(pages)} pages in index") + +if ambiguous: + print("Ambiguous names found:") + for name, paths in ambiguous.items(): + print(f"- {name}") + for path in paths: + print(f" at {path.relative_to(CONTENT_DIR)}") + if fail_on_ambiguous: + print( + "Refusing to continue with ambiguous names (or rerun with --allow-ambiguous)" + ) + sys.exit(1) + +# Update links +total_pages = 0 +updated_bookhref = 0 +processed_mdlinks = 0 +external_mdlinks = 0 +untouched_mdlinks = 0 +updated_mdlinks = 0 +broken_mdlinks = 0 +for page_path in CONTENT_DIR.rglob("*.md"): + total_pages += 1 + content = page_path.read_text() + + # Update frontmatter redirections + lines = content.splitlines() + if content[0] == "+++": + for i, line in enumerate(lines[1:], start=1): + if line.startswith("BookHref = '../"): + redir_target_name = line.strip()[len("BookHref = '../") : -1] + redir_target = pages[redir_target_name] + lines[i] = ( + f"BookHref = '../{redir_target.relative_to(page_path.parent, walk_up=True)}'" + ) + updated_bookhref += 1 + break + if line == "+++": + break + content = "\n".join(lines) + + # Update markdown links + def repl_mdlink(current_page_path: Path, match: re.Match): + global processed_mdlinks + processed_mdlinks += 1 + target: str = match.group(1) + mdlink_suffix: str = match.group(2) or "" + anchor: Optional[str] = None + if "#" in target: + target, anchor = target.split("#") + # Same page anchor + if len(target) == 0: + return match.group(0) + # External links + if target.startswith("http:") or target.startswith("https:"): + global external_mdlinks + external_mdlinks += 1 + return match.group(0) + try: + target_page = pages[target.split("/")[-1]] + new_link = ( + f"]({target_page.relative_to(current_page_path.parent, walk_up=True)}" + f'{"#" + anchor if anchor else ""}{mdlink_suffix})' + ) + if new_link == match.group(0): + global untouched_mdlinks + untouched_mdlinks += 1 + else: + global updated_mdlinks + updated_mdlinks += 1 + return new_link + except KeyError: + global broken_mdlinks + broken_mdlinks += 1 + return match.group(0) + + content = MDLINK_RE.sub(functools.partial(repl_mdlink, page_path), content) + page_path.write_text(content) + +print( + f"Processed {processed_mdlinks} Markdown links ({untouched_mdlinks} untouched + {updated_mdlinks} updated + " + f"{broken_mdlinks} broken + {external_mdlinks} external), {updated_bookhref} BookHrefs in {total_pages} pages" +) diff --git a/assets/_custom.scss b/assets/_custom.scss index 4ae548b0..9ff9520b 100644 --- a/assets/_custom.scss +++ b/assets/_custom.scss @@ -1,3 +1,120 @@ +/* You can add custom styles here. */ + +// @import "plugins/numbered"; +// @import "plugins/scrollbars"; + +:root { + --gray-50: #fafbfc; + --table-border: var(--gray-500); + --table-2n-background: var(--gray-100); + --broken-link-color: #ba0000; +} +@media(prefers-color-scheme: dark) { + :root { + --gray-50: rgba(255, 255, 255, 0.05); + --table-border: var(--gray-200); + --table-2n-background: var(--gray-50); + --broken-link-color: #ff9595; + } +} + .container { - max-width: 100rem + max-width: 100rem; +} + +.markdown { + table tr { + th, td { + padding: .25rem .5rem; + border-color: var(--table-border); + } + &:nth-child(2n) { + background: var(--table-2n-background); + } + } + hr { + background: var(--gray-500); + } +} + +.ipc.request, .ipc.response { + tr>td:first-child { + text-align: center; + } + tr.translate { + &:last-child { + &>td:nth-child(3) { + border-bottom-style: solid; + } + } + &>td:nth-child(3) { + border-bottom-style: dashed; + } + &.entry>td:nth-child(3) { + border-top-style: none; + } + &.descriptor>td:nth-child(3) { + font-style: italic; + } + } + tr.header { + .description { + height: 100%; + padding: 0; + + div { + height: 100%; + display: inline-table; + + span, abbr { + display: table-cell; + vertical-align: middle; + } + span { + padding: 0 0.5rem 0 0.25rem; + + &:first-child { + padding-left: 0.5rem; + } + } + abbr { + background: var(--gray-100); + border: 1px solid var(--gray-200); + border-top: none; + border-bottom: none; + padding: 0 0.25rem; + } + } + } + } +} + +.rpc.info { + .since, .until, .for { + display: inline-block; + padding: 0 0.25rem; + border-radius: 0.25rem; + font-size: 80%; + background: var(--gray-200); + } +} + +.service, .rpc.call { + font-family: 'Roboto Mono', monospace; +} + +.struct { + caption { + caption-side: top; + } +} + +.pagecodelinks>a { + display: inline-flex; + align-items: center; + margin-right: 1em; +} + +a.broken { + color: var(--broken-link-color); } diff --git a/config/_default/config.toml b/config/_default/config.toml index 8c28730a..a2470441 100644 --- a/config/_default/config.toml +++ b/config/_default/config.toml @@ -7,6 +7,9 @@ theme = "hugo-book" # Broken, see https://github.com/gohugoio/hugo/issues/12130 # relativeURLs = true +refLinksErrorLevel = 'warning' +refLinksNotFoundURL = '/missing' + [taxonomies] categories = 'categories' diff --git a/config/_default/params.toml b/config/_default/params.toml index 96ae7e26..b05f38c6 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -1,6 +1,9 @@ BookRepo = 'https://github.com/mikage-emu/3dbrew' BookEditPath = 'edit/main' BookLogo = '3dbrew2.png' +BookViewPath = 'blob/main' +BookViewSuffix = '?plain=1' +BookSection = '/' [article] readingTime = false diff --git a/content/FS:ExportIntegrityVerificationSeed.md b/content/FS:ExportIntegrityVerificationSeed.md index c3e0dfee..1c6f7164 100644 --- a/content/FS:ExportIntegrityVerificationSeed.md +++ b/content/FS:ExportIntegrityVerificationSeed.md @@ -20,5 +20,5 @@ title = 'FS:ExportIntegrityVerificationSeed' # Description This encrypts -[nand/private/movable.sed](nand/private/movable.sed "wikilink") to the +[nand/private/movable.sed](Nand/private/movable.sed "wikilink") to the output buffer, and writes the AES-CBC MAC to the output buffer as well. diff --git a/content/FS:ImportIntegrityVerificationSeed.md b/content/FS:ImportIntegrityVerificationSeed.md index 4fb55d5a..08b8ae0f 100644 --- a/content/FS:ImportIntegrityVerificationSeed.md +++ b/content/FS:ImportIntegrityVerificationSeed.md @@ -21,4 +21,4 @@ title = 'FS:ImportIntegrityVerificationSeed' This decrypts the input SEED and verifies it with the input AES-CBC MAC, verifies the RSA-signature, then writes the data to -[nand/private/movable.sed](nand/private/movable.sed "wikilink"). +[nand/private/movable.sed](Nand/private/movable.sed "wikilink"). diff --git a/content/FSPXI:ExportIntegrityVerificationSeed.md b/content/FSPXI:ExportIntegrityVerificationSeed.md index 848d7ec0..1f36b2aa 100644 --- a/content/FSPXI:ExportIntegrityVerificationSeed.md +++ b/content/FSPXI:ExportIntegrityVerificationSeed.md @@ -20,5 +20,5 @@ title = 'FSPXI:ExportIntegrityVerificationSeed' # Description This encrypts -[nand/private/movable.sed](nand/private/movable.sed "wikilink") to the +[nand/private/movable.sed](Nand/private/movable.sed "wikilink") to the output buffer, and writes the AES-CBC MAC to the output buffer as well. diff --git a/content/FSPXI:ImportIntegrityVerificationSeed.md b/content/FSPXI:ImportIntegrityVerificationSeed.md index 1cb376fd..4eba65cd 100644 --- a/content/FSPXI:ImportIntegrityVerificationSeed.md +++ b/content/FSPXI:ImportIntegrityVerificationSeed.md @@ -22,10 +22,10 @@ title = 'FSPXI:ImportIntegrityVerificationSeed' | Offset | Size | Description | |--------|-------|----------------------------------------------------------------------------------------------------------------------------------| | 0x0 | 0x10 | AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED. | -| 0x10 | 0x120 | The [nand/private/movable.sed](nand/private/movable.sed "wikilink"), encrypted with AES-CBC using the above MAC for the counter. | +| 0x10 | 0x120 | The [nand/private/movable.sed](Nand/private/movable.sed "wikilink"), encrypted with AES-CBC using the above MAC for the counter. | # Description This decrypts the input SEED and verifies it with the input AES-CBC MAC, verifies the RSA-signature, then writes the data to -[nand/private/movable.sed](nand/private/movable.sed "wikilink"). +[nand/private/movable.sed](Nand/private/movable.sed "wikilink"). diff --git a/content/Filesystem_services.md b/content/Filesystem_services.md index c9db1fd9..1dbd1f64 100644 --- a/content/Filesystem_services.md +++ b/content/Filesystem_services.md @@ -567,7 +567,7 @@ The SEEDDB savedata contains the title-unique seed-data used for the new | Offset | Size | Description | |--------|-------|----------------------------------------------------------------------------------------------------------------------------------| | 0x0 | 0x10 | AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED. | -| 0x10 | 0x120 | The [nand/private/movable.sed](nand/private/movable.sed "wikilink"), encrypted with AES-CBC using the above MAC for the counter. | +| 0x10 | 0x120 | The [nand/private/movable.sed](Nand/private/movable.sed "wikilink"), encrypted with AES-CBC using the above MAC for the counter. | ## ExtSaveDataInfo diff --git a/content/Flash_Filesystem.md b/content/Flash_Filesystem.md index acded5fd..cf55dff4 100644 --- a/content/Flash_Filesystem.md +++ b/content/Flash_Filesystem.md @@ -126,7 +126,7 @@ exactly the same as [SD](SD_Filesystem "wikilink"), except savegames are stored under the [nand/data/<ID0>/sysdata](System_SaveData "wikilink") directory instead. The sub-directory name under [nand/data](nand/data "wikilink") is the SHA256 hash over the -[movable.sed](nand/private/movable.sed "wikilink") keyY. This +[movable.sed](Nand/private/movable.sed "wikilink") keyY. This nand/data/<ID0> directory is the NAND equivalent of the "sdmc/Nintendo 3DS/<ID0>/<ID1>" directory, however the data contained here is stored in cleartext. The movable.sed keyY is only used for AES MACs for diff --git a/content/GPU/Commands.md b/content/GPU/Commands.md index a9fea66d..e0fa17e1 100644 --- a/content/GPU/Commands.md +++ b/content/GPU/Commands.md @@ -2,4 +2,4 @@ title = 'Commands' +++ -Merged with [GPU/Internal_Registers](GPU/Internal_Registers "wikilink") +Merged with [GPU/Internal_Registers](Internal_Registers "wikilink") diff --git a/content/GPU/External_Registers.md b/content/GPU/External_Registers.md index 8d91cc46..26a64218 100644 --- a/content/GPU/External_Registers.md +++ b/content/GPU/External_Registers.md @@ -6,7 +6,7 @@ categories = ["GPU"] This page describes the address range accessible from the ARM11, used to configure the basic GPU functionality. For information about the internal registers used for 3D rendering, see [GPU/Internal -Registers](GPU/Internal_Registers "wikilink"). +Registers](Internal_Registers "wikilink"). ## Map @@ -27,7 +27,7 @@ these addresses relative to 0x1EB00000. | 0x1EF00400 | 0x10400400 | 0x100 | [Framebuffer Setup](#lcd_source_framebuffer_setup "wikilink") "PDC0" (top screen) | | | 0x1EF00500 | 0x10400500 | 0x100 | [Framebuffer Setup](#lcd_source_framebuffer_setup "wikilink") "PDC1" (bottom) | | | 0x1EF00C00 | 0x10400C00 | ? | [Transfer Engine](#transfer_engine "wikilink") "DMA" | | -| 0x1EF01000/0x10401000 - 0x1EF01C00/0x10401C00 maps to [GPU internal registers](GPU/Internal_Registers "wikilink"). These registers are usually not read/written directly here, but are written using the command list interface below (corresponding to the GPUREG_CMDBUF_\* internal registers) | | | | | +| 0x1EF01000/0x10401000 - 0x1EF01C00/0x10401C00 maps to [GPU internal registers](Internal_Registers "wikilink"). These registers are usually not read/written directly here, but are written using the command list interface below (corresponding to the GPUREG_CMDBUF_\* internal registers) | | | | | | 0x1EF01000 | 0x10401000 | 0x4 | ? | Writes 0 on GPU init and before the Command List is used | | 0x1EF01080 | 0x10401080 | 0x4 | ? | Writes 0x12345678 on GPU init. | | 0x1EF010C0 | 0x104010C0 | 0x4 | ? | Writes 0xFFFFFFF0 on GPU init. | @@ -51,7 +51,7 @@ filling unit. Upon completion, the hardware unsets bit0 and sets bit1 and fires interrupt PSC0. These registers are used by [GX -SetMemoryFill](GSP_Shared_Memory#gx_setmemoryfill "wikilink"). +SetMemoryFill](../GSP_Shared_Memory#gx_setmemoryfill "wikilink"). ## LCD Source Framebuffer Setup @@ -489,7 +489,7 @@ output twice) if used outside of userland. | 0x1EF00C24 | TextureCopy input line width (bits 0-15) and gap (bits 16-31), in 16 byte units. | | 0x1EF00C28 | TextureCopy output line width and gap. | -These registers are used by [GX command](GSP_Shared_Memory "wikilink") 3 +These registers are used by [GX command](../GSP_Shared_Memory "wikilink") 3 and 4. For cmd4, \*0x1EF00C18 \|= 1 is used instead of just writing value 1. The DisplayTransfer registers are only used if bit 3 of the flags is unset and ignored otherwise. The TextureCopy registers are @@ -550,8 +550,8 @@ in the GPU hanging while attempting to process this TextureCopy. | 0x1EF018F0 | Setting bit0 to 1 enables processing GPU command execution. Upon completion, bit0 seems to be reset to 0. | These 3 registers are used by [GX -command](GSP_Shared_Memory "wikilink") 1. This is used for [GPU -commands](GPU/Internal_Registers "wikilink"). +command](../GSP_Shared_Memory "wikilink") 1. This is used for [GPU +commands](Internal_Registers "wikilink"). ## Framebuffers @@ -606,4 +606,4 @@ displaying the left/right framebuffer each frame. - 0x1EF00478 = 1, doesn't stay 1, read as 0 - 0x1EF00474 = 0x10501 -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Fragment_Lighting.md b/content/GPU/Fragment_Lighting.md index f2f0499a..73d64d02 100644 --- a/content/GPU/Fragment_Lighting.md +++ b/content/GPU/Fragment_Lighting.md @@ -156,4 +156,4 @@ which describes the feature in more detail: information about normals and tangents (and how quaternions are easier to interpolate than vectors). -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/GL_Arrays.md b/content/GPU/GL_Arrays.md index 1c790cbc..11684199 100644 --- a/content/GPU/GL_Arrays.md +++ b/content/GPU/GL_Arrays.md @@ -2,4 +2,4 @@ title = 'GL Arrays' +++ -Merged into [GPU/Programming_Guide](GPU/Programming_Guide "wikilink"). +Merged into [GPU/Programming_Guide](Programming_Guide "wikilink"). diff --git a/content/GPU/Internal_Registers.md b/content/GPU/Internal_Registers.md index 8630f288..a4aa2d4d 100644 --- a/content/GPU/Internal_Registers.md +++ b/content/GPU/Internal_Registers.md @@ -2122,7 +2122,7 @@ This register enables the early depth test. This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [display -transfer flags](GPU/External_Registers#transfer_engine "wikilink"). It +transfer flags](External_Registers#transfer_engine "wikilink"). It is unknown if there are any advantages to using the 32x32 format. Render block mode values: @@ -2844,9 +2844,9 @@ This register triggers clearing the post-vertex cache. This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA*i*. See [GPU/Fixed Vertex -Attributes](GPU/Fixed_Vertex_Attributes "wikilink") and +Attributes](Fixed_Vertex_Attributes "wikilink") and [GPU/Immediate-Mode Vertex -Submission](GPU/Immediate-Mode_Vertex_Submission "wikilink") for usage +Submission](Immediate-Mode_Vertex_Submission "wikilink") for usage info. ### GPUREG_FIXEDATTRIB_DATA*i* @@ -3259,4 +3259,4 @@ offset initially set by [GPUREG_*SH*_OPDESCS_INDEX](#gpureg_sh_opdescs_index "wikilink"). The offset in question is incremented after each write to this register. -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Pitfalls.md b/content/GPU/Pitfalls.md index 6eed9b50..72b7a3e1 100644 --- a/content/GPU/Pitfalls.md +++ b/content/GPU/Pitfalls.md @@ -11,7 +11,7 @@ used in the 3DS. ### Vertex attribute alignment Vertex components which are defined through -[GPUREG_ATTRIBBUFFERi_CONFIG1](GPU/Internal_Registers#gpureg_attribbufferi_config1 "wikilink") +[GPUREG_ATTRIBBUFFERi_CONFIG1](Internal_Registers#gpureg_attribbufferi_config1 "wikilink") will be accessed aligned by the GPU. - Vertex attributes will be aligned to their component element size. @@ -22,7 +22,7 @@ will be accessed aligned by the GPU. ### Vertex stride in GPUREG_ATTRIBBUFFERi_CONFIG2 The vertex stride set in -[GPUREG_ATTRIBBUFFERi_CONFIG2](GPU/Internal_Registers#gpureg_attribbufferi_config2 "wikilink") +[GPUREG_ATTRIBBUFFERi_CONFIG2](Internal_Registers#gpureg_attribbufferi_config2 "wikilink") must match the actual size of the vertex contained in the buffer or the PICA will freeze or it won't draw anything. @@ -32,17 +32,17 @@ accordingly with padding attributes. ### Output mapping in GPUREG_SH_OUTMAP_MASK The output masking in -[GPUREG_SH_OUTMAP_MASK](GPU/Internal_Registers#gpureg_sh_outmap_mask "wikilink") +[GPUREG_SH_OUTMAP_MASK](Internal_Registers#gpureg_sh_outmap_mask "wikilink") influences how the registers starting at -[GPUREG_SH_OUTMAP_Oi](GPU/Internal_Registers#gpureg_sh_outmap_oi "wikilink") +[GPUREG_SH_OUTMAP_Oi](Internal_Registers#gpureg_sh_outmap_oi "wikilink") map to outputs in the shader. If an output is disabled in -[GPUREG_SH_OUTMAP_MASK](GPU/Internal_Registers#gpureg_sh_outmap_mask "wikilink") +[GPUREG_SH_OUTMAP_MASK](Internal_Registers#gpureg_sh_outmap_mask "wikilink") it means that no slot in the -[GPUREG_SH_OUTMAP_Oi](GPU/Internal_Registers#gpureg_sh_outmap_oi "wikilink") +[GPUREG_SH_OUTMAP_Oi](Internal_Registers#gpureg_sh_outmap_oi "wikilink") registers is consumed. -[GPUREG_SH_OUTMAP_TOTAL](GPU/Internal_Registers#gpureg_sh_outmap_total "wikilink") +[GPUREG_SH_OUTMAP_TOTAL](Internal_Registers#gpureg_sh_outmap_total "wikilink") configures the number of used consecutive slots in the outmap. Example: @@ -67,4 +67,4 @@ PICA freezes. Having 2 consecutive MOVA instructions will freeze the PICA. This can be relaxed by placing a NOP between 2 MOVAs or by rearranging the code. -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Primitive_Engine.md b/content/GPU/Primitive_Engine.md index 90489593..f33f9dde 100644 --- a/content/GPU/Primitive_Engine.md +++ b/content/GPU/Primitive_Engine.md @@ -17,4 +17,4 @@ sequence of indices in an index array with a primitive size. This is used for various effects, for example Catmull-Clark subdivision and Loop subdivision. It is unknown how this feature is enabled specifically. -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Procedural_Texture_Generation.md b/content/GPU/Procedural_Texture_Generation.md index 720d8847..b264a8eb 100644 --- a/content/GPU/Procedural_Texture_Generation.md +++ b/content/GPU/Procedural_Texture_Generation.md @@ -5,14 +5,14 @@ categories = ["GPU"] The 3DS GPU supports procedural generation of texture data using [texture unit -3](GPU/Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). Little +3](Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). Little is known about this feature, albeit a few public hints have been dropped. The contents of this page are solely based on reports on a [presentation](http://www.4gamer.net/games/017/G001762/20120822007/) given by DMP. The related GPU registers can be found starting -[here](GPU/Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). +[here](Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). ## Overview @@ -33,7 +33,7 @@ this other than that there are three noise parameters: - Phase These parameters are configured starting -[here](GPU/Internal_Registers#gpureg_texunit3_proctex1 "wikilink"). +[here](Internal_Registers#gpureg_texunit3_proctex1 "wikilink"). ## Repeat Module @@ -46,7 +46,7 @@ seem to be configurable beyond that. The U’’ and V’’ coordinates are used to generate a scalar value in the range \[0;1\] from the wrapped coordinates using one of six functions documented -[here](GPU/Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). +[here](Internal_Registers#gpureg_texunit3_proctex0 "wikilink"). The output of this function is named "g". @@ -60,6 +60,6 @@ There are two known options for F: The final texel color is determined by using the value of F(g) as an index into a configurable [lookup -table](GPU/Internal_Registers#gpureg_proctex_lut "wikilink"). +table](Internal_Registers#gpureg_proctex_lut "wikilink"). -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Programming_Guide.md b/content/GPU/Programming_Guide.md index 6325abad..1976cb43 100644 --- a/content/GPU/Programming_Guide.md +++ b/content/GPU/Programming_Guide.md @@ -6,7 +6,7 @@ categories = ["GPU"] This page is intended to contain more higher-level explanation of concepts and features provided by the 3DS GPU. For more detailed register-level information check [GPU/Internal -Registers](GPU/Internal_Registers "wikilink"). +Registers](Internal_Registers "wikilink"). # Geometry Pipeline @@ -19,7 +19,7 @@ used. They let you specify a fixed value, which will be assumed by the attribute for all vertices of the batch. To use a fixed attribute, set the bit corresponding to the attribute in -[GPUREG_ATTRIBBUFFERS_FORMAT_HIGH](GPU/Internal_Registers#gpureg_attribbuffers_format_high "wikilink") +[GPUREG_ATTRIBBUFFERS_FORMAT_HIGH](Internal_Registers#gpureg_attribbuffers_format_high "wikilink") and ensure that no vertex arrays are configured for the attribute. (Any configured arrays will override the fixed value, regardless of the bit setting.) Even if a vertex array isn't being used for the attribute it @@ -28,9 +28,9 @@ in the same register. To specify the actual value of the fixed attribute, write the attribute index to -[GPUREG_FIXEDATTRIB_INDEX](GPU/Internal_Registers#gpureg_fixedattrib_index "wikilink") +[GPUREG_FIXEDATTRIB_INDEX](Internal_Registers#gpureg_fixedattrib_index "wikilink") followed by writes with packed a float24 4-tuple to the 3 -[GPUREG_FIXEDATTRIB_DATA](GPU/Internal_Registers#gpureg_fixedattrib_data0 "wikilink") +[GPUREG_FIXEDATTRIB_DATA](Internal_Registers#gpureg_fixedattrib_data0 "wikilink") registers. The value is always specified as a float 4-component vector, the configured type is ignored. @@ -45,14 +45,14 @@ amount of memory and processing time appending the vertices to the command buffer. To use this feature, configure the number of attributes per vertex in -[GPUREG_VSH_NUM_ATTR](GPU/Internal_Registers#gpureg_vsh_num_attr "wikilink"). +[GPUREG_VSH_NUM_ATTR](Internal_Registers#gpureg_vsh_num_attr "wikilink"). (All settings in the registers related to the vertex loader are ignored.) Then setup the GPU and shaders the same as if doing a regular draw call with GPUREG_DRAWARRAYS or GPUREG_DRAWELEMENTS, but instead of writing to either register, write the value 0xF to -[GPUREG_FIXEDATTRIB_INDEX](GPU/Internal_Registers#gpureg_fixedattrib_index "wikilink") +[GPUREG_FIXEDATTRIB_INDEX](Internal_Registers#gpureg_fixedattrib_index "wikilink") and then follow by repeatedly writing vertex data to -[GPUREG_FIXEDATTRIB_DATA](GPU/Internal_Registers#gpureg_fixedattrib_datai "wikilink"). +[GPUREG_FIXEDATTRIB_DATA](Internal_Registers#gpureg_fixedattrib_datai "wikilink"). Each set of writes to the 3 data registers specifies one attribute and all attributes (as configured in GPUREG_VSH_NUM_ATTR) need to be @@ -61,34 +61,34 @@ vertices are specified. After finishing specifying vertices, follow with the same writes used after a draw arrays/elements. When drawing using triangle strips or fans, -[GPUREG_RESTART_PRIMITIVE](GPU/Internal_Registers#gpureg_restart_primitive "wikilink") +[GPUREG_RESTART_PRIMITIVE](Internal_Registers#gpureg_restart_primitive "wikilink") should be used to end the previous strip before (or while) drawing. ## Drawing elements The 3DS GPU is capable of drawing vertex + index arrays, triggered by -[GPUREG_DRAWELEMENTS](GPU/Internal_Registers#gpureg_drawelements "wikilink"). +[GPUREG_DRAWELEMENTS](Internal_Registers#gpureg_drawelements "wikilink"). A set of commands commonly used by the standard GL implementation to accomplish this is as follows: | Command Index | Register | Description | |---------------|------------------------------------------------------------------------------------------|---------------------------------------| -| 0 | [GPUREG_GEOSTAGE_CONFIG](GPU/Internal_Registers#gpureg_geostage_config "wikilink") | Set whether drawing triangle elements | -| 1-2 | [GPUREG_GEOSTAGE_CONFIG2](GPU/Internal_Registers#gpureg_geostage_config2 "wikilink") | Set whether drawing triangle elements | -| 3 | [GPUREG_PRIMITIVE_CONFIG](GPU/Internal_Registers#gpureg_primitive_config "wikilink") | Set primitive mode | -| 4 | [GPUREG_PRIMITIVE_CONFIG](GPU/Internal_Registers#gpureg_primitive_config "wikilink") | Set number of output map registers | -| 5 | [GPUREG_RESTART_PRIMITIVE](GPU/Internal_Registers#gpureg_restart_primitive "wikilink") | Trigger reset | -| 6 | [GPUREG_GEOSTAGE_CONFIG2](GPU/Internal_Registers#gpureg_geostage_config2 "wikilink") | Set function indicator to 0 | -| 7 | [GPUREG_INDEXBUFFER_CONFIG](GPU/Internal_Registers#gpureg_indexbuffer_config "wikilink") | Set offset and type | -| 8 | [GPUREG_NUMVERTICES](GPU/Internal_Registers#gpureg_numvertices "wikilink") | Set vertex count | -| 9 | [GPUREG_START_DRAW_FUNC0](GPU/Internal_Registers#gpureg_start_draw_func0 "wikilink") | Set mode to drawing | -| 10 | [GPUREG_DRAWELEMENTS](GPU/Internal_Registers#gpureg_drawelements "wikilink") | Trigger draw | -| 11 | [GPUREG_START_DRAW_FUNC0](GPU/Internal_Registers#gpureg_start_draw_func0 "wikilink") | Set mode to configuration | -| 12 | [GPUREG_VTX_FUNC](GPU/Internal_Registers#gpureg_vtx_func "wikilink") | Trigger post-vertex cache clear | -| 13 | [GPUREG_FRAMEBUFFER_FLUSH](GPU/Internal_Registers#gpureg_framebuffer_flush "wikilink") | Flush framebuffer | -| 14 | [GPUREG_GEOSTAGE_CONFIG](GPU/Internal_Registers#gpureg_geostage_config "wikilink") | Clear drawing triangle elements | -| 15 | [GPUREG_GEOSTAGE_CONFIG2](GPU/Internal_Registers#gpureg_geostage_config2 "wikilink") | Clear drawing triangle elements | -| 16 | [GPUREG_PRIMITIVE_CONFIG](GPU/Internal_Registers#gpureg_primitive_config "wikilink") | Clear primitive mode | -| 17 | [GPUREG_VSH_ENTRYPOINT](GPU/Internal_Registers#gpureg_vsh_entrypoint "wikilink") | Clear entry point | +| 0 | [GPUREG_GEOSTAGE_CONFIG](Internal_Registers#gpureg_geostage_config "wikilink") | Set whether drawing triangle elements | +| 1-2 | [GPUREG_GEOSTAGE_CONFIG2](Internal_Registers#gpureg_geostage_config2 "wikilink") | Set whether drawing triangle elements | +| 3 | [GPUREG_PRIMITIVE_CONFIG](Internal_Registers#gpureg_primitive_config "wikilink") | Set primitive mode | +| 4 | [GPUREG_PRIMITIVE_CONFIG](Internal_Registers#gpureg_primitive_config "wikilink") | Set number of output map registers | +| 5 | [GPUREG_RESTART_PRIMITIVE](Internal_Registers#gpureg_restart_primitive "wikilink") | Trigger reset | +| 6 | [GPUREG_GEOSTAGE_CONFIG2](Internal_Registers#gpureg_geostage_config2 "wikilink") | Set function indicator to 0 | +| 7 | [GPUREG_INDEXBUFFER_CONFIG](Internal_Registers#gpureg_indexbuffer_config "wikilink") | Set offset and type | +| 8 | [GPUREG_NUMVERTICES](Internal_Registers#gpureg_numvertices "wikilink") | Set vertex count | +| 9 | [GPUREG_START_DRAW_FUNC0](Internal_Registers#gpureg_start_draw_func0 "wikilink") | Set mode to drawing | +| 10 | [GPUREG_DRAWELEMENTS](Internal_Registers#gpureg_drawelements "wikilink") | Trigger draw | +| 11 | [GPUREG_START_DRAW_FUNC0](Internal_Registers#gpureg_start_draw_func0 "wikilink") | Set mode to configuration | +| 12 | [GPUREG_VTX_FUNC](Internal_Registers#gpureg_vtx_func "wikilink") | Trigger post-vertex cache clear | +| 13 | [GPUREG_FRAMEBUFFER_FLUSH](Internal_Registers#gpureg_framebuffer_flush "wikilink") | Flush framebuffer | +| 14 | [GPUREG_GEOSTAGE_CONFIG](Internal_Registers#gpureg_geostage_config "wikilink") | Clear drawing triangle elements | +| 15 | [GPUREG_GEOSTAGE_CONFIG2](Internal_Registers#gpureg_geostage_config2 "wikilink") | Clear drawing triangle elements | +| 16 | [GPUREG_PRIMITIVE_CONFIG](Internal_Registers#gpureg_primitive_config "wikilink") | Clear primitive mode | +| 17 | [GPUREG_VSH_ENTRYPOINT](Internal_Registers#gpureg_vsh_entrypoint "wikilink") | Clear entry point | -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/GPU/Shader_Instruction_Set.md b/content/GPU/Shader_Instruction_Set.md index 1a9a5370..25aef274 100644 --- a/content/GPU/Shader_Instruction_Set.md +++ b/content/GPU/Shader_Instruction_Set.md @@ -8,7 +8,7 @@ categories = ["GPU"] A compiled shader binary is comprised of two parts : the main instruction sequence and the operand descriptor table. These are both sent to the GPU around the same time but using separate [GPU -Commands](GPU/Internal_Registers "wikilink"). Instructions (such as +Commands](Internal_Registers "wikilink"). Instructions (such as format 1 instruction) may reference operand descriptors. When such is the case, the operand descriptor ID is the offset, in words, of the descriptor within the table. Both instructions and descriptors are coded @@ -327,7 +327,7 @@ hence are read-only. Output registers hold the data to be passed to the later GPU stages and are write-only. Each of the output register is assigned a semantic by setting the corresponding -[GPU_Internal_Registers](GPU_Internal_Registers "wikilink"). Output +[GPU_Internal_Registers](../GPU_Internal_Registers "wikilink"). Output registers o7-o15 are only available in vertex shaders. Keep in mind that writing to the same output register/component more than once appears appears to cause problems (e.g. GPU hangs). @@ -437,4 +437,4 @@ Special cases: its copy of the PC is missed (the third PC update will be propagated). Probably a hardware bug. -[Category:GPU](Category:GPU "wikilink") +[Category:GPU](../Category:GPU "wikilink") diff --git a/content/Hardware.md b/content/Hardware.md index 219ff8c6..9120773a 100644 --- a/content/Hardware.md +++ b/content/Hardware.md @@ -177,7 +177,7 @@ shader unit (using the same instruction set as vertex shaders) with support for variable-size primitives. The Primitive Engine functionality may be disabled, and the geometry shader unit then acts as a fourth vertex processor. See -[Shader_Instruction_Set](Shader_Instruction_Set "wikilink") for more +[Shader_Instruction_Set](GPU/Shader_Instruction_Set "wikilink") for more information on the shader instruction set. [Fragment lighting](GPU/Fragment_Lighting "wikilink") is implemented as diff --git a/content/Home_Menu/Themes.md b/content/Home_Menu/Themes.md index 5443b90c..41d5c842 100644 --- a/content/Home_Menu/Themes.md +++ b/content/Home_Menu/Themes.md @@ -3,7 +3,7 @@ title = 'Themes' +++ This page describes the formats/structure of the data stored in RomFS -for [Home Menu](Home_Menu "wikilink") DLC, for themes. +for [Home Menu](. "wikilink") DLC, for themes. # Control Content @@ -35,8 +35,8 @@ MetaDataContentHeader.bin format: | 0x14..0x2C | 0x2 | This data is sorted by region (JPN at 0x14, US at 0x18, etc.). This is the target region. | | 0x16..0x2E | 0x2 | Primary language for region? (0x0 for JPN, 0x1 for US and EU) | | 0x30 | 0x4 | Number of ContentInfoArchive languages | -| 0x34+i | 0x2 | ContentInfoArchive [region](Nandrw/sys/SecureInfo_A "wikilink") | -| 0x36+i | 0x2 | ContentInfoArchive [language](Config_Savegame#languages "wikilink") | +| 0x34+i | 0x2 | ContentInfoArchive [region](../Nandrw/sys/SecureInfo_A "wikilink") | +| 0x36+i | 0x2 | ContentInfoArchive [language](../Config_Savegame#languages "wikilink") | ContentInfoArchive header format, size 0x08: @@ -62,9 +62,9 @@ and disabled. RomFS structure: -- "bgm.bcstm": Background music, see [here](BCSTM "wikilink"). +- "bgm.bcstm": Background music, see [here](../BCSTM "wikilink"). - "body_LZ.bin": LZ11 compressed blob containing the rest of the theme - data(graphics + optional [CWAVs](BCWAV "wikilink")). + data(graphics + optional [CWAVs](../BCWAV "wikilink")). # Decompressed body_LZ.bin structure @@ -176,7 +176,7 @@ Audio data entry structure: | Y + 0x0 | 0x4 | CWAV size. | | Y + 0x4 | 0x4 | Unknown | | Y + 0x8 | X (see below) | Additional data for CWAV 4, see below. | -| Y + 0x8 + X | | [CWAV](BCWAV "wikilink") | +| Y + 0x8 + X | | [CWAV](../BCWAV "wikilink") | Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7: diff --git a/content/NCCH/Extended_Header.md b/content/NCCH/Extended_Header.md index 21567de5..06ce10f2 100644 --- a/content/NCCH/Extended_Header.md +++ b/content/NCCH/Extended_Header.md @@ -30,11 +30,11 @@ See also: The `AccessDesc` signature covers the NCCH HDR public key and second ACI. The `AccessDesc` public key is initialised by the boot ROM. -When loading the exheader, [Process9](FIRM "wikilink") compares the +When loading the exheader, [Process9](../FIRM "wikilink") compares the exheader data with the data in the `AccessDesc` (note that not everything is compared here). When these don't match, an error is returned. The Process9 code handling this validation was updated with -[v6.0](6.0.0-11 "wikilink"); the only change in this function seems to +[v6.0](../6.0.0-11 "wikilink"); the only change in this function seems to be the check for the "Ideal processor" field. ## System Control Info @@ -51,11 +51,11 @@ be the check for the "Ideal processor" field. | `0x2C` | `0x4` | Reserved | | `0x30` | `0xC` | Data code set info | | `0x3C` | `0x4` | BSS size | -| `0x40` | `0x180` (`48*8`) | Dependency [module](Title_list#00040130---system-modules "wikilink") (program ID) list | +| `0x40` | `0x180` (`48*8`) | Dependency [module](../Title_list#00040130---system-modules "wikilink") (program ID) list | | `0x1C0` | `0x40` | `SystemInfo` | Most of these fields are used in -[LOADER:LoadProcess](LOADER:LoadProcess "wikilink"). +[LOADER:LoadProcess](../LOADER:LoadProcess "wikilink"). ### Code Set Info @@ -86,14 +86,14 @@ Most of these fields are used in | Offset | Size | Description | |---------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------| | `0x0` | `0x8` | Program ID | -| `0x8` | `0x4` | Core version (The Title ID low of the required [FIRM](FIRM "wikilink")) | -| `0xC` | `0x2` | [Flag1](#flag1 "wikilink") and [Flag2](#flag2 "wikilink") (both implemented starting from [8.0.0-18](8.0.0-18 "wikilink")). | +| `0x8` | `0x4` | Core version (The Title ID low of the required [FIRM](../FIRM "wikilink")) | +| `0xC` | `0x2` | [Flag1](#flag1 "wikilink") and [Flag2](#flag2 "wikilink") (both implemented starting from [8.0.0-18](../8.0.0-18 "wikilink")). | | `0xE` | `0x1` | [Flag0](#flag0 "wikilink") | | `0xF` | `0x1` | Priority | -| `0x10` | `0x20` (`16*2`) | Resource limit descriptors. The first byte here controls the maximum allowed [`CpuTime`](PMApp:SetAppResourceLimit "wikilink"). | +| `0x10` | `0x20` (`16*2`) | Resource limit descriptors. The first byte here controls the maximum allowed [`CpuTime`](../PMApp:SetAppResourceLimit "wikilink"). | | `0x30` | `0x20` | [Storage info](#storage_info "wikilink") | | `0x50` | `0x100` (`32*8`) | [Service access control](#service_access_control "wikilink") | -| `0x150` | `0x10` (`2*8`) | Extended service access control, support for this was implemented with [9.3.0-X](9.3.0-21 "wikilink"). | +| `0x150` | `0x10` (`2*8`) | Extended service access control, support for this was implemented with [9.3.0-X](../9.3.0-21 "wikilink"). | | `0x160` | `0xF` | Reserved | | `0x16F` | `0x1` | Resource limit category. (0 = `APPLICATION`, 1 = `SYS_APPLET`, 2 = `LIB_APPLET`, 3 = `OTHER` (sysmodules running under the BASE memregion)) | @@ -125,14 +125,14 @@ error is returned. if((1 << exheaderval) & accessdescval == 0) return error During a FIRM-launch when a `TitleInfo` structure was specified, the -field at offset [0x400](FIRM#firm_launch_parameters "wikilink") in the +field at offset [0x400](../FIRM#firm_launch_parameters "wikilink") in the FIRM-launch parameters is set to the SystemMode of the specified title, however in some cases other values are written there. With -[8.0.0-18](8.0.0-18 "wikilink") NS will now check the output of -[PTMSYSM](PTM "wikilink") command `0x040A0000`, when the output is +[8.0.0-18](../8.0.0-18 "wikilink") NS will now check the output of +[PTMSYSM](../PTM "wikilink") command `0x040A0000`, when the output is non-zero and a certain NS state field is value-zero, the following is executed otherwise this is skipped. With that check passed on -[8.0.0-18](8.0.0-18 "wikilink"), NS will then check (`Flag2 & 0xF`). +[8.0.0-18](../8.0.0-18 "wikilink"), NS will then check (`Flag2 & 0xF`). When that is `value2`, the output value (used for the FIRM-launcher parameter field mentioned above) is set to `value7`. Otherwise, when that value is non-zero, the output value is set to 6. @@ -154,8 +154,8 @@ set, runs much faster on New3DS. It's unknown how exactly the system handles these flags. When launching titles / perhaps other things with [APT](APT "wikilink"), -[NS](NS "wikilink") uses -[PTMSYSM:ConfigureNew3DSCPU](PTMSYSM:ConfigureNew3DSCPU "wikilink") with +[NS](../NS "wikilink") uses +[PTMSYSM:ConfigureNew3DSCPU](../PTMSYSM:ConfigureNew3DSCPU "wikilink") with data which originally came from these flags; NS does this regardless of what the running 3DS system is. However, due to a bug(?) in NS the value sent to that command is always either 0x0 or 0x3. When calculating that @@ -189,7 +189,7 @@ The exheader value for the New3DS system mode value must be ≤ to the #### Storage Info -Used in [FSReg:Register](FSReg:Register "wikilink"). +Used in [FSReg:Register](../FSReg:Register "wikilink"). | Offset | Size | Description | |--------|------|-------------------------------| @@ -210,21 +210,21 @@ File System Access Info: | `4`, `0x10` | TWL card backup | | `5`, `0x20` | TWL NAND data | | `6`, `0x40` | BOSS | -| `7`, `0x80` | [`sdmc:/`](FS:OpenArchive "wikilink") | +| `7`, `0x80` | [`sdmc:/`](../FS:OpenArchive "wikilink") | | `8`, `0x100` | Core | -| `9`, `0x200` | [`nand:/ro/`](Flash_Filesystem "wikilink") (Read Only) | -| `10`, `0x400` | [`nand:/rw/`](Flash_Filesystem "wikilink") | -| `11`, `0x800` | [`nand:/ro/`](Flash_Filesystem "wikilink") (Write Access) | +| `9`, `0x200` | [`nand:/ro/`](../Flash_Filesystem "wikilink") (Read Only) | +| `10`, `0x400` | [`nand:/rw/`](../Flash_Filesystem "wikilink") | +| `11`, `0x800` | [`nand:/ro/`](../Flash_Filesystem "wikilink") (Write Access) | | `12`, `0x1000` | Category system settings | | `13`, `0x2000` | Cardboard | | `14`, `0x4000` | Export/Import IVS | -| `15`, `0x8000` | [`sdmc:/`](FS:OpenArchive "wikilink") (Write-only) | +| `15`, `0x8000` | [`sdmc:/`](../FS:OpenArchive "wikilink") (Write-only) | | `16`, `0x10000` | Switch cleanup (Introduced in [3.0.0](3.0.0-5 "wikilink")?) | -| `17`, `0x20000` | Savedata move (Introduced in [5.0.0](5.0.0-11 "wikilink")) | -| `18`, `0x40000` | Shop (Introduced in [5.0.0](5.0.0-11 "wikilink")) | -| `19`, `0x80000` | Shell (Introduced in [5.0.0](5.0.0-11 "wikilink")) | -| `20`, `0x100000` | Category home menu (Introduced in [6.0.0](6.0.0-11 "wikilink")) | -| `21`, `0x200000` | Seed DB. Introduced in [9.6.0-X](9.6.0-24 "wikilink") [FIRM](FIRM "wikilink"). [Home Menu](Home_Menu "wikilink") has this bit set starting with [9.6.0-X](9.6.0-24 "wikilink"). | +| `17`, `0x20000` | Savedata move (Introduced in [5.0.0](../5.0.0-11 "wikilink")) | +| `18`, `0x40000` | Shop (Introduced in [5.0.0](../5.0.0-11 "wikilink")) | +| `19`, `0x80000` | Shell (Introduced in [5.0.0](../5.0.0-11 "wikilink")) | +| `20`, `0x100000` | Category home menu (Introduced in [6.0.0](../6.0.0-11 "wikilink")) | +| `21`, `0x200000` | Seed DB. Introduced in [9.6.0-X](../9.6.0-24 "wikilink") [FIRM](../FIRM "wikilink"). [Home Menu](../Home_Menu "wikilink") has this bit set starting with [9.6.0-X](../9.6.0-24 "wikilink"). | #### Other Attributes @@ -235,13 +235,13 @@ File System Access Info: When Bit1 is set, the "Extdata ID" and "Storage Accessable Unique IDs" regions are used to store a total of 6 "Accessible Save IDs". Introduced -in [6.0.0](6.0.0-11 "wikilink"). +in [6.0.0](../6.0.0-11 "wikilink"). #### Service Access Control -This is the list of [services](Services_API "wikilink") which the +This is the list of [services](../Services_API "wikilink") which the process is allowed to access, this is registered with the -[services](Services "wikilink") manager. Each service listed in the +[services](../Services "wikilink") manager. Each service listed in the exheader must be listed in the `AccessDesc`, otherwise the invalid exheader error is returned. The order of the services for exheader/`AccessDesc` doesn't matter. The `AccessDesc` can list services @@ -249,12 +249,12 @@ which are not in the exheader, but normally the service-access-control data for exheader/`AccessDesc` are exactly the same. This list is submitted to -[SRVPM:RegisterProcess](SRVPM:RegisterProcess "wikilink"). +[SRVPM:RegisterProcess](../SRVPM:RegisterProcess "wikilink"). ### ARM11 Kernel Capabilities The kernel capability descriptors are passed to -[svcCreateProcess](SVC "wikilink"). +[svcCreateProcess](../SVC "wikilink"). | Offset | Size | Description | |--------|-----------------|-------------| @@ -273,7 +273,7 @@ different types are laid out as follows: | `0b11111110xxxx` | Handle table size | Bits 0-18: size | | `0b111111110xxx` | [Kernel flags](#arm11_kernel_flags "wikilink") | See below | | `0b11111111100x` | Map IO/static address range | Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped. Another 0b11111111100x descriptor must follow this one to denote the (exclusive) end of the address range to map. Bit20 on the first descriptor: map read-only (otherwise RW), bit20 on the second descriptor: map static (cacheable, otherwise IO if the bit is not set) | -| `0b111111111110` | Map IO memory page | Bits 0-19: page index to map (virtual address \>\> 12; the physical address is determined per-page according to [Memory layout](Memory_layout "wikilink")); Bit 20: Map read-only (otherwise read-write) | +| `0b111111111110` | Map IO memory page | Bits 0-19: page index to map (virtual address \>\> 12; the physical address is determined per-page according to [Memory layout](../Memory_layout "wikilink")); Bit 20: Map read-only (otherwise read-write) | #### ARM11 Kernel Flags @@ -288,7 +288,7 @@ different types are laid out as follows: | `6` | Shared device memory | | `7` | Runnable on sleep | | `8-11` | Memory type (1: application, 2: system, 3: base) | -| `12` | [Special memory](Memory_layout#native_firmsafe_mode_firm_userland_memory "wikilink") | +| `12` | [Special memory](../Memory_layout#native_firmsafe_mode_firm_userland_memory "wikilink") | | `13` | Process has access to CPU core 2 (New3DS only) | ### ARM9 Access Control @@ -296,19 +296,19 @@ different types are laid out as follows: | Offset | Size | Description | |--------|------|------------------------------------------------------------------------------------------------------------------------------------------------------------| | `0x0` | `15` | Descriptors | -| `0xF` | `1` | ARM9 Descriptor Version. Originally this value had to be ≥ 2. Starting with [9.3.0-X](9.3.0-21 "wikilink") this value has to be either value 2 or value 3. | +| `0xF` | `1` | ARM9 Descriptor Version. Originally this value had to be ≥ 2. Starting with [9.3.0-X](../9.3.0-21 "wikilink") this value has to be either value 2 or value 3. | Descriptors: | Bit | Description | |-----|-----------------------------------------------------------------| -| `0` | Mount [`nand:/`](Flash_Filesystem "wikilink") | -| `1` | Mount [`nand:/ro/`](Flash_Filesystem "wikilink") (Write Access) | -| `2` | Mount [`twln:/`](Flash_Filesystem "wikilink") | -| `3` | Mount [`wnand:/`](Flash_Filesystem "wikilink") | +| `0` | Mount [`nand:/`](../Flash_Filesystem "wikilink") | +| `1` | Mount [`nand:/ro/`](../Flash_Filesystem "wikilink") (Write Access) | +| `2` | Mount [`twln:/`](../Flash_Filesystem "wikilink") | +| `3` | Mount [`wnand:/`](../Flash_Filesystem "wikilink") | | `4` | Mount card SPI | | `5` | Use SDIF3 | | `6` | Create seed | | `7` | Use card SPI | | `8` | SD application (Not checked) | -| `9` | Mount [sdmc:/](SD_Filesystem "wikilink") (Write Access) | +| `9` | Mount [sdmc:/](../SD_Filesystem "wikilink") (Write Access) | diff --git a/content/Nand/private/movable.sed.md b/content/Nand/private/movable.sed.md index d3921692..f4a8d012 100644 --- a/content/Nand/private/movable.sed.md +++ b/content/Nand/private/movable.sed.md @@ -6,37 +6,37 @@ title = 'Movable.sed' |--------|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 0x0 | 0x4 | Magic "SEED" | | 0x4 | 0x4 | When u8\[1\] is non-zero, this indicates that the additional 0x20-bytes AES-MAC block at the end of movable.sed exists. If u8\[1\] is zero, then u8 \[0\], \[2\], and \[3\] must be zero as well. | -| 0x8 | 0x110 | Copied from [Nandrw/sys/LocalFriendCodeSeed_B](Nandrw/sys/LocalFriendCodeSeed_B "wikilink") (or LocalFriendCodeSeed_A if it exists). The last 8 bytes (LocalFriendCodeSeed) becomes the first 8 bytes of a [AES](AES "wikilink") engine keyY for 3 keyslots | +| 0x8 | 0x110 | Copied from [Nandrw/sys/LocalFriendCodeSeed_B](../../Nandrw/sys/LocalFriendCodeSeed_B "wikilink") (or LocalFriendCodeSeed_A if it exists). The last 8 bytes (LocalFriendCodeSeed) becomes the first 8 bytes of a [AES](../../AES "wikilink") engine keyY for 3 keyslots | | 0x118 | 0x8 | The higher 8 bytes of the keyY | -| 0x120 | 0x20 | This data is written to the file when doing a [System Format](System_Settings "wikilink"). The original movable.sed from the factory is only 0x120-bytes. The last 0x10-bytes in this block is an AES-MAC over a SHA256 hash, using the same keyslot used for NAND [dbs](Title_Database "wikilink"). This hash is calculated over the first 0x130-bytes of movable.sed. This AES-MAC is verified is during movable.sed verification(before RSA verification). | +| 0x120 | 0x20 | This data is written to the file when doing a [System Format](../../System_Settings "wikilink"). The original movable.sed from the factory is only 0x120-bytes. The last 0x10-bytes in this block is an AES-MAC over a SHA256 hash, using the same keyslot used for NAND [dbs](../../Title_Database "wikilink"). This hash is calculated over the first 0x130-bytes of movable.sed. This AES-MAC is verified is during movable.sed verification(before RSA verification). | This keyY is the console-unique portion of the 3 keyslots used for everything stored under [sdmc/Nintendo -3DS//](SD_Filesystem "wikilink") and -[nand/data/](Flash_Filesystem "wikilink"). For SD this is used for +3DS//](../../SD_Filesystem "wikilink") and +[nand/data/](../../Flash_Filesystem "wikilink"). For SD this is used for encryption and AES MACs, however for NAND this is only used for AES MACs. This file is transferred to the destination 3DS during a [System -Transfer](System_Transfer "wikilink"). The movable.sed keyY high u64 is -[updated](FS:InitializeCtrFileSystem "wikilink") on the source 3DS -during a [System Transfer](System_Transfer "wikilink"), and when doing a -system format with [System Settings](System_Settings "wikilink"). +Transfer](../../System_Transfer "wikilink"). The movable.sed keyY high u64 is +[updated](../../FS:InitializeCtrFileSystem "wikilink") on the source 3DS +during a [System Transfer](../../System_Transfer "wikilink"), and when doing a +system format with [System Settings](../../System_Settings "wikilink"). Movable.sed always exists on retail and development units(written to NAND at the factory), however if reading this file fails(svcBreak would -be executed if the [file-read](Filesystem_services_PXI "wikilink") +be executed if the [file-read](../../Filesystem_services_PXI "wikilink") code-path return value is 0xC8804464) the system will fall-back to using a console-unique keyY already in -[memory](PSPXI:GetLocalFriendCodeSeed "wikilink"), with the last 8-bytes +[memory](../../PSPXI:GetLocalFriendCodeSeed "wikilink"), with the last 8-bytes being loaded from the 8-bytes following that u64. On development units the code-path handling movable.sed would execute -[svcBreak](SVC "wikilink") if file-reading(regardless of error-code) or +[svcBreak](../../SVC "wikilink") if file-reading(regardless of error-code) or verifying the RSA signature fails(this would brick the 3DS), RSA verification failure on a retail unit here would also cause a brick. The keyY is hashed with SHA256, the first 0x10-bytes from the hash is used with the below snprintf for ID0 in [sdmc/Nintendo -3DS//](SD_Filesystem "wikilink") and -[nand/data/](Flash_Filesystem "wikilink"). ID0 is generated by: +3DS//](../../SD_Filesystem "wikilink") and +[nand/data/](../../Flash_Filesystem "wikilink"). ID0 is generated by: snprintf(outdirname, maxlen, "%08x%08x%08x%08x", hashword\[0\], hashword\[1\], hashword\[2\], hashword\[3\]). Thus, ID0 is the first half of the SHA-256 of movable.sed bytes 0x110-0x11F inclusive, with the diff --git a/content/Nandrw/sys/LocalFriendCodeSeed_B.md b/content/Nandrw/sys/LocalFriendCodeSeed_B.md index 3fbbfd7e..4c7b949f 100644 --- a/content/Nandrw/sys/LocalFriendCodeSeed_B.md +++ b/content/Nandrw/sys/LocalFriendCodeSeed_B.md @@ -8,12 +8,12 @@ title = 'LocalFriendCodeSeed B' |--------|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 0x0 | 0x100 | RSA-2048 signature over the following 0x10-bytes. | | 0x100 | 0x8 | Normally zero? The second byte (offset 0x101) appears to be 0x01 if system is a devkit. | -| 0x108 | 0x8 | LocalFriendCodeSeed. Since the data of the whole file gets copied to [movable.sed](Nand/private/movable.sed "wikilink"), this also becomes the first 8 bytes of the keyY there. | +| 0x108 | 0x8 | LocalFriendCodeSeed. Since the data of the whole file gets copied to [movable.sed](../../Nand/private/movable.sed "wikilink"), this also becomes the first 8 bytes of the keyY there. | This contains the same LocalFriendCodeSeed data that -[PSPXI:GetLocalFriendCodeSeed](PSPXI:GetLocalFriendCodeSeed "wikilink") +[PSPXI:GetLocalFriendCodeSeed](../../PSPXI:GetLocalFriendCodeSeed "wikilink") retrieves from memory. # See Also -- [Config Services](Config_Services "wikilink") +- [Config Services](../../Config_Services "wikilink") diff --git a/content/Nandrw/sys/SecureInfo_A.md b/content/Nandrw/sys/SecureInfo_A.md index b759eaa8..bdf2cafd 100644 --- a/content/Nandrw/sys/SecureInfo_A.md +++ b/content/Nandrw/sys/SecureInfo_A.md @@ -9,7 +9,7 @@ title = 'SecureInfo A' | 0x0 | 0x100 | RSA-2048 signature over the following 0x11-bytes. | | 0x100 | 0x1 | Region | | 0x101 | 0x1 | Normally zero | -| 0x102 | 0xF | ASCII serial number, without the [check digit](Serials#console_serial_numbers "wikilink") | +| 0x102 | 0xF | ASCII serial number, without the [check digit](../../Serials#console_serial_numbers "wikilink") | The RSA private key for dev systems is embedded inside the dev system updater package so that the region can be changed. @@ -21,7 +21,7 @@ updater package so that the region can be changed. | 0 | JPN | | 1 | USA | | 2 | EUR | -| 3 | AUS(for system-update SOAP at least), unused. The [NS](NS "wikilink") programIDs for the applet AppIDs for this are the same as JPN? | +| 3 | AUS(for system-update SOAP at least), unused. The [NS](../../NS "wikilink") programIDs for the applet AppIDs for this are the same as JPN? | | 4 | CHN | | 5 | KOR | | 6 | TWN | @@ -32,4 +32,4 @@ field is set to EUR instead. # See Also -- [Config Services](Config_Services "wikilink") +- [Config Services](../../Config_Services "wikilink") diff --git a/content/Nandrw/sys/updater.log.md b/content/Nandrw/sys/updater.log.md index 3b601d19..140cab30 100644 --- a/content/Nandrw/sys/updater.log.md +++ b/content/Nandrw/sys/updater.log.md @@ -3,7 +3,7 @@ title = 'Updater.log' +++ The following is the contents of this file, from a launch-day regular -3DS (written during [Factory Setup](Factory_Setup "wikilink")): +3DS (written during [Factory Setup](../../Factory_Setup "wikilink")): ``` #Import(30) : size = 00013500 diff --git a/content/News.md b/content/News.md index 6a18371e..2bd29f43 100644 --- a/content/News.md +++ b/content/News.md @@ -11,12 +11,12 @@ title = 'News' date: `'''{{#time: d F y}}'''`. Please include the application's creator, version number, and a link to a page on 3DBrew about the application. No external links please. -- **Move the last entry to the [news archive](:News/Archive "wikilink"). +- **Move the last entry to the [news archive](News/Archive "wikilink"). There should be no more than 4 entries in the list.** ## Archives -For older news, see the [news archive](:News/Archive "wikilink"). +For older news, see the [news archive](News/Archive "wikilink"). ### News diff --git a/content/News/Archive.md b/content/News/Archive.md index e1dbec8b..b1193c56 100644 --- a/content/News/Archive.md +++ b/content/News/Archive.md @@ -5,38 +5,38 @@ title = 'Archive' --- --- - **27 July 2021** Nintendo released system update - [11.15.0-47](11.15.0-47 "wikilink"). + [11.15.0-47](../11.15.0-47 "wikilink"). - **17 November 2020** Nintendo released system update - [11.14.0-46](11.14.0-46 "wikilink"), with Luma3DS 10.2.1 released less + [11.14.0-46](../11.14.0-46 "wikilink"), with Luma3DS 10.2.1 released less than two hours after. - **11 May 2020** [devkitPro](https://devkitpro.org) have announced [devkitARM release 54](https://devkitpro.org/viewtopic.php?f=13&t=9057) - **2 December 2019** Nintendo released system update - [11.13.0-45](11.13.0-45 "wikilink"). + [11.13.0-45](../11.13.0-45 "wikilink"). - **4 November 2019** Nintendo released system update - [11.12.0-44](11.12.0-44 "wikilink"). + [11.12.0-44](../11.12.0-44 "wikilink"). - **26 August 2019** Nintendo released system update - [11.11.0-43E](11.11.0-43E "wikilink"). + [11.11.0-43E](../11.11.0-43E "wikilink"). - **27 May 2019** Nintendo released system update - [11.10.0-43](11.10.0-43 "wikilink"). + [11.10.0-43](../11.10.0-43 "wikilink"). - **2 January 2019** [libctru 1.5.1, citro3d 1.5.0, citro2d 1.1.0 and 3ds-examples 20190102 were released.](https://devkitpro.org/viewtopic.php?f=13&t=8826) - **3 December 18** Nintendo released system update - [11.9.0-42](11.9.0-42 "wikilink"). + [11.9.0-42](../11.9.0-42 "wikilink"). - **11 August 18** [Smealum](User:smea "wikilink") [publishes at Defcon 26](https://media.defcon.org/DEF%20CON%2026/DEF%20CON%2026%20presentations/smea/) a complete userland to ARM9 exploit chain for N3DS, developed in the past two years. - **30 July 18** Nintendo released system update - [11.8.0-41](11.8.0-41 "wikilink"). + [11.8.0-41](../11.8.0-41 "wikilink"). - **18 June 18** Nintendo released system update - [11.7.0-40](11.7.0-40 "wikilink"). + [11.7.0-40](../11.7.0-40 "wikilink"). - **18 September 17** Nintendo released system update - [11.6.0-39](11.6.0-39 "wikilink"). + [11.6.0-39](../11.6.0-39 "wikilink"). - **10 July 17** Nintendo released system update - [11.5.0-38](11.5.0-38 "wikilink"). + [11.5.0-38](../11.5.0-38 "wikilink"). - **04 June 17** [Boot9strap](https://github.com/SciresM/boot9strap/releases/tag/1.2) updated to 1.2, with @@ -46,14 +46,14 @@ title = 'Archive' - **20 May 17** Sighax/Boot9Strap is released with Luma 7.1 adding support for b9s a while after. - **10 April 17** Nintendo released system update - [11.4.0-37](11.4.0-37 "wikilink"). + [11.4.0-37](../11.4.0-37 "wikilink"). - **10 February 17** [smea](User:smea "wikilink") updated [\*hax payloads](https://smealum.github.io/3ds/) with 11.3 support. A while afterwards hblauncher_loader v1.3 was [released](https://github.com/yellows8/hblauncher_loader/releases) by [Yellows8](User:Yellows8 "wikilink"). - **6 February 17** Nintendo released system update - [11.3.0-36](11.3.0-36 "wikilink"). + [11.3.0-36](../11.3.0-36 "wikilink"). - **17 January 2017** WinterMute released [devkitARM release 46](http://devkitpro.org/viewtopic.php?f=13&t=8643). - **9 January 2017** [Yellows8](User:Yellows8 "wikilink") released: new @@ -66,12 +66,12 @@ title = 'Archive' lecture at Chaos Communication Congress. - **26 December 2016** [Dazzozo](User:Dazzozo "wikilink") released an update to [humblehax](https://citizens.salthax.org/) with - [11.2.0-35](11.2.0-35 "wikilink") support. + [11.2.0-35](../11.2.0-35 "wikilink") support. - **31 October 2016** [Yellows8](User:Yellows8 "wikilink") released [3ds_dsiwarehax_installer](https://github.com/yellows8/3ds_dsiwarehax_installer/releases) v1.0. v1.1 was released on November 2nd. - **24 October 2016** Nintendo released system update - [11.2.0-35](11.2.0-35 "wikilink"). + [11.2.0-35](../11.2.0-35 "wikilink"). - **4 October 2016** An update for EUR version of VVVVVV was finally released (title was re-added to the eShop versionlist). Likewise for the USA version on the October 11th (this title was already listed in @@ -79,19 +79,19 @@ title = 'Archive' - **22 September 2016** [Shiny Quagsire](User:shinyquagsire23 "wikilink") released an update to [supermysterychunkhax](https://smd.salthax.org/) with - [11.1.0-34](11.1.0-34 "wikilink") support. + [11.1.0-34](../11.1.0-34 "wikilink") support. - **20 September 16** [Smea](User:Smea "wikilink") released an update to [Ninjhax 2](http://smealum.github.io/ninjhax2/) with - [11.1.0-34](11.1.0-34 "wikilink") support. + [11.1.0-34](../11.1.0-34 "wikilink") support. - **16 September 16** [plutoo](User:Plutooo "wikilink") released an update to [freakyhax](https://plutooo.github.io/freakyhax/) with - [11.1.0-34](11.1.0-34 "wikilink") support. + [11.1.0-34](../11.1.0-34 "wikilink") support. - **15 September 16** [Yellows8](User:Yellows8 "wikilink") released updated oot3dhax [saveimages](https://github.com/yellows8/oot3dhax/releases/tag/09-15-16) - for latest \*hax payloads + [11.1.0-34](11.1.0-34 "wikilink") support. + for latest \*hax payloads + [11.1.0-34](../11.1.0-34 "wikilink") support. - **13 September 16** Nintendo released system update - [11.1.0-34](11.1.0-34 "wikilink"). + [11.1.0-34](../11.1.0-34 "wikilink"). - **20 August 16** [Yellows8](User:Yellows8 "wikilink") released hblauncher_loader [v1.2](https://github.com/yellows8/hblauncher_loader/releases/tag/v1.2), @@ -106,11 +106,11 @@ title = 'Archive' available(the updated JPN version was released exactly 2 weeks ago). - **29 July 16** [Yellows8](User:Yellows8 "wikilink") released [stickerhax](https://github.com/yellows8/stickerhax), which supports - \<=[11.0.0-33](11.0.0-33 "wikilink"). + \<=[11.0.0-33](../11.0.0-33 "wikilink"). - **27 July 16** [Yellows8](User:Yellows8 "wikilink") released new browserhax(see changelog [here](browserhax "wikilink")) and menuhax [v3.0](https://github.com/yellows8/3ds_homemenuhax/releases), all of - these now support [11.0.0-33](11.0.0-33 "wikilink"). + these now support [11.0.0-33](../11.0.0-33 "wikilink"). - **26 July 16** Various JPN-only eShop app updates were released. This includes JPN SmileBASIC: the update-title was removed from versionlist, and the main-title was updated. Updating an already @@ -145,57 +145,57 @@ title = 'Archive' longer listed on the former, while on the latter it can't be purchased. - **26 June 16** [Yellows8](User:Yellows8 "wikilink") released oot3dhax - builds for supporting [11.0.0-33](11.0.0-33 "wikilink"), via updated + builds for supporting [11.0.0-33](../11.0.0-33 "wikilink"), via updated sploit_installer in the [starter-kit](https://smealum.github.io/3ds/) and raw [saveimages](https://github.com/yellows8/oot3dhax/releases/tag/06-26-16). Note that attempting to run sploit_installer on a 11.0.0-33 system with \*hax payload \<=v2.7 is equivalent to - [trying](11.0.0-33 "wikilink") to use the older oot3dhax on that + [trying](../11.0.0-33 "wikilink") to use the older oot3dhax on that version. - **3 June 16** [plutoo](User:Plutooo "wikilink") released [freakyhax](https://plutooo.github.io/freakyhax/). The USA game was removed from the eShop \<=3-hours later("... currently unavailable" message). - **9 May 16** Nintendo released system update - [11.0.0-33](11.0.0-33 "wikilink"). + [11.0.0-33](../11.0.0-33 "wikilink"). - **24 March 16** Nintendo updated the pages stored on the server used for browser-version-check. Due to almost all of the Old3DS/New3DS pages for non-latest-browser being updated(content is now "99999"), - browser versions prior to [10.7.0-32](10.7.0-32 "wikilink") are not + browser versions prior to [10.7.0-32](../10.7.0-32 "wikilink") are not usable anymore without using the browser-version-check bypass(fixed - with [10.7.0-32](10.7.0-32 "wikilink")). The only exception is New3DS + with [10.7.0-32](../10.7.0-32 "wikilink")). The only exception is New3DS v10.2, it was "updated" but the content is still "0"(this is due to - browser-version-check being [broken](Internet_Browser "wikilink") with + browser-version-check being [broken](../Internet_Browser "wikilink") with New3DS v10.2). - **22 March 16** [Yellows8](User:Yellows8 "wikilink") released [ctr-httpwn](https://github.com/yellows8/ctr-httpwn/releases). v1.0.1 was released on the 25th for a RootCA cert update. - **14 March 16** Nintendo released system update - [10.7.0-32](10.7.0-32 "wikilink"). + [10.7.0-32](../10.7.0-32 "wikilink"). - **24-25 February 16** On the 24th the Old3DS - [browser-version-check](Internet_Browser "wikilink") pages were + [browser-version-check](../Internet_Browser "wikilink") pages were updated so that browser version \>=v10.6 is now required. The New3DS pages for this were not changed. About 5 hours later, [Yellows8](User:Yellows8 "wikilink") disclosed a bypass for the browser-version-check. User instructions are available [here](http://yls8.mtheall.com/3dsbrowserhax.php), details - [here](3DS_Userland_Flaws "wikilink"). + [here](../3DS_Userland_Flaws "wikilink"). - **22 February 16** Nintendo released system update - [10.6.0-31](10.6.0-31 "wikilink"). + [10.6.0-31](../10.6.0-31 "wikilink"). - **1 February 16** As of this date (time zones notwithstanding) following server maintenance Nintendo now checks server-side that users are on current firmware before allowing access to online - functionality in games. See [here](10.5.0-30 "wikilink") for details. + functionality in games. See [here](../10.5.0-30 "wikilink") for details. - **25 January 16** Nintendo released system update - [10.5.0-30](10.5.0-30 "wikilink"). + [10.5.0-30](../10.5.0-30 "wikilink"). - **25 January 16** [Yellows8](User:Yellows8 "wikilink") updated [browserhax](http://yls8.mtheall.com/3dsbrowserhax.php), [menuhax](https://github.com/yellows8/3ds_homemenuhax/releases), and the oot3dhax [saveimages](https://github.com/yellows8/oot3dhax/releases) for v10.4. - **18 January 16** Nintendo released system update - [10.4.0-29](10.4.0-29 "wikilink"). + [10.4.0-29](../10.4.0-29 "wikilink"). - **7 January 16** (roughly, not automatically detected) Ironfall v1.0 is no longer downloadable due to the main-CXI content files on CDN being removed (TMD wasn't removed). @@ -206,7 +206,7 @@ title = 'Archive' the talk, [Yellows8](User:Yellows8 "wikilink") released [browserhax](browserhax "wikilink") and [menuhax](menuhax "wikilink") compatible with the latest system-version at the time of release - ([10.3.0-28](10.3.0-28 "wikilink")). The homebrew + ([10.3.0-28](../10.3.0-28 "wikilink")). The homebrew [starter-kit](https://smealum.github.io/3ds/) was updated for latest menuhax, and for an option for downloading the old vulnerable version of Ironfall from eShop. @@ -231,11 +231,11 @@ title = 'Archive' [included](https://smealum.github.io/3ds/) in the homebrew starter kit. - **9 November 15** Nintendo released system update - [10.3.0-28](10.3.0-28 "wikilink"). + [10.3.0-28](../10.3.0-28 "wikilink"). - **2 November 15** Following an eShop servers maintenance, changes to the [eShop](eShop "wikilink") system application require an update of the Homebrew starter kit for eShop access on system versions older - than [10.0.0-27](10.0.0-27 "wikilink"). See [here](EShop "wikilink") + than [10.0.0-27](../10.0.0-27 "wikilink"). See [here](../EShop "wikilink") for details. - **30 October 15** [Yellows8](User:Yellows8 "wikilink") released [menuhax](https://github.com/yellows8/3ds_homemenuhax/releases) v2.0. @@ -243,23 +243,23 @@ title = 'Archive' [3ds_smashbroshax](https://github.com/yellows8/3ds_smashbroshax/releases) v1.2. - **26 October 15** A [dummy web - browser](Internet_Browser#v99-dummy-web-browser "wikilink") is now + browser](../Internet_Browser#v99-dummy-web-browser "wikilink") is now being included in CUPs (cart updates) on Old3DS/New3DS likely starting - with games shipping [9.9.0-X](9.9.0-26 "wikilink"). NVer is not + with games shipping [9.9.0-X](../9.9.0-26 "wikilink"). NVer is not updated by this. - **26 October 15** The system web-browser on Old3DS/New3DS now displays a "sysupdate required" message on systems with - [9.9.0-26](9.9.0-26 "wikilink") or above installed, if the installed + [9.9.0-26](../9.9.0-26 "wikilink") or above installed, if the installed browser(?) is not the latest version. See - [here](Internet_Browser#forced-system-update "wikilink") for details. + [here](../Internet_Browser#forced-system-update "wikilink") for details. - **25 October 15** [smea](User:Smea "wikilink") released \*hax 2.5 payloads, which fixes a number of bugs and adds new features such as screenshot-taking, romhacking and eshop access. - **20 October 15** Nintendo released system update - [10.2.0-28](10.2.0-28 "wikilink"). The publicly available versions of + [10.2.0-28](../10.2.0-28 "wikilink"). The publicly available versions of [menuhax](menuhax "wikilink") and [browserhax](browserhax "wikilink") at the time of sysupdate release, were blocked. -- **15 October 15** The [YouTube](YouTube "wikilink") application was +- **15 October 15** The [YouTube](../YouTube "wikilink") application was updated with a fix for [tubehax](tubehax "wikilink"). This update is forced: the app itself checks whether a newer version of the title is available. @@ -271,154 +271,154 @@ title = 'Archive' On the 26th menuhax v1.2 was [released](https://github.com/yellows8/3ds_homemenuhax/releases). - **14 September 15** Nintendo released system update - [10.1.0-27](10.1.0-27 "wikilink"). + [10.1.0-27](../10.1.0-27 "wikilink"). - **11 September 15**(11:30 EDT) [Yellows8](User:Yellows8 "wikilink") released [smashbroshax](smashbroshax "wikilink"). On the 30th v1.1 was [released](https://github.com/yellows8/3ds_smashbroshax/releases) for supporting Super Smash Bros v1.1.1. - **8 September 15** Nintendo released system update - [10.0.0-27](10.0.0-27 "wikilink"). + [10.0.0-27](../10.0.0-27 "wikilink"). - **18 July 15** smea released [ninjhax](ninjhax "wikilink") 2 beta [1](http://smealum.github.io/ninjhax2/), enabling ARM11 homebrew execution on Old/New 3DS up to firmware 9.9.0-26. - **13 July 15** Nintendo released system update - [9.9.0-26](9.9.0-26 "wikilink"). + [9.9.0-26](../9.9.0-26 "wikilink"). - **1 June 15** Nintendo released system update - [9.8.0-25](9.8.0-25 "wikilink"). + [9.8.0-25](../9.8.0-25 "wikilink"). - **03 May 15** smea released regionFOUR [2](https://github.com/smealum/regionFOUR/blob/master/README.md), enabling region free gaming on latest firmware. (again) - **20 April 15** Nintendo released system update - [9.7.0-25](9.7.0-25 "wikilink"). + [9.7.0-25](../9.7.0-25 "wikilink"). - **23 March 15** Nintendo released system update - [9.6.0-24](9.6.0-24 "wikilink"). + [9.6.0-24](../9.6.0-24 "wikilink"). - **2 March 15** Nintendo released system update - [9.5.0-23](9.5.0-23 "wikilink"). + [9.5.0-23](../9.5.0-23 "wikilink"). - **15 February 15** WinterMute released [devkitARM release 44](http://devkitpro.org/viewtopic.php?f=13&t=8409). - **2 February 15** Nintendo released system update - [9.5.0-22](9.5.0-22 "wikilink"), which fixes - [firmlaunch-hax](3DS_System_Flaws "wikilink"). + [9.5.0-22](../9.5.0-22 "wikilink"), which fixes + [firmlaunch-hax](../3DS_System_Flaws "wikilink"). - **16 January 15** smea released regionthree [3](https://github.com/smealum/regionthree/blob/master/README.md), enabling region free gaming on latest firmware. -- **24 December 14** smea released [Ninjhax](Ninjhax "wikilink") 1.1 - (**NOT** a fix for firmware [9.3.0-21](9.3.0-21 "wikilink") or - [9.4.0-21](9.4.0-21 "wikilink")). +- **24 December 14** smea released [Ninjhax](../Ninjhax "wikilink") 1.1 + (**NOT** a fix for firmware [9.3.0-21](../9.3.0-21 "wikilink") or + [9.4.0-21](../9.4.0-21 "wikilink")). - **11 December 14** Nintendo released system update - [9.4.0-21](9.4.0-21 "wikilink"). + [9.4.0-21](../9.4.0-21 "wikilink"). - **8 December 14** Nintendo released system update - [9.3.0-21](9.3.0-21 "wikilink"), which fixes - [rohax](3DS_System_Flaws "wikilink"). -- **20 November 14** smea released [Ninjhax](Ninjhax "wikilink"), the - first public [homebrew exploit](Homebrew_Exploits "wikilink") + [9.3.0-21](../9.3.0-21 "wikilink"), which fixes + [rohax](../3DS_System_Flaws "wikilink"). +- **20 November 14** smea released [Ninjhax](../Ninjhax "wikilink"), the + first public [homebrew exploit](../Homebrew_Exploits "wikilink") compatible with system-versions - [4.0.0-7](4.0.0-7 "wikilink")-[9.2.0-20](9.2.0-20 "wikilink"). + [4.0.0-7](../4.0.0-7 "wikilink")-[9.2.0-20](../9.2.0-20 "wikilink"). - **29 October 14** Nintendo released system update - [9.2.0-20](9.2.0-20 "wikilink"). + [9.2.0-20](../9.2.0-20 "wikilink"). - **10 October 14** Nintendo released system update - [9.1.0-20J](9.1.0-20J "wikilink"). + [9.1.0-20J](../9.1.0-20J "wikilink"). - **6 October 14** Nintendo released system update - [9.0.0-20](9.0.0-20 "wikilink"). -- **29 August 14** Nintendo announced [New 3DS](New_3DS "wikilink"). + [9.0.0-20](../9.0.0-20 "wikilink"). +- **29 August 14** Nintendo announced [New 3DS](../New_3DS "wikilink"). - **7 August 14** Nintendo released system update - [8.1.0-19](8.1.0-19 "wikilink"). + [8.1.0-19](../8.1.0-19 "wikilink"). - **24 July 14** Nintendo released system update - [8.1.0-18](8.1.0-18 "wikilink"). + [8.1.0-18](../8.1.0-18 "wikilink"). - **7 July 14** Nintendo released system update - [8.0.0-18](8.0.0-18 "wikilink"). + [8.0.0-18](../8.0.0-18 "wikilink"). - **12 May 14** Nintendo released system update - [7.2.0-17](7.2.0-17 "wikilink"). + [7.2.0-17](../7.2.0-17 "wikilink"). - **26 February 14** Nintendo released system update - [7.1.0-16](7.1.0-16 "wikilink"). + [7.1.0-16](../7.1.0-16 "wikilink"). - **22 January 14** Nintendo released system update - [7.1.0-15](7.1.0-15 "wikilink"). + [7.1.0-15](../7.1.0-15 "wikilink"). - **19 December 13** Nintendo released system update - [7.1.0-14](7.1.0-14 "wikilink"). + [7.1.0-14](../7.1.0-14 "wikilink"). - **9 December 13** Nintendo released system update - [7.0.0-13](7.0.0-13 "wikilink"). + [7.0.0-13](../7.0.0-13 "wikilink"). - **13 September 13** Nintendo released system update - [6.3.0-12](6.3.0-12 "wikilink"). -- **20 August 13** [3DSExplorer v1.5.3](3DSExplorer "wikilink") updated + [6.3.0-12](../6.3.0-12 "wikilink"). +- **20 August 13** [3DSExplorer v1.5.3](../3DSExplorer "wikilink") updated by [Elisherer](User:Elisherer "wikilink") (Enable trimming NCSD) - **6 August 13** Nintendo released system update - [6.2.0-12](6.2.0-12 "wikilink"). + [6.2.0-12](../6.2.0-12 "wikilink"). - **11 July 13** Nintendo released system update - [6.1.0-12U](6.1.0-12U "wikilink") for only USA. + [6.1.0-12U](../6.1.0-12U "wikilink") for only USA. - **27 June 13** Nintendo released system update - [6.1.0-11](6.1.0-11 "wikilink") (6.1.0-12 for all regions except USA). + [6.1.0-11](../6.1.0-11 "wikilink") (6.1.0-12 for all regions except USA). - **17 June 13** Nintendo released system update - [6.0.0-11](6.0.0-11 "wikilink") (6.0.0-12 for all regions except USA). + [6.0.0-11](../6.0.0-11 "wikilink") (6.0.0-12 for all regions except USA). - **4 April 13** Nintendo released system update - [5.1.0-11](5.1.0-11 "wikilink"). + [5.1.0-11](../5.1.0-11 "wikilink"). - **25 March 13** Nintendo released system update - [5.0.0-11](5.0.0-11 "wikilink"). -- **14 January 13** [3DSExplorer v1.5.1](3DSExplorer "wikilink") updated + [5.0.0-11](../5.0.0-11 "wikilink"). +- **14 January 13** [3DSExplorer v1.5.1](../3DSExplorer "wikilink") updated by [Elisherer](User:Elisherer "wikilink") - **4 December 12** Nintendo released system update [4.5.0-10](4.5.0-10 "wikilink"). -- **1 December 12** [3DSExplorer v1.4](3DSExplorer "wikilink") updated +- **1 December 12** [3DSExplorer v1.4](../3DSExplorer "wikilink") updated by [Elisherer](User:Elisherer "wikilink") - **2 November 12** Added page for [Chip decapping fundraiser](Fundraiser "wikilink") -- **8 January 13** [3DSExplorer v1.5](3DSExplorer "wikilink") updated by +- **8 January 13** [3DSExplorer v1.5](../3DSExplorer "wikilink") updated by [Elisherer](User:Elisherer "wikilink") -- **23 September 12** [005tools v0.1b](005tools "wikilink") by +- **23 September 12** [005tools v0.1b](../005tools "wikilink") by [McHaggis](User:McHaggis "wikilink") - **19 September 12** Nintendo released system update - [4.4.0-10](4.4.0-10 "wikilink"). + [4.4.0-10](../4.4.0-10 "wikilink"). - **17 August 12** Nintendo released New Super Mario Bros. 2, the first 3DS title released simultaneously in stores and as an [eShop](eShop "wikilink") download. -- **28 July 12** [3DSExplorer v1.3](3DSExplorer "wikilink") (modified by +- **28 July 12** [3DSExplorer v1.3](../3DSExplorer "wikilink") (modified by 3DSGuy) updated by [Elisherer](User:Elisherer "wikilink") - **24 July 12** Nintendo released system update [4.3.0-10](4.3.0-10 "wikilink"). - **26 June 12** Nintendo released system update [4.2.0-9](4.2.0-9 "wikilink"). -- **19 May 12** [3DSExplorer v1.2.1](3DSExplorer "wikilink") updated by +- **19 May 12** [3DSExplorer v1.2.1](../3DSExplorer "wikilink") updated by [Elisherer](User:Elisherer "wikilink") - **15 May 12** Nintendo released its first implementation of 3DS - '[Add-on Content](Title_list#0004000e---add-on-content "wikilink")' + '[Add-on Content](../Title_list#0004000e---add-on-content "wikilink")' with the Mario Kart 1.1 update. - **14 May 12** Nintendo released system update [4.1.0-8](4.1.0-8 "wikilink"). - **24 April 12** Nintendo released system update - [4.0.0-7](4.0.0-7 "wikilink"). -- **08 February 12** [CiTRUS v0.2](CiTRUS "wikilink") updated by + [4.0.0-7](../4.0.0-7 "wikilink"). +- **08 February 12** [CiTRUS v0.2](../CiTRUS "wikilink") updated by [Xcution](User:Xcution "wikilink") -- **04 February 12** [CiTRUS v0.1](CiTRUS "wikilink") released by +- **04 February 12** [CiTRUS v0.1](../CiTRUS "wikilink") released by [Xcution](User:Xcution "wikilink") -- **02 February 12** [3DSExplorer v1.2](3DSExplorer "wikilink") updated +- **02 February 12** [3DSExplorer v1.2](../3DSExplorer "wikilink") updated by [elisherer](User:Elisherer "wikilink") - **26 January 12** [CTR - Crappy Tiny Reader - v0.07](Crappy_Tiny_Reader "wikilink") updated by + v0.07](../Crappy_Tiny_Reader "wikilink") updated by [PsyKo](User:PsyKopaT "wikilink") - **05 January 12** [CTR - Crappy Tiny Reader - v0.06](Crappy_Tiny_Reader "wikilink") updated by + v0.06](../Crappy_Tiny_Reader "wikilink") updated by [PsyKo](User:PsyKopaT "wikilink") - **21 December 11** Nintendo released system update [3.0.0-6](3.0.0-6 "wikilink") -- **21 December 11** [3DSExplorer v1.1.1](3DSExplorer "wikilink") +- **21 December 11** [3DSExplorer v1.1.1](../3DSExplorer "wikilink") updated by [elisherer](User:Elisherer "wikilink") -- **7 December 11** [3DSExplorer v0.96](3DSExplorer "wikilink") updated +- **7 December 11** [3DSExplorer v0.96](../3DSExplorer "wikilink") updated by [elisherer](User:Elisherer "wikilink") -- **4 September 11** [3DSViewer v0.1](3DSViewer "wikilink") released by +- **4 September 11** [3DSViewer v0.1](../3DSViewer "wikilink") released by [elisherer](User:Elisherer "wikilink") - **1 August 11** [Save DeEncrypter - v1.0](3DS_Save_DeEncrypter3DS "wikilink") released by + v1.0](../3DS_Save_DeEncrypter3DS "wikilink") released by [Blite](User:Blite "wikilink") - **25 July 11** Nintendo released system update [2.1.0-4](2.1.0-4 "wikilink"). - **15 June 11** Nintendo released system update - [2.1.0-3](2.1.0-3 "wikilink"). + [2.1.0-3](../2.1.0-3 "wikilink"). - **6 June 11** Nintendo released system update [2.0.0-2](2.0.0-2 "wikilink"). -- **6 April 11** [DSaveManager v0.1](DSaveManager "wikilink") released +- **6 April 11** [DSaveManager v0.1](../DSaveManager "wikilink") released by [crediar](User:Crediar "wikilink") -- **4 April 11** [3DSaveTool v0.2b](3DSaveTool "wikilink") released by +- **4 April 11** [3DSaveTool v0.2b](../3DSaveTool "wikilink") released by [crediar](User:Crediar "wikilink") -- **2 April 11** [3DSaveTool v0.1](3DSaveTool "wikilink") released by +- **2 April 11** [3DSaveTool v0.1](../3DSaveTool "wikilink") released by [crediar](User:Crediar "wikilink") - **28 March 11** Fixed 3DBrew wiki issues, now fully operational! - **18 March 11** 3DBrew launched. diff --git a/content/Nintendo_Badge_Arcade/PrizeCollection.md b/content/Nintendo_Badge_Arcade/PrizeCollection.md index e1b65886..fc052750 100644 --- a/content/Nintendo_Badge_Arcade/PrizeCollection.md +++ b/content/Nintendo_Badge_Arcade/PrizeCollection.md @@ -374,7 +374,7 @@ A prize file stores the badge data and its image. | 0x34 | 0x4 | Start address of collision data | | 0x38 | 0x4 | End address of collision data (stuck at 0x45XX, but correct value works) | | 0x3C | 0x4 | Badge ID | -| 0x40 | 0x4 | Unknown. Same as value in offset 0x0 in [BadgeIdentifier](Home_Menu#badgeidentifier "wikilink") | +| 0x40 | 0x4 | Unknown. Same as value in offset 0x0 in [BadgeIdentifier](../Home_Menu#badgeidentifier "wikilink") | | 0x44 | 0x30 | Badge file name | | 0x74 | 0x30 | Badge category | | 0xA4 | 0x8 | Title ID it opens (0xFFFFFFFF if none) | diff --git a/content/PSPXI:GetLocalFriendCodeSeed.md b/content/PSPXI:GetLocalFriendCodeSeed.md index 11176a8b..5b1a1875 100644 --- a/content/PSPXI:GetLocalFriendCodeSeed.md +++ b/content/PSPXI:GetLocalFriendCodeSeed.md @@ -24,4 +24,4 @@ already in memory(that memory is initialized by bootrom), which is not loaded from NAND. The source data this retrieves, is also used to generate the console-unique part of the TWL [keyslots](AES "wikilink"), and can be used as part of the keyY when -[movable.sed](nand/private/movable.sed "wikilink") doesn't exist. +[movable.sed](Nand/private/movable.sed "wikilink") doesn't exist. diff --git a/content/Pyramids_(3DSWare).md b/content/Pyramids_(3DSWare).md index 8f2eaf07..940a3981 100644 --- a/content/Pyramids_(3DSWare).md +++ b/content/Pyramids_(3DSWare).md @@ -33,7 +33,7 @@ only byte that can cause a crash is at offset 0x01, as stated below. | **Address** | **Length** | **Meaning** | | 0x00 | 1 byte | Must be 0x01 or the game will not accept the level. | | 0x01 | 1 byte | This byte selects the level background. Valid bytes ranges from 0x00 to 0x04. Anything over 0x04 will cause a null exception and crash. | -| 0x02 | 160 bytes | This section contains specific [data bytes](Pyramids_3DSWare/Pyramids_icon_list "wikilink") that makes up the level (16x10 grid thus 160 bytes). | +| 0x02 | 160 bytes | This section contains specific [data bytes](Pyramids_(3DSWare)/Pyramids_icon_list "wikilink") that makes up the level (16x10 grid thus 160 bytes). | | 0xA2 | 4 bytes | This represents the time required to complete the level. Its stored as Little Endian Unsigned Int | | 0xA6 | 4 bytes | This is a [Reversed CRC32](http://www.scadacore.com/field-applications/programming-calculators/online-checksum-calculator/) of the combined bytes from address 0x00 to 0xA5 | diff --git a/content/SD_Filesystem.md b/content/SD_Filesystem.md index 52777c25..5a4fbded 100644 --- a/content/SD_Filesystem.md +++ b/content/SD_Filesystem.md @@ -27,7 +27,7 @@ sdmc - Everything stored under sdmc/Nintendo 3DS// is encrypted by 128 bit AES-CTR with console-unique [keyslots](AES "wikilink"). The keyslot is initialized by - [nand/private/movable.sed](nand/private/movable.sed "wikilink"). + [nand/private/movable.sed](Nand/private/movable.sed "wikilink"). - The crypto IV/CTR for each file is generated as follows: take the UTF-16 path relative to sdmc/Nintendo 3DS// (the path it self begins with "/") and hash it with SHA-256, including the null @@ -41,7 +41,7 @@ sdmc - Files stored under [nand/data/](Flash_Filesystem "wikilink") also use the same keyslot, but it is only used for MACs. - ID0 is the first 0x10-bytes from a SHA256 - [hash](nand/private/movable.sed "wikilink"). + [hash](Nand/private/movable.sed "wikilink"). - ID1 is the scrambled SD card CID from the SD card which this directory was originally created on. To generate this directory name from the original CID, first the CID is rotated 8-bits to the left. Then, each diff --git a/content/SHBIN.md b/content/SHBIN.md index 1d83bc09..10d39347 100644 --- a/content/SHBIN.md +++ b/content/SHBIN.md @@ -23,7 +23,7 @@ can be stored in a single SHBIN. Hence for the following, note the distinction between "program" and "executable". For a description of the instruction set, see the following page : -[Shader Instruction Set](Shader_Instruction_Set "wikilink") +[Shader Instruction Set](GPU/Shader_Instruction_Set "wikilink") ## Header diff --git a/content/Serials.md b/content/Serials.md index 1ae767b7..e0966cda 100644 --- a/content/Serials.md +++ b/content/Serials.md @@ -142,7 +142,7 @@ ID\] |-----------------|--------------------------------------------------------------------------------------------------| | P | Cartridge software, or downloadable versions of them. | | N | Digital-only releases, including [system applications and applets](Title_list "wikilink"). | -| M | [DLC](DLC "wikilink") | +| M | [DLC](Title_list/DLC "wikilink") | | T | [eShop Demos](eShop_Demos "wikilink"), excluding so-called "special demos" which are category N. | | U | [Patches](Title_list#0004000e---add-on-content-(updates) "wikilink") for category P titles. | diff --git a/content/Title_Database.md b/content/Title_Database.md index c054d182..f84c289d 100644 --- a/content/Title_Database.md +++ b/content/Title_Database.md @@ -9,7 +9,7 @@ installed 3DS titles. The database files are located at: - sdmc/Nintendo 3DS///dbs ID0 is the first 0x10-bytes from a SHA256 -[hash](nand/private/movable.sed "wikilink"). The installation of [SD +[hash](Nand/private/movable.sed "wikilink"). The installation of [SD Card](SD_Filesystem "wikilink") titles was introduced in the [2.0.0-2](2.0.0-2 "wikilink") update and the SD dbs files are encrypted by [the general SD filesystem encryption diff --git a/content/Title_list/DLC.md b/content/Title_list/DLC.md index 058eb9bb..78f0f971 100644 --- a/content/Title_list/DLC.md +++ b/content/Title_list/DLC.md @@ -2,7 +2,7 @@ title = 'DLC' +++ -[Go Back to Title list](Title_list "wikilink") +[Go Back to Title list](. "wikilink") ## Overview @@ -20,14 +20,14 @@ DLC_title_index. Usually an application only has one DLC_title_index, but for applications which have a \*lot\* of DLC there's more than one DLC_title_index(JPN Home Menu for themes for example). -Every DLC title include [NCCH](NCCH "wikilink") partitions. The first +Every DLC title include [NCCH](../NCCH "wikilink") partitions. The first one is always content metadata. ## Content metadata structure -The first [NCCH](NCCH "wikilink") partition of a DLC title. It +The first [NCCH](../NCCH "wikilink") partition of a DLC title. It determines region, language and DLC icons. The ExeFS section of content -metadata only contains [icon](SMDH "wikilink") section. The RomFS +metadata only contains [icon](../SMDH "wikilink") section. The RomFS section contains "icons" directory, a MetaDataContentHeader.bin file and some ContentInfoArchive files. @@ -128,7 +128,7 @@ and are determined in MetaDataContentHeader.bin) | TitleID Low | Region | Description | Versions | |-------------|--------|-----------------------------------------------------------------------------------------------------------------------|---------------------------------------| -| 00008800 | JPN | [New 3DS](New_3DS "wikilink") [Internet Browser](Internet_Browser "wikilink") DLC, used for disabling the web filter. | v0 | +| 00008800 | JPN | [New 3DS](../New_3DS "wikilink") [Internet Browser](../Internet_Browser "wikilink") DLC, used for disabling the web filter. | v0 | | 0015D800 | USA | IronFall Invasion \[DLC\] | Unknown | | 00022800 | EUR | StreetPass Mii Plaza \[DLC\] | v5 | | 00068300 | ? | ? | v0, v256 | diff --git a/content/Title_list/Patches.md b/content/Title_list/Patches.md index 23139f78..47c9b590 100644 --- a/content/Title_list/Patches.md +++ b/content/Title_list/Patches.md @@ -2,14 +2,14 @@ title = 'Patches' +++ -[Go Back to Title list](Title_list "wikilink") +[Go Back to Title list](. "wikilink") ## Overview -These are the same as the application's main [CXI](NCCH#cxi "wikilink"), +These are the same as the application's main [CXI](../NCCH#cxi "wikilink"), except the ExeFS/RomFS only contains files which were updated. When -launching an application, [NS](NS "wikilink") will first try to -[launch](Process_Manager_Services "wikilink") the specified title with +launching an application, [NS](../NS "wikilink") will first try to +[launch](../Process_Manager_Services "wikilink") the specified title with the programID-high changed to 0x0004000E(update-data), if that fails NS will then try launching the title with the actual input programID. The programID stored in the update-data NCCH header matches the update-data @@ -33,7 +33,7 @@ needing separate update-romfs. | 00030800 | USA | Mario Kart 7 \[Update Data\] | v1.1 (v1040) | | 00032100 | JPN | New Love Plus \[Update Data\] | v1024, v2048 | | 0004EE00 | ? | ? | v1024 | -| 00056C00 | JPN | [Flipnote Studio 3D](Flipnote_Studio_3D "wikilink") | v5120 | +| 00056C00 | JPN | [Flipnote Studio 3D](../Flipnote_Studio_3D "wikilink") | v5120 | | 00072A00 | ? | ? | v1040 | | 00078500 | ? | ? | v1024, v3072 | | 0007A000 | ? | ? | v1024 | diff --git a/content/Title_list/eShop_Titles.md b/content/Title_list/eShop_Titles.md index 646e9c3f..361ab91d 100644 --- a/content/Title_list/eShop_Titles.md +++ b/content/Title_list/eShop_Titles.md @@ -2,15 +2,15 @@ title = 'EShop Titles' +++ -[Go Back to Title list](Title_list "wikilink") +[Go Back to Title list](. "wikilink") ## Overview This titleID-High (00040000) is also used for gamecard applications. The -[CXI](NCCH#cxi "wikilink") for retail applications available via +[CXI](../NCCH#cxi "wikilink") for retail applications available via gamecard and eShop are exactly the same, except the exheader differs. For SD applications exheader_systeminfoflags.flag -[bit1](NCCH#ncch_specs "wikilink") is set, for gamecard applications +[bit1](../NCCH#ncch_specs "wikilink") is set, for gamecard applications this bit is clear. The ExeFS and RomFS are exactly the same for the gamecard/eShop versions. The eShop version of the CXI has additional padding. @@ -20,7 +20,7 @@ programID with the application programIDs for each region of Ridge Racer. When the gamecard programID matches the Ridge Racer programID, this code will set a flag, however it's unknown what this flag is used for. This is probably used for the Ridge Racer fix implemented with -[2.1.0-3](2.1.0-3 "wikilink"). +[2.1.0-3](../2.1.0-3 "wikilink"). ## List @@ -30,12 +30,12 @@ for. This is probably used for the Ridge Racer fix implemented with | 00040800 | USA | Super Mario Land | v16, v32 | | 00040A00 | EUR | Super Mario Land | v16, v32 | | 00042A00 | EUR | The Legend of Zelda: Link's Awakening DX | v0, v16 | -| 0004AA00 | USA | [Nintendo Video](Nintendo_Video "wikilink") | v0 | -| 0004AB00 | EUR | [Nintendo Video](Nintendo_Video "wikilink") | v0, v3072, v3172 | -| 00051600 | JPN | [Swapnote](Swapnote "wikilink") | v0, v1024, v2064 | -| 00051700 | USA | [Swapnote](Swapnote "wikilink") | v0, v1024, v2064 | -| 00051800 | EUR | [Nintendo Letter Box](Swapnote "wikilink") | v0, v1024, v2064 | -| 00056C00 | JPN | [Flipnote Studio 3D](Flipnote_Studio_3D "wikilink") | v64, v2192 | +| 0004AA00 | USA | [Nintendo Video](../Nintendo_Video "wikilink") | v0 | +| 0004AB00 | EUR | [Nintendo Video](../Nintendo_Video "wikilink") | v0, v3072, v3172 | +| 00051600 | JPN | [Swapnote](../Swapnote "wikilink") | v0, v1024, v2064 | +| 00051700 | USA | [Swapnote](../Swapnote "wikilink") | v0, v1024, v2064 | +| 00051800 | EUR | [Nintendo Letter Box](../Swapnote "wikilink") | v0, v1024, v2064 | +| 00056C00 | JPN | [Flipnote Studio 3D](../Flipnote_Studio_3D "wikilink") | v64, v2192 | | 00057700 | USA | Netflix | v0, v32 | | 0005AD00 | JPN | Kid Icarus Uprising E3 Video | v0 | | 0005AE00 | USA | Kid Icarus Uprising E3 Video | v0 | @@ -138,10 +138,10 @@ for. This is probably used for the Ridge Racer fix implemented with | 000AD000 | EUR | Preview Video: Luigi Mansion: Dark Moon | v0, v16 | | 000AD100 | EUR | Preview Video: New Super Mario Bros. 2 | v0, v16 | | 000AE100 | ALL | Pokemon Dream Radar | v0, v16 | -| 000C7300 | ALL | [Save Data Transfer Tool](Save_Data_Transfer_Tool "wikilink") | v0 | -| 000B0F00 | USA | [YouTube](YouTube "wikilink") | v16, v1056, v2096 (released (about/exactly?) October 15, 2015) | +| 000C7300 | ALL | [Save Data Transfer Tool](../Save_Data_Transfer_Tool "wikilink") | v0 | +| 000B0F00 | USA | [YouTube](../YouTube "wikilink") | v16, v1056, v2096 (released (about/exactly?) October 15, 2015) | | 000CCE00 | USA | Donkey Kong Country Returns 3D | v48 | -| 000CCD00 | EUR | [YouTube](YouTube "wikilink") | v0, v1040, v2080 (released (about/exactly?) October 15, 2015) | +| 000CCD00 | EUR | [YouTube](../YouTube "wikilink") | v0, v1040, v2080 (released (about/exactly?) October 15, 2015) | | 000D9A00 | EUR | Donkey Kong Country Returns 3D: Trailer | v16 | | 0015D800 | USA | IRONFALL Invasion | v0 (content files removed on roughly 7 January 16), v2080 | | 0011D600 | EUR | Pikmin Short Movies 3D | v0 | diff --git a/content/Titles.md b/content/Titles.md index 44850c11..058f9be7 100644 --- a/content/Titles.md +++ b/content/Titles.md @@ -158,11 +158,11 @@ are: | | | | ID0 is the first 0x10-bytes from a SHA256 -[hash](nand/private/movable.sed "wikilink") and ID1 is generated from +[hash](Nand/private/movable.sed "wikilink") and ID1 is generated from the SD card CID. Title data stored on the SD Card is encrypted with the console-unique -[keyslots](nand/private/movable.sed "wikilink"), whereas NAND title data +[keyslots](Nand/private/movable.sed "wikilink"), whereas NAND title data is stored as cleartext. The base CTR for files stored under /title is likely based on the /title diff --git a/content/Twln/shared2/0000.md b/content/Twln/shared2/0000.md index b3d670d2..0ca1e1ff 100644 --- a/content/Twln/shared2/0000.md +++ b/content/Twln/shared2/0000.md @@ -9,11 +9,11 @@ The proprietary format is backwards compatible with DSi software, but not with most 3DS software capable of accessing voice memos on the SD card. -[Nintendo 3DS Sound](Nintendo_3DS_Sound "wikilink") can be used to +[Nintendo 3DS Sound](../../Nintendo_3DS_Sound "wikilink") can be used to import and export audio from internal storage. Any 3DS-mode application capable of mounting [shared extdata -f0000002](Extdata "wikilink") can also access the files, in M4A format +f0000002](../../Extdata "wikilink") can also access the files, in M4A format according to the naming conventions of recordings on SD (folders are not used). diff --git a/content/Twln/sys/log/inspect.log.md b/content/Twln/sys/log/inspect.log.md index 1ca2b751..7d922cb4 100644 --- a/content/Twln/sys/log/inspect.log.md +++ b/content/Twln/sys/log/inspect.log.md @@ -3,9 +3,9 @@ title = 'Inspect.log' +++ A text file (Unix line endings) generated during manufacturing by -[CTRAging](CTRAging "wikilink") (which is also the preferred viewer for +[CTRAging](../../../CTRAging "wikilink") (which is also the preferred viewer for this file). The MAC address, serial number, [region -number](SecureInfo_A "wikilink"), and manufacturing date are all stored +number](../../../Nandrw/sys/SecureInfo_A "wikilink"), and manufacturing date are all stored here. diff --git a/content/content/_index.md b/content/content/_index.md new file mode 100644 index 00000000..3bcf7385 --- /dev/null +++ b/content/content/_index.md @@ -0,0 +1,5 @@ ++++ +bookFlatSection = true +title = "3DS Content" +weight = 100 ++++ diff --git a/content/content/apps/_index.md b/content/content/apps/_index.md new file mode 100644 index 00000000..dca5a953 --- /dev/null +++ b/content/content/apps/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list diff --git a/content/content/games/_index.md b/content/content/games/_index.md new file mode 100644 index 00000000..dca5a953 --- /dev/null +++ b/content/content/games/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list diff --git a/content/general/_index.md b/content/general/_index.md new file mode 100644 index 00000000..27eddbd0 --- /dev/null +++ b/content/general/_index.md @@ -0,0 +1,4 @@ ++++ +weight = 10 +bookCollapseSection = true ++++ diff --git a/content/hardware/_index.md b/content/hardware/_index.md new file mode 100644 index 00000000..5c1696ef --- /dev/null +++ b/content/hardware/_index.md @@ -0,0 +1,5 @@ ++++ +bookFlatSection = true +title = '3DS Hardware' +weight = 50 ++++ diff --git a/content/hardware/peripherals/_index.md b/content/hardware/peripherals/_index.md new file mode 100644 index 00000000..21dbe9e1 --- /dev/null +++ b/content/hardware/peripherals/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list \ No newline at end of file diff --git a/content/hardware/registers/_index.md b/content/hardware/registers/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/hardware/registers/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/homebrew/_index.md b/content/homebrew/_index.md new file mode 100644 index 00000000..e946f4b3 --- /dev/null +++ b/content/homebrew/_index.md @@ -0,0 +1,4 @@ ++++ +weight = 30 +bookCollapseSection = true ++++ diff --git a/content/homebrew/apps/_index.md b/content/homebrew/apps/_index.md new file mode 100644 index 00000000..dca5a953 --- /dev/null +++ b/content/homebrew/apps/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list diff --git a/content/homebrew/exploits/_index.md b/content/homebrew/exploits/_index.md new file mode 100644 index 00000000..dca5a953 --- /dev/null +++ b/content/homebrew/exploits/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list diff --git a/content/os/_index.md b/content/os/_index.md new file mode 100644 index 00000000..efdbd9b7 --- /dev/null +++ b/content/os/_index.md @@ -0,0 +1,5 @@ ++++ +bookFlatSection = true +title = '3DS Operating System' +weight = 70 ++++ diff --git a/content/os/files/_index.md b/content/os/files/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/nand/_index.md b/content/os/files/nand/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/nand/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/nand/private/_index.md b/content/os/files/nand/private/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/nand/private/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/nandrw/_index.md b/content/os/files/nandrw/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/nandrw/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/nandrw/sys/_index.md b/content/os/files/nandrw/sys/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/nandrw/sys/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/twln/_index.md b/content/os/files/twln/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/twln/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/twln/shared2/_index.md b/content/os/files/twln/shared2/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/twln/shared2/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/twln/sys/_index.md b/content/os/files/twln/sys/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/twln/sys/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/files/twln/sys/log/_index.md b/content/os/files/twln/sys/log/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/files/twln/sys/log/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/kernel/_index.md b/content/os/kernel/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/kernel/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/kernel/objects/_index.md b/content/os/kernel/objects/_index.md new file mode 100644 index 00000000..21dbe9e1 --- /dev/null +++ b/content/os/kernel/objects/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list \ No newline at end of file diff --git a/content/os/services/_index.md b/content/os/services/_index.md new file mode 100644 index 00000000..cf25f93a --- /dev/null +++ b/content/os/services/_index.md @@ -0,0 +1,3 @@ ++++ +bookCollapseSection = true ++++ diff --git a/content/os/services/ac/_index.md b/content/os/services/ac/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ac/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/act/_index.md b/content/os/services/act/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/act/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/am/_index.md b/content/os/services/am/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/am/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/apt/_index.md b/content/os/services/apt/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/apt/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/boss/_index.md b/content/os/services/boss/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/boss/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/cam/_index.md b/content/os/services/cam/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/cam/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/cdc/_index.md b/content/os/services/cdc/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/cdc/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/cecd/_index.md b/content/os/services/cecd/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/cecd/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/cfg/_index.md b/content/os/services/cfg/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/cfg/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/csnd/_index.md b/content/os/services/csnd/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/csnd/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/dlp/_index.md b/content/os/services/dlp/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/dlp/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/dsp/_index.md b/content/os/services/dsp/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/dsp/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/err/_index.md b/content/os/services/err/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/err/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/frd/_index.md b/content/os/services/frd/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/frd/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/fs/_index.md b/content/os/services/fs/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/fs/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/gpio/_index.md b/content/os/services/gpio/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/gpio/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/gsp/_index.md b/content/os/services/gsp/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/gsp/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/hid/_index.md b/content/os/services/hid/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/hid/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/http/_index.md b/content/os/services/http/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/http/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/i2c/_index.md b/content/os/services/i2c/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/i2c/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ir/_index.md b/content/os/services/ir/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ir/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/loader/_index.md b/content/os/services/loader/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/loader/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/mcu/_index.md b/content/os/services/mcu/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/mcu/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/mic/_index.md b/content/os/services/mic/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/mic/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/mp/_index.md b/content/os/services/mp/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/mp/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/mvd/_index.md b/content/os/services/mvd/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/mvd/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ndm/_index.md b/content/os/services/ndm/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ndm/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/news/_index.md b/content/os/services/news/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/news/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/nfc/_index.md b/content/os/services/nfc/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/nfc/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/nim/_index.md b/content/os/services/nim/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/nim/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ns/_index.md b/content/os/services/ns/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ns/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/nwm/_index.md b/content/os/services/nwm/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/nwm/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/pdn/_index.md b/content/os/services/pdn/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/pdn/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/pm/_index.md b/content/os/services/pm/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/pm/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ps/_index.md b/content/os/services/ps/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ps/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ptm/_index.md b/content/os/services/ptm/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ptm/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/pxi/_index.md b/content/os/services/pxi/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/pxi/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/qtm/_index.md b/content/os/services/qtm/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/qtm/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ro/_index.md b/content/os/services/ro/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ro/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/soc/_index.md b/content/os/services/soc/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/soc/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/spi/_index.md b/content/os/services/spi/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/spi/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/srv/_index.md b/content/os/services/srv/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/srv/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/services/ssl/_index.md b/content/os/services/ssl/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/services/ssl/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/os/versions/_index.md b/content/os/versions/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/os/versions/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/content/software/_index.md b/content/software/_index.md new file mode 100644 index 00000000..6c0c4b6f --- /dev/null +++ b/content/software/_index.md @@ -0,0 +1,5 @@ ++++ +bookFlatSection = true +title = '3DS Software Stack' +weight = 80 ++++ diff --git a/content/software/formats/_index.md b/content/software/formats/_index.md new file mode 100644 index 00000000..dca5a953 --- /dev/null +++ b/content/software/formats/_index.md @@ -0,0 +1,5 @@ ++++ +bookHideChildren = true ++++ + +TODO list diff --git a/content/wiki/_index.md b/content/wiki/_index.md new file mode 100644 index 00000000..4f1d47c9 --- /dev/null +++ b/content/wiki/_index.md @@ -0,0 +1,3 @@ ++++ +bookHideChildren = true ++++ diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html index b37f4bda..be60af39 100644 --- a/layouts/_default/_markup/render-link.html +++ b/layouts/_default/_markup/render-link.html @@ -1,22 +1,21 @@ -{{ $rootPath := "/"}} -{{ $isExternal := (strings.HasPrefix .Destination "http") }} -{{- if (not (or $isExternal (strings.HasPrefix .Destination "#"))) }} - {{ $style := "" }} - {{ $desiredPage := (index (strings.Split .Destination "#") 0) }} - {{ with $.PageInner.GetPage $desiredPage }} - - {{ with .File }} - {{ if (ne .Path (print $desiredPage "." .Ext)) }} - {{ $style = "color:#ba0000" }} - {{ end }} - {{ end }} - {{ else }} - {{ $style = "color:#ba0000" }} - {{ end }} - - {{- with .Text }}{{ . }}{{ end -}} {{ else }} {{ if $isExternal }}🔗 {{ end }} {{- with .Text }}{{ . }}{{ end -}} - {{ end -}} + {{ end -}} \ No newline at end of file diff --git a/layouts/partials/docs/footer.html b/layouts/partials/docs/footer.html new file mode 100644 index 00000000..467551dc --- /dev/null +++ b/layouts/partials/docs/footer.html @@ -0,0 +1,32 @@ +
+ +{{ if and .GitInfo .Site.Params.BookRepo }} +
+ {{- $date := partial "docs/date" (dict "Date" .GitInfo.AuthorDate.Local "Format" .Site.Params.BookDateFormat) -}} + {{- $commitPath := default "commit" .Site.Params.BookCommitPath -}} + + + {{ $date }} + +
+{{ end }} + +{{ if and .File .Site.Params.BookRepo .Site.Params.BookEditPath .Site.Params.BookViewPath }} + +{{ end }} + +
+ +{{ $script := resources.Get "clipboard.js" | resources.Minify }} +{{ with $script.Content }} + +{{ end }} diff --git a/layouts/partials/docs/menu-filetree.html b/layouts/partials/docs/menu-filetree.html new file mode 100644 index 00000000..fdf2bf3c --- /dev/null +++ b/layouts/partials/docs/menu-filetree.html @@ -0,0 +1,8 @@ +{{ $bookSection := default "docs" .Site.Params.BookSection }} +{{ if eq $bookSection "*" }} + {{ $bookSection = "/" }}{{/* Backward compatibility */}} +{{ end }} + +{{ with .Site.GetPage $bookSection }} + {{ partialCached "docs/menu-section-children" (dict "Section" (partialCached "docs/menu-root-section" .) "CurrentPage" $) .Path $ }} +{{ end }} diff --git a/layouts/partials/docs/menu-page-link.html b/layouts/partials/docs/menu-page-link.html new file mode 100644 index 00000000..f2aca58d --- /dev/null +++ b/layouts/partials/docs/menu-page-link.html @@ -0,0 +1,22 @@ +{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}} +{{ $current := eq .CurrentPage .Page }} +{{ $ancestor := .Page.IsAncestor .CurrentPage }} + +{{ if .Page.Params.BookCollapseSection }} + + +{{ else if .Page.Params.BookHref }} + + {{- partialCached "docs/title" .Page .Page -}} + +{{ else if .Page.Content }} + + {{- partialCached "docs/title" .Page .Page -}} + +{{ else }} + {{- partialCached "docs/title" .Page .Page -}} +{{ end }} \ No newline at end of file diff --git a/layouts/partials/docs/menu-root-section.html b/layouts/partials/docs/menu-root-section.html new file mode 100644 index 00000000..689e9b4d --- /dev/null +++ b/layouts/partials/docs/menu-root-section.html @@ -0,0 +1 @@ +{{ return (dict "Pages" (slice (.GetPage "general") (.GetPage "homebrew") (.GetPage "hardware") (.GetPage "os") (.GetPage "software") (.GetPage "content"))) -}} \ No newline at end of file diff --git a/layouts/partials/docs/menu-section-children.html b/layouts/partials/docs/menu-section-children.html new file mode 100644 index 00000000..75efc169 --- /dev/null +++ b/layouts/partials/docs/menu-section-children.html @@ -0,0 +1,15 @@ +{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}} +
    + {{ range (where .Section.Pages "Params.bookhidden" "ne" true) }} + {{ if and .IsSection (not .Params.BookHideChildren) }} +
  • + {{ partialCached "docs/menu-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) .Path (or (.IsAncestor $.CurrentPage) (eq . $.CurrentPage)) }} + {{ partialCached "docs/menu-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) .Path (cond (.IsAncestor $.CurrentPage) $.CurrentPage false) }} +
  • + {{ else if and (or .IsPage .Params.BookHideChildren) .Content }} +
  • + {{ partialCached "docs/menu-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) .Path (eq . $.CurrentPage) }} +
  • + {{ end }} + {{ end }} +
\ No newline at end of file diff --git a/layouts/partials/ipc/content_post.html b/layouts/partials/ipc/content_post.html new file mode 100644 index 00000000..71d9e80d --- /dev/null +++ b/layouts/partials/ipc/content_post.html @@ -0,0 +1,2 @@ + + diff --git a/layouts/partials/ipc/content_pre.html b/layouts/partials/ipc/content_pre.html new file mode 100644 index 00000000..5f1fbd77 --- /dev/null +++ b/layouts/partials/ipc/content_pre.html @@ -0,0 +1,30 @@ +{{ $header := 0 }} +{{ $cmd := 0 }} +{{ $params := 0 }} +{{ $xlat := 0 }} +{{ if (.Get "header") }} + {{ $header = int (.Get "header") }} + {{ $cmd = div $header 65536 }} + {{ $params = mod (div $header 64) 64 }} + {{ $xlat = mod $header 64 }} +{{ else }} + {{ $cmd = int (.Get "cmd") }} + {{ $params = int (.Get "params") }} + {{ $xlat = int (.Get "xlat") }} + {{ $header = add (mul $cmd 65536) (mul $params 64) $xlat }} +{{ end }} +{{ .Page.Scratch.Set "ipcindex" 1 }} + + + + + + + + + + + + + + diff --git a/layouts/partials/struct/table_line.html b/layouts/partials/struct/table_line.html new file mode 100644 index 00000000..8d1c8b69 --- /dev/null +++ b/layouts/partials/struct/table_line.html @@ -0,0 +1 @@ + diff --git a/layouts/partials/struct/type_info.html b/layouts/partials/struct/type_info.html new file mode 100644 index 00000000..d4bdc6ca --- /dev/null +++ b/layouts/partials/struct/type_info.html @@ -0,0 +1,38 @@ +{{ $stringified := "unsupported-type" -}} +{{ $size := 1 -}} +{{ $align := 1 -}} +{{ if reflect.IsMap .type -}} + {{ if .type.ptr -}} + {{ $ptr := .type.ptr -}} + {{ $to := $ptr -}} + {{ $params := slice }} + {{ if reflect.IsMap $ptr -}} + {{ $to = $ptr.to -}} + {{ $params = $ptr.params -}} + {{ end -}} + {{ if eq .syntax "c" -}} + {{ $pointed := $to -}} + {{ if $params -}} + {{ $pointed = printf "%s<%s>" $to (delimit $params ", ") -}} + {{ end -}} + {{ $stringified = printf "%s*" $pointed -}} + {{ else if eq .syntax "zig" -}} + {{ $pointed := $to -}} + {{ if $params -}} + {{ $pointed = printf "%s(%s)" $to (delimit $params ", ") -}} + {{ end -}} + {{ $stringified = printf "%s*%s" (cond (default false .type.optional) "?" "") $pointed -}} + {{ end -}} + {{ end -}} +{{ else -}} + {{ if eq .type "addr" -}} + {{ if eq .syntax "c" -}} + {{ $stringified = "void*" }} + {{ else if eq .syntax "zig" -}} + {{ $stringified = "*anyopaque" -}} + {{ end -}} + {{ else -}} + {{ $stringified = .type -}} + {{ end -}} +{{ end -}} +{{ return (dict "str" $stringified) -}} \ No newline at end of file diff --git a/layouts/shortcodes/Main/Header.html b/layouts/shortcodes/Main/Header.html index d30f76be..03a5cd2f 100644 --- a/layouts/shortcodes/Main/Header.html +++ b/layouts/shortcodes/Main/Header.html @@ -1,4 +1,4 @@ -
+
Welcome to 3dbrew, diff --git a/layouts/shortcodes/code.html b/layouts/shortcodes/code.html new file mode 100644 index 00000000..942d198a --- /dev/null +++ b/layouts/shortcodes/code.html @@ -0,0 +1 @@ +{{ .Inner }} \ No newline at end of file diff --git a/layouts/shortcodes/ipc/command.html b/layouts/shortcodes/ipc/command.html new file mode 100644 index 00000000..e8760b4e --- /dev/null +++ b/layouts/shortcodes/ipc/command.html @@ -0,0 +1,6 @@ +{{ $cmd := .Page.Params.command }} +
+ Since {{ $cmd.since }} + {{ if $cmd.until }}Until {{ $cmd.until }}{{ end }} + For {{ range $i, $service := $cmd.for }}{{ $service }}{{ if ne $i (sub (len $cmd.for) 1) }}, {{ end }}{{ end }} +
diff --git a/layouts/shortcodes/ipc/movehandle.html b/layouts/shortcodes/ipc/movehandle.html new file mode 100644 index 00000000..74c32e10 --- /dev/null +++ b/layouts/shortcodes/ipc/movehandle.html @@ -0,0 +1,8 @@ +{{ $ipcindex := int (or (.Page.Scratch.Get "ipcindex") 1) }} +{{ .Page.Scratch.Set "ipcindex" (add $ipcindex 1) }} + +
+ + + + \ No newline at end of file diff --git a/layouts/shortcodes/ipc/movehandle/entry.html b/layouts/shortcodes/ipc/movehandle/entry.html new file mode 100644 index 00000000..b56925bd --- /dev/null +++ b/layouts/shortcodes/ipc/movehandle/entry.html @@ -0,0 +1,8 @@ +{{ $ipcindex := (int (or (.Page.Scratch.Get "ipcindex") 1)) }} +{{ .Page.Scratch.Set "ipcindex" (add $ipcindex 1) }} + + + + + + \ No newline at end of file diff --git a/layouts/shortcodes/ipc/param.html b/layouts/shortcodes/ipc/param.html new file mode 100644 index 00000000..886865cd --- /dev/null +++ b/layouts/shortcodes/ipc/param.html @@ -0,0 +1,9 @@ +{{ $span := int (or (.Get "span") 1) }} +{{ $ipcindex := int (or (.Page.Scratch.Get "ipcindex") 1) }} +{{ .Page.Scratch.Set "ipcindex" (add $ipcindex $span) }} + + + + + + diff --git a/layouts/shortcodes/ipc/request.html b/layouts/shortcodes/ipc/request.html new file mode 100644 index 00000000..feed3f69 --- /dev/null +++ b/layouts/shortcodes/ipc/request.html @@ -0,0 +1,4 @@ +{{ .Scratch.Set "type" "request" }} +{{ partial "ipc/content_pre.html" . }} + {{ .Inner }} +{{ partial "ipc/content_post.html" . }} \ No newline at end of file diff --git a/layouts/shortcodes/ipc/response.html b/layouts/shortcodes/ipc/response.html new file mode 100644 index 00000000..636ad17c --- /dev/null +++ b/layouts/shortcodes/ipc/response.html @@ -0,0 +1,4 @@ +{{ .Scratch.Set "type" "response" }} +{{ partial "ipc/content_pre.html" . }} + {{ .Inner }} +{{ partial "ipc/content_post.html" . }} \ No newline at end of file diff --git a/layouts/shortcodes/ipc/result.html b/layouts/shortcodes/ipc/result.html new file mode 100644 index 00000000..40a38326 --- /dev/null +++ b/layouts/shortcodes/ipc/result.html @@ -0,0 +1,8 @@ +{{ $ipcindex := int (or (.Page.Scratch.Get "ipcindex") 1) }} +{{ .Page.Scratch.Set "ipcindex" (add $ipcindex 1) }} + + + + + + diff --git a/layouts/shortcodes/ipc/staticbuffer.html b/layouts/shortcodes/ipc/staticbuffer.html new file mode 100644 index 00000000..55dbfa98 --- /dev/null +++ b/layouts/shortcodes/ipc/staticbuffer.html @@ -0,0 +1,13 @@ +{{ $ipcindex := int (or (.Page.Scratch.Get "ipcindex") 1) }} +{{ .Page.Scratch.Set "ipcindex" (add $ipcindex 2) }} + + + + + + + + + + + diff --git a/layouts/shortcodes/kobj/classline.html b/layouts/shortcodes/kobj/classline.html new file mode 100644 index 00000000..a8ae534a --- /dev/null +++ b/layouts/shortcodes/kobj/classline.html @@ -0,0 +1,5 @@ +{{ $ctx := . -}} +{{ $params := .Page.Params -}} +{{ $data := index (resources.Get "kernel-objects.yaml" | unmarshal) $params.title -}} +{{ $inherits := $data.inherits -}} +class {{ $params.title }}{{ if $inherits }} extends {{ range $i, $super := $inherits }}{{ $super }}{{ if ne $i (sub (len $inherits) 1) }}, {{ end }}{{ end }}{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/kobj/code.html b/layouts/shortcodes/kobj/code.html new file mode 100644 index 00000000..378d956b --- /dev/null +++ b/layouts/shortcodes/kobj/code.html @@ -0,0 +1,62 @@ +{{ define "partials/kobjhighlight/cpp" -}} +{{ $name := . -}} +{{ $typedata := resources.Get "kernel-objects.yaml" | unmarshal -}} +{{ $data := index $typedata $name -}} +{{ $inherits := $data.inherits -}} +{{ if $data.params -}} +template{{ safeHTML "<" }}typename {{ delimit $data.params ", typename " }}> +{{ end -}} +class {{ $name }}{{ if $inherits }} : {{ range $i, $super := $inherits }}public {{ $super }}{{ if ne $i (sub (len $inherits) 1) }}, {{ end }}{{ end }}{{ end }} { +public: +{{ range $data.fields -}} + {{ if .base -}} + {{ continue -}} + {{ end -}} + {{ $stringified := (partial "struct/type_info.html" (dict "typedata" $typedata "type" .type "syntax" "c")).str -}} + {{- if eq .type "vtable_ptr" -}} + {{- " " }}// vtable* _vtable;{{ "\n" -}} + {{- else -}} + {{- " " }}{{ $stringified | safeHTML }} {{ .name }};{{ strings.Repeat (sub 49 (len $stringified) (len .name)) " " }}// {{ printf "0x%X\n" .offset }} + {{- end -}} +{{ end -}} +{{ if $data.virtual -}} +protected: + virtual ~{{ $name }}() {} +{{ end -}} +}; +{{ end -}} +{{ define "partials/kobjhighlight/zig" -}} +{{ $name := . -}} +{{ $typedata := resources.Get "kernel-objects.yaml" | unmarshal -}} +{{ $data := index $typedata $name -}} +{{ if $data.params -}} +fn {{ $name }}(comptime {{ delimit $data.params ": type, comptime " }}: type) { return extern struct { +{{ else -}} +const {{ $name }} = extern struct { +{{ end -}} +{{ range $data.fields -}} + {{ $stringified := (partial "struct/type_info.html" (dict "typedata" $typedata "type" .type "syntax" "zig")).str -}} + {{- if eq .type "vtable_ptr" -}} + {{- " " }}_vtable: *vtable,{{ "\n" -}} + {{- else -}} + {{- " " }}{{ .name }}: {{ $stringified | safeHTML }},{{ strings.Repeat (sub 48 (len $stringified) (len .name)) " " }}// {{ printf "0x%X\n" .offset }} + {{- end -}} +{{ end -}} +{{ if $data.params -}} +} }; +{{ else -}} +}; +{{ end -}} +{{ end -}} +
+ + +
+ {{ highlight (partial "kobjhighlight/cpp" .Page.Params.title) "c++" }} +
+ + +
+ {{ highlight (partial "kobjhighlight/zig" .Page.Params.title) "zig" }} +
+
diff --git a/layouts/shortcodes/struct.html b/layouts/shortcodes/struct.html new file mode 100644 index 00000000..eefcb3fa --- /dev/null +++ b/layouts/shortcodes/struct.html @@ -0,0 +1,20 @@ +{{ $size := int (.Get "size") -}} +{{ $fieldsize := eq (.Get "fieldsize") "true" -}} +
WordTypeDescription
{{ sub (.Page.Scratch.Get "ipcindex") 1 }}Header
{{ printf "0x%08X" $header }}Cmd{{ printf "0x%04X" $cmd }}Param{{ $params }}Xlat{{ $xlat }}
{{ $ipcindex }}MoveDescriptorDescriptor for moving {{ .Get "count" }} handle{{ if ne (.Get "count") 1 }}s{{ end }}
{{ $ipcindex }}Handle<{{ .Get "of" }}>{{ .Inner }}
{{ $ipcindex }}{{ if ne $span 1 }}-{{ add $span 1 }}{{ end }}{{ .Get "type" }}{{ .Inner }}
{{ $ipcindex }}ResultResult code
{{ $ipcindex }}BufferDescriptorDescriptor for static buffer (id {{ .Get "id" }})
{{ add $ipcindex 1 }}{{ .Get "type" }}*{{ .Inner }}
+ + + + + {{ if $fieldsize -}} + + {{ end -}} + + + + + + {{ .Inner }} + +
+ struct{{ if .Get "name" }} {{ .Get "name" }}{{ end }}, {{ printf "0x%X" $size }} bytes +
OffsetSizeTypeDescription
\ No newline at end of file diff --git a/layouts/shortcodes/struct/field.html b/layouts/shortcodes/struct/field.html new file mode 100644 index 00000000..c1e42648 --- /dev/null +++ b/layouts/shortcodes/struct/field.html @@ -0,0 +1,11 @@ +{{ $size := int (.Get "size") -}} +{{ $structoffset := int (or (.Parent.Scratch.Get "structoffset") 0) -}} +{{ .Parent.Scratch.Set "structoffset" (add $structoffset $size) -}} + + {{ printf "0x%X" $structoffset }} + {{ if eq (.Parent.Get "fieldsize") "true" -}} + {{ printf "0x%X" $size }} + {{ end -}} + {{ .Get "type" }} + {{ .Inner }} + \ No newline at end of file diff --git a/layouts/shortcodes/struct/padding.html b/layouts/shortcodes/struct/padding.html new file mode 100644 index 00000000..39096ff1 --- /dev/null +++ b/layouts/shortcodes/struct/padding.html @@ -0,0 +1,11 @@ +{{ $size := int (.Get "size") -}} +{{ $structoffset := int (or (.Parent.Scratch.Get "structoffset") 0) -}} +{{ .Parent.Scratch.Set "structoffset" (add $structoffset $size) -}} + + {{ printf "0x%X" $structoffset }} + {{ if eq (.Parent.Get "fieldsize") "true" -}} + {{ printf "0x%X" $size }} + {{ end -}} + padding + + \ No newline at end of file diff --git a/layouts/shortcodes/struct/vptr.html b/layouts/shortcodes/struct/vptr.html new file mode 100644 index 00000000..6aef649d --- /dev/null +++ b/layouts/shortcodes/struct/vptr.html @@ -0,0 +1,10 @@ +{{ $structoffset := int (or (.Parent.Scratch.Get "structoffset") 0) -}} +{{ .Parent.Scratch.Set "structoffset" (add $structoffset 4) -}} + + {{ printf "0x%X" $structoffset }} + {{ if eq (.Parent.Get "fieldsize") "true" -}} + 0x4 + {{ end -}} + vtable* + Vtable pointer + \ No newline at end of file diff --git a/static/svg/view.svg b/static/svg/view.svg new file mode 100644 index 00000000..bc755dbd --- /dev/null +++ b/static/svg/view.svg @@ -0,0 +1 @@ + \ No newline at end of file