-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Wind Waker Client : Allow more Game IDs #5186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@tanjo3 Just going to throw this idea out there, we were able to change the Game ID to be entirely based on the seed itself in Luigi's Mansion, see the relevant lines here: https://github.com/BootsinSoots/Archipelago/blob/V0.4.10/worlds/luigismansion/LMGenerator.py#L56 (just make sure there is space to update that game ID to be that long and sure there is at least one null character, \x00, after.) Feel free to tag me here or on discord if you need some assistance changing and testing. |
|
I prefer something like how Luigi's Mansion does it, since just adding Game IDs but leaving it up to the user feels incomplete to me. My concern, however, is that by having a unique Game ID per seed, the Dolphin save folder will become bloated with old save files (though to be fair, the files aren't that big). There is also another minor concern that a user's game-specific Dolphin settings would have to be redone for each seed. I don't know what the best approach would be. |
|
I think it's a matter of setting expectations at that point. Our users don't really seem bothered by the fact that settings need to be changed per game, because the core settings like controller settings stay the same. But it did seem that users were more frustrated having to maintain different saves, remember what each save was for, etc. So we went with fill seed for Game ID. I do suppose there is some value in maintaining a smaller known list to not have to change as much settings, but if you're really unsure, you can always do a poll in discord and see what the community likes more |
If we think of the GameID check in the World as simply a means of verifying "is this user playing TWWR?" we can also just put a magic number in the ROM using the patcher that is checked for instead. That would let people playing multiple of the same world at the same time adjust their GameID, while maintaining the verification check. |
|
So what's happening with this PR? |
|
I think modifying it so that the save files are different per seed is a good change, but I'd like to see an accompanying PR in the patcher. I'd like to see how it'd be implemented with the three game IDs before giving my approval to this PR. I think the best approach would be to either use a unique game ID per world, as LM does, or to patch a seed-specific value into the ROM as a secondary check before connecting. |
|
@Crain-32 Any info about tanjo's comments? |
|
On this topic, I think that, along with #5819, modifying the game ID based on the slot name would be a good compromise. This limits the creation of unique .gci files from one per seed to one per slot name. It also gives the user some control over the behavior of the save files. If they want to have a fresh set of save files, they should use a different slot name. And with #5819, if they reuse their slot name, they won't be able to connect to invalid save files. I also think it'd be easy for users to connect that slot name == whether their save files carry over. What are people's thoughts on this? |
What is this fixing or adding?
If a single player owns multiple Wind Waker Worlds in the World Pool, they end up having to juggle the save data in multiple ways. The most ergonomic way for users to avoid potential issues is to edit the GameID (main.dol, hex editor + GCFT). This allows you to isolate the Game Data in a more natural way.
However! The original hard coded check prevents that QoL adjustment from the Save Data side to work cleanly with the Client. You can bypass the check using Dolphin's Debug Mode and some implementation knowledge, but that isn't really a suitable long term option.
To create a better long term option this PR allows two new Game IDs
GZLJ99andGLZP99. They are not official Game IDs, so an accidental collision with official games is not possible. Actually changing the Game ID on the ROM is still left to the Player/Randomizer.How was this tested?
Tested using Python's REPL and a running instance of Dolphin. Since it currently requires advanced knowledge to edit a Game ID extensive testing is redundant. If @tanjo3 were to work around this functionality (for example some type of hook in the Randomization side), than automated tests could be warranted. For now a simple check and log message should suffice.

We can see the logic also mirrors the original with

game_id = b'GZLE99'