Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/megatonhammer/linkle
The legendary hero that can create various Nintendo Switch formats from her rusty crossbows
https://github.com/megatonhammer/linkle
homebrew nintendo nintendo-switch rust switch tool
Last synced: 3 days ago
JSON representation
The legendary hero that can create various Nintendo Switch formats from her rusty crossbows
- Host: GitHub
- URL: https://github.com/megatonhammer/linkle
- Owner: MegatonHammer
- License: apache-2.0
- Created: 2018-04-27T15:59:55.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-09T15:05:54.000Z (about 2 years ago)
- Last Synced: 2025-01-17T08:07:18.144Z (3 days ago)
- Topics: homebrew, nintendo, nintendo-switch, rust, switch, tool
- Language: Rust
- Homepage:
- Size: 267 KB
- Stars: 77
- Watchers: 8
- Forks: 14
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/MegatonHammer/linkle/master/LICENSE-MIT)
[![Apache 2 license](https://img.shields.io/badge/license-Apache-blue.svg)](https://raw.githubusercontent.com/MegatonHammer/linkle/master/LICENSE-APACHE)
[![Discord](https://img.shields.io/discord/439418034130780182.svg)]( https://discord.gg/MZJbNZY)# Introduction
This program permits to convert or create various formats used on the Nintendo Switch.
For now, it only supports the creation of PFS0/NSP and 64 bits NRO/NSO. It can also
be used with cargo through `cargo nro` to simplify the build process of Megaton-Hammer
homebrew.# Installation
## Source Installation
Assuming you have `cargo` installed, `cargo install --features=binaries linkle`
will install `linkle` and the `cargo nro` subcommand.## Binary Installation
Alternatively, you can download the `linkle` binary for Windows, MacOS and Linux
ARM64 in the [Github Releases](https://github.com/MegatonHammer/linkle/releases).# Usage
Creating a NRO file:
linkle nro input.elf output.nro
Creating a NSO file:
linkle nso input.elf output.nso
Creating a PFS0/NSP file:
linkle pfs0 input_directory output.pfs0
Creating a NACP file:
linkle ncap input.json output.nacp
Creating a RomFs file:
linkle romfs input_directory output.romfs
Compiling and creating an NRO file (requires xargo, use `cargo install xargo` to install):
cargo nro
# Cargo.toml metadata format
When compiling a project with `cargo nro`, a special `[package.metadata.linkle.BINARY_NAME]` key is
used to allow customizing the build. This is an example Cargo.toml:```
[package]
name = "link"
version = "0.1.0"
authors = ["linkle"][package.metadata.linkle.megaton-example]
romfs = "res/"
icon = "icon.jpeg"
titleid = "0100000000819"[package.metadata.linkle.megaton-example.nacp]
name = "Link"[package.metadata.linkle.megaton-example.nacp.lang.ja]
"name": "リンク",
"author": "リンクル"
```All paths are relative to the project root (where the Cargo.toml file is located).
Every field has a sane default:
| Field | Description | Default value |
| ----------------- |:------------------------------------------------:| -------------------:|
| romfs | The application romfs directory. | res/ |
| icon | The application icon. | icon.jpg |
| title_id | The application title id. | 0000000000000000 |The `[package.metadata.linkle.BINARY_NAME.nacp]` key follows the [NACP input format](#nacp-input-format)
# NACP input format
This is an example of a compatible JSON:
```json
{
"name": "Link",
"author": "Linkle",
"version": "1.0.0",
"title_id": "0400000000020000",
"lang": {
"ja": {
"name": "リンク",
"author": "リンクル"
}
}
}
```## Fields
NOTE: Every fields are optional
| Field | Description | Default value |
| ----------------- |:------------------------------------------------:| -------------------:|
| name | The application name. | Unknown Application |
| author | The application author. | Unknown Author |
| version | The application version. | 1.0.0 |
| title_id | The application title id. | 0000000000000000 |
| dlc_base_title_id | The base id of all the title DLC. | title_id + 0x1000 |
| lang (object) | Different name/author depending of the language | use name and author || Supported Languages|
|:------------------:|
| en-US |
| en-GB |
| ja |
| fr |
| de |
| es-419 |
| es |
| it |
| nl |
| fr-CA |
| pt |
| ru |
| ko |
| zh-TW |
| zh-CN |