PS2 Lua Player
PS2 Lua Player
Now that we have a recent (5.1) and functional lua interpreter running on the PS2 (still have few minor issues but they will be corrected in the next few days), it would be great to see coming a PS2 Lua player ! Aiming to enjoy on our beloved black box those nice lua games available today "only" on the PSP.
Having reviewed a bit the PSP player, I noticed that there is no abstraction layer with all the "system calls", meaning that a script will not be able to run both on PS2 or PSP.
So I would appreciate if interested people (if there is any) could give their feedback/idea(s) for the implementation of a PS2 player :)
Hoping to see you soon here...
evilo.
NB : for those interested lua is in the svn repository
http://svn.ps2dev.org/listing.php?repna ... rev=0&sc=0
Having reviewed a bit the PSP player, I noticed that there is no abstraction layer with all the "system calls", meaning that a script will not be able to run both on PS2 or PSP.
So I would appreciate if interested people (if there is any) could give their feedback/idea(s) for the implementation of a PS2 player :)
Hoping to see you soon here...
evilo.
NB : for those interested lua is in the svn repository
http://svn.ps2dev.org/listing.php?repna ... rev=0&sc=0
Last edited by evilo on Sun Aug 13, 2006 11:04 am, edited 1 time in total.
-
- Posts: 116
- Joined: Mon Jul 18, 2005 2:20 am
I think it will be too hard (or impossible) as evilo has mentioned to support PSP LuaPlayer scripts on the PS2. Also, the capabilities of both machines are so different, a different interface is really needed.
So, what we need to do is start by defining what functionality we'd like to see in a Lua 4 PS2 and then figuring out how to get there. We can post suggestions here and then maybe use a Wiki to really fill out the API.
Simple beginning:
2d drawing operations (2d sprites, blitting, etc)
3d drawing operations (3d objects, rotations & translations, camera, etc)
pad input (multitap support)
sound (music, sfx)
??
So, what we need to do is start by defining what functionality we'd like to see in a Lua 4 PS2 and then figuring out how to get there. We can post suggestions here and then maybe use a Wiki to really fill out the API.
Simple beginning:
2d drawing operations (2d sprites, blitting, etc)
3d drawing operations (3d objects, rotations & translations, camera, etc)
pad input (multitap support)
sound (music, sfx)
??
In my opinion (making a very quick analysis), and seeing the PSP lua player implementation, main parts are :
* luaplayer : This is the player itself, I would recommend just loading script by host in the first time, then once we'll have a first stable version, we'll add others possibilities (usb, hdd or whatever)
* luacontrols : This can be easily ported to PS2, functions name are independent of the target machine (without mentioning that buttons names are almost identical). Only one pad support could be coded in a first time.
* luasound : The PSP version is based on mikmodlib, we could also use it. It gives the advantage of some portability for this part and if I'm not wrong, someone was working on porting it to the ps2 (I'll check with him), so the work is already half done.
* luagraphics : Functions names can be maintained, however there is a huge work to be done here. Here we have two choices :
- SDL (that relies on gsKit), that already implements most of the needed features (sprite managing, blitting, font, etc....)
- gsKIt, surely better to use it directly, as using SDL would add an additional layer (lua script -> luagraphics-> SDL -> gsKit -> GS)
* luatimer : This can be recoded easily as well. Additionally ntba has coded a timer library (that contains missing time functions from the ps2sdk : http://www.ntba2.de/?p=libps2time) so we just need to plug it in.
* luawlan : no wlan support in the PS2, but we could add network play, would be even nice to be able to interconnect lua on the psp through wifi and lua on the ps2 through network.
* lua3d : I don't know yet... but gsKit is the key as for the luagraphics, this can be done in a second step.
* luasystem : this part has to be reviewed completely...
Speaking about priority for a first step, I would say :
1. luaplayer (loading from host)
2 .luacontrols (only 1 pad support)
3. luagraphics (as complete as possible)
4. luasound (mikmodlib)
5. luatimer (in case it's really needed by games in a first time).
Second step :
- enhance previous points :
- add lua3d, luawlan (-> lualan), luasystem,etc..
I would also suggest to everyone participating to agree on a first simple game, and to concentrate on the first features needed to get it running.
Evilo.
* luaplayer : This is the player itself, I would recommend just loading script by host in the first time, then once we'll have a first stable version, we'll add others possibilities (usb, hdd or whatever)
* luacontrols : This can be easily ported to PS2, functions name are independent of the target machine (without mentioning that buttons names are almost identical). Only one pad support could be coded in a first time.
* luasound : The PSP version is based on mikmodlib, we could also use it. It gives the advantage of some portability for this part and if I'm not wrong, someone was working on porting it to the ps2 (I'll check with him), so the work is already half done.
* luagraphics : Functions names can be maintained, however there is a huge work to be done here. Here we have two choices :
- SDL (that relies on gsKit), that already implements most of the needed features (sprite managing, blitting, font, etc....)
- gsKIt, surely better to use it directly, as using SDL would add an additional layer (lua script -> luagraphics-> SDL -> gsKit -> GS)
* luatimer : This can be recoded easily as well. Additionally ntba has coded a timer library (that contains missing time functions from the ps2sdk : http://www.ntba2.de/?p=libps2time) so we just need to plug it in.
* luawlan : no wlan support in the PS2, but we could add network play, would be even nice to be able to interconnect lua on the psp through wifi and lua on the ps2 through network.
* lua3d : I don't know yet... but gsKit is the key as for the luagraphics, this can be done in a second step.
* luasystem : this part has to be reviewed completely...
Speaking about priority for a first step, I would say :
1. luaplayer (loading from host)
2 .luacontrols (only 1 pad support)
3. luagraphics (as complete as possible)
4. luasound (mikmodlib)
5. luatimer (in case it's really needed by games in a first time).
Second step :
- enhance previous points :
- add lua3d, luawlan (-> lualan), luasystem,etc..
I would also suggest to everyone participating to agree on a first simple game, and to concentrate on the first features needed to get it running.
Evilo.
Last edited by evilo on Sat Jun 17, 2006 3:57 am, edited 2 times in total.
I don't know much about how luacontrols is setup... but this part should be pretty easy to do... I think aiming to have support for up to four players should be the goal. I have some code for pad that looks really good, but I'll have to see if I can use it or not..evilo wrote: * luacontrols : This can be easily ported to PS2, functions name are independent of the target machine (without mentioning that buttons names are almost identical). Only one pad support could be coded in a first time.
I'd highly recommend going with gskit and staying away from SDL. Along with removing an extra layer it would also give a big speed boost, as unless someone has done some major work on it, SDL does all graphics in software (which is quite slow!)evilo wrote: * luagraphics : Functions names can be maintained, however there is a huge work to be done here. Here we have two choices :
- SDL (that relies on gsKit), that already implements most of the needed features (sprite managing, blitting, font, etc....)
- gsKIt, surely better to use it directly, as using SDL would add an additional layer (lua script -> luagraphics-> SDL -> gsKit -> GS)
Shoot Pixels Not People!
Makeshift Development
Makeshift Development
Here's what I have done (but it needs to be formed into a nice API):
input:
lp2ReadInput() - updates the state of all the pads
pads - this global variable has the number of pads plugged in
pad[x] - this contains the state of pad x at the last update.
pad[x].SELECT - true/false whether SELECT button was pressed
-- etc for START, LEFT,RIGHT,UP,DOWN, CROSS,CIRCLE,TRIANGLE,SQUARE, R1,R2,R3,L1,L2,L3
pad[x].RJOY_V - value of joystick access between 0-255 (127 is center)
-- etc for RJOY_H, LJOY_V, LJOY_H
normJoyAxis(value) - lua helper function that converts analog stick data into the range [-1,1] with a dead zone between 92 - 162 (based on some tests with different joysticks)
3d:
lp2BeginScene(r,g,b) - sets up the beginning of a frame
lp2MatrixMode(LP2.PROJECTION) - set Matrix Mode to LP2.PROJECTION or LP2.MODELVIEW (like OpenGL)
lp2LoadIdentity() - load identity into current matrix
lp2Perspective(fov, aspect, znear, zfar)- multiply current matrix by the perspective matrix defined
lp2Rotate(angle, x,y,z) - angle and x,y,z vector to rotate current matrix around
lp2Translate(x,y,z) - Translates current matrix by given amount.
lp2PushMatrix() - push current matrix
lp2PopMatrix() - pop current matrix
lp2WaitVSync() - Wait for a VSync
lp2EndScene(r,g,b) - End the scene and clear the screen (clears screen on PS2, renders vertex queues)
lp2RenderBuffers(verts, vertArray, colorArray, points, pointArray) - renders buffers of vertices and colors in the triangles specified by pointArray.
lp2Begin(LP2.TRIANGLES) - begin rendering vertices as triangles
lp2End() - finished rendering vertices
lp2Vertex(x,y,z) - x,y,z of vertex to render
lp2Color(r, g, b) - r,g,b of vertex to render
I also have a character animation/rendering class built in Lua and a model exporter for Blender that current only exports meshes. Working on skeleton and animation exporting.
Big TODOs are texturing and animation support.
But, all this will need reworked into reusable components for others.
Oh, and the whole thing runs in OpenGL and is mostly identical to the PS2.
input:
lp2ReadInput() - updates the state of all the pads
pads - this global variable has the number of pads plugged in
pad[x] - this contains the state of pad x at the last update.
pad[x].SELECT - true/false whether SELECT button was pressed
-- etc for START, LEFT,RIGHT,UP,DOWN, CROSS,CIRCLE,TRIANGLE,SQUARE, R1,R2,R3,L1,L2,L3
pad[x].RJOY_V - value of joystick access between 0-255 (127 is center)
-- etc for RJOY_H, LJOY_V, LJOY_H
normJoyAxis(value) - lua helper function that converts analog stick data into the range [-1,1] with a dead zone between 92 - 162 (based on some tests with different joysticks)
3d:
lp2BeginScene(r,g,b) - sets up the beginning of a frame
lp2MatrixMode(LP2.PROJECTION) - set Matrix Mode to LP2.PROJECTION or LP2.MODELVIEW (like OpenGL)
lp2LoadIdentity() - load identity into current matrix
lp2Perspective(fov, aspect, znear, zfar)- multiply current matrix by the perspective matrix defined
lp2Rotate(angle, x,y,z) - angle and x,y,z vector to rotate current matrix around
lp2Translate(x,y,z) - Translates current matrix by given amount.
lp2PushMatrix() - push current matrix
lp2PopMatrix() - pop current matrix
lp2WaitVSync() - Wait for a VSync
lp2EndScene(r,g,b) - End the scene and clear the screen (clears screen on PS2, renders vertex queues)
lp2RenderBuffers(verts, vertArray, colorArray, points, pointArray) - renders buffers of vertices and colors in the triangles specified by pointArray.
lp2Begin(LP2.TRIANGLES) - begin rendering vertices as triangles
lp2End() - finished rendering vertices
lp2Vertex(x,y,z) - x,y,z of vertex to render
lp2Color(r, g, b) - r,g,b of vertex to render
I also have a character animation/rendering class built in Lua and a model exporter for Blender that current only exports meshes. Working on skeleton and animation exporting.
Big TODOs are texturing and animation support.
But, all this will need reworked into reusable components for others.
Oh, and the whole thing runs in OpenGL and is mostly identical to the PS2.
Re: PS2 Lua Player ?
This is a good idea.evilo wrote:Now that we have a recent (5.1) and functional lua interpreter running on the PS2 (still have few minor issues but they will be corrected in the next few days), it would be great to see coming a PS2 Lua player !
There is some kind of abstraction layer: For the Windows player I've just emulated all the needed PSP functions. But you are right, maybe it would be better to create a more high level abstraction layer. One idea would be to seperate more cleanly the Lua part and the implementation part, like in luagraphics.cpp and graphics.cpp. The driver then is graphics.cpp, only.evilo wrote: Having reviewed a bit the PSP player, I noticed that there is no abstraction layer with all the "system calls", meaning that a script will not be able to run both on PS2 or PSP.
I don't have a PS2 any more, is an OpenGL implementation available for it? I ask becaus I want to change the graphics part to OpenGL, emulating all current luagraphics functions with OpenGL. This should be even faster for some operations, like fillRect and image blitting, when caching multiple images in VRAM as a texture. And then it would be easier to port it to other platforms, e.g. PS3 and MacOSX.
- daurnimator
- Posts: 38
- Joined: Sun Dec 11, 2005 8:36 pm
- Location: melbourne, australia
I've got some code that implements parts of this. But, I've been involved in packing and moving and I don't have my PC set up again. Hopefully I'll get it up some time this weekend and start refactoring what I've got into a more library-esque distribution.
That, and I need to figure out how to get my updates into svn since I don't have an internet connection at home.
That, and I need to figure out how to get my updates into svn since I don't have an internet connection at home.
Hi,
I'm working on it, together with tmator and sspeare !
I've been off these last days, but I started to make a skeleton of the ps2 player, and started working on the control part.
tmator has been working on the mikmodlib, that is used on the psp for all the sound stuff, so we plan to use it as well for the PS2 (dunno if he finally got it working). The plan beeing to be as close as possible of the PSP one, in order to give some kind of interoperability between the two players :)
if you want to join, you're welcome. As soon as I'll have a first clean skeleton with a few things inside maybe i'll put it into svn if other are working on it as well.
regards,
evilo.
I'm working on it, together with tmator and sspeare !
I've been off these last days, but I started to make a skeleton of the ps2 player, and started working on the control part.
tmator has been working on the mikmodlib, that is used on the psp for all the sound stuff, so we plan to use it as well for the PS2 (dunno if he finally got it working). The plan beeing to be as close as possible of the PSP one, in order to give some kind of interoperability between the two players :)
if you want to join, you're welcome. As soon as I'll have a first clean skeleton with a few things inside maybe i'll put it into svn if other are working on it as well.
regards,
evilo.
Just to give a quick update on the project : I now have LuaControls library implemented.
I know that it's not so much, and that there is nothing to make a big fuzz about, but this is a first step done for the player :)
now I'm able to run this kind of script :
drakonite: right now, there is support for one pad only (port 0, slot 0), later i think to add a new function Controls.read(pad number) in order to use the others.
next step is the graphic part with LuaGraphics (using gsKit).
cheers !
I know that it's not so much, and that there is nothing to make a big fuzz about, but this is a first step done for the player :)
now I'm able to run this kind of script :
Code: Select all
-- A very simple pad test script
print("Lua pad test program by evilo", "Press buttons for testing")
while true do
-- screen.waitVblankStart()
pad = Controls.read()
if pad:circle() then
print("circle pressed")
end
if pad:cross() then
print("cross pressed")
end
if pad:triangle() then
print("triangle pressed")
end
if pad:square() then
print("square pressed")
end
if pad:select() then
print("select pressed")
end
if pad:start() then
print("start pressed")
end
if pad:up() then
print("up pressed")
end
if pad:down() then
print("down pressed")
end
if pad:left() then
print("left pressed")
end
if pad:right() then
print("right pressed")
end
if pad:l1() then
print("l1 pressed")
end
if pad:r1() then
print("r1 pressed")
end
if pad:l2() then
print("l2 pressed")
end
if pad:r2() then
print("r2 pressed")
end
if pad:l3() then
print("l3 pressed")
end
if pad:r3() then
print("r3 pressed")
end
end
next step is the graphic part with LuaGraphics (using gsKit).
cheers !
A little hello from LuaPlayer on the PS2 :)
Luagraphics need more testing, but this is a nice step !
a quick status :
LuaControls : one pad support implemented
LuaGraphics : see above :)
LuaSounds : on it's way :)
More to come !!
Code: Select all
green = Color.new(0, 255, 0)
screen:print(200, 100, "Hello World!", green)
for i=0,20 do
x0 = i/20*479
y1 = 271-i/20*271
screen:drawLine(x0, 271, 479, y1, green)
end
screen.flip()
while true do
screen.waitVblankStart()
end
Luagraphics need more testing, but this is a nice step !
a quick status :
LuaControls : one pad support implemented
LuaGraphics : see above :)
LuaSounds : on it's way :)
More to come !!
A little video of the player in action, running the starfield sample from Shine :
http://psxdev.info/evilo/download/luapl ... rfield.avi
:-)
http://psxdev.info/evilo/download/luapl ... rfield.avi
:-)
Some fresh news from the PS2 Lua Player :
I made some progress, and as you can see it can now run some more complex script like Luamines ! (version 0.03 by Dragula96)
For those interested you can also find here :
http://psxdev.info/evilo/download/luapl ... amines.avi a video (30Mo) of the game running. The game is a bit slow to show up and you'll see the "Lua Powered" splash for a few seconds because of the loading time (all images used by the lua script are loaded from host). Also, font display seems a bit screwed up on the video, but this is because of the divx compression (check the screen capture above).
a Quick status :
----------------
LuaControls : one pad support
LuaGraphics : need more work on the blitting functions to use gsKit properly
LuaTimer : done
LuaSounds : no sound output yet :(
Still in alpha stage and a work in progress anyway :)
I made some progress, and as you can see it can now run some more complex script like Luamines ! (version 0.03 by Dragula96)
For those interested you can also find here :
http://psxdev.info/evilo/download/luapl ... amines.avi a video (30Mo) of the game running. The game is a bit slow to show up and you'll see the "Lua Powered" splash for a few seconds because of the loading time (all images used by the lua script are loaded from host). Also, font display seems a bit screwed up on the video, but this is because of the divx compression (check the screen capture above).
a Quick status :
----------------
LuaControls : one pad support
LuaGraphics : need more work on the blitting functions to use gsKit properly
LuaTimer : done
LuaSounds : no sound output yet :(
Still in alpha stage and a work in progress anyway :)
- daurnimator
- Posts: 38
- Joined: Sun Dec 11, 2005 8:36 pm
- Location: melbourne, australia
Hi guys,
some updates on the LuaPlayer for PS2. Most of the libs are now implemented (except lua3d and luawlan that anyway won't be implemented for the first release), so the player is now really advanced.
I posted a new video on my blog (http://psxdev.info/evilo/), showing the lowser app running and then executing DrMario (note that, yes, the loading time is slow, this is due to loading through the network for debbugging purpose). Note also that the drMario script is the unmodified current PSP version :)
cheers :)
some updates on the LuaPlayer for PS2. Most of the libs are now implemented (except lua3d and luawlan that anyway won't be implemented for the first release), so the player is now really advanced.
I posted a new video on my blog (http://psxdev.info/evilo/), showing the lowser app running and then executing DrMario (note that, yes, the loading time is slow, this is due to loading through the network for debbugging purpose). Note also that the drMario script is the unmodified current PSP version :)
cheers :)
- daurnimator
- Posts: 38
- Joined: Sun Dec 11, 2005 8:36 pm
- Location: melbourne, australia
Be aware that you are the first person to post in this thread for over three years, so don't expect the previous posters to be ready to continue discussions where they left off.jgrimm wrote:i was wondering if ps2 lua player has network support at the moment? also i do likethe idea of connecting ps2 and psp. with network support, is it possible to code a web browser? i relly want a web browser for ps2 and i dont have ps2linux so i cant use one
As for making a real web browser, I doubt very much that the PS2 lua player is a suitable tool for it. If working at all it would be bound to become extremely limited in all its capabilities.
Best regards: dlanor