Git Product home page Git Product logo

Comments (3)

ZeroSkill1 avatar ZeroSkill1 commented on August 11, 2024

All the game's data could be stored loosely in folders, right down to the .code file, instead of layers of containers. Each cxi could have their own top folder, as well as any updates and dlc. All while being uncompresseable for easy access and modding and being consistent across all dump sources!

Desktop tools like ninfs can mount 3DS game containers and provide exactly what you're looking for: a "broken-down" view of every major component of the game's files. You could also use pyctr, its relevant python interface to read game files, for writing a more sophisticated script that does exactly what you want.

Making an installable format in this way (compressed or not) would be challenging as it would require the generation of NCCH containers, TMDs and tickets on the fly, which is something only really feasible in GodMode9 itself. Even then, I'd argue that it's way more effort than it's worth.

However it would be nice if it could automate the file dumping/collection process, so that the user only needs to compress the resulting folder with ZArchive

GodMode9 can already mount game files in a similar way, and you could perhaps use the scripting interface to automate the extraction of individual components.

from godmode9.

ihaveamac avatar ihaveamac commented on August 11, 2024

For example, cartridge dumps vs eshop dumps. Ideally, we would be able to dump the same game from either source and end up with the same exact content (including matching checksums). However, this is not the case. Building a cia from a Zelda OOT cart does not produce the same result as one built from an eshop download. This is partly due to the lack of a digital manual in the cart, but the also because actual cxi files don't match either because of differing exheaders.

Game cards do not have tickets, so you can't dump it into a CIA that is identical to an eShop release. Similarly digital titles don't have game card-specific info like save encryption details. The difference in the extheader has to do with flags about where the title is loading from. (This also means the NCCH signature is different, so changing those flags still won't give you the same file 1:1.)

Even if a custom format is made you'd still need to dump from both sources if you want to preserve them.

from godmode9.

d0k3 avatar d0k3 commented on August 11, 2024

@Pep-the-Dog - from the answers you have got from here, you may have guessed: what you want is not possible. CDN installable content (typically distributed as CIA) and cart dumps ("3DS" files) are not the same thing. Cart dumps contain data that's not in CDN content (for example the NCSD header and some more additional meta data), and CIAs contain tickets (among other stuff). Even if you'd go as far as going down to the least common denominator, which is the NCCH game file (contained in both, the cart dump and CDN content), you have in no way any guarantee that a NCCH file fetched from CDN is identical to the same game / region / version cart dump NCCH file.

In other words: yes, you have to live with 3DS games coming in two very different formats.

What you can do I already described on the Citra repo: pack the cart dump / CIA into a ZArchive container. To ensure good gains when compressing, you can decrypt the game files before archiving. Decryption, when done right, is fully reversible, meaning ZArchive files can be archive quality. However, as long as there is no interest on Citra's side, there's not much we can do. The puzzle pieces are already there.

from godmode9.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.