Buenas, en esta ocasión presento un proyecto que he iniciado yo mismo, y una alternativa de usar OSLib en vuestras PSP, usando lenguaje C/C++, y con las librerías PSPSDK, tras unas semanas de trabajo, traigo la primera versión de la librería: AMGLib (Andresmargar's Library). La cual incluye funciones de 3D, uso de controles, calculador de FPS, obtención del RTC, carga y muestra de texturas BMP, uso de Sprites 2D y 3D, manejo de luces y cámara, y mucho más...
Resumen de todas las características de la librería
Inicio y salida
Inicio decente de los sistemas 2D y 3D de la PSP, administración de VRAM para buffers de renderizado y para texturas, inicio de callbacks del botón HOME, muestro de errores y debug, manejo y mezcla entre los sistemas 2D y 3D.
Cámara
Administración decente de cámaras, puedes crear el número de veces que quieras, y administrar completamente sus variables (posición, ojo, enfoque), se admiten además aplicar transformaciones en el espacio, como rotar, escalar, mover, guardar y restaurar matrices y configurarlas a tu gusto.
Luces
Manejo de las 4 luces proporcionadas por la PSP, con posibilidades de cambiar la posición en el espacio, color, valor ambiental... Se pueden usar luces tanto direccionales como puntuales. Puedes hacer cel-shading con ellas.
Imágenes
Permite la carga de texturas 2D en formato BMP o TGA de 24 o de 32 bits, con posibilidades de escalado, repetición, obtención de datos... La textura puede ser modificada en tiempo real. También tiene un sistema de Sprites 2D y 3D, con posibilidades de movimiento, rotación y escalado. Puedes poner un color de fondo a la pantalla y cambiar su nivel de brillo con dicho color.
IO
Sistema de administración de teclas, calculador de FPS (frames por segundo), y obtención del RTC de la PSP. Puedes cambiar el GMT al de tu ciudad. También puedes usar hebras mediante hardware y sacar screenshots de la pantalla de la PSP.
Modelos 3D
Una de las más importantes características de un motor 3D es la carga de modelos, este no iba a ser menos, puedes cargar modelos 3D en formato OBJ y MTL, con los objetos que quieras, admite el color, las transparencias, texturas, normales, coordenadas de textura, vertices y caras (deben estar trianguladas con vertices, normales, y coordenadas de textura). Los objetos pueden moverse, rotarse y escalarse individualmente. También tiene un módulo de colisiones por Bounding Box.
Imágenes
Carga de un modelo 3D con iluminación
Mezcla del motor 3D y 2D
Cubo con una textura BMP
Modelos 3D, Entornos, Niebla y Cel-Shading todo junto
Instalación
Simplemente descarga el archivo RAR con la última versión de la librería, instala el PSPSDK de: www.devkitpro.org, y descomprime la librería en un lugar sin espacios, luego, ve a AMGlib/AMGlib, y dale al Compile.bat, si tienes el entorno bien instalado el programa compilará la librería y la colocará en la carpeta de las librerías. Asegúrate de probarlo compilando alguno de los ejemplos. Si te da un EBOOT.PBP, lo has instalado correctamente.
La librería incluye una documentación (simple, hecha en Word), con todas las funciones y estructuras de la librería. Además, en la carpeta Tools, tenemos varias herramientas así como un emulador.
Descarga
Las mejoras de la librería así como su licencia (Creative Commons) están incluidos en el archivo de descarga.
Versión 0.4 ESTABLE
- Corrección de fallos menores
- Añadido un pequeño motor de audio (carga de WAV PCM 16bits soportada)
- Añadidas funciones matemáticas (vectores)
- Añadidas funciones para calcular normales y suavizarlas mediante código (Cel-Shading mejorado)
- Añadidas matemáticas por VFPU (mayor velocidad de cálculo)
- Ahora puedes poner SkyBoxes (entornos)
- Modificada estructura AMG_Texture, añadido mayor control para activar MIPMAPS
- Añadidas funciones para controlar la niebla
- Añadidas funciones de control de batería y velocidad de CPU
- Documentación actualizada
- Revisados los ejemplos
- Añadido un completo ejemplo usando Cel-Shading, Audio, Niebla, Modelos 3D, VFPU y SkyBoxes todo en uno
Descarga: https://sourceforge.net/projects/amglib/files/AMGLib_V0.4_STABLE.zip/download
Versión 0.3 ESTABLE
- Mejor carga de BMP de 24 y 32 bits (por no decir sin errores)
- Arreglados bugs con el uso de Sprites y modo 2D
- Añadida carga de textura TGA de 24 y 32 bits
- Carga de texturas englobada: AMG_LoadTexture();
- Añadidas funciones para hebras (crear subrutinas)
- Añadidas funciones de edición de texturas
- Ahora los Sprites pueden tener animaciones (frames)
- Añadidas funciones de números aleatorios
- Añadido motor de colisiones (Bounding Box)
- Añadida una prueba de concepto de Cel-Shading
- Se ha actualizado la documentación (nuevas funciones + corrección de fallos)
- Añadidos 3 ejemplos nuevos
https://sourceforge.net/projects/amglib/files/AMGLib_V0.3_STABLE.zip/download
Versión 0.2 ESTABLE
- Ahora las teclas controladas por KERNEL están soportadas
- Ahora podemos ver cuando una tecla se pulsa 1 vez
- Ahora puedes realizar capturas de pantalla y guardarlas en formato BMP
- Añadido un pequeño motor de texto en 2D (posiciones y colores aceptados)
- Ahora se distribuye una documentación en inglés
- Arreglo de fallos menores (las texturas se ven algo mejor en modelos)
Versión 0.1 BETA
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Se ve bueno ,habra que probar
Se ve bueno ,habra que probar ;)
Salida TV
Bueno pegaría aquí el código pero ahora mismo no lo tengo en este ordenador, (buscaré el link si es que aún existe)
Me refería a conectar la psp slim a la tv, algunos hombrews como el emulador de n64 lo utilizan para sacar la imagen a pantalla completa en una tv, la verdad es que lo estaba intentando compilar con amglib porque solamente eran 10 o 12 lineas de código que reconocen si conectas el cable o no, después había que cambiar el nombre de una función y se supone que funcionaba.. supongo que irá algo mas lento al ser mayor resolución.
Pobre PSP
Supongo que lo que hará será
Supongo que lo que hará será enviar la imagen escalada a la tv por usb, de todas formas estuve mirando en "pspusb.h" y en "pspusbbus.h" y al parecer puedes "intentar" registrar a la psp como un driver a otro aparato, y creo que si eso saldría bien se podría enviar la imagen.
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
No
Lo que hace es usar el cable de tv y usar 720x480p.
Si alguien lo quiere o lo puede compilar, casi todos los links murieron, pero aún está en esta dirección el ejemplo con el codigo:
http://dl.qj.net/psp/homebrew-applications/fullscreen-tv-out...
Pobre PSP
:)
No se que me pasó pero ya no puedo compilar nada para psp.. por eso me había olvidado un poco de esto, pero tiene muy buena pinta, buenisima, a ver si vuelvo a intentar arreglarlo..
Por cierto, creo que sería buenísima idea añadir la salida de tv a 720x480, yo lo puedo probar con mi psp pero no sabía muy bien como integrar el código.
Otra cosa, con la versión anterior, y antes de que me dejase de compilar... conseguí modificar el color de cada pixel por separado, en una textura, eso puede servir para hacer "bump map" o texturas 3d que cambian según estén orientadas. La verdad es que lo hice sobre una textura de 64x64, y para hacer texturas de agua o tierra se ven decentes.
Pobre PSP
Hola!
¿Qué quieres decir con salida a tv? ¿A que veas la psp desde la TV? Que yo sepa no hay nada en el sdk para hacer eso...
Por cierto, tiene buena pinta eso del "bump map" (estuve mirando en google y al parecer da buenos resultados). ¡Ánimo!
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Que
Que buena pinta tiene la librería :D Te animo a que sigas desarrollandola. Un saludo.
Muchas gracias ^^
Muchas gracias ^^
Nueva versión!
Pues sí, he subido otra versión más, la 0.4, aquí están las mejoras (son muchas):
- Corrección de fallos menores
- Añadido un pequeño motor de audio (carga de WAV PCM 16bits soportada)
- Añadidas funciones matemáticas (vectores)
- Añadidas funciones para calcular normales y suavizarlas mediante código (Cel-Shading mejorado)
- Añadidas matemáticas por VFPU (mayor velocidad de cálculo)
- Ahora puedes poner SkyBoxes (entornos)
- Modificada estructura AMG_Texture, añadido mayor control para activar MIPMAPS
- Añadidas funciones para controlar la niebla
- Añadidas funciones de control de batería y velocidad de CPU
- Documentación actualizada
- Revisados los ejemplos
- Añadido un completo ejemplo usando Cel-Shading, Audio, Niebla, Modelos 3D, VFPU y SkyBoxes todo en uno
Os dejo una imagen del último ejemplo (Cel-Shading, modelos 3D, VFPU, entorno y niebla, todo junto):
Descarga: https://sourceforge.net/projects/amglib/files/AMGLib_V0.4_STABLE.zip/download
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Versión 0.3 ESTABLE
Acabo de subir una nueva versión (la 0.3). Cambios:
- Mejor carga de BMP de 24 y 32 bits (por no decir sin errores)
- Arreglados bugs con el uso de Sprites y modo 2D
- Añadida carga de textura TGA de 24 y 32 bits
- Carga de texturas englobada: AMG_LoadTexture();
- Añadidas funciones para hebras (crear subrutinas)
- Añadidas funciones de edición de texturas
- Ahora los Sprites pueden tener animaciones (frames)
- Añadidas funciones de números aleatorios
- Añadido motor de colisiones (Bounding Box)
- Añadida una prueba de concepto de Cel-Shading
- Se ha actualizado la documentación (nuevas funciones + corrección de fallos)
- Añadidos 3 ejemplos nuevos
El link está en el post. Saludos!
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
He estado mirando el source y
He estado mirando el source y se ve muy limpio, se nota que eres bueno
Por cierto si quieres cualquier cosa ya sabes, mándame un MP y yo encantado de ayudarte.
Gracias :D
Gracias :D creo que dentro de poco necesitaré algo de ayuda xD Te avisaré por MP
Saludos!
muy interesante, veere qeu
muy interesante, veere qeu tal esta, gracias por el aporte¡¡
Gracias :)
Me alegra que te guste ^^