LuaZM Reference

From WikiPrizm
Revision as of 22:11, 25 August 2012 by KermMartian (talk | contribs)
Jump to navigationJump to search

LuaZM for the Prizm is under active development, but does not yet have a released beta. Stay tuned.

Base Library

The base Lua library has been expanded with a few Prizm-specific functions to make life easier.

run()

run()
run("file.lua")
run("compressed.lc")

Run a Lua script. With no arguments, run will launch a file browser (not yet implemented). With arguments, it will run the specified plain-text or compressed Lua program from Flash memory.

ZMG Library

All functions in the ZMG ("PriZM Graphics) library are invoked with zmg.function(arguments,...). The functions with filled-in details and arguments have been implemented, but most are untested. Functions without details are unimplemented. They are as follows:

zmg.clear()

zmg.clear()

Clears the VRAM buffer. No arguments, no return value.

zmg.copySprite()

zmg.copysprite(x,y,width,height,data)

Copies the sprite to the VRAM buffer, overwriting any existing contents. Does perform clipping.

x: (number) x-coordinate of left edge of sprite
y: (number) y-coordinate of top edge of sprite
width: (number) width of sprite in pixels
height: (number) height of sprite in pixels
data: (string) hex for sprite. 4 hex characters per pixel, 5-6-5 color

zmg.copySpriteMask()

zmg.drawLine()

zmg.drawLine(x1, y1, x2, y2, color)

Draws a line of color color from (x1, y1) to (x2, y2). Both points must be on-screen.

x1: (number) x-coordinate of first point
y1: (number) y-coordinate of first point
x2: (number) x-coordinate of second point
y2: (number) y-coordinate of second point
color: (number) 16-bit color code. See drawcircle() for details.

zmg.drawPoint()

zmg.drawRect()

zmg.drawRectFill()

zmg.drawRectFill(x,y,width,height,color)

Draw a rectangular fill of width width and height height starting from top-left pixel coordinate (x,y). Performs clipping to keep rectangle on-screen, but will throw an error for negative coordinates or dimensions. x: (number) x-coordinate of top-left corner
y: (number) y-coordinate of top-left corner
width: (number) width of fill
height: (number) height of fill
color: (number) 16-bit color code. See drawcircle() for details.

zmg.fastCopy()

zmg.fastCopy()

Copy the VRAM to the LCD. Takes no arguments, has no return value.

zmg.drawCircle()

zmg.drawCircle(x,y,radius,color)

Draws an unfilled circle centered at (x,y) with radius radius and line color color.

x: (number) x-coordinate of center of circle. Must be onscreen.
y: (number) y-coordinate of center of circle. Must be onscreen.
radius: (number) radius of circle. May put some portions of circle offscreen.
color: (number) A color, such as 0xF500. Not a string. Planned: zmg.nametocolor("red") function.

zmg.keyMenu()

zmg.fastKeyMenu()

Get a keypress, and handle the [MENU] key if pressed. This is blocking, meaning that it will not return until a key is pressed, and will therefore not return zero. Takes no arguments, returns a number. The [ON] key will cause the Lua interpreter to abort.

zmg.keyMenuFast()

zmg.fastKeyMenu()

Get a keypress, and handle the [MENU] key if pressed. This is non-blocking, and returns zero if no key is pressed. Takes no arguments, returns a number.

zmg.keyFastest()

zmg.keyFastest(key)

Checks whether key is currently released, pressed, or held. Returns 0 if it is released, 1 if pressed momentarily, and 2 if held down (ie, is currently pressed and was pressed during the last call to this function).

zmg.time()

zmg.time()

Get the current Unix epoch time (that is, the number of seconds since 00:00:00 1/1/1970). Uses the Prizm's internal clock, and returns an integer counting the number of seconds since the beginning of the epoch.

zmg.ticks()

zmg.ticks()

Returns the current value of the Prizm's 64Hz clock, which increments every 1/64th of a second. May recycle unexpectedly; good for making games run at a consistent speed regardless of user input.