[TUTORIAL] Proyecto D.I.R.E. Disney Infinity Reversed Engineered

INTRODUCCIÓN:

En gbatemp me he encontrado con este hilo y me he llevado una grata sorpresa al descubrir que han tomado el proyecto de obiima, usuario de la desaparecida nfc-bank, y que lo han llevado más allá. Algunos ya sabréis que obiima creó una base emuladora de Disney Infinity y compartió públicamente el esquema eléctrico y componentes necesarios pero solamente compartió el firmware con unos pocos. Cada firmware estaba ligado al componente stm32 Bluepill de la base del usuario con el que obiima compartía el firmware por lo que era en vano distribuirlo (no funcionaría en otras bases). Es decir, cualquiera de nosotros podía montar una base emuladora, los archivos .bin de las figuras de Disney Infinity estaban en nfc-bank, pero si obiima no te pasaba el firmware tras montarte tu base (lo hizo con unos pocos foreros), no valía para nada.

Ahora que ya he hecho la introducción, pongo dentro del spoiler una traducción de lo que pone en el primer mensaje del hilo de gbatemp:

Proyecto D.I.R.E. (Disney Infinity Reverse Engineered) es un emulador de portal para Disney Infinity, Lego Dimensions y Skylanders. Esto reemplaza el portal original en lugar de uno creado a medida para inyectar sus propios volcados de personajes sin la necesidad de los personajes, vehículos o juegos originales.

Este emulador comenzó originalmente hace varios años después de que un codificador talentoso llamado obiima no lanzara su proyecto al público. Obiima creó y demostró un emulador de portal de consola para 3 juegos: Disney Infinity, Lego Dimensions y Skylanders. Obiima nunca lanzó su proyecto y el proyecto que lanzó en privado era un firmware cerrado, lo que significa que estaba bloqueado en el stm32 Bluepill. Este proyecto continúa donde él lo dejó.

El firmware permite que este dispositivo seleccione entre juegos manteniendo presionado uno de los botones durante el arranque. El uso específico de los botones se puede encontrar en la Guía del usuario. Tiene la opción de usar una memoria integrada limitada o al usar una tarjeta SD puede aumentar el número de caracteres en su emulador base. Al agregar sus propios archivos de personajes conocidos como archivos bin, puede inyectarlos en el juego sin tener que conservar sus personajes originales.

Este emulador actualmente funciona en Wii, Wii U, PS3 y PS4.
NO PODEMOS confirmar si esto funciona en PS5 o Nintendo Switch, ya que no poseemos esas consolas con estos juegos para probar.

Nos han dicho que Skylanders juega en Nintendo Switch pero NO usa el Portal of Power.
También hemos visto imágenes de Disney Infinity jugando en una PS5 con una base de PS4.

XBOX 360 y XBOX One aún no están incluidos en esta versión. Se requiere un chip de seguridad de un portal de Activision para que esto funcione y aún no hemos descubierto un método simple para permitir que estos juegos funcionen en estas consolas específicas.

Aquí tenéis unas imágenes del aparatejo:

Imagen Imagen Imagen


ARCHIVOS NECESARIOS:

Los archivos necesarios se encuentran aquí: https://www.mediafire.com/folder/9u87th ... se+Package Está toda la información necesaria, salvo los archivos .bin de las figuras (ver la sección BONUS).
He encontrado una página que traduce documentos pdf online, así que os pongo aquí la guía en castellano: https://www.dropbox.com/s/1dksd52ry7dag ... s.pdf?dl=0. Es una traducción automática así que puede que haya algún error pero, la he mirado por encima y no tiene mala pinta... salvo que también ha traducido los nombres de los componentes. Por ejemplo, al "STM32 Bluepill" le llama "Píldora azul STM32" [qmparto]

COMPONENTES Y MONTAJE:

Tenéis los componentes necesarios dentro del spoiler con sus respectivas fotos así como enlaces de compra en aliexpress (ya he montado la base y comprobado su funcionamiento así que los enlaces a los productos de aliexpress son los correctos; las imágenes se pueden ampliar).

  • 1 x STM32 Bluepill. Algunos vienen con los cabezales presoldados. Cuidado porque el modelo que nos hace falta es el STM32F103C8T6 que tiene 64kB de memoria. El modelo STM32F103C6T6 tiene solamente 32kB y no cabría el firmware. Yo he comprado éste (opción/color: STM32F103C8T6 Weld)
    Imagen
  • 1 x ST-Link V2. Fijaos que venga con cuatro cables hembra-hembra. He encargado éste.
    Imagen
  • 52 x cabezales macho. Yo, como voy usar una PCB personalizada, el STM32 Bluepill con los cabezales presoldados y la pantalla LCD ya tiene 8 de los 12 cabezales soldados, me harán falta sólamente 4 y he encargado una única tira (40 cabezales; opción/color: male).
    Imagen
  • Pantalla LCD 128x160 con lector de tarjetas para arduino. Fijaos que sea como la de la imagen de la guía. Yo tengo en camino ésta. He buscado una que tuviese los otros 4 cabezales presoldados pero no la he encontrado.
    Imagen
  • 1 x tarjeta SD de 128MB a 2GB. Yo voy a usar una de 128MB que tengo por casa. Si tenéis una de una capacidad mayor, el zip de la descarga viene con un programa para "convertir" tarjetas de mayor capacidad a 128MB. Me refiero al archivo balenaEtcher-Portable-1.5.121.exe de la descarga. No he llegado a hacer la prueba de momento así que no puedo hablar de primera mano pero el punto 8 de la guía habla sobre eso.
    Imagen
  • 1 x placa PCB. En realidad, se puede hacer sin la PCB (con una placa de prueba) pero se complica tanto el montaje y se formaría tal lío de cables que, viendo lo barato y fácil que ha sido encargar 5, merece la pena. En esta página, en la pestaña PCB, arrastrad y soltad el .zip de la descarga "D.I.R.E._PCB_2021-03-12", elegid color y realizad el pedido. A mí me aparecío un cupón de descuento. El pedido mínimo son 5 PCBs.
    Imagen
  • 5 x botones táctiles 6x6x5 mm. Me van a llegar 100 [qmparto]
    Imagen
  • 1 x micro cable USB. Aseguraos de que no sea sólo de carga sino de carga y datos.
    Imagen
  • 1 x soldador de estaño.
    Imagen

RECOMENDACIÓN: Si vais a pedir componentes por Aliexpress, os recomiendo pagar algo más y elegir la opción AliExpress Standard Shipping porque al elegir la opción económica puede pasar que el paquete llegue a España y pase sin problemas aduanas pero luego el paquete nos lo tenga que traer la empresa Hispapost y parece ser que, repartir, lo que se dice repartir paquetes no hace. Podéis leer sobre esa empresa en Internet.

Con la PCB el montaje no tiene ningún misterio. Se trata de poner los componentes en la placa con ayuda del dibujo y soldar en la parte inferior. Lo que sí es cierto es que, seguramente, nos cueste bastante meter el STM32 en los agujeros porque tienen que casar todas las patas con los agujeros a la vez. Si metemos las patas de un lado digamos, un milímetro, las del otro estarán torcidas y no entrarán. Requiere paciencia meterlo. Una posible estrategia es intentar meter dos patas de un extremo de distintos lados (la primera pata de cada fila) y luego intentar que cuadren las segundas, las terceras, etc. Aun así, no será fácil pero, con paciencia, entra. Que no os extrañe si tardáis más de un cuarto de hora en lograrlo. Los botones y la pantalla se meten muy fácilmente. Imagen de todo montado (de nuevo) y de las soldaduras en la parte inferior de la PCB:

Imagen Imagen


Se puede hacer una carcasa 3D (los archivos están en la descarga) pero, de momento, no me voy a liar la manta a la cabeza. Quedaría tal que así:

Imagen


Si alguien prefiere montarlo en una placa de prueba en lugar de usar una PCB, aquí puede ver cómo habría que conectarlo todo: (las imágenes se pueden ampliar)

ImagenImagenImagenImagen


O si alguien lo quiere montar en otro tipo de placa, aquí tenéis un montaje más aparatoso [qmparto] :

Imagen



PREPARANDO EL SOFTWARE:

Una vez soldados los componentes (recomiendo utilizar una punta fina con el soldador) hay que seguir los siguientes pasos:

ST-LINK

    1- Nos descargamos e instalamos en el PC el software STM32 ST-LINK Utility
    2- Vamos a la carpeta donde hemos instalado el software que será algo así como C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility y pegamos en esa carpeta los archivos unlocked-firmware.bin y stlink_flash_firmware.bat procedentes de la descarga de mediafire que hicimos antes. IMPORTANTE: Si el archivo .bat os aparece, como en mi caso, con extensión .txt, hay que quitarte esa extensión y dejarlo como .bat. Habría que renombrar el archivo y quitarle el .txt del final. Si no os deja, en el navegador de archivos, en Vista, habilitad la opción extensiones de nombre de archivo y os dejara renombrarlo correctamente.
    3- Desconectamos el cable USB del STM32. En realidad, todavía no tendríamos que haberlo conectado para nada pero lo pongo por si acaso.
    4- Conectamos el ST-LINK adapter al STM32 mediante cuatro cables. Dependiendo del modelo de nuestro adaptador, la conexión se haría de una forma u otra. Os pongo imágenes de la guía.

    Imagen

    5- Conectamos el ST-LINK Adapter al PC.
    6- Arrastramos el archivo unlocked-firmware.bin sobre el archivo stlink_flash_firmware.bat (antes de soltar el botón del ratón y cuando un archivo esté sobre el otro, veremos que aparece un símbolo "+" que indica "abrir con"). Al soltarlo se abrirá una ventana de líneas de comando y en pocos segundos instalará el firmware.

    Imagen


Bank Editor

    1- Metemos la tarjeta SD en nuestro aparato con el STM32 apagado (sin conectarlo al PC). Yo he utilizado una de 128MB con adaptador. El máximo son 2GB y para tarjetas de mayor capacidad habría que utilizar un programa de la descarga (balenaEtcher-Portable-1.5.121.exe) para "convertirla" en una de 128MB. No me he visto en la necesidad de hacerlo pero no debería de ser difícil.
    2- Conectamos el STM32 al PC (como dije arriba, aseguraos de que sea un cable de carga y datos) y abrimos el programa Bank Editor de la descarga de mediafire. En la ventana nos aparecerán tres opciones (botones): File, Device y Help.
    3- Pulsamos el botón Device y luego la opción Format.... Se abrirá una ventana donde tendremos que elegir si queremos formatear la memoria flash interna (el STM32) o la externa (la tarjeta SD). Yo he formateado ambas pero antes de pulsar el botón Format, aseguraos de que movéis los deslizadores hacia la derecha; yo lo puse a tope en todos los casos.

    Imagen

    Imagen Imagen

    4- Pulsamos el botón Device y luego la opción Load banks.... En la ventana que se abrirá deberemos elegir en qué partición queremos guardar las figuras. Yo, de momento, he elegido external y Disney Infinity. He decidido guardar figuras de Disney Infinity en la tarjeta SD. Tras eso, pulsamos el botón Append y tendremos que navegar hasta donde tenemos nuestros archivos .bin de las figuras (recordad, no me pidáis enlaces). Para guardar los cambios utilizamos la opción Save banks. En el caso de Disney Infinity, hay un total de 321 archivos .bin distintos.

    Imagen Imagen



¡Y ya está! Ya podemos utilizar el emulador. [beer]

USO DEL EMULADOR:

De los cinco botones del emulador, de izquierda a derecha, las funciones son 1- Izquierda, 2- Derecha, 3- Seleccionar, 4- Borrar y 5- Configuración (cambiar la orientación y tipo de LCD; no he salseado con eso)
Al encender el emulador, si acabamos de seguir el proceso de este tutorial, por defecto, arrancará en modo portal de Disney Infinity pero se puede cambiar cómo queremos que arranque. Al encender el STM32 tenemos que mantener pulsados los siguientes botones, dependiendo del modo en el que queremos que arranque:

    Mantener pulsado Izquierda al encender: Arranca en modo portal de Disney Infinity.
    Mantener pulsado Derecha al encender: Arranca en modo portal de LEGO Dimensions.
    Mantener pulsado Seleccionar al encender: Arranca en modo portal de Skylanders.
    Mantener pulsados Izquierda+Configuración al encender: Fija el modo portal de Disney Infinity como modo por defecto al arrancar.
    Mantener pulsados Derecha+Configuración al encender: Fija el modo portal de LEGO Dimensions como modo por defecto al arrancar.
    Mantener pulsados Seleccionar+Configuración al encender: Fija el modo portal de Skylanders como modo por defecto al arrancar.

En la pantalla LCD en el modo Disney Infinity [C], [L] y [R] indican las posiciones central, izquierda y derecha del portal y [1], [2] y [3] indican las tres ranuras para cada una de las posiciones del portal. Por ejemplo, podemos cargar la figura del personaje 1 en la ranura [L] [1] del emulador y en las otras dos ranuras [L] [2] y [L] [3] podemos cargar power discs con habilidades. Lo mismo aplicaría para la posición [R] del emulador pero en este caso sería para el jugador 2. En [C] [1] se cargan los playsets y en [C] [2] y [C] [3] se pueden usar distintos discos hexagonales para realizar personalizaciones en el Toy Box o usar vehículos de personajes. Con los LEGO Dimensions y Skylanders uso discos NFC así que no creo que ahonde en el uso del emulador con esas funciones por lo que, seguramente, no detalle más su uso. Os pongo una imagen en la que se resume todo.

Imagen


Aquí tenéis una explicación sobre los power discs copiada the la página guiasnintendo:
Los Power Disc de Disney Infinity sirven para mejorar y aumentar la experiencia de Disney Infinity de muchas formas distintas. Combina distintos Power Disc para conseguir resultados diferentes. ¡Las posibilidades son infinitas!

Los Power Disc circulares otorgarán mejoras especiales a tu personaje, como posibilidad de daño extra, etc. Podrás usarlos en los Play Set del juego y en el Toy Box, y podrás poner hasta dos Power Disc circulares bajo las Figuras interactivas.

Los Power Disc hexagonales desbloquean artefactos, vehículos y temas especiales para que personalices aún más el Toy Box. Podrás poner hasta tres Power Disc hexagonales en la base de Disney Infinity.

Y en las siguientes imágenes podéis ver las figuras y discos de cada juego así como qué podemos cargar en cada juego:

Imagen

Imagen


Os dejo aquí un Power Point con todos los power discs ordenados por juego y lanzamiento. Los de color rojo son los redondos (abilidades de personaje) y los naranjas (vehículos) y morados (personalización) son hexagonales. Por lo tanto, los rojos irian en [L] o [R] con su respectivo personaje y los naranjas y morados en [C].

https://www.dropbox.com/scl/fi/ik0nh7gs ... uiqw03em5x


BONUS:
Os dejo aquí todos los archivos .bin de LEGO Dimensions ya que no tienen clave (el emulador no la necesita) y considero que se pueden distribuir libremente: Personajes, vehículos. Se puede comprobar que, efectivamente, es así ya que la línea 43 (que en realidad sería la 44 ya que la primera es la 0; para que no haya dudas, es la penúltima fila) está llena de ceros.

En este google drive hay cientos de skylanders de todos los juegos, incluyendo trampas, vehículos, cristales, ítems especiales, etc. En esos archivos faltan las claves de los 16 sectores por lo que se pueden distribuir sin problema. La clave de cada sector va en la cuarta línea del sector pero, como digo, no llevan clave (está llena de ceros).

Acabo de comprobar, siguiendo los pasos de este hilo de 2018, que los archivos .bin de este dropbox no tienen clave así que, para terminar, os podéis descargar de aquí los archivos .bin de las figuras de Disney Infinity: https://www.dropbox.com/sh/wcr68c24d76p ... gz_Ba?dl=0.
Muchas gracias, suena interesante sobre todo para los peques.
@ ashitaka20 De nada.
Añadida lista de componentes y enlaces de lo que he encargado yo, he comenzado a subir fotos, adjunto guía traducida al castellano y he realizado algunos cambios menores.

Edito el 22 de agosto: Tengo todos los componentes menos el STM32 Bluepill que está al caer pero creo que el que necesitamos es el STM32F103C8T6 y yo, por despiste, he encargado el STM32F103C6T6. Estoy a la espera de que me confirmen en gbatemp si me vale lo que tengo en camino pero me estoy oliendo que tendré que hacer un nuevo pedido y se va a retrasar todo un par de semanas más.
Confirmado. El bueno es el STM32F103C8T6 que tiene 64kB de memoria. En el STM32F103C6T6, de 32kB, no cabría el firmware. He hecho otro pedido y, ya puestos, he pedido dos y otra pantalla para montarme dos aparatos. Total, tengo 5 PCBs y botones y conectores de sobra además de que solamente necesito un programador. Pagando un poco más, me montaré dos.

Edito el 26 de agosto: Aún no me ha llegado el STM32F103C6Tque compré por error. Da igual porque el que necesito es el STM32F103C8T6 pero me llama la atención que la empresa Hispapost está haciendo honor a la fama que tiene en Internet. Ojo, todavía están dentro de plazo pero nunca jamás me había pasado que una empresa de reparto tardase tanto en entregar el paquete una vez que ya lo tienen (lo tienen desde el día 19). Y vamos a ver si lo terminan trayendo o si, por el contrario, con la excusa de que "no cabía en el buzón" (caber, cabe) no lo traen (parece ser que ni siquiera mandan al repartidor) y me dicen que vaya a por él a saber dónde. Llevaba mucho tiempo sin pedir por Aliexpress y se me olvidó que convenía elegir la opción AliExpress Standard Shipping o mejor.

31 de agosto: Sigue sin llegar el paquete de Hispapost [facepalm]
Lunes 5 de septiembre por la noche. Hoy me ha llegado el último componente de la base así como una punta fina para un soldador JBC que tenía por casa. No soy un manitas con el soldador pero me las he arreglado para soldarlo todo medianamente bien y que el aparato funcione. He actualizado el firmware del emulador y he flasheado correctamente la memoria interna y externa (SD). He metido todos los personajes, playsets y power discs del primer juego (de momento) y ahora mismo acabo de cargar a Rayo Mc Queen, Mickey y Sindrome (uno cada vez, se entiende). El juego los reconoce sin problemas. No he llegado a hacer la prueba con playsets o power discs pero todo se andará. Mañana seguramente actualice el tutorial y cuando haya añadido lo que he hecho hoy tras soldarlo todo, montaré el segundo aparato y lo prepararé siguiendo los pasos anteriormente añadidos para ver si se me ha olvidado explicar algo. Lo dicho, el emulador funciona [sonrisa]

Edito: ahora mismo uno de mis hijos está jugando en el playset de Cars mediante el emulador XD
Edito de nuevo: Subidas un motón de imágenes, organizado todo mejor mediante más spoilers y añadidas explicaciones sobre el funcionamiento del emulador. Este fin de semana seguramente monte el segundo emulador.
Edit 3: Aprovechando que hoy es festivo aquí, ya he montado el segundo emulador. Funciona perfectamente. Sabiendo cómo es todo el proceso ahora y teniendo los archivos del PC preparados de la primera vez que lo hice todo, ahora lo tengo en marcha en poquísimo tiempo.
Edit 4: Me he dado cuenta de que no tengo respaldos de los LEGO Dimensions. Es decir, no tengo los archivos .bin y no tengo claro como generarlos a partir de los personajes y vehículos que tengo en formato físico. ¡Lo logré! He conseguido crear un .bin y cargar a Batman en el juego. Cuando tenga tiempo detallaré en qué consiste el proceso pero me da una pereza increíble hacerlo con todos. ¡Cómo me gustaría tener los archivos .bin de LEGO Dimensions que una vez pululaban por nfc-bank! :-|
Edit 5: Ya he hecho volcados de todos los personajes de LEGO Dimensions en formato .txt y este fin de semana los pasaré a .bin. De momento, he probado con éxito en el emulador Batman, Gandalf, Wyldstyle, Aquaman, Bad Cop, Bane y Bart. Ahora es cuestión de paciencia y tiempo libre... 75 personajes de LEGO Dimensions funcionando perfectamente en el emulador. Ahora me faltan los vehículos... ¡Ale! 80 vehículos de LEGO Dimensions funcionando en el emulador.

En el primer mensaje las fotos son sacadas de gbatemp. Os pongo fotos de mi pequeñin:
Imagen Imagen Imagen Imagen
Detallo el proceso para poder crear archivos .bin de LEGO Dimensions a partir de un chip físico. En mi caso, tenía discos NFC con las figuras creadas tal y como se detalla en este hilo. Vamos, que tenía los clones en formato físico y mi problema consistía en volcar esos clones y pasarlos a formato .bin. Estos son los pasos que seguí:

    1- Con la aplicación de móvil Mifare++ Ultralight escaneamos el chip físico de nuestra figura. Hay que utilizar la opción "Read" y, obviamente, tener encendido el lector NFC de nuestro móvil. Tras la lectura, muy importante, hay que fijarnos en que haya leído 45 páginas (aparecerá fugazmente un mensaje en pantalla) y no menos. Si no, hay que volver a leer el chip.
    2- Mediante la opción "Save" guardamos un archivo .txt de esa lectura donde queramos dentro de nuestro móvil.
    3- Pasamos ese archivo al PC para poder editarlo correctamente. Yo me los mandé al correo electrónico y en el PC los descargué de mi correo pero se puede hacer mediante un cable de trasferencia de datos también.
    4- Si no tenemos instalado el programa Notepad++ en el PC, lo instalamos. No es indispensable pero si vamos a editar 155 figuras, como hice yo, agiliza sobremanera el proceso. Si no, habría que quitar los saltos de línea del archivo .txt uno por uno y es un coñazo.
    5- En el PC abrimos con Notepad++ el archivo.txt de la figura que queremos convertir a .bin y darle el formato adecuado (sin saltos de línea).
    6- Vamos a la opción Search > Replace (con el atajo de teclado Ctrl + H llegaremos antes cuando estemos haciendo todo el proceso una y otra vez para distintos volcados de nuestras figuras), en el campo "Find what" le pediremos que busque "[\r\n]+" (obviamente, sin comillas; yo lo tenía copiado y en ese campo pulsaba Ctrl + V cuando procedía) y en el campo "Replace with" no pondremos nada (ni siquiera un espacio). Pulsamos el botón "Replace all" (acabamos de quitar todos los saltos de línea) y guardamos los cambios.
    7- Le cambiamos la extensión la extensión .txt por .bin al archivo y ya lo podemos meter en el emulador y utilizar sin problema.

Al seguir este proceso, los archivos .txt y .bin no tienen clave por lo que considero que se pueden distribuir libremente. Para quien lo quiera comprobar, es la línea 43 (en realidad es la 44 ya que la primera es la 0; para que no haya dudas, sería la penúltima fila) la que suele contener la clave y estará llena de ceros. Vamos, vendrían a ser el "equivalente" a los archivos .bin compartidos en este hilo solo que en este caso se trata de LEGO Dimensions y no de Skylanders. Es por ello que voy a subirlos aquí para quien no quiera seguir el proceso que es fácil pero tedioso: Personajes, vehículos.

Creo que los archivos .bin de Disney Infinity que hay que buscar con Google tampoco tienen claves pero antes de subirlos, cuando tenga tiempo, voy a cerciorarme de que es así. Hará casi cuatro años conseguí hacer volcados de DI pero no pude hacer clones porque no se venden los chips necesarios. Voy a releer mi hilo y si, como creo, los archivos que necesita el emulador no tiene clave (la clave es necesaria para grabar chips físicos), los subiré también... leyendo mi propio hilo, las figuras de DI tienen una sola clave que vale para todos los sectores y la keyA y keyB coinciden. He abierto archivos .bin de DI que una vez estuvieron en nfc-bank y yo no veo clave alguna. Creo que la clave iba en el cuarto bloque de cada sector. Voy a generar una clave de una UID dada y ver si está en el archivo correspondiente. Si no aparece, no hay clave... ¡Hecho! He repasado el algoritmo que genera la clave para una UID dada y he practicado con ejemplos de los que conozco la clave de antemano para asegurarme de que lo hago bien. He generado una clave para un archivo .bin de una figura (Francesco) y en el archivo .bin no aparece esa clave así que es seguro subir esos archivos. Aquí tenéis los archivos .bin sin claves de DI listos para utilizar con el emulador: https://www.dropbox.com/sh/wcr68c24d76p ... gz_Ba?dl=0
4 respuestas