SciresM / hactool

hactool is a tool to view information about, decrypt, and extract common file formats for the Nintendo Switch, especially Nintendo Content Archives.
ISC License
982 stars 151 forks source link

Request: Output more human-readable ROM details #103

Closed nitro322 closed 3 years ago

nitro322 commented 3 years ago

100% feature request - it'd be great if hactool could produce more human-readable output about a given ROM file. Eg., there's a .NET application called NX_Game_Info that uses LibHac to output details like this:

$ mono ~/NX.Game.Info_0.7.1_cli/nxgameinfo_cli.exe Cave\ Story+.xci
NX Game Info 0.7.1.0
Copyright ©  2018-2019 Garoxas

Opening file Cave Story+.xci

Cave Story+.xci
├ Title ID: 0100B7D0022EE000
├ Base Title ID: 0100B7D0022EE000
├ Title Name: Cave Story+
├ Display Version: 1.0
├ Version: 0
├ Latest Version:
├ System Update:
├ System Version: 0
├ Application Version:
├ Masterkey: 0 (1.0.0-2.3.0)
├ Title Key:
├ Publisher: Nicalis, Inc
├ Languages: en-US
├ Filename: Cave Story+.xci
├ Filesize: 1.86 GB
├ Type: Base
├ Distribution: Cartridge
├ Structure: Scene
├ Signature: Passed
├ Permission: Safe

Unfortunately, given it's a .NET app it isn't exactly portable. I can get Title ID with hacktool by unpacking the NCAs and examining them, plus a couple other attributes like Master Key and size (I think... - it's in hex and I haven't found a straightforward way to convert that to bytes), but not name, version, publisher, languages, etc. Since hactool is already so ubiquitous, it'd be great if hactool could also output info like this to make it a little easier for people to know exactly what their working with.

Just submitting for your consideration. Appreciate all the work you do.

SciresM commented 3 years ago

You're basically asking for xci parse to recurse into nca parse, which I'm not so interested in -- same deal with parsing control/nacp data.

hactool is designed for developers...I kind of assume that if you're running it on a game you probably know what game you're running it on, so I'm not sure that that kind of information is actually valuable.

In any event, I don't really do development for hactool any more -- it's mostly bugfixes/maintenance when new updates cause support requirements to change ^^

nitro322 commented 3 years ago

Fair enough. I still think there'd be some value to it (I used a pretty trivial example), but not going to argue, especially if you have the project essentially in maintenance mode.