[TUTORIAL]Instalar y poner a punto psl1ght en Windows

1, 2, 3, 4, 59
Jaja, ok, gracias, entonces me ahorro tmbn la jpg y la png para mi sdk precompilado (he puesto un post k va por la pagina 2 creo xd), ademas le he creado un actualizador como los de devkitpro (Weno yo lo he creado en sh)
Gracias por contestar.
A experimentarrrrr, jajaja.

Lo que me resulta extraño es que dibujo en la posición 0, 0 de la pantalla y no lo veo y no sabia si es porque era así o porque tenía mal configurada la pantalla, así que cambiando los modos de la pantalla a Wide, 16:9 o 4:3. Hasta que lei los comentarios de Tiny3D donde pones que cambias la función de rescaler por eso ....
Así que estoy probando de momento 2D y simplemente experimentar ... luego pasará a cosas en 3D.

Saludos.
Buenas,como he tenido un exito rotundo en la instalacion del entorno y he complilado todo lo que he podido,pues me siento un poco devorador asi que lo que he pensado es empaparme un poco en C++.
Lo que he hecho es bajarme un curso de videotutoriales.com y por lo menos ya se leer,en ningun caso intentare crear nada ni me atrevo con un hola mundo,tengo el de un compañero forero y he mirado el codigo y agarrate los machos.En fin solo eso,que os sigo y ahora me entero una pizca del curro que hay detras o eso me parece,seguro que pal que sabe ira todo rodao.
saludos.
Hola, Hermes. Estoy intentando mirar como hacer un timer que se ejecute cada cierto tiempo (el que le indique). ¿Cómo lo harías? ¿Mediante un SPU o hay alguna manera mejor?

Saludos.
Parece que hay un user llamado c0de90e7 que está creando una librería para desarrollar en PS3 con el PSL1GHT:

Libconsole

c0de90e7, has been hard at work, adding console (think command prompt) emulation to the PSL1GHT SDK. He has posted a video, of the recent additions, he's made to his libConsole programming library. The video showcases console emulation, terminal, windowing, etc. This video won't look very impressive to most. However, developers will understand the progress that is being made towards the PSL1GHT SDK.


Video: http://www.youtube.com/watch?v=JQ9wfAtb ... r_embedded

Si hos fijais en los menus de su PS3 están en español, y en su perfil de youtube pone pais ESPAÑA, quien será será XD XD XD
Ya había investigado la forma "no oficial", jaja.

Pero quería hacerlo de forma "oficial" ... y ya había mirado lo de las syscall y mirando los u64 que devuelve lv2GetCurrentTime
Estaba probando la función gettimeofday que la he visto en tu código de Heretic y Hexen.

Gracias por responder, creo que tengo suficiente con la opción 2, lo probaré. Si realmente era por hacer pruebas, en realidad me bastaba con algo más simple, ya verás que para lo que es vale un contador, jeje Pero quería probar con timers.

Te veía con ganas de explicar lo de los hilos, jaja.
Para cargar y mostrar una imagen (En png por ejemplo), cual seria el proceso? es que estoy mirando el ejemplo de scripts y tal pero no se, le da muchas vueltas y me pierdo XD
¿Qué quieres exactamente? Hay un ejemplo con jpg y png.

Lo básico que tienes que hacer es tener una carpeta data donde va a estar el archivo png y le añades la extensión.bin
Ejemplo: imagen.png lo llamas imagen_png.bin dentro de la carpeta data

Los directorios deben de quedar así:
ejemplopng
data (en este directorio tener imagen_png.bin)
source (en este directorio tener el main.c)
Makefile (archivo Makefile del ejemplo directamente dentro de ejemplopng)
compilla_ifcaro.bat (archivo bat ejemplo directamente dentro de ejemplopng para compilar)


Coge un ejemplo de psl1gth y añades sino están
#include <sysmodule/sysmodule.h>
#include <pngdec/pngdec.h>
#include <pngdec/loadpng.h>
#include "imagen_png.bin.h" // Aquí tienes que pones el nombre que le has puesto al nombre y añadirle un .h

Cambia el Main por este, he quitado lo de controlar los pads para salir para que quede más sencillo el ejemplo. Ten en cuenta que faltan las funciones de init_screen que están en los ejemplos de psl1ght. Cogelas de

s32 main(s32 argc, const char* argv[])
{
   // Cargamos el módulo para cargar PNG
   if(SysLoadModule(SYSMODULE_PNGDEC)!=0) return 0;

   // Iniciamos la pantalla
   init_screen();

   // Variable donde guardar los datos del PNG
   PngDatas imagenpng;

   // Valores antes de la llamada
   imagenpng.png_in= (void *) imagen_png_bin;
   imagenpng.png_size= sizeof(imagen_png_bin);
   // Llamada para cargar los datos del PNG en la variable imagenPNG
   LoadPNG(&imagenpng, NULL);

   long frame = 0; // Número de frames
   
   // Loop
   while(1){
      waitFlip();
      
      // En png1.bmp_out se guarda el puntero de los datos del PNG, si no se ha cargado bien no entra en el if
      if(imagenpng.bmp_out) {
      
         // x e y serán la posición donde lo vas a dibujar, puedes cambiarlas
         static int x=0,y=0;
         int n, m;

         // Valores de los punteros uno de la pantalla y otro del PNG
         u32 *scr=  (u32 *) buffer[currentBuffer];
         u32 *png= (u32 *) imagenpng.bmp_out;

      
         // Será la posición donde va a empezar a poner los pixels del png
         scr+=y*res.width+x;

         // Dibujamos el PNG pixel a pixel con un for
         for(n=0;n<imagenpng.height;n++) {
            // Para que no se salga de pantalla por la derecha
            if((y+n)>=res.height) break;
            for(m=0;m<imagenpng.width;m++) {
               // Para que no se salga de pantalla por abajo
               if((x+m)>=res.width) break;
               // Ponemos el pixel
               scr[m]=png[m];
            }
            // Actualizamos las posiciones de los punteros en la siguiente línea
            png+=imagenpng.wpitch>>2;
            scr+=res.width;
         }
      }

      // Cambio del buffer
      flip(currentBuffer);
      currentBuffer = !currentBuffer;
      frame++;

      // Para que salga a los 500 frames
      if (frame > 500)  break;
   }
   
   // Antes de salir hacemos el Unload del módulo de PNG
   SysUnloadModule(SYSMODULE_PNGDEC);

   return 0;
}




Aquí tienes lo que tiene que ir delante del main ... jeje
#include <psl1ght/lv2.h>

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <assert.h>
#include <unistd.h>

#include <sysutil/video.h>
#include <rsx/gcm.h>
#include <rsx/reality.h>

#include <io/pad.h>

#include <sysmodule/sysmodule.h>
#include <pngdec/pngdec.h>
#include <pngdec/loadpng.h>
#include "imagen_png.bin.h"

gcmContextData *context; // Context to keep track of the RSX buffer.

VideoResolution res; // Screen Resolution

int currentBuffer = 0;
s32 *buffer[2]; // The buffer we will be drawing into.

void waitFlip() { // Block the PPU thread untill the previous flip operation has finished.
   while(gcmGetFlipStatus() != 0)
      usleep(200);
   gcmResetFlipStatus();
}

void flip(s32 buffer) {
   assert(gcmSetFlip(context, buffer) == 0);
   realityFlushBuffer(context);
   gcmSetWaitFlip(context); // Prevent the RSX from continuing until the flip has finished.
}

// Initilize everything. You can probally skip over this function.
void init_screen() {
   // Allocate a 1Mb buffer, alligned to a 1Mb boundary to be our shared IO memory with the RSX.
   void *host_addr = memalign(1024*1024, 1024*1024);
   assert(host_addr != NULL);

   // Initilise Reality, which sets up the command buffer and shared IO memory
   context = realityInit(0x10000, 1024*1024, host_addr);
   assert(context != NULL);

   VideoState state;
   assert(videoGetState(0, 0, &state) == 0); // Get the state of the display
   assert(state.state == 0); // Make sure display is enabled

   // Get the current resolution
   assert(videoGetResolution(state.displayMode.resolution, &res) == 0);
   
   // Configure the buffer format to xRGB
   VideoConfiguration vconfig;
   memset(&vconfig, 0, sizeof(VideoConfiguration));
   vconfig.resolution = state.displayMode.resolution;
   vconfig.format = VIDEO_BUFFER_FORMAT_XRGB;
   vconfig.pitch = res.width * 4;
   vconfig.aspect=state.displayMode.aspect;

   assert(videoConfigure(0, &vconfig, NULL, 0) == 0);
   assert(videoGetState(0, 0, &state) == 0);

   s32 buffer_size = 4 * res.width * res.height; // each pixel is 4 bytes
   printf("buffers will be 0x%x bytes\n", buffer_size);
   
   gcmSetFlipMode(GCM_FLIP_VSYNC); // Wait for VSYNC to flip

   // Allocate two buffers for the RSX to draw to the screen (double buffering)
   buffer[0] = rsxMemAlign(16, buffer_size);
   buffer[1] = rsxMemAlign(16, buffer_size);
   assert(buffer[0] != NULL && buffer[1] != NULL);

   u32 offset[2];
   assert(realityAddressToOffset(buffer[0], &offset[0]) == 0);
   assert(realityAddressToOffset(buffer[1], &offset[1]) == 0);
   // Setup the display buffers
   assert(gcmSetDisplayBuffer(0, offset[0], res.width * 4, res.width, res.height) == 0);
   assert(gcmSetDisplayBuffer(1, offset[1], res.width * 4, res.width, res.height) == 0);

   gcmResetFlipStatus();
   flip(1);
}
ya eso ya lo e visto, pero yo me referia usando la tiny3d XD
marioga escribió:ya eso ya lo e visto, pero yo me referia usando la tiny3d XD


Ja, ja ... ok.
Pues te miras el ejemplo de sprites2D de tiny3D y ahi tienes como se cargan los PNG :D

https://github.com/hermesEOL/tiny3d/blo ... rce/main.c

Saludos :P
Ya los he mirado y ya he dicho k no los entiendo bien, por eso os he preguntado
Vale, y que parte es la que no entiendes?
        texture_pointer = texture_mem;
   texture_offset = 0;
   png.png_in = png_bin;
   png.png_size= sizeof(png_bin);
   LoadPNG(&png, NULL);
   if(png.bmp_out) {
      memcpy(texture_pointer, png.bmp_out, png.wpitch * png.height);
      free(png.bmp_out);
      png.bmp_out = texture_pointer;
      texture_pointer += (png.wpitch * png.height + 3) & ~3;
      texture_offset = tiny3d_TextureOffset(png.bmp_out);
   }
tiny3d_SetTexture(0, texture_offset, png.width, png.height, png.wpitch,  TINY3D_TEX_FORMAT_A8R8G8B8, 1);
    tiny3d_SetPolygon(TINY3D_QUADS);

    tiny3d_VertexPos(x, y, layer);
    tiny3d_VertexColor(rgba);
    tiny3d_VertexTexture(0.0f, 0.0f);

    tiny3d_VertexPos(x + dx, y, layer);
    tiny3d_VertexTexture(0.99f, 0.0f);

    tiny3d_VertexPos(x + dx, y + dy, layer);
    tiny3d_VertexTexture(0.99f, 0.99f);

    tiny3d_VertexPos(x, y + dy, layer);
    tiny3d_VertexTexture(0.0f, 0.99f);

    tiny3d_End();


el metodo es este? (a grosso modo xd)

texture_pointer = texture_mem;
texture_offset = 0;
memcpy(texture_pointer, png.bmp_out, png.wpitch * png.height);
free(png.bmp_out);
png.bmp_out = texture_pointer;
texture_pointer += (png.wpitch * png.height + 3) & ~3;


Todo esto por que hay que hacerlo?
Hola Hermes, te has pegado un curro tremendo.
Estoy usando tu librería de sonido de momento, después intentaré hacer algo con Tiny3D.

Cuanto más gente la use mejor ...

Gracias por todo.
Solo decir gracias, he conseguido instalarlo y funciona de maravilla. Ahora intere hacer algo con las tiny3d, como ya le dije a hermes en otro post. A ver si consigo algo, porque solo he leido un poco y ya me he mareado xD.
Hermes escribió:Por cierto, no he comentado que estoy trabajando en una nueva versión de PS3LoadX.

La nueva versión, aparte de migrar a Tiny3D, permitirá la carga como siempre, mediante la red; pero tambien accederá a programas que tengamos instalados en /dev_usb/homebrew (como open manager) y permitirá la instalación mediante ficheros ZIP al disco duro, etc.

Vamos, que será un gestor de aplicaciones homebrew con una sencilla interfaz gráfica que mostrará el PNG de la aplicación seleccionada y de la anterior y posterior y que ofrecerá la posibilidad de lanzar de esa forma aplicaciones o mediante la red, con el plus de instalación (algo parecido en cierta forma, al canal homebrew de Wii, para el que lo conozca)

Creo que así tendremos mas fácil trabajar y además, supongo que para la mayoría es mejor instalar un ZIP, que crear un PKG con todo el contenido, que luego lo tienes colgando en el menú principal de la consola, dando por saco XD.

Como se de sobra que la gente de PSL1GHT va pasar de ella y además, hace uso de Tiny3D, la subiré como un ejemplo más, cuando la termine (que no se cuando la terminaré XD)

Saludos


Oye, ¿pero le pasa algo a los de PS1LIGHT contigo?

Estoy haciendo un tetris y no se si poner lo qeu tengo o esperar a estar más avanzado, ¿alguien quiere que ponga la versión que tengo o la pongo cuando este más completa?
Hermes escribió:Por cierto, no he comentado que estoy trabajando en una nueva versión de PS3LoadX.

La nueva versión, aparte de migrar a Tiny3D, permitirá la carga como siempre, mediante la red; pero tambien accederá a programas que tengamos instalados en /dev_usb/homebrew (como open manager) y permitirá la instalación mediante ficheros ZIP al disco duro, etc.

Vamos, que será un gestor de aplicaciones homebrew con una sencilla interfaz gráfica que mostrará el PNG de la aplicación seleccionada y de la anterior y posterior y que ofrecerá la posibilidad de lanzar de esa forma aplicaciones o mediante la red, con el plus de instalación (algo parecido en cierta forma, al canal homebrew de Wii, para el que lo conozca)

Creo que así tendremos mas fácil trabajar y además, supongo que para la mayoría es mejor instalar un ZIP, que crear un PKG con todo el contenido, que luego lo tienes colgando en el menú principal de la consola, dando por saco XD.

Como se de sobra que la gente de PSL1GHT va pasar de ella y además, hace uso de Tiny3D, la subiré como un ejemplo más, cuando la termine (que no se cuando la terminaré XD)

Saludos


Joder Hermes, que crack, un HC para la PS3. Aunque los de PSL1GHT pasen mucha gente lo utilizará no lo dudes.

Suerte y gracias.
kawengod escribió:
Hermes escribió:Por cierto, no he comentado que estoy trabajando en una nueva versión de PS3LoadX.

La nueva versión, aparte de migrar a Tiny3D, permitirá la carga como siempre, mediante la red; pero tambien accederá a programas que tengamos instalados en /dev_usb/homebrew (como open manager) y permitirá la instalación mediante ficheros ZIP al disco duro, etc.

Vamos, que será un gestor de aplicaciones homebrew con una sencilla interfaz gráfica que mostrará el PNG de la aplicación seleccionada y de la anterior y posterior y que ofrecerá la posibilidad de lanzar de esa forma aplicaciones o mediante la red, con el plus de instalación (algo parecido en cierta forma, al canal homebrew de Wii, para el que lo conozca)

Creo que así tendremos mas fácil trabajar y además, supongo que para la mayoría es mejor instalar un ZIP, que crear un PKG con todo el contenido, que luego lo tienes colgando en el menú principal de la consola, dando por saco XD.

Como se de sobra que la gente de PSL1GHT va pasar de ella y además, hace uso de Tiny3D, la subiré como un ejemplo más, cuando la termine (que no se cuando la terminaré XD)

Saludos


Joder Hermes, que crack, un HC para la PS3. Aunque los de PSL1GHT pasen mucha gente lo utilizará no lo dudes.

Suerte y gracias.



Me apunto el primero, jaja.

Edito:
He subido una versión de prueba de lo que estoy haciendo para que opineis... se aceptan sugerencias. Es una primera versión así que no me deis muchos palos, jaja. Para salir pulsar select.

http://www.mediafire.com/?r52npldp3irpqjl
He estado liado intendo lo basico, mostrar un png en pantalla, tras varios intentos, solo he conseguido salidas al xmb, que torpe me siento uhh... -.-. Bueno, mañana seguire intentando, porque hasta que no lo consiga....
Hermes escribió:
varios escribió:Oye, ¿pero le pasa algo a los de PS1LIGHT contigo?


No les pasa nada conmigo: es que son un poco raritus [+risas]

Nah, lo que pasa es que por un lado, no quieren definirse y por otro, tienen un concepto como ellos dicen, de "alto estándar". Eso hace que entre 0 y 10 no haya mas que esa dos opciones y claro, gran parte del trabajo pasa por ir desde 0 al 10 pasando por todos los números según se van mejorando cosas.

Eso hace que yo por ejemplo, esté menos dispuesto a colaborar con ellos en otras tareas, pero no por enfado, si no por lo incómodo que puede resultar y por los puntos de vista tan diferentes: cuando hay feeling uno se implica más.

Yo por ejemplo, cuando incluí el soporte de PNG y JPG, no solo incluí las funciones importadas y un ejemplo de uso: me preocupé de hacer una librería para cargarlos tanto desde memoria como desde fichero y que fuera fácil de usar por vosotros, por que esa es mi manera de trabajar y en mi opinión, aunque importemos funciones de los módulos, nosotros tenemos que desarrollar nuestras propias librerías. Ellos no lo hubieran hecho así, aunque esos cambios los han aceptado.

A mi que no acepten Tiny3D o la ps3soundlib, no me supone problema alguno, salvo que tal vez haya desarrolladores que tarden en enterarse y en el fondo, a quien hacen la zancadilla es a la scene. Pero por otro lado, eso me permite meter los cambios que quiera con libertad y a la larga, es mejor así, porque tendréis mejor material que si tengo que pasar por el filtro de ellos.

varios escribió:Estoy haciendo un tetris y no se si poner lo qeu tengo o esperar a estar más avanzado, ¿alguien quiere que ponga la versión que tengo o la pongo cuando este más completa?


Eso tendrás que valorarlo tu: si te va a llevar un par de días completarla, no lo estropees ;)


Pues ya la he puesto, es más para animar a la gente a programar cosillas y que vean que aún se puede hacer algo.
http://www.mediafire.com/?r52npldp3irpqjl

El código lo pondré cuando lo pula un poco más.

¿Nadie lo ha probado?
Hermes hay alguna forma de usar una fuente cargada con freetype con la libfont de tiny3d?
weno http://dejavu-fonts.org/wiki/Main_Page todas las de deja vu, k son las k usa ubuntu
A ver si alguien sube algún otro ejemplo, porque estoy un poco frito -.-. A ver, la idea general para mostrar un png sería, cargo el PNG en memoria, reservo memoria del RSX, copio el png en memoria a la memoria del RSX, creo un quad y lo texturizo usando el png cargado en la memoria del RSX, a grandes rasgos es eso no?, si no es así entonces es que no he enterado de nada xD, luego cuando lo tenga a mano lo pondre aquí para ver si veis lo que ago mal, pero no os riais de mi, que aun soy un poco noob en esto xD

EDIT: Al fin, lo consegui, apareció la dichosa pelota de baloncesto en pantalla xD, ahora intetare portar el tetris que tenia hecho a ps3, a ver como va la cosa.

PD: Parece que si hermes, tu libreria va a servir para que aparezcan millones de tetris en la ps3 XD
Buenas necesito una mano; resulta que estoy haciendo mis primeros pinitos con el psl1ght y al intentar probar los samples me dice varias veces que falta el archivo cg.dll, es indispensable para compilar pkg para aplicaciones para el RSX¿no?
Un saludo.
Gracias kawengod, ya lo he instalado pero me sigue saliendo el fallo cuando intenta compilar los samples que manejan el RSX y no saca bien los elf de estos samples, el resto sin problemas.
Un saludo.
Lo que a mi me extraña del tutorial de primera página es que tengamos que instalar tantas cosas para hacer una aplicación.
Psmaniaco escribió:Gracias kawengod, ya lo he instalado pero me sigue saliendo el fallo cuando intenta compilar los samples que manejan el RSX y no saca bien los elf de estos samples, el resto sin problemas.
Un saludo.


A mi me pasaba lo mismo, lo que hice fue copiar los archivos cg.dll y trace.dll a /ps3dev/psl1ght/bin, si has instalado el paquete lo encontraras en \archivos de programa\nvida\cg\bin y en \cg\examples\tools\trace respectivamente
Shinigami of Time escribió:Lo que a mi me extraña del tutorial de primera página es que tengamos que instalar tantas cosas para hacer una aplicación.


Si quieres yo he hecho una version precompilada y empaketada en un rar, ademas trae un actualizador (en sh y bat) para poder actualizarlo por partes cada vez que salga algo nuevo (parecido al que trae devkitpro no se si sabes lo k digo, simplemente haces doble click al .bat y esperas a que se actualize): hilo_ps3sdk-1-0-y-multiusos-0-1_1532294
Chaky escribió:
Psmaniaco escribió:Gracias kawengod, ya lo he instalado pero me sigue saliendo el fallo cuando intenta compilar los samples que manejan el RSX y no saca bien los elf de estos samples, el resto sin problemas.
Un saludo.


A mi me pasaba lo mismo, lo que hice fue copiar los archivos cg.dll y trace.dll a /ps3dev/psl1ght/bin, si has instalado el paquete lo encontraras en \archivos de programa\nvida\cg\bin y en \cg\examples\tools\trace respectivamente

Muchas gracias Chaky, era eso, ya ha compilado los samples sin problemas [beer] .
Un saludo.
Hola Hermes ... .¿hay por ahí algún editor 3D libre para poder hacer objetos en 3D que guarde en algún formato que se pueda usar fácilmente para las Tiny3D?

He mirado blender y alguno más.
varios escribió:Hola Hermes ... .¿hay por ahí algún editor 3D libre para poder hacer objetos en 3D que guarde en algún formato que se pueda usar fácilmente para las Tiny3D?

He mirado blender y alguno más.


Si te refieres a algo como 3d max pero libre, tienes blender. Si te refieres a otra cosa no te entiendo xD

Saludos
Como siempre muchas gracias por tu trabajo Hermes.

En una valoración de 0 a 10 tu estás por encima de Mourinho... un 12 xD
kawengod escribió:Como siempre muchas gracias por tu trabajo Hermes.

En una valoración de 0 a 10 tu estás por encima de Mourinho... un 12 xD


Incluso por encima del Barça....un 13 para Hermes [oki] [oki] !!!

Ahora en serio, muchas gracias por tus aportes.....es de lo poco que me motiva para mirar EOL.
Hermes escribió:Por cierto varios ya he probado tu Tetris.

La verdad es que mola :), pero si me permites algunas sugerencias:

- Yo haría un poco mas grande el tablero donde encajan las piezas, porque tienes bastante espacio sobre todo por arriba y por abajo. Además, metería algún tipo de marco porque a mi particularmente, me confunde un poco (al tener el fondo translúcido me cuesta mas captar la forma cerrada del tablero o es la sensación que tengo XD)

- También pondría mas volumen a los efectos de sonido o bajaría el volumen de la música: la música es algo de fondo, un complemento que en mi opinión no debe solapar el sonido de los efectos, que son los que le dan vidilla al juego.

- Por otro lado, acuérdate de poner un botón de pausa XD

Por lo demás me encanta visualmente y a la espera estoy de la versión final (que presumo tendrá modo para dos jugadores XD): menuda imagen de fondo mas cojonuda que te has buscado [+risas]

Eso si, como se nota que vuestra filosofía no es el tamaño contenido: 6MB de PKG! [+risas]

Yo cuando hago algo que ocupa mas de 1MB como que me siento mal y empiezo a pensar en la forma de reducirlo: es un poco tontería a veces, lo se, pero por lo general trabajo así [+risas] (de hecho, en el ejemplo nuevo de TTF he estado pensando en comprimir las fuentes... porque mide lo suyo entre las fuentes y la inclusión freetype, pero al final he pensado que entorpecería entender el funcionamiento y lo he desechado XD)



Es una prueba, por eso estaba esperando a pulirlo más. Los timers con hilos que te pregunte era para que se ejecutara cada cierto tiempo la bajada de las piezas y otro para leer los mandos.Lo del foindo traslucido lo hize en 10 minutos, jaja. simplemente era para ve como quedaba ... y así se ha quedado. La música he puesto una de Creative comons por las licencias. La primera que he puesto era la del Tetris original ... pero claro, la he quitado por cosas del copyright. Esaa si que mola, jajaja.

Lo del espacio ya te digo que era por probar y no me he ciomido mucho la cabeza. La imagen de fondo ocupa 1.30 MB y casi 3 Mb el mp3 de fondo. Hoy en día 6 MB no son mucho. Tenemsos 256 MB con el RSX ... aún hay espacio.
La música se puede bajar pulsando L1 para bajar y R1 para subir.

Estaba preparando una fuente propia y mientras había puesto una tuya. antes de 2 jugadores iba a poner pantala de presentación y marcador final.
414 respuestas
1, 2, 3, 4, 59