[Q] Building VC roms as CIA

Discussion in '3DS - Flashcards & Custom Firmwares' started by KennyMckormick, Nov 5, 2014.

  1. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
  2. Arnold0

    Arnold0 GBAtemp Fan

    Member
    384
    114
    Oct 1, 2011
    France
    Vire, France
  3. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    Now it shows a RSF error.

    Unrecognized key 'ROM'


    Checking again.
     
  4. VerseHell

    VerseHell GBAtemp Psycho!

    Member
    3,067
    1,067
    Jun 29, 2014
    France
    Edit your rsf like this
    Code:
    BasicInfo:
      Title                  : "Kid Icarus Uprising" #edit
      CompanyCode            : "01"
      ProductCode            : "CTR-P-AKDP" #edit
      ContentType            : Application
      Logo                    : Licensed # Nintendo / Licensed / Distributed / iQue / iQueForSystem
     
    RomFs:
      # Specifies the root path of the file system to include in the ROM.
      #HostRoot                : "decrypted/romfs"
     
     
    TitleInfo:
      UniqueId                : 0x00302 #edit
      Category                : Application
     
    CardInfo:
      MediaSize              : 2GB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB #edit
      MediaType              : Card1 # Card1 / Card2
      CardDevice              : NorFlash # NorFlash(Pick this if you use savedata) / None #Choose None if it's a card2 game
     
    Option:
      UseOnSD                : true # true if App is to be installed to SD
      FreeProductCode        : true # Removes limitations on ProductCode
      MediaFootPadding        : true # If true CCI files are created with padding
      EnableCrypt            : true # Enables encryption for NCCH and CIA
      EnableCompress          : true # Compresses exefs code
     
    ExeFs: # these are the program segments from the ELF, check your elf for the appropriate segment names
      ReadOnly:
      - .rodata
      - RO
      ReadWrite:
      - .data
      - RO
      Text:
      - .init
      - .text
      - STUP_ENTRY
     
    PlainRegion: # only used with SDK ELFs
    - .module_id
     
    AccessControlInfo:
      #UseExtSaveData : true
      #ExtSaveDataId: 0x00302 #edit, same as UniqueId
      #SystemSaveDataId1: 0x00000000 # plaintext exheader
      #SystemSaveDataId2: 0x00000000 # plaintext exheader
      #OtherUserSaveDataId1: 0x00000 # plaintext exheader
      #OtherUserSaveDataId2: 0x00000 # plaintext exheader
      #OtherUserSaveDataId3: 0x00000 # plaintext exheader
      #UseOtherVariationSaveData : false
     
    SystemControlInfo:
      SaveDataSize: 1MB
      RemasterVersion: 0
      StackSize: 0x40000
     
    # DO NOT EDIT BELOW HERE OR PROGRAMS WILL NOT LAUNCH (most likely)
     
    AccessControlInfo:
      FileSystemAccess:
      - Debug
      - DirectSdmc
      - DirectSdmcWrite
     
      IdealProcessor                : 0
      AffinityMask                  : 1
     
      Priority                      : 16
     
      MaxCpu                        : 0x9E # Default
     
      CoreVersion                  : 2
      DescVersion                  : 2
     
      ReleaseKernelMajor            : "02"
      ReleaseKernelMinor            : "33"
      MemoryType                    : Application
      HandleTableSize: 512
      IORegisterMapping:
      - 1ff50000-1ff57fff
      - 1ff70000-1ff77fff
      MemoryMapping:
      - 1f000000-1f5fffff:r
      SystemCallAccess:
        ArbitrateAddress: 34
        Break: 60
        CancelTimer: 28
        ClearEvent: 25
        ClearTimer: 29
        CloseHandle: 35
        ConnectToPort: 45
        ControlMemory: 1
        CreateAddressArbiter: 33
        CreateEvent: 23
        CreateMemoryBlock: 30
        CreateMutex: 19
        CreateSemaphore: 21
        CreateThread: 8
        CreateTimer: 26
        DuplicateHandle: 39
        ExitProcess: 3
        ExitThread: 9
        GetCurrentProcessorNumber: 17
        GetHandleInfo: 41
        GetProcessId: 53
        GetProcessIdOfThread: 54
        GetProcessIdealProcessor: 6
        GetProcessInfo: 43
        GetResourceLimit: 56
        GetResourceLimitCurrentValues: 58
        GetResourceLimitLimitValues: 57
        GetSystemInfo: 42
        GetSystemTick: 40
        GetThreadContext: 59
        GetThreadId: 55
        GetThreadIdealProcessor: 15
        GetThreadInfo: 44
        GetThreadPriority: 11
        MapMemoryBlock: 31
        OutputDebugString: 61
        QueryMemory: 2
        ReleaseMutex: 20
        ReleaseSemaphore: 22
        SendSyncRequest1: 46
        SendSyncRequest2: 47
        SendSyncRequest3: 48
        SendSyncRequest4: 49
        SendSyncRequest: 50
        SetThreadPriority: 12
        SetTimer: 27
        SignalEvent: 24
        SleepThread: 10
        UnmapMemoryBlock: 32
        WaitSynchronization1: 36
        WaitSynchronizationN: 37
      InterruptNumbers:
      ServiceAccessControl:
      - APT:U
      - $hioFIO
      - $hostio0
      - $hostio1
      - ac:u
      - boss:U
      - cam:u
      - cecd:u
      - cfg:u
      - dlp:FKCL
      - dlp:SRVR
      - dsp::DSP
      - frd:u
      - fs:USER
      - gsp::Gpu
      - hid:USER
      - http:C
      - mic:u
      - ndm:u
      - news:u
      - nwm::UDS
      - ptm:u
      - pxi:dev
      - soc:U
      - ssl:C
      - y2r:u
      - ldr:ro
      - ir:USER
     
     
    SystemControlInfo:
      Dependency:
        ac: 0x0004013000002402L
        am: 0x0004013000001502L
        boss: 0x0004013000003402L
        camera: 0x0004013000001602L
        cecd: 0x0004013000002602L
        cfg: 0x0004013000001702L
        codec: 0x0004013000001802L
        csnd: 0x0004013000002702L
        dlp: 0x0004013000002802L
        dsp: 0x0004013000001a02L
        friends: 0x0004013000003202L
        gpio: 0x0004013000001b02L
        gsp: 0x0004013000001c02L
        hid: 0x0004013000001d02L
        http: 0x0004013000002902L
        i2c: 0x0004013000001e02L
        ir: 0x0004013000003302L
        mcu: 0x0004013000001f02L
        mic: 0x0004013000002002L
        ndm: 0x0004013000002b02L
        news: 0x0004013000003502L
        nim: 0x0004013000002c02L
        nwm: 0x0004013000002d02L
        pdn: 0x0004013000002102L
        ps: 0x0004013000003102L
        ptm: 0x0004013000002202L
        ro: 0x0004013000003702L
        socket: 0x0004013000002e02L
        spi: 0x0004013000002302L
        ssl: 0x0004013000002f02L
    CommonHeaderKey:
      D: |
        jL2yO86eUQnYbXIrzgFVMm7FVze0LglZ2f5g+c42hWoEdnb5BOotaMQPBfqt
        aUyAEmzQPaoi/4l4V+hTJRXQfthVRqIEx27B84l8LA6Tl5Fy9PaQaQ+4yRfP
        g6ylH2l0EikrIVjy2uMlFgl0QJCrG+QGKHftxhaGCifdAwFNmiZuyJ/TmktZ
        0RCb66lYcr2h/p2G7SnpKUliS9h9KnpmG+UEgVYQUK+4SCfByUa9PxYGpT0E
        nw1UcRz0gsBmdOqcgzwnAd9vVqgb42hVn6uQZyAl+j1RKiMWywZarazIR/k5
        Lmr4+groimSEa+3ajyoIho9WaWTDmFU3mkhA2tUDIQ==
      Exponent: |
        AQAB
      Modulus: |
        zwCcsyCgMkdlieCgQMVXA6X2jmb1ICjup0Q+jk/AydPkOgsx7I/MjUymFEkU
        vgXBtCKtzh3NKXtFFuW51tJ60GPOabLKuG0Qm5li+UXALrWhzWuvd5vv2FZI
        dTQCbrq/MFS/M02xNtwqzWiBjE/LwqIdbrDAAvX4HGy0ydaQJ1DKYeQeph5D
        lAGBw2nQ4izXhhuLaU3w8VQkIJHdhxIKI5gJY/20AGkG0vHD553Mh5kBINrWp
        CRYmmJS8DCYbAiQtKbkeUfzHViGTZuj6PwaY8Mv39PGO47a++pt45IUyCEs4/
        LjMS72cyfo8tU4twRGp76SFGYejYj3wGC1f/POQw==
      Signature: |
        BOPR0jL0BOV5Zx502BuPbOvi/hvOq5ID8Dz1MQfOjkey6FKP/6cb4f9YXpm6c
        ZCHAZLo0GduKdMepiKPUq1rsbbAxkRdQdjOOusEWoxNA58x3E4373tCAhlqM2
        DvuQERrIIQ/XnYLV9C3uw4efZwhFqog1jvVyoEHpuvs8xnYtGbsKQ8FrgLwXv
        pOZYy9cSgq+jqLy2D9IxiowPcbq2cRlbW9d2xlUfpq0AohyuXQhpxn7d9RUor
        9veoARRAdxRJK12EpcSoEM1LhTRYdJnSRCY3x3p6YIV3c+l1sWvaQwKt0sZ/U
        8TTDx2gb9g7r/+U9icneu/zlqUpSkexCS009Q==
      Descriptor: |
        AP///wAABAACAAAAAAAFGJ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIAAAAAAAABBUFQ6VQAAACRo
        aW9GSU8AJGhvc3RpbzAkaG9zdGlvMWFjOnUAAAAAYm9zczpVAABjYW06dQAA
        AGNlY2Q6dQAAY2ZnOnUAAABkbHA6RktDTGRscDpTUlZSZHNwOjpEU1BmcmQ6
        dQAAAGZzOlVTRVIAZ3NwOjpHcHVoaWQ6VVNFUmh0dHA6QwAAbWljOnUAAABu
        ZG06dQAAAG5ld3M6dQAAbndtOjpVRFNwdG06dQAAAHB4aTpkZXYAc29jOlUA
        AABzc2w6QwAAAHkycjp1AAAAbGRyOnJvAABpcjpVU0VSAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAABOn/rw/7//8ec/APIA8JH/APaR/1D/gf9Y/4H/cP+B/3j/gf8B
        AQD/AAIA/iECAPz/////////////////////////////////////////////
        ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA
        AAADAAAAAAAAAAAAAAAAAAI=
    (VC games are card2 games)
     
  5. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    Well, I used this RSF

    And it builds a CIA fine and works with saving etc etc. However, it seems that it is building with romfs.bin instead of the extracted romfs folder. Any idea how I can build it with the extracted romfs?
     
  6. bobmcjr

    bobmcjr GBAtemp Advanced Fan

    Member
    897
    335
    Apr 26, 2013
    United States
    The syntax was changed. See RomFs and RootPath instead of ROM and HostRoot.
    I might post an update to the stuff from this thead: http://gbatemp.net/threads/gbc-vc-generator.371819 to help automate this. Main thing now is that since stuff is installed, it requires uniqueIDs, and changing the header information would be nice too.

    Very nice only needing ~3MB instead of 70MB for 1 NES game:
    Warning: Spoilers inside!
     
  7. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    Nevermind. Used a workaround.

    Managed to build a GB VC cia file. Seems to work fine, with restore points and saving.

    Have a nice couple of batch scripts to simplify the process.
     
  8. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    I know that uniqueID is necessary, but what is the point of header?

    My workaround involves building a 3ds file first and then unpack the new 3ds file and then finally build a cia file using the new romfs.bin
     
  9. laurorual

    laurorual GBAtemp Regular

    Member
    163
    27
    Sep 12, 2009
    Brazil
    Salvador - BA
    share with us those batch scripts, i wanna try it too! :D
     
  10. bobmcjr

    bobmcjr GBAtemp Advanced Fan

    Member
    897
    335
    Apr 26, 2013
    United States
    We already have some nice batch scripts that unpack BBB's pokemon roms. I'm almost done with my batch scripts that integrate nicely with that. All you will have to do is drag a BBB PKMN rom onto prepare, then drag a NES or GBC file onto createcia.bat or create3ds.bat. It will even add the TNES header automatically.
     
  11. bobmcjr

    bobmcjr GBAtemp Advanced Fan

    Member
    897
    335
    Apr 26, 2013
    United States
  12. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
  13. bobmcjr

    bobmcjr GBAtemp Advanced Fan

    Member
    897
    335
    Apr 26, 2013
    United States
    Did you type 4 capital letters for the product code? E.g. PKBL, CLCL, SMB2, etc
     
  14. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    It didn't even prompt me to enter anything
     
  15. bobmcjr

    bobmcjr GBAtemp Advanced Fan

    Member
    897
    335
    Apr 26, 2013
    United States
    You're supposed to drag the rom you want to convert onto createcia.bat, not run it directly.
     
  16. KennyMckormick
    OP

    KennyMckormick Banned

    Banned
    126
    46
    Oct 4, 2014
    United States
    Yeah, didn't work for me.

    I've created some batch scripts (originally based on some of the package someone uploaded) and have heavily modified it till it wouldn't be unreasonable to call them my batch scripts.

    Right now the features are
    1. Toggle fullscreen
    2. Toggle quick animation menu
    3. Set the rom name when being selected on 3ds
    4. set the cia internal information name
    5. set unique id
    6. copy over banner files
    7. copy over new gbc rom
    Spent way too much time on this. Will need to implement auto banner making and probably a unique ID database
     
    Vappy likes this.