Programación - PS Vita

Programación - PS Vita


Bueno después de haber visto los conceptos básicos de lua, vamos a empezar algo un poco más interesante correr y hacer nuestros propios Homebrew para PS Vita.

¿Cómo ejecutar tus propios programas en una PS Vita?

Bueno lo primero que debes saber es que existen tres formas de ejecutar homebrew o código en tu consola:
  • Siendo un desarrollador oficial: es decir tener el Sdk oficial de la empresa fabricante del dispositivo, generalmente son las casas desarrolladoras videojuegos como Electronic Arts‎, Activision, Capcom, entre otras. Si quieres saber como ser un desarrollador oficial de Sony puedes consultar el siguiente enlace
  • Teniendo tu consola liberada, permitiendo la ejecución de código no oficial, para el caso de la PS Vita tener un custom firmware o un hombrew enabler.
  • Mediante el navegador del dispositivo: que te permitira ejecutar código JavaScript, sin embargo con esta opción no accederemos a todas las funciones de dispositivo como eventos del sistema, los sensores que nos dan medida de orientación, aceleración, velocidad entre otros.

En mi caso mi consola tiene HENKaku Ensō lo que permite ejecutar código no oficial en la consola (puedes ver mi articulo de como instalar HENkaku ENSO en PS Vita ), para el caso del lenguaje Lua necesitamos un interprete y para esta consola en particular la scene esta muy avanzada, ya que existen varios interpretes.

De momento vamos a descargar el siguiente VPK para nuestras consolas:

descarga

Aunque es un homebrew algo sencillo sera el que yo usare para probar el código antes de general la aplicación final.

Eligiendo el interprete

Como lo mencione antes la scene de PS Vita esta muy avanzada debido a que muchos de los avances en cuanto a hacking y programación de PSP fueron compatibles con la PS Vita, y Lua es uno de esos lenguajes usado ampliamente en la scene. Personalmente a dia de hoy conozco dos grandes proyectos ONELua y Lua Player Plus, el primero compatible tanto para PSP como para PS Vita y el segundo funciona en PS Vita y Nintendo 3DS, obviamente hay muchos más interpretes cada uno con sus ventajas. pero son los dos que veo mas activos
Aprovechando que el grupo de ONELua acaba de sacar una nueva versión y ademas cuenta con muchos módulos interesantes lo usaremos.

ONELua

ONELua es un proyecto multiplataforma orientado a facilitar la programación tanto para programadores como aquellos que no lo son, con la llegada de Henkaku por el Team Molecule, por fin la vita era accesible y cualquier usuario podria utilizar Homebrew´s, en ese momento decidimos que era momento de portar ONElua y crear una versión completa para la PlayStation Vita.

Debido que aán estaba en inicios vitasdk y la falta de samples, requirió un poco más de tiempo el realizar toda la codificación y pruebas personalmente, por lo tanto la primera version sale con tal retraso desde la aparición de Henkaku.

Aquí encontrarás las principales funciones de ONElua para PSP pero claro, con funciones nuevas y especiales para la PSVita.

Lo anterior es tomado de la documentación oficial de ONELua.

Ademas ONELua permite el manejo de los botones físicos, cámara frontal, cámara trasera, sensores como el acelerometro, giroscopio, el touch trasero, touch delantero, entre muchas otras funciones. y una de las cosas que me gusta es que tiene una documentación decente no como otros proyectos asi que por el momento usaremos ONELua. Supongo que es necesario decir que Ocitronix-Lua esta hecho con las herramientas que da el grupo de ONELua.

Hola Mundo en PS Vita

Una ves descargado el archivo .vpk, lo pasaremos a nuestra consola mediante FTP, en mi caso tengo una carpeta llamada instaladores en ux0


Ahora lo instalamos ya sea con vita shell o con molecular shell


Ahora veremos como un nuevo icono aparece en nuestra consola


Si la abrimos veremos como aparece un mensaje en pantalla.

y listo ya estamos listos para hacer nuestros propios programas o juegos (si ya sé, no me quedo muy bonito que digamos el diseño, pero digamos que es por el momento y mientras probamos nuestros primeros códigos).

Una vez instalado en la consola lo único que tenemos que hacer es pasarle el script escrito en lua en la carpeta ux0:app/OCITR0N1X.


Para entenderlo mejor haremos un hola mundo por ser un código sencillo solo que ahora sera ejecutado en nuestra consola.
-- Ejemplo de código para PS Vita color.loadpalette() back = image.load("resources/back.png") while true do buttons.read() if back then back:blit(0,0) end screen.print(25, 15, "Hola Mundo - Ocitronix",1, color.green, color.black) screen.flip() end
Bueno se ve un poco diferente al hola mundo que hicimos en el articulo Interprete Lua y el famoso hola mundo asi que vamos a explicar linea a linea aquello que no hemos visto en los artículos anteriores de Lua.

color.loadpalette(): Carga una paleta de 17 colores básicos, listos para usarse Los colores son:
  • red
  • green
  • blue
  • cyan
  • magenta
  • yellow
  • maroon
  • grass
  • navy
  • turquoise
  • violet
  • olive
  • white
  • gray
  • black
  • orange
  • chocolate
  • shine
  • shadow
Esto nos permite usar color.green y color.black en el metodo screen.print()

back = image.load("resources/back.png") se crea una variable back en la cual se usa el método image.load para cargar una imagen que servirá como fondo de pantalla de la aplicación.

buttons.read(): Lee las pulsaciones de los botones, guardando el resultado en constantes booleanas. De esta forma, para saber si se ha presionado por ejemplo la tecla R, revisamos el estado de la constante buttons.r directamente.

if back then back:blit(0,0) end esta linea contine algo muy interesante y es back:blit(0,0) primero miremos el siguiente ejemplo:

supongamos que estamos hciendo un juego de carreras y tenemos una función que hace que un carro se mueva
function carro.mueveDerecha(carro,pixeles) carro.x = carro.x + pixeles end
Debido a que carro es un objeto y tiene métodos como carro.moverDerecha o carro.MoverIzquierda. pero como el primer argumento es una llamada al mismo el mismo objeto carro podemos ejecutar esta función de las siguientes maneras:
carro.mueveDerecha(carro,pixeles) carro.mueveDerecha(self,pixeles) carro:mueveDerecha(pixeles)
Todas hacen exactamente lo mismo, la primera es como estamos acostumbrados a invocar una función, en la segunda se utiliza la palabra self para referirse a si mismo osea, referirse a carro, y en la ultima solo se usan los dos puntos y automáticamente Lua interpreta que el primer argumento de la función es el mismo modulo carro. 
Lo sé suena algo enredado, de momento supÓn lo siguiente:
--tenemos: if back then back:blit(0,0) end -- Es lo mismo que if back then back.blit(back,0,0) end
screen.print(x, y, "txt",size, face, shadow): Imprime texto en la pantalla con tamaño y colores personalizados con los siguientes parametros:
  • x Coordenada X donde se imprimirá el texto.
  • y Coordenada Y donde se imprimirá el texto.
  • txt Texto a imprimir.
  • size Tamaño del texto. No hay restricción, pero son preferibles tamaños cercanos a 1.
  • face Color del texto.
  • shadow Color de la sombra.
Por ultimo screen.flip(): Actualiza la pantalla. Cualquier modificación que se haga a la misma (mostrar imágenes, dibujado de formas o texto) no será visible hasta que no se llame esta función.

Ejecutando nuestro primer programa en PS Vita

Una vez tenemos entendido lo anterior guardamos el archivo como script.lua y lo pasamos a ux0/app/OCIT0N1X he iniciamos la aplicación ahora veremos como en pantalla tenemos un texto que dice Hola Mundo - Ocitronix

Video



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Comentarios

Entradas más populares de este blog

SAFE MODE en PS Vita