Anuncios Google

En el emulador Sí en la DS No

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

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?


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de gsc

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.

Imagen de eglomer

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.

Imagen de kNightFox

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

Llora 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 Sonrisa

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

Imagen de kNightFox

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

Imagen de Andresmargar

Tengo

//Funcion basica para que se pause el juego al cerrar la tapa
//By IndexAlpha9
 
//pausa la LID
void I9_CheckLid(void){
while(keysHeld() & KEY_LID){//si la lid esta cerrada...
scanKeys();//escanea
swiWaitForVBlank();//actualiza
}//hasta que no se abra, no sigue el juego
Tengo una funcion para la lid de la consola, sin usar ipc ni nada...

 

 


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.