viernes, 25 de marzo de 2016

Saliendo de la procrastinación.

Hola ¿Cómo están?

Bienvenidos sean de nuevo a nuestro blog. El día de hoy hemos aprovechado que el trabajo ha estado relativamente relajado (es semana feriada en mi país) para poner un poco de orden a las cosas e inaugurar la nueva saga "avisos parroquiales".

Aprovecho esta oportunidad para aclarar que siempre nos encontramos en disposición de resolver dudas con respecto a los proyectos que aquí se comparten. Sin embargo nuestras respuestas pueden ser demoradas debido a varios factores:
  • Tal como todos, tenemos obligaciones que cumplir y problemas propios que resolver (los cuales suelen ser muchos y siempre tendrán prioridad). 
  • Ya no contamos con la misma computadora y entorno de trabajo con los que se crearon la mayoría de los proyectos que se compartieron en el pasado. Contamos con respaldos de muchas cosas, pero otras hay que buscarlas en respaldos archivados. En ese caso nos topamos con un obstáculo, pues ahora nuestra computadora de cabecera es una netbook y no cuenta con lectora de discos ópticos. 
  • Los proyectos y las herramientas para generar varios de los recursos del blog se encuentran en casa, por lo tanto no tenemos acceso inmediato a ellos. Por cuestiones de trabajo casi nunca estamos en casa.
  • Muchos de los circuitos, materiales, equipos, programadores y prototipos los hemos regalado, por lo que en ocasiones también contamos con la imposibilidad física de poner a prueba varias cosas.
  • Otras cosas como la legendaria computadora "Family" (aportada por nuestro amigo Dark "Dash Bandit" Shingo) ya han dado su canto de cisne.

A pesar de todo ello, reitero, tenemos la mejor disposición de apoyar en caso de que se requiera asesoría o aclaración de dudas con respecto a los proyectos expuestos en este blog. No nos podemos comprometer a desarrollar proyectos a la medida debido a que lo más probable es que quedemos mal, dando tumbos y palos de ciego por no contar con las herramientas idóneas para hacer las debidas pruebas de calidad.

¡Estamos en contact!

jueves, 24 de marzo de 2016

Nintendo sucks (CFW edition).

Hola que tal ¿Cómo están?

Tal como el año pasado, este inicio de primavera trae un clima bastante loco por mis latitudes, espero que por las de ustedes gocen de un excelente clima para aprovechar al máximo los días de asueto (si disfrutan de ellos) o sus días de trabajo (si son como su servidor).

Pues bien, en el capítulo anterior de esta "emocionante" saga titulada "Nintendo sucks" repasamos el proceso para poder extraer la valiosa OTP de nuestras consolas 3DS y poder utilizar el hardware de la misma a todo su potencial mediante la instalación del a9lh.

Ahora que tenemos nuestra OTP tenemos que compilar el archivo arm9loaderhax.3dsx (el exploit propiamente dicho) que posteriormente instalaremos en nuestra consola.

Para compilar el exploit, podemos recurrir a dos alternativas:

  1. La primera es establecer un entorno de desarrollo y compilación en nuestra computadora.
  2. La segunda es recurrir a un servicio de compilación en línea, el cual puede ser mediante una aplicación web o recibiendo ayuda en los foros de la scene de los "compiladores voluntarios".

Ambos procesos son igualmente válidos, pues el exploit obtenido será el mismo en ambos casos.

Paso 9. Compilación del exploit arm9loaderhax.
Objetivo: Generar el exploit a9lh correspondiente a nuestra consola haciendo uso de la OTP.

Si optamos por establecer el entorno de desarrollo necesitamos cumplir con algunos requisitos:

  • Una computadora con sistema operativo Windows. Si bien su servidor emplea Linux como sistema operativo de cabecera, se han reportado casos en que la compilación en Linux no es satisfactoria o que el exploit generado provoca "brickeos". Dado que queremos minimizar los riesgos para este proceso nos decantaremos por Windows.
  • Descargar el DevKitPro, obtenerlo mediante este enlace. Descargar e instalar en nuestra computadora el "Automated Installer" en su versión más reciente (al momento de escribir esto devkitProUpdater-1.6.0.exe). Al instalar el devkitpro nos interesa instalar la parte devkitpro ARM, los demás módulos no son necesarios para el proceso.
  • Descargar e instalar Python, en su variante 2.x (al momento de escribir esto la versión más reciente es la 2.7.11) que corresponda a la arquitectura de nuestro sistema operativo (32 o 64 bits) de ésta página. Al instalar Python hay que asegurarse que se agregue Python a las variables de entorno PATH (la opción inferior del instalador que se encuentra desmarcada por defecto).
  • Descargar e instalar Pycrypto, en la variante de nuestro sistema operativo (32 o 64 bits) de la siguiente página. 
  • Descargar la "master branch" del arm9loaderhax de este repositorio. Este repositorio contiene todos los dumpeos necesarios para llevar a cabo la compilación. Para descargarlo debemos ir a la derecha de la página y presionar el botón "Download ZIP". Una vez descargado el ZIP, debemos descomprimirlo, teniendo la precaución de que no aparezcan espacios en toda la jerarquía de directorios que compongan la ruta, de lo contrario obtendremos un error al tratar de compilar.
  • Descargar e instalar la herramienta "make" de la página del proyecto. 

Una vez descargadas e instaladas las herramientas necesarias, debemos hacer lo siguiente:

  1. Copiar nuestro archivo otp.bin a la carpeta "data_input" de nuestra copia local del repositorio arm9loaderhax-master.
  2. Abrir una consola de comandos (CMD) dentro del directorio arm9loaderhax-master y teclear make.
  3. Después de unos cuantos segundos se creará una carpeta llamada "data_output" y dentro se encontrará el archivo arm9loaderhax.3dsx que será nuestro exploit instalable en la consola.

Si optamos por compilar el exploit vía web sólo tendremos que dirigirnos en nuestro navegador preferido a la página https://felipejfc.com/a9lh y arrastrar nuestro archivo otp.bin. La página hará algunas validaciones y nos ofrecerá descargar nuestro arm9loaderhax.3dsx.

Paso 10. Instalación del arm9loaderhax en la consola.
Objetivo: Instalar el exploit a9lh en una copia de la EmuNAND con la versión de firmware más reciente y el FBI previamente inyectado, con el fin de facilitar el proceso de instalación de aplicaciones. Esta imagen de EmuNAND se inyectará en la SysNAND, por lo que la consola quedará en la versión más reciente de sistema.

Una vez que obtenemos nuestro exploit deberemos instalarlo de alguna forma en nuestro 3DS. En este punto la mayoría de las guías obvian el paso resumiéndolo como "ejecutar el arm9loaderhax.3ds con cualquier entrypoint" y bueno ¿Cuál es CUALQUIER entrypoint (algo así como el clásico "Press ANY key...")?
Pues bien, para instalar nuestro exploit recomiendo los siguientes pasos:

  1. Copiar a la raíz de nuestra tarjeta SD el respaldo de la EmuNAND con versión más reciente de firmware que generamos en el paso 4 de la guía previa y renombrar el archivo a "nand.bin".
  2. Ir a la página https://smealum.github.io/3ds/ y descargar ya sea el "Homebrew starter kit" o sólo el ejecutable del "Homebrew Launcher".
  3. Extraer los archivos, copiar el archivo "boot.3dsx" y la carpeta "3DS" a la raíz de la memoria SD.
  4. Copiar nuestro "arm9loaderhax.3dsx" a la carpeta 3DS ubicada en la raíz de la memoria SD.
  5. Insertar la memoria en nuestra 3DS, encenderla y activar la cámara (presionando los botones L y R al mismo tiempo).
  6. Ingresar en nuestra computadora a la página https://yls8.mtheall.com/3dsbrowserhax.php y escanear con la 3DS el código QR que aparece. O en su defecto dirigirse a la siguiente página desde el navegador de internet de la consola: http://yls8.mtheall.com/3dsbrowserhax_auto.php
  7. Al cargar la página aparecerá una barra con un deslizador en la pantalla inferior de la consola, debemos tocar cualquiera de los extremos de la barra para activar el browserhax.
  8. El browserhax es un exploit un tanto inestable, en ocasiones tendremos que intentar varias veces antes de que arranque el Homebrew Launcher.
  9. Una vez cargado el Homebrew Launcher, ejecutar el arm9loaderhax.3dsx (aparecerá en el menú de aplicaciones). La instalación del exploit tardará un poco, pues se inyectará en la copia de la EmuNAND (renombrada a nand.bin) que colocamos en la memoria y posteriormente inyectará esa imagen en la NAND del sistema.
  10. Al concluir la instalación del exploit la 3DS se tratará de reiniciar, pero se quedará con ambas pantallas en negro y el indicador de POWER quedará encendido. Esto es normal y ocurrirá cada vez que encendamos la 3DS sin un "payload" en la memoria SD (o directamente sin memoria SD insertada en la consola).
  11. Debemos forzar el apagado de la consola (manteniendo presionado el botón POWER) y extraerle la memoria SD para ponerle un "payload" válido al a9lh.

Paso 11. Instalación de CFW (a9lh payload).
Objetivo: Instalar un CFW compatible con el a9lh, de forma que el ejecutable del CFW cumpla la función de payload del exploit y podamos aprovechar todas las ventajas del mismo.

Entre los payload válidos por el momento contamos con los CFW auReiNand y cakesFW.

En primera instancia opté por el auReiNand, debido a su simplicidad y a que fue el primer CFW con soporte para a9lh. Sin embargo he probado el cakesFW y es un CFW con mayor funcionalidad, mejores opciones de configuración y un rendimiento muy bueno, por lo tanto el payload que compartiré corresponde al de cakesFW.

  1. Se deben borrar de la memoria SD los archivos utilizados en el paso previo (nand.bin, boot.3dsx y /3DS/arm9loaderhax.3dsx).
  2. Se deben copiar a la raíz de la memoria los archivos contenidos en el este paquete. Este paquete contiene los archivos base del cakesFW y todos los dumpeos necesarios para configurarlo y hacerlo funcionar.
  3. Insertar la memoria SD a la consola y encenderla. Deberá mostrarnos el menú de configuración del cakesFW.
  4. En el menú seleccionar la opción "Select patches" y verificar que la opción "Enable EmuNAND" esté desactivada, puesto a que ya no emplearemos la EmuNAND en lo sucesivo, lo que nos dará 1GB extra de diversión en nuestras memorias SD.
  5. En el menú "Select patches" seleccionar las opciones "Disable signature checks" y "Block FIRM partition updates". De esta forma podremos instalar aplicaciones sin firmar y actualizar nuestro sistema sin perder el exploit o brickear la consola. 
  6. Presionar START para guardar los cambios.
  7. Ir al menú "More options", seleccionar "Toggleable options" y activar "Enable autoboot (Press L to enter the menu)". 
  8. Presionar START para guardar los cambios.
  9. En el menú principal seleccionar "Boot CFW" para arrancar nuestra consola con CFW desde la SysNAND.
Pues bien, ya tenemos nuestra consola con 3DS con CFW. A partir de aquí podemos hacer varias cosas con la consola, como instalarle el Homebrew Launcher en formato CIA para tener acceso cómodo a nuestras aplicaciones desde el menú principal de la consola, también podemos instalar el AGB parcheado en nuestra SysNAND para poder instalar juegos de GameBoy Advance y jugarlos desde el emulador nativo de la consola, entre muchas otras posibilidades.

Sin lugar a dudas colocar CFW en una 3DS incrementa de forma notable las posibilidades de la consola. Nos brinda un control prácticamente total sobre la misma y nos permite aprovechar el hardware más allá de las restricciones que el fabricante ha impuesto sobre la misma.

Espero que se puedan divertir con sus consolas, ahora con su potencial liberado. Su servidor de momento se retira a seguir jugando con una consola de la competencia X_x, en espera que la scene de la misma llegue a surgir y producir la combinación de exploits de hardware y software necesarios para flexibilizar el desarrollo de aplicaciones sobre la misma.

Y para ser políticamente (hipócritamente) correctos recuerden... ¡No apoyamos a la piratería! Ni nos hacemos responsables del uso o las posibles averías que puedan surgir, bla, bla, bla, ya saben a lo que nos referimos ¿Verdad n_n?

¡Estamos en contact!

miércoles, 16 de marzo de 2016

Nintendo sucks (Episodio 2.1 OTP).

Hola que tal ¿Cómo están? Bienvenidos sean de nuevo a nuestro blog.

En este nuevo episodio de la saga "Nintendo sucks" revisaremos la extracción de la OTP de nuestras consolas 3DS.

¿Recuerdan que les comenté que había escrito una guía extensiva (y bastante genial) para realizar la extracción de la OTP y la compilación del a9lh para 3DS? Pues bien, después de mucho buscar en la computadora no fui capaz de encontrar el archivo de texto donde la había guardado X_x. Sospecho que la última limpieza de archivos se lo llevó como damnificado.

Así que, pues aprovecharé esta entrada para explicar los pasos clave del proceso, quizás no con tanto detalle como nos hubiere gustado (como estaban en la guía super-duper-genial), pero trataré de no dejar cabos sueltos para que puedan llevar a cabo el procedimiento sin inconvenientes.

Antes que nada, les recuerdo que las herramientas y dumpeos que se anexan en esta guía funcionan sólo en consolas 3DS (versiones 3DS, 3DSXL y 2DS) de la región americana (US). Además de que este proceso en particular no es aplicable a las variantes "New 3DS".

Los materiales necesarios para aplicar el procedimiento son:

  • Una consola 3DS con firmware 4.5, pues emplearemos de forma exhaustiva el exploit MSET. 
  • Una computadora.
  • Una flashcard compatible con modo DS/DSi que sea reconocida por la consola y que cuente con su firmware en una memoria MicroSD. Su servidor empleó una R4i SDHC Snoopy 2014, que es reconocida por la consola como el juego Touch Bomberman Land.
  • Una memoria SD, completamente limpia (sin EMUNAND, sin archivos ni particiones extrañas) formateada en FAT32, de por lo menos 4GB de capacidad. Recomiendo que sea una memoria distinta a la que actualmente emplean para jugar.
  • Cargador de batería de la consola, ya que el proceso es algo demorado (aproximadamente dos y media horas).
  • Conexión a internet inalámbrico. Se tratará de emplear lo menos posible, sin embargo hay pasos en los que será inevitable su uso.
  • Un lector de memorias MicroSD y SD.
  • Mucho espacio en el disco duro de nuestra computadora para guardar los varios respaldos de la EmuNAND y la SysNAND.
  • Un lugar cómodo para trabajar.
  • Mucha paciencia.

Antes que nada, comparto el paquete de archivos que se utilizarán.

¿Cómo llevar a cabo la guía?

Para emplear los archivos del paquete se deben descomprimir. Dentro del paquete encontraremos una serie de carpetas numeradas con el número del paso que corresponde y dentro de cada una de ellas tendremos una carpeta con los archivos que deben copiarse a la raíz de la memoria SD de la consola y a la raíz de la memoria MicroSD de la Flashcard.

Se utilizarán de forma exhaustiva algunos procedimientos, por lo cual se explicará a continuación a qué se refiere cada uno de esos procedimientos.

Activar exploit MSET.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Encender la consola y entrar al menú "Configuración de la consola" (tiene el icono de una llave inglesa).
  2. Presionar en el botón "Otras opciones" (esquina inferior derecha con el icono naranja de una consola y una llave inglesa).
  3. Seleccionar "Perfil".
  4. Seleccionar "Perfil de Nintendo DS".
Crear imagen de SYSNAND o EMUNAND.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Iniciar el programa Decrypt9 o Decrypt9WIP (se especificará en cada caso la versión y el entrypoint que se empleará).
  2. Seleccionar en el menú del programa el menú SysNAND/EmuNAND Options (dependerá del tipo de NAND con que se trabajará).
  3. Seleccionar la opción NAND Backup.
  4. Seleccionar un nombre de archivo para la imagen de la NAND (sólo en Decrypt9WIP, en Decrypt9 se emplea por defecto el nombre de archivo nand.bin).
  5. Iniciar el proceso (demora unos pocos minutos). Se puede verificar el estado de la creación de imagen con el contador de porcentaje que aparece en la esquina inferior derecha de la pantalla superior.
Inyección de imagen de SYSNAND o EMUNAND.
Cuando en la guía aparezca este procedimiento, se tiene que hacer lo siguiente:
  1. Iniciar el programa Decrypt9 o Decrypt9WIP (se especificará en cada caso la versión y el entrypoint que se empleará).
  2. Seleccionar en el menú del programa el menú SysNAND/EmuNAND Options (dependerá de dónde queramos inyectar la imagen de NAND, si se inyectará la imagen a la EmuNAND o a la SysNAND).
  3. Seleccionar la opción NAND Restore.
  4. Seleccionar un nombre de archivo para la imagen de la NAND (sólo en Decrypt9WIP, en Decrypt9 se emplea por defecto el nombre de archivo nand.bin).
  5. Se ingresa el código de seguridad que aparece en pantalla (sólo en Decrypt9WIP).
  6. Iniciar el proceso (demora unos pocos minutos). Se puede verificar el estado de la inyección de imagen con el contador de porcentaje que aparece en la esquina inferior derecha de la pantalla superior.
Aplicar downgrade a EMUNAND.
Como medida de seguridad en todo el proceso y para minimizar las posibilidades de estropear el sistema de la consola, todas las operaciones de "downgrade" (bajar la versión de la consola) se efectuarán sobre la EmuNAND. De esta forma podremos probar que el procedimiento de downgrade se ha llevado a cabo con éxito arrancando la EmuNAND y verificando la versión de sistema de la misma. Sin embargo, cuando se realice la operación de downgrade a la versión 2.1 no podremos verificar la versión de la EmuNAND, pues ningún CFW es compatible con dicha versión.

El proceso de downgrade a EmuNAND implica los siguientes pasos:
  1. Verificar que no existe en la raíz de la memoria SD de la consola la carpeta "updates", si existe, se tiene que borrar.
  2. Copiar a la raíz de la memoria SD de la consola la carpeta "updates" correspondiente al paso en que nos encontremos. La carpeta "updates" contiene una serie de archivos CIA que componen el firmware de una versión específica de la consola.
  3. Arrancar el CFW para iniciar la EmuNAND.
  4. Arrancar el SysUpdater (previa instalación en la consola).
  5. Aparece la advertencia de presionar el botón HOME si estamos usando la versión CIA del programa (como en nuestro caso), por lo que lo presionamos y luego presionamos en Reanudar para regresar al programa. Desconozco si esto tiene alguna utilidad, pero más vale seguir las instrucciones.
  6. Presionar el botón Y.
  7. Esperar a que termine el proceso de downgrade (demora cerca de 20 minutos).
  8. Al finalizar el downgrade, la consola se reiniciará. Debido a que la SysNAND no se ha tocado, el sistema arrancará con normalidad y nuestra EmuNAND tendrá la versión objetivo del downgrade.
Bueno, pues si todo está listo, manos a la obra.

Paso 1. Creación de una EMUNAND.
Objetivo: Crear una imagen de sistema en la memoria SD de la consola (EMUNAND).
  1. Copiar el archivo MT_INSTALLER.NDS a la raíz de la memoria MicroSD de la Flashcard.
  2. Copiar el archivo LAUNCHER.DAT a la raíz de la memoria SD de la consola.
  3. Insertar la Flashcard y la memoria SD a la consola.
  4. Iniciar la Flashcard y ejecutar el archivo MT_INSTALLER.NDS. Nos mostrará una pantalla azul donde nos pedirá confirmar la región de la consola (USA en nuestro caso) y procederá a configurar el exploit MSET.
  5. Activar el exploit MSET.
  6. Veremos la pantalla de las herramientas Gateway. Nos desplazamos hasta la penúltima opción (Format EmuNAND). Con esto crearemos una EmuNAND nueva en la tarjeta SD.
  7. Al terminar el procedimiento apagamos la consola.

Paso 2. Instalación de CFW rxTools.
Objetivo. Instalar en la tarjeta de memoria un CFW para efectuar tareas de preparación y posibilitar la ejecución de varias herramientas que se necesitarán posteriormente.
  1. Borrar los archivos en la memoria SD y en la memoria MicroSD de la Flashcard.
  2. Copiar el archivo rxinstaller.nds a la raíz de la memoria MicroSD de la Flashcard.
  3. Copiar los archivos firmware.bin, rxTools.dat y slot0x25KeyX.bin a la raíz de la memoria SD de la consola.
  4. Insertar la Flashcard y la memoria SD a la consola.
  5. Iniciar la Flashcard y ejecutar el archivo rxinstaller.nds. Nos mostrará una pantalla donde nos informará sobre la instalación del CFW y procederá a configurar el exploit MSET.
  6. Activar el exploit MSET.
  7. Se iniciará el CFW rxTools. Se crearán unos archivos en la memoria SD y arrancará la EmuNAND.
  8. Habilitar la conexión de internet.
  9. Ir a "Configuración de la consola" (verificar que la versión de sistema tiene las letras RX-E), "Otras opciones", "Actualizar".
  10. Procedemos a actualizar la EmuNAND a la versión más reciente.
  11. Al terminar el procedimiento la consola se reiniciará y arrancará desde SysNAND.
  12. Activar el exploit MSET.
  13. Presionar el botón R para ingresar a las opciones del rxTools.
  14. Seleccionar "Other Options".
  15. Seleccionar "Install FBI over Health&Safety app".
  16. El proceso fallará, pero nos permitirá conocer la región y versión de los archivos que utilizaremos en el próximo paso. Hay que anotar estos datos.
  17. Salimos de las opciones y seleccionamos Launch rxMode.
  18. La EmuNAND arrancará y tendremos aceptar algunos avisos de la nueva versión instalada.
  19. Apagamos la consola.
Paso 3. Inyección del FBI en la EmuNAND.
Objetivo. Instalar en la EmuNAND la aplicación FBI, que nos permitirá instalar aplicaciones como el sysUpdater, que se empleará para hacer downgrade.
  1. Copiar en la raíz de la memoria SD los archivos fbi_inject.app y fbi_inject.tmd correspondientes a nuestra versión y región de consola. Asímismo el archivo sysUpdater.cia.
  2. Activar el exploit MSET.
  3. Presionar el botón R para ingresar a las opciones del rxTools.
  4. Seleccionar "Other Options".
  5. Seleccionar "Install FBI over Health&Safety app".
  6. En esta ocasión el proceso debe ser satisfactorio.
  7. Salimos de las opciones y seleccionamos Launch rxMode.
  8. La EmuNAND arrancará y podremos verificar que al iniciar la aplicación "Información sobre salud y seguridad" en realidad arrancará el FBI, un programa que nos permite instalar aplicaciones en formato CIA.
  9. Seleccionar el archivo sysUpdater.cia e instalarlo con las opciones por defecto. Si al tratar de instalar el archivo sysUpdater.cia nos salta un error, debemos hacer lo siguiente:
    1. Apagar la consola y conectar la memoria SD en la computadora.
    2. Navegar dentro de la carpeta Nintendo 3DS hasta la tercera orden de jerarquía y encontremos la carpeta "extdata". Si dentro de la carpeta Nintendo 3DS hay varias subcarpetas con claves numéricas, debemos repetir el proceso para cada una.
    3. Crear una carpeta llamada dbs.
    4. Dentro de la carpeta dbs crear dos archivos vacios llamados title.db e import.db.
    5. Insertar la tarjeta en la consola y reiniciarla.
    6. Activar el exploit MSET.
    7. Ir a "Configuración de la consola", "Gestión de datos", "Nintendo 3DS".
    8. La consola nos informará que la información de la base de datos está corrupta y nos dará la opción de reconstruirla. Seleccionamos Aceptar.
    9. Volvemos a intentar instalar el sysUpdater,cia, en esta ocasión no debería dar error.
  10. Salir del FBI (presionando la tecla HOME) y verificar que aparece un regalo en el menú de la consola.
  11. Abrir el regalo y verificar que arranca el sysUpdater.
  12. Apagamos la consola.
Paso 4. Instalación de Decrypt9WIP y creación de imágenes de NAND.
Objetivo. Instalar en el exploit MSET la aplicación Decrypt9WIP que nos permitirá manipular las NAND de nuestra consola. Este paso es sumamente importante.
  1. Copiar en la raíz de la memoria SD el archivo Decrypt9WIP.dat.
  2. Copiar en la raíz de la memoria MicroSD de la Flashcard el archivo Decrypt9WIP.nds.
  3. Insertar la Flashcard y la memoria SD a la consola.
  4. Iniciar la Flashcard y ejecutar el archivo Decrypt9WIP.nds. Nos mostrará una pantalla donde nos informará sobre la instalación de la aplicación en el exploit MSET.
  5. Reiniciar la consola.
  6. Activar el exploit MSET.
  7. Nos aparecerá el menú del Decrypt9WIP.
  8. Creamos una imagen de la EmuNAND y de la SysNAND.
  9. Apagamos la consola y copiamos ambas imágenes a la computadora. Recomiendo colocarlas en una carpeta acompañadas de una descripción de qué versión corresponde a cada imagen.
  10. Mantener una copia de esta EmuNAND en la raíz de la memoria (anotar el nombre del archivo para evitar confundirla).
Paso 5. Downgrade de EmuNAND (versión 9.2).
Objetivo. Bajar la versión de sistema de la EmuNAND a la versión 9.2, que nos permitirá utilizar más entrypoints y poder ejecutar aplicaciones con extensión 3dsx.
  1. Aplicar downgrade a EMUNAND. 
  2. Al concluir el downgrade se reinicia la consola y podemos verificar la que la versión de la EmuNAND sea la 9.2 si activamos el exploit MSET.
  3. Reiniciamos la consola.
  4. Iniciar la Flashcard y ejecutar el archivo Decrypt9WIP.nds. Nos mostrará una pantalla donde nos informará sobre la instalación de la aplicación en el exploit MSET.
  5. Reiniciar la consola.
  6. Activar el exploit MSET.
  7. Arrancará el Decrypt9WIP.
  8. Creamos una imagen de la EmuNAND. Hay que tener cuidado de guardar con un nuevo nombre de archivo y no confundirla con la imagen de respaldo que hicimos con anterioridad.
  9. Apagamos la consola y hacemos una copia de seguridad de nuestra nueva EmuNAND (versión 9.2) en la computadora. Hay que tener precaución de distinguir esta imagen de la otra que generamos en el paso 4. Si la capacidad de nuestra memoria lo permite, mantendremos ésta imagen en la misma, pues se empleará para restaurar nuestro sistema al finalizar la extracción de la OTP.
Paso 6. Downgrade de EmuNAND (versión 2.1).
Objetivo. Bajar la versión de sistema de la EmuNAND a la versión 2.1, que nos permitirá acceder al OTP de nuestra consola.
  1. Borrar de la raíz de la memoria SD la carpeta "updates" existente.
  2. Asegurarnos que tenemos en la memoria el respaldo de la EmuNAND más actualizada (la que se generó en el paso 4).
  3. Inyectamos la imagen de la EMUNAND generada en el paso 4 a la EmuNAND. Con esto tendremos la consola en la configuración con que se inició el paso 5.
  4. Aplicamos downgrade a la EMUNAND.
  5. Al concluir el downgrade se reinicia la consola, sin embargo en esta ocasión ya no podremos arrancar desde la EmuNAND, ya que ningún CFW soporta EmuNAND en versión 2.1.
  6. Repetimos los pasos 5.3, 5.4, 5.5, 5.6, 5.7 y 5.8.
  7. Al terminar el procedimiento no salimos del Decrypt9WIP, sino que regresamos al menú principal de la aplicación y presionamos SELECT para desmontar la memoria SD.
  8. Extraemos la memoria SD de la consola (sin apagarla) y hacemos una copia de seguridad de nuestra nueva EmuNAND (versión 2.1) en la computadora.
  9. La EmuNAND (versión 2.1) que queda en la memoria SD hay que renombrarla a SysNAND.bin.
  10. Reinsertamos la tarjeta SD a la consola, presionamos el botón B e Inyectamos la imagen de la EMUNAND (renombrada a SysNAND.bin) a la SysNAND. Este es uno de los pasos más delicados, por lo que conviene hacerlo con calma verificar todo antes de realizar la inyección y conectar la consola a la corriente eléctrica para evitar problemas de batería baja.
  11. Al terminar el proceso reiniciamos la consola y verificamos que la versión de sistema sea 2.1.
  12. Apagamos la consola.
Paso 7. Extracción de la OTP.
Objetivo. Extraer la OTP de nuestra consola.
  1. Borrar de la raíz de la memoria SD la carpeta "updates" existente (ya no se empleará más) y copiar el archivo arm11.bin correspondiente a este paso.
  2. Insertamos la memoria SD en la consola y la encendemos.
  3. Habilitamos el internet y nos dirigimos a la página  http://dukesrg.github.io/2xrsa.html?arm11.bin desde el navegador de la consola.
  4. Las pantallas parpadearán por un momento y se verá un barrido blanco en la pantalla inferior. Esperamos unos cinco segundos y forzamos el apagado de la consola.
  5. Conectamos la memoria SD a la computadora y comprobamos que exista un archivo llamado "a9f.bin" de 256 bytes.
  6. Renombramos el archivo a "otp.bin" y lo guardamos como oro en paño.
Paso 8. Restauración de la consola.
Objetivo. Revertir la consola a un estado que nos permita la instalación del a9lh.
  1. Borrar de la raíz de la memoria SD todos los archivos, excepto los respaldos de la EmuNAND generados en el paso 4 (versión más actual de sistema) y el paso 5 (versión 9.2).
  2. Renombramos a la EmuNAND del paso 5 (versión 9.2) "nand.bin", mientras que la EmuNAND del paso 4 (versión más actual) como "emunand.bin".
  3. Copiamos los archivos "arm9.bin" y "arm11.bin" a la raíz de la memoria SD.
  4. Arrancamos la consola, activamos el internet y volvemos a ingresar a la página http://dukesrg.github.io/2xrsa.html?arm11.bin desde el navegador de la consola.
  5. Esto activará el Decrypt9, desde el cual procedemos a Inyectar la imagen de SYSNAND y de EMUNAND.
Al concluir tendremos en nuestra consola la versión de sistema 9.2 y en la EmuNAND la versión más actual (10.6 al momento de escribir esto). Además tendremos en la computadora nuestro preciado archivo OTP.

Si bien es cierto que este proceso es muy engorroso (hay guías con menos pasos en internet), es bastante seguro. Su servidor lo ha repetido en tres consolas distintas sin contratiempos. Además se minimiza el riesgo durante el paso más crucial, el downgrade a la versión 2.1. Es posible ejecutar el downgrade de forma directa en la SysNAND, pero cualquier fallo puede estropear el proceso y el sistema, lo que nos obligaría a utilizar el Hardmod y nos complicaría las cosas.

En la próxima entrada detallaré las alternativas de compilación (local o en línea) del a9lh y les compartiré configuración que su servidor emplea para tener acceso a la mayoría de las cosas que ofrece la scene, además de que listaré los pros y contras de las configuraciones más comunes.

Espero que el proceso salga de acuerdo a lo previsto y no encuentren ningún inconveniente.

Estamos en contact!

    lunes, 14 de marzo de 2016

    Nintendo sucks again (A9lh Edition).

    Hola ¿Cómo están? Bienvenidos sean de nuevo a nuestro blog.

    En esta ocasión la demora ha sido muy prolongada, hace casi ocho meses desde la última vez que tuvimos oportunidad de conversar.

    Y como siempre, hay muchas cosas en el tintero, pero las responsabilidades del mundo real a veces nos complican darnos tiempo para las dosis de debraye.

    Sin embargo, para regresar con todas las ganas traigo los resultados de los trasteos de estas últimas semanas.

    Nintendo sacó al mercado hace unos pocos años la consola portátil Nintendo 3DS (3DS). Se trata de una evolución del exitoso Nintendo DS (NDs) que incorpora además de doble pantalla, la novedad de desplegar gráficos tridimensionales sin necesidad de gafas.

    Sin embargo, al momento de lanzar esta consola su recepción en el mercado no fue del todo satisfactoria. Desde mi opinión, los 'talones de Aquiles' del lanzamiento fueron su precio elevado, la falta de lanzamientos 'vendeconsolas' y la imposibilidad de transmitir la sensación 3D a través de anuncios y reviews. Es decir, para poder experimentar la principal característica de la consola, era necesario tener acceso físico a una y probarla 'con tus propios ojos'.

    Con el tiempo la consola bajó de precio (en un movimiento sumamente agresivo por parte de Nintendo), el catálogo mejoró y comenzó a atraer el interés de los videojugadores y desarrolladores. Entre los desarrolladores podemos contar a la 'scene', que se trata de desarrolladores que generan aplicaciones 'hechas en casa'  (homebrew). La scene siempre tiene que lidiar con los sistemas de protección de los aparatos que impiden la ejecución de código arbitrario. Para poder sortear ese obstáculo se debe recurrir a brechas de seguridad en el software y/o el hardware de la plataforma objetivo.

    Cuando hablamos de código arbitrario nos referimos a cualquier programa, sin algún tipo de restricción.

    En el caso del 3DS, el primer frente de entrada de la scene fue a través de las Flashcard. Son dispositivos similares a las tarjetas de juego que emplea la consola, con la ventaja que permiten colocar un programa arbitrario para que sea ejecutado por el sistema. Dicho programa puede ser una aplicación homebrew o la copia de un título lanzado para la consola.

    La desventaja de emplear una Flashcard radica en su costo relativamente alto y la relativa dificultad para conseguirlas, debido a que en varios lugares su venta se encuentra restringida (ya que facilitan la piratería).

    Después de algún tiempo se fueron encontrando otros puntos de entrada (entrypoints) que permiten ejecutar código arbitrario en la consola, algunos aprovechan errores en algunos juegos (Cube Ninja y The Legend of Zelda Ocarina of Time), otros utilizan errores en los módulos NDS del firmware (MSET), mientras los más difundidos aprovechan vulnerabilidades en el navegador de internet (Spider/Browserhax) o en el propio menú de la consola (Theme/Menuhax).

    Cada uno de estos entrypoints funciona en un rango determinado de versiones de firmware, ya que Nintendo trata de cubrir vulnerabilidades con cada nueva versión de sistema. Asímismo cada entrypoint tiene distintos grados de acceso al sistema y taza de éxito. Entre los más estables están el MSET y el Menuhax, mientras que Browserhax es de los menos estables.

    Cuando su servidor compró su 3DS el firmware más actual era la versión 9.2, el cual tenía la vulnerabilidad Browserhax que permitía ejecutar las herramientas de la Flashcard Gateway. Gracias a esas herramientas es posible crear una EMUNAND y hacer downgrade (bajar la versión del sistema) a la versión 4.5. En la versión 4.5 se puede emplear el MSET (un entrypoint muy estable) para ejecutar un Custom Firmware (CFW).

    Antes de avanzar más en este debraye aclararé algunos términos, ya que una de las peculiaridades de la scene de 3DS con respecto a otras es la cantidad de variantes que hay en cada configuración. En contraste la scene de PSP no tiene muchas variantes, en la actualidad (fin de la vida comercial de la consola) sólo existen dos variantes de CFW (PRO y ME), las cuales difieren en muy pocas funcionalidades.

    En el caso de la 3DS los CFW recurren al uso de la llamada EMUNAND. Se trata de una copia de la memoria interna de la consola que se aloja en una tarjeta SD. Esta copia del sistema no realiza las verificaciones de seguridad que se realizan en la memoria del sistema (SYSNAND), por lo que en ella se pueden instalar y ejecutar una amplia gama de aplicaciones. Al ser una copia de la memoria de sistema, no es posible intercambiar EMUNANDs entre distintas consolas (no funciona).

    Es decir, en las versiones de sistema 4.5 ~ 9.2 los CFW funcionan de la siguiente forma:

    • Se crea una copia de la memoria de sistema en la tarjeta SD.
    • Se copian los ejecutables del CFW en la memoria y se establece el entrypoint que se empleará para arrancar del CFW, ya que dependiendo del entrypoint dependerá también el formato de los ejecutables que se empleará.
    • Al arrancar el CFW comenzamos a utilizar el sistema almacenado en la EMUNAND, sobre el cual podemos hacer todas las modificaciones pertinentes y ejecutar código arbitrario.
    • Al apagar o reiniciar la consola la SYSNAND vuelve a tomar el control, por lo que el CFW no es permanente.

    Cuando adquirí mi 3DS realicé los pasos para bajar la versión de sistema a 4.5 y utilizando el MSET (aprovechando que cuento con una Flashcard R4i) arrancar el CFW. Primero utilicé el CFW Palantine, posteriormente el rxTools 2.5.

    A pesar de que las cosas funcionaban bien, me parecía engorroso todo el proceso de arranque del CFW, inyección del FBI (aplicación para instalar paquetes en la consola) y la propia instalación de juegos. A mi parecer todo se sentía como un entorno improvisado.

    Por un buen tiempo dejé de lado todas las noticias relacionadas a la scene del 3DS, el desarrollo de nuevos exploits, el Homebrew Launcher (HBL) y del lanzamiento de nuevos juegos. Inclusive dejé guardada la consola por un largo periodo de tiempo.

    Sin embargo, mi amigo MagmaD un día me preguntó ¿Te aventarías a hacerle el Hardmod a mi 3DS? A lo cuál respondí inmediatamente... ¿Hacerle al 3DS qué?

    Entonces me enseñó un video autoría de Yakara Colombia (quien al parecer en realidad es un Link de peluche) donde se explica cómo soldar un conector de tarjeta SD a la tarjeta lógica de un 3DS para poder conectarlo a la computadora, extraer el firmware, aplicarle unos parches y volver a inyectar el firmware en la consola para poder ejecutar un exploit para bajar la versión a la 9.2 (y poder ejecutar CFW). Esta adaptación es llamada Hardmod y permite leer y escribir directamente en la SYSNAND de la consola.

    Viendo que el Hardmod es un proceso sencillo (aunque requiere un poco de precisión), me llevé la consola a casa para ponerme manos a la obra ese mismo fin de semana. Realicé todo el proceso de downgrade (versión 10.5 a 9.2 y de 9.2 a 4.5) e incluso preparé la consola para funcionar con el CFW rxTools 2.5 (el que yo usaba) cuando surgió el anuncio más revolucionario de la scene, el Arm9LoaderHax (a9lh).

    El a9lh es un exploit que permite ejecutar código arbitrario (payload) en la 3DS cuando apenas arranca, inyectando código en las primeras particiones del sistema, las cuales son accedidas por el contador de programa (PC) del procesador ARM9 de la consola antes de cargar el kernel. Es decir, posibilita ejecutar el payload antes de que siquiera se ejecute el sistema de la consola. Con este exploit se puede ganar control total de los recursos de la consola.

    El único detalle que dificulta la aplicación de este exploit (que podríamos llamar el exploit definitivo) es que se requiere obtener la clave "One Time Programmable" (OTP) de nuestra consola. La OTP es una cadena binaria que se escribe en el CPU de la 3DS al momento de fabricar el chip (directo en el silicio, antes de encapsularlo como chip). Dicha cadena es una llave privada de encriptación. Se le llama OTP debido a que ese número se emplea una sola vez, es decir, no hay dos consolas con el mismo OTP. Los sectores de arranque de la NAND de nuestra consola se encuentran encriptados con la llave pública que corresponde a nuestra OTP, es por ello que las NAND no se pueden intercambiar entre consolas, pues la llave de desencriptado no coincidirá y la consola no arrancará.

    Debido a que el OTP se encuentra dentro del CPU y no de una memoria externa no volátil, es virtualmente imposible de extraer... A menos que se nos olvide 'cerrar la ventana' y permitir acceso al OTP después de arrancado el sistema. Y precisamente, en las primeras versiones de firmware de 3DS (hasta la versión 3.0) el acceso al OTP no se protegía, lo que nos posibilita leerlo y extraerlo si nuestra consola cuenta con una versión de firmware anterior a 3.0.

    Ese es un obstáculo, pero no es el único. Para bajar el 3DS hasta una versión vulnerable (2.1) necesitamos los archivos del firmware correspondientes a la región de nuestra consola, los cuales "misteriosamente" ya no se encuentran disponibles desde los servidores del Nintendo Update Server (NUS). Además en muchos sitios de la scene está vetado enlazar o proporcionar copias de los archivos de firmware debido a una ambigüedad en la interpretación de las leyes de protección de 'copyright'. Ya que bien es cierto que el firmware de las consolas 3DS es propiedad intelectual de Nintendo (es un código escrito por ellos), para llevar a cabo cada una de las guías o tutoriales se requiere del uso de dichos archivos, por lo que dichos sitios cargan con la responsabilidad de incitar a sus lectores a realizar una descarga privada de dichos archivos y por lo tanto infringen los derechos de copyright de forma indirecta (bajo el término jurídico de "provocación"). Dichas políticas de esas páginas de la scene, por lo que podemos ver no los exime de responsabilidad alguna y por otra parte, incluso complican de forma innecesaria un proceso de por sí laborioso.

    ¿Porqué todo este choro jurisprudencial? Porque para la guía que publicaré a la brevedad, "mi copia personal privada de todos los archivos que empleé en mi consola por un descuido quedará a disposición de internet, ¡Ohh, que descuidado soy! (wink, wink)".

    A la brevedad publicaré dicha guía (ya se encuentra escrita y revisada), la cual detallará paso a paso cómo llevar la consola 3DS (en sus versiones originales, no 'New') del firmware 4.5 a la versión 2.1 para poder extraer la OTP y posteriormente llevar la consola a la versión de sistema 9.2 (compatible con varios entrypoints e indispensable para instalar el a9lh) y la versión de EMUNAND a la 10.6 (la más actual al momento de escribir). También se abordará la compilación del a9lh, la instalación en la consola para finalmente terminar con la consola en versión de sistema 10.6 en modo CFW, con lo que el uso de la EMUNAND ya no será necesario. Los archivos que se anexarán corresponden a los utilizados para consolas de región US.

    Ahh, y antes de que cualquier otra cosa ocurra, aprovecho para aclarar que el objetivo de la guía y el material que se proporcionará, será para que usted, amable lector aprenda el procedimiento y pueda ponerlo en práctica en un objeto de estudio real (consola). Se le suplica a quienes lleven a cabo este proceso que no lo utilicen con el objetivo de fomentar la piratería (la cual daña de forma importante a la industria), sino que lo lleven a cabo como una actividad de aprendizaje.

    El mundo de los videojuegos es muy apasionante no sólo cuando se disfruta de los títulos, sino cuando se estudia y se aprende toda la ingeniería y programación que se emplea para lograr que las plataformas funcionen.

    Estamos en contact!

    jueves, 30 de julio de 2015

    ¿No que no tronabas pistolita?

    Hola, ¿Cómo están? Bienvenidos sean a este, el blog olvidado de los debrayes, la diversión y la emoción de los videojuegos y la electrónica.

    Disculparán la falta de actualizaciones, no me he dado el tiempo de publicar. Hay varias novedades y muchas cosas en el tintero, sin embargo en esta ocasión seré breve.

    En la entrada anterior comenté que después de intentar jugar Gran Turismo con un volante USB para PC y fallar miserablemente en el intento decidí emplear los controles del Xbox 360 en el PS3. Mientras que la PS3 es una consola muy dócil con los periféricos que se le pueden conectar (admite discos duros, controles y accesorios genéricos sin mucho problema), la Xbox 360 es el otro lado de la moneda, ya que es sumamente restrictiva. Los accesorios de XB360 también son restrictivos, pues cuentan con medidas de seguridad en hardware que impiden utilizarlos directamente en otros dispositivos.

    Si bien es posible conectar un control de XB360 a una PC, se requiere de un driver específico para que el control funcione. Si conectamos directamente un control de XB360 a un PS3 notaremos que no ocurre nada.

    Si deseamos disfrutar de la ergonomía de un control de XB360 en un PS3 tenemos algunas alternativas:

    1. Colocar la circuitería de un control compatible con PS3 en la carcasa de un control de XB360. En este vínculo se muestra una guía exhaustiva del procedimiento, el cual implica mucha destreza en el manejo de herramientas manuales, conocimientos básicos de electrónica y bastante dinero, pues implica sacrificar dos controles para obtener uno.
    2. Comprar un adaptador dedicado. Existen adaptadores especializados (siendo los más famosos los de la marca XCM) que permiten conectar controles de PS3 en un Xbox 360 y la inversa. En este video se muestra el funcionamiento de uno de ellos. Estos adaptadores suelen ser caros, pues realizan la conversión de protocolos de forma transparente para las consolas (lo cual requiere circuitería de cierta complejidad).
    3. Usar un adaptador no dedicado. Esta es la opción por la que he optado y que detallaré a continuación, pero antes un poco de historia.

    Cuando contaba con Xbox 360 probé algunos juegos de peleas muy buenos, como Super Street Fighter IV, Blazblue y King of Fighters XIII. Sin embargo el control de XB360 no se presta para ese tipo de juegos, ya que es de dominio público que la cruceta del control estándar tiene muy mala respuesta (lo que derivó en la variante 'Pro' del control) y los sticks analógicos no son sustituto de las palancas arcade.

    En aquella época aún era 'estudihambres' y las opciones económicas eran muy limitadas. Una de ellas era ahorrar dinero y comprar un fightpad marca Madcatz. En ese entonces sólo existían con el decorado de Street Fighter IV y de Street Fighter x Tekken. Como era la época del segundo apogeo de los juegos de peleas, estaban algo caros.

    La otra alternativa que encontré fue comprar un adaptador de controles de PS2 a XB360 y emplear un control del 15 Aniversario de Street Fighter (reseñado acá). Opté por esta última opción, ya que cumplía perfectamente con mis necesidades y además yo contaba con todos los requisitos para emplearlo: un control de PS2, un control alámbrico de XB360 y poco dinero.


    Compré un adaptador similar al de la fotografía. Es un adaptador de marca genérica, que permite 'en teoría' conectar un control de PS2 a PS3/PC/Xbox 360. Para realizar la conexión a una Xbox 360 se requiere de un control alámbrico que nos permita hacer la sincronización entre el adaptador y la consola.

    Ese adaptador fue muy barato (alrededor de 10 USD) y funcionó a la perfección. Para conectar el adaptador a un PS3 se debe colocar la perilla selectora en la posición PS3 y para conectarlo a una PC o Xbox 360 se coloca la perilla en la posición 360.

    Sin embargo no pude darle mucho uso, pues mi Xbox 360 murió al poco tiempo a causa del infame 'Aro rojo de la muerte'. Tiempo después llegó el PS3, sin embargo no empleé mucho este adaptador, ya que prefería jugar los juegos de peleas con los controles de Génesis y el adaptador USB que había hecho meses atrás.

    En todos los sitios que consulté con información respecto a este adaptador la información era consistente. El adaptador puede conectar de forma directa un control de PlayStation 1 y 2 a un PS3; además se puede emplear para conectar un control de PlayStation 1 y 2 a un Xbox 360 si se emplea como 'llave' un control alámbrico de Xbox 360. En todos los sitios se advertía explícitamente que el adaptador NO servía para conectar controles de Xbox 360 a un PS3.

    Sin embargo yo tuve mis dudas de estas afirmaciones ya que para utilizar el adaptador en un Xbox 360 se debían conectar el control alámbrico de Xbox 360 y el control de PSOne o PS2 al adaptador, posteriormente se conectaba el adaptador a la consola. Una vez realizada la sincronización del adaptador era posible desconectar el control alámbrico de Xbox 360 y el control de PlayStation seguía funcionando sin problemas. Si se mantenía conectado el control de Xbox 360 al adaptador, se combinaban los botones presionados en ambos controles.

    Es decir, el adaptador también hacía 'puente' entre la consola y el control de Xbox 360. Aprovechando los resultados de aquella prueba decidí conectar el control de Xbox 360 al adaptador, poner la perilla en PS3 y conectar el adaptador a uno de los puertos USB del PS3.

    El resultado me sorprendió, pues contra todo pronóstico, el control de Xbox 360 funcionó a la perfección en la consola. Incluso juegos 'quisquillosos' como Gran Turismo 5 pueden ser jugados sin ningún inconveniente.

    Quizás esta información ya no sea de mucha utilidad, dado que tanto del XB360 como el PS3 son consolas que ya están un tanto discontinuadas; asimismo estos adaptadores nunca fueron demasiado populares y ya son un poco difíciles de conseguir. Sin embargo siempre es buena idea probar todo lo que podamos, experimentar y es posible que nos llevemos agradables sorpresas. Si algo es posible o imposible no lo sabremos hasta que lo intentemos.

    viernes, 20 de marzo de 2015

    Cumpliendo promesas.

    Hola ¿Qué tal amables lectores? ¿Cómo están?

    Espero que se la estén pasando genial, en muchas partes del hemisferio norte ya se sienten aires primaverales... diluvios primaverales, nevadas primaverales, sequías primaverales, temblores primaverales y muchos otros meteoros primaverales X_x.

    Estamos de regreso a reclamo de nuestro amigo Dark "Shingo" Bandit, quien ha exigido una actualización del blog. Y como un caballero nunca falla a su palabra (pues prometimos actualizar más seguido), acá estamos con una nueva dosis de debraye.

    También prometimos algo acerca de un experimento fallido, así que es hora de contar una historia larga, poco trascendente y un tanto aburrida... (en este momento se escucha cómo el respetable público conocedor abandona el recinto X_x). Bueno, para los que se quedaron en su lugar ahí les va n_n.

    Hace algunos ayeres, su servidor contaba con un Xbox 360 de primera generación en el cuál pudo disfrutar con juegos como Forza Motorsport 3, Bayonetta, KOF XIII y Resonance of Fate. Pues bien, ese Xbox 360 se fue al cielo de las consolas por la infame falla de las tres luces rojas de la muerte (léase con tono macabro).

    Vino una época de crisis y bajos ingresos... bueno, eso no es novedad X_x. Decidí vender ese Xbox 360 por la módica cantidad de $450 MXN (unos 30 USD al cambio) con accesorios incluidos, ya que no contaba con la liquidez para llevarlo a reparar... ni para pagar la renta... ni para dar el gasto... En esa época también tuve que vender otras consolas para superar algunos obstáculos financieros.

    Pues bien, esa época ya ha pasado (recuerden que este blog se escribe a posteriori n_n) y después tuve oportunidad de comprar de nuevo una consola. Debido al mal sabor de boca de la avería del Xbox 360, decidí comprar un PS3, aprovechando las ofertas de "El buen fin". El primer juego que adquirí para el PS3 fue el Gran Turismo 5. Aquí quiero resaltar un punto, Forza Motorsport 3 es mejor juego de carreras que Gran Turismo 5.

    Ya con el PS3 retomé las sesiones de juego en uno de los géneros que más disfruta su servidor y que además considero, es el que exige más al hardware. Un juego de simulación de carreras requiere de un manejo de físicas muy cuidadas, unas gráficas convincentes y una sensación de velocidad que requiere del uso de técnicas gráficas demandantes como el motion blur.

    En lo personal, el diseño del control de Playstation nunca me ha parecido cómodo, pese a su similitud involuntaria y accidental con el esquema del control de Super NES. Por otra parte, el control de Xbox 360 me parece muy cómodo, ergonómico y preciso, debido a su forma, a la respuesta de los gatillos y la forma de los postes de los sticks analógicos.

    Para juegos de conducción, el control de Xbox 360 permite controlar muy bien el freno y el acelerador con los gatillos, mientras que con el control DualShock (que no cuenta con gatillos) se pierde un poco de precisión aunque se gana en velocidad de respuesta de los botones.

    Debido a que la experiencia de juego con el Gran Turismo 5 no era del todo satisfactoria por causas achacables al control, decidí probar alternativas. Compré un viejo volante para computadora USB, el cual fue reconocido por la consola y el juego, pero el mapeo no era el correcto, por lo que no era posible siquiera escoger las opciones del menú.

    Debido a que ya había desarrollado algunos adaptadores USB con el mapeo correcto para su uso en el PS3, decidí probar suerte y hacer una reimplementación del circuito del volante con un ATMEGA48. Debido a que el volante no cuenta con cruz direccional  ni suficientes botones, decidí integrar en el diseño un adaptador de control de SEGA Genesis. Después de probar el circuito en la PC de forma satisfactoria fue momento de conectarlo al PS3 y probarlo con el juego de Gran Turismo 5.

    En un principio todo parecía funcionar adecuadamente, pues era posible desplazarse por los menús con el control y con las direcciones del volante. Sin embargo al iniciar una carrera, sólo respondían los botones de pausa y de aceptar. Aún si se mapeaban funciones como el acelerador o el freno en dichos botones, el juego no respondía de la forma deseada.

    En un principio atribuí la falla a que el circuito no trataba de emular un control de PS3, por lo que procedí a investigar un poco al respecto. A pesar de que el PS3 acepta controles USB estándar para PC, sólo si el control cuenta con ciertas características se puede activar el botón PS (botón 13 del descriptor) y la detección de presión (valores analógicos) en los botones.

    Una de esas características es enviar una cadena de bits después de iniciar la comunicación entre el control y la consola (los llamados "magic bytes") y la otra es que el descriptor del dispositivo lleva una estructura particular.

    Se trató de replicar ambas condiciones con la biblioteca V-USB, y las primeras pruebas fueron satisfactorias, pues fue posible desplegar el menú que se activa al presionar el botón PS. Sin embargo, el Gran Turismo 5 se volvió a negar a funcionar.

    Es por ello que considero que este experimento es fallido. A pesar de ello les comparto el archivo que contiene el programa del intento. Este programa puede servir como base de algunos proyectos, como un adaptador de controles de SEGA Genesis a PS3 (PORTB), o como base de un emulador de control, pues puede tomar valores analógicos para los ejes XY a través del convertidor analógico/digital (PORTC) e incluso una parte del proyecto puede servir para leer arreglos matriciales de botones por multiplexado (PORTD).

    A la fecha desconozco el porqué el circuito es rechazado por el Gran Turismo 5 (y sólo por ese juego, inclusive es posible jugar Tekken Tag Tournament 2 con el volante X_x), aunque sospecho que el juego hace verificaciones más exhaustivas de las características del control. Tengo pendiente probar en otros juegos de carreras, esperemos que la liquidez en próximas fechas permita comprar algún título a precio competitivo.

    A pesar de esos problemas, actualmente puedo jugar Gran Turismo 5 de forma tan cómoda como lo hacía con Forza Motorsport 3... con un control de Xbox 360 n_n.

    Mas detalles de eso en próximas entradas, así sólo queda decir ¡Estamos en contact! y muchas gracias.

    lunes, 9 de febrero de 2015

    Volviendo a las andadas.

    Hola ¿Que tal? Espero que se la estén pasando muy bien en este inicio de año. Acá estamos de nuevo en nuestro blog, para retomar como se debe las sesiones de debrayancia (que su servidor ha echado mucho de menos X_x).

    Se han estado cocinando varias cosas en el laboratorio, por lo que tendremos actualizaciones a un ritmo más regular. Entre ellas está un prototipo fallido de conexión USB que emplea unos "misteriosos números mágicos" y un descriptor de dispositivo de 13 botones. Quizás ya se imaginen de que se trató, y si no, en la próxima entrada (prometido) les acercaré los por menores y por supuesto, código fuente y diagrama.

    La entrada del día de hoy la dedicaremos de nuevo (si de nuevo X_x) a los 8 bits de Nintendo. En la entrada pasada "famicloneamos" un NES perfectamente funcional. Pues bien, el experimento no paró ahí y "tomando como inspiración" (es decir, fusilándonos la idea) una de las entradas del blog de 133MHz decidimos hacer lo propio con el Inteltron 7000. Aprovechando que el Inteltron 7000 también tenía el PPU y el CPU montados en zócalos, sólo era cuestión de desoldar los circuitos del NES y sustituirlos por los de algún famiclón.

    Debido a que no cuento con una pistola de aire caliente, se tuvo que recurrir a un cautín de lápiz para retirar los chips "a mano". La labor fue ardua pero al parecer fue exitosa, pues al probar el Inteltron con sus nuevos circuitos se notó una mejora notable en el audio y en los colores de los juegos.

    Para que el NES no quedara "inservible", decidí colocarle los chips de mi primer famiclón, los cuales ya había desoldado con anterioridad. Para probar el NES le coloqué el juego de Super Mario Bros 2 y al corroborar que la pantalla de inicio aparecía sin ningún glitch, decidí dar el trabajo por terminado y guardarlo.

    Así transcurrieron algunos días, hasta que decidí donar el NES a mi amigo Dash "Shingo" Bandit, ya que él tiene un aprecio muy fuerte por las consolas y aparatos "vintage". Sin embargo, cuando se decidió a probar algunos juegos notó que la consola generaba unos errores muy extraños. Todo parece indicar que la placa del NES no soportó de muy buena manera la extracción de sus chips X_x. El único consuelo es que Shingo tiene otros NES, en los cuales puede emplear partes y refacciones.

    Hace algunos meses su servidor compró un famiclón descompuesto, que tenía como peculiaridad el contar con conector para cartuchos de Famicom (60 pines) y conector para cartuchos de NES (72 pines). Ese famiclón mostraba errores gráficos, atribuibles a fallas en la PPU o en la SRAM de video. Reparar ese famiclón no resultaba práctico, pues se encontraba montado en una sola placa de circuito, de doble cara y con una distribución de componentes muy densa (lo que hacía casi imposible retirar un componente sin dañar otro). Decidí sacrificar ese famiclón, en aras de conseguir el conector de 72 pines.

    Recientemente compré un lote de "chacharas", entre los cuales venían unos famiclones más recientes en perfectas condiciones de funcionamiento. Con tantos materiales a disposición, era sólo cuestión de tiempo antes de que decidiera emprender otro de esos proyectos laboriosos que se traducen en algo poco productivo (que son tradición en el blog X_x).

    Uno de los santos griales del coleccionismo de consolas NES lo representa el NES 2 (también conocido NES Toploader). Se trata de una implementación del NES que Nintendo lanzó cerca del final del ciclo de vida de la consola. Debido a que la fama de la consola ya se encontraba consolidada en el mercado occidental, Nintendo pudo prescindir del diseño tipo "reproductor de video" y pudo lanzar una reedición con un diseño más estilizado y acorde a un sistema de videojuegos. Funcionalmente hablando es muy similar a una NES de primera edición, sin embargo tiene algunas diferencias como la ausencia de la salida de video compuesto y del chip 10NES, así como el cambio del conector ZIF por un conector convencional de filo.

    Sin embargo, conseguir un NES 2 a precios competitivos es muy difícil. En sitios de ventas por internet suelen tener valores por encima de los de un Wii, un N64 y un Gamecube... ¡Juntos! Sin lugar a dudas se trata de una inversión poco inteligente.

    Sin embargo, es muy práctico poder cargar los cartuchos por la parte superior de las consolas, tanto así que es prácticamente la forma estándar en todas las consolas (con excepción de la primera edición del NES). En internet hay personas que han realizado distintas implementaciones de NES con carga de superior o lateral empleando conectores de filo. Algunos ejemplos notables podemos verlos en este video, en esta página y en esta otra. En el video podemos apreciar como puede convertirse un NES de primera edición a "Toploader" realizando un rediseño completo de la consola. Sin lugar a dudas el resultado es muy llamativo. En la segunda página podemos ver una reimplementación del NES, lo cual es un acercamiento aún más radical, pero más laborioso y costoso. En la última página podemos ver cómo se puede hacer un NES Toploader empleando un conector de 72 pines y un famiclón NOAC.

    Una opción rápida y directa para emular la funcionalidad de un NES toploader es comprar un adaptador de cartuchos de NES a Famicom. Sin embargo esa solución es algo extraña, pues el adaptador y el cartucho sobresalen demasiado del cuerpo de la consola, además de que el cartucho de NES queda viendo "hacia atrás", es decir, la etiqueta del cartucho queda hacia la parte posterior del famiclón, lo que se ve extraño.



    Aprovechando el conector de 72 pines que extraje y uno de los famiclones NOAC decidí implementar una solución similar a la del "instructable". Monté el conector de 72 pines en una placa de prototipos y le soldé los cables necesarios.


    Posteriormente retiré el conector de 60 pines del famiclón y le alargué los cables que conectan la placa de los controles y de las salidas de AV a la placa principal. Luego soldé los cables del conector de 72 pines a las terminales que alojaban al conector anterior.


    En este punto quise realizar una corrección y dañé una de las pistas del circuito impreso X_x. Por fortuna fue posible reparar la fractura con un alambre calibre 28. La línea dañada fue la denominada CIRAM A10. Cuando la línea se encontraba cortada la resolución horizontal del juego se reducía la mitad, lo que hacía que los juegos funcionaran, pero se vieran muy extraño.

    Posteriormente extendí un poco la apertura superior de la carcasa del famiclón, para que fuere capaz de alojar un cartucho de NES. Una vez que todo quedó en orden, fue momento de cerrar la carcasa y probar el experimento con los dos únicos juegos de NES con que cuenta su servidor n_n.




    Este ha sido otro de esos proyectos que terminan siendo realizados por capricho de su servidor. La imagen de estos famiclones NOAC es muy buena, el audio es mejor que en los famiclones antiguos (también llamados "de chips") sin llegar al nivel del obtenido con el 2A03 (CPU original del NES). La ventaja de contar con un Famiclón toploader para cartuchos de NES es que mientras el conector no se estropee, las refacciones para la consola se encuentran con mucha facilidad y a precios muy bajos. Esta implementación costó menos del 5% del precio de un NES 2 en el mercado, además de que le ayudó a su servidor a elevar su ego y su confianza en sus habilidades manuales n_n. Y si bien es cierto que juegos como Castlevania 3 o Kirby's Adventure no funcionarán, lo cierto es que son juegos sumamente caros que muy probablemente su servidor no tendrá siquiera oportunidad de poseer en formato físico.

    Bueno, con esto hemos iniciado las dosis de debraye de este año 2015. Actualizaremos más seguido, así que ¡Estamos en contact!

    Dell Latitude D610 SATA mod

    Hola, ¿Cómo han estado?  Bienvenidos sean de nuevo a este espacio, el blog dedicado al debraye, las malas ideas y los proyectos más imprácti...