› Foros › Nintendo Switch › Scene
[
¿Qué es un nca?
Un nca es un contenedor secundario con diversas funciones dentro del contenedor principal, ya sea este xci o nsp.
http://switchbrew.org/index.php?title=NCA
¿Qué es un nsp?
Un nsp es un contenedor de archivos pensado para desarrolladores. Un nsp tiene una estructura simple compuesta de - 4 archivos NCA:- 1 ticket y 1 certificado. Necesarios para instalar la licencia en la consola
- Program: Archivo con los datos del juego o programa
- Meta: Archivo con los metadatos del juego o programa
- Legal: Archivo con las advertencias legales de uso
- Control: Archivo con datos sobre como cargar el programa, por ejemplo que idioma debe de saltar al inicio..
- Un archivo xml en el que se especifican las funciones que cumple cada archivo. (Es decir el xml le dice a la consola que pepito=program, juanito=meta, jaimito=legal y jorgito=control)
http://switchbrew.org/index.php?title=NCA
¿Qué es un xci?
Un xci es una imagen de cartucho de Nintendo Switch que recibió ese nombre internamente por "NX Card Image"
http://switchbrew.org/index.php?title=Gamecard_Format
Un xci está formado por varias particiones dependiendo de si es tipo "CART 1" o "CART 2".
- SECURE: partición que incorpora los NCA "program", "meta", "legal" y "control"
- UPDATE: partición que incorpora las actualizaciones del sistema operativo
- NORMAL: partición que puede ir vacía o incorporar el NCA "meta" y el NCA "control". El motivo lo veremos más adelante
- LOGO (en los "cart 2"): Es una partición con el logo de Nintendo y la animación de la switch que sale al inicio de los juegos.
¿Puede incorporarse actualizaciones a un xci?
La respuesta simple es que sí, aunque yo aún no he conseguido crear uno funcional. Basta con introducir los NCA que componen la actualización en nsp en la partición "secure", así como ticket y certificado de la actualización.
En la partición "normal" deben de ir los NCA "meta" y "control" del juego principal para que la Switch sepa que archivos NCA corresponden al juego.
En mi caso no he conseguido pasar del error de tarjeta con lo que creo que el quid está en editar el "meta" y el "control" del juego principal para indicarle que el cartucho incorpora la actualización. (suposición mía)
Más info sobre como identificar los NCA:
http://switchbrew.org/index.php?title=NCA
Aquí teneis un xci con actualizaciones de juego, en general todos los cartuchos de revisión las tienen y curiosamente usan tickets como los nsp.
¿Cuánto espacio se puede ahorrar eliminando la partición update?
Depende del juego pero por ejemplo veamos el caso de Bayonetta:
- Sin trim 16Gb:
- Con trim 9.375,428 kB
img]http://subirimagen.me/uploads/20180813163051.PNG[/img]
- Después de reconstruirlo con hacbuild quitándole el update 8.998,632kB
1.- PASOS PREVIOS
Necesitaremos:Nota: Los archivos keys.txt y keys.dat se corresponden con un archivo de texto renombrado de distintas formas según el programa, el cuál incumple las normas de EOL por lo que debereis de buscarlo por vuestros medios
- Hacbuild: Versión 1.0.0.1 (la versión que pongo ya que la que sale como última en github es la penúltima y da fallo de desbordamiento con juegos grandes)
https://github.com/LucaFraga/hacbuild/r ... c257600a92- Un archivo keys.txt que tenga como mínimo la clave "XCI Header Key"
- Un medio para extraer los nca que componen un xci, por ejemplo EZ-HAC https://github.com/Cyuubi/EZ-HAC/releases
- Si usamos EZ-HAC necesitaremos hactool
- Si usamos EZ-HAC un archivo keys.dat con las claves de la consola
- Cierto conocimiento de la línea de comandos de windows.
Nuestra carpeta con hacbuild tendrá el siguiente aspecto:
Nuestra carpeta con EZ-HAC tendrá el siguiente aspecto:
2.- Usos y advertencias
- Usos:
[/list]
- Eliminar la partición update reduciendo el tamaño de los xci.
- Aplicar mods a los juegos con la ayuda de NCA Builder (por probar)
- Convertir juegos de la eshop a xci
- Agregar updates o dlcs al xci (sin probar editando los NCA, sin conseguir que funcione por método directo)
- Limitaciones:- La conversión de juegos de la eshop a xci no está documentada, en este momento SX OS reconoce los juegos pero sin los metadatos adecuados da el cartucho como dañado. Se puede también usar los metadatos de un juego de cartucho pero aunque en este caso no de el juego como dañado no lo cargará o se quedará la pantalla en negro
3.- DECOMPILANDO EL XCI
Para decompilar los xci yo he usado EZ-HAC. Simplemente lo abrimos, seleccionamos el archivo a decompilar y la ruta donde guardarlo.
El resultado será el siguiente:
4.- ELIMINANDO LA PARTICIÓN UPDATE
Simplemente entrais en la carpeta "update" y borrais todos los archivos.
5.- ELIMINAR LA PARTICIÓN LOGO
Si el juego es un "cart 2" necesitareis borrar la carpeta "logo" para que el archivo compilado funcione en vuestra switch. Simplemente borrad la carpeta por completo.
5.- OBTENIENDO "game_info.ini"
Abrimos la consola de sistema, nos vamos a la ruta donde tenemos hactool y introducimos el siguiente comando:
hacbuild.exe read xci <in_file>
En este caso:cd C:\hacbuild
hacbuild.exe read bayonetta.xci
Nos grabará en la misma ruta un bayonetta.ini que renombraremos a game_info.ini y pondremos junto a las carpetas update, normal y secure
6.- RECOMPILANDO EL JUEGO
Usamos el comando hacbuild xci_auto <in_folder> <out_file>
En este caso llamándose la carpeta que contiene normal, secure y update "bayonetta" y el archivo final "nuevo_archivo.xci"cd C:\hacbuild
hacbuild.exe xci_auto "C:\hacbuild\bayonetta" nuevo_archivo.xci
Y con esto tendremos un archivo que pesará 260mb menos, lo cuál unido al espacio que se elimina por espacio vacío en algunos juegos pequeños como el flashback es un cacho respecto al original dumpeado sin trimear.
Flashback, por ejemplo, baja a 255mb de los 2 gigas que pesa la imagen original.
Flashback sin trimear
Flashback trimeado
Probado sin problemas con:[* ]Axiom Verge
--------------------
[* ]Bayonetta
[* ]Crash Bandicoot N'Shane Trilogy
[* ] Flashback
[* ]Kirby
[* ]Mario Tennis Aces
[* ]Penny Punching Princess
[* ]Mario Tennis Aces
Fallo:Con los cart 2 como decía antes falla, tengo comprobado que hay una variable que debería de permitir generarlo como cart 1 en la cabecera pero la tengo sin identificar.
- Azure Striker Gunvolt. seguramente algún despiste mío al compilar. Más pruebas pronto
1.- PASOS PREVIOS
Necesitaremos:Nota: Los archivos keys.txt y keys.ini se corresponden con un archivo de texto renombrado de distintas formas según el programa, el cuál incumple las normas de EOL por lo que debereis de buscarlo por vuestros medios
- Hacbuild: Versión 1.0.0.1 (la versión que pongo ya que la que sale como última en github es la penúltima y da fallo de desbordamiento con juegos grandes)
https://github.com/LucaFraga/hacbuild/r ... c257600a92- Un archivo keys.txt que tenga como mínimo la clave "XCI Header Key"
- Un medio para extraer los nca que componen un nsp Por ejemplo https://gbatemp.net/attachments/decrypt ... ar.138851/
https://gbatemp.net/threads/a-simple-xc ... pt.513300/- Si usamos decrypt_xci_nca_nsp necesitaremos un archivo "keys.ini" a introducir en la carpeta "ztools" que nos creará al ejecutar el programa.
- Si usamos EZ-HAC un archivo keys.dat con las claves de la consola
- Cierto conocimiento de la línea de comandos de windows.
Nuestra carpeta de hacbuild tendrá el siguiente aspecto:
Nuestra carpeta de decrypt_xci_nca_nsp tendrá el siguiente aspecto:
Nuestra carpeta ztools tendrá el siguiente aspecto:
2.- Usos y advertencias
- Usos:- Limitaciones:
- Crear un archivo xci a partir de un .nsp
Hace falta que el juego digital tenga la licencia instalada en la consola, si bien el juego puede estar desinstalado. Esto puede hacerse[/list]
- Habiendo descargado con anterioridad el juego digital en la consola que va a usar el xci
- Habiendo instalado el nsp con anterioridad en la consola.
- Instalando un nsp de tinfoil con el instalador de SX.
(Este es un tipo de archivo que en las últimas versiones de tinfoill da error de instalación al no pasar verificado de firmas)
Este archivo incorpora el NCA "control", el ticket, un certificado del nsp y un xml descriptivo del archivo. Podeis generarlo a partir del nsp con nspBuild https://gbatemp.net/threads/nspbuild-bu ... es.509816/
o descargándolo por CDN, de lo segundo no puedo daros instrucciones al ir en contra de la normativa de EOL.
3.- DECOMPILANDO EL NSP
Para decompilar los nsp yo he usado decrypt_xci_nca_nsp. Simplemente arrastrad el archivo .nsp sobre Drag_XCI_NCA_NSP_HERE.bat y cuando os pregunte pulsad en el tecldo "1". Obtendreis una carpeta "nspDecrypted"
Dentro de esa carpeta tendreis algo como esto:
4.- PREPARANDO LOS ARCHIVOS PARA HACBUILD
Simplemente creais 3 carpetas "normal", "secure" y "update" e introducís los 4 NCA dentro de "secure" dejando las otras dos vacías.
5.- OBTENIENDO "game_info.ini"
Necesitareis un game_info de un juego cat 2. Podeis saber que juegos son cart 2 aquí http://nswdb.com/
Yo usé el Mario Aces.
Abrimos la consola de sistema, nos vamos a la ruta donde tenemos hactool y introducimos el siguiente comando:
hacbuild.exe read xci <in_file>
En este caso:cd C:\hacbuild
hacbuild.exe read cart2.xci
Nos grabará en la misma ruta un cart.ini que renombraremos a game_info.ini y pondremos junto a las carpetas update, normal y secure.
El resultado final será el siguiente:
6.- RECOMPILANDO EL JUEGO
Usamos el comando hacbuild xci_auto <in_folder> <out_file>
En este caso llamándose la carpeta que contiene normal, secure y update "nspDecrypted" y el archivo final "nuevo_archivo.xci"cd C:\hacbuild
hacbuild.exe xci_auto "C:\hacbuild\nspDecrypted" nuevo_archivo.xci
7.- Ejecutando el juego
Si nuestra consola tiene la licencia del juego instalada no deberíamos tener problemas ejecutándolo desde SX OS. En caso contrario investigad sobre como crear un nsp de tinfoil y podreis agregar la licencia instalándolo con el instalador de SX OS.
Una vez realizado esto podremos cargar el archivo como si fuera un cartucho.
JulesRussel escribió:@okenshin No, no tiene nada que ver. Las actuaizaciones de las que hablamos son las del Sistema Operativo, las cuáles llevan todos los juegos ya que al estar firmados con las claves de determinado FW necesitas estar en ese frmware para poder jugarlos. Esto reduce el espacio que ocupa el XCI al quitar las actualizaciones del sistema que realmente una vez actualizados no valen para nada.
El programa elimina también algo más de espacio que el trimming normal incluso si no borras las actualizaciones ya que aparentemente genera el root.hfo con menos padding que Nintendo).
No tiene que ver con las actualizaciones del juego, las cuáles puedes instalar por nsp. Estos nsp al ser generados externamente no incorporan tickets, ya que no los necesitan al no estar cifrados. (Hablo de las actualizaciones, los juegos base tal cuál se descargan del servidor de nintendo necesitan el ticket porque sus nca van cifrados en base a la titlekey que incorpora el ticket.)
okenshin escribió:Es decir, que si nunca conectas la consola al online y los juegos los pasas por el Hacbuild para quitar el aviso de actualización, en teoría reduces más el riesgo de cagarla con un ban no?
CrusardGameamos escribió:okenshin escribió:Es decir, que si nunca conectas la consola al online y los juegos los pasas por el Hacbuild para quitar el aviso de actualización, en teoría reduces más el riesgo de cagarla con un ban no?
https://youtu.be/Gb0cJP7O75Q
okenshin escribió:CrusardGameamos escribió:okenshin escribió:Es decir, que si nunca conectas la consola al online y los juegos los pasas por el Hacbuild para quitar el aviso de actualización, en teoría reduces más el riesgo de cagarla con un ban no?
https://youtu.be/Gb0cJP7O75Q
Te salva que has usado una referencia de los Simpsons. De haber usado cualquier otro recurso literario o gráfico, no te estaría respondiendo en estos mismos términos...
CrusardGameamos escribió:okenshin escribió:CrusardGameamos escribió:https://youtu.be/Gb0cJP7O75Q
Te salva que has usado una referencia de los Simpsons. De haber usado cualquier otro recurso literario o gráfico, no te estaría respondiendo en estos mismos términos...
Despues de un rato investigando he averiguado como cortar el video en la URL justo antes de que me citaras
En cualquier caso, no se de dodne sacas lo del ban, los baneos estan implicitos en practicamente cualquier metodo que uses independientemente que le quites las actualizaciones o no, esto es simplemente para bajar mas aun el tamaño del .XCI, no he visto ninguna referencia sobre baneos en el hilo xD
Darkomg escribió:hay dos cosas que no me quedan claro del todo, con esto es posible converitr desde xci a nsp?
si la respuesta a eso ultimo es SI, esos nsp se pueden instalar por devmenu usando hekate o reinx?
JulesRussel escribió:Edit 2: Estoy preparando un batch para la conversión de nsp a xci con solo arrastrar el archivo. La idea es hacer que cree también un nsp para instalar la licencia del juego a partir de los archivos del nsp sin que tengais que conseguirlo por vuestra cuenta.
El batch se basará en los programas de este hilo y extraerá los nca del nsp reordenándolos en las carpetas adecuadas, usará hacbuild para crear un xci y tomará en NCA de control, el ticket, el certificado y el xml para crear un nsp con nspbuild.
El xml lo editará para eliminar los datos de los archivos meta y program.
Como game_info.ini usará los datos de un preset por defecto, al menos de momento hasta que se compruebe si el preset funciona con todos los tamaños de archivos. De todas formas se podrán cambiar los datos del preset.
Cuando esté listo la idea es reempaquetar todo lo necesario con la excepción del keys.txt que tendreis que conseguir por vuestra cuenta.
yggdrassilbcn escribió:no he entendido muy bien como funciona esto. a ver si van por aqui los tiros...digamos, que los juegos, vienen por defecto, con una particion que ocupa mas espacio, para que se puedan actualizar, desde los servidores de nintendo. pero que esa particion, la puedes quitar, con lo que quitas gran parte de espacio que no sirve mas que para lo comentado, y actualizar manualmente? algo asi seria?
gracias por el tuto. parece muy interesante todo esto, aunque complicado para mi. pero seguro que gracias a este hilo, acabaré pillando el tema.