Gaming Updates for games not working as they don't exist.

coldmethod

Member
OP
Newcomer
Joined
Feb 6, 2020
Messages
5
Trophies
0
Age
44
XP
73
Country
Australia
This "problem" was solved thanks to @c4388354, if you too are an idiot like me, read below.

Trying to update it throws err 005-2008

The games I've come across that have this issue are:

Sonic & All Stars Racing Transformed (Europe) - No Intro

Harvest Moon: A Tale of Two Towns (Europe) - No Intro


The problem appears to be an incorrect update version, from what I have read this is due to how the cart was originally dumped.

FBI shows Sonic at v0 it should be v32 or something higher than v0.0.0 hence the update trigger.

I came across this problem years ago and found a fix (still have the system I fixed it on (New 3dsxl), now have an additional 4 systems (New 3ds, o2ds and 2 x New 2dsxl's) I'd like to have the game on) does anyone remember/know how to fix this issue?

BTW, No fake tickets were ever installed on any of the systems, all other games updated without issue. Correct region console for all cias installed.

I've tried the same roms from multiple different sources (deleting title and ticket every turn).

There is also a similar problem with the Airace series however FBI states the versions of both games as v1.0.0.

When I get home I'll have a look at Sonic in FBI on the system that had the error corrected to see if there is anything obvious.

Edit - Turns out my above "fix" was to use the US version... smh

In the meantime if someone has any input that would be great.

Cheers!

Edit: More info [SOLVED]
 
Last edited by coldmethod,
  • Like
Reactions: yuyuyup

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,136
Country
United States
I could be wrong, but I believe the problem may be incorrect update versions. you can update them with the eshop, but if it's the wrong region, it will still nag about needing to update. the way the system reads updates and dlc is pretty confusing. fbi might tell you, but normally there's no indication what version is installed (region I mean). I had a hell of a time getting updates for all of my games, 'cause I think region free will still nag about its original region's update possibly based on title id.
 

coldmethod

Member
OP
Newcomer
Joined
Feb 6, 2020
Messages
5
Trophies
0
Age
44
XP
73
Country
Australia
I could be wrong, but I believe the problem may be incorrect update versions.

Thanks for the reply, and yeah, that's the assumption.

you can update them with the eshop, but if it's the wrong region, it will still nag about needing to update.

That's the thing, it won't allow an update. Correct region .cia (EUR) on an Australian console I believe is also (EUR), all other cias came from the same region rom set and have updated without issue... strange.
 

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,136
Country
United States
hmm...I've never encountered a game that won't update. someone more knowledgeable may be able to help. I don't know if this is true of the 3ds, but the wii u uses separate tickets for games, dlc, and updates.
 
  • Like
Reactions: coldmethod

coldmethod

Member
OP
Newcomer
Joined
Feb 6, 2020
Messages
5
Trophies
0
Age
44
XP
73
Country
Australia
hmm...I've never encountered a game that won't update. someone more knowledgeable may be able to help. I don't know if this is true of the 3ds, but the wii u uses separate tickets for games, dlc, and updates.

Yeah, the 3DS uses different tickets for titles, updates and DLC's

00040000XXXXXXXX - Title

0004000EXXXXXXXX - Update

0004000CXXXXXXXX - DLC

There are no tickets for updates for either of the titles in my first post, just the titles themselves.

Thanks anyway.

If I find a solution in the meantime I'll post back here for future reference.
 
Last edited by coldmethod,

c4388354

Well-Known Member
Member
Joined
Jan 23, 2015
Messages
142
Trophies
0
XP
623
Country
United States
If you are using the 3DSConv.py script (I am using v4.2) to convert a 3DS Rom into a CIA,
It doesn't copy the 'Title Version' info from the 3DS Rom into the CIA and just leaves it at 'v0'

Most of the time the 3DS Rom version IS v0 so its fine, but some 3DS ROM have v16 or v32,
the 3DS can download a 'version_list' file with a list of TitleIDs and the latest versions numbers,
(maybe its when you connect to the eShop??), it gets the 'version_list' update file from this URL:
Code:
https://tagaya-ctr.cdn.nintendo.net/tagaya/versionlist
(The file format is fairly basic, first 8 bytes is titleID (little endian) and next 2 bytes is the version (little endian) then 6 bytes of 00s.)

When the 3DS has this version_list installed, it sees that your installed game is v0 but the version_list says its v16 or v32
because of this it triggers the update message to appear for the game when there is no update.

Here is a mod the 3DSConv python script to copy the title version from the 3DS Rom into the CIA.
In the python script, search for the first few lines below and then copy the lines between
"# START MOD" and "END MOD" parts then save the python script and convert the 3DS Rom again.

Original script source code can be found here:
Code:
3DSConv Source Code: https://github.com/ihaveamac/3dsconv


This modification gets the version number from the 3DS Rom.
Code:
        # get title ID
        rom.seek(0x0108)
        title_id = rom.read(8)[::-1]
        title_id_hex = binascii.hexlify(title_id).decode('utf-8').upper()
        print_v('\nTitle ID:', format(title_id_hex))

        # START MOD
        # get version
        rom.seek(0x0310)
        title_ver = rom.read(2)[::-1]
        title_ver_hex = binascii.hexlify(title_ver).decode('utf-8').upper()
        print_v('\nTitle Ver:', format(title_ver_hex))
        # END MOD

        # get partition sizes
        rom.seek(0x120)

and this second mod writes it to the CIA file into the Ticket and into the TMD.

Code:
            # write title ID in ticket and tmd
            cia.seek(0x2C1C)
            cia.write(title_id)
            cia.seek(0x2F4C)
            cia.write(title_id)

            ## START MOD
            # write version in ticket and tmd
            cia.seek(0x2C26)
            cia.write(title_ver)
            cia.seek(0x2F9C)
            cia.write(title_ver)
            ## END MOD

            # write save size in tmd
            cia.seek(0x2F5A)
            cia.write(save_size)

with these two python script modifications, the created CIA should have the correct version when its installed.
 
Last edited by c4388354,

coldmethod

Member
OP
Newcomer
Joined
Feb 6, 2020
Messages
5
Trophies
0
Age
44
XP
73
Country
Australia
If you are using the 3DSConv.py script (I am using v4.2) to convert a 3DS Rom into a CIA,
It doesn't copy the 'Title Version' info from the 3DS Rom into the CIA and just leaves it at 'v0'

Thanks for the detailed post, you confirmed what I had thought.

Your above mod to the script is invaluable.

However, I spent a fair amount of time last night trying to fix the problem, but no matter what I did the result was always the same. The cia came out as v0. Either I'm doing something wrong, or is there a possibility that the original cart dump title version is incorrect?

I went back and looked at the .3ds, I have two "different" copies of the same title from different sources. Looking at the checksum for both, they are identical, so if I'm correct in my assumption regarding incorrect title version in the original dump the only fix is to change the version manually.

Would you mind running through your process so I can be sure I'm not doing something wrong.

My process - decrypt .3ds then run it through (modded) 3DSConv.py - Am I missing something? It seems too simple to stuff up.

Thanks in advance.
 

c4388354

Well-Known Member
Member
Joined
Jan 23, 2015
Messages
142
Trophies
0
XP
623
Country
United States
You shouldn't need to decrypt the 3ds rom before converting it to CIA,
you just need the 'boot9.bin' file in the same folder as the python script,
then the python script can get the encryption keys from the boot9.bin file.

You can find the boot9.bin file by starting 'GodMode9' on your 3DS,
selecting "M: Memory Virtual', select the boot9.bin file, press 'A" and choose 'Copy to '0:/GM9/out'
The boot9.bin file will be copied to the SD card in the folder 'gm9' > 'out'.

Maybe the decryption method you are using doesn't copy the 'title version' into the decrypted rom also?


edit: fairly sure posting file hashes is allowed here:
Sonic & All-Stars Racing Transformed (Europe) (En,Fr,De,Es,It).3ds [CRC32: 70CF9C9E] (Encrypted Untrimmed)
Offset 0x310 is: 20 00 00 00 (which is v32 as the bytes are reversed due to being little endian)
My CIA has a CRC32 of B3EEB4B9 after converting with the modified python script. (your CRC might be different)
 
Last edited by c4388354,
  • Like
Reactions: coldmethod

coldmethod

Member
OP
Newcomer
Joined
Feb 6, 2020
Messages
5
Trophies
0
Age
44
XP
73
Country
Australia
Maybe the decryption method you are using doesn't copy the 'title version' into the decrypted rom also?

I'm an idiot, as soon as I let the script do it's thing as intended, everything worked out perfectly. All problem cias have been corrected.

Thanks for showing me the error of my ways.
 
Last edited by coldmethod,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: https://www.youtube.com/watch?v=3eGAHfC5P-Y