Retroceder   Foros PS VITA PSP PS4 PS3 360 WIIU 3DS PC | Scene Tutoriales Ayuda > Playstation Portable > Programación PSP
Respuesta
LinkBack Herramientas Desplegado
Antiguo 07-Nov-2012   #1
Enterado
Redactor
 
Avatar de m.rr

 
 
Fecha de Ingreso: 12-March-2011
Ubicación: Detrás tuya
Mensajes: 179
Gracias: 6
Agradecido 113 veces en 39 mensajes.
El usuario posee 1x PSP Black El usuario posee 1x PSVita El usuario posee 1x GameBoy Advance El usuario posee 1x Nintendo DS El usuario posee 1x PlayStation 1
Predeterminado [Tutorial] Creando tu propio Lua Player

¿Nunca has querido descubrir como crearon LuaHM7, LuaDEV o LuaPGE? Pues ahora con este tutorial ¡sabrás como! Para hacer este tutorial me he basado en uno de va2ron1 de la comunidad de SceneBeta. Así que todos los créditos van para él. Bueno, manos a la obra, para empezar necesitas:
  • El SDK de la PSP (Fácil de encontrar)
  • La*librería*de Lua para C (http://www.lua.org/ftp/lua-5.1.4.tar.gz)


Vale, una vez tengamos todo listo pasamos a *ver el código que debe tener cualquier LuaPlayer:
Main.c
Como los desarrolladores sabréis es el código principal del programa, más adelante está el Makefile. Sin más rodeos aquí está el código:
Cita:
<code>// Lua Player para PSPStation</code>

<code>#include\n#include\n#include\n#include\n#inc lude\n#include</code>

<code>#include "lua.h"\n#include "lualib.h"\n#include "lauxlib.h"</code>

/* Definimos*/\nPSP_MODULE_INFO("LUATEST", 0, 1, 1);

PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

/* Definir printf, para escribir en pantalla*/\n#define printf pspDebugScreenPrintf

int exit_callback(void)\n{\nsceKernelExitGame();

return 0;\n}

int CallbackThread(SceSize args, void *argp)\n{\nint cbid;

cbid = sceKernelCreateCallback("Exit Callback", (void *) exit_callback, NULL);\nsceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;\n}

/* Preparar el callback*/\nint SetupCallbacks(void)\n{\nint thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);\nif(thid >= 0)\n{\nsceKernelStartThread(thid, 0, 0);\n}

return thid;\n}

int lua_ctrlRead(lua_State *L)\n{\nint argc = lua_gettop(L);\nif (argc != 0) return luaL_error(L, "wrong number of arguments");

SceCtrlData pad;\nsceCtrlReadBufferPositive(&pad, 1);

// push return value (multiple return values are possible)\nlua_pushnumber(L, (int)pad.Buttons);

// number of returned arguments\nreturn 1;\n}

#define CHECK_CTRL(name, bit) \\nint name(lua_State *L) \\n{ \\nint argc = lua_gettop(L); \\nif (argc != 1) return luaL_error(L, "wrong number of arguments"); \\n\\n/* get first argument as int */ \\nint argument = luaL_checkint(L, 1); \\n\\n/* push result */ \\nlua_pushboolean(L, (argument & bit) == bit); \\nreturn 1; \\n}

CHECK_CTRL(lua_isCtrlSelect, PSP_CTRL_SELECT)\nCHECK_CTRL(lua_isCtrlStart, PSP_CTRL_START)\nCHECK_CTRL(lua_isCtrlUp, PSP_CTRL_UP)\nCHECK_CTRL(lua_isCtrlRight, PSP_CTRL_RIGHT)\nCHECK_CTRL(lua_isCtrlDown, PSP_CTRL_DOWN)\nCHECK_CTRL(lua_isCtrlLeft, PSP_CTRL_LEFT)\nCHECK_CTRL(lua_isCtrlLTrigger, PSP_CTRL_LTRIGGER)\nCHECK_CTRL(lua_isCtrlRTrigger, PSP_CTRL_RTRIGGER)\nCHECK_CTRL(lua_isCtrlTriangle, PSP_CTRL_TRIANGLE)\nCHECK_CTRL(lua_isCtrlCircle, PSP_CTRL_CIRCLE)\nCHECK_CTRL(lua_isCtrlCross, PSP_CTRL_CROSS)\nCHECK_CTRL(lua_isCtrlSquare, PSP_CTRL_SQUARE)\nCHECK_CTRL(lua_isCtrlHome, PSP_CTRL_HOME)\nCHECK_CTRL(lua_isCtrlHold, PSP_CTRL_HOLD)

int lua_waitVblankStart(lua_State *L)\n{\nif (lua_gettop(L) != 0) return luaL_error(L, "wrong number of arguments");\nsceDisplayWaitVblankStart();\nreturn 0;\n}

// print all arguments, converted to strings\nint lua_print(lua_State *L)\n{\nint argc = lua_gettop(L);\nint n;\nfor (n=1; n <= argc; n++) printf("%s\n", lua_tostring(L, n));\nreturn 0;\n}

int main(int argc, char** argv)\n{\npspDebugScreenInit();\nSetupCallbacks();

const char* scriptName = "script.lua";\nchar* scriptFilename = (char*) malloc(strlen(argv[0]) + strlen(scriptName));\nstrcpy(scriptFilename, argv[0]);\nchar* end = strrchr(scriptFilename, '/');\nend++;\n*end = 0;\nstrcat(scriptFilename, scriptName);

// Iniciar Lua y las librerias\nlua_State *L = lua_open();\nluaL_openlibs(L);

// Poner nombre a las funciones\nlua_register(L, "ctrlRead", lua_ctrlRead);\nlua_register(L, "isCtrlSelect", lua_isCtrlSelect);\nlua_register(L, "isCtrlStart", lua_isCtrlStart);\nlua_register(L, "isCtrlUp", lua_isCtrlUp);\nlua_register(L, "isCtrlRight", lua_isCtrlRight);\nlua_register(L, "isCtrlDown", lua_isCtrlDown);\nlua_register(L, "isCtrlLeft", lua_isCtrlLeft);\nlua_register(L, "isCtrlUp", lua_isCtrlUp);\nlua_register(L, "isCtrlLTrigger", lua_isCtrlLTrigger);\nlua_register(L, "isCtrlRTrigger", lua_isCtrlRTrigger);\nlua_register(L, "isCtrlTriangle", lua_isCtrlTriangle);\nlua_register(L, "isCtrlCircle", lua_isCtrlCircle);\nlua_register(L, "isCtrlCross", lua_isCtrlCross);\nlua_register(L, "isCtrlSquare", lua_isCtrlSquare);\nlua_register(L, "isCtrlHome", lua_isCtrlHome);\nlua_register(L, "isCtrlHold", lua_isCtrlHold);\nlua_register(L, "print", lua_print);\nlua_register(L, "waitVblankStart", lua_waitVblankStart);

// Carga el script\nint status = luaL_loadfile(L, scriptFilename);

// call script\nif (status == 0) status = lua_pcall(L, 0, LUA_MULTRET, 0);

if (status != 0) {\nprintf("error: %s\n", lua_tostring(L, -1));\nlua_pop(L, 1);\n}

// Un poco de limpieza\nlua_close(L);\nfree(scriptFilename);

sceKernelExitGame();



<code> return 0;\n}</code>\nHasta aquí, el código principal, hemos definido los controles y algunas funciones principales. Ya solo nos queda el Makefile. Es el siguiente:\n<code>TARGET = luatest\nOBJS = main.o</code>

<code>INCDIR =\nCFLAGS = -O2 -G0 -Wall\nCXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti\nASFLAGS = $(CFLAGS)</code>

<code>LIBDIR =\nLIBS = -llua -lm\nLDFLAGS =</code>

EXTRA_TARGETS = EBOOT.PBP\nPSP_EBOOT_TITLE = Lua test program



<code>PSPSDK=$(shell psp-config --pspsdk-path)\ninclude $(PSPSDK)/lib/build.mak</code>
Pues ya está ya lo tenéis, ¡vuestro propio Lua Player! Cualquier duda coméntala aquí.
__________________

Última edición por m.rr; 07-Nov-2012 a las 16:46
m.rr está desconectado   Responder Citando
Los Siguientes 5 Usuarios Agradecieron a m.rr por Este Mensaje:
boss_191222 (07-Nov-2012), chus (07-Nov-2012), Gustbran (07-Nov-2012), mmiiqquueell (07-Nov-2012), Zheive (07-Nov-2012)
Publicidad Patrocinada
Antiguo 07-Nov-2012   #2
Elite
Moderador
 
Avatar de Gustbran

 
 
Fecha de Ingreso: 25-December-2011
Edad: 27
Mensajes: 819
Gracias: 324
Agradecido 573 veces en 203 mensajes.
Predeterminado

Muchas gracias mrr esta de lujo hace algún tiempo estuve estudiando Lúa y llegue a hacer mi propios Juegos 2 los cuales nunk publique por q eran muy pobres pero por falta de tiempo tuve q dejarlo saludos y Gracias es un buen lenguaje


PSVita CEFB 1.81 jejejejej
__________________
Gustbran está desconectado   Responder Citando
Antiguo 07-Nov-2012   #3
Enterado
Redactor
 
Avatar de m.rr

 
 
Fecha de Ingreso: 12-March-2011
Ubicación: Detrás tuya
Mensajes: 179
Gracias: 6
Agradecido 113 veces en 39 mensajes.
El usuario posee 1x PSP Black El usuario posee 1x PSVita El usuario posee 1x GameBoy Advance El usuario posee 1x Nintendo DS El usuario posee 1x PlayStation 1
Predeterminado Respuesta: [Tutorial] Creando tu propio Lua Player

De nada
__________________
Visita mi blog de Fórmula 1
m.rr está desconectado   Responder Citando
Antiguo 07-Nov-2012   #4
Developer
Diseñador Gráfico
 
Avatar de chus

 
 
Fecha de Ingreso: 14-February-2009
Ubicación: Siempre estoy del lado del ganador!!!
Edad: 26
Mensajes: 3.678
Gracias: 809
Agradecido 839 veces en 350 mensajes.
Enviar un mensaje por MSN a chus
Predeterminado Respuesta: [Tutorial] Creando tu propio Lua Player

Cita:
Iniciado por Gustbran Ver Mensaje
Muchas gracias mrr esta de lujo hace algún tiempo estuve estudiando Lúa y llegue a hacer mi propios Juegos 2 los cuales nunk publique por q eran muy pobres pero por falta de tiempo tuve q dejarlo saludos y Gracias es un buen lenguaje


PSVita CEFB 1.81 jejejejej

Podrías publicarlo en la sección de desarrollo y ahí podría ayudarte con dudas y eso, se poco lua pero eh hecho ya 3 homebrews y preparo mas XD un saludo amigo
__________________

Metroid Escape Mission v2.0 Descargar
CarroPX v1.2 Descargar
Puzzle Square v1.0 Descargar
Memorama Games v1.0 Descargar
chus está desconectado   Responder Citando
Antiguo 07-Nov-2012   #5
Moderador
Moderador
Campeón, Campeón, Campeón, Campeón, Campeón, Campeón, Campeón
 
Avatar de mmiiqquueell

 
PSN ID: mmiiqquueell
 
Fecha de Ingreso: 02-November-2008
Ubicación: Palma de Mallorca
Edad: 22
Mensajes: 8.453
Gracias: 3.561
Agradecido 2.047 veces en 1.446 mensajes.
Entradas del Blog: 26
Enviar un mensaje por MSN a mmiiqquueell
Predeterminado Respuesta: [Tutorial] Creando tu propio Lua Player

Deberia ponerme o hacer otra cosa?, siempre me ha gustado hacer juegos y animaciones pero no se, es algo complejo. He echo juegos y programas estupidos que no sirven de mucho, o que el LUA lo encuentro complejo en algunos puntos y no seria capaz de hacer nada bien.
Sere capaz de hacerte un MOD completo de L4D, o un ADDON, o lo que quieras con el SOURCE SDK pero con el LUA que es mas facil que atar una cuerda soy incapaz. SOY REVERSE, lo facil es dificil para mi y lo dificil es facil para mi xDD
__________________
Pulsa sobre la imagen para ver una demostración


mmiiqquueell está desconectado   Responder Citando
Antiguo 08-Nov-2012   #6
Avanzado
 
Avatar de zrandi

 
PSN ID: zrandi
 
Fecha de Ingreso: 27-September-2009
Ubicación: Cadiz
Mensajes: 279
Gracias: 201
Agradecido 230 veces en 102 mensajes.
Entradas del Blog: 6
El usuario posee 1x GameCube El usuario posee 1x NES El usuario posee 1x Nintendo 64 El usuario posee 1x Nintendo DS El usuario posee 1x GameBoy Advance
Predeterminado Respuesta: [Tutorial] Creando tu propio Lua Player

AMMMMMMM vale.nunca es tarde si la dicha es buena.
__________________
[CENTER][IMG]http://i36.tinypic.com/ie320x.gif[/IMG][/CENTER]
zrandi está desconectado   Responder Citando
Antiguo 08-Nov-2012   #7
Enterado
Redactor
 
Avatar de m.rr

 
 
Fecha de Ingreso: 12-March-2011
Ubicación: Detrás tuya
Mensajes: 179
Gracias: 6
Agradecido 113 veces en 39 mensajes.
El usuario posee 1x PSP Black El usuario posee 1x PSVita El usuario posee 1x GameBoy Advance El usuario posee 1x Nintendo DS El usuario posee 1x PlayStation 1
Predeterminado Respuesta: [Tutorial] Creando tu propio Lua Player

Zrandi jejej no va tu foro
__________________
Visita mi blog de Fórmula 1
m.rr está desconectado   Responder Citando
Respuesta

Etiquetas
crear lua player, crear makefile, lua, psp


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Desactivado



La franja horaria es GMT +2. Ahora son las 11:27.


  • Síguenos en: Facebook Twitter Google + | Colabora en PSPStation.org | Staff | Publicidad | Condiciones de Uso | Subir Arriba © 2008 - 2013 PSPStation.org