NekeOS – Shell para PSP

Hola a todos. Los siento por no poder escribir en mi blog personal, pero después de este descanso debido a que la universidad no me deja descansar, he decidido ponerme las pilas un poquillo en estos sitios que tengo abandonados. Por eso os traigo un programita para los que aún conservéis una PSP.

NekeOS es una shell gráfico para PSP programado enteramente en Lua (Mediante el interprete OneLua) que permite ejecutar homebrews y juegos de PSP aparte de aplicaciones hechas específicas para esta shell.

20160221170458

Escritorio de NekeOS (Gaia)

Mi idea es la de crear una miniplataforma de desarrollo sobre la cual meter más funcionalidades a la PSP, por ejemplo una minisuite para usarla como servidor web o cliente FTP o sencillamente la edición de texto o el uso de clientes de Twitter y demás (Me tengo que llevar bien con las APIs webs para eso).

Por el momento aún está en beta, a pesar de que todo el sistema interno del shell está bastante avanzado, porque no tiene aún aplicaciones. Esto es debido a que el Shell (Lo que es NekeOS en si) se fundamenta en solo un cargador y manejador de procesos (Véase proceso como cada uno de los programas independientes que se ejecutan secuencialmente en el shell) que se ejecuta de fondo en el sistema.

Uno de estos procesos, el escritorio de NekeOS llamado Gaia, es el primero en cargarse y es el que le da a los demás procesos la interfaz gráfica y los carga para su ejecución. Me refiero a interfaz gráfica a la barra de información, el sistema de notificaciones y la cuadrícula donde salen los programas que se pueden ejecutar, aparte de las funciones del SDK como los botones y demás elementos gráficos.

Sin Gaia, NekeOS no sabría que programas cargar ya que no es su misión, y sin NekeOS, Gaia no sabría como cargar los programas (O sería más difícil). Por lo tanto en lo que me he centrado últimamente es esto, y por eso, de momento está bien como prototipo o entorno de desarrollo, así que ahora me tocará ir creando aplicaciones y demás.

20160221192644.png

Aplicación ejecutandose

He creado esta página para mantener el proyecto y en donde podréis encontrar toda la documentación y descargas, aún así no me quiero ir sin ampliar un poco como se programa en este shell.

Al estar programado en Lua, no se necesita compilar nada, solo con insertar los archivos del programa en su sitio y cargarlos desde el escritorio no tendríais que tener problemas.

Los programas se almacenan en la carpeta usr/bin dentro de la carpeta del homebrew de PSP (Es decir, /PSP/GAME/NekeOS/usr/bin). Ahí creamos una carpeta con el nombre que queramos.

Una vez hecho vamos a crear un archivo index.lua (Este archivo es el que le da a Gaia la metainformación del programa). Dentro contendrá:

name = string con el nombre de la aplicación
icon = icono de la aplicación (Si se encuentra en el tema instalado de NekeOS
icon_path = ruta del icono de la aplicación (Si se encuentra en el directorio del programa
exepath = nombre o ruta del ejecutable (La aplicación en si)
bg_mode = indica el fondo que tiene que tener la aplicación, se puede elegir entre:
   - APP_BG_COLOR: fondo de un color sólido
   - APP_BG_IMAGE: imagen de fondo
   - APP_BG_TRANSPARENT: muestra la imagen de fondo
bg = Aquí definimos el color de fondo (poniendo color.new(R, G, B)) o la ruta de la imagen
start_bg = color de fondo de la animación al cargar el programa (Si no se incluye se pone en blanco)

Aquí tenéis un ejemplo del actualizador de NekeOS:

-- NekeOS Software Update 0.2 index
-- Creado el mié 15 jul 2015 12:38:07 CEST 

-- Indice de la información
name = 'Software Update'
icon = 'system-software-update.png'
bg_mode = APP_BG_TRANSPARENT
start_bg = color.new(255, 150, 0)
exepath = 'update.lua'

Ahora vamos con el programa en sí, para eso tenemos que crear otro archivo (Con el nombre que hayamos puesto en exepath) que debe contener la siguiente estructura:

  • oncreated() : Esta función se ejecuta una vez nada más arrancar la aplicación (Mediante proc.load()) y sirve para inicializar variables y cargar recursos como imágenes y demás que vaya a usar nuestro programa.
  • onloop(): Esta función es la función principal del programa (Como el main en C/C++ o Java). En ella pondremos el código de nuestro programa. No necesitamos hacer un bucle infinito ni actualizar la pantalla, ya que lo hace el propio sistema todo el tiempo. Si no, podríamos bloquear a los demás procesos.
  • onthread(): Esta función se ejecuta en segundo plano. Está pensada para hacer trabajos en segundo plano, como actualizar recursos o hacer trabajos en segundo plano, haciendo que el usuario pueda ejecutar otras aplicaciones.
  • onexit( número ): Esta función se ejecuta solo cuando el programa ha terminado (Ya sea mediante proc.exit() o porque el proceso padre lo ha terminado). Aquí podemos poner el código para cerrar recursos o liberarlos (NekeOS no se encarga de esto, si no que es tarea del programador). A diferencia de las demás, esta contiene un parámetro, que es el parámetro de salida.

Así mismo puede contener más funciones, pero para ello, lo recomendable es hacerlas locales a programa, ya que la forma en la que trabaja Lua no permite encerrar zonas de trabajo, por lo que si no se hace así las funciones quedan definidas globalmente para los demás procesos, pudiendo alterar vuestro programa.

Esto es lo fundamental, para las demás funciones tenéis disponible en la página web una página donde salen todas las funciones públicas del SDK de NekeOS que podréis utilizar siempre que queráis, así como el de las bibliotecas que vienen cargadas por defecto (WaveLib, NKBoard, una biblioteca para el uso de UTF-8 y otra con nuevo tipos de dato para Lua, como colas o pilas). A medida que el sistema se vaya actualizando, iré añadiendo más funciones para extender el uso del shell.

Enlace a descarga: NekeOS 0.5.1

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s