Author Id: 18888 Author Name: OdnetninI Post Content: Ya he comentado en los perfiles de los usuarios sobre la entrega de las tareas o se cerrará la escuela y tambien, que si hay algun problema por fechas o algo, se puede pedir solo una bajka temporal y no una permanente Este es el seguimiento del tema anterior, asi que copiare varias partes del inicio. Pero antes aviso de que las inscripciones estan cerradas, asi que no comenteis que quereis entrar, las tareas son solo para los users inscritos. Aviso que cualquier user que no esté inscrito no puede comentar, si lo hace será reportado, solo si algun moderador tiene que hacer una edicion o algo no pasará nada. Bienvenidos a mi escuela: Lo primero es decir que tengo el permiso para abrirla. Contenidos: Aprenderemos a programar un juego para ds totalmente de cero, no os confundais con hackrom. Por si acaso os dejo en un spoiler el significado generico de homebrew que es lo que aprenderemos a hacer. [spoiler=Pulsa para desplegar este spoiler]Se suele denominar homebrew (software casero no oficial) a las aplicaciones y juegos creados por programadores -aficionados y expertos- para cualquier plataforma, generalmente consolas de videojuegos propietarias.1 Recientemente, se han desarrollado consolas diseñadas específicamente para la ejecución de software homebrew, el cual se caracteriza por ser gratuito y en su mayoría abierto. El término «homebrew» tiene relación con el Homebrew Computer Club, aunque se desconoce si fue éste el origen. 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. Suele cuestionarse la legalidad del homebrew, sin embargo, su uso es muy extendido entre los usuarios avanzados.[/spoiler] Abandono debe realizarse por MP Plazas:5, ya que esto es muy complejo. Fecha de acabado de inscripciones: Cuando se cubran. Aunque la escuela empezará con 3. Si alguien abandona quedará una plaza libre siempre y cuando se comunique por mp y se entreguen los trabajos atrasados por el mismo. Requisitos para entrar: [list] [*]No dejar la escuela sin avisar [*]Tener muchas ganas de aprender [*]No robar ningun tutorial ni nada [/list] Temario: [list] [*]Introducción [*]Instalación del entorno [*]Comprobación y Configuración del entorno [*]Funcionamiento de las librerias [*]Acercamiento al Hardware [*]Programacion Básica del Hello World [*]A partir de aqui se vera segun vea los animos, ya que depende del avance de la clase [/list] [spoiler=Lista de alumnos 5/5] [list] [*]Kaliser [*]Tsuka [*]cosarara97 [*]Legend [*]Abstract [/list] [/spoiler] [spoiler=Tareas entregadas] [spoiler=Tarea1] [list] [*]Tsuka [*]Kaliser [*]Abstract [*]Legend [*]cosarara97 [/list] [/spoiler] [spoiler=Tarea2] [list] [*]Legend [*]Tsuka [*]Abstract [*]Kaliser [*]cosarara97 [/list] [/spoiler] [spoiler=Tarea3] [list] [*]Tsuka [*]Legend [*]cosarara97 [*]Abstract [/list] [/spoiler] [spoiler=Tarea4] [list] [*]cosarara97 [/list] [/spoiler] [/spoiler] [spoiler=Reservas de plazas] [list] [/list] [/spoiler] [spoiler=Primera Clase: Introducción e Instalación] Introducción e Instalación del entorno: Introducción: He decidido juntar estos dos tutoriales ya que tienen mucho que ver. Vamos ayá. Lo primero es saber de que disponemos: -Tenemos 4Mb de ram en la ds, que tambien incluye Vram Sabiendo esto procederé a explicar que trata esto: Vamos a usar un SDK llamado devkitpro, que sustituye al SDK oficial. Devkitpro viene con libnds como librería principal para ds, aunque recomiendo usar otra librería para empezar ya que esta es muy complicada. Podríamos usar Palib pero se ha quedado obsoleta, aunque muchos users la siguen usando, pero en estos tutoriales usaremos NFlib, una librería creada por KNighFox, un coder de habla hispana. Todo sobre la ds se explicará mas adelante según sea necesario, por ahora con ver una ds es suficiente para saber lo que tenemos: 12 Botones utiles de juego, apagado, y volumen, 2 pantallas y una táctil, ademas de que contamos con 2 procesadores ARM9 y ARM7. Por defecto la ds le en ensamblador, pero gracias a los compiladores incluidos en el msys podemos programar en C/C++. Instalación: Estos pasos son muy simples, primero entramos en http://sourceforge.net/projects/devkitpro/ Y descargais la ultima versión del instalador automatico para Windows, lo siento por lso users de Linux y Mac, por google podeis encontrar tutoriales de cómo instalarlo en estos sistemas. Bueno empezemos, una vez bajado ejecutamos el instalador, y seguimos los pasos de estas imágenes, debeis dejarle el directorio por defecto, a mi no me sale porque lo tengo instalado: La tercera imagen no es mia, porque yo ya lo tengo instalado y no sale, pero debeis seleccionar solo las que estan en rojo. Como he explicado puede haber variaciones porque el mio ya esta instalado, pero siguiendo lo escrito anteriormente y las imagenes no habrá problema Después solo a next, ya se instalará solo y después a next y por ultimo a finish. En cuanto contesteis procedemos a lo siguiente. Recomiendo no ponerse a ver cosas todavía hasta que no expliquemos en los proximos tutoriales, tambien quiero evitar de que esto no esta, si lo habeis tocado es comun que pueda ocurrir cosas no esperadas. [spoiler=Tarea1. Limite de entrega 5/9/11 a las 14:00 Hora española] Tarea1: Enseñarme una imagen de la carpeta donde teneis instalado el devkitpro con este tuto, pero quiero que en la screen tengais tambien la ruta, digo esto para evitar luego lios porque esto no compila o similares. [/spoiler] [/spoiler] [spoiler=Segunda Clase: Ahora instalamos la nflib] En este tutorial instalaremos la nflib y haremos la prueba de compilacion. Lo primero es bajar la ultima version de aqui: http://sourceforge.net/projects/nflib/files/ Lo descomprimimos en el directorio de devkitpro, quedando asi: C:\devkitPro\nflib ahi nos vamos al directorio examples,text,textdemo. Osea que entramos en el directorio: C:\devkitPro\nflib\examples\text\textdemo Y ahi ejecutamos el compile.bat, y esperamos que se ejecute, si todo ha ido bien se os generará un .nds, para ejecutarlo bien en este sistema recomiendo darle click derecho al .nds, propiedades, y cambiais el programa con el que se abre, y buscamos el emulador que esta en la carpeta: C:\devkitPro\nflib\tools\emus\demume ya que es el mas compatible con el nitrofilesytem, sistema interno de ficheros para poder meter los archivos a la rom y poder ejecutarlos, eso sera lo siguiente. Pero ahora con la tarea que os encomiendo es suficiente. [spoiler=Tarea2] Compilar el example dicho antes, y mandareis la captura de pantalla del juego funcionando o del fallo en caso de que no compile. Con esto comprobaremos si funciona y todo esta bien instalado, en el 3 tutorial veremos porfin empezar a programar lo simple. [/spoiler] [/spoiler] [spoiler=Clase 3 primer tocamiento del code] Porfin vamos a programar algo en serio, nos volvemos a ir a la carpeta C:\devkitPro\nflib y copiamos la carpeta template a otro lugar pero con una condición, debe ser una carpeta sin espacios y sin caracteres especiales como `´’ñ $& o cualquier otro cuanque - _ si son aceptados, por ejemplo un directorio valido seria: C:\ds\template un ejemplo de directorio no valido seria C:\ds&dev\..dev.ñ Recomiendo descargar el notepad++ para una programación mas facil. Una vez comprendido esto con el template copiado le cambiaremos el nombre por el de t01 y copiamos otra vez el template para tener uno a mano siempre, os dejo la imagen para que veais como va. Ahora cogemos entramos en t01, y os voy a explicar que hace cada cosa. Data: carpeta de archivos internos(no tiene nada que ver con el nitrofiles y rara vez lo usaremos.). Nflib: carpeta interna de la librería, no se debe tocar nunca. Nitrofiles: carpeta de los archivos internos del filesystem, aquí meteremos los archivos. Release: Carpeta de una versión antigua, no la toqueis. Sources: Carpeta donde iran todos los codes del juego. Clean.bat archivo para borrar lo compilado Compile.bat: archivo para compilar el proyecto. Icon.bmp Icono del juego, mas adelante os explicare como editar el icono y que lo acepte la ds sin cosas raras Abrimos la carpeta source y abrimos el archivo main.cpp, y nos saldrá esto: [quote]/* ------------------------------------------------- NightFox's Lib Template Requiere DevkitARM R28 Requiere NightFox's Lib Codigo por NightFox http://blogs.gamefilia.com/knightfox Inicio 10 de Octubre del 2009 (c)2009 - 2010 NightFox & Co. ------------------------------------------------- */ /* ------------------------------------------------- Includes ------------------------------------------------- */ // Includes c/c++ #include // Includes propietarios NDS #include // Includes librerias propias #include /* ------------------------------------------------- Main() - Bloque general del programa ------------------------------------------------- */ int main(int argc, char **argv) { consoleDemoInit();// Inicializa la consola de texto consoleClear();// Borra la pantalla setBrightness(3, 0);// Restaura el brillo iprintf("\n Hello World!"); // Bucle (repite para siempre) while(1) { swiWaitForVBlank();// Espera al sincronismo vertical } return 0; }[/quote] Os explicaré cada parte por separado: [quote]/* ------------------------------------------------- NightFox's Lib Template Requiere DevkitARM R28 Requiere NightFox's Lib Codigo por NightFox http://blogs.gamefilia.com/knightfox Inicio 10 de Octubre del 2009 (c)2009 - 2010 NightFox & Co. ------------------------------------------------- */[/quote] Esto es un comentario de la librería, puedes quitarlo si quieres no surge ningún efecto. [quote]/* ------------------------------------------------- Includes ------------------------------------------------- */ // Includes c/c++ #include // Includes propietarios NDS #include // Includes librerias propias #include [/quote] Estos son los incluyes predefinidos por la librería, ya veremos lo de poner mas o ir quitando. De momento con los predeterminados vamos bien. [quote]int main(int argc, char **argv)[/quote] Esta es la declaración del main, lo que primero ejecuta. [quote]consoleDemoInit();// Inicializa la consola de texto consoleClear();// Borra la pantalla setBrightness(3, 0);// Restaura el brillo iprintf("\n Hello World!");[/quote] Estas son funciones de libnds para cargar un texto de estilo ms-dos, i escribe lo de la ultima funcion. La primera lo inicia, la segunda limpia la pantalla, la tercera hace que puedas ver las pantallas. Y la ultima escribe. [quote]// Bucle (repite para siempre) while(1) { swiWaitForVBlank();// Espera al sincronismo vertical } return 0;[/quote] Esto es un bucle, básicamente se repetise siempre que lo que esta entre paréntesis (1) sea lo que pone, en este caso mientras 1 sea 1 el programa lo repetira, hay distintos tipos de bucles. while( lo que sea lo que sea ej: variable==5 ){ El swiWaitForVBlank(); coordina a los 60 frames por segundo, y ademas completa algunas funciones de libnds. Es obligatorio. Y el return 0; lo que hace es devolver un valor, porque todas las funciones que no sean void, deben llevar un retrun. Os voy a explicar un comando que usaremos que es de c, es el sprintf un comando que actualiza una variable de texto con otras variables. Aunque el pritf lleva funciones preparadas para esto usaremos para luego poder usar la funcion interna de nflib que es mas completa y ademas podemos elegir el lugar exacto donde ponerlo, y ademas podemos usar la ñ y otros caracteres con acentos y mas. Os recomiendo leer tutos de c para poder usar las variables, yo solo os dare el funcinamiento de las nuevas funciones. [spoiler=Tarea3:] Vais a hacer que el programa lea un numero de una variable y lo escriba en la pantalla desde el comando sprintf. Usareis estas variables: char text[32]; int variable=14; sprintf(text,”La variable es:%d ”,variable); Y luego lo imprimis usando printf(text); Por lo que mandareis el source de un code por mp que imprima una variable en la pantalla, pero no lo metais en el bucle. Con eso será suficiente. Aquí os pondré nota, antes del siguiente tuto, os podre un code para que lo corrijais los errores y me lo mandais por mp, con eso sera suficiente, en el siguiente tuto os explicare un poco mas de teoria, pero debeis leeros un tuto de c para que podais seguir con los siguientes tutos y lo entendais. [/spoiler] [/spoiler] [spoiler=Clase 4 Investigando por nuestra cuenta] Esta clase va a ser muy sencilla como corta, ademas tiene la tarea incluida dentro de la clase, quiero que investigueis entre los examples de nflib: C:\devkitPro\nflib\examples pero antes vais a copiaros la carpeta C:\devkitPro\nflib\template a nuestra carpeta de proyectos, con el nombre de Incluyendo_Imagenes. Por cierto antes de hacer esto os recomiendo borrar la carpeta nflib de devkitpro y descargar la nueva version, ya que no compila cpp http://sourceforge.net/projects/nflib/files/. Debereis compilar con la utilidad grit en tools de nflib, y usando el examples deberemos ser capaces de poner cada uno el fondo que quiera, ojo: debe estan indexado a 256 colores y tener unas dimensiones multiples de 256, como: 256x256, 256x512, 512x256, 512x512, etc... Con esto hecho, lo meteremos en nitrofiles para poder usarlo, y seguimos el example para poner el fondo, ojo de nuevo: no copiar con copy y paste, sino que veais que os interesa, debereis buscar vosotros el example y hacerlo, esta es una clase bastante compleja. [/spoiler]