Hacking [Q] Building VC roms as CIA

VerseHell

Well-Known Member
Member
Joined
Jun 29, 2014
Messages
3,073
Trophies
1
Age
30
XP
1,667
Country
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)
 

KennyMckormick

Banned!
OP
Banned
Joined
Oct 4, 2014
Messages
126
Trophies
0
Age
44
XP
48
Country
United States
Well, I used this RSF

BasicInfo:
Title : "PokeTCG-GBVC"
CompanyCode : "00"
ProductCode : "PokeTCG-GBVC"
ContentType : Application # Application / SystemUpdate / Manual / Child / Trial
Logo : Nintendo # Nintendo / Licensed / Distributed / iQue / iQueForSystem

TitleInfo:
UniqueId : 0x90000
Category : Application

Option:
UseOnSD : true # true if App is to be #installed to SD
EnableCompress : true # Compresses exefs code
FreeProductCode : true # Removes limitations on ProductCode
EnableCrypt : true # Enables encryption for NCCH and CIA
MediaFootPadding : true # If true CCI files are created with padding

AccessControlInfo:
ExtSaveDataId: 0xb9000 # 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: 1M # plaintext exheader
RemasterVersion: 0 # plaintext exheader
StackSize: 0x00040000 # plaintext exheader
JumpId: 0x000400000b000000L # plaintext exheader (<full UniqueID>L)

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?
 

bobmcjr

Well-Known Member
Member
Joined
Apr 26, 2013
Messages
1,156
Trophies
1
XP
3,232
Country
United States
BasicInfo:
Title : "Custom Title"
CompanyCode : "00"
ProductCode : "CTR-P-DERP"
ContentType : Application # Application / SystemUpdate / Manual / Child / Trial
Logo : Nintendo # Nintendo / Licensed / Distributed / iQue / iQueForSystem

RomFs:
# Specifies the root path of the file system to include in the ROM.
RootPath : "romfs"

TitleInfo:
UniqueId : 0x7850
Category : Application

Option:
UseOnSD : true # true if App is to be #installed to SD
EnableCompress : true # Compresses exefs code
FreeProductCode : true # Removes limitations on ProductCode
EnableCrypt : true # Enables encryption for NCCH and CIA
MediaFootPadding : true # If true CCI files are created with padding

AccessControlInfo:
ExtSaveDataId: 0xb7850 # 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: 1M # plaintext exheader
RemasterVersion: 0 # plaintext exheader
StackSize: 0x00040000 # plaintext exheader
JumpId: 0x000400000b000000L # plaintext exheader (<full UniqueID>L)

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:
1lkTax4.jpg
 

KennyMckormick

Banned!
OP
Banned
Joined
Oct 4, 2014
Messages
126
Trophies
0
Age
44
XP
48
Country
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.
 

KennyMckormick

Banned!
OP
Banned
Joined
Oct 4, 2014
Messages
126
Trophies
0
Age
44
XP
48
Country
United States
it requires uniqueIDs, and changing the header information would be nice too.

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
 

bobmcjr

Well-Known Member
Member
Joined
Apr 26, 2013
Messages
1,156
Trophies
1
XP
3,232
Country
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
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.
 

KennyMckormick

Banned!
OP
Banned
Joined
Oct 4, 2014
Messages
126
Trophies
0
Age
44
XP
48
Country
United States
You're supposed to drag the rom you want to convert onto createcia.bat, not run it directly.

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
 
  • Like
Reactions: Vappy

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: See ya see ya later later