Prototipado de Sistemas Empotrados Primavera ‘08 Índice ! " # # # ( ( $% & '% $) *+ - !) . % ! ! - / '0) 1 ) ) '0) ! )4 + / 23 23 23 23 5! 26 !* 5 1 26 26 26 27 27 ) 8 )9 !:) 2 8 )9 ; 9 8 )9% %) <) ! $) )9 2 2 2 2 =-* 1 2# > )) ) ) + % % + ? # 2# 2# 2# 2# 2, $ = 8+ 5&% 6 2 + 0@ 6 2 6 2 6 7 8+ 5&% % &' , , " + 6 7 6 7 ( Introducción Todo comenzó en mayo del 1972 cuando el señor Ralph Baer sacó por primera vez al mercado una videoconsola, con la que muy pocos privilegiados pudieron disfrutar de ella. Hoy en pleno siglo XXI somos casi incapaces de contar el gran número de modelos que han ido saliendo al mercado durante estos 36 años y que hoy en día están al alcance de casi todos aquellos que viven en países desarrollados. Dentro de todos estos modelos que han marcado la vida de muchas generaciones se quiere presentar uno de los modelos más sofisticados y novedosos de la actualidad. Hablamos de la Nintendo DS, una videoconsola completamente diferente a lo que estamos acostumbrados a ver. Tras estas líneas vais a encontraros todos y cada uno de los detalles que hacen falta para conocer a fondo este singular aparato. Con este trabajo de documentación queremos acercaros a todas aquellas dudas o intereses que surgen cuando tenemos entre nuestras manos una Nintendo DS. Nindendo DS Nintendo, una compañía veterana de Consolas que ha liderado el mercado mundial por tradición con su famosa GameBoy, fue evolucionando su gama con productos como GameBoy Color, GameBoy Adavance SP y GameBoy Micro, sin embargo, la competencia de Sony con su PSP provocó un pequeño declive en el mercado. Reaccionando, Nintendo ideó Nintendo DS, mejorando en precio y características a su competidora de Sony. Hardware DS ha intentado innovar con apuestas en su hardware, como su pantalla táctil y el lápiz "Stylus", que intentan que el público pueda vivir nuevas experiencias gozando de la tradición de algunos de sus juegos estrella (Zelda, Metroid, Pokemon, Castlevania, Mario Bross,etc). Fijándonos en el hardware de la consola, esta consta de las siguientes partes: Capacidad de almacenamiento: 256 KB de Serial Flash. Tamaño: 14,86cm x 8,46cm x 2,87cm Comunicación inalámbrica: Compatible con 802.11 y protocolo propio (cifrado con RSA). En muchos casos, varios jugadores pueden participar en la misma partida modo multijugador utilizando un solo cartucho. Pantalla superior: Pantalla TFT/LCD reflectora semitransparente a color de 3 pulgadas (62 x 46mm y diagonal de 77mm), con luz incorporada, resolución de "256x192" píxeles y 0.24mm de tamaño de punto Pantalla táctil: TFT/LCD del mismo tamaño que la superior y separada de esta 21mm (equivalente a 92 líneas no visibles). Tiene una película sensible al tacto resistiva que detecta presiones y capacidad para mostrar 260000 colores. Wi-Fi: (802.11b). Adaptador incorporado 802.11 Controles: Pantalla táctil, micrófono incluido para reconocimiento de voz, botones A,B,X,Y, más pad de control, botones laterales L/R, botones Start y Select. Las dos pantallas de la NDS Táctil Entrada/salida: Puertos para cartuchos de juegos de DS o para juegos de Game Boy Advance y entrada para auriculares estéreo y micrófono. Las dos pantallas de la NDS CPU: Dos procesadores ARM, el principal es un ARM946E-S de 67 Mhz, ARM7TDMI de 33 Mhz como coprocesador. RAM: 4 MB. Tensión de alimentación: 1,65 V. Micrófono de la NDS Sonido: Posee dos altavoces/parlantes estéreo que pueden proporcionar sonido virtual surround dependiendo del software. lighting, transform textura-coordenada 3D, síntesis de textura, alpha blending, antialiasing, Cel shading, y z-buffering). Batería: Batería de ión litio que proporciona entre 6 y 10 horas de juego (en función del uso) tras una carga de 4 horas; modo sleep para ahorro de energía; y un adaptador AC. Altavoz de la NDS Controlador de vídeo: Posee una memoria de 512 KB. Es capaz de realizar operaciones 3D por Hardware (transform and Otras características: Software PictoChat incluido en la consola y que permite a un máximo de 16 usuarios chatear simultáneamente entre sí. Reloj a tiempo real incluido con alarma de fecha y hora. Frontal de la Nintendo DS Dorso de la Nintendo DS ( Hacking DS Como todo artilugio tecnológico sofisticado, una Nintendo DS posee muchas similitudes con otros dispositivos del mercado, procesadores ARM7 y un ARM9, de WIFI, soporte inalámbrico mediante Wi-Fi, una pantalla táctil, todos estos elementos le hacen ser muy susceptible al mundo del hacking. Si queremos introducirnos en el mundo del homebrew para ésta consola, hay muchísimas herramientas de software libre como emuladores, librerías, IDEs, tarjetas Flash que nos pueden ayudar en el camino. Hemos realizado una búsqueda de las posibilidades que nos ofrece el homebrew de DS actualmente, intentaremos nombrar las más interesantes para que veamos por donde se mueven las comunidades, y que se puede llegar ha hacer con una Nintendo DS. iPod DS iPod DS es un software para la consola Nintendo DS que nos permitirá reproducir archivos de audio. Lo curioso de este software es que imita de una forma muy realista el funcionamiento y modo de uso de un iPod. Esta aplicación nos permite ver en la pantalla superior de la Nintendo DS lo equivalente a la pantalla del iPod mientras que en la pantalla inferior tendremos la rueda de control que, al igual que en el iPod, es táctil. fases de su desarrollo y tan sólo es una versión beta muy inestable con carencias. Por ejemplo, vemos que no soporta piezas de software básicas como los Applets de Java, flash ni documentos en PDF. De momento, la versión que podemos descargar cuenta con dos modos de navegación, la opción de zoom (en la pantalla superior veremos a mayor tamaño lo que hayamos decidido ampliar en la táctil), el uso de favoritos, la posibilidad de escribir la url directamente en la pantalla táctil con el stylus. Sin embargo, este proyecto todavía tiene mucho que mejorar, por un lado posee numerosos bugs y por otro tiene carencias como la reproducción de video y visualización de fotos que si incorpora el iPod comercial. Versión Beta de Opera DS DSlinux NDS ejecutando iPod DS Opera DS Opera DS es un navegador elaborado por Opera que tiene como finalidad permitir la navegación Web en la Nintendo DS. Este proyecto, aunque parece una buena idea, todavía se encuentra en las primeras DSLinux es un proyecto para poder ejecutar Linux en una consola NintendoDS con la meta de poder usar todos los componentes hardware de la consola con un sistema operativo libre. Actualmente, el proyecto ha conseguido bootar el sistema operativo y se pueden usar casi todo el hardware de la consola ) (pantalla táctil, altavoces, wifi…) con todas las herramientas de las que disponemos en Linux. Cabe destacar que DSLinux se puede almacenar de cuatro maneras para usarlo en la consola: en un cartucho GBA Flash (un cartucho de GB Advance regrabable), en una Supercard, en un GBA Movie Player (un dispositivo para ver peliculas en la GBA) o en un M3 (nueva version del GBA Movie Player). Para ejecutar DSLinux hay cuatro metodos: PassMe, WifiMe, FlashMe y NoPass. Para trabajar, tenemos la pantalla táctil de la DS y un teclado virtual que nos permitirá tirar todo el código bash que queramos en nuestra DS. Otros Aquí tenéis un uso realmente útil de su capacidad Wi-Fi: una versión del programa de control remoto VNC corriendo sobre la consola portátil de Nintendo. Lo mejor es que utiliza las dos pantallas: con la de arriba, que muestra pantalla completa del ordenador remoto, se elige la zona que quieres ver en tamaño natural en la táctil. El software, es totalmente casero y se llama PointyRemote. SvSIP Cómo ya hemos comentado anteriormente, NintendoDS soporta Wi-Fi 802.11b, esta característica podría ser utilizada para definir una aplicación que proporcionara vozIP en la consola. De esta forma, mediante la consola, el software adecuado y unos auriculares con micrófono como los de cualquier manos libres de cualquier teléfono móvil, será posible llevar a cabo llamadas de teléfono a través de Internet, y siempre que estemos dentro de la cobertura Wi-Fi. Esta aplicación nos permite, mediante una flashcart y una cuenta SIP, hacer uso de tu Nintendo DS como teléfono VoIP, además, ya se encuentra en su fase final de implementación, por lo que el número de bugs es mucho más pequeña que en la fase inicial de su desarrollo. NDS ejecutando control remoto sobre un desktop Otra utilidad es poder acelerar o retrasar el reloj que la consola trae incorporado. Aunque la idea no parece demasiado brillante por si sola, cambiar la configuración del reloj permite acceder a cuatro velocidades distintas de juego, que varían desde 66x a 1.8x respecto a la velocidad original, y que pueden ser variadas gracias a combinaciones con los botones de la consola. Un led externo indicará en qué modo de velocidad se encuentra la consola. Si seguimos sin verle la utilidad a este hacking, podemos pensar que a diferencia de otras consolas portátiles como la PSP, la DS hace correr los juegos siempre a la misma velocidad. Al acelerar o retrasar el reloj, el juego, consiguientemente, se acelera o se retrasa también, lo que entrega la posibilidad de cambiar la dificultad del título. Un juego corriendo más rápido de lo normal representará un desafío mayor, y viceversa, esto significa nuevos retos para los amantes de la consola de Nintendo. DS Phone * Librería PALib PAlib Nintendo DS es una biblioteca utilizada para crear juegos caseros. Está diseñado para ser utilizado fácilmente por cualquier persona. Organización de la librería La librería PAlib está organizada en diferentes módulos. Dentro de cada uno de ellos encontramos diferentes funciones respecto al tema del que tratan. A continuación explicamos brevemente el tema de la mayoría de módulos en los que se compone: Módulos Sprite system: Sirve para obtener información del puntero, ya sea su posición, sus antiguos estados, etc. 16color pseudo-bitmap mode: Añadir fuentes personalizadas para el sistema 16cText. Text output system: Obtener salida de palabras en la pantalla de la DS. 3D functions: Inicializar el 3d en la parte inferior de pantalla. Formato básico de un programa PA API functions: Inicializar el sistema API. Debe ser utilizada antes de cualquier uso de la API. Deben estar establecidas en un fondo 8bit. Todo programa creado para la DS ha de tener una estructura mínima para que funcione, que es la siguiente: Large Maps: Cargar e inicializar un fondo infinito, con desplazamiento (útil si el fondo es más grande o mayor que 512 píxeles). Rotating Backgrounds: Cargue un fondo apropiado para la rotación. El fondo tiene que ser en 256 colores. Normal Tiled Background Ocultar una pantalla de fondo. Modes: PA File System: Devuelve un puntero hacia una determinada posición. General Functions: Contiene varias definiciones para establecer el comportamiento de la consola cuando se cierra la tapa o se abre mientras se ejecuta el programa. Keyboard: Inicializar un teclado en un determinado fondo. Key input system: Mover un sprite de acuerdo con la posición del lápiz. Some math functions: funciones matemáticas. Introduce Palette system: Carga una paleta de 256 colores. #include <PA9.h> // Include for PA_Lib // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL // Infinite loop to keep the program running while (1) { PA_WaitForVBL(); } return 0; } // End of main() Este código simplemente incluye e inicializa la librería PALib para poder hacer uso de sus módulos, y por lo tanto de todas las definiciones y funciones que contiene. Además contiene un bucle infinito que sirve para que el programa esté en constante espera de alguna interacción del usuario. Ésta es la estructura mínima de un programa para la Nintendo DS. En el apartado Ejemplos de aplicación encontraremos un par de programas que utilizan algunas de estas funciones de la librería. Herramientas de desarrollo Homebrew Se suele denominar homebrew a las aplicaciones informáticas realizadas por aficionados para plataformas de videojuegos propietarias. En otras palabras, plataformas de videojuegos que no son típicamente programables por usuarios o usan sistemas de almacenamiento propietarios. Los juegos homebrew son creados para ser utilizados con emuladores. En Japón estos juegos son llamados Dojin Soft, que es la manera de decir que este software no es ilegal, en principio, dependiendo del uso que se haga de él. Freeware Definimos Freeware a aquel software el cual se distribuido de manera gratuita y por un tiempo ilimitado. Éste suele incluir una licencia de uso, que permite su redistribución pero con algunas restricciones, como no modificar la aplicación en sí, ni venderla, y dar cuenta de su autor. DevKit También conocido como Kit de desarrollo o Development Kit. El DevKit es un kit de desarrollo (Software Development Kit: SDK). Definiendose como un conjunto de programas utilizados por un programador para desarrollar nuevos programas de aplicación. Normalmente, un SDK incluye un constructor para la pantalla de visualización, un editor, un compilador, un enlazador y a menudo otras utilidades. Desde el punto de vista del desarrollo de dispositivos electrónicos, se define como una herramienta, llamada placa de pruebas, circuito de pruebas o protoboard, con la cual, el usuario, es capaz de hacer pruebas de campo del circuito y de sus funciones. Actualmente existen muchos de estos kits que contienen circuitos integrados programables como PICs y Microprocesadores que se enlazan con otros accesorios dependiendo de la aplicación. Anteriormente estos circuitos requerían de costosos programadores o accesorios para ser programados, pero los más recientes, además de ser más rápidos y pequeños cada día, son capaces de comunicarse con una PC directamente por serial o USB. memoria flash interna regrabable, y eran parte de un kit para desarrolladores que contenía flashcart y un lector-escritor que permitía hacer ROMDUMP de cartuchos originales, es decir, descargar el ROM del cartucho en un PC para editarlo, examinarlo, copiarlo. Y posteriormente cargarlo nuevamente en el flashcart vacío. Nintendo DS Así pues un DevKit para el Nintendo DS comprende ambos aspectos: software y hardware. Aunque la mayoría de estos dispositivos tienen más inclinación hacia el desarrollo de software para aplicaciones o juegos Homebrew por ser el NDS un dispositivo bastante completo en cuanto a hardware, también existen algunos dispositivos como el RoboDS o el DSerial2 más orientados al hardware y al control de dispositivos o adquisición de datos mediante puertos seriales, PWM, convertidores ADC, giroscopios, GPS, etc. Algo bastante interesante para cualquier aficionado de la electrónica. En principio, cuando los devkits se desarrollaban para consolas de cartucho como GBA (gameboy) se les dio el nombre de FlashCarts, ya que eran cartuchos con " DevkitARM DevKitPro es un conjunto de bibliotecas y DevKit que permiten compilar juegos para diversas plataformas, en las que se incluye PSP, GameCube, NDS, entre otras. Dentro de los módulos de DevKitPro encontramos DevKitArm RoboDS, DevKit de hardware Actualmente, una de les principales diferencies entre devkits son respecto al software, básicamente el sistema operativo que ejecuta todas las funciones del devkit que pueden diferenciarse en diseños, interficie del usuario, utilidades incluidas, compatibilidades con las ROMs y aplicaciones Homebrew, etc. Slots La otra gran diferencia es según la ranura o slot que utiliza el del DK para comunicarse con la consola. De manera que podemos dividir los devkits en dos grandes categorías: los que utilizan el SLOT-1 o DS y los que utilizan el SLOT-2 o GBA. SLOT-1 o DS SLOT-2 o GBA $ + Instalación El procedimiento para instalar devKitPro es sencillo, Para empezar seleccionamos los complementos que nos hacen falta para la DS. Básicamente debemos instalar el compilador para la NDS, al que nombramos DevKitArm86 y la librería de PALib para poder trabajar con las funciones propias de NDS. Abajo podemos ver los primeros pasos de la instalación de este kit. caseras a partir de nuestro código implementado sobre el lenguaje de programación C con el soporte de las librerías de DS resumidas en PALib. Ahora ya tenemos DevKitPro instalado, vamos a resumir como usarlo, En primer lugar debemos escribir el código ayudándonos del notepad del kit de desarrollo o de cualquier otro editor de textos. Después podremos compilar este código para obtener los binarios que necesita la DS para ejecutar, también llamados rooms. Como podemos ver a la izquierda. Después de los dos primeros pasos pasos la aplicación se empezará a descargar e instalar. Abajo podemos ver una captura del notepad que viene incorporado en DevKit. Una vez finalice la instalación ya tendremos un compilador para poder crear nuestras rooms Notepad incluida en el DevKitArm $ $ Emuladores Un emulador es un software que permite ejecutar programas de computadora en una plataforma (arquitectura hardware o sistema operativo) diferente de la cual fueron escritos originalmente. Dentro ámbito de los emuladores se encuentran aquellos correspondientes al entorno de la DS, como Nogba, DeSmumE, Dualis, iDeaS o Ensata. DeSmuME DeSmuME es un programa gratuito para Nintendo DS, creado por YopYop156. DeSmuME es normalmente conocido como YopYop DS y está escrito en C++ y nos permite emular software casero y imágenes comerciales de juegos. El emulador se vende en Francés (con traducción en inglés y otras lenguas). Este soporta muchas demos caseras NDS rom así como un manejo de Wireless Multiboot demos nds roms. DeSmuME normalmente puede emular títulos nds rom comerciales con otro DS Emulators como iDeas y Dualis que no son capaces de hacerlo. cargados en la memoria principal en la dirección 0x2004000 y ejecutados. Los formatos de archivos de nds también soportan el código de ARM9 que está cargado en la dirección especificada en la cabecera Interfaz del emulador Dualis La gran diferencia entre estos dos emuladores es que con el emulador DUALIS se puede seleccionar el modelo de Nintendo DS cosa que con el DeSmumE solo emula el último modelo. iDeaS Interfaz del emulador DeSmuME Dualis Dualis es un emulador de DS pluginbased para las computadoras del x86/Win32. Esta escrito en ensamblador x86 y C++. Esta versión soporta ARM9 binario, que están $ El emulador iDeaS es capaz de emular el procesador ARM7 GBA en un 100% (el que utiliza la Game Boy Advance), y el procesador de doble pantalla ARM9 en un 90%. Nogba Nogba es un emulador de Gameboy Advance y Nintendo DS para Windows y DOS, este nos proporciona la posibilidad, como Dualis, de seleccionar el modelo de DS con la que queremos cargar la imagen y ajustar el rendimiento del emulador. A pesar de lo anterior, la principal novedad de Nogba es que nos permite comunicar las consolas con el PC, por lo que puede ser usado para actualizar el firmware de la consola o cargar imágenes desde el pc en nuestra flash card. Interfaz del emulador iDeas Ensata Ensata NITRO Software se desarrollo como una tarjeta Debug para el desarrollo de aplicaciones NITRO. Interfaz del emulador Nogba Interfaz del emulador Ensata $ Cartuchos domésticos Existen dos tipos de cartuchos destinados al software de la consola, dichos cartuchos son un ejemplo más de software casero. Por un lado encontramos un cartucho flash de gba (flashcart), por otro lado tenemos los cartuchos de paso por el slot de la nds y por último los de nueva generación Cartucho flash de gba Dicho cartucho se introduce en el slot de GBA, es aquí donde se almacena la información. Encontramos de dos tipos, de tarjetas (supercard, M3,etc.) y de memoria interna (EzFlash, G6, etc.) los de memoria interna suelen tener una capacidad de 1,2 y 4 Gb y ya lleva la memoria donde almacenar el homebrew y las copias de seguridad. Los Cartucho de tarjeta ofrecen múltiples ventajas, pero hay que escoger entre Supercard o M3, esto es importante a la hora de sacar actualizaciones del firmware, compatibilidad con juegos y con el homebrew (software casero). Una vez decidido entre Supercard o M3, hay varias opciones, como SD, CF o microSD, la versión microSD es la última en salir y tiene la ventaja de que no sobresale nada. Además tanto la Supercard como el M3 ofrece otras opciones como leer eBooks, ver fotos o películas, o usar la NDS como un reproductor de MP3. este cartucho es modificar el firmware, lo que hace que pierdas la garantía. Hay otro tipo de cartuchos, estos son los de nueva generación de slot de la NDS con una ranura microSD, lo cual hace que sea mas cómodo pero que se pierdan funcionalidades y compatibilidades con los juegos GBA. Lo que se consigue con este tipo de cartuchos es tener únicamente un cartucho en vez de dos. DS-Xtreme DS-X es el último cartucho flash con novedosas características para Nintendo DS. Del tamaño de un cartucho original, se inserta en la ranura de DS, no necesita passme ni flashear la consola, incluye un sistema operativo para cargar software casero y copias de seguridad sin parchear, un puerto mini-USB 2.0 integrado y 4Gbit (512MB) de memoria. Dependiendo de la opción que se elijas se tendrá que introducir las ROMs (juegos) de una forma u otra, que por lo general es usar un programa para grabar las roms a la memoria. Ventajas: Pueden tener un cartucho y varias tarjetas, o bien pueden compartir la tarjeta con dispositivos como cámaras de fotos, reproductores mp3, etc. Desventajas: No son extensibles, es decir que no es posible aumentar su capacidad y es más complejo. Cartucho para el slot de la NDS La función que realiza este cartucho es la de dar la orden de que coja los juegos desde la GBA. Sin este cartucho lo que sucede es que la consola reconoce que hay juegos pero al estar en el Slot GBA no los ejecuta. Otra opción en $ Cartucho DS-Xtreme Otros cartuchos comerciales Los cartuchos de la tabla siguiente permiten reproducir mp3, videos y juegos directamente sin parcheos. Simplemente se copian los juegos, programas, música en MP3 o películas directamente en una tarjeta microSD o microSDHC y se podrán ejecutar desde la Nintendo DS sin problemas Cartucho Descripción M3DS Real + Rumble Pack Cartucho para el slot-2 de NDS Lite proporcionando vibración para los juegos. Foto M3 DS Simply CycloDS Evolution Soporta la descarga DS sin necesidad de tener la consola flasheada y también soporta tarjetas MicroSD y SDHC. G6 UDisk Burner M3 Lite MicroSD Es como G6 Lite pero en vez de memoria Flash interna, utilizan tarjetas MicroSD G6 Real Card R/W Lector USB 2.0 original para G6 Real (todas sus versiones). Todos los pack G6 Real llevan este lector, este producto esta pensado para los que desean un G6DS Real Card Reader Writer $ ( WiFiMe El wifime es un sistema que mediante la modificación de los drivers de las tarjetas wifi con chipset Ralink RT2560 y la utilización de un pequeño programa, permite la cargar código homebrew en la NDS. De que se trata La pega de este método es que para la carga del código, se necesita estar cerca del ordenador, y que al utilizar el firmware modificado, la tarjeta wifi sólo la puedes usar con la NDS, no de forma normal, hasta que vuelvas a instalar los drivers del fabricante. Se trata de una aplicación y drivers para Windows XP/2000 (de momento sólo compatible con determinadas tarjetas wifi) que utiliza la conexión inalámbrica de la DS habilitándola para cargar software desde una flash cart. El proceso es más lento que con el PassMe pero igual de efectivo. PassMe es la versión antigua de WiFiMe el cual es un dispositivo diseñado por Natrium42 basado en los primeros DS passthrough hechos por DarkFader que usa un FPGA devkit. Redirige de DS a GBA Flash cart, para que puede ejecutarse el propio programa en la Nintendo DS. Requiere el uso de un cartucho de DS comercial y una GBA Flashcart para trabajar. 3. En el ejecutable se deberá introducir la dirección de donde tenemos los drivers. 4. Habiendo entrado ya en el archivo de drivers deseado procedemos a escoger la demo que hemos descargado y guardado en la misma carpeta que el driver. 5. Conectamos la Nintendo DS para empezar a recibir los datos procedentes al PC. Paso a paso 1. Instalación automática de los drivers Que necesitas Por lo tanto para poder cargar un programa a través de un PC lo que debemos tener es: • Que nuestro PC tenga una tarjeta wifi con chip RTS2560. • Descargar drivers para DS de http://users.belgacom.net/bn967347/dow nload.htm. • Descargar demo para DS Elije No, not at this time y pulse Next Instalación Posteriormente podemos empezar a crear nuestro propio Homebrew, lo que se debe realizar es lo siguiente: 1. Abriremos la consola o el ejecutable de nuestro PC 2. Llamaremos al ejecutable $ ) Elije Install from a list or specific location (Advanced) y pulse Next. Escoje Search for the best driver in these locations y selecione Include this location in the search busque el driver y pulse Next. 2. Manual de instalación del driver. A estas alturas, el Found New Hardware Wizard apareció repentinamente Escoje No, not at this time y haz clic en Next. Si detecta tu tarjeta, verás lo siguiente (como se instala el driver) Elije Install from a list or specific location (Advanced) y pulse Next. Se instalado correctamente, pulsa Finish Seleccione Don't search. I will choose the driver to install y clica Next. Si no ha detectado tu tarjeta sigue las instrucciones siguientes. $ * Elscoje Show All Devices y pulse Next. Clica Yes cuando salga esta advertencia Clica Finish. Clica Have Disk y Next. Si miras en Device Manager,deverias ver la categoria Nintendo DS - 802.11 y su dispositivo Ralink RT2560 Device. Busque la situación del driver (asegúrese escoger win2k o winxp adecuado para su sistema operativo) y pulsa el botón OK. Elija Ralink RT2560 Device. Clica Next. $ Aplicación Extraiga los archivos de rt2560_app_wmb_1_4_beta_1.zip La DS deben estar apagada. Debería ver esto: Encienda la NDS y acepta the Health and Safety warning. Te aparecerá Would you like to download this software? Presiona el botón A o toca (A) Select.. Toca DS Download Play. La NDS descarga el software… Ahora deberías ver Wireless Multiboot "PassMe". Presiona el botón A o toca (A) Select. $ " En la aplicación, deberías ver como se transfiere el archivo: Y en tu NDS verás: Una vez se transfiere (5-15 segundos), podrás ver: + Y en tu nintendo Ds deberías ver las siguientes imágenes: Ejemplos de aplicaciones Se pueden hacer todo tipo de aplicaciones caseras, desde el típico y sencillo “Hello World!” hasta juegos de aventura gráfica de larga duración. A continuación mostraremos unos cuantos ejemplos sencillos explicando brevemente algunas funciones del código. "Hello, World!" Esta aplicación es la típica para empezar, simplemente queremos mostrar algo por pantalla. En la pantalla superior mostraremos el nombre del programa en dos esquinas; en la inferior mostraremos un texto en color rojo. Código Este es el código, más adelante lo detallaremos: // Includes #include <PA9.h> PA_Init_VBL(): VBL significa Verticle blanco de interrupción. Básicamente, esto ocurre una vez al marco y actualiza el teclado, lápiz óptico, sprite y la información. Voy a entrar en esto en más detalle en otro día. PA_LoadSplash(): PA_Lib muestra una pantalla de presentación. // Include for PA_Lib // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL //PA_LoadSplash(); // PA_Lib splash screen PA_InitText(1, 0); // Text system for top screen PA_InitText(0, 0); // Text system for botton screen PA_SetTextCol(1, 31, 31, 31); // 1 = botton screen, 31,31,31 = white PA_OutputSimpleText(1, 0, 0, "Hello, World!"); // 1 = top screen, 0 = Tile X, 0 = Tile Y PA_OutputSimpleText(1, 19, 23, "World, Hello!"); // 0 = bottom screen, 19 = Tile X, 23 = Tile Y PA_Init_Text(): Iniciar el sistema de salida de texto. El primer parámetro es la pantalla (0 = inferior, 1 = arriba) y el segundo parámetro es el fondo (0-3). Hay 4 orígenes puede utilizar (0-3), pero nosotros entraremos en esto en mayor detalle más adelante. Por ahora, usaremos antecedentes 0. PA_SetTextCol(): Establece el texto de salida de color. El primer parámetro es la pantalla (0 = inferior, 1 = arriba) y los otros tres son el rojo, verde y azul, atributo (0-31). NOTA: Sólo puedes tener un color de texto por pantalla. PA_SetTextCol(0, 31, 0, 0); // 0 = botton screen, 31,0,0 = red PA_OutputText(0, 8, 12, "Text Color = %s", "Red"); // 0 = bottom screen, 0 = Tile X, 0 = Tile Y RGB15 Value Color RGB15(31,0,0) Red RGB15(0,31,0) Green // Infinite loop to keep the program running while (1) { PA_WaitForVBL(); } RGB15(0,0,31) Blue RGB15(0,0,0) Black RGB15(31,31,31) White return 0; } // End of main() Relación valores RGB y colores Explicación A continuación se describen algunas funciones utilizadas en el código: PA_Init(): PA_Lib. Se utiliza para inicializar PA_OutputSimpleText(): Es el modo sencillo de reproducir texto en la pantalla. Los parámetros son la pantalla (0 = inferior, 1 = arriba), la X (0-31) & Y (0-24) coordina, y finalmente el propio texto para mostrar. PA_OutputText(): Una forma más poderosa de la salida de texto en la pantalla. Los parámetros son los mismos excepto que $ se puede manipular la cadena. Por ejemplo, puede utilizar %s para la salida de una cadena de valor, %d de salida a un valor entero, FX% a la producción con un float X dígitos, y \ n para la salida de una nueva línea. Aviso cómo poner% s en la primera cadena de parámetro, y luego añadió un "Roja" parámetro. Si desea más ejemplos de cómo usar estos, échele un vistazo a este C + + printf página. PA_WaitForVBL(): Esto se utiliza para esperar la próxima VBL. Básicamente, quiere esperar a la pantalla para finalizar que se está elaborando antes de pasar. De lo contrario tendrá problemas con el parpadeo, etc Una vez más, vamos a entrar en esto en mayor detalle más adelante. Captura del programa Hello, World! Keyboard Bajo estas líneas se puede encontrar un ejemplo correspondiente a una aplicación que crea un teclado en la pantalla táctil. Por un lado se detalla el código empleado y por otro lado se hace la explicación detallada de éste. Posteriormente veremos el resultado del código tras pasarlo al emulador y introducirlo en la DS. Código El código es el siguiente: // Includes #include <PA9.h> // Include for PA_Lib #include "ctype.h" #include <String> // Graphics Includes // *** Backgrounds *** // gfx2gba -fsrc -m -pBackground.pal -t8 Background.bmp #include "gfx/Background.map.c" #include "gfx/Background.pal.c" #include "gfx/Background.raw.c" // Function: main() int main(int argc, char ** argv) { // Variables char curr_key; // Gets letter from keyboard std::string name = ""; // Stores Player Name PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL PA_InitText(1, 0); // Text system for top screen PA_InitKeyboard(3); // Keyboard system //PA_LoadSplash(); // PA_Lib splash screen // Setup top screen PA_LoadPal(PAL_BG1, Background_Palette); PA_LoadSimpleBg(1, 3, Background_Tiles, Background_Map, BG_256X256, 0, 1); PA_SetTextCol(1, 0, 31, 0); // Set text color to white // Setup bottom screen BG_PALETTE[0] = PA_RGB(0,0,31); // Set bottom screen to blue PA_ScrollKeyboardXY(25, 103); // Initial keyboard location // Infinite loop to keep the program running while (1) { PA_UpdatePad(); curr_key = PA_CheckKeyboard(); // Input from keyboard // If there is an open slot in the name & the character is printable... if ((name.length() != 20) && (isprint(curr_key))) { name.append(&curr_key); // put the character in the open slot... } // Handle the Backspace key if ((!name.empty()) && (curr_key == PA_BACKSPACE)) { name.erase(name.length()-1, 1); } PA_OutputSimpleText(1, 6, 14, " "); // Clear the text PA_OutputSimpleText(1, 6, 14, name.c_str()); // Output current name PA_WaitForVBL(); } return 0; } // End of main() Explicación A continuación, como en el ejemplo anterior, se describen algunas funciones utilizadas: PA_InitKeyboard(): Crea el teclado en el fondo que se le pase. BG_PALETTE [0] = PA_RGB(): Esta es una manera de configurar el color de fondo de la pantalla inferior. Se puede utilizar BG_PALETTE [512] para fijar la parte superior de la pantalla de color. PA_ScrollKeyboardXY(): Mueve teclado para la ubicación especificada. el Devuelve el PA_CheckKeyboard(): último carácter pulsado. Captura del programa Keyboard Según toda la información recopilada sobre la Nintendo DS llegamos a la conclusión de que es una de las mejores consolas portátiles. Por su pantalla táctil y su micrófono integrado se disfruta al máximo, pero no tan solo es importante por las características novedosas que aporta a la hora de jugar sino que es importante en el mercado de las videoconsolas gracias a las facilidades que aporta a la gente a la hora de poder construirse uno mismo sus propias aplicaciones y por la gran diversidad de juegos que está sacando al mercado no tan solo destinados al recreo o diversión de mucha gente sino que también han querido acercarse con esta consola a edades que jamás se habría imaginado, haciendo juegos destinados al aprendizaje. Todos y cada uno de estos aspectos son los que hacen que una consola como esta se haya hecho un hueco grande en éste complicado mercado. Referencias Básica [1] http://www.aaronrogers.com/nintendods/Day1/day1.php [2] http://www.aaronrogers.com/nintendods/linux.php [3] http://www.aaronrogers.com/nintendods/PA_Lib/ [4] http://www.double.co.nz/nintendo_ds/index.html [5] http://www.geardome.com/nintendods.php [6] http://www.theninjabunny.com/libro/cap00.pdf [7] http://www.theninjabunny.com/libro-nds/ [8] http://www.palib.info/ [9] http://www.talfi.net/ Hardware [10] http://www.youtube.com/watch?v=-dHtv9DA94g&feature=related Homebrew [11] http://www.youtube.com/watch?v=fzJ-hQHy6Wg&feature=related [12] http://www.youtube.com/watch?v=IOX_i27IvH8&feature=related DevKit [13] http://crysol.inf-cr.uclm.es/node/622 [14] http://sourceforge.net/project/showfiles.php?group_id=114505 [15] http://www.area-ds.com/forum/viewthread.php?forum_id=21&thread_id=86 [16] http://www.jandaman.com/games.mvc?c=NDSDEVKIT [17] http://www.ndshb.com/ Emuladores NDeSmuME. [18] http://www.desmume.com/ iDeaS [19] http://www.ndsemulator.com/nintendo-ds/ideas.htm ( Dualis [20] http://dualis.1emu.net/ [21] http://dualis.1emulation.com/ Ensata [22] http://www.ndsemulator.com/nintendo-ds/ensata/ensata-emulator.html Nogba [23] http://xdanx.awardspace.com/Nogba.htm Haking DS [24] http://hackds.blogspot.com/ [25] http://filosofiatecnologica.blogspot.com/2007/10/nintendo-ds-pirateada.html [26] http://www.teknear.com/search/tag:hacker?page=4 Nintendo DS / iPod clone [27] http://www.youtube.com/watch?v=MUpAlKknlEQ Versión crackeada de Opera Browser" para a DS [28] http://www.youtube.com/watch?v=QR2yfhBSvR0&feature=related [29] http://www.mxgamers.org/2006/11/12/nintendo-ds-browser-e-cracked-triforce/ DSLinux [30] http://www.youtube.com/watch?v=etgcG5Tqx6I&feature=related [31] http://www.youtube.com/watch?v=S3yoezMtxoI&feature=related [32] http://www.youtube.com/watch?v=gUbZuHh470U&NR=1 Ver videos con NDS [33] http://www.youtube.com/watch?v=ePTAL3JkTpk&feature=related Control remoto con NDS [34] http://www.youtube.com/watch?v=SyZ82zmA5xo&feature=related DS booting with MACos [35] http://www.youtube.com/watch?v=zXumHtI4LTc&feature=related DS overclocked ) [36] http://www.youtube.com/watch?v=PYIvASbELkw&feature=related Convertir la NDS en un teléfono [37] http://www.youtube.com/watch?v=eJMliDSKDGY&feature=related Convertir la NDS en un wireless Hub [38] http://www.youtube.com/watch?v=5sX3eQnws7Q&feature=related Tracker Dsssss [39] http://www.youtube.com/watch?v=iBhB_EgcaMk&feature=related Mouse DS [40] http://www.youtube.com/watch?v=bmfrSUHs4GE&feature=related *