Guest User

Untitled

a guest
Jun 19th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. CACHE=~/.nca
  5.  
  6. # Default I use the title id of Devious Dungeon DEMO
  7. TITLE=0100EB900A534000
  8.  
  9.  
  10. ARGS=`getopt -o k:x:t: --long key:,xci:,title:,help -n 'example.bash' -- "$@"` && eval set -- "$ARGS"
  11.  
  12. usage() {
  13. cat <<- EOF
  14. xci2lfs [Options] dir
  15. Convert XCI game format to be used by Atmosphere.
  16.  
  17. Options:
  18. -c|--key file key.dat location
  19. -x|--xci file .xci game location
  20. -t|--title id target title id, default is "0100EB900A534000"
  21. EOF
  22. }
  23.  
  24. prepare() {
  25. [ -e $CACHE] && [ -d $CACHE ] || mkdir -p ~/.nca
  26.  
  27. [ -e $ROMFS] && [ -d $ROMFS ] || mkdir -p $ROMFS
  28. [ -e $EXEFS] && [ -d $EXEFS ] || mkdir -p $EXEFS
  29. }
  30.  
  31. extract() {
  32. HOME=$CACHE/$TITLE
  33. [ -d $HOME ] || mkdir -p $HOME
  34.  
  35. hactool -k $KEYFL -txci --securedir=$HOME $XCIFL
  36.  
  37. NCA=$HOME/$(ls -S $HOME | head -1)
  38.  
  39. hactool -k $KEYFL --section0dir=$EXEFS $NCA
  40. hactool -k $KEYFL --section1dir=$ROMFS $NCA
  41. }
  42.  
  43. update_npdm() {
  44. cp $EXEFS/main.npdm $EXEFS/main.npdm.orig
  45. perl -e "print pack 'Q', 0x$TITLE" | dd of=$EXEFS/main.npdm bs=1 seek=1088 count=8 conv=notrunc
  46. }
  47.  
  48.  
  49. while true; do
  50. case "$1" in
  51. -k|--key) KEYFL=$2; shift 2;;
  52. -x|--xci) XCIFL=$2; shift 2;;
  53. -t|--title) TITLE=$2; shift 2;;
  54. --help) usage; exit 0 ;;
  55. --) shift; break ;;
  56. *) echo "Invalid arguments."; exit 1 ;;
  57. esac
  58. done
  59.  
  60.  
  61. OUTPUT="$1"; [ -z "$OUTPUT" ] && OUTPUT=$PWD
  62.  
  63. ROMFS=$OUTPUT/$TITLE/romfs
  64. EXEFS=$OUTPUT/$TITLE/exefs
  65.  
  66. if [ ! -e "$KEYFL" ]; then
  67. echo "Please provide a valid key.dat file."; exit 1
  68. fi
  69. if [ ! -e "$XCIFL" ]; then
  70. echo "Please provide a valid .xci file."; exit 1
  71. fi
  72.  
  73. prepare
  74. extract
  75. update_npdm
Add Comment
Please, Sign In to add comment