Hacking Xenoblade Chronicle 3D xorpads

  • Thread starter Thread starter motezazer
  • Start date Start date
  • Views Views 13,795
  • Replies Replies 81
  • Likes Likes 6
Good luck! took me a little bit of trial and error to get it to compile without errors.
Also SOOOO SLOW, only at 20%...


Thanks! Although, the page you linked to seems to be instructions for Linux? I'm on Windows, so I found this comparable page: http://wiki.gbatemp.net/wiki/3DS_Homebrew#Install_a_compiler

I find it kind of complicated, honestly. It isn't exactly noob friendly as steps seem to assume you've some knowledge already. But yes, trial and error, I suppose. I figured out CIA's...eventually. We'll see.
 
Thanks! Although, the page you linked to seems to be instructions for Linux? I'm on Windows, so I found this comparable page: http://wiki.gbatemp.net/wiki/3DS_Homebrew#Install_a_compiler

I find it kind of complicated, honestly. It isn't exactly noob friendly as steps seem to assume you've some knowledge already. But yes, trial and error, I suppose. I figured out CIA's...eventually. We'll see.
It only gives directions for linux, but devkitarm has a windows installer, its what I used and it worked.
I installed devkitarm, installed python2.7.9, updated windows path to include python install folder.
 
I don't think it's against the rules to post decrypt9.3dsx here, as I've found it before myself, so here's the one I compiled earlier today that has the new 3DS key slot decryption
 

Attachments

  • Like
Reactions: cyb0rg and Septimo
I don't think it's against the rules to post decrypt9.3dsx here, as I've found it before myself, so here's the one I compiled earlier today that has the new 3DS key slot decryption


Thanks! I'm going to try to research compiling sometime, though. You know, the old give a man a fish quote.
 
Man these xorpads take forever! Took a good handful of HOURS to finish. Still don't know why xorpad generation is so slow on n3ds vs o3ds. :(

Anyway, for those who can't/don't want to/whatever compile stuff here's my copy of Decrypt9 updated to the latest, runs on Brahma rather than bootstrap as I've found it a hell of alot more reliable. :)
 

Attachments

  • Like
Reactions: Pacman` and cyb0rg
Xenoblade Chronicles (EUR)

Here is my working RSF if anyone needs it:
Code:
BasicInfo:
  Title                   : "smallfol" #CHANGE ME
  CompanyCode             : "00" #CHANGE ME
  ProductCode             : "KTR-P-CAFP" #CHANGE ME
  ContentType             : Application # Application / SystemUpdate / Manual / Child / Trial
  Logo                    : Nintendo # Nintendo / Licensed / Distributed / iQue / iQueForSystem

TitleInfo:
  UniqueId                : 0xf7002 #CHANGE ME
  Category                : Application # Application / SystemApplication / Applet / Firmware / Base / DlpChild / Demo / Contents / SystemContents / SharedContents / AddOnContents / Patch / AutoUpdateContents

CardInfo:
  MediaSize               : 4GB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB / 8GB / 16GB / 32GB #CHANGE ME
  MediaType               : Card1 # Card1 / Card2 #CHANGE ME
  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 #CHANGE ME
  EnableCompress          : true # Compresses exefs code #CHANGE ME
  FreeProductCode         : true # Removes limitations on ProductCode #CHANGE ME
  EnableCrypt             : false # Enables encryption for NCCH and CIA #CHANGE ME
  MediaFootPadding        : false # If true CCI files are created with padding #CHANGE ME

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
   
AccessControlInfo:
  #UseOtherVariationSaveData : false
  #UseExtSaveData : true
  ExtSaveDataId: 0x000f7002
  #SystemSaveDataId1: 0x220
  #SystemSaveDataId2: 0x00040010
  #OtherUserSaveDataId1: 0x220
  #OtherUserSaveDataId2: 0x330
  #OtherUserSaveDataId3: 0x440
  #UseExtendedSaveDataAccessControl: true
  #AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
  FileSystemAccess:
   #- CategorySystemApplication
   #- CategoryHardwareCheck
   #- CategoryFileSystemTool
   - Debug
   #- TwlCardBackup
   #- TwlNandData
   #- Boss
   - DirectSdmc
   - DirectSdmcWrite
   #- Core
   #- CtrNandRo
   #- CtrNandRw
   #- CtrNandRoWrite
   #- CategorySystemSettings
   #- CardBoard
   #- ExportImportIvs
   #- DirectSdmcWrite
   #- SwitchCleanup
   #- SaveDataMove
   #- Shop
   #- Shell
   #- CategoryHomeMenu
  IoAccessControl:
   #- FsMountNand
   #- FsMountNandRoWrite
   #- FsMountTwln
   #- FsMountWnand
   #- FsMountCardSpi
   #- UseSdif3
   #- CreateSeed
   #- UseCardSpi
   
  IdealProcessor                : 0
  AffinityMask                  : 1
  
  Priority                      : 48
   
  MaxCpu                        : 0x9E # Default
  
  DisableDebug                  : false
  EnableForceDebug              : false
  CanWriteSharedPage            : false
  CanUsePrivilegedPriority      : false
  CanUseNonAlphabetAndNumber    : false
  PermitMainFunctionArgument    : false
  CanShareDeviceMemory          : false
  RunnableOnSleep               : false
  SpecialMemoryArrange          : false
  
  CoreVersion                   : 2
  DescVersion                   : 2
  
  ReleaseKernelMajor            : "02"
  ReleaseKernelMinor            : "48" 
  MemoryType                    : Application # Application / System / Base
  HandleTableSize: 200
  IORegisterMapping: 
   - 1ff50000-1ff57fff
   - 1ff70000-1ff77fff
  MemoryMapping: 
   - 1f000000-1f5fffff:r
   - 1e800000-1E9fffff: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: 
   - $hioFIO
   - $hostio0
   - $hostio1
   - cfg:u
   - fs:USER
   - gsp::Gpu
   - hid:USER
   - ndm:u
   - pxi:dev
   - APT:A
   - ac:u
   - act:u
   - am:app
   - boss:U
   - cam:u
   - cecd:u
   - dlp:FKCL
   - dlp:SRVR
   - dsp::DSP
   - frd:u
   - http:C
   - ir:USER
   - ldr:ro
   - mic:u
   - news:u
   - nfc:u
   - nim:aoc
   - nwm::UDS
   - ptm:u
   - qtm:u
   - soc:U
   - ssl:C
  
   
SystemControlInfo:
  SaveDataSize: 512KB #CHANGE ME
  RemasterVersion: 0
  StackSize: 0x10000
  JumpId: 0x000400000f700200
  Dependency: 
    ac: 0x0004013000002402L
    act: 0x0004013000003802L
    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
    qtm: 0x0004013020004202L
    ro: 0x0004013000003702L
    socket: 0x0004013000002e02L
    spi: 0x0004013000002302L
    ssl: 0x0004013000002f02L
 
Xenoblade Chronicles (EUR)

Here is my working RSF if anyone needs it:
Code:
BasicInfo:
  Title                  : "smallfol" #CHANGE ME
  CompanyCode            : "00" #CHANGE ME
  ProductCode            : "KTR-P-CAFP" #CHANGE ME
  ContentType            : Application # Application / SystemUpdate / Manual / Child / Trial
  Logo                    : Nintendo # Nintendo / Licensed / Distributed / iQue / iQueForSystem
 
TitleInfo:
  UniqueId                : 0xf7002 #CHANGE ME
  Category                : Application # Application / SystemApplication / Applet / Firmware / Base / DlpChild / Demo / Contents / SystemContents / SharedContents / AddOnContents / Patch / AutoUpdateContents
 
CardInfo:
  MediaSize              : 4GB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB / 8GB / 16GB / 32GB #CHANGE ME
  MediaType              : Card1 # Card1 / Card2 #CHANGE ME
  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 #CHANGE ME
  EnableCompress          : true # Compresses exefs code #CHANGE ME
  FreeProductCode        : true # Removes limitations on ProductCode #CHANGE ME
  EnableCrypt            : false # Enables encryption for NCCH and CIA #CHANGE ME
  MediaFootPadding        : false # If true CCI files are created with padding #CHANGE ME
 
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
 
AccessControlInfo:
  #UseOtherVariationSaveData : false
  #UseExtSaveData : true
  ExtSaveDataId: 0x000f7002
  #SystemSaveDataId1: 0x220
  #SystemSaveDataId2: 0x00040010
  #OtherUserSaveDataId1: 0x220
  #OtherUserSaveDataId2: 0x330
  #OtherUserSaveDataId3: 0x440
  #UseExtendedSaveDataAccessControl: true
  #AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
  FileSystemAccess:
  #- CategorySystemApplication
  #- CategoryHardwareCheck
  #- CategoryFileSystemTool
  - Debug
  #- TwlCardBackup
  #- TwlNandData
  #- Boss
  - DirectSdmc
  - DirectSdmcWrite
  #- Core
  #- CtrNandRo
  #- CtrNandRw
  #- CtrNandRoWrite
  #- CategorySystemSettings
  #- CardBoard
  #- ExportImportIvs
  #- DirectSdmcWrite
  #- SwitchCleanup
  #- SaveDataMove
  #- Shop
  #- Shell
  #- CategoryHomeMenu
  IoAccessControl:
  #- FsMountNand
  #- FsMountNandRoWrite
  #- FsMountTwln
  #- FsMountWnand
  #- FsMountCardSpi
  #- UseSdif3
  #- CreateSeed
  #- UseCardSpi
 
  IdealProcessor                : 0
  AffinityMask                  : 1
 
  Priority                      : 48
 
  MaxCpu                        : 0x9E # Default
 
  DisableDebug                  : false
  EnableForceDebug              : false
  CanWriteSharedPage            : false
  CanUsePrivilegedPriority      : false
  CanUseNonAlphabetAndNumber    : false
  PermitMainFunctionArgument    : false
  CanShareDeviceMemory          : false
  RunnableOnSleep              : false
  SpecialMemoryArrange          : false
 
  CoreVersion                  : 2
  DescVersion                  : 2
 
  ReleaseKernelMajor            : "02"
  ReleaseKernelMinor            : "48"
  MemoryType                    : Application # Application / System / Base
  HandleTableSize: 200
  IORegisterMapping:
  - 1ff50000-1ff57fff
  - 1ff70000-1ff77fff
  MemoryMapping:
  - 1f000000-1f5fffff:r
  - 1e800000-1E9fffff: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:
  - $hioFIO
  - $hostio0
  - $hostio1
  - cfg:u
  - fs:USER
  - gsp::Gpu
  - hid:USER
  - ndm:u
  - pxi:dev
  - APT:A
  - ac:u
  - act:u
  - am:app
  - boss:U
  - cam:u
  - cecd:u
  - dlp:FKCL
  - dlp:SRVR
  - dsp::DSP
  - frd:u
  - http:C
  - ir:USER
  - ldr:ro
  - mic:u
  - news:u
  - nfc:u
  - nim:aoc
  - nwm::UDS
  - ptm:u
  - qtm:u
  - soc:U
  - ssl:C
 
 
SystemControlInfo:
  SaveDataSize: 512KB #CHANGE ME
  RemasterVersion: 0
  StackSize: 0x10000
  JumpId: 0x000400000f700200
  Dependency:
    ac: 0x0004013000002402L
    act: 0x0004013000003802L
    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
    qtm: 0x0004013020004202L
    ro: 0x0004013000003702L
    socket: 0x0004013000002e02L
    spi: 0x0004013000002302L
    ssl: 0x0004013000002f02L
Using your converter atm to try and make the cia, sadly its the usa version though so that rsf wont help, hopefully the autogen one will work.
Edit: and that's a first, got a 3dstool.exe error missing libeay32.dll with 2.04 of your converter hmmm. welp now to find that and try again.
 
Ran into this thread last night: https://gbatemp.net/threads/xenoblade-redub-english-missing-dub-file-project.310401/

Seems the directory tree for the port is more or less the same as the Wii version, and the AFS package file has the same quirks, ie the JPN version is significantly bigger than the ENG version, partly due to some missing samples that were (presumably) never dubbed/skipped in the ENG

Depending on how the program expects to find the samples in the package, I'm not sure if just replacing one with the other will work even if file size checks are passed

Anyway I spent way too long on this yesterday, I think I will leave it to the experts :lol:
 
Not expert in undub too. I just tried for fun, but too complex.
I gave the method to decrypt the game, now it's time (for experts, so not me) to undub it!
 
There's already cias that work just fine for both EUR and USA if you don't want an undub

An undub may take a while
 
Anyone looking to extract the .arc archives may be interested in this: http://pastebin.com/4MC8548R

Also, the .tpl files are wrappers for .ctex (same basic image storage format as bclim, different metadata). Here's the code I used to convert them to .bclim when I was looking at the game: http://pastebin.com/fmczHE85


Undub update : both games decrypted and extracted, I just need to figure how fsize.dat works...

It's pretty standard.

u32 magic; // "zsif", "fsiz" backwards
u32 filecount;
byte[8] reserved;

filecount*entry;

struct entry
{

u32 unk; // Related to File Path?
u32 FileSize;

}
 
  • Like
Reactions: cearp

Site & Scene News

Popular threads in this forum