1. voddy

    voddy No Title Available
    Member

    Joined:
    Jul 14, 2013
    Messages:
    500
    Country:
    United States
    i created a very basic GUI for the tool. Enjoy it if you like
    place the rom_tool.exe in the same folder as the Rom_Tool_Gui.exe. The rest should be self explaining
    If u get an error on startup u need to install the latest net framework ( i forgot to put it lower)
     

    Attached Files:

    Mangekyou, octopus and kyogre123 like this.
  2. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    Fixed. Get version 3 while it's fresh out of the oven.

    Pong20302000 you can predict ROM compatibility Gateway3DS, with rom_tool now ;)

     
    kyogre123 and IronClouds like this.
  3. mr. fancypants

    mr. fancypants that´s ´Sir´ for you!
    Member

    Joined:
    Jul 16, 2013
    Messages:
    605
    Country:
    Netherlands
    supper trimming/ removing update partition what does that mean?
     
  4. Armadillo

    Armadillo GBAtemp Psycho!
    Member

    Joined:
    Aug 28, 2003
    Messages:
    3,997
    Country:
    United Kingdom
    What is card2 (under the gateway prediction thing).

    SDK is obvious, but card1/2 (nand save?)
     
  5. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    card2 is the special chip which has a RW portion after the ROM data, eliminating the need for an external EEPROM for storing savedata. The same as Animal Crossing. I don't know why everyone calls it NAND saving, this technique doesn't involve the 3DS' NAND chip. Maybe they mean the chip inside the Game Card.
     
  6. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    Each 3DS ROM has a series of partitions. One for the game code/assets, and the other partitions hold the e-manual, download play app. In production ROMs there also exists an update partition, so you can update the 3DS to play a game. If you are going to play game backups, you aren't going to be updating your 3DS for any reason. So removing the update partition shrinks the size of the ROM even more than what can be done with normal ROM trimming. However removing the update partition is permanent, so that's something to keep in mind.
     
  7. kyogre123

    kyogre123 Mexican Pride
    Member

    Joined:
    Sep 23, 2013
    Messages:
    2,920
    Country:
    Mexico
    Let me get this straight... this "special chip" is just a memory in which one of the partitions is made for the sole purpose of storing the save game file? Pokemon really uses this SLC NAND as Animal Crossing? that means the special memory of Animal Crossing was not that special as Nintendo said.
     
  8. how_do_i_do_that

    how_do_i_do_that Blue Wizard is about to die.
    Member

    Joined:
    May 16, 2008
    Messages:
    5,113
    Country:
    Antarctica
    I thought you understood that when somebody posted pics of the animal crossing PCB and there was no EEPROM module anywhere on the PCB, front or back.
     
  9. kyogre123

    kyogre123 Mexican Pride
    Member

    Joined:
    Sep 23, 2013
    Messages:
    2,920
    Country:
    Mexico
    No, I thought the NAND memory was a completely separated chip from whatever 3DS standard memory chip is used for the ROM portion.
     
  10. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    SDK specifications make it seem it's written in the same partition as the ROM, only after the ROM data finishes.
     
  11. how_do_i_do_that

    how_do_i_do_that Blue Wizard is about to die.
    Member

    Joined:
    May 16, 2008
    Messages:
    5,113
    Country:
    Antarctica
    The PCB design raises some possibilities for a homemade flashcart if the encryption get fully reverse engineered.
     
  12. Cyan

    Cyan GBATemp's lurking knight
    Global Moderator

    Joined:
    Oct 27, 2002
    Messages:
    22,532
    Country:
    France
    So those games with "NAND saves" weren't actually saved on a NAND chipset?
    When they said the game saved to NAND, I thought the games were actually saving on the console's NAND instead of the cartridge. So it's still saved in the cartridge, but not in EEPROM nor in NAND chipset?

    Which chipset allows both ROM part and writable memory part? which memory type is the writable part in that chipset?
     
  13. kyogre123

    kyogre123 Mexican Pride
    Member

    Joined:
    Sep 23, 2013
    Messages:
    2,920
    Country:
    Mexico
    I still would like to know if these two games have exactly the same memory chip model, which was described as expensive, very limited in production and only useful for saving a large amount of data in short times; or if Pokémon just have a different chip that is still able to have ROM and writable data on a single chip.
     
  14. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    That's right.
    I'd guess the memory type is the same as the rest of the ROM, the 3DS just doesn't write there. There is a value in the ROM header which tells the 3DS the location from which it is safe to write savedata without corrupting the ROM. These addresses are within the ROM dump, so if you dumped Pokemon X/Y after savedata was made, you'd be able to find the save data in the ROM dump.

    Decide for yourself (large pics of game PCBs):

    Pokemon X:
    [​IMG]

    Kid Icarus Uprising (Same Chip Size as Pokemon X):
    [​IMG]

    Steel Diver Kiosk demo (no EEPROM):
    [​IMG]
     
  15. how_do_i_do_that

    how_do_i_do_that Blue Wizard is about to die.
    Member

    Joined:
    May 16, 2008
    Messages:
    5,113
    Country:
    Antarctica
    Pokemon by and large has stuck with Flash memory for the their games even when nintendo shrank the save types that could be used.
     
  16. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    You've all been nagging me for a GUI for rom_tool for awhile. So I decided to give 3DSExplorer a much needed update, and implement the features of rom_tool as best I could into 3DSExplorer.

    Download link and source code in the original post.

    @elisherer, I'm sorry if my C# is a bit hacky, I'm used to writing in C. In the past 12 hours I've written more C# source code than I've ever done before.
     
    pelago likes this.
  17. phanteon

    phanteon GBAtemp Fan
    Member

    Joined:
    Nov 4, 2013
    Messages:
    464
    Country:
    United States
    could you explain step by step how to use room tool on mac to me?
    im really interested in the usage of this tool
    thanks

    i have the file and the terminal prompt
     
  18. phanteon
    This message by phanteon has been removed from public view by Cyan, Nov 4, 2013, Reason: double post.
    Nov 4, 2013 Show
  19. 3DSGuy

    OP 3DSGuy No longer in scene
    Member

    Joined:
    May 22, 2012
    Messages:
    345
    Country:
    United States
    Updated to version 3.1:

    The features in rom_tool 3.1 and the modification of 3DSExplorer are equivalent.


    You need to put rom_tool in the same directory as your 3DS ROMs. In terminal, change the directory using the "cd" command to the directory where your 3DS ROMs are. Then you are able to use the commands specified on the OP on your ROMs.
     
  20. Bug_Checker_

    Bug_Checker_ GBAtemp Advanced Fan
    Member

    Joined:
    Jun 10, 2006
    Messages:
    950
    Country:
    United States
    Sorry about hijacking the thread, but if you are fixing things in 3DSExplorer could you also look at the following:

    in 3DSExplorer_r100 in mdlTMD.cs
    http://code.google.com/p/3dsexplorer/source/browse/trunk/3DSExplorer/Modules/mdlTMD.cs
    sizes do not agree
    23 public byte Version;
    181 f.AddListItem(off + 124, 4, "Version", Head.Version, 0);
    which throws off displayed offsets(not actual offsets) in TMD files
    so the following also need correcting (lines 182 - 195)
    f.AddListItem(off + 128, 1, "Car Crl Version", Head.CarCrlVersion, 0);
    f.AddListItem(off + 129, 1, "Signer Version", Head.SignerVersion, 0);
    f.AddListItem(off + 130, 1, "Reserved1", Head.Reserved1, 0);
    f.AddListItem(off + 131, 8, "System Version", Head.SystemVersion, 0);
    f.AddListItem(off + 139, 8, "Title ID", Head.TitleID, 0);
    f.AddListItem(off + 147, 4, "Title Type", Head.TitleType, 0);
    f.AddListItem(off + 151, 2, "Group ID", Head.GroupID, 0);
    f.AddListItem(off + 153, 62, "Reserved2", Head.Reserved2, 0);
    f.AddListItem(off + 215, 4, "Access Rights", Head.AccessRights, 0);
    f.AddListItem(off + 219, 2, "Title Version", Head.TitleVersion, 0);
    f.AddListItem(off + 221, 2, "Content Count", Head.ContentCount, 0);
    f.AddListItem(off + 223, 2, "Boot Content", Head.BootContent, 0);
    f.AddListItem(off + 225, 2, "Padding", Head.Padding0, 0);
    f.AddListItem(off + 227, 32, "Content Info Records Hash", Head.ContentInfoRecordsHash, 0);

    change to
    f.AddListItem(off + 124, 1, "Version", Head.Version, 0);
    f.AddListItem(off + 125, 1, "Car Crl Version", Head.CarCrlVersion, 0);
    f.AddListItem(off + 126, 1, "Signer Version", Head.SignerVersion, 0);
    f.AddListItem(off + 127, 1, "Reserved1", Head.Reserved1, 0);
    f.AddListItem(off + 128, 8, "System Version", Head.SystemVersion, 0);
    f.AddListItem(off + 136, 8, "Title ID", Head.TitleID, 0);
    f.AddListItem(off + 144, 4, "Title Type", Head.TitleType, 0);
    f.AddListItem(off + 148, 2, "Group ID", Head.GroupID, 0);
    f.AddListItem(off + 150, 62, "Reserved2", Head.Reserved2, 0);
    f.AddListItem(off + 212, 4, "Access Rights", Head.AccessRights, 0);
    f.AddListItem(off + 216, 2, "Title Version", Head.TitleVersion, 0);
    f.AddListItem(off + 218, 2, "Content Count", Head.ContentCount, 0);
    f.AddListItem(off + 220, 2, "Boot Content", Head.BootContent, 0);
    f.AddListItem(off + 222, 2, "Padding", Head.Padding0, 0);
    f.AddListItem(off + 224, 32, "Content Info Records Hash", Head.ContentInfoRecordsHash, 0);
    Also character is displayed as GroupID not sure if you want that.
    33 public char[] GroupID;

    And for sake of consistency alone with respect to dsi/wii/wiiu and 3ds,
    8 public enum SignatureType
    all should be probably swapped around unless there is a good reason (I don't recall little endian being used anywhere in certs,tickets or tmds)
    (but I could be wrong. sometimes a bug checker needs a bug checker)
    Thanks
     
  21. DAHU75

    DAHU75 Member
    Newcomer

    Joined:
    Oct 30, 2013
    Messages:
    48
    Country:
    France
    Great tools , thanks for the work

    where can found a game list of trimmed or super trimmed list that work fine with gateway 2.01B or all the games work with gateway work when trimmed or super trimmed ?