Anuncios Google

problema emuladores

Hola chicos, soy nuevo en el foro y he entrado con mucha ilusion. Estoy empezando a programar juegos al ver que PALib te soluciona bastante el papel.

Bueno, voy con la duda... estoy utilizando el emulador no$gba 2.6, y estoy teniendo problemas con los numeros pseudoaleatorios. 

He probado con todo, PA_InitRand(); ,PA_SRand()% x,  srand(time(NULL)) de la time.h para crear la semilla, y num = (PA_Rand() % 8) o num=rand() % 8; , para generar el valor aleatorio. Lo que veo es que la semilla no refresca nunca con el reloj y siempre me salen los mismos valores.¿Puedo hacer algo respecto a esto?

 

¿Se pueden utilizar todas  las librerias incorporadas por devKitARM para los juegos/aplicaciones de NDS, (stdio.h, time.h, fastmath.h...) o hay restricciones?

 

Por cierto, con la libreria palib venia otro emulador (Ideas v1.0.3.1) que parece que puedes debugar el codigo ?¿¿¿? sin embargo hago correr mi programa y siempre aparecen 40-60 fps y no me aparece ni la presentacion del juego. ¿Sabeis a que se puede deber?

 

Vale, para empezar ya esta bien, gracias de antemano.


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 Disgepia

No pues

yo de estas cosas no se mucho XD lamento no poder ayudarte

Imagen de _-Slash-_

ja...

no sabria decirte pero investigareLlora

Imagen de best_guitar

Gracias por responder, pues

Gracias por responder,

pues la verdad es que no. Siempre que ejecuto la aplicación obtengo el mismo numero. Aunque utilice PA_RandMax(x).

 

Saludos.

Imagen de sarutoby

por que no

pruevas a canviar de emulador, prueva este, a mi siempre me ha funcionado a la perfeccion:

Wins DS Pro DSi

Imagen de best_guitar

que va,

Pues no, tampoco. Tal vez tenga malamente la configuración de las librerias o del mismo emulador.

 

El código es este supongo que esta bien, pero siempre al ejecutar me aparece 65.

#include <PA9.h>

int main(){
    PA_Init();
    PA_InitVBL();
    PA_InitText(1,0);
    PA_InitRand();
    u32 n = PA_RandMinMax(55,86);
    PA_OutputText ( 1 , 0 , 1 , "Esto es un aleatorio : %d" , n) ;
    while(true){
        PA_WaitForVBL();
    }
}

 

¿Los únicos emuladores son no$gba y ideas? ¿existe alguno más para probar?

Gracias por las respuestas.

Imagen de exterminator

En palib

existe una funcion (no me acuerdo, pues no la uso, ahora te la busco) en que bastaba con iniciarla al principio. Garantizaba que el numero que coges es siempre diferente, porque se basa en la fecha-hora en la que se "recoge" el numero. Como supondras, es un poco dificil jugar a un juego siempre a la misma hora exacta.

Ahora te la busco y edito, Salu2

EDITO: Pues es la funcion que tienes puesta, o sea, el PA_InitRand(); Ahora ya veo cual es el problema.

Probablemente (no estoy seguro), los emuladores configuren la fecha y hora de este como los despertadores, o sea, el 1 de enero a las 00:00. Es por ello que te sale siempre el mismo numero, porque la funcion se inicia siempre a la misma fecha-hora (la virtual del emulador). Te recomiendo que pruebes tu homebrew en tu DS para comprobar si es eso lo que pasa.

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Imagen de best_guitar

Gracias por la respuesta, me

Gracias por la respuesta, me parece que podria ser la correcta. El problema es que no tengo la DS, pero la compraré en breve.

 

 

Imagen de exterminator

En teoria

la fecha-hora del emulador se puede ajustar, prueba a cambiar la hora antes de iniciar tu homebrew, y vas cambiando las horas para ver si cambian los numeros.

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Se puede seguir usando los

Se puede seguir usando los aleatorios sin necesidad de usar PA_InitRand ^^.

 

En cuanto al codigo, prueba a usar esto:

 

#include <PA9.h>
 
 int main(){ 
 
PA_Init(); 
PA_InitVBL();
 PA_InitText(1,0);
 PA_OutputText ( 1 , 5 , 5 , "Esto es un aleatorio : %d" , PA_RandMinMax(55,86)) ; 
 
while(1){ 
PA_WaitForVBL(); 
}
}

 

Lo he probado en el ideas y va perfecto ^^. No deberias tener problemas.

 

EDITO:

 

No, no funciona. Muestra el mismo numero XDDD.

 

El fallo esta en que los emuladores empiezan en la hora 00:00:00. Podeis comprobarlo usando las funciones de PA_RTC. Teniendo en cuenta que los numeros aleatorios usan la hora para generarlos. Pues...

Será problema de PAlib. Yo

Será problema de PAlib. Yo con srand(time(NULL)); y rand(); siempre tengo secuencias distintas en emuladores y DS. Igual es que las versiones de los emuladores que tienes son viejas y no les funciona el RTC...

Imagen de best_guitar

gracias por responder

me has roto los esquemas ahora, probaré de actualizar palib.

Imagen de best_guitar

No se

No se, debo tener un problema.

He actualizado a la 080823 de PAlib, pero me daba muchos fallos. He intentado bajar la release 21, la cual dice que es necesaria pero el link no funciona.

 

He probado de instalar de nuevo devkitpro y palib (la anterior 090801) pero obtengo los mismos resultados. En fin. Probaré con la siguiente versión cuando esté del todo disponible. Por cierto, la nueva actualización parece que trae nuevas y mejores funciones.

 

[exterminator] ¿como puedo cambiar la hora del emulador (no$gba)? He intentado cambiar la hora del sistema (Windows XP Professional SP2)  pero me ocurre lo mismo.

 

 

¿Pero usas las funciones de

¿Pero usas las funciones de PAlib o rand()? No tienen nada que ver, son independientes.

Imagen de sarutoby

a lo mejor

el problema no es PAlib sino es DevkitPro, prueba a mirar esté enlace:

http://www.megaupload.com/?d=INM58VPY

Esta es la ultima y mejorada(la que uso yo) versión de DevkitPro.

Gracias, adios


I like:

Imagen de best_guitar

si, ya lo pensé

pero yo tambien utilizo la 1.5.0 y sigo teniendo el problema. Hoy lo he vuelto a instalar todo y igual. Da igual probaré con una DS cuando la compre.

Gracias.

Aqui tienes todo lo

Aqui tienes todo lo necesario para instalar la version estable de palib, te lo dejo por si aca:

http://www.megaupload.com/?d=EK8HHJHS

 

De todas formas el problema no es de palib, prueba esto en el emulador:

 

#include <PA9.h>

int main(){
    PA_Init();
    PA_InitVBL();
    PA_InitText(1,0);

    while(1){

    PA_OutputText ( 1 , 5 , 5 , "%d" , PA_RTC.Hour()) ;
    PA_OutputText ( 1 , 7 , 5 , "%d" , PA_RTC.Minutes()) ;
    PA_OutputText ( 1 , 9 , 5 , "%d" , PA_RTC.Seconds()) ;
        PA_WaitForVBL();
    }
}

 

Como veras, el reloj funciona correctamente. Solo que comienza siempre a las 00:00:00. Creo que no hay solucion alguna para eso, prueba a descargarte la ultima version del ideas/Nosgba aunque no creo...

Imagen de sarutoby

Si lo que querias era hacer un relog

haverlo dicho, mira este haber si este codigo te funciona:


// This example shows how to use 8 bit backgrounds,
// on which you can draw with the stylus or show text in different sizes, colors, or rotations

// Includes
#include <PA9.h>       // Include for PA_Lib

#include <stdio.h>  // standard lib for texts...

char text[200];

// Function: main()
int main(int argc, char ** argv)
{
 PA_Init();    // Initializes PA_Lib
 PA_InitVBL(); // Initializes a standard VBL
 
 
 // Let's put some colors... in the background palettes
 PA_SetBgPalCol(0, 1, PA_RGB(31, 31, 31));

  PA_Init8bitBg(0, 3);

 // Infinite loop to keep the program running
 while (1)
 {
  sprintf(text,  // string to use
     "%02d/%02d/%02d", PA_RTC.Day, PA_RTC.Month, PA_RTC.Year);  // String to transform
  PA_SmartText(0, 10, 20, 255, 40, text, 1, 3, 0, 100);  // Display the text transformed :)

  // And the time...
  sprintf(text,  "%02d:%02d  %02d seconds", PA_RTC.Hour, PA_RTC.Minutes, PA_RTC.Seconds);
  PA_SmartText(0, 10, 40, 255, 60, text, 1, 3, 0, 100); // Display the text transformed :)

  PA_WaitForVBL();
 }
 
 return 0;


no se por que, si pongo los comenterios en castellano, luego al compilar me sale Error 2. Si te funciona pos ya está, sino avisame por un comentario aqui o por MP, me da igual (MP=MensagePrivado)

Aqui te dejo un egemplo sobre como deve ser al compilarlo:

http://www.megaupload.com/?d=I33WY16Z

Gracias, adios.


I like:

Imagen de best_guitar

ambos relojes

me funcionan y van con el reloj del sistema no comienzan de cero. He probado con este código pero tampoco, siempre me salen las mismas secuencias aunque los segundos al inicio sean diferentes.

 

#include <PA9.h>
#include <time.h>
#include <stdlib.h>

int main(){
    PA_Init();
    PA_InitVBL();
    PA_InitText(1,0);
   
    srand(time(NULL));
    int n= rand()%100;
   
    while(1){
    if(Pad.Newpress.X)
    {
     int n= rand()%100;
     PA_OutputText ( 1 , 0 , 1 , "Esto es un aleatorio :     ") ;
     PA_OutputText ( 1 , 0 , 1 , "Esto es un aleatorio : %d" , n) ;
     PA_OutputText ( 1 , 0 , 2 , "Segundos : %d" , PA_RTC.Seconds) ;
   }
        PA_WaitForVBL();
    }
}   

 

Al final creo que lo dejaré estar por que si no no adelanto en mi programa.

Por cierto, ¿como lo haceis vosotros para enseñar vuestras demos a la comunidad? ¿que lugar está destinado a este fin? ¿Cómo inserto la demo en el mensaje (algo así como adjuntar)?

 

Gracias a todos.

 

Imagen de sarutoby

para colgar homebrew

Si quieres colgar un homebrew sigue estas instrucciones:

1:) Descargate esto y asi podras colgarlo en Meagaupload

2:) Espera que se carge y ves u copia el URL que te sale

3:) Ves a crear contenido y a crear temas de foro

4:) Aora escoge el foro "aportes de usuario" y crera un acceso directo a donde colgaste tu homebrew

5:) Luego es solo esperar que alguien de la Staff lo vea


I like:

Imagen de best_guitar

jeje

ya me querias meter un virus...

No hace falta descargarse

No hace falta descargarse ningun programa XD.

 

Simplemente te vas a una hosteador de archivos online. Uno de lo mas conocidos y populares es megaupload. Hazte una cuenta gratuita ahi y sube el nds. Al final te saldra un link de descarga, posteas el link y listo.

 

Si quieres que aparezca en la portada, tendras que postearlo en su respectivo foro y con buena presentacion para que lo cojan.

Imagen de best_guitar

gracias

lo probaré. pero primero quiero hacer las colisiones en mi juego de naves

juego naves

http://www.fotoranking.es/show.php?img=65538_instantanea.JPG.html

 

Saludos

El fallo esta en que no has

El fallo esta en que no has cerrado el main, no has puesto el corchete } vamos.

 

Compilado y probado en el ideas me sale esto:
http://img230.imageshack.us/img230/5518/dibujomj.png

 

O sease, la fecha y hora de hoy. Ahora si que sale, curioso. Pero entonces porque siempre sale el mismo numero?

 

EDITO:

 

Espera que acabo de leer tu mensaje, no no queria hacer un reloj XD. Intentaba demostrar porque siempre sale el mismo numero aleatorio con el emulador.

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.