Registrarse

[Otros] Clases de la programacion ds de homebrews[Entregar tareas o se pedirá una baja]

Estado
Cerrado para nuevas respuestas.

OdnetninI

Usuario Habitual
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.
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.

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:
  • No dejar la escuela sin avisar
  • Tener muchas ganas de aprender
  • No robar ningun tutorial ni nada

Temario:
  • 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

  • Kaliser
  • Tsuka
  • cosarara97
  • Legend
  • Abstract

  • Tsuka
  • Kaliser
  • Abstract
  • Legend
  • cosarara97
  • Legend
  • Tsuka
  • Abstract
  • Kaliser
  • cosarara97
  • Tsuka
  • Legend
  • cosarara97
  • Abstract
  • cosarara97






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

[attachment=1328]
[attachment=1329]
[attachment=1330]

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.

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.
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.
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.
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.

[attachment=1332]

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:

/*
-------------------------------------------------

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 <stdio.h>

// Includes propietarios NDS
#include <nds.h>

// Includes librerias propias
#include <nf_lib.h>





/*
-------------------------------------------------
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;

}
Os explicaré cada parte por separado:
/*
-------------------------------------------------

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.

-------------------------------------------------
*/
Esto es un comentario de la librería, puedes quitarlo si quieres no surge ningún efecto.

/*
-------------------------------------------------
Includes
-------------------------------------------------
*/

// Includes c/c++
#include <stdio.h>

// Includes propietarios NDS
#include <nds.h>

// Includes librerias propias
#include <nf_lib.h>
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.

int main(int argc, char **argv)
Esta es la declaración del main, lo que primero ejecuta.

consoleDemoInit(); // Inicializa la consola de texto
consoleClear(); // Borra la pantalla
setBrightness(3, 0); // Restaura el brillo
iprintf("\n Hello World!");
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.

// Bucle (repite para siempre)
while(1) {


swiWaitForVBlank(); // Espera al sincronismo vertical

}

return 0;
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.

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.
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.
 
RE: Clases de la programacion ds de homebrews

Instalé también el Notepad porque me apetecía echarle un ojo. No creo que haya problema con eso..



Gracias por todo C:
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

Muy bien, aunque yo recomiendo usar otro notepad que pondre mas adelante, ya que es mas sencillo, dos tareas mas resueltas y pasamos al siguiente tuto
 

Kal!ser

Vuelve el lobito
RE: Clases de la programacion ds de homebrews

Aquí está mi tarea


Os gusta el tema que le he puesto al w7? e.e
 

A de Abstract

Usuario mítico
RE: Clases de la programacion ds de homebrews

Mi tarea ;)


PD: Una cosa, no escribas mensajes tan cortos, puesto que alguien te lo puede considerar SPAM.
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

OK, ya estan los 3, lo siento por lo de los comentarios, dentro de poco publicare el segundo tuto, de momento todos lo estais siguiendo bien
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

Muy bien, la tercera clase donde ya tocamos programación aparecerá cuando contesten tres usuarios, mientras te recomiendo tocar algun tutorial en c, o almenos mirate las variables y funciones.
Gracias por el interes
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

Ok, Tsuka, uno mas, y empezamos con la verdadera, proghramación y como ya recomendé, deberias leeros tutoriales de c para poder seguri bien el segundo tutorial, ya que de codigo para la tarea, porgo el justo.
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

ok,toos muy bien, luego actualizo el post, con la tercera clase de programacion ya de verdad, y con la espera de plazas
 

Kal!ser

Vuelve el lobito
RE: Clases de la programacion ds de homebrews

Mi tarea.

Oye, me gustan las clases y eso, pero no pongas las clases tan juntas, por favor.
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: Clases de la programacion ds de homebrews

Hola!
Tareas 1 y 2:
1:
[attachment=1333]

y 2:

[attachment=1334]

Bye!

PD: Lo estoy haciendo todo en linux. En la primera imagen se ve como he añadido unos comandos al .bashrc para poder compilar con devkitpro :D

PD2: 3ª tarea enviada por mp
 

OdnetninI

Usuario Habitual
RE: Clases de la programacion ds de homebrews

Los que le faltan alguna tarea tienen hasta el dia 9 para realizarla, sino seran avisados, si vuelve a ocurrir lo siento, pero si no se prueba algun asunto mayor deberan entregar inmediatamente la tarea o seran expulsados.

Lo siento
 
Estado
Cerrado para nuevas respuestas.
Arriba