Anuncios Google

Preparando lo necesario y Hola Mundo

Tutoriales Avanzados Homebrewes

¡Buenas gente! hace tiempo que había dejado esto pausado, pero he regresado para continuar este tutorial, no crean que lo iba a dejar así ;)
En esta entrega, explicaré todo lo necesario para comenzar, y como imprimir texto en pantalla, para lograr un Hola Mundo.
Como dije en la anterior entrega, a partir de este tutorial todo será práctico, es decir, que ya pueden ir sacando sus PSP's y alistando sus dedos para Codear!

Para poder programar necesitaremos varias cosas, las listo a continuación:

  • Un editor de textos, si usas Windows, recomiendo usar Notepad++ ya que será el que usaré a lo largo del tutorial.
  • Un intérprete Lua, como ya dije antes, usaremos LuaDev (EBOOT.PBP) (31/10/10 - No se si será el último, pero sirve) y Documentación (No está completa, pero también sirve).
  • Un script.lua, este lo crearemos nosotros con el Notepad++ o editor de textos de tu preferencia.
Una vez descargado el EBOOT, lo colocaremos en la ruta "ms0:/PSP/GAME/<nombre>" <nombre> será el nombre de la aplicación que desarrollen, en nuestro caso le pondremos "Tutorial".

Abrimos Notepad++ y en Lenguaje escogemos "Lua", luego, vamos a Archivo>Guardar como... y lo guardamos como "script.lua" en la ruta donde está el EBOOT, en nuestro caso, en "ms0:/PSP/GAME/Tutorial", y ya estamos listos para programar!




Creando nuestro primer programa, un Hola Mundo

Como necesitaremos que nuestro texto "Hola mundo" se muestre SIEMPRE en pantalla, vamos a necesitar un bucle que repita la funcion que imprime nuestro texto, como habrán visto en muchos lugares se usa el "while true do", así que nuestra primera línea en el script (desde ahora me referiré con script al script.lua) será esta:

while true do

Sintaxis: while true do, es un bucle que se repite siempre y cuando la condición que pongamos entre las palabras "while" y "do" sea verdadera, como queremos que se muestre siempre, forzamos una condición verdadera, escribiendo "true"

Lo siguiente será imprimir el texto en pantalla, para eso usaremos esta línea:

screen.print(10,10,"Hola Mundo")

Sintaxis: screen.print en este caso toma tres argumentos:

  1. La coordenada en X de la pantalla de la PSP.
  2. La coordenada en Y.
  3. El texto a imprimir.
Las coordenadas en X van de 0 a 480, y en Y de 0 a 272, por lo tanto, en esta línea le decimos que en la esquina superior izquierda imprima el texto "Hola Mundo"

Nota: screen.print puede tener más argumentos que esos, en otras entregas haremos uso de ellos, pueden verlos en la Documentación.

Y por último cerraremos el lazo repetitivo while con "end", con lo que el código final nos quedaría así:

while true do
          screen.print(10,10,"Hola Mundo")
end
 
Listo!, guarden el script y ejecuten el EBOOT en la PSP.
 
¿Eh? ¿Qué ha pasado? ¿Por qué no ha salido nada? Presionen Home y salgan al XMB.
En Lua se trabaja con dos "pantallas", una en la que se dibuja todo el contenido y otra que es la que vemos, ¿Por qué?

Pues simple, imaginemos que tenemos una sola pantalla en la que vamos a dibujar, por decir algo, el escritorio de Windows, Colocamos el wallpaper, los íconos, la barra de tareas, alguna que otra ventana abierta, el cursor; en fin, varias cosas, pero ahora tenemos que actualizar por si se ha movido algo, borramos todo y la pantalla se queda vacía, mientras comenzamos a colocar todo de nuevo, ¿Feo verdad?

En cambio, si usamos dos pantallas, una será la que mostraremos mientras en la otra colocaremos wallpaper, íconos, barra de tareas, etc; al terminar las cambiamos, ahora, cuando toca actualizar, en lugar de borrar la que se está mostrando, nos vamos a la otra pantalla, la borramos y actualizamos wallpaper, íconos, barra de tareas, etc; y al terminar la cambiamos de nuevo con la otra, si repetimos el proceso varias veces, nunca nos quedamos sin imagen en pantalla!!

Entonces, para poder intercambiar las "pantallas" en Lua, tenemos una función llamada "flip", que pertenece al módulo screen, por lo tanto, al terminar de dibujar todo lo que queremos mostrar, en nuestro caso, el "Hola Mundo", pondremos screen.flip() quedando nuestro código así:

while true do
          screen.print(10,10,"Hola Mundo")
          screen.flip()
end

Ahora sí, guardemos, y ejecutemos el EBOOT, deberán tener algo como esto en pantalla:

Felicidades!! ya saben imprimir texto en pantalla, los espero en la próxima entrega, tratará sobre el uso de los controles, es decir... el Button Tester xD

Cualquier duda que tengan, hágamenla saber por comentarios, así si alguien tiene la misma duda, ya la habré respondido :)

Saludos!

4.160495
Tu voto: Ninguno Votos totales: 4.2 (81 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Pregunta

Hola, soy un super novato en estos de la programacion asi que no te rias de mi sencilla consulta :

No entiendo cuando dices guardar en " ms0:/PSP/GAME/ " , es una carpeta en windows (porsiacaso estoy ocupando windows para programar) ???

Saludos.

Imagen de Jepte

es en la psp. en este

es en la psp. en este tutorial explico como instalar el entorno de programacion en primer paso

De primera muchas gracias por

De primera muchas gracias por tomar mi duda, pero aún sigo sin entender. Vi tu pagina y la parte del primer paso y mencionas que debo crear una carpeta en la ruta"ms0:/", aun no entiendo a lo que se refiere, ¿debo de no estar entendiendo algun termino?. Enserio soy suuuuper novato en esto de la programacion xd y ahora lo poco que e entendido es que primero debo crear un ambiente en donde pueda programar (algo que crei que no tenia contemplado en esta primera etapa :S). Pero no logro entender la ruta "ms0:/", el compadre de abajo dice que es una referencia pero no caxo :S ..ayuda plis !

PD: nose porque presiento que mi duda debe ser terrible ñufla xd

Realmente estás

Realmente estás malentendiendo dos cosas:

  • ms0, como ya te dijeron, es como el psp "lee" (por así decirlo) la memory stick. Conecta tu psp por usb, en la ventana que se abre verás varias carpetas, entre ellas PSP. Esta es precisamente la carpeta a la que se refieren los tutoriales cuando ponen ms0:/PSP....
  • NO necesitas un "ambiente donde programar", ya que Lua no se compila, se interpreta. Te explico un poco: Arriba en el tutorial te dieron un eboot.pbp, verdad? Ese eboot.pbp es una aplicación, un intérprete, que lo que hará es leer el script.lua que tu programes y ejecutar las instrucciones que escribas en él.

Como notarás, la única preparación que debes hacer es copiar el eboot.pbp a la memoria de tu psp, a la ruta PSP/GAME/Carpeta (el nombre de la carpeta no importa), y en esa misma ruta crear un archivo llamado script.lua, con el que irás trabajando conforme avances. Eso es todo ;)

Imagen de Jepte

..

 , ms0:/, es la memoria que usa tu psp, cuando entras ala memoria desde la pc , la ruta, puede ser f,g,h,k dependiendo de los dispositivos que tengas en tu pc, en el psp siempre es ms0:/ que significa  memory stick 0 , si tu psp es go la ruta es ef:0, lo de entorno de programacion no me hagas mucho caso es mas sensillo de lo que parese, puedes programar en lua donde sea pero para probar lo que has hecho tendras que meter una carpeta con el eboot y el script adentro, en tu psp obiamente en la ruta donde estan todos tus juegos en la carpeta game que esta en la ruta ms0:/psp/game/, si es psp go lo unico que cambia es esto ms0: por ef0:.

y si no tengo una psp y lo

y si no tengo una psp y lo quiero hacer directamente en windows .. puedo crearlo en cualquier carpeta ??

aaa perfecto ! .. no creo

aaa perfecto ! .. no creo programar cosas tan grandes.. si me consigo el emulador, lo ejecuto usando el emulador seleccionando la carpeta en donde esta el archivo supongo??

Imagen de Jepte

si pero como vas a probar el

si pero como vas a probar el rpograma, no se puede arrancar desde el pc al menos que tengas el emulador pero no funciona bien es muy lento si tienes un emulador para psp que funciona bien me lo pasas.xd

No, es en la memory stick

No, es en la memory stick (ms0:/ es una referencia a la memory stick del psp).

Imagen de Tito_Li0

No puedo hacer ni el hola

No puedo hacer ni el hola mundo  Llora

Vale... pero cuál es el

Vale... pero cuál es el problema? =/

Imagen de Andres_Ne

me apracece error capturando

me apracece error capturando erro que estoy  haciendo mal?

Imagen de barney77

Pon tú codigo, por favor.

Pon tú codigo, por favor.

Imagen de Andres_Ne

Gracias

muchad gracias rober

EDITADO: escribi un texto demasiado largo y no me aparece conpleto en pantalla que puedo hacer??gracias

Por ahora nada, hasta que no

Por ahora nada, hasta que no aprendas a manejar las funciones básicas. LuaDEV te va ayudar, pero no te va hacer todo (eso es lo interesante de la programación... resolver los problemas que se te presentan).

PD. Por favor no hagas comentarios duplicados, puedes editar tu comentario anterior si nadie te ha respondido.

Imagen de Andres_Ne

Por favor

Por favor alguien me puede decir con que extencion guardo el script

Arriba lo menciona... "...

Arriba lo menciona...

"... Archivo>Guardar como... y lo guardamos como "script.lua" en la ruta donde está el EBOOT ..."

Imagen de Andres_Ne

Sintaxis?

no entiendo que es sintaxis me explican  porfavor

Se refiere a la forma

Se refiere a la forma correcta de escribir una instrucción para que funcione como debe (después de cada línea Chime da una explicación).

Imagen de fernandodixon3

lo hice todo bien :)

mira lo hice todo bien hasta mi nombre puse xD 

Imagen de TALENT CRAZY

Ya no hay xD

Todo arreglado, va perfecto. Un gran paso para Pedro González Álvarez. Hay lo dejo...

Imagen de TALENT CRAZY

Fallo

lo hago todo bien, o eso creo. el problema es que al iniciar el "hola mundo" en la psp, esta se congela, es decir, pantallazo negro, y se apaga solita.


Los comienzos son difíciles, pero cuando tu cuerpo supera su límite, la mente pide más. Recomiendo que se pasen todos por mi canal de youtube, en el cual pasarán un buen rato. Advierto que soy novato, asique por más razón pasense y dejen comentarios para que mejore. Mi canal se llama MrTalentCrazy

Imagen de Dioni0396

pon tu codigo

por favor.

Imagen de anxoganso

No me funciona me devuelve al XMB tengo un psp go

No me funciona me devuelve al XMB tengo un psp go

Revise todo el nombre el codigo fuente y nada

Imagen de Amii-xX

woow ya pude hacer mi primer

woow ya pude hacer mi primer HOLA MUNDO 

que buen tutorial :D

Imagen de friz97

Que buen tuto

ahora que estoy aprendiendo luadev

¿Y e USB?

Weno, como veo que hay gurus del Lua aqui, me explayo:

llevo un monton de tiempo buscando como leer y escribir por el USB y nada... es posible esto con LUA? Y por usb me refiero al conector mini-usb, no al umd o flash como apuntan las intrucciones System.usbDiskModeActivate()  , System.usbDevUMD() o System.usbDevFlashX()

De momento solo veo scripts para activar o desactivar, ¿pero como se lee o escribe?

Quiero hacer algo que lea los datos del GPS y grabarlos en la tarjeta formateandolos a psx y poder abrirlos con programas de mapas... Y no, no flipo :)

La programcion no es problema, ya llevo 15 años programando. Me he ojeado todos los manuales que he visto por internet de LUA, pero no encuentro algo como usb.read() por ejemplo. Pero si que hay un System.irdaRead() para IrDA o System.sioRead() para el "puerto" rs323...

en fin, alguien puede hacer algo de luz???

Imagen de Chimecho

Pues no

Aún no hay nada para leer del usb en Lua... pero quien sabe, podría haber algo algún día ;)

Imagen de Dioni0396

gurus?

gurus? nos has dicho guiris?

Imagen de Chimecho

no

Se refiere a gurús, como quien dice "masters" o "genios", pero na, aquí nadie es genio xDDD

Imagen de barney77

Hombre

Hombre que facil es LUADEV y podemos hacer maravillas, me cambio a DEV!.

 

EDITO:

¿Por qué si me funciona así?

while true do
             screen.print(10,10,"Hola Mundo")
             screen.flip()
end

Y,¿Por qué así no?

while true do
screen.print(10,10,"Hola Mundo")
screen.flip()
end

Imagen de DeViaNTe

Pq luadev te obliga a

Pq luadev te obliga a programar bien. xDDDDDDDDDDD

Nah, es extremadamente raro. Lo único que se me ocurre pensar es el formato en que pudiste guardar el archivo, (utf-8, windows binary, ascii..), y que no te coja los saltos de linea bien, si no, no caigo en que otra cosa puede ser. Solucion: programa indentando, y te resultará más facil leer tu code xDDDD.


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Imagen de iRVing_Prog

no seria mala idea

que LDEV de "obligara" a programar bien. Como lo hace Python, aunque honestamente al inicio puede ser un dolor de cabeza xD, despues te acostumbras.

:)


 

Yo creo que no hay una "forma

Yo creo que no hay una "forma correcta" de programar. Cada cabeza es un mundo, con que el coder entienda sus scripts, yo creo que es suficiente (claro, a la hora que pida ayuda tendremos que pedir ayuda divina para leer el code xDD)

Imagen de NauTiluS1

Que raro, que error te da?

Que raro, que error te da?

Imagen de Chimecho

:S

Pues, es extraño, debería funcionar de las dos formas... a qué te refieres con que no funciona?

Imagen de barney77

Se congela

Se congela y se apaga S:.

Estás usando notepad++?

Estás usando notepad++?

Imagen de barney77

Sí.

Buenas tengo una pregunta el

Buenas tengo una pregunta

el LuaPlayer solo acepta el lengua de notepad++

o tambien puedo programar en java y reproducirlo en el LuaPlayer??

gracias

Imagen de NEKERAFA

Lua Player solo reproduce

Lua Player solo reproduce lenguaje Lua. Notepad++ es el editor con el que escribimos el programa, pero puede ser tambien  gedit o el bloc de notas.

Puedes programar un programa en java y portarlo a lua, pero nunca hacer que lo ejecute como java ya que estas utilizando un  LuaPlayer, no la maquina de java. Son lenguas diferentes, como si estuvieras hablando en ingles y a algien que entiende ingles le hablas portugues, pues es lo mismo


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Pregunta

Dime que pasaria o la consecuencia  si pogo asi

screen:print

esque mire en otra parte lo mismo pero benia con los dos puntos en lugar de un punto como tu pusiste .. screen.print

que puede pasar se pouede de los 2 ? o donde lo mire se equiboco ? ..

te agradeceria que me explicaras bien haha ..

estoy aprendiendo desde cero cada palabra que miro busco que significa y para que sirve etc etc . Gracias


Imagen de Chimecho

Versiones distintas

Seguramente donde viste el "screen:print" es en algún tutorial de LuaHM.

Los dos puntos, se utilizan para pasar como primer argumento de una función (en la entrega nº 9 lo explico, también está en la documentación), es decir, que en LuaHM el primer argumento de print, no es la coordenada en X, sino, el "objeto" al que se va a imprimir, en este caso, la pantalla.

En LuaDev, es "screen.print", ya que se da por hecho que se imprime en pantalla, y el primer argumento de print en este intérprete, es la coordenada en X.

Como conclusión, si pones "screen:print" en LuaDev, seguramente dará error.

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Gracias

Gracias me sacaste de dudas =) .. ya e aprendido algunas cosas mas boy por buen camino =)

Imagen de Samuelfrm

=D

Grandioso por fin pude hacer un Hola mundo sin que me explicara RG xD, aunque ya habia echo un Button tester pero no aprendi nada xD jajaja.

Saludos y esperare con ansias el siguiente tutorial........

Eres grande Padre.


Twitter

y siempre que quiera

poner el color deseado tiene que ser asi ?

ejemplo:

rojo = color.new(255,0,0)

asi ?

 

Imagen de Chimecho

mmm...

Dejar el off-topic, este tutorial no trata sobre colores, para eso está la siguiente entrega en el foro de programación.

Imagen de barney77

Depende que colores

Depende que colores, busca como utilizar la gama RGB, ya que es la que se utiliza en LUA, mira:

--RedGreenBlue = RGB
Rojo = Color.new(255,0,0) -- Como puedes ver si pones las iniciales RGB, indica el valor 255 en la inicial R, de " RED " ( rojo en español )
 
--Sucede lo mismo con el color azul y el verde
Verde = Color.new(0,255,0)
Azul = Color.new(0,0,255) -- Puedes ver que el valor de "VERDE" está en la inicial G( green = verde en español, pasa lo mismo con el azulm está en la inicial B(Blue = azul en español)

Tienes que aprender a combinar esos 3 colores(gama RGB), para que te den otros colores.

Saludos.

Imagen de Chimecho

HM7...

Eso, estás usando código de HM7, y además, lee el comentario que he dejado más arribita...

Imagen de barney77

Lo siento

Lo siento, no sabía que en DEV se maneja diferente.

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.