› Foros › PlayStation 3 › Scene
MrNatutal escribió:Estoy compilando en windows 7 desde el minGW.
Tambien tengo una maquina virtual con ubuntu.
Salu2
@echo off
@set PS3DEV=d:/ps3dev
@set MINGW=%PS3DEV%/MinGW
@set CYGWIN= nodosfilewarning
@set PATH=%PS3DEV%/cygwin;%MINGW%/bin;%MINGW%/msys/1.0/bin;%PS3DEV%/ppu/bin;%PS3DEV%/spu/bin;%PS3DEV%/ppu/powerpc64-linux/include/c++/4.5.1;%PS3DEV%/ppu/lib;%PATH%;
@set PSL1GHT=%PS3DEV%/psl1ght
make clean
make
make pkg
pause
blipi escribió:Hola,
tengo un problema de linkeado o de port en el psl1ght.
Al usar el archivo <time.h> y intentar hacer uso de la función clock() el compilador tira un error:
undefined reference to 'getrusage', en la libreria 'lib_a-times' de powerpc64
Quizás soy yo que no incluyo el archivo correcto y haya otro "time.h" por allí, si es esto, decidme en que carpeta anda por favor.
Gracias,
Blipi
varios escribió:Las listas me van a venir de perlas ... .
Es más, era lo que estaba intentando hacer ... pero a lo cutre comparado con Hermes, .
Estaba intentando duplicar cubos ...igual alguno tiene una idea de para que puede ser, .
LIBS := -lgcm_sys -lreality -lsysutil -lio -lstdc++
Vrsquid escribió:varios escribió:Las listas me van a venir de perlas ... .
Es más, era lo que estaba intentando hacer ... pero a lo cutre comparado con Hermes, .
Estaba intentando duplicar cubos ...igual alguno tiene una idea de para que puede ser, .
Lo quieres para hacer las fichas supongo pero no le veo el sentido a hacer una lista para un cubo. Tendria mas sentido hacer la ficha entera y meterla en una lista. Asi la rotas como un objeto completo.
c:/ps3dev/ppu/bin/../lib/gcc/powerpc64-linux/4.5.1/../../../../powerpc64-linux/l
ib\libc.a(lib_a-times.o): In function `times':
C:/MinGW/msys/1.0/local/ps3dev/newlib-1.18.0/newlib/libc/machine/powerpc/times.c
:23: undefined reference to `getrusage'
blipi escribió:Os cuento, he añadido la libreria -lc y sigue dando error, ahora en times.c
Cito:c:/ps3dev/ppu/bin/../lib/gcc/powerpc64-linux/4.5.1/../../../../powerpc64-linux/l
ib\libc.a(lib_a-times.o): In function `times':
C:/MinGW/msys/1.0/local/ps3dev/newlib-1.18.0/newlib/libc/machine/powerpc/times.c
:23: undefined reference to `getrusage'
Por si acaso alguien no se acuerda, esto pasa al incluir "time.h" y usar la función clock()
PD: Soy incapaz de encontrar el archivo en esta ruta: "C:/MinGW/msys/1.0/local/ps3dev/newlib-1.18.0/newlib/libc/machine/powerpc/times.c"
blipi escribió:Alguna idea de que librería podría ser? Por lo que se, en linux, el "getrusage" se encuentra en un archivo llamado resource.h, en sys/resource.h
Pero, ni idea de que librería podría ser..
Gracias
blipi escribió:mmm ya veo.. aunque me extraña, porque la tengo incluida esa libreria.
voy a echarle una ojeada al git, no sea que tenga un versión antigua yo y por eso no me funcione.
pues no se que decirte, esta claro que ese times.c tiene una referencia al getrusage, y pone que el times.c es de la initial commit, asi que, dudo que tenga una version atrasada yo.
EDIT: comparando su sys/resource.h con algunos otros, veo que le faltan algunos prototype de funciones, como "getrusage", eso podría explicar el undefined reference.
http://freebsd.active-venture.com/FreeB ... rce.h.html
Aquí hay un resource.h, ya verás que difieren bastante.
Gracias.
blipi escribió:Si, supongo que no me quedará ningún otro remedio que hacer algún tipo de chapuza xd
Sabes, lo que quería hacer era "bloquear las flechas" ya que sino la selección de elementos del menú era demasiado rápida.
Para eso quería utilizar el clock() y desbloquear cada 0.5~0.9 segundos en caso de una pulsación continua, por eso el uso de clock(), que devuelve milisegundos.
En fin, luego me miro lo que me has pasado y a ver que saco, que ahora no puedo.
Gracias!
pache80 escribió:hola, ya instale todo pero a la hora de tratar de compilar me dice que make no se reconose como comando interno o externo cuanto con windows 7 y antes tenia el sdk de psp intalado
marioga escribió:pache80 escribió:hola, ya instale todo pero a la hora de tratar de compilar me dice que make no se reconose como comando interno o externo cuanto con windows 7 y antes tenia el sdk de psp intalado
simplemente te fallan las variables de entorno (suponiendo k has instalado msys correctamente)
pache80 escribió:marioga escribió:pache80 escribió:hola, ya instale todo pero a la hora de tratar de compilar me dice que make no se reconose como comando interno o externo cuanto con windows 7 y antes tenia el sdk de psp intalado
simplemente te fallan las variables de entorno (suponiendo k has instalado msys correctamente)
pues creo que lo hice todo bien pero deja reinstalo msys
varios escribió:Puedes hacer un timer que comprueba los mandoas cada cierto tiempo. Y hay otra solución, pero me tengo que ir.
¿compruebas si está el botón izquierda derecha pulsado?
Me voy que pierdo el bus, chao.
void LeerMandos(void)
{
long n;
ioPadGetInfo(&padinfo);
for(n = 0; n < MAX_PADS; n++) {
if(paddata.BTN_LEFT && !oldpaddata.BTN_LEFT){
// código de mover izquierda
}
if(paddata.BTN_RIGHT && !oldpaddata.BTN_RIGHT){
// código de mover derecha
}
}
memcpy(&oldpaddata, &paddata, sizeof(PadData));
}
blipi escribió:Mmm pero yo no quiero bloquear por completo las flechas hasta que se suelten, simplemente quiero emitir una pulsación cada ~1 segundo. Y si no me equivoco, tu método lo bloquea hasta dejar y pulsar de nuevo.
Alguno forma de obtener los fps sin usar código externo, es decir, sin necesidad de usar timers por ejemplo (ni clock() puesto que tampoco funciona).
Quizás la función time() (tambien encontradacen time.h) si funcione? O también usa el getrusage()?
A ver si a alguien se le ocurre algún método para obtene los fps sin usar timers.
Gracias!
// Variables globales
static sys_ppu_thread_t h_timer_leermandos;
static volatile int leermandos_thread_running = 1;
void LeerMandos(void)
{
long n;
ioPadGetInfo(&padinfo);
for(n = 0; n < MAX_PADS; n++) {
if(paddata.BTN_LEFT){
// código de mover izquierda
}
if(paddata.BTN_RIGHT){
// código de mover derecha
}
}
}
// Thread
void leermandos_thread(u64 value)
{
// Mientras la variable este a 1
while (leermandos_thread_running) {
// 1 milisegundos = 1000
// 1000 milisegundos = 1000000 = 1 seg
usleep(1000000); // esperamos un segundo
LeerMandos(); // Cuando pasa el segundo leemos el estado de los mandos
}
sys_ppu_thread_exit(0);
}
// Lamarlo para iniciar el timer
void IniciarTimers(void)
{
// Thread para leer mandos cada cierto tiempo
// Variable que mientras este a 1 se ejecutará el timer
leermandos_thread_running = 1;
// Creamos el thread
if (sys_ppu_thread_create(&h_timer_leermandos, (void *) leermandos_thread, (u64) NULL, 100, 0x1000, THREAD_JOINABLE, "leermandos_thread") < 0)
exit(0); // Error al crear el timer
}
// Para acabar el timer basta con poner la variable a 0 y saldrá del while en el thread
void TerminarTimers(void)
{
leermandos_thread_running = 0;
}
blipi escribió:No si la idea de los fps era simplemente por, si se cuantos frames hay por segundo, puedo simplemente comprobar cuantos frames han sido dibujados, si son iguales a los fps, "resetear los contoles" y poner los frames dibujados a cero.
Bueno, gracias por mostrarme como utilizas tu los timers, aunque intentaré ver si hay otra solución más fácil primero, ya que ponerme a hacer threads (aun que ya he hecho threads en psl1ght) y implementar timers, es complicarme un poco la vida por un simple menú.
Vrsquid escribió:Hombre yo te propongo una solucion un poco chapucera pero que no usa ni timers ni clock ni nada de nada.
Como en todas las ps3 el programa va igual de rapido solo tienes que contar frames. Echas a ojo mas o menos cuantos fps tienes.
Necesitas un contador global de frames. Tambien tener en unas variables el estado en el fotograma anterior del pad.
Si en el fotograma actual la direccion esta a cero poner contador de frames a cero y no hacer nada mas
Si en el fotograma anterior estaba a cero y ahora a uno mover el cursor una vez y sumar uno al contador.
Si en el fotograma anterior estaba a uno y ahora tambien sumar uno al contador.
Si el contador es igual o mayor que x restar x al contador y mover el cursor una vez.
Sustituir los datos viejos del pad con los actuales.
Simplemente buscas un X que te parezca adecuado y ya esta. Es una putisima mierda que se usaba en la epoca del BASIC pero que funciona para las consolas.
u32 frame = 0;
while (exit==0)
if ([b]frame%50[/b]) {
ioPadGetInfo(&padinfo);
for(n = 0; n < MAX_PADS; n++) {
if(padinfo.status[n]) {
ioPadGetData(n, &paddata);
if(paddata.BTN_CROSS){
exit=1;
}
if(paddata.BTN_LEFT) {
// ;
}
if(paddata.BTN_RIGHT) {
}
}
}
frame++;
}
blipi escribió:Mm no acabado de entender tu propuesta. Cuando hablas de la dirección, a que debe apuntar esa dirección?
Piensa además que estoy usando tiny3d, por lo que todo el tema flip de pantalla lo gestiona el mismo tiny3d, igual que el/los buffers (pues supongo que usa doble buffer).
Gracias!
@Varios, porque mod 50? Como sabes que es cada 50 frames?
ioPadGetInfo(&padinfo);
for(n = 0; n < MAX_PADS; n++) {
if(padinfo.status[n]) {
ioPadGetData(n, &paddata);
if(paddata.BTN_CROSS){
// Nada más que pulsamos salimos
exit=1;
}
if(paddata.BTN_CIRCLE){
// Nada más que pulsamos entramos
opcion_elegida=opcion;
}
if(paddata.BTN_LEFT && frame%50) {
// pulsado IZQUIERDA y cada 50 frames;
opcion--;
}
if(paddata.BTN_RIGHT && frame%50) {
// pulsado DERECHA y cada 50 frames;
opcion++;
}
}
frame++;
// Debes inicializar variables u32 derecha= 0, izquierda= 0, opcion = 1, opcion_elegida = 0;
ioPadGetInfo(&padinfo);
for(n = 0; n < MAX_PADS; n++) {
if(padinfo.status[n]) {
ioPadGetData(n, &paddata);
if(paddata.BTN_CROSS){
// Nada más que pulsamos salimos
exit=1;
}
if(paddata.BTN_CIRCLE){
// Nada más que pulsamos entramos
opcion_elegida=opcion;
}
if(paddata.BTN_LEFT) {
// pulsado IZQUIERDA y cada 50 frames;
if (izquierda == 50)
izquierda=0;
if (izquierda==0)
opcion--;
izquierda++;
}
if(paddata.BTN_RIGHT) {
// pulsado DERECHA y cada 50 frames;
if (derecha == 50)
derecha=0;
if (derecha==0)
opcion++;
derecha++;
}
}
if (opcion_elegida!= 0)
// Seleccionada opcion_elegida cuando no es 0
Killer_Instict escribió:buenas,estoy instalandolo,pero hay una cosa que no entiendo,acabo de instalar el phyton,y despues hay que agregar una ruta en PATH no?
desde la consola mingw32 escribo:
set PATH=%PS3DEV%/ppu/bin;%PS3DEV%/spu/bin;%MINGW%/bin;%MINGW%/msys/1.0/bin;C:\Python27;
y da 3 errores,uno en: PS3DEV no such job
en: msys no such job
y en: C:\Python27 command not found
que hago mal?
gracias
Killer_Instict escribió:vale,gracias voy a crear el .bat entonces!
salu2
@echo off
@set PS3DEV=d:/ps3dev
@set MINGW=%PS3DEV%/MinGW
@set CYGWIN= nodosfilewarning
@set PATH=%PS3DEV%/cygwin;%MINGW%/bin;%MINGW%/msys/1.0/bin;%PS3DEV%/ppu/bin;%PS3DEV%/spu/bin;%PATH%;
@set PSL1GHT=%PS3DEV%/psl1ght
make clean
make
make pkg
pause
MrNatutal escribió:Esto ya empieza a crear addición!!
Estoy usando tiny3d y va de maravilla y poco a poco crece y mejora, mi propuesta es:
seria mejor abrir un HILO en scene especifico para la tiny3d para la programación en pls1ght?
y otras librerias que se utilicen en psl1ght en otros HILOS?
Lo comento por las siguientes razones:
1.- Para especificar el hilo en un tema en concreto.
2.- Documentación, manual, instalación, futuras propuestas de la libreria, etc...
3.- Descarga de la libreria, ultima versión y algunas de las anteriores, por ejemplo como el hilo del OM.
Seguro que me dejo otro punto.
Solo es un punto de vista, que nadie se ofenda solo aporto una idea (por muchos comentarios en otros hilos, uff!! como corre la sangre al rio). Que reine la paz hermanos!!
Salu2
Hermes escribió:Hola.
Espero que los reyes se hayan portado bien... a mí no han regalado el move, la PS3 y los juegos que "pedí" : solo mucha ropa (es lo que pedí, que la economía está muy mal para desperdiciar el dinero en juguetes ) y por supuesto: esta vez, habría estado bien que otro nos hubiera regalado una aplicación hecha con estas librerías .
Y hablando de librerías, lo de las listas trabaja bien, pero he hecho una paréntesis debido a una petición y estoy trabajando para añadir soporte YUV, creando nuevos shaders, etc (ya tengo dos formas de implementarlo: con AYUV 32 bits, y como mapas de 8 bits YUV que se aplican en un uso especial multitextura).
También se han añadido nuevas funciones para trabajar con matrices y vectores (hay que añadir más, pero de momento, solo añado lo que voy necesitando: a destacar la que permite aplicar una matriz a un vector de posición, la que aplica matriz a normal y la que calcula la normal a un plano descrito por tres vértices)
Como veis, no estoy quieto .
Sobre el tema de abrir un hilo sobre Tiny3D, eso mejor que me lo dejéis a mi, cuando tenga un respiro y pueda empezar a documentar cosas en ese hilo: ahora sería inútil que lo abriera yo y si lo abre otro, entonces no podría organizar las cosas de forma adecuada.
Saludos y tened paciencia
Hermes escribió:varios escribió:Esto va marchando ... poco a poco pero sin pararse, .
Vaya con las esferitas ... el movimiento me ha parecido ... un corte de mangas,
¿Ah, pero lo parece?varios escribió:PD: Se ve muy bien la iluminación.
En realidad, no es así: es decir, el truco está en la alta poligonización, por que la iluminación esa se basa en vértices (por ejemplo, el cilindro no solo son 32 secciones en forma de pared, si no que la pared se subdivide en 32 tambien).
Tal vez mire el tema de pasarla al Pixel shader como algo alternativo y entonces la cosa será mas bruta (el problema es que evidentemente, tirará tela de grafica )
Tambien está pendiente el poder mapear texturas tirando de matrices y esas cosas, lo que pasa es que no se si sería mejor primero, hacer algo y luego en función de ese algo, meter soporte (de poco vale que haga muchas cosas si luego al final, la gente no hace nada con ello )