Closed LukasMFR closed 3 years ago
I wouldn't recommend adding it in. Take Mario Kart 7 as an example. Nintendo updated the game to fix ultra-shortcuts on certain courses. Changing the version number from 1.0.0 to 1.1.0 is already enough to fool the 3DS and the matchmaking servers to let you play with a 1.0 game. This indirectly enables the capability to cheat by being the only person to utilize these skips/bugs, not only in MK7 but probably most other games as well. Despite that, what's the point of changing it anyway? It will bother you to update and you do. Ofc if it's an out-of-region game, you just skip the update dialog, as you can't get its update.
It's just for Resident Evil that I need that, for whatever reason the 3DS is looking for an update, but as far as I know both Resident Evil games never had an update. But I guess for now I can just press the skip update button.
There's a reason why this happens.
Some games have both physical and digital releases. The physical version cannot have a set version number and therefore will result in version 0.0.0 (0) being set when building a CIA from the cart. However, the digital version, even though it might not even have any update, may have a higher base version set than 0. Usually, this is version 1, 16, 1024, 1040, etc.
This will make an update notice appear, because it (eShop) thinks that the game is outdated. Since you installed a CIA, from what your console can see, you're using the "digital" (well, not really digital, but converted to digital from physical) version (which may have a higher base version, as stated above) and not the "physical" version (which doesn't have a set version).
It's just one of the problems when converting carts to CIAs.
Thanks for the info, I used a tool to rebuild the dumped CIA, which let me set minor and sub minor but nor major, do you know any simple tool I can use.
Well, we could take over the version from the NCCH version. That version should equal the digital download version, and you should only see an update notice when there's an actual compatible update available. Would you be available for testing that, @LukasAppleFan ?
The NCCH version is always equal to 2 if I remember correctly. It doesn't indicate the title version, but rather, the NCCH format version.
Ah, correct... no, the NCCH version is not the same as the digital version.
One way of fixing this is to set the TMD version to the highest possible number when building a CIA. This way, you should never get an update notice. This will need some discussing, I guess.
That should work, but It's not really a solution since most of the time, you don't have the newer version.
Had a quick look at 3dbrew, and found that apparently, the "Card Info Header" contains the title version?
This has to be it, because else, the eShop / HOME Menu would have no other way of knowing which version you have.
I can test things if you’d like
GM9 already does carry over title version from card info header, and it indeed helped with some games that would previously give false update nags.
It won't help with Resident Evil games though, because their version in that header really is 0. Early 3DS games didn't have e-Manuals on carts, but digital releases do have them, that's probably why the latter have higher title version. Some games (e.g. OOT3D) later received a second cartridge revision that would include manual as well, but I doubt that old carts also give an update nag even though there wasn't any kind of installable updates for them.
This info likely won't help in any way, it's just an interesting observation on why this happens. ¯\(ツ)\/¯
Oh, I wasn't aware. Another question: is a title version of 0.0.0 always wrong? I.e. can digital titles have that title version?
Is a title version of 0.0.0 always wrong?
It's not always wrong, however, it usually is.
can digital titles have that title versions?
Yes, they can, but they usually have version 1, 16, or 1024/1040.
It's actually not that uncommon for a digital title to have title version 0.0.0, just a few examples I can name: Epic Mickey, ALBW and EUR version of NSMB2, but there's much more.
Most of times when a digital release's title version is higher than 0, a cartridge for the same title would have a matching version in card info header; so I think those specific old carts are pretty much the only ones to give this issue, the rest just need to be converted with newest version of GM9 (or, if you want to use PC, you can modify 3dsconv script as written here).
Not sure if an option that would only be useful for such rare cases is really necessary in GM9… I myself would either try to get a proper digital dump or just fix title version in TMD manually with a hex editor (even GM9's one) in such situation, but I guess a more convenient way wouldn't hurt. As for cheaters… if they're aware of those exploits, they likely already have ways to use them too, plus I suspect that a lot of them would probably just download a prebuilt CIA anyway…
Alright. As @redunka-zver said, the version taken over by GM9, from the NCSD card header, is usually correct, except for some old carts. We can't detect these old carts. The only issue users get from this is an update notification when there is actually no update. That sucks, but just a little, and won't legitimate a new feature and the work that has to be put in.
Aside from that, there's a easy workaround: Just set the version number manually, with a hex editor, inside the TMD. In a GM9 built CIA, this version is always at offset 0x2F9C, and can simply be set to 0xFFFF to resolve all issues with update notifications.
Ok thanks I will see what I can do in Hex editor
I'd like to leave some visual aid for those who might need it.
GM9's hex editor:
A PC hex editor (HxD):
The highlighted part shows how the block 0x2F9C-0x2F9D is supposed to look like after editing, assuming that title version is set to 0xFFFF, which is max possible.
I edited the file and can confirm it doesn't ask for update any more
A small idea but you could add a way to change the major, minor and sub minor version when building CIA from 3ds.