Ver la versión completa : Velocidad de reloj de la Gp
Weif Raider
25/04/2005, 01:03
Wenas...
leyendo el SDK de gamepark vi que hay una función que te dice el número de ticks (creo que realmente da los milisegundos) que han pasado desde que se ejecutó el programa...
Me hace falta saber cómo puedo cambiar la velocidad del procesador de la Gp32, y si existe alguna variable en alguna librería que diga los ticks por segundo... leí que las de Oankali dan algún fallo con los refrescos de pantalla y los sonidos...
esto se puede hacer con alguna lib del SDK oficial o hace falta alguna extra?
Muchas gracias!!!
A ver, por partes:
1) Cambio de la velocidad del procesador:
switch(gp32_freq) {
case 133: /* Clock Speed 133 mhz */
GpClockSpeedChange(132000000, 0x3a011, 3);
break;
case 144: /* Clock Speed 144 mhz */
GpClockSpeedChange(140000000, 0x3e011, 3);
break;
case 150: /* Clock Speed 150 mhz */
GpClockSpeedChange(150000000, 0x43011, 3);
break;
case 156: /* Clock Speed 156 mhz */
GpClockSpeedChange(156000000, 0x46011, 3);
break;
case 160: /* Clock Speed 160 mhz */
GpClockSpeedChange(160000000, 0x48011, 3);
break;
case 166: /* Clock Speed 166 mhz */
GpClockSpeedChange(166000000, 0x4b011, 3);
break;
}
2) Para los ticks, dependiendo de la velocidad de la consola, para calcular los ticks la cuenta es aproximadamente:
int count1,count2;
count1=GpTickCountGet();
count2=GpTickCountGet();
while ( count2 – count1 < (1000 * (gp32_freq / 66) ) {
/* Espera 1000 ms = 1 segundo */
count2=GpTickCountGet();
}
Es decir, para convertir ticks a ms, multiplicar por (gp32_freq/66).
Efectivamente, algunas de las velocidades indicadas en mi librería a veces dan algunos problemas de refresco.
Los ajustes de esa librería los saqué de otras libs, no son mías. Lo que sí es mío es el calculo de los ticks por segundo.
Franxis: no tendrías unos valores que no overclockean la GP32? Es que todos los que pones son velocidades muy altas. Y por cierto, de donde los has sacado?
Por cierto, puede que tu cálculo de los ticks por segundo funcione para los ajustes que has indicado, pero no se puede generalizar, ya que según los parámetros indicados en GpClockSpeedChange(), los ticks por segundo no son proporcionales a la velocidad, tal como deja entender tu algoritmo.
Solo hay que ver mi lib para ver que no tiene nada que ver.
En mi caso, los ticks por segundo los calculé manualmente con la GP32 y un cronómetro.
Por eso puse una variable global (que no me gustan pero si no hay más remedio!).
Oankali.
anibarro
25/04/2005, 09:21
uf ahora lo veo todo claro :S Yo mareándome pq en el geepee32 me salen 11fps y en la gp real me pone 6 o 7, aunque en la GP se ve claramente que va a muuchos mas de los que marca. Probaré eso q pones :)
Por cierto que para 133Mhz pones:
GpClockSpeedChange(132000000, 0x3a011, 3);
y yo tengo:
GpClockSpeedChange(132000000, 0x24001, 2);
¿El último parametro era algo de polling time o que era? ¿lo de gp32_freq/66 sirve para el segundo tb?
Efectivamente, algunas de las velocidades indicadas en mi librería a veces dan algunos problemas de refresco.
Los ajustes de esa librería los saqué de otras libs, no son mías. Lo que sí es mío es el calculo de los ticks por segundo.
Franxis: no tendrías unos valores que no overclockean la GP32? Es que todos los que pones son velocidades muy altas. Y por cierto, de donde los has sacado?
Por cierto, puede que tu cálculo de los ticks por segundo funcione para los ajustes que has indicado, pero no se puede generalizar, ya que según los parámetros indicados en GpClockSpeedChange(), los ticks por segundo no son proporcionales a la velocidad, tal como deja entender tu algoritmo.
Solo hay que ver mi lib para ver que no tiene nada que ver.
En mi caso, los ticks por segundo los calculé manualmente con la GP32 y un cronómetro.
Por eso puse una variable global (que no me gustan pero si no hay más remedio!).
Oankali.
Son valores aproximados que más o menos sirven a esas velocidades que indico... Según leí por ahi el nº de ticks coincide con el nº de milisegundos a una frecuencia de 66 MHz, y a frecuencias mayores de 133 MHz, la cuenta aproximada es ticks*(gp32_freq/66). Pero no es un valor exacto, yo de hecho tuve que cambiar ese valor q es mas o menos bueno por un valor más aproximado. Para ello -> prueba y error hasta conseguir el bueno. Aparte el valor bueno depende del código en cuestión y del uso que hagas del bus desde tu programa, con el MAME al optimizar ciertas partes del emulador, tenia que volver a recalcular la constante para convertir ticks a ms.
Valores más bajos de 133 mhz... no recuerdo... pero creo que todos los valores para variar la velocidad de la gp32 los pillé del sdk de mirko, hay un .h con todos los valores desde 40 mhz hasta 256 mhz creo...
salu2
Puck2099
25/04/2005, 14:37
uf ahora lo veo todo claro :S Yo mareándome pq en el geepee32 me salen 11fps y en la gp real me pone 6 o 7, aunque en la GP se ve claramente que va a muuchos mas de los que marca. Probaré eso q pones :)
Por cierto que para 133Mhz pones:
GpClockSpeedChange(132000000, 0x3a011, 3);
y yo tengo:
GpClockSpeedChange(132000000, 0x24001, 2);
¿El último parametro era algo de polling time o que era? ¿lo de gp32_freq/66 sirve para el segundo tb?
anibarro, yo también usaba el valor que tienes tú para los 133 Mhz, pero aunque en las BLU se ve bien, me daba problemas con las BLU+ así que usa mejor el otro.
Saludos
Weif Raider
25/04/2005, 20:44
OKs.
gracias franxis por las frecuencias... voy a ver si me hago un contador de fps para ver como chuta el juego... aunq está un poco verde aún!!!
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.