this post was submitted on 01 Mar 2024
152 points (93.7% liked)

Games

16451 readers
1483 users here now

Video game news oriented community. No NanoUFO is not a bot :)

Posts.

  1. News oriented content (general reviews, previews or retrospectives allowed).
  2. Broad discussion posts (preferably not only about a specific game).
  3. No humor/memes etc..
  4. No affiliate links
  5. No advertising.
  6. No clickbait, editorialized, sensational titles. State the game in question in the title. No all caps.
  7. No self promotion.
  8. No duplicate posts, newer post will be deleted unless there is more discussion in one of the posts.
  9. No politics.

Comments.

  1. No personal attacks.
  2. Obey instance rules.
  3. No low effort comments(one or two words, emoji etc..)
  4. Please use spoiler tags for spoilers.

My goal is just to have a community where people can go and see what new game news is out for the day and comment on it.

Other communities:

Beehaw.org gaming

Lemmy.ml gaming

lemmy.ca pcgaming

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 9 points 7 months ago* (last edited 7 months ago) (1 children)

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.

[–] [email protected] 3 points 7 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.