Después de mucho trabajar he terminado mi primer proyecto en 3D.
Voy todo contendo a probarlo en la DS, pero no funciona. En cambio, en el no$gba va perfecto.
No sé si es por problemas de texturas (los modelos pueden llegar a ocupar junto con las texturas, en un momento determinado, 200 kb; añadir a mayores un fondo y un sprite) o por el EFS. Como no quería precisamente tener problemas con la memoria usé EFS para cargar los modelos 3D.
La situación en que me encuentro es que, o bien me funciona todo perfectamente usando las EFS en el emulador, pero no en la DS (ni siquiera carga); o bien, no uso las EFS teniendo que prescindir de algunos modelos, y aún así hay problemas con algunas texturas, las cuales no se ven (esto pasa tanto en el emulador como en la DS).
¿Problema con las EFS?. ¿Problemas con la gestión de la memoria de vídeo?
¿Puede alguien ayudarme?
oye me lo pasas
si funciona en emu mejor xq la nds la tengo changada
Ya he probado con Akaio 1.6
Ya he probado con Akaio 1.6 que sí lo soporta, pero no va.
Al final he decidido hacer una 2ª versión sin usar ficheros, que aunque me limita para poder usar más modelos, por lo menos funciona.
Decir que con Akaio no funciona esta 2ª versión, he tenido que instalar el firmware oficial. Pronto postearé el juego (quiero limar cosillas).
Decir que es un simulador de ............... ¡tachán, aeromodelismo! (muy sencillo eso sí ). Me encanta el aeromodelismo y pensé que puestos a hacer algo en 3D, pues que sea original.
http://trabajosdemike.blogspot.com.es/
Sabes que las EFS la primera
Sabes que las EFS la primera vez que cargas el proyecto pueden tardar hasta 15 minutos en iniciarse, no? Lo digo porque igual no has tenido este dato en cuenta...
Proyectos en curso
El Taller de Eglomer
Ya hice un juego (más
Ya hice un juego (más sencillo) que usa EFS y no tuve ningún problema con él.
Ahora mismo tengo la DS encendida desde hace unos 10 minutos y no da señales de arrancar.
Miraré las nitrofs, a ver si consigo resultados.
http://trabajosdemike.blogspot.com.es/
Pegale una patada a las EFS y
Pegale una patada a las EFS y usa el NitroFs que viene de serie con el devkitarm, que no necesita iniciarlizarse. Si tu flashcard no soporta Argv, usa el homebrew menu para lanzar tu rom. El NitroFs tambien funciona en el no$gba.
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
He cambiado EFS por NitroFS
He cambiado EFS por NitroFS y no funciona
Aquí va un ejemplo parecido
Aquí va un ejemplo parecido al juego que he echo pero usando EFS (con nitrofs falla igual)
En el emulador funciona, pero en en la DS con la acekard ó la itouchds NO
He visto que si no inicializo las PA9, es decir, que si quito la línea PA_Init() funciona; pero así tendría que cambiar
toooooodo el juego y usar libnds.
¿Alguien puede ayudarme?
P.D.: También os pongo un enlace con todo el programa para que hagáis experimentos
http://www.megaupload.com/?d=LS8TUYKV
#include "PA9.h"
#include "efs_lib.h"
#include "stdlib.h" //Librería para funciones de ficheros
float rotateX = 0.0;
float rotateY = 0.0;
float moverz = 0.0;
u32* pespada = NULL;
int textureID;
u32* carga_md2(char* ruta)
{
FILE* fichero; //Creamos dos variables que apuntan a los ficheros
u32* archivo; //Creamos una variable puntero tipo u32
char rutacompleta[256];
int size;
struct stat st; //Creamos una variable st para el fichero
sprintf(rutacompleta,"/%s_md2.bin",ruta); //Completa la ruta añadiéndole '_md2.bin'
fichero = fopen(rutacompleta,"rb"); //Abrimos el fichero en modo lectura binaria
if (fichero != NULL) //Comprobamos que el fichero existe
{
stat(rutacompleta,&st); //Función que vuelca los datos del fichero sobre la estructura st
size = st.st_size; //Almacena el tamaño (en bytes) del fichero en la variable size
archivo = (u32*)malloc(size); //Devuelve un puntero del tipo u8 que 'apunta' al inicio en memoria de una porción de tamaño size
fread(archivo,1,size,fichero);
fclose(fichero);
return archivo;
}
else
{
PA_OutputText(1,0,0,"¡Error al abrir el fichero %s!",rutacompleta);
return 0;
}
}
u8* carga_bmp(char* ruta)
{
FILE* fichero; //variable que apunta a los ficheros
u8* archivo; //Creamos una variable puntero tipo u8
char rutacompleta[256];
int size;
struct stat st; //Creamos una variable st para el fichero
sprintf(rutacompleta,"/%s_bmp.bin",ruta); //Completa la ruta añadiéndole '_bmp.bin'
fichero = fopen(rutacompleta,"rb"); //Abrimos el fichero en modo lectura binaria
if (fichero != NULL) //Comprobamos que el fichero existe
{
stat(rutacompleta,&st); //Función que vuelca los datos del fichero sobre la estructura st
size = st.st_size; //Almacena el tamaño (en bytes) del fichero en la variable size
archivo = (u8*)malloc(size); //Devuelve un puntero del tipo u8 que 'apunta' al inicio en memoria de una porción de tamaño size
fread(archivo,1,size,fichero);
fclose(fichero);
return archivo;
}
else
{
PA_OutputText(1,0,0,"¡Error al abrir el fichero %s!",rutacompleta);
return 0;
}
}
int main()
{
if(EFS_Init(EFS_AND_FAT | EFS_DEFAULT_DEVICE, NULL))
{
PA_OutputSimpleText(1, 0, 0, "EFS init ok");
PA_OutputText(1, 0, 1, "found NDS path: %s", efs_path);
}
PA_Init();
//set mode 0, enable BG0 and set it to 3D
videoSetMode(MODE_0_3D);
PA_SwitchScreens(); //Hace que el motor 3D se activa en la pantalla superior y no por defecto en la táctil
// inicializa gl
glInit();
vramSetBankA(VRAM_A_TEXTURE);
glGenTextures(1, &textureID); // reservamos sitio para las textura
glBindTexture(0, textureID); // activamos la textura
glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD,carga_bmp("espada"));
glEnable(GL_TEXTURE_2D | GL_ANTIALIAS); // Activa texturas y Antialias
// setup the rear plane
glClearColor(0,0,0,31); // BG must be opaque for AA to work
glClearPolyID(63); // BG must have a unique polygon ID for AA to work
glClearDepth(0x7FFF);
//this should work the same as the normal gl call
glViewport(0,0,255,191);
//any floating point gl call is being converted to fixed prior to being implemented
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70, 256.0 / 192.0, 0.1, 100);
gluLookAt( 0.0, 0.0, 3.5, //posición cámara
0.0, 0.0, 0.0, //a dónde mira la cámara
0.0, 1.0, 0.0); //up
//Atributos de los polígonos. (POLY_ALPHA(31) desactiva las transparencias y POLY_CULL_NONE no renderiza los polígonos que están detrás de la cámara
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_FRONT);
pespada=carga_md2("espada");
while(1)
{
glPushMatrix();
glRotateX(rotateX); //rota figura en eje x
glRotateY(rotateY); //rota figura en eje y
glTranslatef(0,0,moverz);
scanKeys();
u16 keys = keysHeld();
if(!(keys & KEY_UP)) rotateX += 3;
if(!(keys & KEY_DOWN)) rotateX -= 3;
if(!(keys & KEY_LEFT)) rotateY += 3;
if(!(keys & KEY_RIGHT)) rotateY -= 3;
glBindTexture(0, textureID);
glCallList(pespada);
glPopMatrix(1);
glFlush(0);
}
return 0;
}//end main
http://trabajosdemike.blogspot.com.es/
Las funciones de sonido de
Las funciones de sonido de PALIB con las ultimas libnds y algunas tarjetas provocan que se cuelgue al iniciar el sonido. que no sea eso. Ademas, si lo vas ha hacer en 3D, las PALIB no te sirven para nada. Tira directo con libnds, que te ahorraras problemas.
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
Alguien sabe como puedo hacer
Alguien sabe como puedo hacer para sustituir pa_checklid().
He probado, pero me da error en IPC
u8 Pausar(void)
{
#define PA_LidClosed() (IPC->buttons>>7)
#define POWER_CR REG_POWERCNT
if (!PA_LidClosed())
return 0;
else
{
u16 power_cr = POWER_CR; // backup the power...
POWER_CR = 0; // Shutdown everything :p
// Wait for the lid to be opened again...
while(PA_LidClosed()) swiWaitForVBlank();
// Return the power !
POWER_CR = power_cr;
return 1;
}
}
Gracias
http://trabajosdemike.blogspot.com.es/
Tengo
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~