Thank you very much, you're the best!!. I have a question about the two projects you're developing on github: DreamConverter and DreamDownloader. What are they for?
Thats a bit tough to explain without giving a whole rundown of what I have done previously.
I got tired of running the Luna-App, because it requires to go into the game and then lay in the bed, enter a dream address, exit, repeat (which takes too long and has a lot of manual interactions at every step).
If this technical explanation is too long, there is a simple TLDR below.
I first had forked the
NintendoClients repository, which basically does all the authentication that the switch does, without having to actually turn on my switch. that became tiresome, as it requires to reverse engineer every new system update to exactly behave like the switch would - when for my purposes, that seemed a bit too much.
Then it made the most sense to take a step back and stay on the physical switch itself, but help with the automation of sending requests to Nintendo's Servers. Since I didn't wanna hack the game open that much to find out how I can let the game call the right functions to send the request, the DreamDownloader takes the credentials (session) the game obtains legitimately and then requests stuff from the ACNH server with those credentials. The Switch App (DreamDownloader) also opens a socket which can do basic HTTP stuff (enough to do the things I wanted to do) and then there is a client.py in the DreamDownloader project as well, which can interact with the previously mentioned socket and send requests to the switch app, which then in turn requests stuff from ACNH servers and sends the client back the downloaded files. Basically functioning like a proxy.
Those files are like the raw files of the dream. (
dream_land and
dream_land_meta if you've seen the files in the google drive links I shared).
Those don't hold all the data of a save file, which is why, like with Luna, I only copy the data, which is available to a pre-existing save file (map data, villagers, players, designs etc.)
Another caveat of those raw files is, that they are locked to the game's version they have been uploaded in (for example, a dream that has been uploaded at version 1.6.0 is still in the format of a 1.6.0 save file). When the game downloads a dream island to visit, it also upgrades the save data of the dream to the current version of the game (e.g. 2.0.8).
I needed a program that does this upgrading (and downgrading) without the game, so thats where the DreamConverter comes in... It requires some files of the actual game to work (to calculate the offsets and sizes of structures in the save file), which I obviously don't provide in my repository. If I really want to make the program widely publicly available, I'd probably let it pre-calculate all the offsets and sizes for all versions, so the actual game files aren't required anymore.
TLDR; the projects allow me to download multiple dreams as requested in this thread and then upload them for your viewing pleasure!