1. coldmethod

    OP coldmethod Newbie
    Newcomer

    Joined:
    Feb 6, 2020
    Messages:
    5
    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, Feb 8, 2020
    yuyuyup likes this.
  2. godreborn

    godreborn GBAtemp Guru
    Member

    Joined:
    Oct 10, 2009
    Messages:
    8,905
    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.
     
    alexander1970 and coldmethod like this.
  3. coldmethod

    OP coldmethod Newbie
    Newcomer

    Joined:
    Feb 6, 2020
    Messages:
    5
    Country:
    Australia
    Thanks for the reply, and yeah, that's the assumption.

    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.
     
  4. godreborn

    godreborn GBAtemp Guru
    Member

    Joined:
    Oct 10, 2009
    Messages:
    8,905
    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.
     
    coldmethod likes this.
  5. coldmethod

    OP coldmethod Newbie
    Newcomer

    Joined:
    Feb 6, 2020
    Messages:
    5
    Country:
    Australia
    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, Feb 6, 2020
  6. godreborn

    godreborn GBAtemp Guru
    Member

    Joined:
    Oct 10, 2009
    Messages:
    8,905
    Country:
    United States
    hmm....same with the wii u except the 4 is replaced by a 5.
     
    coldmethod likes this.
  7. c4388354

    c4388354 GBAtemp Regular
    Member

    Joined:
    Jan 23, 2015
    Messages:
    142
    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, Feb 6, 2020
    ber71 and coldmethod like this.
  8. coldmethod

    OP coldmethod Newbie
    Newcomer

    Joined:
    Feb 6, 2020
    Messages:
    5
    Country:
    Australia
    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.
     
  9. c4388354

    c4388354 GBAtemp Regular
    Member

    Joined:
    Jan 23, 2015
    Messages:
    142
    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, Feb 8, 2020
    coldmethod likes this.
  10. coldmethod

    OP coldmethod Newbie
    Newcomer

    Joined:
    Feb 6, 2020
    Messages:
    5
    Country:
    Australia
    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, Feb 8, 2020
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - Updates, working, games