1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
6 \use_default_options true
7 \maintain_unincluded_children false
9 \language_package default
14 \font_typewriter default
15 \font_default_family default
16 \use_non_tex_fonts false
23 \default_output_format default
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
31 \pdf_bookmarksnumbered false
32 \pdf_bookmarksopen false
33 \pdf_bookmarksopenlevel 1
48 \paperorientation portrait
64 \paragraph_separation indent
65 \paragraph_indentation default
66 \quotes_language english
69 \paperpagestyle default
70 \tracking_changes false
80 lsnes Lua functions reference
87 \begin_layout Standard
88 \begin_inset CommandInset toc
89 LatexCommand tableofcontents
96 \begin_layout Standard
97 \begin_inset Newpage pagebreak
103 \begin_layout Section
107 \begin_layout Subsection
111 \begin_layout Itemize
112 Coordinates increase to right and down.
115 \begin_layout Itemize
116 The origin is at top left of game area or buffer.
119 \begin_layout Subsection
123 \begin_layout Itemize
124 Methods that draw something (unless stated otherwise) require a valid rendering
126 This context can come in three ways:
130 \begin_layout Enumerate
131 The default rendering context of paint callback (the screen).
134 \begin_layout Enumerate
135 The default rendering context of video callback (the video).
138 \begin_layout Enumerate
139 Explicitly set rendering context (RENDERCTX:set).
143 \begin_layout Itemize
144 The rendering context is always reset when callback ends.
147 \begin_layout Subsection
151 \begin_layout Standard
152 (Direct) colors can be specified either as numbers or strings.
155 \begin_layout Itemize
156 -1 is fully transparent.
159 \begin_layout Itemize
160 Non-negative numbers less than
161 \begin_inset Formula $2^{32}$
164 are partially opaque colors (
165 \begin_inset Formula $a*2^{24}+r*2^{16}+g*2^{8}+b$
172 \begin_layout Itemize
173 \begin_inset Formula $a$
177 \begin_inset Formula $0-255$
181 \begin_inset Formula $0$
185 \begin_inset Formula $256$
188 would be fully transparent.
192 \begin_layout Itemize
193 Thus, numbers in range
194 \begin_inset Formula $0-16777215$
197 stand for fully opaque colors.
201 \begin_layout Itemize
202 \begin_inset Formula $r$
206 \begin_inset Formula $g$
210 \begin_inset Formula $b$
213 are intensities of base colors on scale
214 \begin_inset Formula $0-255$
221 \begin_layout Itemize
222 Color can also be specified by name as string: The following color names
223 are known: aliceblue antiquewhite antiquewhite1 antiquewhite2 antiquewhite3
224 antiquewhite4 aqua aquamarine aquamarine1 aquamarine2 aquamarine3 aquamarine4
225 azure azure1 azure2 azure3 azure4 beige bisque bisque1 bisque2 bisque3
226 bisque4 black blanchedalmond blue blue1 blue2 blue3 blue4 blueviolet brown
227 brown1 brown2 brown3 brown4 burlywood burlywood1 burlywood2 burlywood3
228 burlywood4 cadet cadetblue cadetblue1 cadetblue2 cadetblue3 cadetblue4
229 chartreuse chartreuse1 chartreuse2 chartreuse3 chartreuse4 chocolate chocolate1
230 chocolate2 chocolate3 chocolate4 coral coral1 coral2 coral3 coral4 cornflowerbl
231 ue cornsilk cornsilk1 cornsilk2 cornsilk3 cornsilk4 crimson cyan cyan1 cyan2
232 cyan3 cyan4 darkblue darkcyan darkgoldenrod darkgoldenrod1 darkgoldenrod2
233 darkgoldenrod3 darkgoldenrod4 darkgray darkgreen darkgrey darkkhaki darkmagenta
234 darkolivegreen darkolivegreen1 darkolivegreen2 darkolivegreen3 darkolivegreen4
235 darkorange darkorange1 darkorange2 darkorange3 darkorange4 darkorchid darkorchi
236 d1 darkorchid2 darkorchid3 darkorchid4 darkred darksalmon darkseagreen darkseagr
237 een1 darkseagreen2 darkseagreen3 darkseagreen4 darkslateblue darkslategray
238 darkslategray1 darkslategray2 darkslategray3 darkslategray4 darkslategrey
239 darkturquoise darkviolet deeppink deeppink1 deeppink2 deeppink3 deeppink4
240 deepskyblue deepskyblue1 deepskyblue2 deepskyblue3 deepskyblue4 dimgray
241 dimgrey dodgerblue dodgerblue1 dodgerblue2 dodgerblue3 dodgerblue4 firebrick
242 firebrick1 firebrick2 firebrick3 firebrick4 floralwhite forestgreen fractal
243 fuchsia gainsboro ghostwhite gold gold1 gold2 gold3 gold4 goldenrod goldenrod1
244 goldenrod2 goldenrod3 goldenrod4 gray gray0 gray1 gray10 gray100 gray11
245 gray12 gray13 gray14 gray15 gray16 gray17 gray18 gray19 gray2 gray20 gray21
246 gray22 gray23 gray24 gray25 gray26 gray27 gray28 gray29 gray3 gray30 gray31
247 gray32 gray33 gray34 gray35 gray36 gray37 gray38 gray39 gray4 gray40 gray41
248 gray42 gray43 gray44 gray45 gray46 gray47 gray48 gray49 gray5 gray50 gray51
249 gray52 gray53 gray54 gray55 gray56 gray57 gray58 gray59 gray6 gray60 gray61
250 gray62 gray63 gray64 gray65 gray66 gray67 gray68 gray69 gray7 gray70 gray71
251 gray72 gray73 gray74 gray75 gray76 gray77 gray78 gray79 gray8 gray80 gray81
252 gray82 gray83 gray84 gray85 gray86 gray87 gray88 gray89 gray9 gray90 gray91
253 gray92 gray93 gray94 gray95 gray96 gray97 gray98 gray99 green green1 green2
254 green3 green4 greenyellow grey grey0 grey1 grey10 grey100 grey11 grey12
255 grey13 grey14 grey15 grey16 grey17 grey18 grey19 grey2 grey20 grey21 grey22
256 grey23 grey24 grey25 grey26 grey27 grey28 grey29 grey3 grey30 grey31 grey32
257 grey33 grey34 grey35 grey36 grey37 grey38 grey39 grey4 grey40 grey41 grey42
258 grey43 grey44 grey45 grey46 grey47 grey48 grey49 grey5 grey50 grey51 grey52
259 grey53 grey54 grey55 grey56 grey57 grey58 grey59 grey6 grey60 grey61 grey62
260 grey63 grey64 grey65 grey66 grey67 grey68 grey69 grey7 grey70 grey71 grey72
261 grey73 grey74 grey75 grey76 grey77 grey78 grey79 grey8 grey80 grey81 grey82
262 grey83 grey84 grey85 grey86 grey87 grey88 grey89 grey9 grey90 grey91 grey92
263 grey93 grey94 grey95 grey96 grey97 grey98 grey99 honeydew honeydew1 honeydew2
264 honeydew3 honeydew4 hotpink hotpink1 hotpink2 hotpink3 hotpink4 indianred
265 indianred1 indianred2 indianred3 indianred4 indigo ivory ivory1 ivory2
266 ivory3 ivory4 khaki khaki1 khaki2 khaki3 khaki4 lavender lavenderblush
267 lavenderblush1 lavenderblush2 lavenderblush3 lavenderblush4 lawngreen lemonchif
268 fon lemonchiffon1 lemonchiffon2 lemonchiffon3 lemonchiffon4 lightblue lightblue1
269 lightblue2 lightblue3 lightblue4 lightcoral lightcyan lightcyan1 lightcyan2
270 lightcyan3 lightcyan4 lightgoldenrod lightgoldenrod1 lightgoldenrod2 lightgolde
271 nrod3 lightgoldenrod4 lightgoldenrodyellow lightgray lightgreen lightgrey
272 lightpink lightpink1 lightpink2 lightpink3 lightpink4 lightsalmon lightsalmon1
273 lightsalmon2 lightsalmon3 lightsalmon4 lightseagreen lightskyblue lightskyblue1
274 lightskyblue2 lightskyblue3 lightskyblue4 lightslateblue lightslategray
275 lightslategrey lightsteelblue lightsteelblue1 lightsteelblue2 lightsteelblue3
276 lightsteelblue4 lightyellow lightyellow1 lightyellow2 lightyellow3 lightyellow4
277 lime limegreen linen magenta magenta1 magenta2 magenta3 magenta4 maroon
278 maroon1 maroon2 maroon3 maroon4 mediumaquamarine mediumblue mediumforestgreen
279 mediumgoldenrod mediumorchid mediumorchid1 mediumorchid2 mediumorchid3
280 mediumorchid4 mediumpurple mediumpurple1 mediumpurple2 mediumpurple3 mediumpurp
281 le4 mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumviole
282 tred midnightblue mintcream mistyrose mistyrose1 mistyrose2 mistyrose3 mistyrose
283 4 moccasin navajowhite navajowhite1 navajowhite2 navajowhite3 navajowhite4
284 navy navyblue oldlace olive olivedrab olivedrab1 olivedrab2 olivedrab3
285 olivedrab4 orange orange1 orange2 orange3 orange4 orangered orangered1
286 orangered2 orangered3 orangered4 orchid orchid1 orchid2 orchid3 orchid4
287 palegoldenrod palegreen palegreen1 palegreen2 palegreen3 palegreen4 paleturquoi
288 se paleturquoise1 paleturquoise2 paleturquoise3 paleturquoise4 palevioletred
289 palevioletred1 palevioletred2 palevioletred3 palevioletred4 papayawhip
290 peachpuff peachpuff1 peachpuff2 peachpuff3 peachpuff4 peru pink pink1 pink2
291 pink3 pink4 plum plum1 plum2 plum3 plum4 powderblue purple purple1 purple2
292 purple3 purple4 red red1 red2 red3 red4 rosybrown rosybrown1 rosybrown2
293 rosybrown3 rosybrown4 royalblue royalblue1 royalblue2 royalblue3 royalblue4
294 saddlebrown salmon salmon1 salmon2 salmon3 salmon4 sandybrown seagreen
295 seagreen1 seagreen2 seagreen3 seagreen4 seashell seashell1 seashell2 seashell3
296 seashell4 sienna sienna1 sienna2 sienna3 sienna4 silver skyblue skyblue1
297 skyblue2 skyblue3 skyblue4 slateblue slateblue1 slateblue2 slateblue3 slateblue
298 4 slategray slategray1 slategray2 slategray3 slategray4 slategrey snow snow1
299 snow2 snow3 snow4 springgreen springgreen1 springgreen2 springgreen3 springgree
300 n4 steelblue steelblue1 steelblue2 steelblue3 steelblue4 tan tan1 tan2 tan3
301 tan4 teal thistle thistle1 thistle2 thistle3 thistle4 tomato tomato1 tomato2
302 tomato3 tomato4 transparent turquoise turquoise1 turquoise2 turquoise3
303 turquoise4 violet violetred violetred1 violetred2 violetred3 violetred4
304 wheat wheat1 wheat2 wheat3 wheat4 white whitesmoke yellow yellow1 yellow2
305 yellow3 yellow4 yellowgreen
308 \begin_layout Itemize
309 The HSL base color names: hsl-<hue><saturation><lightness>.
313 \begin_layout Itemize
314 Hue can be one of: r (red), ry (red-yellow), o (orange, same as red-yellow),
315 y (yellow), yg (yellow-green), g (green), gc (green-cyan), c (cyan), cb
316 (cyan-blue), b (blue), bm (blue-magenta), m (magenta), mr (magenta-red).
319 \begin_layout Itemize
320 Saturation is 0-8, where 0 is greyscale and 8 is fully saturated.
323 \begin_layout Itemize
324 Lightness is 0-8, where 0 is black and 8 is white.
328 \begin_layout Itemize
329 The color names can have a modifier after space (multiple modifiers are
330 allowed, separated by spaces): opaque10, opaque20, opaque25, opaque30,
331 opaque40, opaque50, opaque60, opaque70, opaque75, opaque80, opaque90, opaque,
332 hue{+,-}{1-23}, {saturation,lightness}{+,-}{1-16}.
336 \begin_layout Itemize
337 opaqueness is measured as percentage.
340 \begin_layout Itemize
341 Hue adjustments are on 24-step scale.
344 \begin_layout Itemize
345 Saturation and lightness adjustments are on 16-step scale.
349 \begin_layout Section
353 \begin_layout Standard
354 These tokens are special, and are expanded while the script is being loaded
357 \begin_layout Subsection
358 @@LUA_SCRIPT_FILENAME@@
361 \begin_layout Standard
362 Expanded to string token containing path and filename of this Lua script.
363 Handy for referencing other lua scripts or resources that are relative
367 \begin_layout Standard
368 In practicular, this is suitable to be passed as base argument of various
369 functions like loadfile, dofile, resolve_filename, gui.bitmap_load, gui.bitmap_lo
370 ad_png and gui.bitmap_load_pal.
373 \begin_layout Section
377 \begin_layout Subsection
378 MMAP_STRUCT: Quasi-table mapping emulated memory
381 \begin_layout Standard
382 Objects of this class act like tables, except that the values are reflected
383 to and from emulated memory.
386 \begin_layout Subsubsection
387 static function new: Create new instance
390 \begin_layout Itemize
391 Syntax: mmap memory.mmap.new()
394 \begin_layout Itemize
395 Syntax: mmap classes.MMAP_STRUCT.new()
398 \begin_layout Itemize
399 Deprecated: mmap memory.map_structure()
402 \begin_layout Standard
406 \begin_layout Itemize
407 mmap: MMAP_STRUCT: The created mmap structure.
410 \begin_layout Standard
411 Create a new MMAP_STRUCT (with no mappings) and return it.
414 \begin_layout Subsubsection
415 operator(): Bind key in mmap structure
418 \begin_layout Itemize
419 Syntax: obj(key, address, type)
422 \begin_layout Itemize
423 Syntax: obj(key, vma, address, type)
426 \begin_layout Standard
430 \begin_layout Itemize
431 obj: MMAP_STRUCT: The structure to manipulate.
434 \begin_layout Itemize
435 key: String: The name of the key in array to map.
438 \begin_layout Itemize
439 vma: String: The memory area the mapped address is in (default: global memory
443 \begin_layout Itemize
444 address: Number: The offset of memory addreess, relative to specified memory
445 area or global memory space.
448 \begin_layout Itemize
449 type: String: The type of data to map.
453 \begin_layout Itemize
454 One of: byte, sbyte, word, sword, hword, shword, dword, sdword, qword, sqword,
459 \begin_layout Standard
460 Bind key <key> in mmap structure <obj> to address <address> (relative to
462 The memory address is treated as type <type>.
465 \begin_layout Standard
466 \begin_inset Newpage pagebreak
472 \begin_layout Subsection
473 ZIPWRITER: Write .zip files
476 \begin_layout Standard
477 This class does writing of .zip files.
480 \begin_layout Subsubsection
481 Static function new: Create a new zipfile
484 \begin_layout Itemize
485 Syntax: zip zip.writer.new(filename, [compression])
488 \begin_layout Itemize
489 Deprecated: zip zip.create(filename, [compression])
492 \begin_layout Standard
496 \begin_layout Itemize
497 filename: string: The name of the file to write.
500 \begin_layout Itemize
501 compression: number: Compression level (0-9).
505 \begin_layout Standard
509 \begin_layout Itemize
510 zip: ZIPWRITER: The newly created ZIP writer.
513 \begin_layout Standard
514 Create a new ZIPWRITER object and return it.
517 \begin_layout Subsubsection
518 Method commit: Finish creating ZIP file.
521 \begin_layout Itemize
522 Syntax: zipfile:commit()
525 \begin_layout Standard
529 \begin_layout Itemize
530 zipfile: ZIPFILE: The ZIP file object.
533 \begin_layout Standard
534 Finish writing the ZIP file and actually create it on disk.
537 \begin_layout Itemize
538 If a member is currently open, it is implicitly closed.
541 \begin_layout Itemize
542 Invoking this on already committed or rolled back zipfile causes an error.
545 \begin_layout Subsubsection
546 Method rollback: Cancel writing the ZIP file.
549 \begin_layout Itemize
550 Syntax: zipfile:rollback()
553 \begin_layout Standard
557 \begin_layout Itemize
558 zipfile: ZIPFILE: The ZIP file object.
561 \begin_layout Standard
562 Cancel writing the whole ZIP file.
563 The file on disk will not be modified.
566 \begin_layout Itemize
567 If a member is currently open, it is implicitly closed.
570 \begin_layout Itemize
571 Invoking this on already committed or rolled back zipfile causes an error.
574 \begin_layout Subsubsection
575 Method create_file: Start writing a new member
578 \begin_layout Itemize
579 Syntax: zipfile:create_file(filename)
582 \begin_layout Standard
586 \begin_layout Itemize
587 zipfile: ZIPFILE: The ZIP file object.
590 \begin_layout Itemize
591 string filename: Name of the new member to create
594 \begin_layout Standard
595 Start writing a new member <filename> in ZIP file.
598 \begin_layout Itemize
599 If a member is currently open, it is implicitly closed.
602 \begin_layout Itemize
603 Invoking this on already committed or rolled back zipfile causes an error.
606 \begin_layout Subsubsection
607 Method close_file: Close member
610 \begin_layout Itemize
611 Syntax: zipfile:close_file()
614 \begin_layout Standard
618 \begin_layout Itemize
619 zipfile: ZIPFILE: The ZIP file object.
622 \begin_layout Standard
623 Close the currently open member in zipfile.
626 \begin_layout Itemize
627 Invoking this on already committed or rolled back zipfile causes an error.
630 \begin_layout Itemize
631 Invoking this without an open member causes an error.
634 \begin_layout Subsubsection
635 Method write: Write data
638 \begin_layout Itemize
639 Syntax: zipfile:write(data)
642 \begin_layout Standard
646 \begin_layout Itemize
647 zipfile: ZIPFILE: The ZIP file object.
650 \begin_layout Itemize
651 data: string: The data to write.
654 \begin_layout Standard
655 Write <data> in binary mode (as-is) to currently open member.
658 \begin_layout Itemize
659 Invoking this without a member being open causes an error.
662 \begin_layout Standard
663 \begin_inset Newpage pagebreak
669 \begin_layout Subsection
670 TILEMAP: Tiled collection of bitmaps.
673 \begin_layout Standard
674 A tilemap is tiled table, each cell holding a bitmap (indexed or direct).
677 \begin_layout Subsubsection
678 Static function new: Create a tilemap
681 \begin_layout Itemize
682 Syntax: tilemap gui.tiled_bitmap.new(w, h, bw, bh);
685 \begin_layout Itemize
686 Syntax: tilemap classes.TILEMAP.new(w, h, bw, bh);
689 \begin_layout Itemize
690 Deprecated: tilemap gui.tilemap(w, h, bw, bh);
693 \begin_layout Standard
697 \begin_layout Itemize
698 w: number: Width of the tilemap in tiles
701 \begin_layout Itemize
702 h: number: Height of the tilemap in tiles
705 \begin_layout Itemize
706 bw: number: Width of each tile in pixels.
709 \begin_layout Itemize
710 bh: number: Height of each tile in pixels.
713 \begin_layout Standard
717 \begin_layout Itemize
718 tilemap: TILEMAP: the newly created tilemap
721 \begin_layout Standard
722 Create a new tilemap of <w>*<h> tiles, each of <bw>*<bh> pixels and return
726 \begin_layout Subsubsection
727 TILEMAP:getsize: Query tilemap size
730 \begin_layout Itemize
731 Syntax: width, height tmap:getsize()
734 \begin_layout Standard
738 \begin_layout Itemize
739 tmap: TILEMAP: The tilemap to query.
742 \begin_layout Standard
746 \begin_layout Itemize
747 width: number : The width of the tilemap in tiles.
750 \begin_layout Itemize
751 height: number: The height of the tilemap in tiles.
754 \begin_layout Standard
755 Get size of tilemap in tiles.
758 \begin_layout Subsubsection
759 TILEMAP:getcsize: Query tilemap cell size
762 \begin_layout Itemize
763 Syntax: width, height tmap:getcsize()
766 \begin_layout Standard
770 \begin_layout Itemize
771 tmap: TILEMAP: The tilemap to query.
774 \begin_layout Standard
778 \begin_layout Itemize
779 width: number: The width of tilemap tile in pixels.
782 \begin_layout Itemize
783 height: number: The height of tilemap tile in pixels.
786 \begin_layout Standard
787 Get size of each tilemap tile in pixels.
790 \begin_layout Subsubsection
791 TILEMAP:get: Query tilemap tile
794 \begin_layout Itemize
795 Syntax: bitmap, palette tmap:get(x, y)
798 \begin_layout Standard
802 \begin_layout Itemize
803 tmap: TILEMAP: The tilemap to query.
806 \begin_layout Itemize
807 x: number: The x-coordinate of tile to query.
810 \begin_layout Itemize
811 y: number: The y-coordinate of tile to query.
814 \begin_layout Standard
818 \begin_layout Itemize
819 bitmap: The associated bitmap (BITMAP or DBITMAP), or nil if none.
822 \begin_layout Itemize
823 palette: The palette (PALETTE) associated with indexed-color bitmap, if
828 \begin_layout Standard
829 Return the contents of tile at <x>,<y>.
832 \begin_layout Subsubsection
833 TILEMAP:set: Set tilemap cell
836 \begin_layout Itemize
837 Syntax: tmap:set(x, y)
840 \begin_layout Itemize
841 Syntax: tmap:set(x, y, bitmap)
844 \begin_layout Itemize
845 Syntax: tmap:set(x, y, bitmap, palette)
848 \begin_layout Standard
852 \begin_layout Itemize
853 tmap: TILEMAP: The tilemap to manipulate.
856 \begin_layout Itemize
857 number x: The x-coordinate of tile to set.
860 \begin_layout Itemize
861 number y: The y-coordinate of tile to set.
864 \begin_layout Itemize
865 bitmap: BITMAP/DBITMAP: The bitmap to set to tile.
868 \begin_layout Itemize
869 palette: PALETTE: The associated palette for bitmap.
872 \begin_layout Standard
873 Set the contents of tile <x>,<y>.
874 If no <bitmap> is given, clears the tile.
875 Otherwise sets the tile to contain bitmap <bitmap> with associated palette
879 \begin_layout Itemize
880 Specifying index bitmap <bitmap> without palette <palette> causes an error.
883 \begin_layout Subsubsection
884 TILEMAP:scroll: Scroll tilemap
887 \begin_layout Itemize
888 Syntax: tmap:scroll(ox, oy);
891 \begin_layout Itemize
892 Syntax: tmap:scroll(ox, oy, x, y, w, h);
895 \begin_layout Itemize
896 Syntax: tmap:scroll(ox, oy, x, y, w, h, circ_x, circ_y);
899 \begin_layout Standard
903 \begin_layout Itemize
904 tmap: TILEMAP: The tilemap to manipulate.
907 \begin_layout Itemize
908 ox: number: The number of tiles to scroll horizontally (positive is to right).
911 \begin_layout Itemize
912 oy: number: The number of tiles to scroll vertically (positive is to down).
915 \begin_layout Itemize
916 x: number: The left edge of scroll window.
919 \begin_layout Itemize
920 y: number: The top edge of scroll window.
923 \begin_layout Itemize
924 w: number: The width of scroll window.
927 \begin_layout Itemize
928 h: number: The height of scroll window.
931 \begin_layout Itemize
932 circ_x: boolean: If true, treat the window as circular in horizontal direction.
935 \begin_layout Itemize
936 circ_y: boolean: If true, treat the window as circular in vertical direction.
939 \begin_layout Standard
940 Scroll the specified tilemap <tmap> by <ox>,<oy>.
941 If a window <x>,<y>,<w>,<h> is specified, only that part is scrolled.
942 <circ_x> and <circ_y> control if scroll is circular or not.
945 \begin_layout Itemize
946 Specifying out-of-range window causes an error.
949 \begin_layout Subsubsection
950 TILEMAP:draw: Draw tilemap
953 \begin_layout Itemize
954 Name: tmap:draw(x, y)
957 \begin_layout Itemize
958 Name: tmap:draw(x, y, x0, y0, w, h)
961 \begin_layout Standard
965 \begin_layout Itemize
966 tmap: TILEMAP: The tilemap to draw.
969 \begin_layout Itemize
970 x: The x coordinate on screen to draw to.
973 \begin_layout Itemize
974 y: The y coordinate on screen to draw to.
977 \begin_layout Itemize
978 x0: number: The x coordinate on tilemap (in pixels) to start drawing from.
981 \begin_layout Itemize
982 y0: number: The y coordinate on tilemap (in pixels) to start drawing from.
985 \begin_layout Itemize
986 w: number: The width to draw (in pixels).
989 \begin_layout Itemize
990 h: number: The height to draw (in pixels).
993 \begin_layout Standard
994 Draw tilemap <tmap> to screen at <x>,<y>.
995 If a window <x0>,<y0>,<w>,<h> is specified, only that part is drawn.
998 \begin_layout Itemize
999 This method requires a rendering context to work.
1002 \begin_layout Standard
1003 \begin_inset Newpage pagebreak
1009 \begin_layout Subsection
1010 RENDERCTX: Off-screen rendering context
1013 \begin_layout Standard
1014 Object acting as off-screen rendering context.
1017 \begin_layout Subsubsection
1018 Static function new: Create a render queue
1021 \begin_layout Itemize
1022 Syntax: renderctx gui.renderctx.new(width, height);
1025 \begin_layout Itemize
1026 Syntax: renderctx classes.RENDERCTX.new(width, height);
1029 \begin_layout Itemize
1030 Deprecated: renderctx gui.renderq_new(width, height);
1033 \begin_layout Standard
1037 \begin_layout Itemize
1038 width: number: The notional width of the game area.
1041 \begin_layout Itemize
1042 height: number: The notional height of the game area.
1045 \begin_layout Standard
1049 \begin_layout Itemize
1050 rendectx: RENDERCTX: The newly created render context.
1053 \begin_layout Standard
1054 Create a render context with reported size <width>*<height> and return it.
1057 \begin_layout Subsubsection
1058 Static function setnull: Reset to default queue
1061 \begin_layout Itemize
1062 Syntax: gui.renderctx.setnull()
1065 \begin_layout Itemize
1066 Syntax: classes.RENDERCTX:setnull()
1069 \begin_layout Itemize
1070 Deprecated: gui.renderq_set()
1073 \begin_layout Standard
1074 Reset the used render context back to default for the executing callback:
1077 \begin_layout Itemize
1078 The default for paint callback is the screen
1081 \begin_layout Itemize
1082 The default for video callback is the video frame
1085 \begin_layout Itemize
1086 The default otherwise is nothing.
1089 \begin_layout Subsubsection
1090 Method clear: Clear a render queue
1093 \begin_layout Itemize
1094 Syntax: renderctx:clear()
1097 \begin_layout Itemize
1098 Deprecated: gui.renderq_clear(renderctx)
1101 \begin_layout Standard
1105 \begin_layout Itemize
1106 renderctx: RENDERCTX: The render queue to clear.
1109 \begin_layout Standard
1110 Clear all drawing from the context.
1113 \begin_layout Subsubsection
1114 Method set: Change active render context
1117 \begin_layout Itemize
1118 Syntax: renderctx:set()
1121 \begin_layout Itemize
1122 Deprecated: gui.renderq_set(renderctx)
1125 \begin_layout Standard
1129 \begin_layout Itemize
1130 renderctx: RENDERCTX: The render queue to use.
1133 \begin_layout Standard
1134 Switch the current rendering context <renderctx>.
1137 \begin_layout Subsubsection
1138 Method run: Draw all objects in context to another
1141 \begin_layout Itemize
1142 Syntax: renderctx:run()
1145 \begin_layout Itemize
1146 Deprecated: gui.renderq_run(renderctx)
1149 \begin_layout Standard
1153 \begin_layout Itemize
1154 renderctx: RENDERCTX: The render context to overlay.
1157 \begin_layout Standard
1158 Overlay the specified render context <context> upon the active rendering
1162 \begin_layout Itemize
1163 Trying to overlay rendering context upon itself is a bad idea.
1166 \begin_layout Subsubsection
1167 Method render: Render a contex to bitmap
1170 \begin_layout Itemize
1171 Syntax: bitmap renderctx:render()
1174 \begin_layout Standard
1178 \begin_layout Itemize
1179 renderctx: RENDERCTX: The context to render.
1182 \begin_layout Standard
1186 \begin_layout Itemize
1187 bitmap: DBITMAP: The rendered bitmap.
1190 \begin_layout Standard
1191 Render the specified context <renderctx> to a new bitmap.
1194 \begin_layout Itemize
1195 The size of bitmap will be nominal game area size, plus any set gaps.
1198 \begin_layout Itemize
1199 This method does not require active rendering context.
1202 \begin_layout Subsubsection
1203 Method synchronous_repaint: Paint screen now
1206 \begin_layout Itemize
1207 Syntax: renderctx:synchronous_repaint()
1210 \begin_layout Itemize
1211 Deprecated: gui.synchronous_repaint(renderctx)
1214 \begin_layout Standard
1218 \begin_layout Itemize
1219 renderctx: RENDERCTX: The context to paint.
1222 \begin_layout Standard
1223 Immediately redraw the screen with game overlayed by drawings from context
1227 \begin_layout Itemize
1228 This does not require active rendering context.
1231 \begin_layout Itemize
1232 Will not cause paint callback to be invoked.
1235 \begin_layout Standard
1236 \begin_inset Newpage pagebreak
1242 \begin_layout Subsection
1243 PALETTE: Color palette for indexed image
1246 \begin_layout Subsubsection
1247 Static function new: Create a new palette
1250 \begin_layout Itemize
1251 Syntax: palette gui.palette.new()
1254 \begin_layout Itemize
1255 Syntax: palette classes.PALETTE.new()
1258 \begin_layout Itemize
1259 Deprecated: palette gui.palette_new()
1262 \begin_layout Standard
1266 \begin_layout Itemize
1267 palette: PALETTE: The created palette.
1270 \begin_layout Standard
1271 Create a new palette (with all colors transparent) and return it.
1274 \begin_layout Subsubsection
1275 Static function load: Load a palette
1278 \begin_layout Itemize
1279 Syntax: palette gui.palette.load(file, [base])
1282 \begin_layout Itemize
1283 Syntax: palette classes.PALETTE.load(file, [base])
1286 \begin_layout Itemize
1287 Deprecated: palette gui.palette_load(file, [base])
1290 \begin_layout Standard
1294 \begin_layout Itemize
1295 string file: The file to load.
1298 \begin_layout Itemize
1299 string base (optional): The base file to resolve file relative to.
1302 \begin_layout Standard
1306 \begin_layout Itemize
1307 palette: PALETTE: The loaded palette.
1310 \begin_layout Standard
1311 Load a palette from file <file> (resolved relative to <base>).
1314 \begin_layout Itemize
1315 The file format is a series of lines, each with following format:
1319 \begin_layout Itemize
1320 Blank or just whitespace: Ignored
1323 \begin_layout Itemize
1324 First non-whitespace is '#': Ignored
1327 \begin_layout Itemize
1328 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
1331 \begin_layout Itemize
1332 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
1333 (0-256, 0 being fully transparent and 256 fully opaque).
1336 \begin_layout Itemize
1337 transparent: Fully transparent color
1341 \begin_layout Subsubsection
1342 Static function load_str: Load a palette from string
1345 \begin_layout Itemize
1346 Syntax: palette gui.palette.load(data)
1349 \begin_layout Itemize
1350 Syntax: palette classes.PALETTE.load(data)
1353 \begin_layout Itemize
1354 Deprecated: palette gui.palette_load(data)
1357 \begin_layout Standard
1361 \begin_layout Itemize
1362 string data: The palette data.
1365 \begin_layout Standard
1369 \begin_layout Itemize
1370 palette: PALETTE: The loaded palette.
1373 \begin_layout Standard
1374 Like PALETTE:load, but instead of reading palette from file, reads it from
1378 \begin_layout Subsubsection
1379 Method set: Set palette entry
1382 \begin_layout Itemize
1383 Syntax: palette:set(index, color)
1386 \begin_layout Itemize
1387 Deprecated: gui.palette_set(palette, ...)
1390 \begin_layout Standard
1394 \begin_layout Itemize
1395 palette: PALETTE: The palette to manipulate
1398 \begin_layout Itemize
1399 index: number: The index of color to set (0-65535).
1402 \begin_layout Itemize
1403 color: number/string: The color value to set.
1406 \begin_layout Standard
1407 Set palette <palette> index <index> to color <color>.
1410 \begin_layout Subsubsection
1411 Method hash: Hash a palette
1414 \begin_layout Itemize
1415 Syntax: hash palette:hash()
1418 \begin_layout Itemize
1419 Deprecated: hash gui.palette_hash(palette)
1422 \begin_layout Standard
1426 \begin_layout Itemize
1427 palette: The palette to hash.
1430 \begin_layout Standard
1434 \begin_layout Itemize
1435 hash: string: 64-hex digit hash.
1438 \begin_layout Standard
1439 Obtain crypto-grade hash of palette data of <palette>.
1442 \begin_layout Itemize
1443 All colors after the last non-transparent one are ignored.
1446 \begin_layout Subsubsection
1447 Method adjust_transparency: Adjust transparency
1450 \begin_layout Itemize
1451 Syntax: palette:adjust_transparency(newvalue)
1454 \begin_layout Itemize
1455 Deprecated: gui.adjust_transparency(palette, ...)
1458 \begin_layout Standard
1462 \begin_layout Itemize
1463 palette: PALETTE: The palette to adjust.
1466 \begin_layout Itemize
1467 Number adj: The factor to multiply opaqueness with times 256.
1470 \begin_layout Standard
1471 Multiply opaqueness of all colors in palette <palette> by factor of <adj>/256.
1474 \begin_layout Standard
1475 \begin_inset Newpage pagebreak
1481 \begin_layout Subsection
1482 BITMAP: Indexed-color bitmap
1485 \begin_layout Subsubsection
1486 Static function new: Create a new bitmap
1489 \begin_layout Itemize
1490 Syntax: bitmap gui.bitmap.new(w, h, [fillcolor])
1493 \begin_layout Itemize
1494 Syntax: bitmap classes.BITMAP.new(w, h, [fillcolor])
1497 \begin_layout Itemize
1498 Deprecated: bitmap gui.bitmap_new(w, h, false, [fillcolor])
1501 \begin_layout Standard
1505 \begin_layout Itemize
1506 w: number: The width of bitmap to create in pixels.
1509 \begin_layout Itemize
1510 h: number: The height of bitmap to create in pixels.
1513 \begin_layout Itemize
1514 false: boolean: Constant boolean false.
1517 \begin_layout Itemize
1518 fillcolor: number: The initial fill index.
1519 Default 0 if not specified.
1522 \begin_layout Standard
1523 Create a new bitmap of size <w>*<h>.
1524 Fill the bitmap with color index <fillcolor>.
1527 \begin_layout Subsubsection
1528 Method draw: Draw a bitmap
1531 \begin_layout Itemize
1532 Syntax: bitmap:draw(x, y, palette)
1535 \begin_layout Itemize
1536 Deprecated: gui.bitmap_draw(x, y, bitmap, palette)
1539 \begin_layout Standard
1543 \begin_layout Itemize
1544 bitmap: BITMAP: The bitmap to draw
1547 \begin_layout Itemize
1548 x: number: The x-coordinate on screen.
1551 \begin_layout Itemize
1552 y: number: The y-coordinate on screen.
1555 \begin_layout Itemize
1556 palette: The palette to use for drawing.
1559 \begin_layout Standard
1560 Draw bitmap <bitmap> on screen at <x>,<y> with palette <palette>.
1563 \begin_layout Subsubsection
1564 Method pset: Set pixel in bitmap
1567 \begin_layout Itemize
1568 Syntax: bitmap:pset(x, y, color)
1571 \begin_layout Itemize
1572 Deprecaed: gui.bitmap_pset(bitmap, ...)
1575 \begin_layout Standard
1579 \begin_layout Itemize
1580 bitmap: BITMAP: The bitmap to manipulate.
1583 \begin_layout Itemize
1584 x: number: x-coordinate of pixel to set.
1587 \begin_layout Itemize
1588 y: number: y-coordinate of pixel to set.
1591 \begin_layout Itemize
1592 color: number: The color index to set.
1595 \begin_layout Standard
1596 Sets specified pixel <x>,<y> in bitmap <bitmap> to color index <color>.
1599 \begin_layout Subsubsection
1600 Method pget: Get pixel in bitmap
1603 \begin_layout Itemize
1604 Syntax: color bitmap:pget(x,y)
1607 \begin_layout Itemize
1608 Deprecated: color gui.bitmap_pget(bitmap, ...)
1611 \begin_layout Standard
1615 \begin_layout Itemize
1616 bitmap: BITMAP: The bitmap to query.
1619 \begin_layout Itemize
1620 x: number: x-coordinate of pixel to get.
1623 \begin_layout Itemize
1624 y: number: y-coordinate of pixel to get.
1627 \begin_layout Standard
1631 \begin_layout Itemize
1632 color: number: The color index in specified pixel.
1635 \begin_layout Standard
1636 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
1639 \begin_layout Subsubsection
1640 Method size: Get size of bitmap
1643 \begin_layout Itemize
1644 Syntax: width, height bitmap:size()
1647 \begin_layout Itemize
1648 Syntax: width, height gui.bitmap_size(bitmap)
1651 \begin_layout Standard
1655 \begin_layout Itemize
1656 bitmap: BITMAP: The bitmap to query.
1659 \begin_layout Standard
1663 \begin_layout Itemize
1664 width: number: The width of the bitmap.
1667 \begin_layout Itemize
1668 height: number: The height of the bitmap.
1671 \begin_layout Standard
1672 Get size of bitmap <bitmap>.
1675 \begin_layout Subsubsection
1676 Method blit: Blit a bitmap into another
1679 \begin_layout Itemize
1680 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
1683 \begin_layout Itemize
1684 Deprecated: gui.bitmap_blit(dest, ...)
1687 \begin_layout Standard
1691 \begin_layout Itemize
1692 dest: BITMAP: The target bitmap to blit to.
1695 \begin_layout Itemize
1696 dx: number: The x-coordinate in target.
1699 \begin_layout Itemize
1700 dy: number: The y-coordinate in target.
1703 \begin_layout Itemize
1704 src: BITMAP: The source bitmap.
1707 \begin_layout Itemize
1708 sx: number: The x-coordinate in source.
1711 \begin_layout Itemize
1712 sy: number: The y-coordinate in source.
1715 \begin_layout Itemize
1716 w: number: The width of area to blit.
1719 \begin_layout Itemize
1720 h: number: The height of area to blit.
1723 \begin_layout Itemize
1724 ck: number: The color key.
1725 Pixels with this index are not copied.
1729 \begin_layout Itemize
1730 If none is specified, all pixels are copied.
1734 \begin_layout Standard
1735 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> into <dest> at
1737 If a color key <ck> is specified, pixels of that color are not copied.
1740 \begin_layout Subsubsection
1741 Method blit_scaled: Blit a bitmap into another with scaling
1744 \begin_layout Itemize
1745 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
1748 \begin_layout Itemize
1749 Deprecated: gui.bitmap_blit_scaled(dest, ...)
1752 \begin_layout Standard
1756 \begin_layout Itemize
1757 dest: BITMAP: The target bitmap to blit to.
1760 \begin_layout Itemize
1761 dx: number: The x-coordinate in target.
1764 \begin_layout Itemize
1765 dy: number: The y-coordinate in target.
1768 \begin_layout Itemize
1769 src: BITMAP: The source bitmap.
1772 \begin_layout Itemize
1773 sx: number: The x-coordinate in source.
1776 \begin_layout Itemize
1777 sy: number: The y-coordinate in source.
1780 \begin_layout Itemize
1781 w: number: The width of area to blit.
1784 \begin_layout Itemize
1785 h: number: The height of area to blit.
1788 \begin_layout Itemize
1789 hscl: number: Horizontal scale factor (integer).
1792 \begin_layout Itemize
1793 vscl: number: Vertical scale factor (integer).
1794 Defaults to the same as <hscl>.
1797 \begin_layout Itemize
1798 ck: number: The color key.
1799 Pixels with this index are not copied.
1803 \begin_layout Itemize
1804 If none is specified, all pixels are copied.
1808 \begin_layout Standard
1809 Like BITMAP:blit, but also scales the copied part of bitmap (using nearest
1810 neighbor) by factor of <hscl>*<vscl>.
1813 \begin_layout Subsubsection
1814 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
1817 \begin_layout Itemize
1818 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
1821 \begin_layout Itemize
1822 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
1825 \begin_layout Standard
1829 \begin_layout Itemize
1830 dest: BITMAP: The target bitmap to blit to.
1833 \begin_layout Itemize
1834 dx: number: The x-coordinate in target.
1837 \begin_layout Itemize
1838 dy: number: The y-coordinate in target.
1841 \begin_layout Itemize
1842 src: BITMAP: The source bitmap.
1845 \begin_layout Itemize
1846 sx: number: The x-coordinate in source.
1849 \begin_layout Itemize
1850 sy: number: The y-coordinate in source.
1853 \begin_layout Itemize
1854 w: number: The width of area to blit.
1857 \begin_layout Itemize
1858 h: number: The height of area to blit.
1861 \begin_layout Itemize
1862 operator: string: The operator to use.
1866 \begin_layout Itemize
1867 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
1868 DestOut, Clear or Xor.
1872 \begin_layout Standard
1873 Like BITMAP:blit, but instead of just overwriting, applies specified Porter-Duff
1878 \begin_layout Itemize
1879 Color index 0 in source and target is treated as background.
1882 \begin_layout Subsubsection
1883 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
1884 Porter-Duff composition
1887 \begin_layout Itemize
1888 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
1892 \begin_layout Itemize
1893 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
1896 \begin_layout Standard
1900 \begin_layout Itemize
1901 dest: BITMAP: The target bitmap to blit to.
1904 \begin_layout Itemize
1905 dx: number: The x-coordinate in target.
1908 \begin_layout Itemize
1909 dy: number: The y-coordinate in target.
1912 \begin_layout Itemize
1913 src: BITMAP: The source bitmap.
1916 \begin_layout Itemize
1917 sx: number: The x-coordinate in source.
1920 \begin_layout Itemize
1921 sy: number: The y-coordinate in source.
1924 \begin_layout Itemize
1925 w: number: The width of area to blit.
1928 \begin_layout Itemize
1929 h: number: The height of area to blit.
1932 \begin_layout Itemize
1933 hscl: number: Horizontal scale factor (integer).
1936 \begin_layout Itemize
1937 vscl: number: Vertical scale factor (integer).
1938 Defaults to the same as <hscl>.
1941 \begin_layout Itemize
1942 operator: string: The operator to use.
1946 \begin_layout Itemize
1947 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
1948 DestOut, Clear or Xor.
1952 \begin_layout Standard
1953 Like BITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
1954 like BITMAP:blit_scaled.
1957 \begin_layout Subsubsection
1958 Method blit_priority: Blit a bitmap into another with color priority
1961 \begin_layout Itemize
1962 Syntax: dest:blit_priority(dx, dy, src, sx, sy, w, h)
1965 \begin_layout Itemize
1966 Deprecated: gui.bitmap_blit_priority(dest, ...)
1969 \begin_layout Standard
1973 \begin_layout Itemize
1974 dest: BITMAP: The target bitmap to blit to.
1977 \begin_layout Itemize
1978 dx: number: The x-coordinate in target.
1981 \begin_layout Itemize
1982 dy: number: The y-coordinate in target.
1985 \begin_layout Itemize
1986 src: BITMAP: The source bitmap.
1989 \begin_layout Itemize
1990 sx: number: The x-coordinate in source.
1993 \begin_layout Itemize
1994 sy: number: The y-coordinate in source.
1997 \begin_layout Itemize
1998 w: number: The width of area to blit.
2001 \begin_layout Itemize
2002 h: number: The height of area to blit.
2005 \begin_layout Standard
2006 Like BITMAP:blit, but only copy pixels where source color index is greater
2007 than destination color index.
2010 \begin_layout Subsubsection
2011 Method blit_scaled_priority: Blit a bitmap into another with color priority
2015 \begin_layout Itemize
2016 Syntax: dest:blit_scaled_priority(dx, dy, src, sx, sy, w, h, hscl, [vscl])
2019 \begin_layout Itemize
2020 Deprecated: gui.bitmap_blit_scaled_priority(dest, ...)
2023 \begin_layout Standard
2027 \begin_layout Itemize
2028 dest: BITMAP: The target bitmap to blit to.
2031 \begin_layout Itemize
2032 dx: number: The x-coordinate in target.
2035 \begin_layout Itemize
2036 dy: number: The y-coordinate in target.
2039 \begin_layout Itemize
2040 src: BITMAP: The source bitmap.
2043 \begin_layout Itemize
2044 sx: number: The x-coordinate in source.
2047 \begin_layout Itemize
2048 sy: number: The y-coordinate in source.
2051 \begin_layout Itemize
2052 w: number: The width of area to blit.
2055 \begin_layout Itemize
2056 h: number: The height of area to blit.
2059 \begin_layout Itemize
2060 hscl: number: Horizontal scale factor (integer).
2063 \begin_layout Itemize
2064 vscl: number: Vertical scale factor (integer).
2065 Defaults to the same as <hscl>.
2068 \begin_layout Standard
2069 Like BITMAP:blit_priority, but apply scaling by <hscl>*<vscl> like BITMAP:blit_s
2073 \begin_layout Subsubsection
2074 Method save_png: Save a bitmap to PNG
2077 \begin_layout Itemize
2078 Syntax: bitmap:save_png(filename, [base], palette)
2081 \begin_layout Itemize
2082 Syntax: data bitmap:save_png(palette)
2085 \begin_layout Itemize
2087 gui.bitmap_save_png(bitmap, ...)
2090 \begin_layout Standard
2094 \begin_layout Itemize
2095 bitmap: BITMAP: The bitmap to save.
2098 \begin_layout Itemize
2099 filename: string: The filename to save to.
2102 \begin_layout Itemize
2103 base: string: The base filename is resolved relative to.
2106 \begin_layout Itemize
2107 palette: PALETTE: The palette to use.
2110 \begin_layout Standard
2114 \begin_layout Itemize
2115 data: string: BASE64 encoded PNG data.
2118 \begin_layout Standard
2119 Save bitmap <bitmap>, with palette <pal> into PNG file <filename> (relative
2120 to <base>) or return BASE64 encoding of it.
2123 \begin_layout Subsubsection
2124 Method hash: Hash a bitmap
2127 \begin_layout Itemize
2128 Syntax: hash bitmap:hash()
2131 \begin_layout Itemize
2132 Deprecated: hash bitmap:hash(bitmap)
2135 \begin_layout Standard
2139 \begin_layout Itemize
2140 bitmap: BITMAP: The bitmap to hash.
2143 \begin_layout Standard
2147 \begin_layout Itemize
2148 hash: string: 64-hex digit hash
2151 \begin_layout Standard
2152 Hashes bitmap <bitmap> and returns crypto-strong hash.
2156 \begin_layout Itemize
2157 Color order in bitmap is significant.
2160 \begin_layout Standard
2161 \begin_inset Newpage pagebreak
2167 \begin_layout Subsection
2168 DBITMAP: Direct-color bitmap
2171 \begin_layout Subsubsection
2172 Static function: new: Create a new bitmap
2175 \begin_layout Itemize
2176 Syntax: bitmap gui.dbitmap.new(w, h, [fillcolor])
2179 \begin_layout Itemize
2180 Syntax: bitmap classes.DBITMAP.new(w, h, [fillcolor])
2183 \begin_layout Itemize
2184 Deprecated: bitmap gui.bitmap_new (w, h, true, [fillcolor]).
2187 \begin_layout Standard
2191 \begin_layout Itemize
2192 w: number: The width of new bitmap.
2195 \begin_layout Itemize
2196 h: number: The height of new bitmap.
2199 \begin_layout Itemize
2200 true: boolean: Fixed boolean true
2203 \begin_layout Itemize
2204 fillcolor: The color to fill the bitmap with (default transparent).
2207 \begin_layout Standard
2211 \begin_layout Itemize
2212 bitmap: DBITMAP: The new bitmap.
2215 \begin_layout Standard
2216 Create a new direct-color bitmap of size <w>*<h>, initially filled with
2220 \begin_layout Subsubsection
2221 Method draw: Draw a bitmap
2224 \begin_layout Itemize
2225 Syntax: bitmap.draw(x, y)
2228 \begin_layout Itemize
2229 Deprecated: gui.bitmap_draw(x, y, bitmap)
2232 \begin_layout Standard
2236 \begin_layout Itemize
2237 bitmap: DBITMAP: The bitmap to draw.
2240 \begin_layout Itemize
2241 x: number: X-coordinate on screen.
2244 \begin_layout Itemize
2245 y: number: Y-coordinate on screen.
2248 \begin_layout Standard
2249 Draw bitmap <bitmap> on screen at <x>,<y>.
2252 \begin_layout Subsubsection
2253 Method pset: Set pixel in bitmap
2256 \begin_layout Itemize
2257 Syntax: bitmap:pset(x, y, color)
2260 \begin_layout Itemize
2261 Deprecaed: gui.bitmap_pset(bitmap, ...)
2264 \begin_layout Standard
2268 \begin_layout Itemize
2269 bitmap: DBITMAP: The bitmap to manipulate.
2272 \begin_layout Itemize
2273 x: number: x-coordinate of pixel to set.
2276 \begin_layout Itemize
2277 y: number: y-coordinate of pixel to set.
2280 \begin_layout Itemize
2281 color: number/string: The color to set.
2284 \begin_layout Standard
2285 Sets specified pixel <x>,<y> in bitmap <bitmap> to color <color>.
2288 \begin_layout Subsubsection
2289 Method pget: Get pixel in bitmap
2292 \begin_layout Itemize
2293 Syntax: color bitmap:pget(x,y)
2296 \begin_layout Itemize
2297 Deprecated: color gui.bitmap_pget(bitmap, ...)
2300 \begin_layout Standard
2304 \begin_layout Itemize
2305 bitmap: DBITMAP: The bitmap to query.
2308 \begin_layout Itemize
2309 x: number: x-coordinate of pixel to get.
2312 \begin_layout Itemize
2313 y: number: y-coordinate of pixel to get.
2316 \begin_layout Standard
2320 \begin_layout Itemize
2321 color: number: The color of specified pixel.
2324 \begin_layout Standard
2325 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
2328 \begin_layout Subsubsection
2329 Method size: Get size of bitmap
2332 \begin_layout Itemize
2333 Syntax: width, height bitmap:size()
2336 \begin_layout Itemize
2337 Syntax: width, height gui.bitmap_size(bitmap)
2340 \begin_layout Standard
2344 \begin_layout Itemize
2345 bitmap: DBITMAP: The bitmap to query.
2348 \begin_layout Standard
2352 \begin_layout Itemize
2353 width: number: The width of the bitmap.
2356 \begin_layout Itemize
2357 height: number: The height of the bitmap.
2360 \begin_layout Standard
2361 Get size of bitmap <bitmap>.
2364 \begin_layout Subsubsection
2365 Method blit: Blit a bitmap into another
2368 \begin_layout Itemize
2369 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
2372 \begin_layout Itemize
2373 Syntax: dest:blit(dx, dy, src, srcpal, sx, sy, w, h, [ck])
2376 \begin_layout Itemize
2377 Deprecated: gui.bitmap_blit(dest, ...)
2380 \begin_layout Standard
2384 \begin_layout Itemize
2385 dest: DBITMAP: The target bitmap to blit to.
2388 \begin_layout Itemize
2389 dx: number: The x-coordinate in target.
2392 \begin_layout Itemize
2393 dy: number: The y-coordinate in target.
2396 \begin_layout Itemize
2397 src: BITMAP/DBITMAP: The source bitmap.
2400 \begin_layout Itemize
2401 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2404 \begin_layout Itemize
2405 sx: number: The x-coordinate in source.
2408 \begin_layout Itemize
2409 sy: number: The y-coordinate in source.
2412 \begin_layout Itemize
2413 w: number: The width of area to blit.
2416 \begin_layout Itemize
2417 h: number: The height of area to blit.
2420 \begin_layout Itemize
2421 ck: number: The color key.
2422 Pixels with this index are not copied.
2426 \begin_layout Itemize
2427 If none is specified, all pixels are copied.
2430 \begin_layout Itemize
2431 If <src> is paletted, this is color index, otherwise it is a color.
2435 \begin_layout Standard
2436 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> (with palette <pal>
2437 if indexed) into <dest> at <dx>,<dy>.
2438 If a color key <ck> is specified, pixels of that color are not copied.
2441 \begin_layout Subsubsection
2442 Method blit_scaled: Blit a bitmap into another with scaling
2445 \begin_layout Itemize
2446 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
2449 \begin_layout Itemize
2450 Syntax: dest:blit_scaled(dx, dy, src, srcpal, sx, sy, w, h, hscl, [vscl],
2454 \begin_layout Itemize
2455 Deprecated: gui.bitmap_blit_scaled(dest, ...)
2458 \begin_layout Standard
2462 \begin_layout Itemize
2463 dest: DBITMAP: The target bitmap to blit to.
2466 \begin_layout Itemize
2467 dx: number: The x-coordinate in target.
2470 \begin_layout Itemize
2471 dy: number: The y-coordinate in target.
2474 \begin_layout Itemize
2475 src: BITMAP/DBITMAP: The source bitmap.
2478 \begin_layout Itemize
2479 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2482 \begin_layout Itemize
2483 sx: number: The x-coordinate in source.
2486 \begin_layout Itemize
2487 sy: number: The y-coordinate in source.
2490 \begin_layout Itemize
2491 w: number: The width of area to blit.
2494 \begin_layout Itemize
2495 h: number: The height of area to blit.
2498 \begin_layout Itemize
2499 hscl: number: Horizontal scale factor (integer).
2502 \begin_layout Itemize
2503 vscl: number: Vertical scale factor (integer).
2504 Defaults to the same as <hscl>.
2507 \begin_layout Itemize
2508 ck: number: The color key.
2509 Pixels with this index are not copied.
2513 \begin_layout Itemize
2514 If none is specified, all pixels are copied.
2517 \begin_layout Itemize
2518 If <src> is paletted, this is color index, otherwise it is a color.
2522 \begin_layout Standard
2523 Like DBITMAP:blit, but also scales the copied part of bitmap (using nearest
2524 neighbor) by factor of <hscl>*<vscl>.
2527 \begin_layout Subsubsection
2528 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
2531 \begin_layout Itemize
2532 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
2535 \begin_layout Itemize
2536 Syntax: dest:blit_porterduff(dx, dy, src, srcpal, sx, sy, w, h, operator)
2539 \begin_layout Itemize
2540 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
2543 \begin_layout Standard
2547 \begin_layout Itemize
2548 dest: DBITMAP: The target bitmap to blit to.
2551 \begin_layout Itemize
2552 dx: number: The x-coordinate in target.
2555 \begin_layout Itemize
2556 dy: number: The y-coordinate in target.
2559 \begin_layout Itemize
2560 src: BITMAP/DBITMAP: The source bitmap.
2563 \begin_layout Itemize
2564 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2567 \begin_layout Itemize
2568 sx: number: The x-coordinate in source.
2571 \begin_layout Itemize
2572 sy: number: The y-coordinate in source.
2575 \begin_layout Itemize
2576 w: number: The width of area to blit.
2579 \begin_layout Itemize
2580 h: number: The height of area to blit.
2583 \begin_layout Itemize
2584 operator: string: The operator to use.
2588 \begin_layout Itemize
2589 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2590 DestOut, Clear or Xor.
2594 \begin_layout Standard
2595 Like DBITMAP:blit, but instead of just overwriting, applies specified Porter-Duf
2600 \begin_layout Itemize
2601 In target, fully transparent is background.
2602 In source, either fully transparent (if direct) or index 0 (if paletted)
2603 is treated as background.
2606 \begin_layout Subsubsection
2607 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2608 Porter-Duff composition
2611 \begin_layout Itemize
2612 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2616 \begin_layout Itemize
2617 Syntax: dest:blit_scaled_porterduff(dx, dy, src, srcpal, sx, sy, w, h, hscl,
2621 \begin_layout Itemize
2622 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2625 \begin_layout Standard
2629 \begin_layout Itemize
2630 dest: DBITMAP: The target bitmap to blit to.
2633 \begin_layout Itemize
2634 dx: number: The x-coordinate in target.
2637 \begin_layout Itemize
2638 dy: number: The y-coordinate in target.
2641 \begin_layout Itemize
2642 src: BITMAP/DBITMAP: The source bitmap.
2645 \begin_layout Itemize
2646 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2649 \begin_layout Itemize
2650 sx: number: The x-coordinate in source.
2653 \begin_layout Itemize
2654 sy: number: The y-coordinate in source.
2657 \begin_layout Itemize
2658 w: number: The width of area to blit.
2661 \begin_layout Itemize
2662 h: number: The height of area to blit.
2665 \begin_layout Itemize
2666 hscl: number: Horizontal scale factor (integer).
2669 \begin_layout Itemize
2670 vscl: number: Vertical scale factor (integer).
2671 Defaults to the same as <hscl>.
2674 \begin_layout Itemize
2675 operator: string: The operator to use.
2679 \begin_layout Itemize
2680 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2681 DestOut, Clear or Xor.
2685 \begin_layout Standard
2686 Like DBITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2687 like DBITMAP:blit_scaled.
2690 \begin_layout Subsubsection
2691 Method adjust_transparency: Adjust transparency of bitmap
2694 \begin_layout Itemize
2695 Syntax: bitmap:adjust_transparency(newvalue)
2698 \begin_layout Itemize
2699 Deprecated: gui.adjust_transparency(bitmap, ...)
2702 \begin_layout Standard
2706 \begin_layout Itemize
2707 bitmap: DBITMAP: The bitmap to adjust.
2710 \begin_layout Itemize
2711 Number adj: The factor to multiply opaqueness with times 256.
2714 \begin_layout Standard
2715 Multiply opaqueness of all colors in bitmap <bitmap> by factor of <adj>/256.
2718 \begin_layout Subsubsection
2719 Method save_png: Save a bitmap to PNG
2722 \begin_layout Itemize
2723 Syntax: bitmap:save_png(filename, [base])
2726 \begin_layout Itemize
2727 Syntax: data bitmap:save_png()
2730 \begin_layout Itemize
2732 gui.bitmap_save_png(bitmap, ...)
2735 \begin_layout Standard
2739 \begin_layout Itemize
2740 bitmap: DBITMAP: The bitmap to save.
2743 \begin_layout Itemize
2744 filename: string: The filename to save to.
2747 \begin_layout Itemize
2748 base: string: The base filename is resolved relative to.
2751 \begin_layout Standard
2755 \begin_layout Itemize
2756 data: string: BASE64 encoded PNG data.
2759 \begin_layout Standard
2760 Save bitmap <bitmap> into PNG file <filename> (relative to <base>) or return
2761 BASE64 encoding of it.
2764 \begin_layout Subsubsection
2765 Method hash: Hash a bitmap
2768 \begin_layout Itemize
2769 Syntax: hash bitmap:hash()
2772 \begin_layout Itemize
2773 Deprecated: hash bitmap:hash(bitmap)
2776 \begin_layout Standard
2780 \begin_layout Itemize
2781 bitmap: DBITMAP: The bitmap to hash.
2784 \begin_layout Standard
2788 \begin_layout Itemize
2789 hash: string: 64-hex digit hash
2792 \begin_layout Standard
2793 Hashes bitmap <bitmap> and returns crypto-strong hash.
2797 \begin_layout Subsection
2798 IMAGELOADER: Load an image
2801 \begin_layout Subsubsection
2802 Static function load: Load a bitmap from file
2805 \begin_layout Itemize
2806 Syntax: bitmap, palette gui.image.load(file, [base])
2809 \begin_layout Itemize
2810 Syntax: bitmap, palette classes.IMAGELOADER.load(file, [base])
2813 \begin_layout Itemize
2815 gui.bitmap_load(...)
2818 \begin_layout Standard
2822 \begin_layout Itemize
2823 file: string: The file to read.
2826 \begin_layout Itemize
2827 base: string: The base to resolve <file> relative to.
2830 \begin_layout Standard
2834 \begin_layout Itemize
2835 bitmap: BITMAP/DBITMAP: The new bitmap
2838 \begin_layout Itemize
2839 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2843 \begin_layout Standard
2844 Load a new bitmap and return it (plus associated palette if any).
2847 \begin_layout Subsubsection
2848 Static function load_str: Load a bitmap from string
2851 \begin_layout Itemize
2852 Syntax: bitmap, palette gui.image.load_str(data)
2855 \begin_layout Itemize
2856 Syntax: bitmap, palette classes.IMAGELOADER.load_str(data)
2859 \begin_layout Itemize
2861 gui.bitmap_load_str(...)
2864 \begin_layout Standard
2868 \begin_layout Itemize
2869 data: string: The image data
2872 \begin_layout Standard
2876 \begin_layout Itemize
2877 bitmap: BITMAP/DBITMAP: The new bitmap
2880 \begin_layout Itemize
2881 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2885 \begin_layout Standard
2886 Like IMAGELOADER:load, but read the bitmap from string <data> instead of
2890 \begin_layout Subsubsection
2891 Static function load_png: Load a bitmap from PNG file
2894 \begin_layout Itemize
2895 Syntax: bitmap, palette gui.image.load_png(file, [base])
2898 \begin_layout Itemize
2899 Syntax: bitmap, palette classes.IMAGELOADER.load_png(file, [base])
2902 \begin_layout Itemize
2904 gui.bitmap_load_png(...)
2907 \begin_layout Standard
2911 \begin_layout Itemize
2912 file: string: The file to read.
2915 \begin_layout Itemize
2916 base: string: The base to resolve <file> relative to.
2919 \begin_layout Standard
2923 \begin_layout Itemize
2924 bitmap: BITMAP/DBITMAP: The new bitmap
2927 \begin_layout Itemize
2928 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2932 \begin_layout Standard
2933 Like IMAGELOADER:load, but load a PNG file instead.
2936 \begin_layout Subsubsection
2937 Static function load_png_str: Load a PNG bitmap from string
2940 \begin_layout Itemize
2941 Syntax: bitmap, palette gui.image.load_png_str(data)
2944 \begin_layout Itemize
2945 Syntax: bitmap, palette classes.IMAGELOADER.load_png_str(data)
2948 \begin_layout Itemize
2950 gui.bitmap_load_png_str(...)
2953 \begin_layout Standard
2957 \begin_layout Itemize
2958 data: string: The image data, base64 encoded.
2961 \begin_layout Standard
2965 \begin_layout Itemize
2966 bitmap: BITMAP/DBITMAP: The new bitmap
2969 \begin_layout Itemize
2970 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2974 \begin_layout Standard
2975 Like IMAGELOADER:load_png, but read the bitmap from BASE64 encoded string
2976 <data> instead of file.
2979 \begin_layout Standard
2980 \begin_inset Newpage pagebreak
2986 \begin_layout Subsection
2987 CUSTOMFONT: Arbitrary-sized bitmap font
2990 \begin_layout Subsubsection
2991 Static function new: Return a new empty font
2994 \begin_layout Itemize
2995 Syntax: font gui.font.new()
2998 \begin_layout Itemize
2999 Syntax: font classes.CUSTOMFONT.new()
3002 \begin_layout Itemize
3003 Deprecated: font gui.font_new()
3006 \begin_layout Standard
3010 \begin_layout Itemize
3011 font: CUSTOMFONT: New font.
3014 \begin_layout Standard
3015 Create a new font with no characters and return it.
3018 \begin_layout Subsubsection
3019 Static function: load: Load a font file
3022 \begin_layout Itemize
3023 Syntax: font gui.font.load(file, [base])
3026 \begin_layout Itemize
3027 Syntax: font gui.font.load()
3030 \begin_layout Itemize
3031 Syntax: font classes.CUSTOMFONT.load(file, [base])
3034 \begin_layout Itemize
3035 Syntax: font classes.CUSTOMFONT.load()
3038 \begin_layout Itemize
3039 Deprecated: font gui.loadfont(...)
3042 \begin_layout Standard
3046 \begin_layout Itemize
3047 file: string: The file to read the font from
3050 \begin_layout Itemize
3051 base: string: The file to resolve <file> relative to.
3054 \begin_layout Standard
3058 \begin_layout Itemize
3059 font: CUSTOMFONT: New font.
3062 \begin_layout Standard
3063 Load font from file <file> (relative to <base>).
3064 If no filename is given, system default font is loaded.
3067 \begin_layout Subsubsection
3068 operator(): Render text to screen
3071 \begin_layout Itemize
3072 Syntax: font(x, y, text, [fgc], [bgc], [hlc])
3075 \begin_layout Standard
3079 \begin_layout Itemize
3080 font: CUSTOMFONT: The font to use.
3083 \begin_layout Itemize
3084 x: number: The x-position on screen to draw to.
3087 \begin_layout Itemize
3088 y: number: The y-position on screen to draw to.
3091 \begin_layout Itemize
3092 text: string: The text to draw.
3095 \begin_layout Itemize
3096 fgc: number/string: Foreground color (default white).
3099 \begin_layout Itemize
3100 bgc: number/string: Background color (default transparent).
3103 \begin_layout Itemize
3104 hlc: number/string: Outline color (default transparent).
3107 \begin_layout Standard
3108 Draws a string <text> with specified font <font> and colors <fgc>,<bgc>,<hlc>
3112 \begin_layout Itemize
3113 If <hlc> is transparent, no outline is drawn.
3116 \begin_layout Subsubsection
3117 Method edit: Alter glyph in font
3120 \begin_layout Itemize
3121 Syntax: font:edit(character, glyph)
3124 \begin_layout Standard
3128 \begin_layout Itemize
3129 font: CUSTOMFONT: The font to edit.
3132 \begin_layout Itemize
3133 character: string: The character to edit (UTF-8 encoded).
3136 \begin_layout Itemize
3137 glyph: BITMAP: The bitmap to use.
3140 \begin_layout Standard
3141 Replace character <character> in font <font> by <glyph>.
3144 \begin_layout Itemize
3145 Color index 0 is background, everything else is foreground.
3148 \begin_layout Itemize
3149 <character> may be empty string, meaning the replacement character used
3153 \begin_layout Itemize
3154 <character> may be multi-codepoint string, meaning character used for that
3158 \begin_layout Standard
3159 \begin_inset Newpage pagebreak
3165 \begin_layout Subsection
3166 ICONV: Character set conversions
3169 \begin_layout Subsubsection
3170 Static function new: Create new character set converter
3173 \begin_layout Itemize
3174 Syntax: iconv iconv.new(from, to);
3177 \begin_layout Itemize
3178 Syntax: iconv classes.ICONV.new(from, to);
3181 \begin_layout Itemize
3182 Deprecated: iconv iconv_new(...);
3185 \begin_layout Standard
3189 \begin_layout Itemize
3190 from: string: The source character set.
3193 \begin_layout Itemize
3194 to: string: The target character set.
3197 \begin_layout Standard
3201 \begin_layout Itemize
3202 iconv: ICONV: The converter.
3205 \begin_layout Standard
3206 Create a character set converter, converting from <from> to <to> and return
3210 \begin_layout Subsubsection
3211 Operator(): Convert string fragment from character set to another
3214 \begin_layout Itemize
3215 Syntax: success, result, unconverted, error iconv(input)
3218 \begin_layout Standard
3222 \begin_layout Itemize
3223 iconv: ICONV: The context to use.
3226 \begin_layout Itemize
3227 input: string: The input to convert.
3230 \begin_layout Standard
3234 \begin_layout Itemize
3235 success: boolean: True if conversion was successful, false if not.
3238 \begin_layout Itemize
3239 result: string: The string (partially) converted.
3242 \begin_layout Itemize
3243 unconvered: number: Number of bytes that were not converted (only if <success>
3247 \begin_layout Itemize
3248 error: string: Error that caused conversion to stop (only if <success> is
3253 \begin_layout Itemize
3254 INVALID: The input string is invalid.
3257 \begin_layout Itemize
3258 INCOMPLETE: The input string cuts off in middle of character.
3261 \begin_layout Itemize
3262 INTERNALERR: Internal error.
3266 \begin_layout Standard
3267 Convert a string <input> using character set converter <iconv> and return
3271 \begin_layout Standard
3272 \begin_inset Newpage pagebreak
3278 \begin_layout Subsection
3279 FILEREADER: Read a file as a stream
3282 \begin_layout Subsubsection
3283 Static function open: Open a stream
3286 \begin_layout Itemize
3287 Syntax: handle filereader.open(file, [base])
3290 \begin_layout Itemize
3291 Syntax: handle classes.FILEREADER.open(file, [base])
3294 \begin_layout Itemize
3295 Deprecated: handle open_file(file, [base])
3298 \begin_layout Standard
3302 \begin_layout Itemize
3303 file: string: The filename to read.
3306 \begin_layout Itemize
3307 base: string: The base <file> is resolved against.
3310 \begin_layout Standard
3314 \begin_layout Itemize
3315 handle: FILEREADER: The new file reader.
3318 \begin_layout Standard
3319 Open file <file> (relative to <base>) and return a handle to it.
3322 \begin_layout Subsubsection
3323 operator(): Read line/bytes from stream
3326 \begin_layout Itemize
3327 Syntax: result handle()
3330 \begin_layout Itemize
3331 Syntax: result handle(bytes)
3334 \begin_layout Standard
3338 \begin_layout Itemize
3339 handle: FILEREADER: The handle to read from.
3342 \begin_layout Itemize
3343 bytes: Number of bytes to read (default is next line).
3346 \begin_layout Standard
3350 \begin_layout Itemize
3351 result: string: The read data, or nil on end-of-file.
3354 \begin_layout Standard
3355 Reads next line or <bytes> bytes from specified file handle <handle>.
3358 \begin_layout Itemize
3359 If reading specified number of bytes, the bytes are read in binary mode
3363 \begin_layout Itemize
3364 If reading next line, the line is read in text mode (any line ending is
3368 \begin_layout Subsubsection
3369 Method lines: Iterator to read all lines
3372 \begin_layout Itemize
3373 Syntax: for line in handle:lines() do ...
3377 \begin_layout Standard
3381 \begin_layout Itemize
3382 handle: FILEREADER: The handle to read.
3385 \begin_layout Standard
3389 \begin_layout Itemize
3390 A lua iterator with one variable.
3393 \begin_layout Standard
3394 Return a Lua iterator that iterates all the lines in <handle>.
3397 \begin_layout Standard
3398 \begin_inset Newpage pagebreak
3404 \begin_layout Section
3408 \begin_layout Subsection
3409 print: Print values to console
3412 \begin_layout Itemize
3413 Syntax: none print(value...
3417 \begin_layout Standard
3418 Prints specified values to console.
3419 Can print any Lua type at least enough to identify the type and instance.
3422 \begin_layout Subsection
3423 tostringx: Format a value to string
3426 \begin_layout Itemize
3427 Syntax: string tostringx(value val)
3430 \begin_layout Standard
3431 Formats value <val> like print would, and returns the result as a string.
3434 \begin_layout Subsection
3435 exec: Execute lsnes commands
3438 \begin_layout Itemize
3439 Syntax: none exec(string cmd)
3442 \begin_layout Standard
3443 Execute lsnes command <cmd>.
3446 \begin_layout Subsection
3447 utime: Get current time
3450 \begin_layout Itemize
3451 Syntax: (number,number) utime()
3454 \begin_layout Standard
3455 Returns two numbers.
3456 First is time since some epoch in seconds, the second is microseconds mod
3457 10^6 since that epoch.
3460 \begin_layout Subsection
3461 emulator_ready: Check if emulator has been fully initialized
3464 \begin_layout Itemize
3465 Syntax: boolean emulator_ready()
3468 \begin_layout Standard
3469 Returns true if emulator has finished booting, false if not (on_startup()
3470 will be issued later).
3473 \begin_layout Subsection
3474 set_idle_timeout: Run function after timeout when emulator is idle
3477 \begin_layout Itemize
3478 Syntax: none set_idle_timeout(number timeout)
3481 \begin_layout Standard
3482 Set number of microseconds to block idle for.
3483 After this timeout has expired, on_idle() will be called once.
3486 \begin_layout Subsection
3487 set_timer_timeout: Run function after timeout.
3490 \begin_layout Itemize
3491 Syntax: none set_timer_timeout(number timeout)
3494 \begin_layout Standard
3495 Set number of microseconds to block timer for.
3496 After this timeout has expired, on_timer() will be called once.
3499 \begin_layout Subsection
3500 bus_address: Look up address in system bus.
3503 \begin_layout Itemize
3504 Syntax: none bus_address(number bus_addr)
3507 \begin_layout Standard
3508 Returns virtual address corresponding to specified address on system bus.
3511 \begin_layout Subsection
3512 loopwrapper: Convert loop into callable function
3515 \begin_layout Itemize
3516 Syntax: function loopwrapper(function fun, ...)
3519 \begin_layout Standard
3520 Calls function <fun> with function and specified arguments.
3521 The function passed suspends execution until the function returned is called.
3522 Handy for linear flow control among multiple invocations of a hook.
3526 \begin_layout LyX-Code
3527 on_paint = loopwrapper(function(wait)
3531 \begin_layout LyX-Code
3536 \begin_layout LyX-Code
3538 \begin_inset Quotes eld
3542 \begin_inset Quotes erd
3548 \begin_layout LyX-Code
3553 \begin_layout LyX-Code
3558 \begin_layout LyX-Code
3562 \begin_layout Subsection
3563 list_bindings: List keybindings
3566 \begin_layout Itemize
3567 Syntax: table list_bindings([string cmd])
3570 \begin_layout Standard
3571 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
3572 If <cmd> is specified, the table is limited to that command.
3573 Also searches for controller keys.
3576 \begin_layout Subsection
3577 get_alias: Get expansion of alias
3580 \begin_layout Itemize
3581 Syntax: string get_alias(string aname)
3584 \begin_layout Standard
3585 Get expansion of given alias <aname>.
3588 \begin_layout Subsection
3589 set_alias: Set expansion of alias
3592 \begin_layout Itemize
3593 Syntax: none set_alias(string aname, string value)
3596 \begin_layout Standard
3597 Set expansion of given alias.
3600 \begin_layout Subsection
3601 create_ibind: Create invese binding
3604 \begin_layout Itemize
3605 Syntax: INVERSEBIND create_ibind(string name, string cmd)
3608 \begin_layout Standard
3609 Return object representing inverse binding with specified name <name> and
3610 specified command <cmd>.
3613 \begin_layout Itemize
3614 Note: To create press/release commands, use aliases +foo and -foo .
3617 \begin_layout Itemize
3618 Note: Keep the returned object around.
3621 \begin_layout Subsection
3622 create_command: Create a command
3625 \begin_layout Itemize
3626 Syntax: COMMANDBIND create_commmand(string name, function a)
3629 \begin_layout Itemize
3630 Syntax: COMMANDBIND create_commmand(string name, function a, function b)
3633 \begin_layout Standard
3634 Return object representing a command (pair).
3637 \begin_layout Itemize
3638 If only one function is specied, the command is level-sensitive, <a> is
3642 \begin_layout Itemize
3643 If <b> is function, the function is edge-sensitive, <a> is positive edge
3644 callback and <b> is negative edge callback.
3647 \begin_layout Itemize
3648 All callbacks get single argument: The parameters passed.
3651 \begin_layout Itemize
3652 Keep the returned object around.
3655 \begin_layout Subsection
3656 loadfile: Load Lua script
3659 \begin_layout Itemize
3660 Syntax: function loadfile(string filename[, string base])
3663 \begin_layout Standard
3664 Load lua script from <filename>, resolved relative to <base> (if empty,
3668 \begin_layout Subsection
3669 dofile: Execute Lua script
3672 \begin_layout Itemize
3673 Syntax: function dofile(string filename[, string base])
3676 \begin_layout Standard
3677 Execute lua script from <filename>, resolved relative to <base> (if empty,
3678 current directory) and return all return values.
3681 \begin_layout Subsection
3682 resolve_filename: Resolve name of file relative to another
3685 \begin_layout Itemize
3686 Syntax: string resolve_file(string filename, string base)
3689 \begin_layout Standard
3690 Resolve name of file <filename> relative to <base> and return the result.
3693 \begin_layout Subsection
3694 render_queue_function: Return paint function for render queue
3697 \begin_layout Itemize
3698 Syntax: function render_queue_function(RENDERQUEUE rq)
3701 \begin_layout Standard
3702 Return function that renders render queue <rq>.
3705 \begin_layout Itemize
3706 Handy for paint callback if one is using render queues updated in other
3711 \begin_layout LyX-Code
3712 handle = callback.paint:register(render_queue_function(my_rq));
3715 \begin_layout Subsection
3716 identify_class: Identify class of object
3719 \begin_layout Itemize
3720 Syntax: string identify_class(userdata object)
3723 \begin_layout Standard
3724 Identifies the class of userdata <object>, if possible.
3725 If no identification is possible, returns
3726 \begin_inset Quotes eld
3730 \begin_inset Quotes erd
3736 \begin_layout Subsection
3737 lookup_class: Lookup class by name
3740 \begin_layout Itemize
3741 Syntax: classobj lookup_class(string name)
3744 \begin_layout Standard
3745 Looks up class corresponding to <name>, if possible.
3746 If not found, returns nil.
3747 The classobj has following fields:
3750 \begin_layout Itemize
3751 _static_methods: Return static method names
3754 \begin_layout Itemize
3755 _class_methods: Return class method names
3758 \begin_layout Itemize
3759 <static-function-name>: The specified static function.
3762 \begin_layout Subsection
3766 \begin_layout Standard
3770 \begin_layout Subsection
3771 filereader: Class FILEREADER
3774 \begin_layout Standard
3775 See class FILEREADER.
3778 \begin_layout Standard
3779 \begin_inset Newpage pagebreak
3785 \begin_layout Section
3789 \begin_layout Standard
3790 Bitwise logical functions and related.
3793 \begin_layout Subsection
3794 bit.none/bit.bnot: Bitwise none or NOT function
3797 \begin_layout Itemize
3798 Syntax: number bit.none(number...)
3801 \begin_layout Itemize
3802 Syntax: number bit.bnot(number...)
3805 \begin_layout Standard
3806 48-bit bitwise NOT / NONE function (set bits that are set in none of the
3810 \begin_layout Subsection
3811 bit.any/bit.bor: Bitwise any or OR function
3814 \begin_layout Itemize
3815 Syntax: number bit.any(number...)
3818 \begin_layout Itemize
3819 Syntax: number bit.bor(number...)
3822 \begin_layout Standard
3823 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
3826 \begin_layout Subsection
3827 bit.all/bit.band: Bitwise all or AND function
3830 \begin_layout Itemize
3831 Syntax: number bit.all(number...)
3834 \begin_layout Itemize
3835 Syntax: number bit.band(number...)
3838 \begin_layout Standard
3839 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
3843 \begin_layout Subsection
3844 bit.parity/bit.bxor: Bitwise parity or XOR function
3847 \begin_layout Itemize
3848 Syntax: number bit.parity(number...)
3851 \begin_layout Itemize
3852 Syntax: number bit.bxor(number...)
3855 \begin_layout Standard
3856 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
3860 \begin_layout Subsection
3861 bit.lrotate: Rotate a number left
3864 \begin_layout Itemize
3865 Syntax: number bit.lrotate(number base[, number amount[, number bits]])
3868 \begin_layout Standard
3869 Rotate <bits>-bit (max 48, default 48) number <base> left by <amount> (default
3873 \begin_layout Subsection
3874 bit.rrotate: Rotate a number right
3877 \begin_layout Itemize
3878 Syntax: number bit.rrotate(number base[, number amount[, number bits]])
3881 \begin_layout Standard
3882 Rotate <bits>-bit (max 48, default 48) number <base> right by <amount> (default
3886 \begin_layout Subsection
3887 bit.lshift: Shift a number left
3890 \begin_layout Itemize
3891 Syntax: number bit.lshift(number base[, number amount[, number bits]])
3894 \begin_layout Standard
3895 Shift <bits>-bit (max 48, default 48) number <base> left by <amount> (default
3897 The new bits are filled with zeroes.
3900 \begin_layout Subsection
3901 bit.lrshift: Shift a number right (logical)
3904 \begin_layout Itemize
3905 Syntax: number bit.lrshift(number base[, number amount[, number bits]])
3908 \begin_layout Standard
3909 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
3911 The new bits are filled with zeroes.
3914 \begin_layout Subsection
3915 bit.arshift: Shift a number right (arithmetic)
3918 \begin_layout Itemize
3919 Syntax: number bit.arshift(number base[, number amount[, number bits]])
3922 \begin_layout Standard
3923 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
3925 The new bits are shifted in with copy of the high bit.
3928 \begin_layout Subsection
3929 bit.extract: Extract/shuffle bits from number
3932 \begin_layout Itemize
3933 Syntax: number bit.extract(number base[, number bit0[, number bit1,...]])
3936 \begin_layout Standard
3937 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
3940 \begin_layout Itemize
3941 Note: Bit numbers up to 51 should work reliably (then things start falling
3942 apart due to double precision issues).
3945 \begin_layout Itemize
3946 Note: There are two special bit positions, true and false, standing for
3947 always set bit and always clear bit.
3950 \begin_layout Subsection
3951 bit.value: Construct number with specified bits set
3954 \begin_layout Itemize
3955 Syntax: number bit.value([number bit1[, number bit2,...]])
3958 \begin_layout Standard
3959 Returns bitwise OR of 1 left shifted by <bit1> places, 1 left shifted by
3960 <bit2> places and so on.
3961 As special value, nil argument is no-op.
3964 \begin_layout Subsection
3965 bit.test_any: Test if any bit is set
3968 \begin_layout Itemize
3969 Syntax: boolean bit.test_any(number a, number b)
3972 \begin_layout Standard
3973 Returns true if bitwise and of <a> and <b> is nonzero, otherwise false.
3976 \begin_layout Subsection
3977 bit.test_all: Test if all bits are set
3980 \begin_layout Itemize
3981 Syntax: boolean bit.test_all(number a, number b)
3984 \begin_layout Standard
3985 Returns true if bitwise and of <a> and <b> equals <b>, otherwise false.
3988 \begin_layout Subsection
3989 bit.popcount: Population count
3992 \begin_layout Itemize
3993 Syntax: number bit.popcount(number a)
3996 \begin_layout Standard
3997 Returns number of set bits in <a>.
4000 \begin_layout Subsection
4001 bit.clshift: Chained left shift
4004 \begin_layout Itemize
4005 Syntax: (number, number) bit.clshift(number a, number b, [number amount,[number
4009 \begin_layout Standard
4010 Does chained left shift on <a>, <b> by <amount> positions (default 1), assuming
4011 numbers to be of specified number of bits <bits> (default 48).
4014 \begin_layout Subsection
4015 bit.crshift: Chained right shift
4018 \begin_layout Itemize
4019 Syntax: (number, number) bit.crshift(number a, number b, [number amount,[number
4023 \begin_layout Standard
4024 Does chained right shift on <a>, <b> by <amount> positions (default 1),
4025 assuming numbers to be of specified number of bits <bits> (default 48).
4028 \begin_layout Subsection
4029 bit.flagdecode: Decode bitfield into flags
4032 \begin_layout Itemize
4033 Syntax: string bit.flagdecode(number a, number bits, [string on, [string
4037 \begin_layout Standard
4038 Return string of length bits where ith character is ith character of on
4039 if bit i is on, otherwise ith character of off.
4040 Out of range reads give last character.
4043 \begin_layout Itemize
4044 Note: <on> defaults to '*' if empty.
4047 \begin_layout Itemize
4048 Note: <off> defaults to '-' if empty.
4051 \begin_layout Subsection
4052 bit.rflagdecode: Decode bitfield into flags
4055 \begin_layout Itemize
4056 Syntax: string bit.rflagdecode(number a, number bits, [string on, [string
4060 \begin_layout Standard
4061 Like bit.flagdecode, but outputs the string in the opposite order (most significa
4065 \begin_layout Subsection
4066 bit.swap{,s}{,h,d,q}word: Swap word endian
4069 \begin_layout Itemize
4070 Syntax: number bit.swapword(number n)
4073 \begin_layout Itemize
4074 Syntax: number bit.swaphword(number n)
4077 \begin_layout Itemize
4078 Syntax: number bit.swapdword(number n)
4081 \begin_layout Itemize
4082 Syntax: number bit.swapqword(number n)
4085 \begin_layout Itemize
4086 Syntax: number bit.swapsword(number n)
4089 \begin_layout Itemize
4090 Syntax: number bit.swapshword(number n)
4093 \begin_layout Itemize
4094 Syntax: number bit.swapsdword(number n)
4097 \begin_layout Itemize
4098 Syntax: number bit.swapsqword(number n)
4101 \begin_layout Standard
4102 Swap endianess of (un)signed integer <n>.
4105 \begin_layout Standard
4106 \begin_inset Newpage pagebreak
4112 \begin_layout Section
4116 \begin_layout Subsection
4117 classes.<foo>: The classobj for class <foo>
4120 \begin_layout Itemize
4121 Syntax: classes.<foo>
4124 \begin_layout Standard
4125 The classobj for class <foo>.
4128 \begin_layout Subsection
4129 classes.<foo>._static_methods: Enumerate static methods
4132 \begin_layout Itemize
4134 classes.<foo>._static_methods()
4137 \begin_layout Standard
4138 Returns all static methods of <foo> as strings.
4141 \begin_layout Subsection
4142 classes.<foo>._class_methods: Enumerate static methods
4145 \begin_layout Itemize
4147 classes.<foo>._class_methods()
4150 \begin_layout Standard
4151 Returns all class methods of <foo> as strings.
4154 \begin_layout Subsection
4155 classes.<foo>.<bar>: Static method
4158 \begin_layout Itemize
4159 Syntax: variable classes.<foo>.<bar>(variable...)
4162 \begin_layout Standard
4163 Invokes static method <bar> of class <foo>.
4166 \begin_layout Section
4170 \begin_layout Subsection
4171 gui.resolution: Get current resolution
4174 \begin_layout Itemize
4175 Syntax: (number, number) gui.resolution()
4178 \begin_layout Standard
4179 Returns 2-tuple (hresolution, vresolution).
4182 \begin_layout Subsection
4183 gui.left_gap/gui.right_gap/gui.top_gap/gui.bottom_gap: Set edge gaps
4186 \begin_layout Itemize
4187 Syntax: number gui.left_gap(number gap)
4190 \begin_layout Itemize
4191 Syntax: number gui.right_gap(number gap)
4194 \begin_layout Itemize
4195 Syntax: number gui.top_gap(number gap)
4198 \begin_layout Itemize
4199 Syntax: number gui.bottom_gap(number gap)
4202 \begin_layout Standard
4203 Set the specified edge gap to specified value <gap> (max gap is 8191).
4204 If successful, old gap is returned.
4207 \begin_layout Subsection
4208 gui.delta_left_gap/gui.delta_right_gap/gui.delta_top_gap/gui.delta_bottom_gap:
4212 \begin_layout Itemize
4213 Syntax: number gui.delta_left_gap(number dgap)
4216 \begin_layout Itemize
4217 Syntax: number gui.delta_right_gap(number dgap)
4220 \begin_layout Itemize
4221 Syntax: number gui.delta_top_gap(number dgap)
4224 \begin_layout Itemize
4225 Syntax: number gui.delta_bottom_gap(number dgap)
4228 \begin_layout Standard
4229 Increase the specified edge gap by specified value <dgap> (max gap is 8191)
4230 and return the old gap (returns nothing on error).
4233 \begin_layout Subsection
4234 gui.text/gui.textH/gui.textV,gui.textHV: Draw text
4237 \begin_layout Itemize
4238 Syntax: none gui.text(number x, number y, string text[, number fgc[, number
4242 \begin_layout Itemize
4243 Syntax: none gui.textH(number x, number y, string text[, number fgc[, number
4247 \begin_layout Itemize
4248 Syntax: none gui.textV(number x, number y, string text[, number fgc[, number
4252 \begin_layout Itemize
4253 Syntax: none gui.textHV(number x, number y, string text[, number fgc[, number
4257 \begin_layout Standard
4258 Draw specified text on the GUI (each character cell is 8 or 16 wide and
4263 \begin_layout Itemize
4264 x: X-coordinate to start the drawing from (and x-coordinate at begining
4268 \begin_layout Itemize
4269 y: Y-coordinate to start the drawing from.
4272 \begin_layout Itemize
4273 text: The text to draw.
4276 \begin_layout Itemize
4277 fgc: Text color (default is 0xFFFFFF (white))
4280 \begin_layout Itemize
4281 bgc: Background color (default is -1 (transparent))
4284 \begin_layout Standard
4285 Note: The H variants draw at double width and V variants draw at double
4289 \begin_layout Subsection
4290 gui.rectangle: Draw a rectangle
4293 \begin_layout Itemize
4294 Syntax: none gui.rectangle(number x, number y, number width, number height[,
4295 number thickness[, number outline[, number fill]]])
4298 \begin_layout Standard
4299 Draw rectangle on the GUI.
4303 \begin_layout Itemize
4304 x: X-coordinate of left edge.
4307 \begin_layout Itemize
4308 y: Y-coordinate of upper edge.
4311 \begin_layout Itemize
4312 width: Width of rectangle.
4315 \begin_layout Itemize
4316 height: Height of rectangle.
4319 \begin_layout Itemize
4320 thickness: Thickness of outline (default is 1).
4323 \begin_layout Itemize
4324 outline: Color of outline (default is 0xFFFFFF (white))
4327 \begin_layout Itemize
4328 fill: Color of fill (default is -1 (transparent))
4331 \begin_layout Subsection
4332 gui.box: Draw a 3D-effect box
4335 \begin_layout Itemize
4336 Syntax: none gui.box(number x, number y, number width, number height[, number
4337 thickness[, number outline1[,number outline2[, number fill]]]])
4340 \begin_layout Standard
4341 Draw rectangle with 3D effect on the GUI.
4345 \begin_layout Itemize
4346 x: X-coordinate of left edge.
4349 \begin_layout Itemize
4350 y: Y-coordinate of upper edge.
4353 \begin_layout Itemize
4354 width: Width of rectangle.
4357 \begin_layout Itemize
4358 height: Height of rectangle.
4361 \begin_layout Itemize
4362 thickness: Thickness of outline (default is 1).
4365 \begin_layout Itemize
4366 outline1: First color of outline (default is 0xFFFFFF (white))
4369 \begin_layout Itemize
4370 outline2: First color of outline (default is 0x808080 (dark gray))
4373 \begin_layout Itemize
4374 fill: Color of fill (default is 0xC0C0C0 (light grayy))
4377 \begin_layout Subsection
4378 gui.pixel: Draw a single pixel
4381 \begin_layout Itemize
4382 Syntax: none gui.pixel(number x, number y[, number color])
4385 \begin_layout Standard
4386 Draw one pixel on the GUI.
4390 \begin_layout Itemize
4391 x: X-coordinate of the pixel
4394 \begin_layout Itemize
4395 y: Y-coordinate of the pixel
4398 \begin_layout Itemize
4399 color: Color of the pixel (default is 0xFFFFFF (white))
4402 \begin_layout Subsection
4403 gui.crosshair: Draw a crosshair
4406 \begin_layout Itemize
4407 Syntax: none gui.crosshair(number x, number y[, number length[, number color]])
4410 \begin_layout Standard
4415 \begin_layout Itemize
4416 x: X-coordinate of the crosshair
4419 \begin_layout Itemize
4420 y: Y-coordinate of the crosshair
4423 \begin_layout Itemize
4424 length: Length of the crosshair lines (default 10).
4427 \begin_layout Itemize
4428 color: Color of the crosshair (default is 0xFFFFFF (white))
4431 \begin_layout Subsection
4432 gui.line: Draw a line
4435 \begin_layout Itemize
4436 Syntax: none gui.line(number x1, number y1, number x2, number y2[, number
4440 \begin_layout Standard
4445 \begin_layout Itemize
4446 x1: X-coordinate of one end.
4449 \begin_layout Itemize
4450 y1: Y-coordinate of one end.
4453 \begin_layout Itemize
4454 x2: X-coordinate of the other end.
4457 \begin_layout Itemize
4458 y2: Y-coordinate of the other end.
4461 \begin_layout Itemize
4462 color: Color of the line (default is 0xFFFFFF (white)).
4465 \begin_layout Subsection
4466 gui.circle: Draw a (filled) circle
4469 \begin_layout Itemize
4470 Syntax: none gui.circle(number x, number y, number r[, number thick[, number
4471 border[, number fil]]])
4474 \begin_layout Standard
4479 \begin_layout Itemize
4480 x: X-coordinate of the center
4483 \begin_layout Itemize
4484 y: Y-coordinate of the center
4487 \begin_layout Itemize
4488 r: The radius of the circle
4491 \begin_layout Itemize
4492 thick: Border thickness
4495 \begin_layout Itemize
4496 border: Border color (default is 0xFFFFFF (white))
4499 \begin_layout Itemize
4500 fill: Fill color (default is -1 (transparent)).
4503 \begin_layout Subsection
4504 gui.repaint: Arrange a repaint
4507 \begin_layout Itemize
4508 Syntax: none gui.repaint()
4511 \begin_layout Standard
4512 Request on_repaint() to happen as soon as possible.
4515 \begin_layout Subsection
4516 gui.subframe_update: Enable/Disable subframe updates
4519 \begin_layout Itemize
4520 Syntax: none gui.subframe_update(boolean on)
4523 \begin_layout Standard
4524 Request subframe updates (calling on_paint() on subframes) to happen (<on>=true)
4525 or not happen (<on>=false).
4528 \begin_layout Subsection
4529 gui.screenshot: Write a screenshot
4532 \begin_layout Itemize
4533 Syntax: none gui.screenshot(string filename)
4536 \begin_layout Standard
4537 Write PNG screenshot of the current frame (no drawings) to specified file
4541 \begin_layout Subsection
4542 gui.screenshot_bitmap: Write a screenshot to bitmap
4545 \begin_layout Itemize
4546 Syntax: DBITMAP gui.screenshot_bitmap()
4549 \begin_layout Standard
4550 Write PNG screenshot of the current frame (no drawings) to dbitmap and return
4554 \begin_layout Subsection
4555 gui.color: Compose a color.
4558 \begin_layout Itemize
4559 Syntax: number gui.color(number r, number g, number b[, number a])
4562 \begin_layout Itemize
4563 Syntax: number gui.color(string c)
4566 \begin_layout Standard
4567 Returns color (in notation Lua scripts use) corresponding to color (<r>,<g>,<b>)
4568 , each component in scale 0-255.
4569 If <a> is specified, that is alpha (0 is fully transparent, 256(sic) is
4571 The default alpha is 256.
4574 \begin_layout Standard
4575 The form taking a string returns color corresponding color name.
4578 \begin_layout Subsection
4579 gui.status: Set status variable
4582 \begin_layout Itemize
4583 Syntax: none gui.status(string name, string value)
4586 \begin_layout Standard
4588 \begin_inset Quotes eld
4592 \begin_inset Quotes erd
4595 to <value> in status area.
4598 \begin_layout Subsection
4599 gui.rainbow: Rainbow color calculation
4602 \begin_layout Itemize
4603 Syntax: number gui.rainbow(number step, number steps[, number color])
4606 \begin_layout Standard
4607 Perform hue rotation of color <color> (default bright red), by <step> steps.
4608 The number of steps per full rotation is given by absolute value of <steps>.
4611 \begin_layout Standard
4612 If <step> is negative, the rotation will be counterclockwise.
4615 \begin_layout Subsection
4616 gui.kill_frame: Kill video frame and associated sound
4619 \begin_layout Itemize
4620 Syntax: none gui.kill_frame()
4623 \begin_layout Standard
4624 Kills the currently dumped video frame + the associated sound.
4625 Only valid in on_video callback.
4628 \begin_layout Subsection
4629 gui.set_video_scale: Set video frame scale
4632 \begin_layout Itemize
4633 Syntax: none gui.set_video_scale(number h, number v)
4636 \begin_layout Standard
4637 Sets the scale factors of current frame to <h>x<v>.
4638 Only valid in on_video callback.
4641 \begin_layout Subsection
4642 gui.arrow: Draw an arrow
4645 \begin_layout Itemize
4646 Syntax: none gui.arrow(number x, number y, number length, number hwidth,
4647 number direction[, bool fill[, number color[, number twidth[, number hthick]]]]
4651 \begin_layout Standard
4652 Draws an arrow using color <color>.
4653 The tip of arrow is at (<x>, <y>).
4657 \begin_layout Enumerate
4658 <length>: The length of arrow tail.
4661 \begin_layout Enumerate
4662 <hwidth>: The width of arrow head.
4666 \begin_layout Enumerate
4667 <direction>: Direction of arrow.
4668 0 is to right, +1 rotates 45 degrees counterclockwise.
4671 \begin_layout Enumerate
4672 <fill>: If true, fill the arrow head.
4676 \begin_layout Enumerate
4677 <twidth>: Tail width.
4682 \begin_layout Enumerate
4683 <hthick>: Head thickness (only used if <fill> is false).
4684 Default is <twidth>.
4687 \begin_layout Subsection
4688 gui.tiled_bitmap: Class TILEMAP
4691 \begin_layout Standard
4695 \begin_layout Subsection
4696 gui.palette: Class PALETTE
4699 \begin_layout Standard
4703 \begin_layout Subsection
4704 gui.bitmap: Class BITMAP
4707 \begin_layout Standard
4711 \begin_layout Subsection
4712 gui.dbitmap: Class DBITMAP
4715 \begin_layout Standard
4719 \begin_layout Subsection
4720 gui.font: Class CUSTOMFONT
4723 \begin_layout Standard
4724 See class CUSTOMFONT.
4727 \begin_layout Subsection
4728 gui.renderctx: Class RENDERCTX
4731 \begin_layout Standard
4732 See class RENDERCTX.
4735 \begin_layout Subsection
4736 gui.image: Class IMAGELOADER
4739 \begin_layout Standard
4740 See class IMAGELOADER.
4743 \begin_layout Standard
4744 \begin_inset Newpage pagebreak
4750 \begin_layout Section
4754 \begin_layout Standard
4756 Functions manipulating input are only available in on_input callback.
4759 \begin_layout Subsection
4760 input.get: Read controller button/axis (deprecated)
4763 \begin_layout Itemize
4764 Syntax: number input.get(number controller, number index)
4767 \begin_layout Standard
4768 Read the specified index <index> (zero-based) from specified controller
4769 <controller> (zero-based).
4773 \begin_layout Subsection
4774 input.set: Write controller button/axis (deprecated)
4777 \begin_layout Itemize
4778 Syntax: none input.set(number controller, number index, number value)
4781 \begin_layout Standard
4782 Write the specified index <index> (zero-based) from specified controller
4783 <controller> (zero-based), storing value <value>.
4786 \begin_layout Subsection
4787 input.get2: Read controller button/axis
4790 \begin_layout Itemize
4791 Syntax: number input.get2(number port, number controller, number index)
4794 \begin_layout Standard
4795 Read the specified input tuple.
4796 Port 0 is system port.
4799 \begin_layout Subsection
4800 input.set2: Write controller button/axis
4803 \begin_layout Itemize
4804 Syntax: input.set2(number port, number controller, number index, number value)
4807 \begin_layout Standard
4808 Write the specified input tuple.
4809 Port 0 is system port.
4812 \begin_layout Subsection
4813 input.lcid_to_pcid2: Look up logical controller
4816 \begin_layout Itemize
4817 Syntax: (number, number) input.lcid_to_pcid2(number lcid)
4820 \begin_layout Standard
4821 Look up physical pcid pair (port, controller) corresponding to specified
4822 logical controller (1-based).
4823 Returns nothing if controller does not exist.
4826 \begin_layout Subsection
4827 input.port_type: Look up port type
4830 \begin_layout Itemize
4831 Syntax: string input.port_type(number port)
4834 \begin_layout Standard
4835 Return type of specified port.
4838 \begin_layout Subsection
4839 input.controller_info: Get information about controller
4842 \begin_layout Itemize
4843 Syntax: table input.controller_info(number port, number controller)
4846 \begin_layout Standard
4847 Get controller info for specified controller.
4848 If controller does not exist, returns nil.
4849 Otherwise returns a table with following fields:
4852 \begin_layout Itemize
4853 type (string): Type of the controller.
4856 \begin_layout Itemize
4857 class (string): Class of the controller.
4860 \begin_layout Itemize
4861 classnum (number): Number of the controller within its class (1-based)
4864 \begin_layout Itemize
4865 lcid (number): Logical controller number of the controller.
4868 \begin_layout Itemize
4869 button_count (number): Number of buttons on controller
4872 \begin_layout Itemize
4873 buttons (array): Array of following info about each button:
4877 \begin_layout Itemize
4878 type (string): Type of button.
4880 \begin_inset Quotes eld
4884 \begin_inset Quotes erd
4888 \begin_inset Quotes eld
4892 \begin_inset Quotes erd
4896 \begin_inset Quotes eld
4900 \begin_inset Quotes erd
4904 \begin_inset Quotes eld
4908 \begin_inset Quotes erd
4914 \begin_layout Itemize
4915 name (string): Name of button.
4918 \begin_layout Itemize
4919 symbol (string): Symbol of button.
4920 Only present for type
4921 \begin_inset Quotes eld
4925 \begin_inset Quotes erd
4931 \begin_layout Itemize
4932 hidden (boolean): True if hidden button.
4937 \begin_layout Subsection
4938 input.veto_button: Veto a button press
4941 \begin_layout Itemize
4942 Syntax: none input.veto_button()
4945 \begin_layout Standard
4946 Signals that the button event should be vetoed.
4947 Only valid in on_button callback.
4950 \begin_layout Subsection
4951 input.geta: Get all buttons for controller (deprecated)
4954 \begin_layout Itemize
4955 Syntax: (number, number...) input.geta(number controller)
4958 \begin_layout Standard
4959 Get input state for entiere controller.
4960 Returns n return values.
4963 \begin_layout Itemize
4964 1st return value: Bitmask: bit i is set if i:th index is nonzero
4967 \begin_layout Itemize
4968 2nd- return value: value of i:th index.
4971 \begin_layout Subsection
4972 input.seta: Set all buttons for controller (deprecated)
4975 \begin_layout Itemize
4976 Syntax: none input.seta(number controller, number bitmask, number args...)
4979 \begin_layout Standard
4980 Set state for entiere controller.
4981 args is up to N values for indices (overriding values in bitmask if specified).
4984 \begin_layout Subsection
4985 input.controllertype: Get controller type (deprecated)
4988 \begin_layout Itemize
4989 syntax: string input.controllertype(number controller)
4992 \begin_layout Standard
4993 Get the type of controller as string.
4996 \begin_layout Subsection
4997 input.reset: Execute (delayed) reset
5000 \begin_layout Itemize
5001 Syntax: none input.reset([number cycles])
5004 \begin_layout Standard
5006 If <cycles> is greater than zero, do delayed reset.
5007 0 (or no value) causes immediate reset.
5010 \begin_layout Itemize
5011 Note: Only available with subframe flag false.
5014 \begin_layout Subsection
5015 input.raw: Return raw input data
5018 \begin_layout Itemize
5019 Syntax: table input.raw()
5022 \begin_layout Standard
5023 Returns table of tables of all available keys and axes.
5024 The first table is indexed by key name (platform-dependent!), and the inner
5025 table has the following fields:
5028 \begin_layout Itemize
5029 value: Last reported value for control
5033 \begin_layout Itemize
5034 For keys: 1 for pressed, 0 for released.
5037 \begin_layout Itemize
5038 For axes: -32767...32767.
5041 \begin_layout Itemize
5042 For presure-sensitive buttons: 0...32767.
5045 \begin_layout Itemize
5046 For hats: Bitmask: 1=>Up, 2=>Right, 4=>Down, 8=>Left.
5049 \begin_layout Itemize
5050 For mouse: Coordinates relative to game area.
5054 \begin_layout Itemize
5055 ktype: Type of key (disabled, key, mouse, axis, hat, pressure).
5058 \begin_layout Subsection
5059 input.keyhook: Hook a key
5062 \begin_layout Itemize
5063 Syntax: none input.keyhook(string key, boolean state)
5066 \begin_layout Standard
5067 Requests that keyhook events to be sent for key <key> (<state>=true) or
5068 not sent (<state>=false).
5071 \begin_layout Subsection
5072 input.joyget: Get controls for controller
5075 \begin_layout Itemize
5076 Syntax: table input.joyget(number logical)
5079 \begin_layout Standard
5080 Returns table for current controls for specified logical controller <logical>.
5081 The names of fields vary by controller type.
5084 \begin_layout Itemize
5085 The buttons have the same name as those are referred to in other contexts
5089 \begin_layout Itemize
5090 The analog axes are usually
5091 \begin_inset Quotes eld
5095 \begin_inset Quotes erd
5099 \begin_inset Quotes eld
5103 \begin_inset Quotes erd
5109 \begin_layout Itemize
5110 Each field is numeric or boolean depending on axis/button.
5113 \begin_layout Subsection
5114 input.joyset: Set controls for controller
5117 \begin_layout Itemize
5118 Syntax: none input.joyset(number controller, table controls)
5121 \begin_layout Standard
5122 Set the the state of specified controller to values specified in specified
5126 \begin_layout Itemize
5127 Each field can be boolean or number.
5130 \begin_layout Itemize
5131 Also, buttons allow strings, which cause value to be inverted.
5134 \begin_layout Subsection
5135 input.lcid_to_pcid: Look up logical controller (deprecated)
5138 \begin_layout Itemize
5139 Syntax: (number, number, number) input.lcid_to_pcid(number lcid)
5142 \begin_layout Standard
5143 Returns the legacy pcid for controller (or false if there isn't one), followed
5145 Returns nothing if controller does not exist.
5148 \begin_layout Standard
5149 \begin_inset Newpage pagebreak
5155 \begin_layout Section
5159 \begin_layout Standard
5160 Various keybinding-related functions
5163 \begin_layout Subsection
5164 keyboard.bind: Bind a key
5167 \begin_layout Itemize
5168 Syntax: none keyboard.bind(string mod, string mask, string key, string cmd)
5171 \begin_layout Standard
5172 Bind specified key with specified modifers to specified command.
5175 \begin_layout Subsection
5176 keyboard.unbind: Unbind a key
5179 \begin_layout Itemize
5180 Syntax: none keyboard.unbind(string mod, string mask, string key)
5183 \begin_layout Standard
5184 Unbind specified key with specified modifers.
5187 \begin_layout Subsection
5188 keyboard.alias: Set alias expansion
5191 \begin_layout Itemize
5192 Syntax: none keyboard.alias(string alias, string expansion)
5195 \begin_layout Standard
5196 Set expansion of given command.
5199 \begin_layout Standard
5200 \begin_inset Newpage pagebreak
5206 \begin_layout Section
5210 \begin_layout Standard
5214 \begin_layout Subsection
5215 subtitle.byindex: Look up start and length of subtitle by index
5218 \begin_layout Itemize
5219 Syntax: (number, number) subtitle.byindex(number i)
5222 \begin_layout Standard
5223 Read the frame and length of ith subtitle.
5224 Returns nothing if not present.
5227 \begin_layout Subsection
5228 subtitle.set: Write a subtitle
5231 \begin_layout Itemize
5232 Syntax: none subtitle.set(number f, number l, string txt)
5235 \begin_layout Standard
5236 Set the text of subtitle.
5239 \begin_layout Subsection
5240 subtitle.get: Read a subtitle
5243 \begin_layout Itemize
5244 Syntax: string subtitle.get(number f, number l)
5247 \begin_layout Standard
5248 Get the text of subtitle.
5251 \begin_layout Subsection
5252 subtitle.delete: Delete a subtitle
5255 \begin_layout Itemize
5256 Syntax: none subtitle.delete(number f, number l)
5259 \begin_layout Standard
5260 Delete specified subtitle.
5263 \begin_layout Standard
5264 \begin_inset Newpage pagebreak
5270 \begin_layout Section
5274 \begin_layout Standard
5275 Host memory handling (extra memory saved to savestates).
5276 Host memory starts empty.
5279 \begin_layout Itemize
5280 Reads out of range return false.
5283 \begin_layout Itemize
5284 Writes out of range extend the memory.
5287 \begin_layout Subsection
5288 hostmemory.read: Read byte from host memory
5291 \begin_layout Itemize
5292 Syntax: number hostmemory.read(number address)
5295 \begin_layout Standard
5296 Reads byte from hostmemory slot address <address>.
5299 \begin_layout Subsection
5300 hostmemory.write: Write byte to host memory
5303 \begin_layout Itemize
5304 Syntax: none hostmemory.write(number address, number value)
5307 \begin_layout Standard
5308 Writes hostmemory slot with value <value> 0-255.
5311 \begin_layout Subsection
5312 hostmemory.read{,s}{byte,{,h,d,q}word}: Read from host memory
5315 \begin_layout Itemize
5316 Syntax: number hostmemory.readbyte(number address)
5319 \begin_layout Itemize
5320 Syntax: number hostmemory.readsbyte(number address)
5323 \begin_layout Itemize
5324 Syntax: number hostmemory.readword(number address)
5327 \begin_layout Itemize
5328 Syntax: number hostmemory.readsword(number address)
5331 \begin_layout Itemize
5332 Syntax: number hostmemory.readhword(number address)
5335 \begin_layout Itemize
5336 Syntax: number hostmemory.readshword(number address)
5339 \begin_layout Itemize
5340 Syntax: number hostmemory.readdword(number address)
5343 \begin_layout Itemize
5344 Syntax: number hostmemory.readsdword(number address)
5347 \begin_layout Itemize
5348 Syntax: number hostmemory.readqword(number address)
5351 \begin_layout Itemize
5352 Syntax: number hostmemory.readsqword(number address)
5355 \begin_layout Standard
5356 Read elements (big-endian) from given address <address>.
5359 \begin_layout Itemize
5363 \begin_layout Itemize
5367 \begin_layout Itemize
5371 \begin_layout Itemize
5375 \begin_layout Itemize
5376 qword is 8 elements.
5379 \begin_layout Itemize
5380 The 's' variants do signed read.
5383 \begin_layout Subsection
5384 hostmemory.read{float,double}: Read from host memory
5387 \begin_layout Itemize
5388 syntax: number hostmemory.readfloat(number address)
5391 \begin_layout Itemize
5392 Syntax: number hostmemory.readdouble(number address)
5395 \begin_layout Standard
5396 Read elements (big-endian) floating-pont from given address <address>.
5399 \begin_layout Subsection
5400 hostmemory.write{,s}{byte,{,h,d,q}word}: Write to host memory
5403 \begin_layout Itemize
5404 Syntax: number hostmemory.writebyte(number address, number value)
5407 \begin_layout Itemize
5408 Syntax: number hostmemory.writesbyte(number address, number value)
5411 \begin_layout Itemize
5412 Syntax: number hostmemory.writeword(number address, number value)
5415 \begin_layout Itemize
5416 Syntax: number hostmemory.writesword(number address, number value)
5419 \begin_layout Itemize
5420 Syntax: number hostmemory.writehword(number address, number value)
5423 \begin_layout Itemize
5424 Syntax: number hostmemory.writeshword(number address, number value)
5427 \begin_layout Itemize
5428 Syntax: number hostmemory.writedword(number address, number value)
5431 \begin_layout Itemize
5432 Syntax: number hostmemory.writesdword(number address, number value)
5435 \begin_layout Itemize
5436 Syntax: number hostmemory.writeqword(number address, number value)
5439 \begin_layout Itemize
5440 Syntax: number hostmemory.writesqword(number address, number value)
5443 \begin_layout Standard
5444 Write value <value> to elements (little-endian) starting from given address
5448 \begin_layout Itemize
5452 \begin_layout Itemize
5456 \begin_layout Itemize
5460 \begin_layout Itemize
5464 \begin_layout Itemize
5465 qword is 8 elements.
5468 \begin_layout Itemize
5469 The 's' variants do signed write.
5472 \begin_layout Subsection
5473 hostmemory.write{float,double}: Write to host memory
5476 \begin_layout Itemize
5477 syntax: none hostmemory.readfloat(number address, number value)
5480 \begin_layout Itemize
5481 Syntax: none hostmemory.readdouble(number address, number value)
5484 \begin_layout Standard
5485 Write elements (big-endian) floating-pont to given address <address>, storing
5489 \begin_layout Standard
5490 \begin_inset Newpage pagebreak
5496 \begin_layout Section
5500 \begin_layout Standard
5504 \begin_layout Subsection
5505 movie.currentframe: Get current frame number
5508 \begin_layout Itemize
5509 Syntax: number movie.currentframe()
5512 \begin_layout Standard
5513 Return number of current frame.
5516 \begin_layout Subsection
5517 movie.framecount: Get move frame count
5520 \begin_layout Itemize
5521 Syntax: number movie.framecount()
5524 \begin_layout Standard
5525 Return number of frames in movie.
5528 \begin_layout Subsection
5529 movie.readonly: Is in readonly mode?
5532 \begin_layout Itemize
5533 Syntax: boolean movie.readonly()
5536 \begin_layout Standard
5537 Return true if in readonly mode, false if in readwrite.
5540 \begin_layout Subsection
5541 movie.rerecords: Movie rerecord count
5544 \begin_layout Itemize
5545 Syntax: number movie.rerecords()
5548 \begin_layout Standard
5549 Returns the current value of rerecord count.
5552 \begin_layout Subsection
5553 movie.set_readwrite: Set read-write mode.
5556 \begin_layout Itemize
5557 Syntax: none movie.set_readwrite()
5560 \begin_layout Standard
5561 Set readwrite mode (does not cause on_readwrite callback).
5564 \begin_layout Subsection
5565 movie.frame_subframes: Count subframes in frame
5568 \begin_layout Itemize
5569 Syntax: number movie.frame_subframes(number frame)
5572 \begin_layout Standard
5573 Count number of subframes in specified frame <frame> (frame numbers are
5574 1-based) and return that.
5577 \begin_layout Subsection
5578 movie.read_subframes: Read subframe data (deprecated)
5581 \begin_layout Itemize
5582 Syntax: table movie.read_subframes(number frame, number subframe)
5585 \begin_layout Standard
5586 Read specifed subframe in specified frame and return data as array.
5589 \begin_layout Subsection
5590 movie.read_rtc: Read current RTC time
5593 \begin_layout Itemize
5594 Syntax: (number, number) movie.read_rtc()
5597 \begin_layout Standard
5598 Returns the current value of the RTC as a pair (second, subsecond).
5601 \begin_layout Subsection
5602 movie.unsafe_rewind: Fast movie rewind to saved state
5605 \begin_layout Itemize
5606 Syntax: none movie.unsafe_rewind([UNSAFEREWIND state])
5609 \begin_layout Standard
5610 Start setting point for unsafe rewind or jump to point of unsafe rewind.
5613 \begin_layout Itemize
5614 If called without argument, causes emulator to start process of setting
5615 unsafe rewind point.
5616 When this has finished, callback on_set_rewind occurs, passing the rewind
5617 state to lua script.
5620 \begin_layout Itemize
5621 If called with argument, causes emulator rewind to passed rewind point as
5623 Readwrite mode is implicitly activated.
5626 \begin_layout Standard
5627 The following warnings apply to unsafe rewinding:
5630 \begin_layout Itemize
5631 There are no safety checks against misuse (that's what
5632 \begin_inset Quotes eld
5636 \begin_inset Quotes erd
5642 \begin_layout Itemize
5643 Only call rewind from timeline rewind point was set from.
5646 \begin_layout Itemize
5647 Only call rewind from after the rewind point was set.
5650 \begin_layout Subsection
5651 movie.to_rewind: Load savestate as rewind point
5654 \begin_layout Itemize
5655 Syntax: UNSAFEREWIND movie.to_rewind(string filename)
5658 \begin_layout Standard
5659 Load specified savestate file <filename> as rewind point and return UNSAFEREWIND
5660 corresponding to it.
5663 \begin_layout Itemize
5664 Note: This operation does not take emulated time.
5667 \begin_layout Subsection
5668 movie.copy_movie/INPUTMOVIE::copy_movie: Copy movie to movie object
5671 \begin_layout Itemize
5672 Syntax: INPUTMOVIE movie.copy_movie([INPUTMOVIE movie])
5675 \begin_layout Itemize
5676 Syntax: INPUTMOVIE INPUTMOVIE::copy_movie()
5679 \begin_layout Standard
5680 Copies specified movie <movie>/current object (if none or nil, the active
5681 movie) as new movie object.
5684 \begin_layout Subsection
5685 movie.get_frame/INPUTMOVIE::get_frame: Read specified frame in movie.
5688 \begin_layout Itemize
5689 Syntax: INPUTFRAME movie.get_frame([INPUTMOVIE movie,] number frame)
5692 \begin_layout Itemize
5693 Syntax: INPUTFRAME INPUTMOVIE::get_frame(number frame);
5696 \begin_layout Standard
5697 Get INPUTFRAME object corresponding to specified frame in specified movie.
5700 \begin_layout Subsection
5701 movie.set_frame/INPUTMOVIE::set_frame: Write speicifed frame in movie.
5704 \begin_layout Itemize
5705 Syntax: none movie.set_frame([INPUTMOVIE movie,] number frame, INPUTFRAME
5709 \begin_layout Itemize
5710 Syntax: none INPUTMOVIE::set_frame(number frame, INPUTFRAME data)
5713 \begin_layout Standard
5714 Set data in specified frame.
5717 \begin_layout Itemize
5718 Note: Past can't be edited in active movie.
5721 \begin_layout Subsection
5722 movie.get_size/INPUTMOVIE::get_size: Get size of movie
5725 \begin_layout Itemize
5726 Syntax: integer movie.get_size([INPUTMOVIE movie])
5729 \begin_layout Itemize
5730 Syntax: integer INPUTMOVIE::get_size()
5733 \begin_layout Standard
5734 Return number of subframes in specified movie.
5737 \begin_layout Subsection
5738 movie.count_frames/INPUTMOVIE::count_frames: Count frames in movie
5741 \begin_layout Itemize
5742 Syntax: number movie.count_frames([INPUTMOVIE movie])
5745 \begin_layout Itemize
5746 Syntax: number INPUTMOVIE::count_frames()
5749 \begin_layout Standard
5750 Return number of frames in movie.
5753 \begin_layout Subsection
5754 movie.find_frame/INPUTMOVIE::find_frame: Find subframe corresponding to frame
5757 \begin_layout Itemize
5758 Syntax: number movie.find_frame([INPUTMOVIE movie], number frame)
5761 \begin_layout Itemize
5762 Syntax: number INPUTMOVIE::find_frame(number frame)
5765 \begin_layout Standard
5766 Returns starting subframe of given frame (frame numbers are 1-based).
5767 Returns -1 if frame number is bad.
5770 \begin_layout Subsection
5771 movie.blank_frame/INPUTMOVIE::blank_frame: Return a blank frame
5774 \begin_layout Itemize
5775 Syntax: INPUTFRAME movie.blank_frame([INPUTMOVIE movie])
5778 \begin_layout Itemize
5779 Syntax: INPUTFRAME INPUTMOVIE::blank_frame()
5782 \begin_layout Standard
5783 Return blank INPUTFRAME with frame type from specified movie.
5786 \begin_layout Subsection
5787 movie.append_frames/INPUTMOVIE::append_frames: Append blank frames
5790 \begin_layout Itemize
5791 Syntax: none movie.append_frames([INPUTMOVIE movie,] number frames)
5794 \begin_layout Itemize
5795 Syntax: none INPUTMOVIE::append_frames(number frames)
5798 \begin_layout Standard
5799 Append specified number <frames> of frames.
5802 \begin_layout Subsection
5803 movie.append_frame/INPUTMOVIE::append_frame: Append a frame
5806 \begin_layout Itemize
5807 Syntax: none movie.append_frame([INPUTMOVIE movie,] INPUTFRAME frame)
5810 \begin_layout Itemize
5811 Syntax: none INPUTMOVIE::append_frame(INPUTFRAME frame)
5814 \begin_layout Standard
5815 Append specified frame <frame>.
5816 Past of current movie can't be edited.
5819 \begin_layout Subsection
5820 movie.truncate/INPUTMOVIE::truncate: Truncate a movie.
5823 \begin_layout Itemize
5824 Syntax: none movie.truncate([INPUTMOVIE movie,] number frames)
5827 \begin_layout Itemize
5828 Syntax: none INPUTMOVIE::truncate(number frames)
5831 \begin_layout Standard
5832 Truncate the specified movie to specified number of frames.
5835 \begin_layout Subsection
5836 movie.edit/INPUTMOVIE::edit: Edit a movie
5839 \begin_layout Itemize
5840 Syntax: none movie.edit([INPUTMOVIE movie,] number frame, number port, number
5841 controller, number control, number/bool value)
5844 \begin_layout Itemize
5845 Syntax: none INPUTMOVIE::edit(number frame, number port, number controller,
5846 number control, number/bool value)
5849 \begin_layout Standard
5850 Change specified control in specified frame in specified movie.
5851 Past can't be edited in active movie.
5854 \begin_layout Subsection
5855 movie.copy_frames2: Copy frames between movies
5858 \begin_layout Itemize
5859 Syntax: none movie.copy_frames2([INPUTMOVIE dstmov,] number dst, [INPUTMOVIE
5860 srcmov,] number src, number count)
5863 \begin_layout Standard
5864 Copy specified number of frames between two movies.
5865 The copy proceeeds in forward direction.
5868 \begin_layout Subsection
5869 movie.copy_frames/INPUTMOVIE::copy_frames: Copy frames in movie
5872 \begin_layout Itemize
5873 Syntax: none movie.copy_frames([INPUTMOVIE mov,] number dst, number src,
5874 number count, bool backwards)
5877 \begin_layout Itemize
5878 Syntax: none INPUTMOVIE::copy_frames(number dst, number src, number count,
5882 \begin_layout Standard
5883 Copy specified number of frames from one point in movie to another.
5884 If backwards is true, the copy will be done backwards.
5887 \begin_layout Subsection
5888 movie.serialize/INPUTMOVIE::serialize: Serialize movie
5891 \begin_layout Itemize
5892 Syntax: none movie.serialize([INPUTMOVIE movie,] string filename, bool binary)
5895 \begin_layout Itemize
5896 Syntax: none INPUTMOIVE::serialize(string filename, bool binary)
5899 \begin_layout Standard
5900 Serialize given movie into file.
5901 If binary is true, binary format (more compact and much faster) is used.
5904 \begin_layout Subsection
5905 movie.unserialize: Unserialize movie
5908 \begin_layout Itemize
5909 Syntax: INPUTMOVIE movie.unserialize(INPUTFRAME template, string filename,
5913 \begin_layout Standard
5914 Unserialize movie from file.
5915 The given frame is used as template to decide the frame type.
5916 If binary is true, binary format is decoded (much faster).
5919 \begin_layout Subsection
5920 movie.current_first_subframe: Return first subframe in current frame
5923 \begin_layout Itemize
5924 Syntax: number movie.current_first_subframe()
5927 \begin_layout Standard
5928 Returns first subframe in current frame.
5931 \begin_layout Subsection
5932 movie.pollcounter: Return poll counter for speified control
5935 \begin_layout Itemize
5936 Syntax: number movie.pollcounter(number port, number controller, number control)
5939 \begin_layout Standard
5940 Returns number of times the specified control has been polled this frame.
5943 \begin_layout Subsection
5944 INPUTFRAME::get_button: Get button
5947 \begin_layout Itemize
5948 Syntax: boolean INPUTFRAME::get_button(number port, number controller, number
5952 \begin_layout Standard
5953 Returns state of given button as boolean.
5956 \begin_layout Subsection
5957 INPUTFRAME::get_axis: Get axis
5960 \begin_layout Itemize
5961 Syntax: number INPUTFRAME::get_axis(number port, number controller, number
5965 \begin_layout Standard
5966 Returns state of given axis as number.
5969 \begin_layout Subsection
5970 INPUTFRAME::set_button/INPUTFRAME::set_axis: Set button or axis
5973 \begin_layout Itemize
5974 Syntax: none INPUTFRAME::set_button(number port, number controller, number
5975 control, number/bool value)
5978 \begin_layout Itemize
5979 Syntax: none INPUTFRAME::set_axis(number port, number controller, number
5983 \begin_layout Standard
5984 Set the given button/axis to given value.
5987 \begin_layout Subsection
5988 INPUTFRAME::serialize: Serialize a frame
5991 \begin_layout Itemize
5992 Syntax: string INPUTFRAME::serialize()
5995 \begin_layout Standard
5996 Return string representation of frame.
5999 \begin_layout Subsection
6000 INPUTFRAME::unserialize: Unserialize a frame
6003 \begin_layout Itemize
6004 Syntax: none INPUTFRAME::unserialize(string data)
6007 \begin_layout Standard
6008 Set current frame from given data.
6011 \begin_layout Subsection
6012 INPUTFRAME::get_stride: Get movie stride
6015 \begin_layout Itemize
6016 Syntax: number INPUTFRAME::get_stride()
6019 \begin_layout Standard
6020 Return number of bytes needed to store the input frame.
6021 Mainly useful for some debugging.
6024 \begin_layout Standard
6025 \begin_inset Newpage pagebreak
6031 \begin_layout Section
6035 \begin_layout Standard
6036 Routines for settings manipulation
6039 \begin_layout Subsection
6040 settings.get: Get value of setting
6043 \begin_layout Itemize
6044 Syntax: string settings.get(string name)
6047 \begin_layout Standard
6048 Get value of setting <name>.
6049 If setting value can't be obtained, returns (nil, error message).
6052 \begin_layout Subsection
6053 settings.set: Set value of setting
6056 \begin_layout Itemize
6057 Syntax: none settings.set(string name, string value)
6060 \begin_layout Standard
6061 Set value <value> of setting <name>.
6062 If setting can't be set, returns (nil, error message).
6065 \begin_layout Standard
6066 \begin_inset Newpage pagebreak
6072 \begin_layout Section
6076 \begin_layout Standard
6077 Contains various functions for managing memory
6080 \begin_layout Subsection
6081 memory.vma_count: Count number of VMAs.
6084 \begin_layout Itemize
6085 Syntax: number memory.vma_count()
6088 \begin_layout Standard
6089 Returns the number of VMAs
6092 \begin_layout Subsection
6093 memory.read_vma: Lookup VMA info by index
6096 \begin_layout Itemize
6097 Syntax: string memory.read_vma(number index)
6100 \begin_layout Standard
6101 Reads the specified VMA (indices start from zero).
6102 Trying to read invalid VMA gives nil.
6103 The read VMA is table with the following fields:
6106 \begin_layout Itemize
6107 region_name (string): The readable name of the VMA
6110 \begin_layout Itemize
6111 baseaddr (number): Base address of the VMA
6114 \begin_layout Itemize
6115 lastaddr (number): Last address in the VMA.
6118 \begin_layout Itemize
6119 size (number): The size of VMA in bytes.
6122 \begin_layout Itemize
6123 readonly (boolean): True of the VMA corresponds to ROM.
6126 \begin_layout Itemize
6127 iospace (boolean): True if the VMA is I/O space.
6130 \begin_layout Itemize
6131 native_endian (boolean): True if the VMA has native endian as opposed to
6135 \begin_layout Subsection
6136 memory.find_vma: Find VMA info by address
6139 \begin_layout Itemize
6140 Syntax: table memory.find_vma(number address)
6143 \begin_layout Standard
6144 Finds the VMA containing specified address.
6145 Returns table in the same format as read_vma or nil if not found.
6148 \begin_layout Subsection
6149 memory.read{,s}{byte,{,h,d,q}word}: Read memory
6152 \begin_layout Itemize
6153 Syntax: none memory.readbyte([string vma, ]number address)
6156 \begin_layout Itemize
6157 Syntax: none memory.readword([string vma, ]number address)
6160 \begin_layout Itemize
6161 Syntax: none memory.readhword([string vma, ]number address)
6164 \begin_layout Itemize
6165 Syntax: none memory.readdword([string vma, ]number address)
6168 \begin_layout Itemize
6169 Syntax: none memory.readqword([string vma, ]number address)
6172 \begin_layout Itemize
6173 Syntax: none memory.readsbyte([string vma, ]number address)
6176 \begin_layout Itemize
6177 Syntax: none memory.readsword([string vma, ]number address)
6180 \begin_layout Itemize
6181 Syntax: none memory.readshword([string vma, ]number address)
6184 \begin_layout Itemize
6185 Syntax: none memory.readsdword([string vma, ]number address)
6188 \begin_layout Itemize
6189 Syntax: none memory.readsqword([string vma, ]number address)
6192 \begin_layout Standard
6193 Reads the specified address <address> (if 's' variant is used, do undergo
6197 \begin_layout Subsection
6198 memory.{,s}read_sg: Scatter/Gather read memory
6201 \begin_layout Itemize
6202 Syntax: none memory.read_sg(string/boolean/number...)
6205 \begin_layout Itemize
6206 Syntax: none memory.sread_sg(string/boolean/number...)
6209 \begin_layout Standard
6210 Perform (2s complement signed if using memory.sread_sg) scatter/gather read
6212 Each argument can be string, boolean or number:
6215 \begin_layout Itemize
6216 String: Set VMA addresses are relative to (e.g.
6220 \begin_layout Itemize
6221 boolean: If true, increment relative address by 1, if false, decrement by
6223 The new address is read as next higher byte.
6226 \begin_layout Itemize
6227 integer: Set the relative address to specified value and read the address
6228 as next higher byte.
6231 \begin_layout Subsection
6232 memory.write_sg: Scatter/Gather write memory
6235 \begin_layout Itemize
6236 Syntax: none memory.write_sg(number value, string/boolean/number...)
6239 \begin_layout Standard
6240 Perform scatter/gather write of value <value> on memory.
6241 Each argument can be string, boolean or number:
6244 \begin_layout Itemize
6245 String: Set VMA addresses are relative to (e.g.
6249 \begin_layout Itemize
6250 boolean: If true, increment relative address by 1, if false, decrement by
6252 The new address is read as next higher byte.
6255 \begin_layout Itemize
6256 integer: Set the relative address to specified value and read the address
6257 as next higher byte.
6260 \begin_layout Subsection
6261 memory.read{float,double}: Read memory
6264 \begin_layout Itemize
6265 Syntax: none memory.readfloat([string vma, ]number address)
6268 \begin_layout Itemize
6269 Syntax: none memory.readdouble([string vma, ]number address)
6272 \begin_layout Standard
6273 Reads the specified address <address>
6276 \begin_layout Subsection
6277 memory.write{byte,{,h,d,q}word,float,double}: Write memory
6280 \begin_layout Itemize
6281 Syntax: none memory.writebyte([string vma, ]number address, number value)
6284 \begin_layout Itemize
6285 Syntax: none memory.writeword([string vma, ]number address, number value)
6288 \begin_layout Itemize
6289 Syntax: none memory.writehword([string vma, ]number address, number value)
6292 \begin_layout Itemize
6293 Syntax: none memory.writedword([string vma, ]number address, number value)
6296 \begin_layout Itemize
6297 Syntax: none memory.writeqword([string vma, ]number address, number value)
6300 \begin_layout Itemize
6301 Syntax: none memory.writefloat([string vma, ]number address, number value)
6304 \begin_layout Itemize
6305 Syntax: none memory.writedouble([string vma, ]number address, number value)
6308 \begin_layout Standard
6309 Writes the specified value <value> (negative integer values undergo 2's
6310 complement) to specified address <address>.
6313 \begin_layout Subsection
6314 memory.map{{,s}{byte,{,h,d,q}word},float,double}: Map an array
6317 \begin_layout Itemize
6318 Syntax: userdata memory.map<type>([[string vma, ]number base, number size])
6321 \begin_layout Standard
6322 Returns a table mapping specified memory aperture for read/write.
6323 If parameters are omitted, entiere map space is the aperture.
6326 \begin_layout Itemize
6327 Type may be one of: byte, sbyte, word, sword, hword, shword, dword, sdword,
6328 qword, sqword, float or double.
6331 \begin_layout Subsection
6332 memory.hash_region: Hash region of memory
6335 \begin_layout Itemize
6336 Syntax: string memory.hash_region([string vma, ]number base, number size)
6339 \begin_layout Standard
6340 Hash specified number of bytes starting from specified address and return
6344 \begin_layout Subsection
6345 memory.hash_state: Hash system state
6348 \begin_layout Itemize
6349 Syntax: string memory.hash_state()
6352 \begin_layout Standard
6353 Hash the current system state.
6354 Mainly useful for debugging savestates.
6357 \begin_layout Subsection
6358 memory.readregion: Read region of memory
6361 \begin_layout Itemize
6362 Syntax: table memory.readregion([string vma, ]number base, number size)
6365 \begin_layout Standard
6366 Read a region of memory.
6369 \begin_layout Itemize
6370 Warning: If the region crosses VMA boundary, the results are undefined.
6373 \begin_layout Subsection
6374 memory.writeregion: Write region of memory
6377 \begin_layout Itemize
6378 Syntax: none memory.writeregion([string vma, ]number base, number size, table
6382 \begin_layout Standard
6383 Write a region of memory.
6386 \begin_layout Itemize
6387 Warning: If the region crosses VMA boundary, the results are undefined.
6390 \begin_layout Subsection
6391 memory.read_expr: Evaluate memory watch expression
6394 \begin_layout Itemize
6395 Syntax: string memory.read_expr(string expr)
6398 \begin_layout Standard
6399 Evaluate specified watch expression and return result
6402 \begin_layout Subsection
6403 memory.action: Run core action
6406 \begin_layout Itemize
6407 memory.action(string action, [<params>])
6410 \begin_layout Standard
6412 The different models expect parameters as:
6415 \begin_layout Itemize
6419 \begin_layout Itemize
6423 \begin_layout Itemize
6427 \begin_layout Itemize
6431 \begin_layout Itemize
6435 \begin_layout Subsection
6436 memory.get_lag_flag: Get lag flag
6439 \begin_layout Itemize
6440 Syntax: boolean memory.get_lag_flag()
6443 \begin_layout Standard
6444 Get the value of core lag flag.
6445 True if this frame has been lag so far, false if poll has been detected.
6448 \begin_layout Subsection
6449 memory.set_lag_flag: Set lag flag
6452 \begin_layout Itemize
6453 Syntax: none memory.set_lag_flag(boolean flag)
6456 \begin_layout Standard
6457 Set the value of core lag flag.
6458 This flag automatically gets cleared if poll is detected, but can be forcibly
6459 set or cleared if game so requires.
6462 \begin_layout Itemize
6463 Should only be used in on_frame_emulated callback.
6466 \begin_layout Itemize
6467 Setting or clearing this affects the emulator lag counter.
6470 \begin_layout Subsection
6471 memory.{,un}register{read,write,exec}: (Un)Register read / write / execute
6475 \begin_layout Itemize
6476 Syntax: function memory.registerread([string vma, ] number addr, function
6480 \begin_layout Itemize
6481 Syntax: function memory.registerwrite([string vma, ] number addr, function
6485 \begin_layout Itemize
6486 Syntax: function memory.registerexec([string vma, ] number addr, function
6490 \begin_layout Itemize
6491 Syntax: none memory.unregisterread([string vma, ] number addr, function fn);
6494 \begin_layout Itemize
6495 Syntax: none memory.unregisterwrite([string vma, ] number addr, function
6499 \begin_layout Itemize
6500 Syntax: none memory.unregisterexec([string vma, ] number addr, function fn);
6503 \begin_layout Standard
6504 Add or remove callback on memory read, write or execute (depending on the
6506 If <vma> is specified, <addr> is relative to it, otherwise <addr> is global.
6507 <fn> is the callback.
6508 The register* functions return <fn> (which can then be passed to unregister*
6512 \begin_layout Itemize
6513 Not all cores support this, and it may be unsupported for some VMAs.
6516 \begin_layout Itemize
6517 The functions are passed two parameters: Address and value.
6520 \begin_layout Subsection
6521 memory.{,un}registertrace: Set/Clear trace hook
6524 \begin_layout Itemize
6525 Syntax: function memory.registertrace(number processor, function fn);
6528 \begin_layout Itemize
6529 Syntax: none memory.unregistertrace(number processor, function fn);
6532 \begin_layout Standard
6533 Add or remove trace callback.
6534 <processor> is system-dependent processor number (0 is usually main CPU).
6535 The function arguments work like in other (un)register* functions.
6538 \begin_layout Itemize
6539 The functions are passed two parameters: Trace CPU and Trace event string.
6542 \begin_layout Subsection
6543 memory.cheat: Set cheat
6546 \begin_layout Itemize
6547 Syntax: none memory.cheat([string vma, ] number addr, number value);
6550 \begin_layout Itemize
6551 Syntax: none memory.cheat([string vma, ] number addr);
6554 \begin_layout Standard
6555 Set or clear cheat (value <value>) on address <addr>.
6556 If <vma> is specified, <addr> is relative to that.
6557 If <value> is not speicified, clear a cheat.
6560 \begin_layout Itemize
6561 Not all cores support this, and it may be unsupported for some VMAs.
6564 \begin_layout Subsection
6565 memory.setxmask: Set global execute hook mask
6568 \begin_layout Itemize
6569 Syntax: none memory.setxmask(number mask)
6572 \begin_layout Standard
6573 Set the global execute hook mask to <mask>.
6574 The meaning of each bit is system-dependent, but bit 0 should be the main
6578 \begin_layout Subsection
6579 memory.mmap: Class MMAP_STRUCT
6582 \begin_layout Standard
6583 See class MMAP_STRUCT
6586 \begin_layout Standard
6587 \begin_inset Newpage pagebreak
6593 \begin_layout Section
6597 \begin_layout Standard
6598 Contains newer memory functions.
6601 \begin_layout Subsection
6602 memory2(): Get all VMA names.
6605 \begin_layout Itemize
6606 Syntax: table memory2()
6609 \begin_layout Standard
6610 Returns array of all valid VMA names.
6613 \begin_layout Subsection
6614 memory2.<vma>:info: Get VMA info
6617 \begin_layout Itemize
6618 Syntax: table memory2.<vma>:info()
6621 \begin_layout Standard
6622 Return table describing given VMA.
6623 Includes fields address, size, last, readonly, special and endian.
6626 \begin_layout Subsection
6627 memory2.<vma>:<op>: Read/Write memory
6630 \begin_layout Itemize
6631 Syntax: none memory2.<vma>:<op>(number offset, number value)
6634 \begin_layout Itemize
6635 Syntax: number memory2.<vma>:<op>(number offset)
6638 \begin_layout Standard
6639 Read/Write value from/to given VMA <vma> at given offset <offset> (must
6641 The value written is <value>.
6642 <Op> is of form: [i][s]<type>, where:
6645 \begin_layout Itemize
6646 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
6649 \begin_layout Itemize
6650 'i' signifies that the value is treated as opposite-to-normal endianess,
6653 \begin_layout Itemize
6654 's' signifies that value is treated as signed (not available for floating-point).
6657 \begin_layout Subsection
6658 memory2.<vma>:read: Scatter-gather value read
6661 \begin_layout Itemize
6662 Syntax: number memory2.<vma>:read(number addr...)
6665 \begin_layout Standard
6666 Read value from given VMA <vma> at byte offsets <addr>..., given in order of
6667 increasing significance.
6668 Value of true and false are special.
6669 True increments address by 1, and false decrements address by 1.
6672 \begin_layout Subsection
6673 memory2.<vma>:sread: Signed scatter-gather value read
6676 \begin_layout Itemize
6677 Syntax: number memory2.<vma>:sread(number addr...)
6680 \begin_layout Standard
6681 Like memory2.<vma>:read, but reads signed values.
6684 \begin_layout Subsection
6685 memory2.<vma>:write: Scatter-gather value write
6688 \begin_layout Itemize
6689 Syntax: number memory2.<vma>:write(number val, number addr...)
6692 \begin_layout Standard
6693 Write value <val> to given VMA <vma> at byte offsets <addr>..., given in order
6694 of increasing significance.
6695 Value of true and false are special.
6696 True increments address by 1, and false decrements address by 1.
6699 \begin_layout Standard
6700 \begin_inset Newpage pagebreak
6706 \begin_layout Section
6710 \begin_layout Standard
6711 Contains random number generation methods.
6712 These functions do not return reproducable results.
6715 \begin_layout Subsection
6716 random.boolean: Random boolean
6719 \begin_layout Itemize
6720 Syntax: boolean random.boolean()
6723 \begin_layout Standard
6724 Returns true or false at random (50-50 chance).
6727 \begin_layout Subsection
6728 random.integer: Random integer
6731 \begin_layout Itemize
6732 Syntax: number random.integer(number highplusone)
6735 \begin_layout Itemize
6736 Syntax: number random.integer(number low, number high)
6739 \begin_layout Standard
6740 With one argument, return random integer [0,<highplusone>) (upper end exclusive).
6741 With two arguments, return random integer [<low>,<high>] (both ends inclusive).
6744 \begin_layout Standard
6745 The returned numbers are from uniform distribution.
6748 \begin_layout Subsection
6749 random.float: Random float
6752 \begin_layout Itemize
6753 Syntax: number random.float()
6756 \begin_layout Standard
6757 Returns random decimal number [0,1).
6760 \begin_layout Subsection
6761 random.among: Random parameter
6764 \begin_layout Itemize
6765 Syntax: value random.among(value values...)
6768 \begin_layout Standard
6769 Returns random parameter value, picked at uniform.
6770 Multiple equivalent values are returned with higher chance.
6773 \begin_layout Subsection
6774 random.amongtable: Random from table
6777 \begin_layout Itemize
6778 Syntax: value random.amongtable(table tab)
6781 \begin_layout Standard
6782 Returns random value from table <tab>.
6783 As in random.among, no equality testing is done.
6786 \begin_layout Standard
6787 \begin_inset Newpage pagebreak
6793 \begin_layout Section
6797 \begin_layout Subsection
6798 zip.enumerate: Enumerate members in zipfile
6801 \begin_layout Itemize
6802 Syntax: Table zip.enumerate(string filename[, boolean invert])
6805 \begin_layout Standard
6806 Returns table of files in zip archive <filename>.
6807 If <invert> is true, instead of returning array of names, returns table
6808 with keys being member names and values being true.
6811 \begin_layout Subsection
6812 zip.writer: Class ZIPWRITER
6815 \begin_layout Standard
6816 See class ZIPWRITER.
6819 \begin_layout Standard
6820 \begin_inset Newpage pagebreak
6826 \begin_layout Section
6830 \begin_layout Standard
6831 Various callback-related functions.
6834 \begin_layout Subsection
6835 \begin_inset CommandInset label
6837 name "sub:callback.register:-Register-a"
6841 callback.register: Register a callback
6844 \begin_layout Itemize
6845 Syntax: function callback.register(string cbname, function cbfun);
6848 \begin_layout Standard
6849 Instruct function <cbfun> to be added to list of callbacks to call on event
6850 <cbname> (See section
6851 \begin_inset CommandInset ref
6853 reference "sec:Callbacks"
6858 The callback name does not have the 'on_' prefix (e.g.
6860 \begin_inset Quotes eld
6864 \begin_inset Quotes erd
6871 \begin_layout Subsection
6872 \begin_inset CommandInset label
6874 name "sub:callback.unregister:-Unregister-"
6878 callback.unregister: Unregister a callback
6881 \begin_layout Itemize
6882 Syntax: function callback.unregister(string cbname, function cbfun);
6885 \begin_layout Standard
6886 Instruct function <cbfun> to be removed from list of callbacks to call on
6890 \begin_layout Subsection
6891 callback.<cbname>:register: Register callback
6894 \begin_layout Itemize
6895 Syntax: function callback.<cbname>:register(function cbfun)
6898 \begin_layout Standard
6899 Synonym for callback.register (section
6900 \begin_inset CommandInset ref
6902 reference "sub:callback.register:-Register-a"
6906 ), albeit with callback name specified differently.
6909 \begin_layout Subsection
6910 callback.<cbname>:unregister: Register callback
6913 \begin_layout Itemize
6914 Syntax: function callback.<cbname>:unregister(function cbfun)
6917 \begin_layout Standard
6918 Synonym for callback.unregister (section
6919 \begin_inset CommandInset ref
6921 reference "sub:callback.unregister:-Unregister-"
6925 ), albeit with callback name specified differently.
6928 \begin_layout Section
6932 \begin_layout Standard
6933 Various bsnes-specific functions.
6936 \begin_layout Subsection
6937 bsnes.dump_sprite: Dump a sprite
6940 \begin_layout Itemize
6941 Syntax: BITMAP bsnes.dump_sprite([string vma, ] number addr, number width,
6942 number height[, number stride])
6945 \begin_layout Standard
6946 Dumps given sprite (in native format) from memory.
6948 \begin_inset Quotes eld
6952 \begin_inset Quotes erd
6956 <Width> and <height> are given in 8x8 blocks.
6957 <Stride> overrides row stride (default 512).
6960 \begin_layout Subsection
6961 bsnes.dump_palette: Dump a palette
6964 \begin_layout Itemize
6965 Syntax: PALETTE bsnes.dump_palette([string vma, ] number addr, bool full256,
6969 \begin_layout Standard
6970 Dumps a palette from memory.
6972 \begin_inset Quotes eld
6976 \begin_inset Quotes erd
6980 If <full256> is true, 256 colors are dumped (otherwise 16).
6981 If <first_trans> is true, first color is forced transparent.
6984 \begin_layout Section
6985 extensions to table string
6988 \begin_layout Subsection
6989 string.charU: string.char, UTF-8 version.
6992 \begin_layout Itemize
6993 Syntax: string string.charU(number n...)
6996 \begin_layout Standard
6997 Like Lua string.char(), but works in terms of Unicode codepoints.
6998 The returned string is UTF-8.
7001 \begin_layout Subsection
7002 string.byteU: string.byte, UTF-8 version.
7005 \begin_layout Itemize
7007 string.byteU(string str[, number i[, number j]])
7010 \begin_layout Standard
7011 Like string.byte(), but works in terms of Unicode codepoints.
7012 The input string <str> is assumed UTF-8.
7015 \begin_layout Section
7019 \begin_layout Standard
7020 Contains copy of global variables from time of Lua initialization.
7024 \begin_layout Standard
7025 \begin_inset Newpage pagebreak
7031 \begin_layout Section
7032 \begin_inset CommandInset label
7034 name "sec:Callbacks"
7041 \begin_layout Standard
7042 Various callbacks to Lua that can occur.
7045 \begin_layout Subsection
7046 on_paint: Screen is being painted
7049 \begin_layout Itemize
7050 Callback: on_paint(bool not_synth)
7053 \begin_layout Standard
7054 Called when screen is being painted.
7055 Any gui.* calls requiring graphic context draw on the screen.
7058 \begin_layout Itemize
7059 not_synth is true if this hook is being called in response to received frame,
7063 \begin_layout Subsection
7064 on_video: Dumped video frame is being painted
7067 \begin_layout Itemize
7068 Callback: on_video()
7071 \begin_layout Standard
7072 Called when video dump frame is being painted.
7073 Any gui.* calls requiring graphic context draw on the video.
7076 \begin_layout Subsection
7077 on_frame_emulated: Frame emulation complete
7080 \begin_layout Itemize
7081 Callback: on_frame_emulated()
7084 \begin_layout Standard
7085 Called when emulating frame has completed and on_paint()/on_video() calls
7086 are about to be issued.
7089 \begin_layout Subsection
7090 on_frame: Frame emulation starting.
7093 \begin_layout Itemize
7094 Callback: on_frame()
7097 \begin_layout Standard
7098 Called on each starting whole frame.
7101 \begin_layout Subsection
7102 on_startup: Emulator startup complete
7105 \begin_layout Itemize
7106 Callback: on_startup()
7109 \begin_layout Standard
7110 Called when the emulator is starting (lsnes.rc and --run files has been run).
7113 \begin_layout Subsection
7114 on_rewind: Movie rewound to beginning
7117 \begin_layout Itemize
7118 Callback: on_rewind()
7121 \begin_layout Standard
7122 Called when rewind movie to beginning has completed.
7125 \begin_layout Subsection
7126 on_pre_load: Load operation is about to start
7129 \begin_layout Itemize
7130 Callback: on_pre_load(string name)
7133 \begin_layout Standard
7134 Called just before savestate/movie load occurs (note: loads are always delayed,
7135 so this occurs even when load was initiated by lua).
7138 \begin_layout Subsection
7139 on_err_Load: Load failed
7142 \begin_layout Itemize
7143 Callback: on_err_load(string name)
7146 \begin_layout Standard
7147 Called if loadstate goes wrong.
7150 \begin_layout Subsection
7151 on_post_load: Load completed
7154 \begin_layout Itemize
7155 Callback: on_post_load(string name, boolean was_savestate)
7158 \begin_layout Standard
7159 Called on successful loadstate.
7160 was_savestate gives if this was a savestate or a movie.
7163 \begin_layout Subsection
7164 on_pre_save: Save operation is about to start
7167 \begin_layout Itemize
7168 Callback: on_pre_save(string name, boolean is_savestate)
7171 \begin_layout Standard
7172 Called just before savestate save occurs (note: movie saves are synchronous
7173 and won't trigger these callbacks if called from Lua).
7176 \begin_layout Subsection
7177 on_err_save: Save failed
7180 \begin_layout Itemize
7181 Callback: on_err_save(string name)
7184 \begin_layout Standard
7185 Called if savestate goes wrong.
7188 \begin_layout Subsection
7189 on_post_save: Save completed
7192 \begin_layout Itemize
7193 Callback: on_post_save(string name, boolean is_savestate)
7196 \begin_layout Standard
7197 Called on successful savaestate.
7198 is_savestate gives if this was a savestate or a movie.
7201 \begin_layout Subsection
7202 on_quit: Emulator is shutting down
7205 \begin_layout Itemize
7209 \begin_layout Standard
7210 Called when emulator is shutting down.
7213 \begin_layout Subsection
7214 on_input: Polling for input
7217 \begin_layout Standard
7218 Called when emulator is just sending input to bsnes core.
7219 Warning: This is called even in readonly mode, but the results are ignored.
7222 \begin_layout Subsection
7223 on_reset: System has been reset
7226 \begin_layout Itemize
7227 Callback: on_reset()
7230 \begin_layout Standard
7231 Called when system is reset.
7234 \begin_layout Subsection
7235 on_readwrite: Entered readwrite mode
7238 \begin_layout Itemize
7239 Callback: on_readwrite()
7242 \begin_layout Standard
7243 Called when moving into readwrite mode as result of
7244 \begin_inset Quotes eld
7248 \begin_inset Quotes erd
7251 command (note: moving to rwmode by Lua won't trigger this, as per recursive
7255 \begin_layout Subsection
7256 on_snoop/on_snoop2: Snoop core controller reads
7259 \begin_layout Itemize
7260 Callback: on_snoop(number port, number controller, number index, number
7264 \begin_layout Itemize
7265 Callback: on_snoop2(number port, number controller, number index, number
7269 \begin_layout Standard
7270 Called each time bsnes asks for input.
7271 The value is the final value to be sent to bsnes core (readonly mode, autohold
7272 and autofire have been taken into account).
7273 Might be useful when translating movies to format suitable for console
7275 Note: There is no way to modify the value to be sent.
7278 \begin_layout Itemize
7279 On_snoop2 is called instead of on_snoop if defined.
7280 Reserves port 0 for system, having first user port be port 1.
7283 \begin_layout Subsection
7284 on_keyhook: Hooked key/axis has been moved
7287 \begin_layout Itemize
7288 Callback: on_keyhook(string keyname, table state)
7291 \begin_layout Standard
7292 Sent when key that has keyhook events requested changes state.
7293 Keyname is name of the key (group) and state is the state (same kind as
7294 table values in input.raw).
7297 \begin_layout Subsection
7301 \begin_layout Itemize
7305 \begin_layout Standard
7306 Called when requested by set_idle_timeout(), the timeout has expired and
7307 emulator is waiting.
7310 \begin_layout Subsection
7311 on_timer: Timer event
7314 \begin_layout Itemize
7315 Callback: on_timer()
7318 \begin_layout Standard
7319 Called when requested by set_idle_timeout() and the timeout has expired
7320 (regardless if emulator is waiting).
7323 \begin_layout Subsection
7324 on_set_rewind: Rewind point has been set
7327 \begin_layout Itemize
7328 Callback: on_set_rewind(UNSAFEREWIND r)
7331 \begin_layout Standard
7332 Called when unsafe rewind object has been constructed.
7335 \begin_layout Subsection
7336 on_pre_rewind: Rewind is about to occur
7339 \begin_layout Itemize
7340 Callback: on_pre_rewind()
7343 \begin_layout Standard
7344 Called just before unsafe rewind is about to occur.
7347 \begin_layout Subsection
7348 on_post_rewind: Rewind has occured
7351 \begin_layout Itemize
7352 Callback: on_post_rewind()
7355 \begin_layout Standard
7356 Called just after unsafe rewind has occured.
7359 \begin_layout Subsection
7360 on_button: Button has been pressed
7363 \begin_layout Itemize
7364 Callback: on_button(number port, number controller, number index, string
7368 \begin_layout Standard
7369 Called on controller button press, with following parameters:
7372 \begin_layout Itemize
7373 port: Port number (0 is system)
7376 \begin_layout Itemize
7377 controller: Controller within port
7380 \begin_layout Itemize
7381 index: Index of button.
7384 \begin_layout Itemize
7385 type: Type of event, one of:
7389 \begin_layout Itemize
7390 \begin_inset Quotes eld
7394 \begin_inset Quotes erd
7397 : Button was pressed.
7400 \begin_layout Itemize
7401 \begin_inset Quotes eld
7405 \begin_inset Quotes erd
7408 : Button was released.
7411 \begin_layout Itemize
7412 \begin_inset Quotes eld
7416 \begin_inset Quotes erd
7422 \begin_layout Itemize
7423 \begin_inset Quotes eld
7427 \begin_inset Quotes erd
7430 : Released from hold.
7433 \begin_layout Itemize
7434 \begin_inset Quotes eld
7438 \begin_inset Quotes erd
7441 : Typing input on button.
7444 \begin_layout Itemize
7445 \begin_inset Quotes eld
7449 \begin_inset Quotes erd
7452 : Typing input undone.
7455 \begin_layout Itemize
7456 \begin_inset Quotes eld
7459 autofire <duty> <cycle>
7460 \begin_inset Quotes erd
7463 : Autofire with specifie duty and cycle.
7466 \begin_layout Itemize
7467 \begin_inset Quotes eld
7471 \begin_inset Quotes erd
7477 \begin_layout Itemize
7478 \begin_inset Quotes eld
7482 \begin_inset Quotes erd
7485 : Analog action on axis.
7489 \begin_layout Subsection
7490 on_movie_lost: Movie data is about to be lost
7493 \begin_layout Itemize
7494 Callback: on_movie_lost(STRING kind)
7497 \begin_layout Standard
7498 Called just before something would happen that could lose movie data.
7502 \begin_layout Itemize
7503 readwrite: Switching to readwrite mode.
7506 \begin_layout Itemize
7507 reload: ROM is being reloaded in readwrite mode.
7510 \begin_layout Itemize
7511 load: New movie is being loaded.
7514 \begin_layout Itemize
7515 unsaferewind: Unsafe rewind is happening.
7518 \begin_layout Subsection
7519 on_latch: Latch line is rising
7522 \begin_layout Itemize
7523 Callback: on_latch(<core-dependent-parameters>)
7526 \begin_layout Standard
7527 Called when latch line for controller is rising.
7528 Some cores may not support this.
7531 \begin_layout Section
7532 System-dependent behaviour
7535 \begin_layout Subsection
7539 \begin_layout Itemize
7540 Registers are: pbpc, pb, pc, r0, r1, r2, r3, r4, r5, a, x, y, z, s, d, db,
7541 p, e, irq, wai, mdr, vector, aa, rd, sp, dp, p_n, p_v, p_m, p_x, p_d, p_i,
7542 p_z, p_c, ppu_display_disabled, ppu_oam_priority, ppu_bg_tilesize[0], ppu_bg_ti
7543 lesize[1], ppu_bg_tilesize[2], ppu_bg_tilesize[3], ppu_bg3_priority, ppu_mosaic_
7544 enabled[0], ppu_mosaic_enabled[1], ppu_mosaic_enabled[2], ppu_mosaic_enabled[3],
7545 ppu_vram_incmode, ppu_mode7_vflip, ppu_mode7_hflip, ppu_window1_enabled[0],
7546 ppu_window1_enabled[1], ppu_window1_enabled[2], ppu_window1_enabled[3],
7547 ppu_window1_enabled[4], ppu_window1_enabled[5], ppu_window1_invert[0],
7548 ppu_window1_invert[1], ppu_window1_invert[2], ppu_window1_invert[3], ppu_window
7549 1_invert[4], ppu_window1_invert[5], ppu_window2_enabled[0], ppu_window2_enabled[
7550 1], ppu_window2_enabled[2], ppu_window2_enabled[3], ppu_window2_enabled[4],
7551 ppu_window2_enabled[5], ppu_window2_invert[0], ppu_window2_invert[1], ppu_windo
7552 w2_invert[2], ppu_window2_invert[3], ppu_window2_invert[4], ppu_window2_invert[5
7553 ], ppu_bg_enabled[0], ppu_bg_enabled[1], ppu_bg_enabled[2], ppu_bg_enabled[3],
7554 ppu_bg_enabled[4], ppu_bgsub_enabled[0], ppu_bgsub_enabled[1], ppu_bgsub_enable
7555 d[2], ppu_bgsub_enabled[3], ppu_bgsub_enabled[4], ppu_window_enabled[0],
7556 ppu_window_enabled[1], ppu_window_enabled[2], ppu_window_enabled[3], ppu_window
7557 _enabled[4], ppu_sub_window_enabled[0], ppu_sub_window_enabled[1], ppu_sub_windo
7558 w_enabled[2], ppu_sub_window_enabled[3], ppu_sub_window_enabled[4], ppu_addsub_m
7559 ode, ppu_direct_color, ppu_color_mode, ppu_color_halve, ppu_color_enabled[0],
7560 ppu_color_enabled[1], ppu_color_enabled[2], ppu_color_enabled[3], ppu_color_ena
7561 bled[4], ppu_color_enabled[5], ppu_mode7_extbg, ppu_pseudo_hires, ppu_overscan,
7562 ppu_oam_interlace, ppu_interlace, ppu_latch_hcounter, ppu_latch_vcounter,
7563 ppu_counters_latched, ppu_time_over, ppu_range_over, ppu_ppu1_mdr, ppu_ppu2_mdr
7564 , ppu_bg_y[0], ppu_bg_y[1], ppu_bg_y[2], ppu_bg_y[3], ppu_ioamaddr, ppu_icgramad
7565 dr, ppu_display_brightness, ppu_oam_basesize, ppu_oam_nameselect, ppu_oam_tdaddr
7566 , ppu_oam_baseaddr, ppu_oam_addr, ppu_oam_firstsprite, ppu_oam_latchdata,
7567 ppu_bg_mode, ppu_mosaic_size, ppu_mosaic_countdown, ppu_bg_scaddr[0], ppu_bg_sc
7568 addr[1], ppu_bg_scaddr[2], ppu_bg_scaddr[3], ppu_bg_scsize[0], ppu_bg_scsize[1],
7569 ppu_bg_scsize[2], ppu_bg_scsize[3], ppu_bg_tdaddr[0], ppu_bg_tdaddr[1],
7570 ppu_bg_tdaddr[2], ppu_bg_tdaddr[3], ppu_bg_ofslatch, ppu_m7_hofs, ppu_m7_vofs,
7571 ppu_bg_hofs[0], ppu_bg_hofs[1], ppu_bg_hofs[2], ppu_bg_hofs[3], ppu_bg_vofs[0],
7572 ppu_bg_vofs[1], ppu_bg_vofs[2], ppu_bg_vofs[3], ppu_vram_mapping, ppu_vram_incs
7573 ize, ppu_vram_addr, ppu_mode7_repeat, ppu_m7_latch, ppu_m7a, ppu_m7b, ppu_m7c,
7574 ppu_m7d, ppu_m7x, ppu_m7y, ppu_cgram_addr, ppu_cgram_latchdata, ppu_window1_lef
7575 t, ppu_window1_right, ppu_window2_left, ppu_window2_right, ppu_window_mask[0],
7576 ppu_window_mask[1], ppu_window_mask[2], ppu_window_mask[3], ppu_window_mask[4],
7577 ppu_window_mask[5], ppu_color_mask, ppu_colorsub_mask, ppu_color_r, ppu_color_g
7578 , ppu_color_b, ppu_color_rgb, ppu_scanlines, ppu_hcounter, ppu_vcounter,
7579 ppu_vram_readbuffer, ppu_oam_itemcount, ppu_oam_tilecount,
7582 \begin_layout Itemize
7583 on_latch has no parameters
7586 \begin_layout Itemize
7587 CPU 0 is S-CPU, 1 is S-SMP.
7590 \begin_layout Itemize
7591 Cheats are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_{RAM,ROM}.
7594 \begin_layout Itemize
7595 Read/Write/Execute hooks are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_
7599 \begin_layout Subsection
7603 \begin_layout Itemize
7604 Registers are: wrambank, cyclecounter, pc, sp, hf1, hf2, zf, cf, a, b, c,
7608 \begin_layout Itemize
7609 on_latch is not supported
7612 \begin_layout Itemize
7616 \begin_layout Itemize
7617 Cheats are supported for ROM, SRAM and WRAM.
7620 \begin_layout Itemize
7621 Read/Write/Execute hooks are supported for ROM (read/execute only), SRAM