Desarrollo de aplicaciones en Nintendo DS

Transcripción

Desarrollo de aplicaciones en Nintendo DS
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
*