gitwtfhub

wtf is smelt-3ds-decryptor?

vanshksingh/smelt-3ds-decryptor — explained in plain English

Analysis updated 2026-05-18

8SwiftAudience · generalComplexity · 1/5LicenseSetup · easy

TL;DR

A native macOS app that decrypts and patches Nintendo 3DS ROM files via drag-and-drop so they run correctly in modern emulators.

Mindmap

mindmap
  root((Smelt))
    What it does
      Decrypts 3DS ROMs
      Patches headers
      Batch drag and drop
    Tech stack
      Swift
      SwiftUI
      macOS
    Use cases
      Fix ROMs that will not boot
      Batch convert game files
      Prepare files for Azahar or Citra
    Audience
      Emulator users
      3DS preservation hobbyists

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Decrypt a 3DS ROM file so it boots correctly in a modern emulator.

REASON 2

Batch process multiple game files at once with drag and drop.

REASON 3

Patch a decrypted ROM's header flag without running a full decryption pass.

REASON 4

Convert a .cia file into a decrypted .cci file that emulators accept.

What's in the stack?

SwiftSwiftUImacOS

How it stacks up

vanshksingh/smelt-3ds-decryptor98przem/mistgistya/ox0badf00d
Stars888
LanguageSwiftSwiftSwift
Setup difficultyeasyeasymoderate
Complexity1/53/54/5
Audiencegeneralgeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

macOS only, requires legally owned game media and does not include Nintendo's cryptographic keys.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

Wtf does this do

Smelt is a native macOS application for decrypting and patching Nintendo 3DS ROM files so they work correctly in modern emulators such as Azahar, Lime3DS, or Citra. Instead of using command line tools directly, you drag your game files onto a SwiftUI interface and Smelt handles the rest. Under the hood it wraps a set of well known open source command line tools for this ecosystem, called ctrtool, makerom, and ctrdecrypt, and coordinates them for you. Before doing anything, Smelt inspects a file's internal headers to work out whether it is already encrypted, already decrypted, or decrypted but missing a flag that makes emulators misreport it as encrypted. If a ROM is already decrypted but simply missing that flag, causing common emulator errors, Smelt can patch just that flag in milliseconds instead of running a full decryption pass. If a file is genuinely encrypted, Smelt performs the full cryptographic decryption in a temporary sandbox folder and rebuilds a clean output file. The app supports batch processing of multiple files at once through drag and drop, and includes a built in console pane that shows the underlying command line tool output in real time. One notable design choice: Smelt will not produce encrypted output files. The README explains that creating a valid encrypted container would require Nintendo's private cryptographic keys, which the developer does not have and does not provide, so any such output would be rejected by real hardware and emulators anyway. Because of this, Smelt only outputs decrypted files, which are the format modern emulators actually accept, and if you feed it an encrypted file it will extract the contents into a proper decrypted file automatically. To build the app yourself, you clone the repository and run a provided build script, which compiles the SwiftUI application, copies in the required command line tools, and places the finished app in your Downloads folder. The README is explicit that the software is intended only for personal archival and format conversion of game media you legally own, that it contains no proprietary Nintendo keys, and that it displays a license agreement you must accept on first launch. The project credits several members of the 3DS homebrew and preservation community whose tools it builds on, and is released under the MIT license.

Yoink these prompts

Prompt 1
Help me build Smelt from source using the provided build script on macOS.
Prompt 2
Explain what Smelt's pre-flight analysis checks before it decides how to process a ROM file.
Prompt 3
Walk me through why Smelt cannot output encrypted .cia files and what it outputs instead.
Prompt 4
Show me how to batch process a folder of 3DS game files with Smelt's drag and drop interface.

Frequently asked questions

wtf is smelt-3ds-decryptor?

A native macOS app that decrypts and patches Nintendo 3DS ROM files via drag-and-drop so they run correctly in modern emulators.

What language is smelt-3ds-decryptor written in?

Mainly Swift. The stack also includes Swift, SwiftUI, macOS.

What license does smelt-3ds-decryptor use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is smelt-3ds-decryptor to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is smelt-3ds-decryptor for?

Mainly general.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.