• ReallyActuallyFrankenstein@lemmynsfw.com
    link
    fedilink
    English
    arrow-up
    9
    ·
    edit-2
    8 months ago

    Good job with the link, but dear god, the instructions below… And it sounds like somehow that the levels still aren’t in the archive file and may disappear from remote URLs (maybe Nintendo servers):

    There is no documentation of how this archive works, so I will explain how to use it here.

    The archive contains a file called “courses.jsonl.zst”. This file is a database of every level’s metadata compressed with the zstd algorithm. Uncompress the database, and find the row of the level you want to download. This can most easily be done either by querying the database for its title under the “course_name” column, or by querying the database for its internal ID* under the “ID” column.

    After you find the row of the level you would like to download, find the link in the “URL” column. Put this link into the Wayback Machine, and select the only available entry. This will download a typeless file that contains the level data in a compressed format.

    The file is actually four different files combined into one. Each of the four files starts with the bytes 41 53 48 30, or “ASH0” in ascii. The file can be split into its four segments either programmatically, or by manually copying and pasting each of the segments marked by the ASH0 opening characters into its own file with a hex editing program like HxD.

    After the file is split, each segment needs to be decompressed. They are compressed with a poorly documented, proprietary compression format called ASH. To decompress them, download the command line utility from http://wiibrew.org/wiki/ASH_Extractor and run the program four times, each time with the directory of one of the four files as the argument. After they files are decompressed, rename them, in the order they were in the unsplit original file, “thumbnail0.tnl”, “course_data.cdt”, “course_data_sub.cdt”, and “thumbnail1.tnl”.

    Move these four files into a folder titled “courseNNN”, where NNN is a number ranging from 0 to 119 (inclusive) that indicates which slot the level will occupy in your save file. From here, adding the level to your save file is as simple as moving this folder into the directory “mlc\usr\save\00050000\1018dc00\user\80000001” of your Wii U (requires homebrew) or Cemu MLC path.

    *In Super Mario Maker, levels are indexed by an internal ID number. The internal ID is not to be confused with the in game ID, which is the internal ID written in the format NNNN-0000-XXXX-XXXX. NNNN is a checksum based on the internal ID and XXXX-XXXX is the internal ID written in hexadecimal. The algorithm for the checksum can be found here: https://github.com/kinnay/NintendoClients/wiki/Data-Store-Codes#super-mario-maker. Converting a levels internal ID to its in game ID requires using the algorithm found in the GitHub link. Converting a levels in game ID into its internal ID is a simple as taking the the last eight digits of the ID and converting them from hexadecimal to decimal.

    • thatKamGuy@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      3
      ·
      8 months ago

      To steal a term bandied about when talking about AI; this is the worst it’ll ever be again.

      Yes, it’s an absolute mess - but with a passionate enough community, someone will develop a front-end to automate and streamline this process.

      Getting the data was the biggest challenge.