Mostrando entradas con la etiqueta nintendo ds. Mostrar todas las entradas
Mostrando entradas con la etiqueta nintendo ds. Mostrar todas las entradas
TOP

NDS Save Backup - Progreso

-¿Qué es el NDS Save Backup? 
Es un dispositivo (que será Open Source Hardware) controlado por un microcontrolador PIC 18F4550 para extraer partidas guardadas de juegos de DS y 3DS al PC mediante USB.

Fig.1.: NDS Save Backup en fase de desarrollo

-¿Cuál es el estado actual del NDS Save Backup?
Actualmente puede extraer partidas de juegos de DS con EEPROM (los juegos de 3DS con EEPROM no los he probado, pero puede que también  extraiga las partidas ya que posiblemente utilice los mismo comandos).


-¿Qué es lo que falta para que esté terminado?
Falta implementar el método de extracción de partidas de juegos de DS/3DS que utilizan Memoria flash como método de almacenamiento, y  un método de escritura de partidas de juegos de DS/3DS en memorias EEPROM y memorias flash.

•El hardware
Los materiales que componen el hardware están pensados para que cualquiera los pueda adquirir y pueda construirse su propio  NDS Save Backup compuesto por un PIC 18F4550, una ranura de Nintendo DS*, condensadores, resistencias, un oscilador, etc.

*Nota: La ranura o slot de Nintendo DS se puede adquirir en Dealextreme por un precio de 2.10$

•El software:
La aplicación que se comunica con el PIC 18F4550 está escrita en VB.


Fig.2.: Aplicación NDS Save Backup 


Como dije en unas entradas atrás de este blog, el código del programa, del PIC y los esquemas del circuito del NDS Save Backup los subiré cuando lo tenga terminado al 100%.  Si alguien está muy interesado puedo subir más adelante la aplicacion ya compilada, el .hex del PIC y un esquema del hardware.

Si quieres estar al tanto sígueme en mi Twitter: @Nitehack

¡Un Saludo!


TOP

El logo de Nintendo - Game Boy

De esto que llegas un día y no sabes cómo pero te topas con este vídeo:




Acostumbrado a ver el mítico startup de Game Boy con el logo de Nintendo, me entró la curiosidad y me puse a investigar sobre esto.

Startup Nintendo Game boy


Las compañias mayoritariamente tailandesas que fabricaban videojuegos no tenían licencia, y para publicar sus juegos y no infringir los derechos de copyright hacían su propio logo y se las ingeniaban para saltarse la protección del logo (en la Game Boy para cargar un juego se leía la cabecera de este, comprobaba si el logo de Nintendo se había modificado y en caso de modificación el juego no arrancaba).

Estas empresas conseguían eludir este sistema porque en game boy se leía dos veces el logo: una vez para mostrarlo en pantalla y otra para compararlo con el logo interno de la consola, unos mediante hadware (como habéis podido ver en el vídeo que en puesto al principio del post) y otros haciendo una redirección en la misma ROM a la dirección 0108h donde se alojaba el modificado y la segunda vez que leía el logo lo hacia en la dirección original 0104h. (El logo ocupaba 48 Bytes)

En Game Boy Color a diferencia de su antecesora comprobaba solo la mitad de los Bytes.
En este video de un juego tailandés de GBC se puede observar como se las han ingeniado para cambiar "Nintendo" por "Niutoude" aprovechando que solo comprueba la mitad del logo



Después de investigar cómo cambiaban el logo me puse  con el editor hexadecimal a ver el logo de Nintendo.
Si con un editor de hex vamos de la dirección 0104h a la 0133h ahi estará el logo en hexadecimal que es el siguiente:
CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D
00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99
BB BB 67 63 6E 0E EC CC DD DC 99 9F BB B9 33 3E 
Si tenemos a mano la imagen del logo original nos daremos cuenta de que 48 bytes no nos dan para los  1664 pixeles (104x16), ni a un bit por pixel. Esto es porque para representar la imagen se utilizan bloques de 2x2 pixeles y el logo de marca registrada  (®) no esta incluido en ese código. Y ahora si hacemos cuentas si nos dará 1 bit por 1 pixel.


Si ahora tratamos de representarlo usando el 0=blanco y 1=negro nos saldrá una cosa que no se parece en nada al logo. La explicación de esto es porque el logo está codificado, alterando el orden de los nibbles (4 bits).

Gracias a un código en python de un usuario llamado codeman38  que publicó  un comentario en esta web http://fuji.drillspirits.net/?post=87 averigüé el proceso para decodificar el logo de Nintendo:

1º Se divide el hex en grupos de 4 bytes y se reordenan de la siguiente manera: El primer grupo serán los primeros 4 bytes del código, el segundo los primeros 4 bytes de la mitad del código, el tercero los siguientes cuatro bytes  del principio del código, el cuarto los siguientes cuatro bytes de la mitad del código, etc. Es decir vamos alternando los grupos de 4 bytes siguiendo el orden del principio y por la mitad del código.

2º Se agrupan en pares de bytes y se combinan entre ellos de la siguiente forma (una imagen vale más que mil palabras) :




3º Nuestras filas serán  las columnas de pixel de la imagen (en el caso de que se haya reordenado como la siguiente imagen), por lo que cambiamos las columnas por las filas y, ¡ya tendremos el logo decodificado!



Ahora si, nuestro código pasado a binario será 0=blanco y  1=negro.
Sabiendo ya esto podríamos hacer nuestro propio logo personalizado para algún juego de GB o GBC.

En el caso de Game Boy Advance y Nintendo DS se sigue comprobando el logo, pero este se encuentra en la dirección 004h, ocupa 156 Bytes y está comprimido en Huffman.

Y esto es todo por hoy. ¡Espero que les haya gustado el post!

TOP

Manera teórica de ampliar la Memoria Flash de la Nintendo Ds Lite

Antes de nada quiero decir que no lo he probado ya que no tengo ninguna DS lite propia para modificar( las que tenia las vendí :P) y debido al poco tiempo que me deja la facultad -.- (Por eso he puesto de título Manera "teórica"), en cuanto consiga una probaré a ver si resulta, pero para los aventureros os dejo como hacerlo.

La consola Nintendo Ds Lite de Nintendo tiene una memoria flash de 256 KBytes. Esta memoria resulta pequeña para muchos programadores que quieren hacer un custom firmware para esta portátil, ya que el firmware de la DS está guardado en esta memoria, y esto se refleja en los pocos custom y un poco pobres que han creado algunos coders como:

-FWNitro

-CreeboMe (por Creebo)

Es por ello que pensé en ampliar esta memoria y la única forma es sustituyendo la misma por una de mas capacidad pero antes había que localizarla y estudiarla.

La memoria flash de la Nintendo Ds Lite se encuentra detrás de una plaquita de metal del módulo wifi de la consola.

La memoria flash es una ST M35PE20 de la empresa ST Microelectronics, con ocho pines:

 

1.

D

Entrada de datos serie

2.

C

Reloj serie (máx 25MHz)

3.

/RES

Reset

4.

/S

Selección de Chip

5.

/W

Protección de escritura (hace las 256 páginas primeras de solo lectura)

6.

VCC

Fuente (2.7V..3.6V typ) (4V máx) (DS:VDD3.3)

7.

VSS

Tierra

8.

Q

Salida de datos serie

 

La memoria está formada por 1024 páginas de 256Bytes cada una. Cada dirección contiene un Byte de datos. Esta organizada en 4 sectores (de 64 KBytes cada uno):

Sector

Rango de direcciones

3

30000h

3FFFFh

2

20000h

2FFFFh

1

10000h

1FFFFh

0

00000h

0FFFFh

Y así está distribuido el Firmware en la memoria:

00000h-00029h

Cabecera de Firmware

0002Ah-001FFh

Configuración Wifi

00200h-3F9FFh

Código/Datos del Firmware

3FA00h-3FAFFh

Punto de Acceso Wifi 1

3FB00h-3FBFFh

Punto de Acceso Wifi 2

3FC00h-3FCFFh

Punto de Acceso Wifi 3

3FD00h-3FDFFh

Zona no usada

3FE00h-3FEFFh

Área 1 de configuración de Usuario

3FF00h-3FFFFh

Área 2 de configuración de Usuario

Y esto es todo de manera general sobre la memoria flash que tiene la Nintendo Ds/ lite.

Ahora deberíamos de buscar una memoria flash que fuera compatible y por supuesto con una capacidad mayor :D.

No sé si sabréis pero en china se lanzó la Nintendo Ds lite con el nombre de iQue DS lite con el doble de capacidad de memoria flash (512KBytes), asi que si tuviéramos una solo habría que extraer el modulo wifi de la consola y ponerlo en nuestra DS. Pero esta consola resulta difícil de conseguir.

Buscando y buscando una memoria de las mismas características encontré una memoria con el doble de capacidad (512 KBytes) y del mismo fabricante (ST Microelectronics):

M25PE40. Es decir la misma memoria flash que lleva la iQue DS por 2 €.

Por si a alguien le interesa esta es la web donde la pueden comprar--> Pinchar Aqui

Esta memoria flash tiene distribuidos los pines de diferente forma:

Nota: TSL (Top Sector Lock) es igual que el pin /W

Por lo que tendríamos que utilizar cables para soldarlos a sus respectivos puntos de soldadura.



•AHORA PASAMOS A LA PARTE PRACTICA:

Antes de nada: NO ME HAGO RESPONSABLE A LO QUE LE PUEDA PASAR A TU CONSOLA AL REMPLAZAR/INSTALAR LA MEMORIA.

No lo he probado, no sé si el hecho de que, la memoria que cité antes, acepte una frecuencia más alta de reloj, funcionará : / . Pero teniendo una memoria flash con las mismas características excepto una capacidad más grande debería de funcionar teóricamente.

El remplazo de la memoria flash tiene una dificultad Media-Alta, ya que requiere el uso del soldador y saber soldar componentes SMD.

Bueno comencemos :

Materiales Necesarios:

-Soldador de punta fina (fina me refiero a 1,5 mm o menos si es más gorda no pasa nada pero te costará mas trabajo)

-Estaño

-Cables wrapping (Solo en el caso de que los pines de la memoria que hemos comprado estén distribuidos de diferente forma a la que están los que tiene la memoria que trae la DS)

-Memoria Flash (Con las características citadas antes)

-Destornillador Triwing y destornillador de punta chica de estrella

-Recomendado:

Pistola de calor : para desoldar la plaquita que protege la memoria y la misma memoria, aunque sin pasarse con la temperatura ni de tiempo. Con el soldador mismo se podría desoldar pero con un poco más de trabajo.

Tutorial:

1º Antes de nada tendremos que desmontar la Nintendo DS. Si no sabes cómo en youtube hay muchos videos de cómo hacerlo, solo habría que quitar la carcasa trasera.

2º Una vez ya con el esqueleto de esta portátil, retiramos el módulo Wifi que se sitúa a la derecha del slot 1 de juegos.

3º La siguiente parte seria desoldar la plaquita de metal que protege la memoria en el modulo wifi.

Solo hay que quitar la placa que está por la parte del conector. Tiene cuatro puntos de soldadura como se puede observar:

4º Una vez quitada la plaquita toca desoldar la memoria flash. Aquí cada uno que utilice sus trucos y técnicas para desoldarlo. Hay una pasta que es ideal para desoldar los micros, pero ahora no recuerdo su nombre.

5ºAhora toca soldar la memoria flash que hemos comprado al modulo wifi. Para ello si los pines no están organizados igual que la memoria original habría que usar cables para soldarlos en su sitio.

6º Y finalmente volvemos a soldar la plaquita (aunque no es realmente necesaria) y volvemos a conectar el modulo wifi y a montar la DS.



Pero una vez hecho todo esto hay que flashear la memoria para instalarle el firmware original de la Nintendo DS o el nuestro propio.

El objetivo de este tutorial es para que los programadores que quieren hacer un custom firmware para la Nintendo DS y no puedan disfrutarlo en sus DS debido a la poca capacidad de esta, puedan.

La gente que piensa que con las flashcart este tutorial es inútil no han pensado en las posibilidades de aumentar la memoria flash a esta portátil.