User Tag List

Resultados 1 al 7 de 7

Tema: Problemas portando Osmose

  1. #1

    Fecha de ingreso
    Sep 2005
    Ubicación
    Madrid
    Mensajes
    6,940
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    Problemas portando Osmose

    Bueno, pues resulta que estaba yo compilando felizmente este emulador de Master System para la GP2X... y en uno de los archivos me da este error:

    Código:
    PrecisionTimer.cpp: In member function 'void PrecisionTimer::calibrate(int)':
    PrecisionTimer.cpp:46: error: impossible constraint in 'asm'
    PrecisionTimer.cpp:48: error: impossible constraint in 'asm'
    El método en cuestión es éste:

    Código PHP:
    void PrecisionTimer::calibrate(int s)
    {
        
    unsigned long long start;
        
    unsigned long long stop;
        if (
    verbose)
        {    
        
    cout << "Calibrating:" << dec<< << " seconds." << endl;
        }    
        
    rdtsc(start); // <------------------------ ERROR AQUI
        
    PORTABLE_SLEEP_FUNC;
        
    rdtsc(stop);  // <------------------------ ERROR AQUI
        
    tick_per_second = (unsigned long long) ( stop start );
        
    tick_per_second = (tick_per_second s);
        if (
    verbose)
        {    
        
    cout << "tick_per_second is: " << dec << tick_per_second << endl;
        
    cout << "CPU seems to run at " << dec <<(tick_per_second 1000000.0) << "Mhz." << endl;
        }

    He marcado las dos lineas erroneas. Despues de investigar un poco la funcion rdtsc, me he enterado que es una instrucción para contar los ciclos de reloj ejecutados en la arquitectura Pentium (de ahí que dé el error al compilar para ARM).

    ¿Alguien puede darme alguna alternativa? Gracias!!
    Ultimos temas escuchados:

    Mis Enlaces - Mi Música

  2. #2

    Fecha de ingreso
    Nov 2004
    Mensajes
    3,616
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    3
    Thanked in
    Agradecido 2 veces en [ARG:2 UNDEFINED] posts
    pasate por #retrodev alli hay unos cuantos que te podrian ayudar

  3. #3

    Fecha de ingreso
    Sep 2005
    Ubicación
    Madrid
    Mensajes
    6,940
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por esp3tek
    pasate por #retrodev alli hay unos cuantos que te podrian ayudar
    Voy para allá. Gracias !!

    PD: Sigo aceptando ayuda por aqui
    Ultimos temas escuchados:

    Mis Enlaces - Mi Música

  4. #4

    Fecha de ingreso
    Sep 2005
    Mensajes
    303
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Entonces entre esas tres lineas (entre las dos de los errores) lo que parece que hace es una pausa ¿no?, una pausa que depende de la velocidad del procesador ¿no? y como la gp2x tiene siempre la misma velocidad podrías hacer una pausa constante.

    No tengo ni idea de programar emuladores y de C casi se me ha olvidado todo, pero bueno, yo doy mi humilde opinión

  5. #5

    Fecha de ingreso
    Sep 2005
    Ubicación
    Barcelona
    Mensajes
    1,268
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    No podrias usar las SDL para crear esa pausa? o es que se necesita mucha mas precision?

    Si eres gepero, estás invitado a unirte a nuestra guild de Albatross18. Informate aquí!

  6. #6

    Fecha de ingreso
    Apr 2004
    Mensajes
    1,011
    Mencionado
    39 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    118
    Agradecer Thanks Received 
    95
    Thanked in
    Agradecido 68 veces en [ARG:2 UNDEFINED] posts
    Fueno, fueno, teniendo que los PCs son muy diversos, no sabes su velocidad, etc, etc. Tienes sin más cojones que calibrarla de alguna manera para conseguir una emulación de velocidad similar en todas las máquinas.

    Con las consolas no pasa eso. Tienes una consola de un modelo dado, todas las de su clase van a tener unas características mínimas comunes, entre ellas la velocidad.

    Por lo tanto puedes sustituir el trozo de código:

    rdtsc(start); // <------------------------ ERROR AQUI
    PORTABLE_SLEEP_FUNC;
    rdtsc(stop); // <------------------------ ERROR AQUI
    tick_per_second = (unsigned long long) ( stop - start );
    tick_per_second = (tick_per_second / s);

    por :
    tick_per_second = CONSTANTE;

    Donde constante sería una constante que tú mismo tendrías que elaborar a partir de los datos que tengas de la GP2X. O más chapuzeramente, ir probando unos cuantos valores hasta que encuentres uno que vaya bien. (sin conocer más del emulata en cuenstión y cómo utiliza el tick_per_second no te puedo ayudar mucho más).

    Editado: echándole un nuevo vistazo al código una solución un tanto trivial sería:

    tick_per_second = 200 * 1000000; // pasando de Mhz a hz o ticks por segundo
    Última edición por bitrider; 23/11/2005 a las 18:42
    make -f Makefile.wiz

  7. #7

    Fecha de ingreso
    Sep 2005
    Ubicación
    Madrid
    Mensajes
    6,940
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Gracias por la info. De momento he usado la funcion SDL_GetTicks() que alguien me ha recomendado. De velocidad va bien, pero el sonido se retrasa un poco... a ver que tal va en la GP2X.

    Si no va ya pruebo tu método
    Ultimos temas escuchados:

    Mis Enlaces - Mi Música

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •