bsnes: Fix on_latch in alttimings mode
[lsnes.git] / lua.lyx
blob91e69b996a9450bfcdf96f00d17e7da0894eaa50
1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
2 \lyxformat 413
3 \begin_document
4 \begin_header
5 \textclass article
6 \use_default_options true
7 \maintain_unincluded_children false
8 \language english
9 \language_package default
10 \inputencoding auto
11 \fontencoding global
12 \font_roman default
13 \font_sans default
14 \font_typewriter default
15 \font_default_family default
16 \use_non_tex_fonts false
17 \font_sc false
18 \font_osf false
19 \font_sf_scale 100
20 \font_tt_scale 100
22 \graphics default
23 \default_output_format default
24 \output_sync 0
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
28 \spacing single
29 \use_hyperref true
30 \pdf_bookmarks true
31 \pdf_bookmarksnumbered false
32 \pdf_bookmarksopen false
33 \pdf_bookmarksopenlevel 1
34 \pdf_breaklinks false
35 \pdf_pdfborder false
36 \pdf_colorlinks false
37 \pdf_backref false
38 \pdf_pdfusetitle true
39 \papersize a4paper
40 \use_geometry true
41 \use_amsmath 1
42 \use_esint 1
43 \use_mhchem 1
44 \use_mathdots 1
45 \cite_engine basic
46 \use_bibtopic false
47 \use_indices false
48 \paperorientation portrait
49 \suppress_date false
50 \use_refstyle 1
51 \index Hakusana
52 \shortcut idx
53 \color #008000
54 \end_index
55 \leftmargin 2cm
56 \topmargin 2cm
57 \rightmargin 1cm
58 \bottommargin 2cm
59 \headheight 1cm
60 \headsep 1cm
61 \footskip 1cm
62 \secnumdepth 3
63 \tocdepth 3
64 \paragraph_separation indent
65 \paragraph_indentation default
66 \quotes_language english
67 \papercolumns 1
68 \papersides 1
69 \paperpagestyle default
70 \tracking_changes false
71 \output_changes false
72 \html_math_output 0
73 \html_css_as_file 0
74 \html_be_strict false
75 \end_header
77 \begin_body
79 \begin_layout Title
80 lsnes Lua functions reference
81 \end_layout
83 \begin_layout Section
84 Table of contents
85 \end_layout
87 \begin_layout Standard
88 \begin_inset CommandInset toc
89 LatexCommand tableofcontents
91 \end_inset
94 \end_layout
96 \begin_layout Standard
97 \begin_inset Newpage pagebreak
98 \end_inset
101 \end_layout
103 \begin_layout Section
104 Conventions
105 \end_layout
107 \begin_layout Subsection
108 Coordinates:
109 \end_layout
111 \begin_layout Itemize
112 Coordinates increase to right and down.
113 \end_layout
115 \begin_layout Itemize
116 The origin is at top left of game area or buffer.
117 \end_layout
119 \begin_layout Subsection
120 Drawing and contexts
121 \end_layout
123 \begin_layout Itemize
124 Methods that draw something (unless stated otherwise) require a valid rendering
125  context.
126  This context can come in three ways:
127 \end_layout
129 \begin_deeper
130 \begin_layout Enumerate
131 The default rendering context of paint callback (the screen).
132 \end_layout
134 \begin_layout Enumerate
135 The default rendering context of video callback (the video).
136 \end_layout
138 \begin_layout Enumerate
139 Explicitly set rendering context (RENDERCTX:set).
140 \end_layout
142 \end_deeper
143 \begin_layout Itemize
144 The rendering context is always reset when callback ends.
145 \end_layout
147 \begin_layout Subsection
148 Colors
149 \end_layout
151 \begin_layout Standard
152 (Direct) colors can be specified either as numbers or strings.
153 \end_layout
155 \begin_layout Itemize
156 -1 is fully transparent.
157 \end_layout
159 \begin_layout Itemize
160 Non-negative numbers less than 
161 \begin_inset Formula $2^{32}$
162 \end_inset
164  are partially opaque colors (
165 \begin_inset Formula $a*2^{24}+r*2^{16}+g*2^{8}+b$
166 \end_inset
169 \end_layout
171 \begin_deeper
172 \begin_layout Itemize
173 \begin_inset Formula $a$
174 \end_inset
176  is transparency 
177 \begin_inset Formula $0-255$
178 \end_inset
181 \begin_inset Formula $0$
182 \end_inset
184  is fully opaque, 
185 \begin_inset Formula $256$
186 \end_inset
188  would be fully transparent.
189 \end_layout
191 \begin_deeper
192 \begin_layout Itemize
193 Thus, numbers in range 
194 \begin_inset Formula $0-16777215$
195 \end_inset
197  stand for fully opaque colors.
198 \end_layout
200 \end_deeper
201 \begin_layout Itemize
202 \begin_inset Formula $r$
203 \end_inset
206 \begin_inset Formula $g$
207 \end_inset
209  and 
210 \begin_inset Formula $b$
211 \end_inset
213  are intensities of base colors on scale 
214 \begin_inset Formula $0-255$
215 \end_inset
218 \end_layout
220 \end_deeper
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 
306 \end_layout
308 \begin_layout Itemize
309 The HSL base color names: hsl-<hue><saturation><lightness>.
310 \end_layout
312 \begin_deeper
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).
317 \end_layout
319 \begin_layout Itemize
320 Saturation is 0-8, where 0 is greyscale and 8 is fully saturated.
321 \end_layout
323 \begin_layout Itemize
324 Lightness is 0-8, where 0 is black and 8 is white.
325 \end_layout
327 \end_deeper
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}.
333 \end_layout
335 \begin_deeper
336 \begin_layout Itemize
337 opaqueness is measured as percentage.
338 \end_layout
340 \begin_layout Itemize
341 Hue adjustments are on 24-step scale.
342 \end_layout
344 \begin_layout Itemize
345 Saturation and lightness adjustments are on 16-step scale.
346 \end_layout
348 \end_deeper
349 \begin_layout Section
350 Special tokens
351 \end_layout
353 \begin_layout Standard
354 These tokens are special, and are expanded while the script is being loaded
355 \end_layout
357 \begin_layout Subsection
358 @@LUA_SCRIPT_FILENAME@@
359 \end_layout
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
364  to this Lua script.
365 \end_layout
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.
371 \end_layout
373 \begin_layout Section
374 Classes
375 \end_layout
377 \begin_layout Subsection
378 MMAP_STRUCT: Quasi-table mapping emulated memory
379 \end_layout
381 \begin_layout Standard
382 Objects of this class act like tables, except that the values are reflected
383  to and from emulated memory.
384 \end_layout
386 \begin_layout Subsubsection
387 static function new: Create new instance
388 \end_layout
390 \begin_layout Itemize
391 Syntax: mmap memory.mmap.new()
392 \end_layout
394 \begin_layout Itemize
395 Syntax: mmap classes.MMAP_STRUCT.new()
396 \end_layout
398 \begin_layout Itemize
399 Deprecated: mmap memory.map_structure()
400 \end_layout
402 \begin_layout Standard
403 Return value:
404 \end_layout
406 \begin_layout Itemize
407 mmap: MMAP_STRUCT: The created mmap structure.
408 \end_layout
410 \begin_layout Standard
411 Create a new MMAP_STRUCT (with no mappings) and return it.
412 \end_layout
414 \begin_layout Subsubsection
415 operator(): Bind key in mmap structure
416 \end_layout
418 \begin_layout Itemize
419 Syntax: obj(key, {marea, address|addrobj}, type)
420 \end_layout
422 \begin_layout Standard
423 Parameters:
424 \end_layout
426 \begin_layout Itemize
427 obj: MMAP_STRUCT: The structure to manipulate.
428 \end_layout
430 \begin_layout Itemize
431 key: String: The name of the key in array to map.
432 \end_layout
434 \begin_layout Itemize
435 marea: String: The memory area the mapped address is in (default: global
436  memory space).
437 \end_layout
439 \begin_layout Itemize
440 address: Number: The offset of memory addreess, relative to specified memory
441  area or global memory space.
442 \end_layout
444 \begin_layout Itemize
445 addrobj: ADDRESS: The memory address.
446 \end_layout
448 \begin_layout Itemize
449 type: String: The type of data to map.
450 \end_layout
452 \begin_deeper
453 \begin_layout Itemize
454 One of: byte, sbyte, word, sword, hword, shword, dword, sdword, qword, sqword,
455  float or double.
456 \end_layout
458 \end_deeper
459 \begin_layout Standard
460 Bind key <key> in mmap structure <obj> to address <address> (relative to
461  <marea>).
462  The memory address is treated as type <type>.
463 \end_layout
465 \begin_layout Itemize
466 Example: foomap(
467 \begin_inset Quotes eld
468 \end_inset
471 \begin_inset Quotes erd
472 \end_inset
475 \begin_inset Quotes eld
476 \end_inset
478 WRAM
479 \begin_inset Quotes erd
480 \end_inset
482 , 0x2A, 
483 \begin_inset Quotes eld
484 \end_inset
486 sword
487 \begin_inset Quotes erd
488 \end_inset
491 \end_layout
493 \begin_layout Standard
494 This binds signed word at address WRAM+0x2A into key 
495 \begin_inset Quotes eld
496 \end_inset
499 \begin_inset Quotes erd
500 \end_inset
503 \end_layout
505 \begin_layout Standard
506 \begin_inset Newpage pagebreak
507 \end_inset
510 \end_layout
512 \begin_layout Subsection
513 ZIPWRITER: Write .zip files
514 \end_layout
516 \begin_layout Standard
517 This class does writing of .zip files.
518 \end_layout
520 \begin_layout Subsubsection
521 Static function new: Create a new zipfile
522 \end_layout
524 \begin_layout Itemize
525 Syntax: zip zip.writer.new(filename, [compression])
526 \end_layout
528 \begin_layout Itemize
529 Deprecated: zip zip.create(filename, [compression])
530 \end_layout
532 \begin_layout Standard
533 Parameters:
534 \end_layout
536 \begin_layout Itemize
537 filename: string: The name of the file to write.
538 \end_layout
540 \begin_layout Itemize
541 compression: number: Compression level (0-9).
542  Default is 9.
543 \end_layout
545 \begin_layout Standard
546 Return value:
547 \end_layout
549 \begin_layout Itemize
550 zip: ZIPWRITER: The newly created ZIP writer.
551 \end_layout
553 \begin_layout Standard
554 Create a new ZIPWRITER object and return it.
555 \end_layout
557 \begin_layout Subsubsection
558 Method commit: Finish creating ZIP file.
559 \end_layout
561 \begin_layout Itemize
562 Syntax: zipfile:commit()
563 \end_layout
565 \begin_layout Standard
566 Parameters:
567 \end_layout
569 \begin_layout Itemize
570 zipfile: ZIPFILE: The ZIP file object.
571 \end_layout
573 \begin_layout Standard
574 Finish writing the ZIP file and actually create it on disk.
575 \end_layout
577 \begin_layout Itemize
578 If a member is currently open, it is implicitly closed.
579 \end_layout
581 \begin_layout Itemize
582 Invoking this on already committed or rolled back zipfile causes an error.
583 \end_layout
585 \begin_layout Subsubsection
586 Method rollback: Cancel writing the ZIP file.
587 \end_layout
589 \begin_layout Itemize
590 Syntax: zipfile:rollback()
591 \end_layout
593 \begin_layout Standard
594 Parameters:
595 \end_layout
597 \begin_layout Itemize
598 zipfile: ZIPFILE: The ZIP file object.
599 \end_layout
601 \begin_layout Standard
602 Cancel writing the whole ZIP file.
603  The file on disk will not be modified.
604 \end_layout
606 \begin_layout Itemize
607 If a member is currently open, it is implicitly closed.
608 \end_layout
610 \begin_layout Itemize
611 Invoking this on already committed or rolled back zipfile causes an error.
612 \end_layout
614 \begin_layout Subsubsection
615 Method create_file: Start writing a new member
616 \end_layout
618 \begin_layout Itemize
619 Syntax: zipfile:create_file(filename)
620 \end_layout
622 \begin_layout Standard
623 Parameters:
624 \end_layout
626 \begin_layout Itemize
627 zipfile: ZIPFILE: The ZIP file object.
628 \end_layout
630 \begin_layout Itemize
631 string filename: Name of the new member to create
632 \end_layout
634 \begin_layout Standard
635 Start writing a new member <filename> in ZIP file.
636 \end_layout
638 \begin_layout Itemize
639 If a member is currently open, it is implicitly closed.
640 \end_layout
642 \begin_layout Itemize
643 Invoking this on already committed or rolled back zipfile causes an error.
644 \end_layout
646 \begin_layout Subsubsection
647 Method close_file: Close member
648 \end_layout
650 \begin_layout Itemize
651 Syntax: zipfile:close_file()
652 \end_layout
654 \begin_layout Standard
655 Parameters:
656 \end_layout
658 \begin_layout Itemize
659 zipfile: ZIPFILE: The ZIP file object.
660 \end_layout
662 \begin_layout Standard
663 Close the currently open member in zipfile.
664 \end_layout
666 \begin_layout Itemize
667 Invoking this on already committed or rolled back zipfile causes an error.
668 \end_layout
670 \begin_layout Itemize
671 Invoking this without an open member causes an error.
672 \end_layout
674 \begin_layout Subsubsection
675 Method write: Write data
676 \end_layout
678 \begin_layout Itemize
679 Syntax: zipfile:write(data)
680 \end_layout
682 \begin_layout Standard
683 Parameters:
684 \end_layout
686 \begin_layout Itemize
687 zipfile: ZIPFILE: The ZIP file object.
688 \end_layout
690 \begin_layout Itemize
691 data: string: The data to write.
692 \end_layout
694 \begin_layout Standard
695 Write <data> in binary mode (as-is) to currently open member.
696 \end_layout
698 \begin_layout Itemize
699 Invoking this without a member being open causes an error.
700 \end_layout
702 \begin_layout Standard
703 \begin_inset Newpage pagebreak
704 \end_inset
707 \end_layout
709 \begin_layout Subsection
710 TILEMAP: Tiled collection of bitmaps.
711 \end_layout
713 \begin_layout Standard
714 A tilemap is tiled table, each cell holding a bitmap (indexed or direct).
715 \end_layout
717 \begin_layout Subsubsection
718 Static function new: Create a tilemap
719 \end_layout
721 \begin_layout Itemize
722 Syntax: tilemap gui.tiled_bitmap.new(w, h, bw, bh);
723 \end_layout
725 \begin_layout Itemize
726 Syntax: tilemap classes.TILEMAP.new(w, h, bw, bh);
727 \end_layout
729 \begin_layout Itemize
730 Deprecated: tilemap gui.tilemap(w, h, bw, bh);
731 \end_layout
733 \begin_layout Standard
734 Parameters:
735 \end_layout
737 \begin_layout Itemize
738 w: number: Width of the tilemap in tiles
739 \end_layout
741 \begin_layout Itemize
742 h: number: Height of the tilemap in tiles
743 \end_layout
745 \begin_layout Itemize
746 bw: number: Width of each tile in pixels.
747 \end_layout
749 \begin_layout Itemize
750 bh: number: Height of each tile in pixels.
751 \end_layout
753 \begin_layout Standard
754 Return value:
755 \end_layout
757 \begin_layout Itemize
758 tilemap: TILEMAP: the newly created tilemap
759 \end_layout
761 \begin_layout Standard
762 Create a new tilemap of <w>*<h> tiles, each of <bw>*<bh> pixels and return
763  it.
764 \end_layout
766 \begin_layout Subsubsection
767 TILEMAP:getsize: Query tilemap size
768 \end_layout
770 \begin_layout Itemize
771 Syntax: width, height tmap:getsize()
772 \end_layout
774 \begin_layout Standard
775 Parameters:
776 \end_layout
778 \begin_layout Itemize
779 tmap: TILEMAP: The tilemap to query.
780 \end_layout
782 \begin_layout Standard
783 Return value:
784 \end_layout
786 \begin_layout Itemize
787 width: number : The width of the tilemap in tiles.
788 \end_layout
790 \begin_layout Itemize
791 height: number: The height of the tilemap in tiles.
792 \end_layout
794 \begin_layout Standard
795 Get size of tilemap in tiles.
796 \end_layout
798 \begin_layout Subsubsection
799 TILEMAP:getcsize: Query tilemap cell size
800 \end_layout
802 \begin_layout Itemize
803 Syntax: width, height tmap:getcsize()
804 \end_layout
806 \begin_layout Standard
807 Parameters:
808 \end_layout
810 \begin_layout Itemize
811 tmap: TILEMAP: The tilemap to query.
812 \end_layout
814 \begin_layout Standard
815 Return value:
816 \end_layout
818 \begin_layout Itemize
819 width: number: The width of tilemap tile in pixels.
820 \end_layout
822 \begin_layout Itemize
823 height: number: The height of tilemap tile in pixels.
824 \end_layout
826 \begin_layout Standard
827 Get size of each tilemap tile in pixels.
828 \end_layout
830 \begin_layout Subsubsection
831 TILEMAP:get: Query tilemap tile
832 \end_layout
834 \begin_layout Itemize
835 Syntax: bitmap, palette tmap:get(x, y)
836 \end_layout
838 \begin_layout Standard
839 Parameters:
840 \end_layout
842 \begin_layout Itemize
843 tmap: TILEMAP: The tilemap to query.
844 \end_layout
846 \begin_layout Itemize
847 x: number: The x-coordinate of tile to query.
848 \end_layout
850 \begin_layout Itemize
851 y: number: The y-coordinate of tile to query.
852 \end_layout
854 \begin_layout Standard
855 Return value:
856 \end_layout
858 \begin_layout Itemize
859 bitmap: The associated bitmap (BITMAP or DBITMAP), or nil if none.
860 \end_layout
862 \begin_layout Itemize
863 palette: The palette (PALETTE) associated with indexed-color bitmap, if
864  any.
865  Otherwise nil.
866 \end_layout
868 \begin_layout Standard
869 Return the contents of tile at <x>,<y>.
870 \end_layout
872 \begin_layout Subsubsection
873 TILEMAP:set: Set tilemap cell
874 \end_layout
876 \begin_layout Itemize
877 Syntax: tmap:set(x, y)
878 \end_layout
880 \begin_layout Itemize
881 Syntax: tmap:set(x, y, bitmap)
882 \end_layout
884 \begin_layout Itemize
885 Syntax: tmap:set(x, y, bitmap, palette)
886 \end_layout
888 \begin_layout Standard
889 Parameters:
890 \end_layout
892 \begin_layout Itemize
893 tmap: TILEMAP: The tilemap to manipulate.
894 \end_layout
896 \begin_layout Itemize
897 number x: The x-coordinate of tile to set.
898 \end_layout
900 \begin_layout Itemize
901 number y: The y-coordinate of tile to set.
902 \end_layout
904 \begin_layout Itemize
905 bitmap: BITMAP/DBITMAP: The bitmap to set to tile.
906 \end_layout
908 \begin_layout Itemize
909 palette: PALETTE: The associated palette for bitmap.
910 \end_layout
912 \begin_layout Standard
913 Set the contents of tile <x>,<y>.
914  If no <bitmap> is given, clears the tile.
915  Otherwise sets the tile to contain bitmap <bitmap> with associated palette
916  <palette>.
917 \end_layout
919 \begin_layout Itemize
920 Specifying index bitmap <bitmap> without palette <palette> causes an error.
921 \end_layout
923 \begin_layout Subsubsection
924 TILEMAP:scroll: Scroll tilemap
925 \end_layout
927 \begin_layout Itemize
928 Syntax: tmap:scroll(ox, oy);
929 \end_layout
931 \begin_layout Itemize
932 Syntax: tmap:scroll(ox, oy, x, y, w, h);
933 \end_layout
935 \begin_layout Itemize
936 Syntax: tmap:scroll(ox, oy, x, y, w, h, circ_x, circ_y);
937 \end_layout
939 \begin_layout Standard
940 Parameters:
941 \end_layout
943 \begin_layout Itemize
944 tmap: TILEMAP: The tilemap to manipulate.
945 \end_layout
947 \begin_layout Itemize
948 ox: number: The number of tiles to scroll horizontally (positive is to right).
949 \end_layout
951 \begin_layout Itemize
952 oy: number: The number of tiles to scroll vertically (positive is to down).
953 \end_layout
955 \begin_layout Itemize
956 x: number: The left edge of scroll window.
957 \end_layout
959 \begin_layout Itemize
960 y: number: The top edge of scroll window.
961 \end_layout
963 \begin_layout Itemize
964 w: number: The width of scroll window.
965 \end_layout
967 \begin_layout Itemize
968 h: number: The height of scroll window.
969 \end_layout
971 \begin_layout Itemize
972 circ_x: boolean: If true, treat the window as circular in horizontal direction.
973 \end_layout
975 \begin_layout Itemize
976 circ_y: boolean: If true, treat the window as circular in vertical direction.
977 \end_layout
979 \begin_layout Standard
980 Scroll the specified tilemap <tmap> by <ox>,<oy>.
981  If a window <x>,<y>,<w>,<h> is specified, only that part is scrolled.
982  <circ_x> and <circ_y> control if scroll is circular or not.
983 \end_layout
985 \begin_layout Itemize
986 Specifying out-of-range window causes an error.
987 \end_layout
989 \begin_layout Subsubsection
990 TILEMAP:draw: Draw tilemap
991 \end_layout
993 \begin_layout Itemize
994 Name: tmap:draw(x, y)
995 \end_layout
997 \begin_layout Itemize
998 Name: tmap:draw(x, y, x0, y0, w, h)
999 \end_layout
1001 \begin_layout Standard
1002 Parameters:
1003 \end_layout
1005 \begin_layout Itemize
1006 tmap: TILEMAP: The tilemap to draw.
1007 \end_layout
1009 \begin_layout Itemize
1010 x: The x coordinate on screen to draw to.
1011 \end_layout
1013 \begin_layout Itemize
1014 y: The y coordinate on screen to draw to.
1015 \end_layout
1017 \begin_layout Itemize
1018 x0: number: The x coordinate on tilemap (in pixels) to start drawing from.
1019 \end_layout
1021 \begin_layout Itemize
1022 y0: number: The y coordinate on tilemap (in pixels) to start drawing from.
1023 \end_layout
1025 \begin_layout Itemize
1026 w: number: The width to draw (in pixels).
1027 \end_layout
1029 \begin_layout Itemize
1030 h: number: The height to draw (in pixels).
1031 \end_layout
1033 \begin_layout Standard
1034 Draw tilemap <tmap> to screen at <x>,<y>.
1035  If a window <x0>,<y0>,<w>,<h> is specified, only that part is drawn.
1036 \end_layout
1038 \begin_layout Itemize
1039 This method requires a rendering context to work.
1040 \end_layout
1042 \begin_layout Subsubsection
1043 TILEMAP:draw_outside: Draw tilemap outside game area
1044 \end_layout
1046 \begin_layout Itemize
1047 Name: tmap:draw_outside(x, y)
1048 \end_layout
1050 \begin_layout Itemize
1051 Name: tmap:draw_outside(x, y, x0, y0, w, h)
1052 \end_layout
1054 \begin_layout Standard
1055 Like TILEMAP:draw, but draws only outside game area.
1056 \end_layout
1058 \begin_layout Standard
1059 \begin_inset Newpage pagebreak
1060 \end_inset
1063 \end_layout
1065 \begin_layout Subsection
1066 RENDERCTX: Off-screen rendering context
1067 \end_layout
1069 \begin_layout Standard
1070 Object acting as off-screen rendering context.
1071 \end_layout
1073 \begin_layout Subsubsection
1074 Static function new: Create a render queue
1075 \end_layout
1077 \begin_layout Itemize
1078 Syntax: renderctx gui.renderctx.new(width, height);
1079 \end_layout
1081 \begin_layout Itemize
1082 Syntax: renderctx classes.RENDERCTX.new(width, height);
1083 \end_layout
1085 \begin_layout Itemize
1086 Deprecated: renderctx gui.renderq_new(width, height);
1087 \end_layout
1089 \begin_layout Standard
1090 Parameters:
1091 \end_layout
1093 \begin_layout Itemize
1094 width: number: The notional width of the game area.
1095 \end_layout
1097 \begin_layout Itemize
1098 height: number: The notional height of the game area.
1099 \end_layout
1101 \begin_layout Standard
1102 Returns:
1103 \end_layout
1105 \begin_layout Itemize
1106 rendectx: RENDERCTX: The newly created render context.
1107 \end_layout
1109 \begin_layout Standard
1110 Create a render context with reported size <width>*<height> and return it.
1111 \end_layout
1113 \begin_layout Subsubsection
1114 Static function setnull: Reset to default queue
1115 \end_layout
1117 \begin_layout Itemize
1118 Syntax: gui.renderctx.setnull()
1119 \end_layout
1121 \begin_layout Itemize
1122 Syntax: classes.RENDERCTX:setnull()
1123 \end_layout
1125 \begin_layout Itemize
1126 Deprecated: gui.renderq_set()
1127 \end_layout
1129 \begin_layout Standard
1130 Reset the used render context back to default for the executing callback:
1131 \end_layout
1133 \begin_layout Itemize
1134 The default for paint callback is the screen
1135 \end_layout
1137 \begin_layout Itemize
1138 The default for video callback is the video frame
1139 \end_layout
1141 \begin_layout Itemize
1142 The default otherwise is nothing.
1143 \end_layout
1145 \begin_layout Subsubsection
1146 Method clear: Clear a render queue
1147 \end_layout
1149 \begin_layout Itemize
1150 Syntax: renderctx:clear()
1151 \end_layout
1153 \begin_layout Itemize
1154 Deprecated: gui.renderq_clear(renderctx)
1155 \end_layout
1157 \begin_layout Standard
1158 Parameters:
1159 \end_layout
1161 \begin_layout Itemize
1162 renderctx: RENDERCTX: The render queue to clear.
1163 \end_layout
1165 \begin_layout Standard
1166 Clear all drawing from the context.
1167 \end_layout
1169 \begin_layout Subsubsection
1170 Method set: Change active render context
1171 \end_layout
1173 \begin_layout Itemize
1174 Syntax: renderctx:set()
1175 \end_layout
1177 \begin_layout Itemize
1178 Deprecated: gui.renderq_set(renderctx)
1179 \end_layout
1181 \begin_layout Standard
1182 Parameters:
1183 \end_layout
1185 \begin_layout Itemize
1186 renderctx: RENDERCTX: The render queue to use.
1187 \end_layout
1189 \begin_layout Standard
1190 Switch the current rendering context <renderctx>.
1191 \end_layout
1193 \begin_layout Subsubsection
1194 Method run: Draw all objects in context to another
1195 \end_layout
1197 \begin_layout Itemize
1198 Syntax: renderctx:run()
1199 \end_layout
1201 \begin_layout Itemize
1202 Deprecated: gui.renderq_run(renderctx)
1203 \end_layout
1205 \begin_layout Standard
1206 Parameters:
1207 \end_layout
1209 \begin_layout Itemize
1210 renderctx: RENDERCTX: The render context to overlay.
1211 \end_layout
1213 \begin_layout Standard
1214 Overlay the specified render context <context> upon the active rendering
1215  context.
1216 \end_layout
1218 \begin_layout Itemize
1219 Trying to overlay rendering context upon itself is a bad idea.
1220 \end_layout
1222 \begin_layout Subsubsection
1223 Method render: Render a contex to bitmap
1224 \end_layout
1226 \begin_layout Itemize
1227 Syntax: bitmap renderctx:render()
1228 \end_layout
1230 \begin_layout Standard
1231 Parameters:
1232 \end_layout
1234 \begin_layout Itemize
1235 renderctx: RENDERCTX: The context to render.
1236 \end_layout
1238 \begin_layout Standard
1239 Returns:
1240 \end_layout
1242 \begin_layout Itemize
1243 bitmap: DBITMAP: The rendered bitmap.
1244 \end_layout
1246 \begin_layout Standard
1247 Render the specified context <renderctx> to a new bitmap.
1248 \end_layout
1250 \begin_layout Itemize
1251 The size of bitmap will be nominal game area size, plus any set gaps.
1252 \end_layout
1254 \begin_layout Itemize
1255 This method does not require active rendering context.
1256 \end_layout
1258 \begin_layout Subsubsection
1259 Method synchronous_repaint: Paint screen now
1260 \end_layout
1262 \begin_layout Itemize
1263 Syntax: renderctx:synchronous_repaint()
1264 \end_layout
1266 \begin_layout Itemize
1267 Deprecated: gui.synchronous_repaint(renderctx)
1268 \end_layout
1270 \begin_layout Standard
1271 Parameters:
1272 \end_layout
1274 \begin_layout Itemize
1275 renderctx: RENDERCTX: The context to paint.
1276 \end_layout
1278 \begin_layout Standard
1279 Immediately redraw the screen with game overlayed by drawings from context
1280  <renderctx>.
1281 \end_layout
1283 \begin_layout Itemize
1284 This does not require active rendering context.
1285 \end_layout
1287 \begin_layout Itemize
1288 Will not cause paint callback to be invoked.
1289 \end_layout
1291 \begin_layout Standard
1292 \begin_inset Newpage pagebreak
1293 \end_inset
1296 \end_layout
1298 \begin_layout Subsection
1299 PALETTE: Color palette for indexed image
1300 \end_layout
1302 \begin_layout Subsubsection
1303 Static function new: Create a new palette
1304 \end_layout
1306 \begin_layout Itemize
1307 Syntax: palette gui.palette.new()
1308 \end_layout
1310 \begin_layout Itemize
1311 Syntax: palette classes.PALETTE.new()
1312 \end_layout
1314 \begin_layout Itemize
1315 Deprecated: palette gui.palette_new()
1316 \end_layout
1318 \begin_layout Standard
1319 Returns:
1320 \end_layout
1322 \begin_layout Itemize
1323 palette: PALETTE: The created palette.
1324 \end_layout
1326 \begin_layout Standard
1327 Create a new palette (with all colors transparent) and return it.
1328 \end_layout
1330 \begin_layout Subsubsection
1331 Static function load: Load a palette
1332 \end_layout
1334 \begin_layout Itemize
1335 Syntax: palette gui.palette.load(file, [base])
1336 \end_layout
1338 \begin_layout Itemize
1339 Syntax: palette classes.PALETTE.load(file, [base])
1340 \end_layout
1342 \begin_layout Itemize
1343 Deprecated: palette gui.palette_load(file, [base])
1344 \end_layout
1346 \begin_layout Standard
1347 Parameters:
1348 \end_layout
1350 \begin_layout Itemize
1351 string file: The file to load.
1352 \end_layout
1354 \begin_layout Itemize
1355 string base (optional): The base file to resolve file relative to.
1356 \end_layout
1358 \begin_layout Standard
1359 Returns:
1360 \end_layout
1362 \begin_layout Itemize
1363 palette: PALETTE: The loaded palette.
1364 \end_layout
1366 \begin_layout Standard
1367 Load a palette from file <file> (resolved relative to <base>).
1368 \end_layout
1370 \begin_layout Itemize
1371 The file format is a series of lines, each with following format:
1372 \end_layout
1374 \begin_deeper
1375 \begin_layout Itemize
1376 Blank or just whitespace: Ignored
1377 \end_layout
1379 \begin_layout Itemize
1380 First non-whitespace is '#': Ignored
1381 \end_layout
1383 \begin_layout Itemize
1384 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
1385 \end_layout
1387 \begin_layout Itemize
1388 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
1389  (0-256, 0 being fully transparent and 256 fully opaque).
1390 \end_layout
1392 \begin_layout Itemize
1393 transparent: Fully transparent color
1394 \end_layout
1396 \end_deeper
1397 \begin_layout Subsubsection
1398 Static function load_str: Load a palette from string
1399 \end_layout
1401 \begin_layout Itemize
1402 Syntax: palette gui.palette.load(data)
1403 \end_layout
1405 \begin_layout Itemize
1406 Syntax: palette classes.PALETTE.load(data)
1407 \end_layout
1409 \begin_layout Itemize
1410 Deprecated: palette gui.palette_load(data)
1411 \end_layout
1413 \begin_layout Standard
1414 Parameters:
1415 \end_layout
1417 \begin_layout Itemize
1418 string data: The palette data.
1419 \end_layout
1421 \begin_layout Standard
1422 Returns:
1423 \end_layout
1425 \begin_layout Itemize
1426 palette: PALETTE: The loaded palette.
1427 \end_layout
1429 \begin_layout Standard
1430 Like PALETTE:load, but instead of reading palette from file, reads it from
1431  a string.
1432 \end_layout
1434 \begin_layout Subsubsection
1435 Method set: Set palette entry
1436 \end_layout
1438 \begin_layout Itemize
1439 Syntax: palette:set(index, color)
1440 \end_layout
1442 \begin_layout Itemize
1443 Deprecated: gui.palette_set(palette, ...)
1444 \end_layout
1446 \begin_layout Standard
1447 Parameters:
1448 \end_layout
1450 \begin_layout Itemize
1451 palette: PALETTE: The palette to manipulate
1452 \end_layout
1454 \begin_layout Itemize
1455 index: number: The index of color to set (0-65535).
1456 \end_layout
1458 \begin_layout Itemize
1459 color: number/string: The color value to set.
1460 \end_layout
1462 \begin_layout Standard
1463 Set palette <palette> index <index> to color <color>.
1464 \end_layout
1466 \begin_layout Subsubsection
1467 Method hash: Hash a palette
1468 \end_layout
1470 \begin_layout Itemize
1471 Syntax: hash palette:hash()
1472 \end_layout
1474 \begin_layout Itemize
1475 Deprecated: hash gui.palette_hash(palette)
1476 \end_layout
1478 \begin_layout Standard
1479 Parameters:
1480 \end_layout
1482 \begin_layout Itemize
1483 palette: The palette to hash.
1484 \end_layout
1486 \begin_layout Standard
1487 Return value:
1488 \end_layout
1490 \begin_layout Itemize
1491 hash: string: 64-hex digit hash.
1492 \end_layout
1494 \begin_layout Standard
1495 Obtain crypto-grade hash of palette data of <palette>.
1496 \end_layout
1498 \begin_layout Itemize
1499 All colors after the last non-transparent one are ignored.
1500 \end_layout
1502 \begin_layout Subsubsection
1503 Method adjust_transparency: Adjust transparency
1504 \end_layout
1506 \begin_layout Itemize
1507 Syntax: palette:adjust_transparency(newvalue)
1508 \end_layout
1510 \begin_layout Itemize
1511 Deprecated: gui.adjust_transparency(palette, ...)
1512 \end_layout
1514 \begin_layout Standard
1515 Parameters:
1516 \end_layout
1518 \begin_layout Itemize
1519 palette: PALETTE: The palette to adjust.
1520 \end_layout
1522 \begin_layout Itemize
1523 Number adj: The factor to multiply opaqueness with times 256.
1524 \end_layout
1526 \begin_layout Standard
1527 Multiply opaqueness of all colors in palette <palette> by factor of <adj>/256.
1528 \end_layout
1530 \begin_layout Standard
1531 \begin_inset Newpage pagebreak
1532 \end_inset
1535 \end_layout
1537 \begin_layout Subsection
1538 BITMAP: Indexed-color bitmap
1539 \end_layout
1541 \begin_layout Subsubsection
1542 Static function new: Create a new bitmap
1543 \end_layout
1545 \begin_layout Itemize
1546 Syntax: bitmap gui.bitmap.new(w, h, [fillcolor])
1547 \end_layout
1549 \begin_layout Itemize
1550 Syntax: bitmap classes.BITMAP.new(w, h, [fillcolor])
1551 \end_layout
1553 \begin_layout Itemize
1554 Deprecated: bitmap gui.bitmap_new(w, h, false, [fillcolor])
1555 \end_layout
1557 \begin_layout Standard
1558 Parameters:
1559 \end_layout
1561 \begin_layout Itemize
1562 w: number: The width of bitmap to create in pixels.
1563 \end_layout
1565 \begin_layout Itemize
1566 h: number: The height of bitmap to create in pixels.
1567 \end_layout
1569 \begin_layout Itemize
1570 false: boolean: Constant boolean false.
1571 \end_layout
1573 \begin_layout Itemize
1574 fillcolor: number: The initial fill index.
1575  Default 0 if not specified.
1576 \end_layout
1578 \begin_layout Standard
1579 Create a new bitmap of size <w>*<h>.
1580  Fill the bitmap with color index <fillcolor>.
1581 \end_layout
1583 \begin_layout Subsubsection
1584 Method draw: Draw a bitmap
1585 \end_layout
1587 \begin_layout Itemize
1588 Syntax: bitmap:draw(x, y, palette)
1589 \end_layout
1591 \begin_layout Itemize
1592 Deprecated: gui.bitmap_draw(x, y, bitmap, palette)
1593 \end_layout
1595 \begin_layout Standard
1596 Parameters:
1597 \end_layout
1599 \begin_layout Itemize
1600 bitmap: BITMAP: The bitmap to draw
1601 \end_layout
1603 \begin_layout Itemize
1604 x: number: The x-coordinate on screen.
1605 \end_layout
1607 \begin_layout Itemize
1608 y: number: The y-coordinate on screen.
1609 \end_layout
1611 \begin_layout Itemize
1612 palette: The palette to use for drawing.
1613 \end_layout
1615 \begin_layout Standard
1616 Draw bitmap <bitmap> on screen at <x>,<y> with palette <palette>.
1617 \end_layout
1619 \begin_layout Subsubsection
1620 Method draw_outside: Draw a bitmap outside game area
1621 \end_layout
1623 \begin_layout Itemize
1624 Syntax: bitmap:draw_outside(x, y, palette)
1625 \end_layout
1627 \begin_layout Standard
1628 Like bitmap:draw, but does not draw on game area.
1629 \end_layout
1631 \begin_layout Subsubsection
1632 Method draw_clip: Draw a bitmap, with clipping
1633 \end_layout
1635 \begin_layout Itemize
1636 Syntax: bitmap:draw_clip(x, y, palette, x0, y0, width, height)
1637 \end_layout
1639 \begin_layout Standard
1640 Parameters:
1641 \end_layout
1643 \begin_layout Itemize
1644 bitmap: BITMAP: The bitmap to draw
1645 \end_layout
1647 \begin_layout Itemize
1648 x: number: The x-coordinate on screen.
1649 \end_layout
1651 \begin_layout Itemize
1652 y: number: The y-coordinate on screen.
1653 \end_layout
1655 \begin_layout Itemize
1656 palette: The palette to use for drawing.
1657 \end_layout
1659 \begin_layout Itemize
1660 x0: The smallest bitmap x coordinate to draw.
1661 \end_layout
1663 \begin_layout Itemize
1664 y0: The smallest bitmap y coordinate to draw.
1665 \end_layout
1667 \begin_layout Itemize
1668 width: Width of region to draw
1669 \end_layout
1671 \begin_layout Itemize
1672 height: Height of region to draw.
1673 \end_layout
1675 \begin_layout Standard
1676 Like bitmap:draw, but clip the bitmap area drawn.
1677 \end_layout
1679 \begin_layout Subsubsection
1680 Method draw_clip_outside: Draw a bitmap outside game are, with clipping
1681 \end_layout
1683 \begin_layout Itemize
1684 Syntax: bitmap:draw_clip_outside(x, y, palette, x0, y0, width, height)
1685 \end_layout
1687 \begin_layout Standard
1688 Like bitmap:draw_clip, but only draw outside game area.
1689 \end_layout
1691 \begin_layout Subsubsection
1692 Method pset: Set pixel in bitmap
1693 \end_layout
1695 \begin_layout Itemize
1696 Syntax: bitmap:pset(x, y, color)
1697 \end_layout
1699 \begin_layout Itemize
1700 Deprecaed: gui.bitmap_pset(bitmap, ...)
1701 \end_layout
1703 \begin_layout Standard
1704 Parameters:
1705 \end_layout
1707 \begin_layout Itemize
1708 bitmap: BITMAP: The bitmap to manipulate.
1709 \end_layout
1711 \begin_layout Itemize
1712 x: number: x-coordinate of pixel to set.
1713 \end_layout
1715 \begin_layout Itemize
1716 y: number: y-coordinate of pixel to set.
1717 \end_layout
1719 \begin_layout Itemize
1720 color: number: The color index to set.
1721 \end_layout
1723 \begin_layout Standard
1724 Sets specified pixel <x>,<y> in bitmap <bitmap> to color index <color>.
1725 \end_layout
1727 \begin_layout Subsubsection
1728 Method pget: Get pixel in bitmap
1729 \end_layout
1731 \begin_layout Itemize
1732 Syntax: color bitmap:pget(x,y)
1733 \end_layout
1735 \begin_layout Itemize
1736 Deprecated: color gui.bitmap_pget(bitmap, ...)
1737 \end_layout
1739 \begin_layout Standard
1740 Parameters:
1741 \end_layout
1743 \begin_layout Itemize
1744 bitmap: BITMAP: The bitmap to query.
1745 \end_layout
1747 \begin_layout Itemize
1748 x: number: x-coordinate of pixel to get.
1749 \end_layout
1751 \begin_layout Itemize
1752 y: number: y-coordinate of pixel to get.
1753 \end_layout
1755 \begin_layout Standard
1756 Returns:
1757 \end_layout
1759 \begin_layout Itemize
1760 color: number: The color index in specified pixel.
1761 \end_layout
1763 \begin_layout Standard
1764 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
1765 \end_layout
1767 \begin_layout Subsubsection
1768 Method size: Get size of bitmap
1769 \end_layout
1771 \begin_layout Itemize
1772 Syntax: width, height bitmap:size()
1773 \end_layout
1775 \begin_layout Itemize
1776 Syntax: width, height gui.bitmap_size(bitmap)
1777 \end_layout
1779 \begin_layout Standard
1780 Parameters:
1781 \end_layout
1783 \begin_layout Itemize
1784 bitmap: BITMAP: The bitmap to query.
1785 \end_layout
1787 \begin_layout Standard
1788 Returns:
1789 \end_layout
1791 \begin_layout Itemize
1792 width: number: The width of the bitmap.
1793 \end_layout
1795 \begin_layout Itemize
1796 height: number: The height of the bitmap.
1797 \end_layout
1799 \begin_layout Standard
1800 Get size of bitmap <bitmap>.
1801 \end_layout
1803 \begin_layout Subsubsection
1804 Method blit: Blit a bitmap into another
1805 \end_layout
1807 \begin_layout Itemize
1808 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
1809 \end_layout
1811 \begin_layout Itemize
1812 Deprecated: gui.bitmap_blit(dest, ...)
1813 \end_layout
1815 \begin_layout Standard
1816 Parameters:
1817 \end_layout
1819 \begin_layout Itemize
1820 dest: BITMAP: The target bitmap to blit to.
1821 \end_layout
1823 \begin_layout Itemize
1824 dx: number: The x-coordinate in target.
1825 \end_layout
1827 \begin_layout Itemize
1828 dy: number: The y-coordinate in target.
1829 \end_layout
1831 \begin_layout Itemize
1832 src: BITMAP: The source bitmap.
1833 \end_layout
1835 \begin_layout Itemize
1836 sx: number: The x-coordinate in source.
1837 \end_layout
1839 \begin_layout Itemize
1840 sy: number: The y-coordinate in source.
1841 \end_layout
1843 \begin_layout Itemize
1844 w: number: The width of area to blit.
1845 \end_layout
1847 \begin_layout Itemize
1848 h: number: The height of area to blit.
1849 \end_layout
1851 \begin_layout Itemize
1852 ck: number: The color key.
1853  Pixels with this index are not copied.
1854 \end_layout
1856 \begin_deeper
1857 \begin_layout Itemize
1858 If none is specified, all pixels are copied.
1859 \end_layout
1861 \end_deeper
1862 \begin_layout Standard
1863 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> into <dest> at
1864  <dx>,<dy>.
1865  If a color key <ck> is specified, pixels of that color are not copied.
1866 \end_layout
1868 \begin_layout Subsubsection
1869 Method blit_scaled: Blit a bitmap into another with scaling
1870 \end_layout
1872 \begin_layout Itemize
1873 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
1874 \end_layout
1876 \begin_layout Itemize
1877 Deprecated: gui.bitmap_blit_scaled(dest, ...)
1878 \end_layout
1880 \begin_layout Standard
1881 Parameters:
1882 \end_layout
1884 \begin_layout Itemize
1885 dest: BITMAP: The target bitmap to blit to.
1886 \end_layout
1888 \begin_layout Itemize
1889 dx: number: The x-coordinate in target.
1890 \end_layout
1892 \begin_layout Itemize
1893 dy: number: The y-coordinate in target.
1894 \end_layout
1896 \begin_layout Itemize
1897 src: BITMAP: The source bitmap.
1898 \end_layout
1900 \begin_layout Itemize
1901 sx: number: The x-coordinate in source.
1902 \end_layout
1904 \begin_layout Itemize
1905 sy: number: The y-coordinate in source.
1906 \end_layout
1908 \begin_layout Itemize
1909 w: number: The width of area to blit.
1910 \end_layout
1912 \begin_layout Itemize
1913 h: number: The height of area to blit.
1914 \end_layout
1916 \begin_layout Itemize
1917 hscl: number: Horizontal scale factor (integer).
1918 \end_layout
1920 \begin_layout Itemize
1921 vscl: number: Vertical scale factor (integer).
1922  Defaults to the same as <hscl>.
1923 \end_layout
1925 \begin_layout Itemize
1926 ck: number: The color key.
1927  Pixels with this index are not copied.
1928 \end_layout
1930 \begin_deeper
1931 \begin_layout Itemize
1932 If none is specified, all pixels are copied.
1933 \end_layout
1935 \end_deeper
1936 \begin_layout Standard
1937 Like BITMAP:blit, but also scales the copied part of bitmap (using nearest
1938  neighbor) by factor of <hscl>*<vscl>.
1939 \end_layout
1941 \begin_layout Subsubsection
1942 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
1943 \end_layout
1945 \begin_layout Itemize
1946 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
1947 \end_layout
1949 \begin_layout Itemize
1950 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
1951 \end_layout
1953 \begin_layout Standard
1954 Parameters:
1955 \end_layout
1957 \begin_layout Itemize
1958 dest: BITMAP: The target bitmap to blit to.
1959 \end_layout
1961 \begin_layout Itemize
1962 dx: number: The x-coordinate in target.
1963 \end_layout
1965 \begin_layout Itemize
1966 dy: number: The y-coordinate in target.
1967 \end_layout
1969 \begin_layout Itemize
1970 src: BITMAP: The source bitmap.
1971 \end_layout
1973 \begin_layout Itemize
1974 sx: number: The x-coordinate in source.
1975 \end_layout
1977 \begin_layout Itemize
1978 sy: number: The y-coordinate in source.
1979 \end_layout
1981 \begin_layout Itemize
1982 w: number: The width of area to blit.
1983 \end_layout
1985 \begin_layout Itemize
1986 h: number: The height of area to blit.
1987 \end_layout
1989 \begin_layout Itemize
1990 operator: string: The operator to use.
1991 \end_layout
1993 \begin_deeper
1994 \begin_layout Itemize
1995 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
1996  DestOut, Clear or Xor.
1997 \end_layout
1999 \end_deeper
2000 \begin_layout Standard
2001 Like BITMAP:blit, but instead of just overwriting, applies specified Porter-Duff
2002  operator.
2004 \end_layout
2006 \begin_layout Itemize
2007 Color index 0 in source and target is treated as background.
2008 \end_layout
2010 \begin_layout Subsubsection
2011 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2012  Porter-Duff composition
2013 \end_layout
2015 \begin_layout Itemize
2016 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2017  operator)
2018 \end_layout
2020 \begin_layout Itemize
2021 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2022 \end_layout
2024 \begin_layout Standard
2025 Parameters:
2026 \end_layout
2028 \begin_layout Itemize
2029 dest: BITMAP: The target bitmap to blit to.
2030 \end_layout
2032 \begin_layout Itemize
2033 dx: number: The x-coordinate in target.
2034 \end_layout
2036 \begin_layout Itemize
2037 dy: number: The y-coordinate in target.
2038 \end_layout
2040 \begin_layout Itemize
2041 src: BITMAP: The source bitmap.
2042 \end_layout
2044 \begin_layout Itemize
2045 sx: number: The x-coordinate in source.
2046 \end_layout
2048 \begin_layout Itemize
2049 sy: number: The y-coordinate in source.
2050 \end_layout
2052 \begin_layout Itemize
2053 w: number: The width of area to blit.
2054 \end_layout
2056 \begin_layout Itemize
2057 h: number: The height of area to blit.
2058 \end_layout
2060 \begin_layout Itemize
2061 hscl: number: Horizontal scale factor (integer).
2062 \end_layout
2064 \begin_layout Itemize
2065 vscl: number: Vertical scale factor (integer).
2066  Defaults to the same as <hscl>.
2067 \end_layout
2069 \begin_layout Itemize
2070 operator: string: The operator to use.
2071 \end_layout
2073 \begin_deeper
2074 \begin_layout Itemize
2075 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2076  DestOut, Clear or Xor.
2077 \end_layout
2079 \end_deeper
2080 \begin_layout Standard
2081 Like BITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2082  like BITMAP:blit_scaled.
2083 \end_layout
2085 \begin_layout Subsubsection
2086 Method blit_priority: Blit a bitmap into another with color priority
2087 \end_layout
2089 \begin_layout Itemize
2090 Syntax: dest:blit_priority(dx, dy, src, sx, sy, w, h)
2091 \end_layout
2093 \begin_layout Itemize
2094 Deprecated: gui.bitmap_blit_priority(dest, ...)
2095 \end_layout
2097 \begin_layout Standard
2098 Parameters:
2099 \end_layout
2101 \begin_layout Itemize
2102 dest: BITMAP: The target bitmap to blit to.
2103 \end_layout
2105 \begin_layout Itemize
2106 dx: number: The x-coordinate in target.
2107 \end_layout
2109 \begin_layout Itemize
2110 dy: number: The y-coordinate in target.
2111 \end_layout
2113 \begin_layout Itemize
2114 src: BITMAP: The source bitmap.
2115 \end_layout
2117 \begin_layout Itemize
2118 sx: number: The x-coordinate in source.
2119 \end_layout
2121 \begin_layout Itemize
2122 sy: number: The y-coordinate in source.
2123 \end_layout
2125 \begin_layout Itemize
2126 w: number: The width of area to blit.
2127 \end_layout
2129 \begin_layout Itemize
2130 h: number: The height of area to blit.
2131 \end_layout
2133 \begin_layout Standard
2134 Like BITMAP:blit, but only copy pixels where source color index is greater
2135  than destination color index.
2136 \end_layout
2138 \begin_layout Subsubsection
2139 Method blit_scaled_priority: Blit a bitmap into another with color priority
2140  and scaling
2141 \end_layout
2143 \begin_layout Itemize
2144 Syntax: dest:blit_scaled_priority(dx, dy, src, sx, sy, w, h, hscl, [vscl])
2145 \end_layout
2147 \begin_layout Itemize
2148 Deprecated: gui.bitmap_blit_scaled_priority(dest, ...)
2149 \end_layout
2151 \begin_layout Standard
2152 Parameters:
2153 \end_layout
2155 \begin_layout Itemize
2156 dest: BITMAP: The target bitmap to blit to.
2157 \end_layout
2159 \begin_layout Itemize
2160 dx: number: The x-coordinate in target.
2161 \end_layout
2163 \begin_layout Itemize
2164 dy: number: The y-coordinate in target.
2165 \end_layout
2167 \begin_layout Itemize
2168 src: BITMAP: The source bitmap.
2169 \end_layout
2171 \begin_layout Itemize
2172 sx: number: The x-coordinate in source.
2173 \end_layout
2175 \begin_layout Itemize
2176 sy: number: The y-coordinate in source.
2177 \end_layout
2179 \begin_layout Itemize
2180 w: number: The width of area to blit.
2181 \end_layout
2183 \begin_layout Itemize
2184 h: number: The height of area to blit.
2185 \end_layout
2187 \begin_layout Itemize
2188 hscl: number: Horizontal scale factor (integer).
2189 \end_layout
2191 \begin_layout Itemize
2192 vscl: number: Vertical scale factor (integer).
2193  Defaults to the same as <hscl>.
2194 \end_layout
2196 \begin_layout Standard
2197 Like BITMAP:blit_priority, but apply scaling by <hscl>*<vscl> like BITMAP:blit_s
2198 caled.
2199 \end_layout
2201 \begin_layout Subsubsection
2202 Method save_png: Save a bitmap to PNG
2203 \end_layout
2205 \begin_layout Itemize
2206 Syntax: bitmap:save_png(filename, [base], palette)
2207 \end_layout
2209 \begin_layout Itemize
2210 Syntax: data bitmap:save_png(palette)
2211 \end_layout
2213 \begin_layout Itemize
2214 Deprecated: ...
2215  gui.bitmap_save_png(bitmap, ...)
2216 \end_layout
2218 \begin_layout Standard
2219 Parameters:
2220 \end_layout
2222 \begin_layout Itemize
2223 bitmap: BITMAP: The bitmap to save.
2224 \end_layout
2226 \begin_layout Itemize
2227 filename: string: The filename to save to.
2228 \end_layout
2230 \begin_layout Itemize
2231 base: string: The base filename is resolved relative to.
2232 \end_layout
2234 \begin_layout Itemize
2235 palette: PALETTE: The palette to use.
2236 \end_layout
2238 \begin_layout Standard
2239 Return value:
2240 \end_layout
2242 \begin_layout Itemize
2243 data: string: BASE64 encoded PNG data.
2244 \end_layout
2246 \begin_layout Standard
2247 Save bitmap <bitmap>, with palette <pal> into PNG file <filename> (relative
2248  to <base>) or return BASE64 encoding of it.
2249 \end_layout
2251 \begin_layout Subsubsection
2252 Method hash: Hash a bitmap
2253 \end_layout
2255 \begin_layout Itemize
2256 Syntax: hash bitmap:hash()
2257 \end_layout
2259 \begin_layout Itemize
2260 Deprecated: hash bitmap:hash(bitmap)
2261 \end_layout
2263 \begin_layout Standard
2264 Parameters:
2265 \end_layout
2267 \begin_layout Itemize
2268 bitmap: BITMAP: The bitmap to hash.
2269 \end_layout
2271 \begin_layout Standard
2272 Return value:
2273 \end_layout
2275 \begin_layout Itemize
2276 hash: string: 64-hex digit hash
2277 \end_layout
2279 \begin_layout Standard
2280 Hashes bitmap <bitmap> and returns crypto-strong hash.
2282 \end_layout
2284 \begin_layout Itemize
2285 Color order in bitmap is significant.
2286 \end_layout
2288 \begin_layout Standard
2289 \begin_inset Newpage pagebreak
2290 \end_inset
2293 \end_layout
2295 \begin_layout Subsection
2296 DBITMAP: Direct-color bitmap
2297 \end_layout
2299 \begin_layout Subsubsection
2300 Static function: new: Create a new bitmap
2301 \end_layout
2303 \begin_layout Itemize
2304 Syntax: bitmap gui.dbitmap.new(w, h, [fillcolor])
2305 \end_layout
2307 \begin_layout Itemize
2308 Syntax: bitmap classes.DBITMAP.new(w, h, [fillcolor])
2309 \end_layout
2311 \begin_layout Itemize
2312 Deprecated: bitmap gui.bitmap_new (w, h, true, [fillcolor]).
2313 \end_layout
2315 \begin_layout Standard
2316 Parameters:
2317 \end_layout
2319 \begin_layout Itemize
2320 w: number: The width of new bitmap.
2321 \end_layout
2323 \begin_layout Itemize
2324 h: number: The height of new bitmap.
2325 \end_layout
2327 \begin_layout Itemize
2328 true: boolean: Fixed boolean true
2329 \end_layout
2331 \begin_layout Itemize
2332 fillcolor: The color to fill the bitmap with (default transparent).
2333 \end_layout
2335 \begin_layout Standard
2336 Return value:
2337 \end_layout
2339 \begin_layout Itemize
2340 bitmap: DBITMAP: The new bitmap.
2341 \end_layout
2343 \begin_layout Standard
2344 Create a new direct-color bitmap of size <w>*<h>, initially filled with
2345  <fillcolor>.
2346 \end_layout
2348 \begin_layout Subsubsection
2349 Method draw: Draw a bitmap
2350 \end_layout
2352 \begin_layout Itemize
2353 Syntax: bitmap.draw(x, y)
2354 \end_layout
2356 \begin_layout Itemize
2357 Deprecated: gui.bitmap_draw(x, y, bitmap)
2358 \end_layout
2360 \begin_layout Standard
2361 Parameters:
2362 \end_layout
2364 \begin_layout Itemize
2365 bitmap: DBITMAP: The bitmap to draw.
2366 \end_layout
2368 \begin_layout Itemize
2369 x: number: X-coordinate on screen.
2370 \end_layout
2372 \begin_layout Itemize
2373 y: number: Y-coordinate on screen.
2374 \end_layout
2376 \begin_layout Standard
2377 Draw bitmap <bitmap> on screen at <x>,<y>.
2378 \end_layout
2380 \begin_layout Subsubsection
2381 Method draw_outside: Draw a bitmap outside game area
2382 \end_layout
2384 \begin_layout Itemize
2385 Syntax: dbitmap:draw_outside(x, y, palette)
2386 \end_layout
2388 \begin_layout Standard
2389 Like dbitmap:draw, but does not draw on game area.
2390 \end_layout
2392 \begin_layout Subsubsection
2393 Method draw_clip: Draw a bitmap, with clipping
2394 \end_layout
2396 \begin_layout Itemize
2397 Syntax: dbitmap:draw(x, y, palette, x0, y0, width, height)
2398 \end_layout
2400 \begin_layout Standard
2401 Parameters:
2402 \end_layout
2404 \begin_layout Itemize
2405 bitmap: DBITMAP: The bitmap to draw
2406 \end_layout
2408 \begin_layout Itemize
2409 x: number: The x-coordinate on screen.
2410 \end_layout
2412 \begin_layout Itemize
2413 y: number: The y-coordinate on screen.
2414 \end_layout
2416 \begin_layout Itemize
2417 x0: The smallest bitmap x coordinate to draw.
2418 \end_layout
2420 \begin_layout Itemize
2421 y0: The smallest bitmap y coordinate to draw.
2422 \end_layout
2424 \begin_layout Itemize
2425 width: Width of region to draw
2426 \end_layout
2428 \begin_layout Itemize
2429 height: Height of region to draw.
2430 \end_layout
2432 \begin_layout Standard
2433 Like dbitmap:draw, but clip the bitmap area drawn.
2434 \end_layout
2436 \begin_layout Subsubsection
2437 Method draw_clip_outside: Draw a bitmap outside game are, with clipping
2438 \end_layout
2440 \begin_layout Itemize
2441 Syntax: dbitmap:draw_clip_outside(x, y, palette, x0, y0, width, height)
2442 \end_layout
2444 \begin_layout Standard
2445 Like dbitmap:draw_clip, but only draw outside game area.
2446 \end_layout
2448 \begin_layout Subsubsection
2449 Method pset: Set pixel in bitmap
2450 \end_layout
2452 \begin_layout Itemize
2453 Syntax: bitmap:pset(x, y, color)
2454 \end_layout
2456 \begin_layout Itemize
2457 Deprecaed: gui.bitmap_pset(bitmap, ...)
2458 \end_layout
2460 \begin_layout Standard
2461 Parameters:
2462 \end_layout
2464 \begin_layout Itemize
2465 bitmap: DBITMAP: The bitmap to manipulate.
2466 \end_layout
2468 \begin_layout Itemize
2469 x: number: x-coordinate of pixel to set.
2470 \end_layout
2472 \begin_layout Itemize
2473 y: number: y-coordinate of pixel to set.
2474 \end_layout
2476 \begin_layout Itemize
2477 color: number/string: The color to set.
2478 \end_layout
2480 \begin_layout Standard
2481 Sets specified pixel <x>,<y> in bitmap <bitmap> to color <color>.
2482 \end_layout
2484 \begin_layout Subsubsection
2485 Method pget: Get pixel in bitmap
2486 \end_layout
2488 \begin_layout Itemize
2489 Syntax: color bitmap:pget(x,y)
2490 \end_layout
2492 \begin_layout Itemize
2493 Deprecated: color gui.bitmap_pget(bitmap, ...)
2494 \end_layout
2496 \begin_layout Standard
2497 Parameters:
2498 \end_layout
2500 \begin_layout Itemize
2501 bitmap: DBITMAP: The bitmap to query.
2502 \end_layout
2504 \begin_layout Itemize
2505 x: number: x-coordinate of pixel to get.
2506 \end_layout
2508 \begin_layout Itemize
2509 y: number: y-coordinate of pixel to get.
2510 \end_layout
2512 \begin_layout Standard
2513 Returns:
2514 \end_layout
2516 \begin_layout Itemize
2517 color: number: The color of specified pixel.
2518 \end_layout
2520 \begin_layout Standard
2521 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
2522 \end_layout
2524 \begin_layout Subsubsection
2525 Method size: Get size of bitmap
2526 \end_layout
2528 \begin_layout Itemize
2529 Syntax: width, height bitmap:size()
2530 \end_layout
2532 \begin_layout Itemize
2533 Syntax: width, height gui.bitmap_size(bitmap)
2534 \end_layout
2536 \begin_layout Standard
2537 Parameters:
2538 \end_layout
2540 \begin_layout Itemize
2541 bitmap: DBITMAP: The bitmap to query.
2542 \end_layout
2544 \begin_layout Standard
2545 Returns:
2546 \end_layout
2548 \begin_layout Itemize
2549 width: number: The width of the bitmap.
2550 \end_layout
2552 \begin_layout Itemize
2553 height: number: The height of the bitmap.
2554 \end_layout
2556 \begin_layout Standard
2557 Get size of bitmap <bitmap>.
2558 \end_layout
2560 \begin_layout Subsubsection
2561 Method blit: Blit a bitmap into another
2562 \end_layout
2564 \begin_layout Itemize
2565 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
2566 \end_layout
2568 \begin_layout Itemize
2569 Syntax: dest:blit(dx, dy, src, srcpal, sx, sy, w, h, [ck])
2570 \end_layout
2572 \begin_layout Itemize
2573 Deprecated: gui.bitmap_blit(dest, ...)
2574 \end_layout
2576 \begin_layout Standard
2577 Parameters:
2578 \end_layout
2580 \begin_layout Itemize
2581 dest: DBITMAP: The target bitmap to blit to.
2582 \end_layout
2584 \begin_layout Itemize
2585 dx: number: The x-coordinate in target.
2586 \end_layout
2588 \begin_layout Itemize
2589 dy: number: The y-coordinate in target.
2590 \end_layout
2592 \begin_layout Itemize
2593 src: BITMAP/DBITMAP: The source bitmap.
2594 \end_layout
2596 \begin_layout Itemize
2597 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2598 \end_layout
2600 \begin_layout Itemize
2601 sx: number: The x-coordinate in source.
2602 \end_layout
2604 \begin_layout Itemize
2605 sy: number: The y-coordinate in source.
2606 \end_layout
2608 \begin_layout Itemize
2609 w: number: The width of area to blit.
2610 \end_layout
2612 \begin_layout Itemize
2613 h: number: The height of area to blit.
2614 \end_layout
2616 \begin_layout Itemize
2617 ck: number: The color key.
2618  Pixels with this index are not copied.
2619 \end_layout
2621 \begin_deeper
2622 \begin_layout Itemize
2623 If none is specified, all pixels are copied.
2624 \end_layout
2626 \begin_layout Itemize
2627 If <src> is paletted, this is color index, otherwise it is a color.
2628 \end_layout
2630 \end_deeper
2631 \begin_layout Standard
2632 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> (with palette <pal>
2633  if indexed) into <dest> at <dx>,<dy>.
2634  If a color key <ck> is specified, pixels of that color are not copied.
2635 \end_layout
2637 \begin_layout Subsubsection
2638 Method blit_scaled: Blit a bitmap into another with scaling
2639 \end_layout
2641 \begin_layout Itemize
2642 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
2643 \end_layout
2645 \begin_layout Itemize
2646 Syntax: dest:blit_scaled(dx, dy, src, srcpal, sx, sy, w, h, hscl, [vscl],
2647  [ck])
2648 \end_layout
2650 \begin_layout Itemize
2651 Deprecated: gui.bitmap_blit_scaled(dest, ...)
2652 \end_layout
2654 \begin_layout Standard
2655 Parameters:
2656 \end_layout
2658 \begin_layout Itemize
2659 dest: DBITMAP: The target bitmap to blit to.
2660 \end_layout
2662 \begin_layout Itemize
2663 dx: number: The x-coordinate in target.
2664 \end_layout
2666 \begin_layout Itemize
2667 dy: number: The y-coordinate in target.
2668 \end_layout
2670 \begin_layout Itemize
2671 src: BITMAP/DBITMAP: The source bitmap.
2672 \end_layout
2674 \begin_layout Itemize
2675 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2676 \end_layout
2678 \begin_layout Itemize
2679 sx: number: The x-coordinate in source.
2680 \end_layout
2682 \begin_layout Itemize
2683 sy: number: The y-coordinate in source.
2684 \end_layout
2686 \begin_layout Itemize
2687 w: number: The width of area to blit.
2688 \end_layout
2690 \begin_layout Itemize
2691 h: number: The height of area to blit.
2692 \end_layout
2694 \begin_layout Itemize
2695 hscl: number: Horizontal scale factor (integer).
2696 \end_layout
2698 \begin_layout Itemize
2699 vscl: number: Vertical scale factor (integer).
2700  Defaults to the same as <hscl>.
2701 \end_layout
2703 \begin_layout Itemize
2704 ck: number: The color key.
2705  Pixels with this index are not copied.
2706 \end_layout
2708 \begin_deeper
2709 \begin_layout Itemize
2710 If none is specified, all pixels are copied.
2711 \end_layout
2713 \begin_layout Itemize
2714 If <src> is paletted, this is color index, otherwise it is a color.
2715 \end_layout
2717 \end_deeper
2718 \begin_layout Standard
2719 Like DBITMAP:blit, but also scales the copied part of bitmap (using nearest
2720  neighbor) by factor of <hscl>*<vscl>.
2721 \end_layout
2723 \begin_layout Subsubsection
2724 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
2725 \end_layout
2727 \begin_layout Itemize
2728 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
2729 \end_layout
2731 \begin_layout Itemize
2732 Syntax: dest:blit_porterduff(dx, dy, src, srcpal, sx, sy, w, h, operator)
2733 \end_layout
2735 \begin_layout Itemize
2736 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
2737 \end_layout
2739 \begin_layout Standard
2740 Parameters:
2741 \end_layout
2743 \begin_layout Itemize
2744 dest: DBITMAP: The target bitmap to blit to.
2745 \end_layout
2747 \begin_layout Itemize
2748 dx: number: The x-coordinate in target.
2749 \end_layout
2751 \begin_layout Itemize
2752 dy: number: The y-coordinate in target.
2753 \end_layout
2755 \begin_layout Itemize
2756 src: BITMAP/DBITMAP: The source bitmap.
2757 \end_layout
2759 \begin_layout Itemize
2760 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2761 \end_layout
2763 \begin_layout Itemize
2764 sx: number: The x-coordinate in source.
2765 \end_layout
2767 \begin_layout Itemize
2768 sy: number: The y-coordinate in source.
2769 \end_layout
2771 \begin_layout Itemize
2772 w: number: The width of area to blit.
2773 \end_layout
2775 \begin_layout Itemize
2776 h: number: The height of area to blit.
2777 \end_layout
2779 \begin_layout Itemize
2780 operator: string: The operator to use.
2781 \end_layout
2783 \begin_deeper
2784 \begin_layout Itemize
2785 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2786  DestOut, Clear or Xor.
2787 \end_layout
2789 \end_deeper
2790 \begin_layout Standard
2791 Like DBITMAP:blit, but instead of just overwriting, applies specified Porter-Duf
2792 f operator.
2794 \end_layout
2796 \begin_layout Itemize
2797 In target, fully transparent is background.
2798  In source, either fully transparent (if direct) or index 0 (if paletted)
2799  is treated as background.
2800 \end_layout
2802 \begin_layout Subsubsection
2803 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2804  Porter-Duff composition
2805 \end_layout
2807 \begin_layout Itemize
2808 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2809  operator)
2810 \end_layout
2812 \begin_layout Itemize
2813 Syntax: dest:blit_scaled_porterduff(dx, dy, src, srcpal, sx, sy, w, h, hscl,
2814  [vscl], operator)
2815 \end_layout
2817 \begin_layout Itemize
2818 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2819 \end_layout
2821 \begin_layout Standard
2822 Parameters:
2823 \end_layout
2825 \begin_layout Itemize
2826 dest: DBITMAP: The target bitmap to blit to.
2827 \end_layout
2829 \begin_layout Itemize
2830 dx: number: The x-coordinate in target.
2831 \end_layout
2833 \begin_layout Itemize
2834 dy: number: The y-coordinate in target.
2835 \end_layout
2837 \begin_layout Itemize
2838 src: BITMAP/DBITMAP: The source bitmap.
2839 \end_layout
2841 \begin_layout Itemize
2842 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2843 \end_layout
2845 \begin_layout Itemize
2846 sx: number: The x-coordinate in source.
2847 \end_layout
2849 \begin_layout Itemize
2850 sy: number: The y-coordinate in source.
2851 \end_layout
2853 \begin_layout Itemize
2854 w: number: The width of area to blit.
2855 \end_layout
2857 \begin_layout Itemize
2858 h: number: The height of area to blit.
2859 \end_layout
2861 \begin_layout Itemize
2862 hscl: number: Horizontal scale factor (integer).
2863 \end_layout
2865 \begin_layout Itemize
2866 vscl: number: Vertical scale factor (integer).
2867  Defaults to the same as <hscl>.
2868 \end_layout
2870 \begin_layout Itemize
2871 operator: string: The operator to use.
2872 \end_layout
2874 \begin_deeper
2875 \begin_layout Itemize
2876 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2877  DestOut, Clear or Xor.
2878 \end_layout
2880 \end_deeper
2881 \begin_layout Standard
2882 Like DBITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2883  like DBITMAP:blit_scaled.
2884 \end_layout
2886 \begin_layout Subsubsection
2887 Method adjust_transparency: Adjust transparency of bitmap
2888 \end_layout
2890 \begin_layout Itemize
2891 Syntax: bitmap:adjust_transparency(newvalue)
2892 \end_layout
2894 \begin_layout Itemize
2895 Deprecated: gui.adjust_transparency(bitmap, ...)
2896 \end_layout
2898 \begin_layout Standard
2899 Parameters:
2900 \end_layout
2902 \begin_layout Itemize
2903 bitmap: DBITMAP: The bitmap to adjust.
2904 \end_layout
2906 \begin_layout Itemize
2907 Number adj: The factor to multiply opaqueness with times 256.
2908 \end_layout
2910 \begin_layout Standard
2911 Multiply opaqueness of all colors in bitmap <bitmap> by factor of <adj>/256.
2912 \end_layout
2914 \begin_layout Subsubsection
2915 Method save_png: Save a bitmap to PNG
2916 \end_layout
2918 \begin_layout Itemize
2919 Syntax: bitmap:save_png(filename, [base])
2920 \end_layout
2922 \begin_layout Itemize
2923 Syntax: data bitmap:save_png()
2924 \end_layout
2926 \begin_layout Itemize
2927 Deprecated: ...
2928  gui.bitmap_save_png(bitmap, ...)
2929 \end_layout
2931 \begin_layout Standard
2932 Parameters:
2933 \end_layout
2935 \begin_layout Itemize
2936 bitmap: DBITMAP: The bitmap to save.
2937 \end_layout
2939 \begin_layout Itemize
2940 filename: string: The filename to save to.
2941 \end_layout
2943 \begin_layout Itemize
2944 base: string: The base filename is resolved relative to.
2945 \end_layout
2947 \begin_layout Standard
2948 Return value:
2949 \end_layout
2951 \begin_layout Itemize
2952 data: string: BASE64 encoded PNG data.
2953 \end_layout
2955 \begin_layout Standard
2956 Save bitmap <bitmap> into PNG file <filename> (relative to <base>) or return
2957  BASE64 encoding of it.
2958 \end_layout
2960 \begin_layout Subsubsection
2961 Method hash: Hash a bitmap
2962 \end_layout
2964 \begin_layout Itemize
2965 Syntax: hash bitmap:hash()
2966 \end_layout
2968 \begin_layout Itemize
2969 Deprecated: hash bitmap:hash(bitmap)
2970 \end_layout
2972 \begin_layout Standard
2973 Parameters:
2974 \end_layout
2976 \begin_layout Itemize
2977 bitmap: DBITMAP: The bitmap to hash.
2978 \end_layout
2980 \begin_layout Standard
2981 Return value:
2982 \end_layout
2984 \begin_layout Itemize
2985 hash: string: 64-hex digit hash
2986 \end_layout
2988 \begin_layout Standard
2989 Hashes bitmap <bitmap> and returns crypto-strong hash.
2991 \end_layout
2993 \begin_layout Subsection
2994 IMAGELOADER: Load an image
2995 \end_layout
2997 \begin_layout Subsubsection
2998 Static function load: Load a bitmap from file
2999 \end_layout
3001 \begin_layout Itemize
3002 Syntax: bitmap, palette gui.image.load(file, [base])
3003 \end_layout
3005 \begin_layout Itemize
3006 Syntax: bitmap, palette classes.IMAGELOADER.load(file, [base])
3007 \end_layout
3009 \begin_layout Itemize
3010 Deprecated: ...
3011  gui.bitmap_load(...)
3012 \end_layout
3014 \begin_layout Standard
3015 Parameters:
3016 \end_layout
3018 \begin_layout Itemize
3019 file: string: The file to read.
3020 \end_layout
3022 \begin_layout Itemize
3023 base: string: The base to resolve <file> relative to.
3024 \end_layout
3026 \begin_layout Standard
3027 Returns:
3028 \end_layout
3030 \begin_layout Itemize
3031 bitmap: BITMAP/DBITMAP: The new bitmap
3032 \end_layout
3034 \begin_layout Itemize
3035 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3036  nil.
3037 \end_layout
3039 \begin_layout Standard
3040 Load a new bitmap and return it (plus associated palette if any).
3041 \end_layout
3043 \begin_layout Subsubsection
3044 Static function load_str: Load a bitmap from string
3045 \end_layout
3047 \begin_layout Itemize
3048 Syntax: bitmap, palette gui.image.load_str(data)
3049 \end_layout
3051 \begin_layout Itemize
3052 Syntax: bitmap, palette classes.IMAGELOADER.load_str(data)
3053 \end_layout
3055 \begin_layout Itemize
3056 Deprecated: ...
3057  gui.bitmap_load_str(...)
3058 \end_layout
3060 \begin_layout Standard
3061 Parameters:
3062 \end_layout
3064 \begin_layout Itemize
3065 data: string: The image data
3066 \end_layout
3068 \begin_layout Standard
3069 Returns:
3070 \end_layout
3072 \begin_layout Itemize
3073 bitmap: BITMAP/DBITMAP: The new bitmap
3074 \end_layout
3076 \begin_layout Itemize
3077 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3078  nil.
3079 \end_layout
3081 \begin_layout Standard
3082 Like IMAGELOADER:load, but read the bitmap from string <data> instead of
3083  file.
3084 \end_layout
3086 \begin_layout Subsubsection
3087 Static function load_png: Load a bitmap from PNG file
3088 \end_layout
3090 \begin_layout Itemize
3091 Syntax: bitmap, palette gui.image.load_png(file, [base])
3092 \end_layout
3094 \begin_layout Itemize
3095 Syntax: bitmap, palette classes.IMAGELOADER.load_png(file, [base])
3096 \end_layout
3098 \begin_layout Itemize
3099 Deprecated: ...
3100  gui.bitmap_load_png(...)
3101 \end_layout
3103 \begin_layout Standard
3104 Parameters:
3105 \end_layout
3107 \begin_layout Itemize
3108 file: string: The file to read.
3109 \end_layout
3111 \begin_layout Itemize
3112 base: string: The base to resolve <file> relative to.
3113 \end_layout
3115 \begin_layout Standard
3116 Returns:
3117 \end_layout
3119 \begin_layout Itemize
3120 bitmap: BITMAP/DBITMAP: The new bitmap
3121 \end_layout
3123 \begin_layout Itemize
3124 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3125  nil.
3126 \end_layout
3128 \begin_layout Standard
3129 Like IMAGELOADER:load, but load a PNG file instead.
3130 \end_layout
3132 \begin_layout Subsubsection
3133 Static function load_png_str: Load a PNG bitmap from string
3134 \end_layout
3136 \begin_layout Itemize
3137 Syntax: bitmap, palette gui.image.load_png_str(data)
3138 \end_layout
3140 \begin_layout Itemize
3141 Syntax: bitmap, palette classes.IMAGELOADER.load_png_str(data)
3142 \end_layout
3144 \begin_layout Itemize
3145 Deprecated: ...
3146  gui.bitmap_load_png_str(...)
3147 \end_layout
3149 \begin_layout Standard
3150 Parameters:
3151 \end_layout
3153 \begin_layout Itemize
3154 data: string: The image data, base64 encoded.
3155 \end_layout
3157 \begin_layout Standard
3158 Returns:
3159 \end_layout
3161 \begin_layout Itemize
3162 bitmap: BITMAP/DBITMAP: The new bitmap
3163 \end_layout
3165 \begin_layout Itemize
3166 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3167  nil.
3168 \end_layout
3170 \begin_layout Standard
3171 Like IMAGELOADER:load_png, but read the bitmap from BASE64 encoded string
3172  <data> instead of file.
3173 \end_layout
3175 \begin_layout Standard
3176 \begin_inset Newpage pagebreak
3177 \end_inset
3180 \end_layout
3182 \begin_layout Subsection
3183 CUSTOMFONT: Arbitrary-sized bitmap font
3184 \end_layout
3186 \begin_layout Subsubsection
3187 Static function new: Return a new empty font
3188 \end_layout
3190 \begin_layout Itemize
3191 Syntax: font gui.font.new()
3192 \end_layout
3194 \begin_layout Itemize
3195 Syntax: font classes.CUSTOMFONT.new()
3196 \end_layout
3198 \begin_layout Itemize
3199 Deprecated: font gui.font_new()
3200 \end_layout
3202 \begin_layout Standard
3203 Return value:
3204 \end_layout
3206 \begin_layout Itemize
3207 font: CUSTOMFONT: New font.
3208 \end_layout
3210 \begin_layout Standard
3211 Create a new font with no characters and return it.
3212 \end_layout
3214 \begin_layout Subsubsection
3215 Static function: load: Load a font file
3216 \end_layout
3218 \begin_layout Itemize
3219 Syntax: font gui.font.load(file, [base])
3220 \end_layout
3222 \begin_layout Itemize
3223 Syntax: font gui.font.load()
3224 \end_layout
3226 \begin_layout Itemize
3227 Syntax: font classes.CUSTOMFONT.load(file, [base])
3228 \end_layout
3230 \begin_layout Itemize
3231 Syntax: font classes.CUSTOMFONT.load()
3232 \end_layout
3234 \begin_layout Itemize
3235 Deprecated: font gui.loadfont(...)
3236 \end_layout
3238 \begin_layout Standard
3239 Parameters:
3240 \end_layout
3242 \begin_layout Itemize
3243 file: string: The file to read the font from
3244 \end_layout
3246 \begin_layout Itemize
3247 base: string: The file to resolve <file> relative to.
3248 \end_layout
3250 \begin_layout Standard
3251 Return value:
3252 \end_layout
3254 \begin_layout Itemize
3255 font: CUSTOMFONT: New font.
3256 \end_layout
3258 \begin_layout Standard
3259 Load font from file <file> (relative to <base>).
3260  If no filename is given, system default font is loaded.
3261 \end_layout
3263 \begin_layout Subsubsection
3264 operator(): Render text to screen
3265 \end_layout
3267 \begin_layout Itemize
3268 Syntax: font(x, y, text, [fgc], [bgc], [hlc])
3269 \end_layout
3271 \begin_layout Standard
3272 Parmeters:
3273 \end_layout
3275 \begin_layout Itemize
3276 font: CUSTOMFONT: The font to use.
3277 \end_layout
3279 \begin_layout Itemize
3280 x: number: The x-position on screen to draw to.
3281 \end_layout
3283 \begin_layout Itemize
3284 y: number: The y-position on screen to draw to.
3285 \end_layout
3287 \begin_layout Itemize
3288 text: string: The text to draw.
3289 \end_layout
3291 \begin_layout Itemize
3292 fgc: number/string: Foreground color (default white).
3293 \end_layout
3295 \begin_layout Itemize
3296 bgc: number/string: Background color (default transparent).
3297 \end_layout
3299 \begin_layout Itemize
3300 hlc: number/string: Outline color (default transparent).
3301 \end_layout
3303 \begin_layout Standard
3304 Draws a string <text> with specified font <font> and colors <fgc>,<bgc>,<hlc>
3305  onto screen.
3306 \end_layout
3308 \begin_layout Itemize
3309 If <hlc> is transparent, no outline is drawn.
3310 \end_layout
3312 \begin_layout Subsubsection
3313 Method edit: Alter glyph in font
3314 \end_layout
3316 \begin_layout Itemize
3317 Syntax: font:edit(character, glyph)
3318 \end_layout
3320 \begin_layout Standard
3321 Parameters:
3322 \end_layout
3324 \begin_layout Itemize
3325 font: CUSTOMFONT: The font to edit.
3326 \end_layout
3328 \begin_layout Itemize
3329 character: string: The character to edit (UTF-8 encoded).
3330 \end_layout
3332 \begin_layout Itemize
3333 glyph: BITMAP: The bitmap to use.
3334 \end_layout
3336 \begin_layout Standard
3337 Replace character <character> in font <font> by <glyph>.
3338 \end_layout
3340 \begin_layout Itemize
3341 Color index 0 is background, everything else is foreground.
3342 \end_layout
3344 \begin_layout Itemize
3345 <character> may be empty string, meaning the replacement character used
3346  for bad characters.
3347 \end_layout
3349 \begin_layout Itemize
3350 <character> may be multi-codepoint string, meaning character used for that
3351  ligature.
3352 \end_layout
3354 \begin_layout Standard
3355 \begin_inset Newpage pagebreak
3356 \end_inset
3359 \end_layout
3361 \begin_layout Subsection
3362 ICONV: Character set conversions
3363 \end_layout
3365 \begin_layout Subsubsection
3366 Static function new: Create new character set converter
3367 \end_layout
3369 \begin_layout Itemize
3370 Syntax: iconv iconv.new(from, to);
3371 \end_layout
3373 \begin_layout Itemize
3374 Syntax: iconv classes.ICONV.new(from, to);
3375 \end_layout
3377 \begin_layout Itemize
3378 Deprecated: iconv iconv_new(...);
3379 \end_layout
3381 \begin_layout Standard
3382 Parameters:
3383 \end_layout
3385 \begin_layout Itemize
3386 from: string: The source character set.
3387 \end_layout
3389 \begin_layout Itemize
3390 to: string: The target character set.
3391 \end_layout
3393 \begin_layout Standard
3394 Returns:
3395 \end_layout
3397 \begin_layout Itemize
3398 iconv: ICONV: The converter.
3399 \end_layout
3401 \begin_layout Standard
3402 Create a character set converter, converting from <from> to <to> and return
3403  it.
3404 \end_layout
3406 \begin_layout Subsubsection
3407 Operator(): Convert string fragment from character set to another
3408 \end_layout
3410 \begin_layout Itemize
3411 Syntax: success, result, unconverted, error iconv(input)
3412 \end_layout
3414 \begin_layout Standard
3415 Parameters:
3416 \end_layout
3418 \begin_layout Itemize
3419 iconv: ICONV: The context to use.
3420 \end_layout
3422 \begin_layout Itemize
3423 input: string: The input to convert.
3424 \end_layout
3426 \begin_layout Standard
3427 Return value:
3428 \end_layout
3430 \begin_layout Itemize
3431 success: boolean: True if conversion was successful, false if not.
3432 \end_layout
3434 \begin_layout Itemize
3435 result: string: The string (partially) converted.
3436 \end_layout
3438 \begin_layout Itemize
3439 unconvered: number: Number of bytes that were not converted (only if <success>
3440  is false).
3441 \end_layout
3443 \begin_layout Itemize
3444 error: string: Error that caused conversion to stop (only if <success> is
3445  false).
3446 \end_layout
3448 \begin_deeper
3449 \begin_layout Itemize
3450 INVALID: The input string is invalid.
3451 \end_layout
3453 \begin_layout Itemize
3454 INCOMPLETE: The input string cuts off in middle of character.
3455 \end_layout
3457 \begin_layout Itemize
3458 INTERNALERR: Internal error.
3459 \end_layout
3461 \end_deeper
3462 \begin_layout Standard
3463 Convert a string <input> using character set converter <iconv> and return
3464  the result.
3465 \end_layout
3467 \begin_layout Standard
3468 \begin_inset Newpage pagebreak
3469 \end_inset
3472 \end_layout
3474 \begin_layout Subsection
3475 FILEREADER: Read a file as a stream
3476 \end_layout
3478 \begin_layout Subsubsection
3479 Static function open: Open a stream
3480 \end_layout
3482 \begin_layout Itemize
3483 Syntax: handle filereader.open(file, [base])
3484 \end_layout
3486 \begin_layout Itemize
3487 Syntax: handle classes.FILEREADER.open(file, [base])
3488 \end_layout
3490 \begin_layout Itemize
3491 Deprecated: handle open_file(file, [base])
3492 \end_layout
3494 \begin_layout Standard
3495 Parameters:
3496 \end_layout
3498 \begin_layout Itemize
3499 file: string: The filename to read.
3500 \end_layout
3502 \begin_layout Itemize
3503 base: string: The base <file> is resolved against.
3504 \end_layout
3506 \begin_layout Standard
3507 Returns:
3508 \end_layout
3510 \begin_layout Itemize
3511 handle: FILEREADER: The new file reader.
3512 \end_layout
3514 \begin_layout Standard
3515 Open file <file> (relative to <base>) and return a handle to it.
3516 \end_layout
3518 \begin_layout Subsubsection
3519 operator(): Read line/bytes from stream
3520 \end_layout
3522 \begin_layout Itemize
3523 Syntax: result handle()
3524 \end_layout
3526 \begin_layout Itemize
3527 Syntax: result handle(bytes)
3528 \end_layout
3530 \begin_layout Standard
3531 Parameters:
3532 \end_layout
3534 \begin_layout Itemize
3535 handle: FILEREADER: The handle to read from.
3536 \end_layout
3538 \begin_layout Itemize
3539 bytes: Number of bytes to read (default is next line).
3540 \end_layout
3542 \begin_layout Standard
3543 Returns:
3544 \end_layout
3546 \begin_layout Itemize
3547 result: string: The read data, or nil on end-of-file.
3548 \end_layout
3550 \begin_layout Standard
3551 Reads next line or <bytes> bytes from specified file handle <handle>.
3552 \end_layout
3554 \begin_layout Itemize
3555 If reading specified number of bytes, the bytes are read in binary mode
3556  (as-is).
3557 \end_layout
3559 \begin_layout Itemize
3560 If reading next line, the line is read in text mode (any line ending is
3561  skpped).
3562 \end_layout
3564 \begin_layout Subsubsection
3565 Method lines: Iterator to read all lines
3566 \end_layout
3568 \begin_layout Itemize
3569 Syntax: for line in handle:lines() do ...
3570  end
3571 \end_layout
3573 \begin_layout Standard
3574 Parameters:
3575 \end_layout
3577 \begin_layout Itemize
3578 handle: FILEREADER: The handle to read.
3579 \end_layout
3581 \begin_layout Standard
3582 Returns:
3583 \end_layout
3585 \begin_layout Itemize
3586 A lua iterator with one variable.
3587 \end_layout
3589 \begin_layout Standard
3590 Return a Lua iterator that iterates all the lines in <handle>.
3591 \end_layout
3593 \begin_layout Standard
3594 \begin_inset Newpage pagebreak
3595 \end_inset
3598 \end_layout
3600 \begin_layout Subsection
3601 COMPARE_OBJ: Watch memory area for changes
3602 \end_layout
3604 \begin_layout Standard
3605 Objects of this class allow fast checking for modifications to given memory
3606  block.
3607 \end_layout
3609 \begin_layout Subsubsection
3610 Static function new: Create a checker
3611 \end_layout
3613 \begin_layout Itemize
3614 Syntax: handle classes.COMPARE_OBJ.new({marea, offset|addrobj}, size, [rows,
3615  stride])
3616 \end_layout
3618 \begin_layout Itemize
3619 Syntax: handle memory.compare_new({marea, offset|addrobj}, size, rows, stride)
3620 \end_layout
3622 \begin_layout Standard
3623 Parameters:
3624 \end_layout
3626 \begin_layout Itemize
3627 marea: string: The memory area to interpret <offset> against.
3628 \end_layout
3630 \begin_layout Itemize
3631 offset: number: The initial offset in memory area.
3632 \end_layout
3634 \begin_layout Itemize
3635 addrobj: ADDRESS: The memory address.
3636 \end_layout
3638 \begin_layout Itemize
3639 size: number: The number of bytes in each row.
3640 \end_layout
3642 \begin_layout Itemize
3643 rows: number: The number of rows.
3644  Default is 1.
3645 \end_layout
3647 \begin_layout Itemize
3648 stride: number: The number of bytes offset increments from one row to next.
3649 \end_layout
3651 \begin_layout Standard
3652 Returns:
3653 \end_layout
3655 \begin_layout Itemize
3656 A handle to object.
3657 \end_layout
3659 \begin_layout Standard
3660 Return an object watching specified memory area.
3661 \end_layout
3663 \begin_layout Itemize
3664 Note: For fastest operation, limit checks to inside one memory area (that
3665  has to be mappable, individual RAM areas often are).
3666 \end_layout
3668 \begin_layout Subsubsection
3669 operator(): Check area for modifications
3670 \end_layout
3672 \begin_layout Itemize
3673 Syntax: boolean handle()
3674 \end_layout
3676 \begin_layout Standard
3677 Returns:
3678 \end_layout
3680 \begin_layout Itemize
3681 True if memory block has been modified since last call (or object creation
3682  if first call), false if not.
3683 \end_layout
3685 \begin_layout Standard
3686 Check if the block has been modified.
3687 \end_layout
3689 \begin_layout Subsection
3690 ADDRESS: Memory address
3691 \end_layout
3693 \begin_layout Standard
3694 Objects of this class contain a memory address.
3695 \end_layout
3697 \begin_layout Subsubsection
3698 Static function new: Create new memory address
3699 \end_layout
3701 \begin_layout Itemize
3702 Syntax: ADDRESS classes.ADDRESS.new(string marea, number offset)
3703 \end_layout
3705 \begin_layout Itemize
3706 Syntax: ADDRESS memory.address.new(string marea, number offset)
3707 \end_layout
3709 \begin_layout Itemize
3710 Syntax: ADDRESS memory.mkaddr(string marea, number offset)
3711 \end_layout
3713 \begin_layout Standard
3714 Parameters:
3715 \end_layout
3717 \begin_layout Itemize
3718 marea: The memory area
3719 \end_layout
3721 \begin_layout Itemize
3722 offset: The offset in memory area.
3723 \end_layout
3725 \begin_layout Standard
3726 Returns:
3727 \end_layout
3729 \begin_layout Itemize
3730 The memory area.
3731 \end_layout
3733 \begin_layout Standard
3734 Construct a new memory address object.
3735 \end_layout
3737 \begin_layout Subsubsection
3738 Method: addr: Get global address
3739 \end_layout
3741 \begin_layout Itemize
3742 Syntax: number addr:addr()
3743 \end_layout
3745 \begin_layout Standard
3746 Parameters:
3747 \end_layout
3749 \begin_layout Itemize
3750 addr: ADRESS: The original address.
3751 \end_layout
3753 \begin_layout Standard
3754 Returns:
3755 \end_layout
3757 \begin_layout Itemize
3758 The global address corresponding to this address.
3759 \end_layout
3761 \begin_layout Subsubsection
3762 Method: vma: Get memory area
3763 \end_layout
3765 \begin_layout Itemize
3766 Syntax: string addr:vma()
3767 \end_layout
3769 \begin_layout Standard
3770 Parameters:
3771 \end_layout
3773 \begin_layout Itemize
3774 addr: ADRESS: The original address.
3775 \end_layout
3777 \begin_layout Standard
3778 Returns:
3779 \end_layout
3781 \begin_layout Itemize
3782 The memory area corresponding to this address.
3783 \end_layout
3785 \begin_layout Subsubsection
3786 Method: offset: Get memory area offset
3787 \end_layout
3789 \begin_layout Itemize
3790 Syntax: string addr:offset()
3791 \end_layout
3793 \begin_layout Standard
3794 Parameters:
3795 \end_layout
3797 \begin_layout Itemize
3798 addr: ADRESS: The original address.
3799 \end_layout
3801 \begin_layout Standard
3802 Returns:
3803 \end_layout
3805 \begin_layout Itemize
3806 The offset in memory area corresponding to this address.
3807 \end_layout
3809 \begin_layout Subsubsection
3810 Method: replace: Replace address part
3811 \end_layout
3813 \begin_layout Itemize
3814 Syntax: ADDRESS addr:replace(offset[, bits])
3815 \end_layout
3817 \begin_layout Standard
3818 Parameters:
3819 \end_layout
3821 \begin_layout Itemize
3822 addr: ADRESS: The original address.
3823 \end_layout
3825 \begin_layout Itemize
3826 offset: number: The new offset
3827 \end_layout
3829 \begin_layout Itemize
3830 bits: number: The number of LSB to replace.
3831 \end_layout
3833 \begin_layout Standard
3834 Returns:
3835 \end_layout
3837 \begin_layout Itemize
3838 The modified address
3839 \end_layout
3841 \begin_layout Standard
3842 Returns a new address, with <bits> (all if missing) least significant bits
3843  of <addr> replaced by LSB of <offset>.
3844 \end_layout
3846 \begin_layout Subsubsection
3847 Method: add: Add to address
3848 \end_layout
3850 \begin_layout Itemize
3851 Syntax: ADDRESS addr:add(offset)
3852 \end_layout
3854 \begin_layout Itemize
3855 Syntax: ADDRESS addr:add(number, stride)
3856 \end_layout
3858 \begin_layout Itemize
3859 Syntax: ADDRESS addr:add(number, stride, offset)
3860 \end_layout
3862 \begin_layout Standard
3863 Parameters:
3864 \end_layout
3866 \begin_layout Itemize
3867 addr: ADRESS: The original address.
3868 \end_layout
3870 \begin_layout Itemize
3871 offset: number: Offset to add.
3872 \end_layout
3874 \begin_layout Itemize
3875 number: number: Number of table strides to add.
3876 \end_layout
3878 \begin_layout Itemize
3879 stride: number: The table stride.
3880 \end_layout
3882 \begin_layout Standard
3883 Returns:
3884 \end_layout
3886 \begin_layout Itemize
3887 The modified address
3888 \end_layout
3890 \begin_layout Standard
3891 Adds <offset>, <number>*<stride> or <number>*<stride>+<offset> into specified
3892  address <addr>.
3893 \end_layout
3895 \begin_layout Subsection
3896 ADDRESS:<op>: Read/Write memory
3897 \end_layout
3899 \begin_layout Itemize
3900 Syntax: none addr:<op>(value)
3901 \end_layout
3903 \begin_layout Itemize
3904 Syntax: number addr:<op>()
3905 \end_layout
3907 \begin_layout Standard
3908 Parameters:
3909 \end_layout
3911 \begin_layout Itemize
3912 addr: ADDRESS: The address to read/write.
3913 \end_layout
3915 \begin_layout Itemize
3916 value: number: The number to write.
3917 \end_layout
3919 \begin_layout Standard
3920 Returns:
3921 \end_layout
3923 \begin_layout Itemize
3924 The value read.
3925 \end_layout
3927 \begin_layout Standard
3928 Read/Write value from/to given address <addr>.
3929  The value written is <value>.
3930  <Op> is of form: [i][s]<type>, where:
3931 \end_layout
3933 \begin_layout Itemize
3934 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
3935 \end_layout
3937 \begin_layout Itemize
3938 'i' signifies that the value is treated as opposite-to-normal endianess,
3939 \end_layout
3941 \begin_layout Itemize
3942 's' signifies that value is treated as signed (not available for floating-point).
3943 \end_layout
3945 \begin_layout Standard
3946 \begin_inset Newpage pagebreak
3947 \end_inset
3950 \end_layout
3952 \begin_layout Section
3953 Global
3954 \end_layout
3956 \begin_layout Subsection
3957 print: Print values to console
3958 \end_layout
3960 \begin_layout Itemize
3961 Syntax: none print(value...
3962  values)
3963 \end_layout
3965 \begin_layout Standard
3966 Prints specified values to console.
3967  Can print any Lua type at least enough to identify the type and instance.
3968 \end_layout
3970 \begin_layout Subsection
3971 tostringx: Format a value to string
3972 \end_layout
3974 \begin_layout Itemize
3975 Syntax: string tostringx(value val)
3976 \end_layout
3978 \begin_layout Standard
3979 Formats value <val> like print would, and returns the result as a string.
3980 \end_layout
3982 \begin_layout Subsection
3983 exec: Execute lsnes commands
3984 \end_layout
3986 \begin_layout Itemize
3987 Syntax: none exec(string cmd)
3988 \end_layout
3990 \begin_layout Standard
3991 Execute lsnes command <cmd>.
3992 \end_layout
3994 \begin_layout Subsection
3995 utime: Get current time
3996 \end_layout
3998 \begin_layout Itemize
3999 Syntax: (number,number) utime()
4000 \end_layout
4002 \begin_layout Standard
4003 Returns two numbers.
4004  First is time since some epoch in seconds, the second is microseconds mod
4005  10^6 since that epoch.
4006 \end_layout
4008 \begin_layout Subsection
4009 set_idle_timeout: Run function after timeout when emulator is idle
4010 \end_layout
4012 \begin_layout Itemize
4013 Syntax: none set_idle_timeout(number timeout)
4014 \end_layout
4016 \begin_layout Standard
4017 Set number of microseconds to block idle for.
4018  After this timeout has expired, on_idle() will be called once.
4019 \end_layout
4021 \begin_layout Subsection
4022 set_timer_timeout: Run function after timeout.
4023 \end_layout
4025 \begin_layout Itemize
4026 Syntax: none set_timer_timeout(number timeout)
4027 \end_layout
4029 \begin_layout Standard
4030 Set number of microseconds to block timer for.
4031  After this timeout has expired, on_timer() will be called once.
4032 \end_layout
4034 \begin_layout Subsection
4035 bus_address: Look up address in system bus.
4036 \end_layout
4038 \begin_layout Itemize
4039 Syntax: none bus_address(number bus_addr)
4040 \end_layout
4042 \begin_layout Standard
4043 Returns virtual address corresponding to specified address on system bus.
4044 \end_layout
4046 \begin_layout Subsection
4047 loopwrapper: Convert loop into callable function
4048 \end_layout
4050 \begin_layout Itemize
4051 Syntax: function loopwrapper(function fun, ...)
4052 \end_layout
4054 \begin_layout Standard
4055 Calls function <fun> with function and specified arguments.
4056  The function passed suspends execution until the function returned is called.
4057  Handy for linear flow control among multiple invocations of a hook.
4058  Example code:
4059 \end_layout
4061 \begin_layout LyX-Code
4062 on_paint = loopwrapper(function(wait)
4063 \end_layout
4065 \begin_deeper
4066 \begin_layout LyX-Code
4067 while true do
4068 \end_layout
4070 \begin_deeper
4071 \begin_layout LyX-Code
4072 gui.text(0, 0, 
4073 \begin_inset Quotes eld
4074 \end_inset
4076 Test!
4077 \begin_inset Quotes erd
4078 \end_inset
4081 \end_layout
4083 \begin_layout LyX-Code
4084 wait();
4085 \end_layout
4087 \end_deeper
4088 \begin_layout LyX-Code
4090 \end_layout
4092 \end_deeper
4093 \begin_layout LyX-Code
4094 end);
4095 \end_layout
4097 \begin_layout Subsection
4098 list_bindings: List keybindings
4099 \end_layout
4101 \begin_layout Itemize
4102 Syntax: table list_bindings([string cmd])
4103 \end_layout
4105 \begin_layout Standard
4106 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
4107  If <cmd> is specified, the table is limited to that command.
4108  Also searches for controller keys.
4109 \end_layout
4111 \begin_layout Subsection
4112 get_alias: Get expansion of alias
4113 \end_layout
4115 \begin_layout Itemize
4116 Syntax: string get_alias(string aname)
4117 \end_layout
4119 \begin_layout Standard
4120 Get expansion of given alias <aname>.
4121 \end_layout
4123 \begin_layout Subsection
4124 set_alias: Set expansion of alias
4125 \end_layout
4127 \begin_layout Itemize
4128 Syntax: none set_alias(string aname, string value)
4129 \end_layout
4131 \begin_layout Standard
4132 Set expansion of given alias.
4133 \end_layout
4135 \begin_layout Subsection
4136 create_ibind: Create invese binding
4137 \end_layout
4139 \begin_layout Itemize
4140 Syntax: INVERSEBIND create_ibind(string name, string cmd)
4141 \end_layout
4143 \begin_layout Standard
4144 Return object representing inverse binding with specified name <name> and
4145  specified command <cmd>.
4146 \end_layout
4148 \begin_layout Itemize
4149 Note: To create press/release commands, use aliases +foo and -foo .
4150 \end_layout
4152 \begin_layout Itemize
4153 Note: Keep the returned object around.
4154 \end_layout
4156 \begin_layout Subsection
4157 create_command: Create a command
4158 \end_layout
4160 \begin_layout Itemize
4161 Syntax: COMMANDBIND create_commmand(string name, function a)
4162 \end_layout
4164 \begin_layout Itemize
4165 Syntax: COMMANDBIND create_commmand(string name, function a, function b)
4166 \end_layout
4168 \begin_layout Standard
4169 Return object representing a command (pair).
4170 \end_layout
4172 \begin_layout Itemize
4173 If only one function is specied, the command is level-sensitive, <a> is
4174  callback.
4175 \end_layout
4177 \begin_layout Itemize
4178 If <b> is function, the function is edge-sensitive, <a> is positive edge
4179  callback and <b> is negative edge callback.
4180 \end_layout
4182 \begin_layout Itemize
4183 All callbacks get single argument: The parameters passed.
4184 \end_layout
4186 \begin_layout Itemize
4187 Keep the returned object around.
4188 \end_layout
4190 \begin_layout Subsection
4191 loadfile: Load Lua script
4192 \end_layout
4194 \begin_layout Itemize
4195 Syntax: function loadfile(string filename[, string base])
4196 \end_layout
4198 \begin_layout Standard
4199 Load lua script from <filename>, resolved relative to <base> (if empty,
4200  current directory).
4201 \end_layout
4203 \begin_layout Subsection
4204 dofile: Execute Lua script
4205 \end_layout
4207 \begin_layout Itemize
4208 Syntax: function dofile(string filename[, string base])
4209 \end_layout
4211 \begin_layout Standard
4212 Execute lua script from <filename>, resolved relative to <base> (if empty,
4213  current directory) and return all return values.
4214 \end_layout
4216 \begin_layout Subsection
4217 resolve_filename: Resolve name of file relative to another
4218 \end_layout
4220 \begin_layout Itemize
4221 Syntax: string resolve_file(string filename, string base)
4222 \end_layout
4224 \begin_layout Standard
4225 Resolve name of file <filename> relative to <base> and return the result.
4226 \end_layout
4228 \begin_layout Subsection
4229 render_queue_function: Return paint function for render queue
4230 \end_layout
4232 \begin_layout Itemize
4233 Syntax: function render_queue_function(RENDERQUEUE rq)
4234 \end_layout
4236 \begin_layout Standard
4237 Return function that renders render queue <rq>.
4238 \end_layout
4240 \begin_layout Itemize
4241 Handy for paint callback if one is using render queues updated in other
4242  callbacks.
4243  As in:
4244 \end_layout
4246 \begin_layout LyX-Code
4247 handle = callback.paint:register(render_queue_function(my_rq));
4248 \end_layout
4250 \begin_layout Subsection
4251 identify_class: Identify class of object
4252 \end_layout
4254 \begin_layout Itemize
4255 Syntax: string identify_class(userdata object)
4256 \end_layout
4258 \begin_layout Standard
4259 Identifies the class of userdata <object>, if possible.
4260  If no identification is possible, returns 
4261 \begin_inset Quotes eld
4262 \end_inset
4264 unknown
4265 \begin_inset Quotes erd
4266 \end_inset
4269 \end_layout
4271 \begin_layout Subsection
4272 lookup_class: Lookup class by name
4273 \end_layout
4275 \begin_layout Itemize
4276 Syntax: classobj lookup_class(string name)
4277 \end_layout
4279 \begin_layout Standard
4280 Looks up class corresponding to <name>, if possible.
4281  If not found, returns nil.
4282  The classobj has following fields:
4283 \end_layout
4285 \begin_layout Itemize
4286 _static_methods: Return static method names
4287 \end_layout
4289 \begin_layout Itemize
4290 _class_methods: Return class method names
4291 \end_layout
4293 \begin_layout Itemize
4294 <static-function-name>: The specified static function.
4295 \end_layout
4297 \begin_layout Subsection
4298 all_classes: Get list of all classes
4299 \end_layout
4301 \begin_layout Itemize
4302 Syntax: string...
4303  all_classes()
4304 \end_layout
4306 \begin_layout Standard
4307 Get names of all classes available.
4308 \end_layout
4310 \begin_layout Subsection
4312 \end_layout
4314 \begin_layout Subsection
4315 icnov: Class ICONV
4316 \end_layout
4318 \begin_layout Standard
4319 See class ICONV.
4320 \end_layout
4322 \begin_layout Subsection
4323 filereader: Class FILEREADER
4324 \end_layout
4326 \begin_layout Standard
4327 See class FILEREADER.
4328 \end_layout
4330 \begin_layout Standard
4331 \begin_inset Newpage pagebreak
4332 \end_inset
4335 \end_layout
4337 \begin_layout Section
4338 Table bit:
4339 \end_layout
4341 \begin_layout Standard
4342 Bitwise logical functions and related.
4343 \end_layout
4345 \begin_layout Subsection
4346 bit.none/bit.bnot: Bitwise none or NOT function
4347 \end_layout
4349 \begin_layout Itemize
4350 Syntax: number bit.none(number...)
4351 \end_layout
4353 \begin_layout Itemize
4354 Syntax: number bit.bnot(number...)
4355 \end_layout
4357 \begin_layout Standard
4358 48-bit bitwise NOT / NONE function (set bits that are set in none of the
4359  arguments).
4360 \end_layout
4362 \begin_layout Subsection
4363 bit.any/bit.bor: Bitwise any or OR function
4364 \end_layout
4366 \begin_layout Itemize
4367 Syntax: number bit.any(number...)
4368 \end_layout
4370 \begin_layout Itemize
4371 Syntax: number bit.bor(number...)
4372 \end_layout
4374 \begin_layout Standard
4375 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
4376 \end_layout
4378 \begin_layout Subsection
4379 bit.all/bit.band: Bitwise all or AND function
4380 \end_layout
4382 \begin_layout Itemize
4383 Syntax: number bit.all(number...)
4384 \end_layout
4386 \begin_layout Itemize
4387 Syntax: number bit.band(number...)
4388 \end_layout
4390 \begin_layout Standard
4391 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
4393 \end_layout
4395 \begin_layout Subsection
4396 bit.parity/bit.bxor: Bitwise parity or XOR function
4397 \end_layout
4399 \begin_layout Itemize
4400 Syntax: number bit.parity(number...)
4401 \end_layout
4403 \begin_layout Itemize
4404 Syntax: number bit.bxor(number...)
4405 \end_layout
4407 \begin_layout Standard
4408 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
4409  of the arguments).
4410 \end_layout
4412 \begin_layout Subsection
4413 bit.lrotate: Rotate a number left
4414 \end_layout
4416 \begin_layout Itemize
4417 Syntax: number bit.lrotate(number base[, number amount[, number bits]])
4418 \end_layout
4420 \begin_layout Standard
4421 Rotate <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4422  1) places.
4423 \end_layout
4425 \begin_layout Subsection
4426 bit.rrotate: Rotate a number right
4427 \end_layout
4429 \begin_layout Itemize
4430 Syntax: number bit.rrotate(number base[, number amount[, number bits]])
4431 \end_layout
4433 \begin_layout Standard
4434 Rotate <bits>-bit (max 48, default 48) number <base> right by <amount> (default
4435  1) places.
4436 \end_layout
4438 \begin_layout Subsection
4439 bit.lshift: Shift a number left
4440 \end_layout
4442 \begin_layout Itemize
4443 Syntax: number bit.lshift(number base[, number amount[, number bits]])
4444 \end_layout
4446 \begin_layout Standard
4447 Shift <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4448  1) places.
4449  The new bits are filled with zeroes.
4450 \end_layout
4452 \begin_layout Subsection
4453 bit.lrshift: Shift a number right (logical)
4454 \end_layout
4456 \begin_layout Itemize
4457 Syntax: number bit.lrshift(number base[, number amount[, number bits]])
4458 \end_layout
4460 \begin_layout Standard
4461 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4462  (default 1) places.
4463  The new bits are filled with zeroes.
4464 \end_layout
4466 \begin_layout Subsection
4467 bit.arshift: Shift a number right (arithmetic)
4468 \end_layout
4470 \begin_layout Itemize
4471 Syntax: number bit.arshift(number base[, number amount[, number bits]])
4472 \end_layout
4474 \begin_layout Standard
4475 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4476  (default 1) places.
4477  The new bits are shifted in with copy of the high bit.
4478 \end_layout
4480 \begin_layout Subsection
4481 bit.extract: Extract/shuffle bits from number
4482 \end_layout
4484 \begin_layout Itemize
4485 Syntax: number bit.extract(number base[, number bit0[, number bit1,...]])
4486 \end_layout
4488 \begin_layout Standard
4489 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
4490 \end_layout
4492 \begin_layout Itemize
4493 Note: Bit numbers up to 51 should work reliably (then things start falling
4494  apart due to double precision issues).
4495 \end_layout
4497 \begin_layout Itemize
4498 Note: There are two special bit positions, true and false, standing for
4499  always set bit and always clear bit.
4500 \end_layout
4502 \begin_layout Subsection
4503 bit.value: Construct number with specified bits set
4504 \end_layout
4506 \begin_layout Itemize
4507 Syntax: number bit.value([number bit1[, number bit2,...]])
4508 \end_layout
4510 \begin_layout Standard
4511 Returns bitwise OR of 1 left shifted by <bit1> places, 1 left shifted by
4512  <bit2> places and so on.
4513  As special value, nil argument is no-op.
4514 \end_layout
4516 \begin_layout Subsection
4517 bit.test: Test if bit is set
4518 \end_layout
4520 \begin_layout Itemize
4521 Syntax: boolean bit.test(number a, number bit)
4522 \end_layout
4524 \begin_layout Standard
4525 Tests if bit <bit> is set in <a>.
4526  If it is set, returns true, otherwise false.
4527 \end_layout
4529 \begin_layout Subsection
4530 bit.testn: Test if bit is clear
4531 \end_layout
4533 \begin_layout Itemize
4534 Syntax: boolean bit.testn(number a, number bit)
4535 \end_layout
4537 \begin_layout Standard
4538 Tests if bit <bit> is set in <a>.
4539  If it is clear, returns true, otherwise false.
4540 \end_layout
4542 \begin_layout Subsection
4543 bit.test_any: Test if any bit is set
4544 \end_layout
4546 \begin_layout Itemize
4547 Syntax: boolean bit.test_any(number a, number b)
4548 \end_layout
4550 \begin_layout Standard
4551 Returns true if bitwise and of <a> and <b> is nonzero, otherwise false.
4552 \end_layout
4554 \begin_layout Subsection
4555 bit.test_all: Test if all bits are set
4556 \end_layout
4558 \begin_layout Itemize
4559 Syntax: boolean bit.test_all(number a, number b)
4560 \end_layout
4562 \begin_layout Standard
4563 Returns true if bitwise and of <a> and <b> equals <b>, otherwise false.
4564 \end_layout
4566 \begin_layout Subsection
4567 bit.popcount: Population count
4568 \end_layout
4570 \begin_layout Itemize
4571 Syntax: number bit.popcount(number a)
4572 \end_layout
4574 \begin_layout Standard
4575 Returns number of set bits in <a>.
4576 \end_layout
4578 \begin_layout Subsection
4579 bit.clshift: Chained left shift
4580 \end_layout
4582 \begin_layout Itemize
4583 Syntax: (number, number) bit.clshift(number a, number b, [number amount,[number
4584  bits]])
4585 \end_layout
4587 \begin_layout Standard
4588 Does chained left shift on <a>, <b> by <amount> positions (default 1), assuming
4589  numbers to be of specified number of bits <bits> (default 48).
4590 \end_layout
4592 \begin_layout Subsection
4593 bit.crshift: Chained right shift
4594 \end_layout
4596 \begin_layout Itemize
4597 Syntax: (number, number) bit.crshift(number a, number b, [number amount,[number
4598  bits]])
4599 \end_layout
4601 \begin_layout Standard
4602 Does chained right shift on <a>, <b> by <amount> positions (default 1),
4603  assuming numbers to be of specified number of bits <bits> (default 48).
4604 \end_layout
4606 \begin_layout Subsection
4607 bit.flagdecode: Decode bitfield into flags
4608 \end_layout
4610 \begin_layout Itemize
4611 Syntax: string bit.flagdecode(number a, number bits, [string on, [string
4612  off]])
4613 \end_layout
4615 \begin_layout Standard
4616 Return string of length bits where ith character is ith character of on
4617  if bit i is on, otherwise ith character of off.
4618  Out of range reads give last character.
4619 \end_layout
4621 \begin_layout Itemize
4622 Note: <on> defaults to '*' if empty.
4623 \end_layout
4625 \begin_layout Itemize
4626 Note: <off> defaults to '-' if empty.
4627 \end_layout
4629 \begin_layout Subsection
4630 bit.rflagdecode: Decode bitfield into flags
4631 \end_layout
4633 \begin_layout Itemize
4634 Syntax: string bit.rflagdecode(number a, number bits, [string on, [string
4635  off]])
4636 \end_layout
4638 \begin_layout Standard
4639 Like bit.flagdecode, but outputs the string in the opposite order (most significa
4640 nt bit first).
4641 \end_layout
4643 \begin_layout Subsection
4644 bit.swap{,s}{,h,d,q}word: Swap word endian
4645 \end_layout
4647 \begin_layout Itemize
4648 Syntax: number bit.swapword(number n)
4649 \end_layout
4651 \begin_layout Itemize
4652 Syntax: number bit.swaphword(number n)
4653 \end_layout
4655 \begin_layout Itemize
4656 Syntax: number bit.swapdword(number n)
4657 \end_layout
4659 \begin_layout Itemize
4660 Syntax: number bit.swapqword(number n)
4661 \end_layout
4663 \begin_layout Itemize
4664 Syntax: number bit.swapsword(number n)
4665 \end_layout
4667 \begin_layout Itemize
4668 Syntax: number bit.swapshword(number n)
4669 \end_layout
4671 \begin_layout Itemize
4672 Syntax: number bit.swapsdword(number n)
4673 \end_layout
4675 \begin_layout Itemize
4676 Syntax: number bit.swapsqword(number n)
4677 \end_layout
4679 \begin_layout Standard
4680 Swap endianess of (un)signed integer <n>.
4681 \end_layout
4683 \begin_layout Subsection
4684 bit.compose: Compose multi-byte number
4685 \end_layout
4687 \begin_layout Itemize
4688 Syntax: number bit.compose(number n...)
4689 \end_layout
4691 \begin_layout Standard
4692 Return 
4693 \begin_inset Formula $n_{1}+256n_{2}+256^{2}n_{3}+\ldots$
4694 \end_inset
4697 \end_layout
4699 \begin_layout Subsection
4700 bit.binary_ld_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Load binary integer
4701 \end_layout
4703 \begin_layout Itemize
4704 Syntax: number bit.binary_ld_<type>le(string str, number pos);
4705 \end_layout
4707 \begin_layout Itemize
4708 Syntax: number bit.binary_ld_<type>be(string str, number pos);
4709 \end_layout
4711 \begin_layout Standard
4712 Load little (*le) or big (*be) endian binary number from position <pos>
4713  of string <str>.
4714  Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4715  double.
4716 \end_layout
4718 \begin_layout Subsection
4719 bit.binary_st_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Store binary integer
4720 \end_layout
4722 \begin_layout Itemize
4723 Syntax: string bit.binary_st_<type>le(number x);
4724 \end_layout
4726 \begin_layout Itemize
4727 Syntax: string bit.binary_st_<type>be(number x);
4728 \end_layout
4730 \begin_layout Standard
4731 Store specified number <x> as binary in string and return the result.
4732  Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4733  double.
4734 \end_layout
4736 \begin_layout Subsection
4737 bit.quotent: Integer quotent
4738 \end_layout
4740 \begin_layout Itemize
4741 Syntax: number bit.quotent(number a, number b)
4742 \end_layout
4744 \begin_layout Standard
4745 Calculate quotent a/b.
4746 \end_layout
4748 \begin_layout Subsection
4749 bit.multidiv: Divide and split among multiple divisiors
4750 \end_layout
4752 \begin_layout Itemize
4753 Syntax: number...
4754  bit.multidiv(number v, number q...)
4755 \end_layout
4757 \begin_layout Standard
4758 Does the following steps:
4759 \end_layout
4761 \begin_layout Enumerate
4762 Set v' to <v>.
4763 \end_layout
4765 \begin_layout Enumerate
4766 For each <q> q:
4767 \end_layout
4769 \begin_deeper
4770 \begin_layout Enumerate
4771 Calculate quotent(v'/q) and add that to numbers returned.
4772 \end_layout
4774 \begin_layout Enumerate
4775 v' <- remainder(v'/q)
4776 \end_layout
4778 \end_deeper
4779 \begin_layout Enumerate
4780 Add v' to numbers returned.
4781 \end_layout
4783 \begin_layout Standard
4784 That is, it successively divides <v> by <q>s, and reduces <v> modulo <q>
4785  at each step.
4786  <v> may be floating point, <q>s are integers.
4787 \end_layout
4789 \begin_layout Itemize
4790 E.g.
4791  bit.multidiv(time, 3600, 60) splits time into hours, minutes and seconds.
4792 \end_layout
4794 \begin_layout Itemize
4795 E.g.
4796  bit.multidiv(a, b) calculates quotent and remainder of a/b.
4797 \end_layout
4799 \begin_layout Subsection
4800 bit.mul32: 32-bit multiply
4801 \end_layout
4803 \begin_layout Itemize
4804 Syntax: number, number bit.mul32(number a, number b)
4805 \end_layout
4807 \begin_layout Standard
4808 Multiply 32-bit numbers <a> and <b>.
4809  The first return value is low 32 bits of result, the second is high 32
4810  bits.
4811 \end_layout
4813 \begin_layout Standard
4814 \begin_inset Newpage pagebreak
4815 \end_inset
4818 \end_layout
4820 \begin_layout Section
4821 Table classes:
4822 \end_layout
4824 \begin_layout Subsection
4825 classes.<foo>: The classobj for class <foo>
4826 \end_layout
4828 \begin_layout Itemize
4829 Syntax: classes.<foo>
4830 \end_layout
4832 \begin_layout Standard
4833 The classobj for class <foo>.
4834 \end_layout
4836 \begin_layout Subsection
4837 classes.<foo>._static_methods: Enumerate static methods
4838 \end_layout
4840 \begin_layout Itemize
4841 Syntax: string...
4842  classes.<foo>._static_methods()
4843 \end_layout
4845 \begin_layout Standard
4846 Returns all static methods of <foo> as strings.
4847 \end_layout
4849 \begin_layout Subsection
4850 classes.<foo>._class_methods: Enumerate static methods
4851 \end_layout
4853 \begin_layout Itemize
4854 Syntax: string...
4855  classes.<foo>._class_methods()
4856 \end_layout
4858 \begin_layout Standard
4859 Returns all class methods of <foo> as strings.
4860 \end_layout
4862 \begin_layout Subsection
4863 classes.<foo>.<bar>: Static method
4864 \end_layout
4866 \begin_layout Itemize
4867 Syntax: variable classes.<foo>.<bar>(variable...)
4868 \end_layout
4870 \begin_layout Standard
4871 Invokes static method <bar> of class <foo>.
4872 \end_layout
4874 \begin_layout Section
4875 Table gui:
4876 \end_layout
4878 \begin_layout Subsection
4879 gui.resolution: Get current resolution
4880 \end_layout
4882 \begin_layout Itemize
4883 Syntax: (number, number) gui.resolution()
4884 \end_layout
4886 \begin_layout Standard
4887 Returns 2-tuple (hresolution, vresolution).
4888 \end_layout
4890 \begin_layout Subsection
4891 gui.left_gap/gui.right_gap/gui.top_gap/gui.bottom_gap: Set edge gaps
4892 \end_layout
4894 \begin_layout Itemize
4895 Syntax: number gui.left_gap(number gap)
4896 \end_layout
4898 \begin_layout Itemize
4899 Syntax: number gui.right_gap(number gap)
4900 \end_layout
4902 \begin_layout Itemize
4903 Syntax: number gui.top_gap(number gap)
4904 \end_layout
4906 \begin_layout Itemize
4907 Syntax: number gui.bottom_gap(number gap)
4908 \end_layout
4910 \begin_layout Standard
4911 Set the specified edge gap to specified value <gap> (max gap is 8191).
4912  If successful, old gap is returned.
4913 \end_layout
4915 \begin_layout Subsection
4916 gui.delta_left_gap/gui.delta_right_gap/gui.delta_top_gap/gui.delta_bottom_gap:
4917  Adjust edge gaps
4918 \end_layout
4920 \begin_layout Itemize
4921 Syntax: number gui.delta_left_gap(number dgap)
4922 \end_layout
4924 \begin_layout Itemize
4925 Syntax: number gui.delta_right_gap(number dgap)
4926 \end_layout
4928 \begin_layout Itemize
4929 Syntax: number gui.delta_top_gap(number dgap)
4930 \end_layout
4932 \begin_layout Itemize
4933 Syntax: number gui.delta_bottom_gap(number dgap)
4934 \end_layout
4936 \begin_layout Standard
4937 Increase the specified edge gap by specified value <dgap> (max gap is 8191)
4938  and return the old gap (returns nothing on error).
4939 \end_layout
4941 \begin_layout Subsection
4942 gui.text/gui.textH/gui.textV,gui.textHV: Draw text
4943 \end_layout
4945 \begin_layout Itemize
4946 Syntax: none gui.text(number x, number y, string text[, number fgc[, number
4947  bgc]])
4948 \end_layout
4950 \begin_layout Itemize
4951 Syntax: none gui.textH(number x, number y, string text[, number fgc[, number
4952  bgc]])
4953 \end_layout
4955 \begin_layout Itemize
4956 Syntax: none gui.textV(number x, number y, string text[, number fgc[, number
4957  bgc]])
4958 \end_layout
4960 \begin_layout Itemize
4961 Syntax: none gui.textHV(number x, number y, string text[, number fgc[, number
4962  bgc]])
4963 \end_layout
4965 \begin_layout Standard
4966 Draw specified text on the GUI (each character cell is 8 or 16 wide and
4967  16 high).
4968  Parameters:
4969 \end_layout
4971 \begin_layout Itemize
4972 x: X-coordinate to start the drawing from (and x-coordinate at begining
4973  of the lines).
4974 \end_layout
4976 \begin_layout Itemize
4977 y: Y-coordinate to start the drawing from.
4978 \end_layout
4980 \begin_layout Itemize
4981 text: The text to draw.
4982 \end_layout
4984 \begin_layout Itemize
4985 fgc: Text color (default is 0xFFFFFF (white))
4986 \end_layout
4988 \begin_layout Itemize
4989 bgc: Background color (default is -1 (transparent))
4990 \end_layout
4992 \begin_layout Standard
4993 Note: The H variants draw at double width and V variants draw at double
4994  height.
4995 \end_layout
4997 \begin_layout Subsection
4998 gui.rectangle: Draw a rectangle
4999 \end_layout
5001 \begin_layout Itemize
5002 Syntax: none gui.rectangle(number x, number y, number width, number height[,
5003  number thickness[, number outline[, number fill]]])
5004 \end_layout
5006 \begin_layout Standard
5007 Draw rectangle on the GUI.
5008  Parameters:
5009 \end_layout
5011 \begin_layout Itemize
5012 x: X-coordinate of left edge.
5013 \end_layout
5015 \begin_layout Itemize
5016 y: Y-coordinate of upper edge.
5017 \end_layout
5019 \begin_layout Itemize
5020 width: Width of rectangle.
5021 \end_layout
5023 \begin_layout Itemize
5024 height: Height of rectangle.
5025 \end_layout
5027 \begin_layout Itemize
5028 thickness: Thickness of outline (default is 1).
5029 \end_layout
5031 \begin_layout Itemize
5032 outline: Color of outline (default is 0xFFFFFF (white))
5033 \end_layout
5035 \begin_layout Itemize
5036 fill: Color of fill (default is -1 (transparent))
5037 \end_layout
5039 \begin_layout Subsection
5040 gui.solidrectangle: Draw a solid rectangle
5041 \end_layout
5043 \begin_layout Itemize
5044 Syntax: none gui.rectangle(number x, number y, number width, number height[,
5045  number color])
5046 \end_layout
5048 \begin_layout Standard
5049 Draw solid rectangle on the GUI.
5050  Parameters:
5051 \end_layout
5053 \begin_layout Itemize
5054 x: X-coordinate of left edge.
5055 \end_layout
5057 \begin_layout Itemize
5058 y: Y-coordinate of upper edge.
5059 \end_layout
5061 \begin_layout Itemize
5062 width: Width of rectangle.
5063 \end_layout
5065 \begin_layout Itemize
5066 height: Height of rectangle.
5067 \end_layout
5069 \begin_layout Itemize
5070 color: Color of rectangle (default is 0xFFFFFF (white))
5071 \end_layout
5073 \begin_layout Subsection
5074 gui.box: Draw a 3D-effect box
5075 \end_layout
5077 \begin_layout Itemize
5078 Syntax: none gui.box(number x, number y, number width, number height[, number
5079  thickness[, number outline1[,number outline2[, number fill]]]])
5080 \end_layout
5082 \begin_layout Standard
5083 Draw rectangle with 3D effect on the GUI.
5084  Parameters:
5085 \end_layout
5087 \begin_layout Itemize
5088 x: X-coordinate of left edge.
5089 \end_layout
5091 \begin_layout Itemize
5092 y: Y-coordinate of upper edge.
5093 \end_layout
5095 \begin_layout Itemize
5096 width: Width of rectangle.
5097 \end_layout
5099 \begin_layout Itemize
5100 height: Height of rectangle.
5101 \end_layout
5103 \begin_layout Itemize
5104 thickness: Thickness of outline (default is 1).
5105 \end_layout
5107 \begin_layout Itemize
5108 outline1: First color of outline (default is 0xFFFFFF (white))
5109 \end_layout
5111 \begin_layout Itemize
5112 outline2: First color of outline (default is 0x808080 (dark gray))
5113 \end_layout
5115 \begin_layout Itemize
5116 fill: Color of fill (default is 0xC0C0C0 (light grayy))
5117 \end_layout
5119 \begin_layout Subsection
5120 gui.pixel: Draw a single pixel
5121 \end_layout
5123 \begin_layout Itemize
5124 Syntax: none gui.pixel(number x, number y[, number color])
5125 \end_layout
5127 \begin_layout Standard
5128 Draw one pixel on the GUI.
5129  Parameters:
5130 \end_layout
5132 \begin_layout Itemize
5133 x: X-coordinate of the pixel
5134 \end_layout
5136 \begin_layout Itemize
5137 y: Y-coordinate of the pixel
5138 \end_layout
5140 \begin_layout Itemize
5141 color: Color of the pixel (default is 0xFFFFFF (white))
5142 \end_layout
5144 \begin_layout Subsection
5145 gui.crosshair: Draw a crosshair
5146 \end_layout
5148 \begin_layout Itemize
5149 Syntax: none gui.crosshair(number x, number y[, number length[, number color]])
5150 \end_layout
5152 \begin_layout Standard
5153 Draw a crosshair.
5154  Parameters:
5155 \end_layout
5157 \begin_layout Itemize
5158 x: X-coordinate of the crosshair
5159 \end_layout
5161 \begin_layout Itemize
5162 y: Y-coordinate of the crosshair
5163 \end_layout
5165 \begin_layout Itemize
5166 length: Length of the crosshair lines (default 10).
5167 \end_layout
5169 \begin_layout Itemize
5170 color: Color of the crosshair (default is 0xFFFFFF (white))
5171 \end_layout
5173 \begin_layout Subsection
5174 gui.line: Draw a line
5175 \end_layout
5177 \begin_layout Itemize
5178 Syntax: none gui.line(number x1, number y1, number x2, number y2[, number
5179  color])
5180 \end_layout
5182 \begin_layout Standard
5183 Draw a thin line.
5184  Parameters:
5185 \end_layout
5187 \begin_layout Itemize
5188 x1: X-coordinate of one end.
5189 \end_layout
5191 \begin_layout Itemize
5192 y1: Y-coordinate of one end.
5193 \end_layout
5195 \begin_layout Itemize
5196 x2: X-coordinate of the other end.
5197 \end_layout
5199 \begin_layout Itemize
5200 y2: Y-coordinate of the other end.
5201 \end_layout
5203 \begin_layout Itemize
5204 color: Color of the line (default is 0xFFFFFF (white)).
5205 \end_layout
5207 \begin_layout Subsection
5208 gui.circle: Draw a (filled) circle
5209 \end_layout
5211 \begin_layout Itemize
5212 Syntax: none gui.circle(number x, number y, number r[, number thick[, number
5213  border[, number fil]]])
5214 \end_layout
5216 \begin_layout Standard
5217 Draw a circle.
5218  Parameters.
5219 \end_layout
5221 \begin_layout Itemize
5222 x: X-coordinate of the center
5223 \end_layout
5225 \begin_layout Itemize
5226 y: Y-coordinate of the center
5227 \end_layout
5229 \begin_layout Itemize
5230 r: The radius of the circle
5231 \end_layout
5233 \begin_layout Itemize
5234 thick: Border thickness
5235 \end_layout
5237 \begin_layout Itemize
5238 border: Border color (default is 0xFFFFFF (white))
5239 \end_layout
5241 \begin_layout Itemize
5242 fill: Fill color (default is -1 (transparent)).
5243 \end_layout
5245 \begin_layout Subsection
5246 gui.repaint: Arrange a repaint
5247 \end_layout
5249 \begin_layout Itemize
5250 Syntax: none gui.repaint()
5251 \end_layout
5253 \begin_layout Standard
5254 Request on_repaint() to happen as soon as possible.
5255 \end_layout
5257 \begin_layout Subsection
5258 gui.subframe_update: Enable/Disable subframe updates
5259 \end_layout
5261 \begin_layout Itemize
5262 Syntax: none gui.subframe_update(boolean on)
5263 \end_layout
5265 \begin_layout Standard
5266 Request subframe updates (calling on_paint() on subframes) to happen (<on>=true)
5267  or not happen (<on>=false).
5268 \end_layout
5270 \begin_layout Subsection
5271 gui.screenshot: Write a screenshot
5272 \end_layout
5274 \begin_layout Itemize
5275 Syntax: none gui.screenshot(string filename)
5276 \end_layout
5278 \begin_layout Standard
5279 Write PNG screenshot of the current frame (no drawings) to specified file
5280  <filename>.
5281 \end_layout
5283 \begin_layout Subsection
5284 gui.screenshot_bitmap: Write a screenshot to bitmap
5285 \end_layout
5287 \begin_layout Itemize
5288 Syntax: DBITMAP gui.screenshot_bitmap()
5289 \end_layout
5291 \begin_layout Standard
5292 Write PNG screenshot of the current frame (no drawings) to dbitmap and return
5293  the result.
5294 \end_layout
5296 \begin_layout Subsection
5297 gui.color: Compose a color.
5298 \end_layout
5300 \begin_layout Itemize
5301 Syntax: number gui.color(number r, number g, number b[, number a])
5302 \end_layout
5304 \begin_layout Itemize
5305 Syntax: number gui.color(string c)
5306 \end_layout
5308 \begin_layout Standard
5309 Returns color (in notation Lua scripts use) corresponding to color (<r>,<g>,<b>)
5310 , each component in scale 0-255.
5311  If <a> is specified, that is alpha (0 is fully transparent, 256(sic) is
5312  fully opaque).
5313  The default alpha is 256.
5314 \end_layout
5316 \begin_layout Standard
5317 The form taking a string returns color corresponding color name.
5318 \end_layout
5320 \begin_layout Subsection
5321 gui.status: Set status variable
5322 \end_layout
5324 \begin_layout Itemize
5325 Syntax: none gui.status(string name, string value)
5326 \end_layout
5328 \begin_layout Standard
5329 Set status field 
5330 \begin_inset Quotes eld
5331 \end_inset
5333 L[<name>]
5334 \begin_inset Quotes erd
5335 \end_inset
5337  to <value> in status area.
5338 \end_layout
5340 \begin_layout Subsection
5341 gui.rainbow: Rainbow color calculation
5342 \end_layout
5344 \begin_layout Itemize
5345 Syntax: number gui.rainbow(number step, number steps[, number color])
5346 \end_layout
5348 \begin_layout Standard
5349 Perform hue rotation of color <color> (default bright red), by <step> steps.
5350  The number of steps per full rotation is given by absolute value of <steps>.
5351 \end_layout
5353 \begin_layout Standard
5354 If <step> is negative, the rotation will be counterclockwise.
5355 \end_layout
5357 \begin_layout Subsection
5358 gui.kill_frame: Kill video frame and associated sound
5359 \end_layout
5361 \begin_layout Itemize
5362 Syntax: none gui.kill_frame()
5363 \end_layout
5365 \begin_layout Standard
5366 Kills the currently dumped video frame + the associated sound.
5367  Only valid in on_video callback.
5368 \end_layout
5370 \begin_layout Subsection
5371 gui.set_video_scale: Set video frame scale
5372 \end_layout
5374 \begin_layout Itemize
5375 Syntax: none gui.set_video_scale(number h, number v)
5376 \end_layout
5378 \begin_layout Standard
5379 Sets the scale factors of current frame to <h>x<v>.
5380  Only valid in on_video callback.
5381 \end_layout
5383 \begin_layout Subsection
5384 gui.arrow: Draw an arrow
5385 \end_layout
5387 \begin_layout Itemize
5388 Syntax: none gui.arrow(number x, number y, number length, number hwidth,
5389  number direction[, bool fill[, number color[, number twidth[, number hthick]]]]
5391 \end_layout
5393 \begin_layout Standard
5394 Draws an arrow using color <color>.
5395  The tip of arrow is at (<x>, <y>).
5396  Other parameters:
5397 \end_layout
5399 \begin_layout Enumerate
5400 <length>: The length of arrow tail.
5401 \end_layout
5403 \begin_layout Enumerate
5404 <hwidth>: The width of arrow head.
5405  Should be odd.
5406 \end_layout
5408 \begin_layout Enumerate
5409 <direction>: Direction of arrow.
5410  0 is to right, +1 rotates 45 degrees counterclockwise.
5411 \end_layout
5413 \begin_layout Enumerate
5414 <fill>: If true, fill the arrow head.
5415  Default false.
5416 \end_layout
5418 \begin_layout Enumerate
5419 <twidth>: Tail width.
5420  Should be odd.
5421  Default 1.
5422 \end_layout
5424 \begin_layout Enumerate
5425 <hthick>: Head thickness (only used if <fill> is false).
5426  Default is <twidth>.
5427 \end_layout
5429 \begin_layout Subsection
5430 gui.tiled_bitmap: Class TILEMAP
5431 \end_layout
5433 \begin_layout Standard
5434 See class TILEMAP.
5435 \end_layout
5437 \begin_layout Subsection
5438 gui.palette: Class PALETTE
5439 \end_layout
5441 \begin_layout Standard
5442 See class PALETTE.
5443 \end_layout
5445 \begin_layout Subsection
5446 gui.bitmap: Class BITMAP
5447 \end_layout
5449 \begin_layout Standard
5450 See class BITMAP.
5451 \end_layout
5453 \begin_layout Subsection
5454 gui.dbitmap: Class DBITMAP
5455 \end_layout
5457 \begin_layout Standard
5458 See class DBITMAP.
5459 \end_layout
5461 \begin_layout Subsection
5462 gui.font: Class CUSTOMFONT
5463 \end_layout
5465 \begin_layout Standard
5466 See class CUSTOMFONT.
5467 \end_layout
5469 \begin_layout Subsection
5470 gui.renderctx: Class RENDERCTX
5471 \end_layout
5473 \begin_layout Standard
5474 See class RENDERCTX.
5475 \end_layout
5477 \begin_layout Subsection
5478 gui.image: Class IMAGELOADER
5479 \end_layout
5481 \begin_layout Standard
5482 See class IMAGELOADER.
5483 \end_layout
5485 \begin_layout Standard
5486 \begin_inset Newpage pagebreak
5487 \end_inset
5490 \end_layout
5492 \begin_layout Section
5493 table input
5494 \end_layout
5496 \begin_layout Standard
5497 Input handling.
5498  Functions manipulating input are only available in on_input callback.
5499 \end_layout
5501 \begin_layout Subsection
5502 input.get: Read controller button/axis (deprecated)
5503 \end_layout
5505 \begin_layout Itemize
5506 Syntax: number input.get(number controller, number index)
5507 \end_layout
5509 \begin_layout Standard
5510 Read the specified index <index> (zero-based) from specified controller
5511  <controller> (zero-based).
5513 \end_layout
5515 \begin_layout Subsection
5516 input.set: Write controller button/axis (deprecated)
5517 \end_layout
5519 \begin_layout Itemize
5520 Syntax: none input.set(number controller, number index, number value)
5521 \end_layout
5523 \begin_layout Standard
5524 Write the specified index <index> (zero-based) from specified controller
5525  <controller> (zero-based), storing value <value>.
5526 \end_layout
5528 \begin_layout Subsection
5529 input.get2: Read controller button/axis
5530 \end_layout
5532 \begin_layout Itemize
5533 Syntax: number input.get2(number port, number controller, number index)
5534 \end_layout
5536 \begin_layout Standard
5537 Read the specified input tuple.
5538  Port 0 is system port.
5539 \end_layout
5541 \begin_layout Subsection
5542 input.set2: Write controller button/axis
5543 \end_layout
5545 \begin_layout Itemize
5546 Syntax: input.set2(number port, number controller, number index, number value)
5547 \end_layout
5549 \begin_layout Standard
5550 Write the specified input tuple.
5551  Port 0 is system port.
5552 \end_layout
5554 \begin_layout Subsection
5555 input.lcid_to_pcid2: Look up logical controller
5556 \end_layout
5558 \begin_layout Itemize
5559 Syntax: (number, number) input.lcid_to_pcid2(number lcid)
5560 \end_layout
5562 \begin_layout Standard
5563 Look up physical pcid pair (port, controller) corresponding to specified
5564  logical controller (1-based).
5565  Returns nothing if controller does not exist.
5566 \end_layout
5568 \begin_layout Subsection
5569 input.port_type: Look up port type
5570 \end_layout
5572 \begin_layout Itemize
5573 Syntax: string input.port_type(number port)
5574 \end_layout
5576 \begin_layout Standard
5577 Return type of specified port.
5578 \end_layout
5580 \begin_layout Subsection
5581 input.controller_info: Get information about controller
5582 \end_layout
5584 \begin_layout Itemize
5585 Syntax: table input.controller_info(number port, number controller)
5586 \end_layout
5588 \begin_layout Standard
5589 Get controller info for specified controller.
5590  If controller does not exist, returns nil.
5591  Otherwise returns a table with following fields:
5592 \end_layout
5594 \begin_layout Itemize
5595 type (string): Type of the controller.
5596 \end_layout
5598 \begin_layout Itemize
5599 class (string): Class of the controller.
5600 \end_layout
5602 \begin_layout Itemize
5603 classnum (number): Number of the controller within its class (1-based)
5604 \end_layout
5606 \begin_layout Itemize
5607 lcid (number): Logical controller number of the controller.
5608 \end_layout
5610 \begin_layout Itemize
5611 button_count (number): Number of buttons on controller
5612 \end_layout
5614 \begin_layout Itemize
5615 buttons (array): Array of following info about each button:
5616 \end_layout
5618 \begin_deeper
5619 \begin_layout Itemize
5620 type (string): Type of button.
5621  Currently one of 
5622 \begin_inset Quotes eld
5623 \end_inset
5625 null
5626 \begin_inset Quotes erd
5627 \end_inset
5630 \begin_inset Quotes eld
5631 \end_inset
5633 button
5634 \begin_inset Quotes erd
5635 \end_inset
5638 \begin_inset Quotes eld
5639 \end_inset
5641 axis
5642 \begin_inset Quotes erd
5643 \end_inset
5646 \begin_inset Quotes eld
5647 \end_inset
5649 raxis
5650 \begin_inset Quotes erd
5651 \end_inset
5654 \end_layout
5656 \begin_layout Itemize
5657 name (string): Name of button.
5658 \end_layout
5660 \begin_layout Itemize
5661 symbol (string): Symbol of button.
5662  Only present for type 
5663 \begin_inset Quotes eld
5664 \end_inset
5666 button
5667 \begin_inset Quotes erd
5668 \end_inset
5671 \end_layout
5673 \begin_layout Itemize
5674 hidden (boolean): True if hidden button.
5676 \end_layout
5678 \end_deeper
5679 \begin_layout Subsection
5680 input.veto_button: Veto a button press
5681 \end_layout
5683 \begin_layout Itemize
5684 Syntax: none input.veto_button()
5685 \end_layout
5687 \begin_layout Standard
5688 Signals that the button event should be vetoed.
5689  Only valid in on_button callback.
5690 \end_layout
5692 \begin_layout Subsection
5693 input.geta: Get all buttons for controller (deprecated)
5694 \end_layout
5696 \begin_layout Itemize
5697 Syntax: (number, number...) input.geta(number controller)
5698 \end_layout
5700 \begin_layout Standard
5701 Get input state for entiere controller.
5702  Returns n return values.
5703 \end_layout
5705 \begin_layout Itemize
5706 1st return value: Bitmask: bit i is set if i:th index is nonzero
5707 \end_layout
5709 \begin_layout Itemize
5710 2nd- return value: value of i:th index.
5711 \end_layout
5713 \begin_layout Subsection
5714 input.seta: Set all buttons for controller (deprecated)
5715 \end_layout
5717 \begin_layout Itemize
5718 Syntax: none input.seta(number controller, number bitmask, number args...)
5719 \end_layout
5721 \begin_layout Standard
5722 Set state for entiere controller.
5723  args is up to N values for indices (overriding values in bitmask if specified).
5724 \end_layout
5726 \begin_layout Subsection
5727 input.controllertype: Get controller type (deprecated)
5728 \end_layout
5730 \begin_layout Itemize
5731 syntax: string input.controllertype(number controller)
5732 \end_layout
5734 \begin_layout Standard
5735 Get the type of controller as string.
5736 \end_layout
5738 \begin_layout Subsection
5739 input.reset: Execute (delayed) reset
5740 \end_layout
5742 \begin_layout Itemize
5743 Syntax: none input.reset([number cycles])
5744 \end_layout
5746 \begin_layout Standard
5747 Execute reset.
5748  If <cycles> is greater than zero, do delayed reset.
5749  0 (or no value) causes immediate reset.
5750 \end_layout
5752 \begin_layout Itemize
5753 Note: Only available with subframe flag false.
5754 \end_layout
5756 \begin_layout Subsection
5757 input.raw: Return raw input data
5758 \end_layout
5760 \begin_layout Itemize
5761 Syntax: table input.raw()
5762 \end_layout
5764 \begin_layout Standard
5765 Returns table of tables of all available keys and axes.
5766  The first table is indexed by key name (platform-dependent!), and the inner
5767  table has the following fields:
5768 \end_layout
5770 \begin_layout Itemize
5771 value: Last reported value for control
5772 \end_layout
5774 \begin_deeper
5775 \begin_layout Itemize
5776 For keys: 1 for pressed, 0 for released.
5777 \end_layout
5779 \begin_layout Itemize
5780 For axes: -32767...32767.
5781 \end_layout
5783 \begin_layout Itemize
5784 For presure-sensitive buttons: 0...32767.
5785 \end_layout
5787 \begin_layout Itemize
5788 For hats: Bitmask: 1=>Up, 2=>Right, 4=>Down, 8=>Left.
5789 \end_layout
5791 \begin_layout Itemize
5792 For mouse: Coordinates relative to game area.
5793 \end_layout
5795 \end_deeper
5796 \begin_layout Itemize
5797 ktype: Type of key (disabled, key, mouse, axis, hat, pressure).
5798 \end_layout
5800 \begin_layout Subsection
5801 input.keyhook: Hook a key
5802 \end_layout
5804 \begin_layout Itemize
5805 Syntax: none input.keyhook(string key, boolean state)
5806 \end_layout
5808 \begin_layout Standard
5809 Requests that keyhook events to be sent for key <key> (<state>=true) or
5810  not sent (<state>=false).
5811 \end_layout
5813 \begin_layout Subsection
5814 input.joyget: Get controls for controller
5815 \end_layout
5817 \begin_layout Itemize
5818 Syntax: table input.joyget(number logical)
5819 \end_layout
5821 \begin_layout Standard
5822 Returns table for current controls for specified logical controller <logical>.
5823  The names of fields vary by controller type.
5824 \end_layout
5826 \begin_layout Itemize
5827 The buttons have the same name as those are referred to in other contexts
5828  in the emulator
5829 \end_layout
5831 \begin_layout Itemize
5832 The analog axes are usually 
5833 \begin_inset Quotes eld
5834 \end_inset
5836 xaxis
5837 \begin_inset Quotes erd
5838 \end_inset
5840  and 
5841 \begin_inset Quotes eld
5842 \end_inset
5844 yaxis
5845 \begin_inset Quotes erd
5846 \end_inset
5849 \end_layout
5851 \begin_layout Itemize
5852 Each field is numeric or boolean depending on axis/button.
5853 \end_layout
5855 \begin_layout Subsection
5856 input.joyset: Set controls for controller
5857 \end_layout
5859 \begin_layout Itemize
5860 Syntax: none input.joyset(number controller, table controls)
5861 \end_layout
5863 \begin_layout Standard
5864 Set the the state of specified controller to values specified in specified
5865  table.
5866 \end_layout
5868 \begin_layout Itemize
5869 Each field can be boolean or number.
5870 \end_layout
5872 \begin_layout Itemize
5873 Also, buttons allow strings, which cause value to be inverted.
5874 \end_layout
5876 \begin_layout Subsection
5877 input.lcid_to_pcid: Look up logical controller (deprecated)
5878 \end_layout
5880 \begin_layout Itemize
5881 Syntax: (number, number, number) input.lcid_to_pcid(number lcid)
5882 \end_layout
5884 \begin_layout Standard
5885 Returns the legacy pcid for controller (or false if there isn't one), followed
5886  by pcid pair.
5887  Returns nothing if controller does not exist.
5888 \end_layout
5890 \begin_layout Standard
5891 \begin_inset Newpage pagebreak
5892 \end_inset
5895 \end_layout
5897 \begin_layout Section
5898 Table keyboard
5899 \end_layout
5901 \begin_layout Standard
5902 Various keybinding-related functions
5903 \end_layout
5905 \begin_layout Subsection
5906 keyboard.bind: Bind a key
5907 \end_layout
5909 \begin_layout Itemize
5910 Syntax: none keyboard.bind(string mod, string mask, string key, string cmd)
5911 \end_layout
5913 \begin_layout Standard
5914 Bind specified key with specified modifers to specified command.
5915 \end_layout
5917 \begin_layout Subsection
5918 keyboard.unbind: Unbind a key
5919 \end_layout
5921 \begin_layout Itemize
5922 Syntax: none keyboard.unbind(string mod, string mask, string key)
5923 \end_layout
5925 \begin_layout Standard
5926 Unbind specified key with specified modifers.
5927 \end_layout
5929 \begin_layout Subsection
5930 keyboard.alias: Set alias expansion
5931 \end_layout
5933 \begin_layout Itemize
5934 Syntax: none keyboard.alias(string alias, string expansion)
5935 \end_layout
5937 \begin_layout Standard
5938 Set expansion of given command.
5939 \end_layout
5941 \begin_layout Standard
5942 \begin_inset Newpage pagebreak
5943 \end_inset
5946 \end_layout
5948 \begin_layout Section
5949 Table subtitle
5950 \end_layout
5952 \begin_layout Standard
5953 Subtitle handling
5954 \end_layout
5956 \begin_layout Subsection
5957 subtitle.byindex: Look up start and length of subtitle by index
5958 \end_layout
5960 \begin_layout Itemize
5961 Syntax: (number, number) subtitle.byindex(number i)
5962 \end_layout
5964 \begin_layout Standard
5965 Read the frame and length of ith subtitle.
5966  Returns nothing if not present.
5967 \end_layout
5969 \begin_layout Subsection
5970 subtitle.set: Write a subtitle
5971 \end_layout
5973 \begin_layout Itemize
5974 Syntax: none subtitle.set(number f, number l, string txt)
5975 \end_layout
5977 \begin_layout Standard
5978 Set the text of subtitle.
5979 \end_layout
5981 \begin_layout Subsection
5982 subtitle.get: Read a subtitle
5983 \end_layout
5985 \begin_layout Itemize
5986 Syntax: string subtitle.get(number f, number l)
5987 \end_layout
5989 \begin_layout Standard
5990 Get the text of subtitle.
5991 \end_layout
5993 \begin_layout Subsection
5994 subtitle.delete: Delete a subtitle
5995 \end_layout
5997 \begin_layout Itemize
5998 Syntax: none subtitle.delete(number f, number l)
5999 \end_layout
6001 \begin_layout Standard
6002 Delete specified subtitle.
6003 \end_layout
6005 \begin_layout Standard
6006 \begin_inset Newpage pagebreak
6007 \end_inset
6010 \end_layout
6012 \begin_layout Section
6013 Table hostmemory
6014 \end_layout
6016 \begin_layout Standard
6017 Host memory handling (extra memory saved to savestates).
6018  Host memory starts empty.
6019 \end_layout
6021 \begin_layout Itemize
6022 Reads out of range return false.
6023 \end_layout
6025 \begin_layout Itemize
6026 Writes out of range extend the memory.
6027 \end_layout
6029 \begin_layout Subsection
6030 hostmemory.read: Read byte from host memory
6031 \end_layout
6033 \begin_layout Itemize
6034 Syntax: number hostmemory.read(number address)
6035 \end_layout
6037 \begin_layout Standard
6038 Reads byte from hostmemory slot address <address>.
6039 \end_layout
6041 \begin_layout Subsection
6042 hostmemory.write: Write byte to host memory
6043 \end_layout
6045 \begin_layout Itemize
6046 Syntax: none hostmemory.write(number address, number value)
6047 \end_layout
6049 \begin_layout Standard
6050 Writes hostmemory slot with value <value> 0-255.
6051 \end_layout
6053 \begin_layout Subsection
6054 hostmemory.read{,s}{byte,{,h,d,q}word}: Read from host memory
6055 \end_layout
6057 \begin_layout Itemize
6058 Syntax: number hostmemory.readbyte(number address)
6059 \end_layout
6061 \begin_layout Itemize
6062 Syntax: number hostmemory.readsbyte(number address)
6063 \end_layout
6065 \begin_layout Itemize
6066 Syntax: number hostmemory.readword(number address)
6067 \end_layout
6069 \begin_layout Itemize
6070 Syntax: number hostmemory.readsword(number address)
6071 \end_layout
6073 \begin_layout Itemize
6074 Syntax: number hostmemory.readhword(number address)
6075 \end_layout
6077 \begin_layout Itemize
6078 Syntax: number hostmemory.readshword(number address)
6079 \end_layout
6081 \begin_layout Itemize
6082 Syntax: number hostmemory.readdword(number address)
6083 \end_layout
6085 \begin_layout Itemize
6086 Syntax: number hostmemory.readsdword(number address)
6087 \end_layout
6089 \begin_layout Itemize
6090 Syntax: number hostmemory.readqword(number address)
6091 \end_layout
6093 \begin_layout Itemize
6094 Syntax: number hostmemory.readsqword(number address)
6095 \end_layout
6097 \begin_layout Standard
6098 Read elements (big-endian) from given address <address>.
6099 \end_layout
6101 \begin_layout Itemize
6102 byte is 1 element
6103 \end_layout
6105 \begin_layout Itemize
6106 word is 2 elements
6107 \end_layout
6109 \begin_layout Itemize
6110 hword is 3 elements
6111 \end_layout
6113 \begin_layout Itemize
6114 dword is 4 elements
6115 \end_layout
6117 \begin_layout Itemize
6118 qword is 8 elements.
6119 \end_layout
6121 \begin_layout Itemize
6122 The 's' variants do signed read.
6123 \end_layout
6125 \begin_layout Subsection
6126 hostmemory.read{float,double}: Read from host memory
6127 \end_layout
6129 \begin_layout Itemize
6130 syntax: number hostmemory.readfloat(number address)
6131 \end_layout
6133 \begin_layout Itemize
6134 Syntax: number hostmemory.readdouble(number address)
6135 \end_layout
6137 \begin_layout Standard
6138 Read elements (big-endian) floating-pont from given address <address>.
6139 \end_layout
6141 \begin_layout Subsection
6142 hostmemory.write{,s}{byte,{,h,d,q}word}: Write to host memory
6143 \end_layout
6145 \begin_layout Itemize
6146 Syntax: number hostmemory.writebyte(number address, number value)
6147 \end_layout
6149 \begin_layout Itemize
6150 Syntax: number hostmemory.writesbyte(number address, number value)
6151 \end_layout
6153 \begin_layout Itemize
6154 Syntax: number hostmemory.writeword(number address, number value)
6155 \end_layout
6157 \begin_layout Itemize
6158 Syntax: number hostmemory.writesword(number address, number value)
6159 \end_layout
6161 \begin_layout Itemize
6162 Syntax: number hostmemory.writehword(number address, number value)
6163 \end_layout
6165 \begin_layout Itemize
6166 Syntax: number hostmemory.writeshword(number address, number value)
6167 \end_layout
6169 \begin_layout Itemize
6170 Syntax: number hostmemory.writedword(number address, number value)
6171 \end_layout
6173 \begin_layout Itemize
6174 Syntax: number hostmemory.writesdword(number address, number value)
6175 \end_layout
6177 \begin_layout Itemize
6178 Syntax: number hostmemory.writeqword(number address, number value)
6179 \end_layout
6181 \begin_layout Itemize
6182 Syntax: number hostmemory.writesqword(number address, number value)
6183 \end_layout
6185 \begin_layout Standard
6186 Write value <value> to elements (little-endian) starting from given address
6187  <address>.
6188 \end_layout
6190 \begin_layout Itemize
6191 byte is 1 element
6192 \end_layout
6194 \begin_layout Itemize
6195 word is 2 elements
6196 \end_layout
6198 \begin_layout Itemize
6199 hword is 3 elements
6200 \end_layout
6202 \begin_layout Itemize
6203 dword is 4 elements
6204 \end_layout
6206 \begin_layout Itemize
6207 qword is 8 elements.
6208 \end_layout
6210 \begin_layout Itemize
6211 The 's' variants do signed write.
6212 \end_layout
6214 \begin_layout Subsection
6215 hostmemory.write{float,double}: Write to host memory
6216 \end_layout
6218 \begin_layout Itemize
6219 syntax: none hostmemory.readfloat(number address, number value)
6220 \end_layout
6222 \begin_layout Itemize
6223 Syntax: none hostmemory.readdouble(number address, number value)
6224 \end_layout
6226 \begin_layout Standard
6227 Write elements (big-endian) floating-pont to given address <address>, storing
6228  <value>.
6229 \end_layout
6231 \begin_layout Standard
6232 \begin_inset Newpage pagebreak
6233 \end_inset
6236 \end_layout
6238 \begin_layout Section
6239 Table movie
6240 \end_layout
6242 \begin_layout Standard
6243 Movie handling
6244 \end_layout
6246 \begin_layout Subsection
6247 movie.currentframe: Get current frame number
6248 \end_layout
6250 \begin_layout Itemize
6251 Syntax: number movie.currentframe()
6252 \end_layout
6254 \begin_layout Standard
6255 Return number of current frame.
6256 \end_layout
6258 \begin_layout Subsection
6259 movie.framecount: Get move frame count
6260 \end_layout
6262 \begin_layout Itemize
6263 Syntax: number movie.framecount()
6264 \end_layout
6266 \begin_layout Standard
6267 Return number of frames in movie.
6268 \end_layout
6270 \begin_layout Subsection
6271 movie.lagcount: Get current lag count
6272 \end_layout
6274 \begin_layout Itemize
6275 Syntax: number movie.lagcount()
6276 \end_layout
6278 \begin_layout Standard
6279 Return number of lag frames recorded so far.
6280 \end_layout
6282 \begin_layout Subsection
6283 movie.readonly: Is in playback mode?
6284 \end_layout
6286 \begin_layout Itemize
6287 Syntax: boolean movie.readonly()
6288 \end_layout
6290 \begin_layout Standard
6291 Return true if in playback mode, false if in recording.
6292 \end_layout
6294 \begin_layout Subsection
6295 movie.rerecords: Movie rerecord count
6296 \end_layout
6298 \begin_layout Itemize
6299 Syntax: number movie.rerecords()
6300 \end_layout
6302 \begin_layout Standard
6303 Returns the current value of rerecord count.
6304 \end_layout
6306 \begin_layout Subsection
6307 movie.set_readwrite: Set recording mode.
6308 \end_layout
6310 \begin_layout Itemize
6311 Syntax: none movie.set_readwrite()
6312 \end_layout
6314 \begin_layout Standard
6315 Set recording mode (does not cause on_readwrite callback).
6316 \end_layout
6318 \begin_layout Subsection
6319 movie.frame_subframes: Count subframes in frame
6320 \end_layout
6322 \begin_layout Itemize
6323 Syntax: number movie.frame_subframes(number frame)
6324 \end_layout
6326 \begin_layout Standard
6327 Count number of subframes in specified frame <frame> (frame numbers are
6328  1-based) and return that.
6329 \end_layout
6331 \begin_layout Subsection
6332 movie.read_subframes: Read subframe data (deprecated)
6333 \end_layout
6335 \begin_layout Itemize
6336 Syntax: table movie.read_subframes(number frame, number subframe)
6337 \end_layout
6339 \begin_layout Standard
6340 Read specifed subframe in specified frame and return data as array.
6341 \end_layout
6343 \begin_layout Subsection
6344 movie.read_rtc: Read current RTC time
6345 \end_layout
6347 \begin_layout Itemize
6348 Syntax: (number, number) movie.read_rtc()
6349 \end_layout
6351 \begin_layout Standard
6352 Returns the current value of the RTC as a pair (second, subsecond).
6353 \end_layout
6355 \begin_layout Subsection
6356 movie.unsafe_rewind: Fast movie rewind to saved state
6357 \end_layout
6359 \begin_layout Itemize
6360 Syntax: none movie.unsafe_rewind([UNSAFEREWIND state])
6361 \end_layout
6363 \begin_layout Standard
6364 Start setting point for unsafe rewind or jump to point of unsafe rewind.
6365 \end_layout
6367 \begin_layout Itemize
6368 If called without argument, causes emulator to start process of setting
6369  unsafe rewind point.
6370  When this has finished, callback on_set_rewind occurs, passing the rewind
6371  state to lua script.
6372 \end_layout
6374 \begin_layout Itemize
6375 If called with argument, causes emulator rewind to passed rewind point as
6376  soon as possible.
6377  recording mode is implicitly activated.
6378 \end_layout
6380 \begin_layout Standard
6381 The following warnings apply to unsafe rewinding:
6382 \end_layout
6384 \begin_layout Itemize
6385 There are no safety checks against misuse (that's what 
6386 \begin_inset Quotes eld
6387 \end_inset
6389 unsafe
6390 \begin_inset Quotes erd
6391 \end_inset
6393  comes from)!
6394 \end_layout
6396 \begin_layout Itemize
6397 Only call rewind from timeline rewind point was set from.
6398 \end_layout
6400 \begin_layout Itemize
6401 Only call rewind from after the rewind point was set.
6402 \end_layout
6404 \begin_layout Subsection
6405 movie.to_rewind: Load savestate as rewind point
6406 \end_layout
6408 \begin_layout Itemize
6409 Syntax: UNSAFEREWIND movie.to_rewind(string filename)
6410 \end_layout
6412 \begin_layout Standard
6413 Load specified savestate file <filename> as rewind point and return UNSAFEREWIND
6414  corresponding to it.
6415 \end_layout
6417 \begin_layout Itemize
6418 Note: This operation does not take emulated time.
6419 \end_layout
6421 \begin_layout Subsection
6422 movie.copy_movie/INPUTMOVIE::copy_movie: Copy movie to movie object
6423 \end_layout
6425 \begin_layout Itemize
6426 Syntax: INPUTMOVIE movie.copy_movie([INPUTMOVIE/string movie])
6427 \end_layout
6429 \begin_layout Itemize
6430 Syntax: INPUTMOVIE INPUTMOVIE::copy_movie()
6431 \end_layout
6433 \begin_layout Standard
6434 Copies specified movie or branch <movie>/current object (if none or nil,
6435  the active movie) as new movie object.
6436 \end_layout
6438 \begin_layout Subsection
6439 movie.get_frame/INPUTMOVIE::get_frame: Read specified frame in movie.
6440 \end_layout
6442 \begin_layout Itemize
6443 Syntax: INPUTFRAME movie.get_frame([INPUTMOVIE/string movie,] number frame)
6444 \end_layout
6446 \begin_layout Itemize
6447 Syntax: INPUTFRAME INPUTMOVIE::get_frame(number frame);
6448 \end_layout
6450 \begin_layout Standard
6451 Get INPUTFRAME object corresponding to specified frame in specified movie
6452  or branch.
6453 \end_layout
6455 \begin_layout Subsection
6456 movie.set_frame/INPUTMOVIE::set_frame: Write speicifed frame in movie.
6457 \end_layout
6459 \begin_layout Itemize
6460 Syntax: none movie.set_frame([INPUTMOVIE/string movie,] number frame, INPUTFRAME
6461  data)
6462 \end_layout
6464 \begin_layout Itemize
6465 Syntax: none INPUTMOVIE::set_frame(number frame, INPUTFRAME data)
6466 \end_layout
6468 \begin_layout Standard
6469 Set data in specified frame.
6470 \end_layout
6472 \begin_layout Itemize
6473 Note: Past can't be edited in active movie.
6474 \end_layout
6476 \begin_layout Subsection
6477 movie.get_size/INPUTMOVIE::get_size: Get size of movie
6478 \end_layout
6480 \begin_layout Itemize
6481 Syntax: integer movie.get_size([INPUTMOVIE/string movie])
6482 \end_layout
6484 \begin_layout Itemize
6485 Syntax: integer INPUTMOVIE::get_size()
6486 \end_layout
6488 \begin_layout Standard
6489 Return number of subframes in specified movie or branch.
6490 \end_layout
6492 \begin_layout Subsection
6493 movie.count_frames/INPUTMOVIE::count_frames: Count frames in movie
6494 \end_layout
6496 \begin_layout Itemize
6497 Syntax: number movie.count_frames([INPUTMOVIE/string movie])
6498 \end_layout
6500 \begin_layout Itemize
6501 Syntax: number INPUTMOVIE::count_frames()
6502 \end_layout
6504 \begin_layout Standard
6505 Return number of frames in movie.
6506 \end_layout
6508 \begin_layout Subsection
6509 movie.find_frame/INPUTMOVIE::find_frame: Find subframe corresponding to frame
6510 \end_layout
6512 \begin_layout Itemize
6513 Syntax: number movie.find_frame([INPUTMOVIE/string movie], number frame)
6514 \end_layout
6516 \begin_layout Itemize
6517 Syntax: number INPUTMOVIE::find_frame(number frame)
6518 \end_layout
6520 \begin_layout Standard
6521 Returns starting subframe of given frame (frame numbers are 1-based).
6522  Returns -1 if frame number is bad.
6523 \end_layout
6525 \begin_layout Subsection
6526 movie.blank_frame/INPUTMOVIE::blank_frame: Return a blank frame
6527 \end_layout
6529 \begin_layout Itemize
6530 Syntax: INPUTFRAME movie.blank_frame([INPUTMOVIE/string movie])
6531 \end_layout
6533 \begin_layout Itemize
6534 Syntax: INPUTFRAME INPUTMOVIE::blank_frame()
6535 \end_layout
6537 \begin_layout Standard
6538 Return blank INPUTFRAME with frame type from specified movie.
6539 \end_layout
6541 \begin_layout Subsection
6542 movie.append_frames/INPUTMOVIE::append_frames: Append blank frames
6543 \end_layout
6545 \begin_layout Itemize
6546 Syntax: none movie.append_frames([INPUTMOVIE/string movie,] number frames)
6547 \end_layout
6549 \begin_layout Itemize
6550 Syntax: none INPUTMOVIE::append_frames(number frames)
6551 \end_layout
6553 \begin_layout Standard
6554 Append specified number <frames> of frames.
6555 \end_layout
6557 \begin_layout Subsection
6558 movie.append_frame/INPUTMOVIE::append_frame: Append a frame
6559 \end_layout
6561 \begin_layout Itemize
6562 Syntax: none movie.append_frame([INPUTMOVIE/string movie,] INPUTFRAME frame)
6563 \end_layout
6565 \begin_layout Itemize
6566 Syntax: none INPUTMOVIE::append_frame(INPUTFRAME frame)
6567 \end_layout
6569 \begin_layout Standard
6570 Append specified frame <frame>.
6571  Past of current movie can't be edited.
6572 \end_layout
6574 \begin_layout Subsection
6575 movie.truncate/INPUTMOVIE::truncate: Truncate a movie.
6576 \end_layout
6578 \begin_layout Itemize
6579 Syntax: none movie.truncate([INPUTMOVIE/string movie,] number frames)
6580 \end_layout
6582 \begin_layout Itemize
6583 Syntax: none INPUTMOVIE::truncate(number frames)
6584 \end_layout
6586 \begin_layout Standard
6587 Truncate the specified movie to specified number of frames.
6588 \end_layout
6590 \begin_layout Subsection
6591 movie.edit/INPUTMOVIE::edit: Edit a movie
6592 \end_layout
6594 \begin_layout Itemize
6595 Syntax: none movie.edit([INPUTMOVIE movie,] number frame, number port, number
6596  controller, number control, number/bool value)
6597 \end_layout
6599 \begin_layout Itemize
6600 Syntax: none movie.edit(string branch, number frame, number port, number
6601  controller, number control, number/bool value)
6602 \end_layout
6604 \begin_layout Itemize
6605 Syntax: none INPUTMOVIE::edit(number frame, number port, number controller,
6606  number control, number/bool value)
6607 \end_layout
6609 \begin_layout Standard
6610 Change specified control in specified frame in specified movie.
6611  Past can't be edited in active movie.
6612 \end_layout
6614 \begin_layout Subsection
6615 movie.copy_frames2: Copy frames between movies
6616 \end_layout
6618 \begin_layout Itemize
6619 Syntax: none movie.copy_frames2([INPUTMOVIE/string dstmov,] number dst, [INPUTMOV
6620 IE/string srcmov,] number src, number count)
6621 \end_layout
6623 \begin_layout Standard
6624 Copy specified number of frames between two movies.
6625  The copy proceeeds in forward direction.
6626 \end_layout
6628 \begin_layout Subsection
6629 movie.copy_frames/INPUTMOVIE::copy_frames: Copy frames in movie
6630 \end_layout
6632 \begin_layout Itemize
6633 Syntax: none movie.copy_frames([INPUTMOVIE/string mov,] number dst, number
6634  src, number count, bool backwards)
6635 \end_layout
6637 \begin_layout Itemize
6638 Syntax: none INPUTMOVIE::copy_frames(number dst, number src, number count,
6639  bool backwards)
6640 \end_layout
6642 \begin_layout Standard
6643 Copy specified number of frames from one point in movie to another.
6644  If backwards is true, the copy will be done backwards.
6645 \end_layout
6647 \begin_layout Subsection
6648 movie.serialize/INPUTMOVIE::serialize: Serialize movie
6649 \end_layout
6651 \begin_layout Itemize
6652 Syntax: none movie.serialize([INPUTMOVIE movie/string,] string filename,
6653  bool binary)
6654 \end_layout
6656 \begin_layout Itemize
6657 Syntax: none INPUTMOIVE::serialize(string filename, bool binary)
6658 \end_layout
6660 \begin_layout Standard
6661 Serialize given movie into file.
6662  If binary is true, binary format (more compact and much faster) is used.
6663 \end_layout
6665 \begin_layout Subsection
6666 movie.unserialize: Unserialize movie
6667 \end_layout
6669 \begin_layout Itemize
6670 Syntax: INPUTMOVIE movie.unserialize(INPUTFRAME template, string filename,
6671  bool binary)
6672 \end_layout
6674 \begin_layout Standard
6675 Unserialize movie from file.
6676  The given frame is used as template to decide the frame type.
6677  If binary is true, binary format is decoded (much faster).
6678 \end_layout
6680 \begin_layout Subsection
6681 movie.current_first_subframe: Return first subframe in current frame
6682 \end_layout
6684 \begin_layout Itemize
6685 Syntax: number movie.current_first_subframe()
6686 \end_layout
6688 \begin_layout Standard
6689 Returns first subframe in current frame.
6690 \end_layout
6692 \begin_layout Subsection
6693 movie.pollcounter: Return poll counter for speified control
6694 \end_layout
6696 \begin_layout Itemize
6697 Syntax: number movie.pollcounter(number port, number controller, number control)
6698 \end_layout
6700 \begin_layout Standard
6701 Returns number of times the specified control has been polled this frame.
6702 \end_layout
6704 \begin_layout Subsection
6705 movie.current_branch: Return current branch
6706 \end_layout
6708 \begin_layout Itemize
6709 Syntax: string movie.current_branch()
6710 \end_layout
6712 \begin_layout Standard
6713 Returns the name of the current branch.
6714 \end_layout
6716 \begin_layout Subsection
6717 movie.get_branches: Return names of all branches
6718 \end_layout
6720 \begin_layout Itemize
6721 Syntax: string...
6722  movie.get_branches()
6723 \end_layout
6725 \begin_layout Standard
6726 Returns the name of all branches.
6727 \end_layout
6729 \begin_layout Subsection
6730 INPUTFRAME::get_button: Get button
6731 \end_layout
6733 \begin_layout Itemize
6734 Syntax: boolean INPUTFRAME::get_button(number port, number controller, number
6735  control)
6736 \end_layout
6738 \begin_layout Standard
6739 Returns state of given button as boolean.
6740 \end_layout
6742 \begin_layout Subsection
6743 INPUTFRAME::get_axis: Get axis
6744 \end_layout
6746 \begin_layout Itemize
6747 Syntax: number INPUTFRAME::get_axis(number port, number controller, number
6748  control)
6749 \end_layout
6751 \begin_layout Standard
6752 Returns state of given axis as number.
6753 \end_layout
6755 \begin_layout Subsection
6756 INPUTFRAME::set_button/INPUTFRAME::set_axis: Set button or axis
6757 \end_layout
6759 \begin_layout Itemize
6760 Syntax: none INPUTFRAME::set_button(number port, number controller, number
6761  control, number/bool value)
6762 \end_layout
6764 \begin_layout Itemize
6765 Syntax: none INPUTFRAME::set_axis(number port, number controller, number
6766  control)
6767 \end_layout
6769 \begin_layout Standard
6770 Set the given button/axis to given value.
6771 \end_layout
6773 \begin_layout Subsection
6774 INPUTFRAME::serialize: Serialize a frame
6775 \end_layout
6777 \begin_layout Itemize
6778 Syntax: string INPUTFRAME::serialize()
6779 \end_layout
6781 \begin_layout Standard
6782 Return string representation of frame.
6783 \end_layout
6785 \begin_layout Subsection
6786 INPUTFRAME::unserialize: Unserialize a frame
6787 \end_layout
6789 \begin_layout Itemize
6790 Syntax: none INPUTFRAME::unserialize(string data)
6791 \end_layout
6793 \begin_layout Standard
6794 Set current frame from given data.
6795 \end_layout
6797 \begin_layout Subsection
6798 INPUTFRAME::get_stride: Get movie stride
6799 \end_layout
6801 \begin_layout Itemize
6802 Syntax: number INPUTFRAME::get_stride()
6803 \end_layout
6805 \begin_layout Standard
6806 Return number of bytes needed to store the input frame.
6807  Mainly useful for some debugging.
6808 \end_layout
6810 \begin_layout Standard
6811 \begin_inset Newpage pagebreak
6812 \end_inset
6815 \end_layout
6817 \begin_layout Section
6818 Table settings
6819 \end_layout
6821 \begin_layout Standard
6822 Routines for settings manipulation
6823 \end_layout
6825 \begin_layout Subsection
6826 settings.get: Get value of setting
6827 \end_layout
6829 \begin_layout Itemize
6830 Syntax: string settings.get(string name)
6831 \end_layout
6833 \begin_layout Standard
6834 Get value of setting <name>.
6835  If setting value can't be obtained, returns (nil, error message).
6836 \end_layout
6838 \begin_layout Subsection
6839 settings.set: Set value of setting
6840 \end_layout
6842 \begin_layout Itemize
6843 Syntax: none settings.set(string name, string value)
6844 \end_layout
6846 \begin_layout Standard
6847 Set value <value> of setting <name>.
6848  If setting can't be set, returns (nil, error message).
6849 \end_layout
6851 \begin_layout Standard
6852 \begin_inset Newpage pagebreak
6853 \end_inset
6856 \end_layout
6858 \begin_layout Section
6859 Table memory
6860 \end_layout
6862 \begin_layout Standard
6863 Contains various functions for managing memory
6864 \end_layout
6866 \begin_layout Subsection
6867 memory.vma_count: Count number of memory areas.
6868 \end_layout
6870 \begin_layout Itemize
6871 Syntax: number memory.vma_count()
6872 \end_layout
6874 \begin_layout Standard
6875 Returns the number of memory areas
6876 \end_layout
6878 \begin_layout Subsection
6879 memory.read_vma: Lookup memory area info by index
6880 \end_layout
6882 \begin_layout Itemize
6883 Syntax: table memory.read_vma(number index)
6884 \end_layout
6886 \begin_layout Standard
6887 Reads the specified memory area (indices start from zero).
6888  Trying to read invalid memory area gives nil.
6889  The return value is table with the following fields:
6890 \end_layout
6892 \begin_layout Itemize
6893 region_name (string): The readable name of the memory area
6894 \end_layout
6896 \begin_layout Itemize
6897 baseaddr (number): Base address of the memory area
6898 \end_layout
6900 \begin_layout Itemize
6901 lastaddr (number): Last address in the memory area.
6902 \end_layout
6904 \begin_layout Itemize
6905 size (number): The size of memory area in bytes.
6906 \end_layout
6908 \begin_layout Itemize
6909 readonly (boolean): True of the memory area corresponds to ROM.
6910 \end_layout
6912 \begin_layout Itemize
6913 iospace (boolean): True if the memory area is I/O space.
6914 \end_layout
6916 \begin_layout Itemize
6917 native_endian (boolean): True if the memory area has native endian as opposed
6918  to little endian.
6919 \end_layout
6921 \begin_layout Subsection
6922 memory.find_vma: Find memory area info by address
6923 \end_layout
6925 \begin_layout Itemize
6926 Syntax: table memory.find_vma(number address)
6927 \end_layout
6929 \begin_layout Standard
6930 Finds the memory area containing specified address.
6931  Returns table in the same format as read_vma or nil if not found.
6932 \end_layout
6934 \begin_layout Subsection
6935 memory.read{,s}{byte,{,h,d,q}word}: Read memory
6936 \end_layout
6938 \begin_layout Itemize
6939 Syntax: none memory.readbyte({string marea, number address|ADDRESS addrobj})
6940 \end_layout
6942 \begin_layout Itemize
6943 Syntax: none memory.readword({string marea, number address|ADDRESS addrobj})
6944 \end_layout
6946 \begin_layout Itemize
6947 Syntax: none memory.readhword({string marea, number address|ADDRESS addrobj})
6948 \end_layout
6950 \begin_layout Itemize
6951 Syntax: none memory.readdword({string marea, number address|ADDRESS addrobj})
6952 \end_layout
6954 \begin_layout Itemize
6955 Syntax: none memory.readqword({string marea, number address|ADDRESS addrobj})
6956 \end_layout
6958 \begin_layout Itemize
6959 Syntax: none memory.readsbyte({string marea, number address|ADDRESS addrobj})
6960 \end_layout
6962 \begin_layout Itemize
6963 Syntax: none memory.readsword({string marea, number address|ADDRESS addrobj})
6964 \end_layout
6966 \begin_layout Itemize
6967 Syntax: none memory.readshword({string marea, number address|ADDRESS addrobj})
6968 \end_layout
6970 \begin_layout Itemize
6971 Syntax: none memory.readsdword({string marea, number address|ADDRESS addrobj})
6972 \end_layout
6974 \begin_layout Itemize
6975 Syntax: none memory.readsqword({string marea, number address|ADDRESS addrobj})
6976 \end_layout
6978 \begin_layout Standard
6979 Reads the specified address <address> (if 's' variant is used, do undergo
6980  2's complement).
6981 \end_layout
6983 \begin_layout Subsection
6984 memory.{,s}read_sg: Scatter/Gather read memory
6985 \end_layout
6987 \begin_layout Itemize
6988 Syntax: none memory.read_sg(string/boolean/number...)
6989 \end_layout
6991 \begin_layout Itemize
6992 Syntax: none memory.sread_sg(string/boolean/number...)
6993 \end_layout
6995 \begin_layout Standard
6996 Perform (2s complement signed if using memory.sread_sg) scatter/gather read
6997  of memory.
6998  Each argument can be string, boolean or number:
6999 \end_layout
7001 \begin_layout Itemize
7002 String: Set memory area addresses are relative to (e.g.
7003  'WRAM').
7004 \end_layout
7006 \begin_layout Itemize
7007 boolean: If true, increment relative address by 1, if false, decrement by
7008  1.
7009  The new address is read as next higher byte.
7010 \end_layout
7012 \begin_layout Itemize
7013 integer: Set the relative address to specified value and read the address
7014  as next higher byte.
7015 \end_layout
7017 \begin_layout Subsection
7018 memory.write_sg: Scatter/Gather write memory
7019 \end_layout
7021 \begin_layout Itemize
7022 Syntax: none memory.write_sg(number value, string/boolean/number...)
7023 \end_layout
7025 \begin_layout Standard
7026 Perform scatter/gather write of value <value> on memory.
7027  Each argument can be string, boolean or number:
7028 \end_layout
7030 \begin_layout Itemize
7031 String: Set memory area addresses are relative to (e.g.
7032  'WRAM').
7033 \end_layout
7035 \begin_layout Itemize
7036 boolean: If true, increment relative address by 1, if false, decrement by
7037  1.
7038  The new address is read as next higher byte.
7039 \end_layout
7041 \begin_layout Itemize
7042 integer: Set the relative address to specified value and read the address
7043  as next higher byte.
7044 \end_layout
7046 \begin_layout Subsection
7047 memory.read{float,double}: Read memory
7048 \end_layout
7050 \begin_layout Itemize
7051 Syntax: none memory.readfloat({string marea, number address|ADDRESS addrobj})
7052 \end_layout
7054 \begin_layout Itemize
7055 Syntax: none memory.readdouble({string marea, number address|ADDRESS addrobj})
7056 \end_layout
7058 \begin_layout Standard
7059 Reads the specified address <address>
7060 \end_layout
7062 \begin_layout Subsection
7063 memory.write{byte,{,h,d,q}word,float,double}: Write memory
7064 \end_layout
7066 \begin_layout Itemize
7067 Syntax: none memory.writebyte({string marea, number address|ADDRESS addrobj},
7068  number value)
7069 \end_layout
7071 \begin_layout Itemize
7072 Syntax: none memory.writeword({string marea, number address|ADDRESS addrobj},
7073  number value)
7074 \end_layout
7076 \begin_layout Itemize
7077 Syntax: none memory.writehword({string marea, number address|ADDRESS addrobj},
7078  number value)
7079 \end_layout
7081 \begin_layout Itemize
7082 Syntax: none memory.writedword({string marea, number address|ADDRESS addrobj},
7083  number value)
7084 \end_layout
7086 \begin_layout Itemize
7087 Syntax: none memory.writeqword({string marea, number address|ADDRESS addrobj},
7088  number value)
7089 \end_layout
7091 \begin_layout Itemize
7092 Syntax: none memory.writefloat({string marea, number address|ADDRESS addrobj},
7093  number value)
7094 \end_layout
7096 \begin_layout Itemize
7097 Syntax: none memory.writedouble({string marea, number address|ADDRESS addrobj},
7098  number value)
7099 \end_layout
7101 \begin_layout Standard
7102 Writes the specified value <value> (negative integer values undergo 2's
7103  complement) to specified address <address>.
7104 \end_layout
7106 \begin_layout Subsection
7107 memory.map{{,s}{byte,{,h,d,q}word},float,double}: Map an array
7108 \end_layout
7110 \begin_layout Itemize
7111 Syntax: userdata memory.map<type>({string marea, number base|ADDRESS addrobj},
7112  number size)
7113 \end_layout
7115 \begin_layout Standard
7116 Returns a table mapping specified memory aperture for read/write.
7117 \end_layout
7119 \begin_layout Itemize
7120 Type may be one of: byte, sbyte, word, sword, hword, shword, dword, sdword,
7121  qword, sqword, float or double.
7122 \end_layout
7124 \begin_layout Subsection
7125 memory.hash_region: Hash region of memory
7126 \end_layout
7128 \begin_layout Itemize
7129 Syntax: string memory.hash_region({string marea, number base|ADDRESS addrobj},
7130  number size)
7131 \end_layout
7133 \begin_layout Standard
7134 Hash <size> bytes starting from address <base> (relative to <marea>) and
7135  return the SHA-256.
7136 \end_layout
7138 \begin_layout Subsection
7139 memory.hash_region2: Hash region of memory
7140 \end_layout
7142 \begin_layout Itemize
7143 Syntax: string memory.hash_region2({string marea, number base|ADDRESS addrobj},
7144  number size[, number rows, number stride])
7145 \end_layout
7147 \begin_layout Standard
7148 Hash <rows> blocks of <size> bytes starting from address <base> (relative
7149  to <marea>).
7150  The blocks are offset by <stride> from one another and return the SHA-256.
7151 \end_layout
7153 \begin_layout Subsection
7154 memory.hash_region_skein: Hash region of memory
7155 \end_layout
7157 \begin_layout Itemize
7158 Syntax: string memory.hash_region_skein({string marea, number base|ADDRESS
7159  addrobj}, number size[, number rows, number stride])
7160 \end_layout
7162 \begin_layout Standard
7163 Same as memory.hash_region2, but uses Skein-512-256 (v1.3; one of the SHA-3
7164  finalists) as hash function.
7165 \end_layout
7167 \begin_layout Subsection
7168 memory.store: Store region of memory
7169 \end_layout
7171 \begin_layout Itemize
7172 Syntax: none memory.store({string marea, number addr|ADDRESS addrobj}, number
7173  daddr[, number rows, number stride]
7174 \end_layout
7176 \begin_layout Standard
7177 Copy memory starting from <addr> in memory area <marea> (each row being
7178  of size <size>, there being <rows> rows, and rows being separated by <stride>
7179  in memory) into savestate-saved memory area, starting from <daadr> (all
7180  rows are written back to back).
7181 \end_layout
7183 \begin_layout Subsection
7184 memory.storecmp: Compare and store region of memory
7185 \end_layout
7187 \begin_layout Itemize
7188 Syntax: bool memory.storecmp({string marea, number addr|ADDRESS addrobj},
7189  number daddr[, number rows, number stride]
7190 \end_layout
7192 \begin_layout Standard
7193 Like memory.store, but returns true if target of copy already held the value
7194  that would be copied before the copy happened.
7195  Otherwise returns false (if target and source differ before copy).
7196 \end_layout
7198 \begin_layout Subsection
7199 memory.hash_state: Hash system state
7200 \end_layout
7202 \begin_layout Itemize
7203 Syntax: string memory.hash_state()
7204 \end_layout
7206 \begin_layout Standard
7207 Hash the current system state.
7208  Mainly useful for debugging savestates.
7209 \end_layout
7211 \begin_layout Subsection
7212 memory.readregion: Read region of memory
7213 \end_layout
7215 \begin_layout Itemize
7216 Syntax: table memory.readregion({string marea, number base|ADDRESS addrobj},
7217  number size)
7218 \end_layout
7220 \begin_layout Standard
7221 Read a region of memory.
7222 \end_layout
7224 \begin_layout Itemize
7225 Warning: If the region crosses memory area boundary, the results are undefined.
7226 \end_layout
7228 \begin_layout Subsection
7229 memory.writeregion: Write region of memory
7230 \end_layout
7232 \begin_layout Itemize
7233 Syntax: none memory.writeregion({string marea, number base|ADDRESS addrobj},
7234  number size, table data)
7235 \end_layout
7237 \begin_layout Standard
7238 Write a region of memory.
7239 \end_layout
7241 \begin_layout Itemize
7242 Warning: If the region crosses memory area boundary, the results are undefined.
7243 \end_layout
7245 \begin_layout Subsection
7246 memory.action: Run core action
7247 \end_layout
7249 \begin_layout Itemize
7250 memory.action(string action, [<params>])
7251 \end_layout
7253 \begin_layout Standard
7254 Run core action.
7255  The different models expect parameters as:
7256 \end_layout
7258 \begin_layout Itemize
7259 string: String
7260 \end_layout
7262 \begin_layout Itemize
7263 numeric: numeric
7264 \end_layout
7266 \begin_layout Itemize
7267 enumeration: String
7268 \end_layout
7270 \begin_layout Itemize
7271 boolean: String
7272 \end_layout
7274 \begin_layout Itemize
7275 toggle: None.
7276 \end_layout
7278 \begin_layout Subsection
7279 memory.get_lag_flag: Get lag flag
7280 \end_layout
7282 \begin_layout Itemize
7283 Syntax: boolean memory.get_lag_flag()
7284 \end_layout
7286 \begin_layout Standard
7287 Get the value of core lag flag.
7288  True if this frame has been lag so far, false if poll has been detected.
7289 \end_layout
7291 \begin_layout Subsection
7292 memory.set_lag_flag: Set lag flag
7293 \end_layout
7295 \begin_layout Itemize
7296 Syntax: none memory.set_lag_flag(boolean flag)
7297 \end_layout
7299 \begin_layout Standard
7300 Set the value of core lag flag.
7301  This flag automatically gets cleared if poll is detected, but can be forcibly
7302  set or cleared if game so requires.
7303 \end_layout
7305 \begin_layout Itemize
7306 Should only be used in on_frame_emulated callback.
7307 \end_layout
7309 \begin_layout Itemize
7310 Setting or clearing this affects the emulator lag counter.
7311 \end_layout
7313 \begin_layout Subsection
7314 memory.{,un}register{read,write,exec}: (Un)Register read / write / execute
7315  callback
7316 \end_layout
7318 \begin_layout Itemize
7319 Syntax: function memory.registerread({string marea, number addr|ADDRESS addrobj},
7320  function fn);
7321 \end_layout
7323 \begin_layout Itemize
7324 Syntax: function memory.registerwrite({string marea, number addr|ADDRESS
7325  addrobj}, function fn);
7326 \end_layout
7328 \begin_layout Itemize
7329 Syntax: function memory.registerexec({string marea, number addr|ADDRESS addrobj},
7330  function fn);
7331 \end_layout
7333 \begin_layout Itemize
7334 Syntax: none memory.unregisterread({string marea, number addr|ADDRESS addrobj},
7335  function fn);
7336 \end_layout
7338 \begin_layout Itemize
7339 Syntax: none memory.unregisterwrite({string marea, number addr|ADDRESS addrobj},
7340  function fn);
7341 \end_layout
7343 \begin_layout Itemize
7344 Syntax: none memory.unregisterexec({string marea, number addr|ADDRESS addrobj},
7345  function fn);
7346 \end_layout
7348 \begin_layout Standard
7349 Add or remove callback on memory read, write or execute (depending on the
7350  function).
7351  <addr> is relative to <marea>.
7352  <fn> is the callback.
7353  The register* functions return <fn> (which can then be passed to unregister*
7354  functions.
7355 \end_layout
7357 \begin_layout Itemize
7358 Not all cores support this, and it may be unsupported for some memory areas.
7359 \end_layout
7361 \begin_layout Itemize
7362 The functions are passed two parameters: Address and value.
7363 \end_layout
7365 \begin_layout Subsection
7366 memory.{,un}registertrace: Set/Clear trace hook
7367 \end_layout
7369 \begin_layout Itemize
7370 Syntax: function memory.registertrace(number processor, function fn);
7371 \end_layout
7373 \begin_layout Itemize
7374 Syntax: none memory.unregistertrace(number processor, function fn);
7375 \end_layout
7377 \begin_layout Standard
7378 Add or remove trace callback.
7379  <processor> is system-dependent processor number (0 is usually main CPU).
7380  The function arguments work like in other (un)register* functions.
7381 \end_layout
7383 \begin_layout Itemize
7384 The functions are passed two parameters: Trace CPU and Trace event string.
7385 \end_layout
7387 \begin_layout Subsection
7388 memory.cheat: Set cheat
7389 \end_layout
7391 \begin_layout Itemize
7392 Syntax: none memory.cheat({string marea, number addr|ADDRESS addrobj}, number
7393  value);
7394 \end_layout
7396 \begin_layout Itemize
7397 Syntax: none memory.cheat({string marea, number addr|ADDRESS addrobj});
7398 \end_layout
7400 \begin_layout Standard
7401 Set or clear cheat (value <value>) on address <addr> (relative to <marea>).
7402  If <value> is not speicified, clear a cheat.
7403 \end_layout
7405 \begin_layout Itemize
7406 Not all cores support this, and it may be unsupported for some memory areas.
7407 \end_layout
7409 \begin_layout Subsection
7410 memory.setxmask: Set global execute hook mask
7411 \end_layout
7413 \begin_layout Itemize
7414 Syntax: none memory.setxmask(number mask)
7415 \end_layout
7417 \begin_layout Standard
7418 Set the global execute hook mask to <mask>.
7419  The meaning of each bit is system-dependent, but bit 0 should be the main
7420  CPU.
7421 \end_layout
7423 \begin_layout Subsection
7424 memory.getregister: Get register value
7425 \end_layout
7427 \begin_layout Itemize
7428 Syntax: number/boolean memory.getregister(string register)
7429 \end_layout
7431 \begin_layout Standard
7432 Get the value of named register.
7433 \end_layout
7435 \begin_layout Subsection
7436 memory.getregisters: Get register values
7437 \end_layout
7439 \begin_layout Itemize
7440 Syntax: table memory.getregisters()
7441 \end_layout
7443 \begin_layout Standard
7444 Get the value of all known registers as table.
7445 \end_layout
7447 \begin_layout Subsection
7448 memory.setregister: Set register value
7449 \end_layout
7451 \begin_layout Itemize
7452 Syntax: none memory.setregister(string register, number/boolean value)
7453 \end_layout
7455 \begin_layout Standard
7456 Set the value of named register.
7457 \end_layout
7459 \begin_layout Subsection
7460 memory.mmap: Class MMAP_STRUCT
7461 \end_layout
7463 \begin_layout Standard
7464 See class MMAP_STRUCT
7465 \end_layout
7467 \begin_layout Standard
7468 \begin_inset Newpage pagebreak
7469 \end_inset
7472 \end_layout
7474 \begin_layout Section
7475 Table memory2
7476 \end_layout
7478 \begin_layout Standard
7479 Contains newer memory functions.
7480 \end_layout
7482 \begin_layout Subsection
7483 memory2(): Get all memory area names.
7484 \end_layout
7486 \begin_layout Itemize
7487 Syntax: table memory2()
7488 \end_layout
7490 \begin_layout Standard
7491 Returns array of all valid memory area names.
7492 \end_layout
7494 \begin_layout Subsection
7495 memory2.<marea>:info: Get memory area info
7496 \end_layout
7498 \begin_layout Itemize
7499 Syntax: table memory2.<marea>:info()
7500 \end_layout
7502 \begin_layout Standard
7503 Return table describing given memory area.
7504  Includes fields address, size, last, readonly, special and endian.
7505 \end_layout
7507 \begin_layout Subsection
7508 memory2.<marea>:<op>: Read/Write memory
7509 \end_layout
7511 \begin_layout Itemize
7512 Syntax: none memory2.<marea>:<op>(number offset, number value)
7513 \end_layout
7515 \begin_layout Itemize
7516 Syntax: number memory2.<marea>:<op>(number offset)
7517 \end_layout
7519 \begin_layout Standard
7520 Read/Write value from/to given memory area <marea> at given offset <offset>
7521  (must be in-range).
7522  The value written is <value>.
7523  <Op> is of form: [i][s]<type>, where:
7524 \end_layout
7526 \begin_layout Itemize
7527 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
7528 \end_layout
7530 \begin_layout Itemize
7531 'i' signifies that the value is treated as opposite-to-normal endianess,
7532 \end_layout
7534 \begin_layout Itemize
7535 's' signifies that value is treated as signed (not available for floating-point).
7536 \end_layout
7538 \begin_layout Subsection
7539 memory2.<marea>:read: Scatter-gather value read
7540 \end_layout
7542 \begin_layout Itemize
7543 Syntax: number memory2.<marea>:read(number addr...)
7544 \end_layout
7546 \begin_layout Standard
7547 Read value from given memory area <marea> at byte offsets <addr>..., given
7548  in order of increasing significance.
7549  Value of true and false are special.
7550  True increments address by 1, and false decrements address by 1.
7551 \end_layout
7553 \begin_layout Subsection
7554 memory2.<marea>:sread: Signed scatter-gather value read
7555 \end_layout
7557 \begin_layout Itemize
7558 Syntax: number memory2.<marea>:sread(number addr...)
7559 \end_layout
7561 \begin_layout Standard
7562 Like memory2.<marea>:read, but reads signed values.
7563 \end_layout
7565 \begin_layout Subsection
7566 memory2.<marea>:write: Scatter-gather value write
7567 \end_layout
7569 \begin_layout Itemize
7570 Syntax: number memory2.<marea>:write(number val, number addr...)
7571 \end_layout
7573 \begin_layout Standard
7574 Write value <val> to given memory area <marea> at byte offsets <addr>..., given
7575  in order of increasing significance.
7576  Value of true and false are special.
7577  True increments address by 1, and false decrements address by 1.
7578 \end_layout
7580 \begin_layout Subsection
7581 memory2.<marea>:cheat: Set/Clear cheat
7582 \end_layout
7584 \begin_layout Itemize
7585 Syntax: none memory2.<marea>:cheat(number addr, [number value])
7586 \end_layout
7588 \begin_layout Standard
7589 Set/Clear cheat at offset <addr> of memory area <marea>.
7590  If <value> is given, cheat with specified value is set.
7591  Otherwise cheat on address is removed.
7592 \end_layout
7594 \begin_layout Subsection
7595 memory2.<marea>:sha256: SHA-256
7596 \end_layout
7598 \begin_layout Itemize
7599 Syntax: string memory2.<marea>:sha256(number addr, number size[, number rows,
7600  number stride])
7601 \end_layout
7603 \begin_layout Standard
7604 Compute SHA-256 of <rows> (default 1) chunks of <size> bytes each, starting
7605  from offset <addr> of area <marea>.
7606  The chunks are separated by <stride>.
7607 \end_layout
7609 \begin_layout Subsection
7610 memory2.<marea>:skein: Skein-512-256
7611 \end_layout
7613 \begin_layout Itemize
7614 Syntax: string memory2.<marea>:skein(number addr, number size[, number rows,
7615  number stride])
7616 \end_layout
7618 \begin_layout Standard
7619 Same as memory2.<marea>:sha256, except with Skein-512-256 as hash function.
7620 \end_layout
7622 \begin_layout Subsection
7623 memory2.<marea>:store{,cmp}: Copy region to Lua memory with compare
7624 \end_layout
7626 \begin_layout Itemize
7627 Syntax: none memory2.<marea>:store(number addr, number daddr, number size[,
7628  number rows, number stride])
7629 \end_layout
7631 \begin_layout Itemize
7632 Syntax: boolean memory2.<marea>:storecmp(number addr, number daddr, number
7633  size[, number rows, number stride])
7634 \end_layout
7636 \begin_layout Standard
7637 Copy <rows> (default 1) chunks of <size> bytes each, starting from offset
7638  <addr> of area <marea>.
7639  The chunks are separated by <stride>.
7640  The target is Lua host memory, starting from offset <daddr>.
7641 \end_layout
7643 \begin_layout Standard
7644 Additionally, the storecmp method returns false if target was modified (otherwis
7645 e true).
7646 \end_layout
7648 \begin_layout Subsection
7649 memory2.<marea>:readregion: Read region
7650 \end_layout
7652 \begin_layout Itemize
7653 Syntax table memory2.<marea>:readregion(number addr, number size)
7654 \end_layout
7656 \begin_layout Standard
7657 Read <size> bytes starting from <addr> in <marea> and return as array.
7658 \end_layout
7660 \begin_layout Subsection
7661 memory2.<marea>:writeregion: Write region
7662 \end_layout
7664 \begin_layout Itemize
7665 Syntax none memory2.<marea>:writeregion(number addr, table data)
7666 \end_layout
7668 \begin_layout Standard
7669 Write array <data> to bytes starting from <addr> in <marea>.
7670 \end_layout
7672 \begin_layout Subsection
7673 memory2.<marea>:register{read,write,exec}: Register hook
7674 \end_layout
7676 \begin_layout Itemize
7677 Syntax: function memory2.<marea>:registerread(number addr, function fn);
7678 \end_layout
7680 \begin_layout Itemize
7681 Syntax: function memory2.<marea>:registerwrite(number addr, function fn);
7682 \end_layout
7684 \begin_layout Itemize
7685 Syntax: function memory2.<marea>:registerexec(number addr, function fn);
7686 \end_layout
7688 \begin_layout Standard
7689 Register debug callback <fn> of specified type at offset <addr> of memory
7690  area <marea>.
7691  Returns <fn>.
7692 \end_layout
7694 \begin_layout Subsection
7695 memory2.<marea>:unregister{read,write,exec}: Unregister hook
7696 \end_layout
7698 \begin_layout Itemize
7699 Syntax: none memory2.<marea>:unregisterread(number addr, function fn);
7700 \end_layout
7702 \begin_layout Itemize
7703 Syntax: none memory2.<marea>:unregisterwrite(number addr, function fn);
7704 \end_layout
7706 \begin_layout Itemize
7707 Syntax: none memory2.<marea>:unregisterexec(number addr, function fn);
7708 \end_layout
7710 \begin_layout Standard
7711 Unregister debug callback <fn> of specified type at offset <addr> of memory
7712  area <marea>.
7713 \end_layout
7715 \begin_layout Standard
7716 \begin_inset Newpage pagebreak
7717 \end_inset
7720 \end_layout
7722 \begin_layout Section
7723 Table random
7724 \end_layout
7726 \begin_layout Standard
7727 Contains random number generation methods.
7728  These functions do not return reproducable results.
7729 \end_layout
7731 \begin_layout Subsection
7732 random.boolean: Random boolean
7733 \end_layout
7735 \begin_layout Itemize
7736 Syntax: boolean random.boolean()
7737 \end_layout
7739 \begin_layout Standard
7740 Returns true or false at random (50-50 chance).
7741 \end_layout
7743 \begin_layout Subsection
7744 random.integer: Random integer
7745 \end_layout
7747 \begin_layout Itemize
7748 Syntax: number random.integer(number highplusone)
7749 \end_layout
7751 \begin_layout Itemize
7752 Syntax: number random.integer(number low, number high)
7753 \end_layout
7755 \begin_layout Standard
7756 With one argument, return random integer [0,<highplusone>) (upper end exclusive).
7757  With two arguments, return random integer [<low>,<high>] (both ends inclusive).
7758 \end_layout
7760 \begin_layout Standard
7761 The returned numbers are from uniform distribution.
7762 \end_layout
7764 \begin_layout Subsection
7765 random.float: Random float
7766 \end_layout
7768 \begin_layout Itemize
7769 Syntax: number random.float()
7770 \end_layout
7772 \begin_layout Standard
7773 Returns random decimal number [0,1).
7774 \end_layout
7776 \begin_layout Subsection
7777 random.among: Random parameter
7778 \end_layout
7780 \begin_layout Itemize
7781 Syntax: value random.among(value values...)
7782 \end_layout
7784 \begin_layout Standard
7785 Returns random parameter value, picked at uniform.
7786  Multiple equivalent values are returned with higher chance.
7787 \end_layout
7789 \begin_layout Subsection
7790 random.amongtable: Random from table
7791 \end_layout
7793 \begin_layout Itemize
7794 Syntax: value random.amongtable(table tab)
7795 \end_layout
7797 \begin_layout Standard
7798 Returns random value from table <tab>.
7799  As in random.among, no equality testing is done.
7800 \end_layout
7802 \begin_layout Standard
7803 \begin_inset Newpage pagebreak
7804 \end_inset
7807 \end_layout
7809 \begin_layout Section
7810 Table zip
7811 \end_layout
7813 \begin_layout Subsection
7814 zip.enumerate: Enumerate members in zipfile
7815 \end_layout
7817 \begin_layout Itemize
7818 Syntax: Table zip.enumerate(string filename[, boolean invert])
7819 \end_layout
7821 \begin_layout Standard
7822 Returns table of files in zip archive <filename>.
7823  If <invert> is true, instead of returning array of names, returns table
7824  with keys being member names and values being true.
7825 \end_layout
7827 \begin_layout Subsection
7828 zip.writer: Class ZIPWRITER
7829 \end_layout
7831 \begin_layout Standard
7832 See class ZIPWRITER.
7833 \end_layout
7835 \begin_layout Standard
7836 \begin_inset Newpage pagebreak
7837 \end_inset
7840 \end_layout
7842 \begin_layout Section
7843 Table callback
7844 \end_layout
7846 \begin_layout Standard
7847 Various callback-related functions.
7848 \end_layout
7850 \begin_layout Subsection
7851 \begin_inset CommandInset label
7852 LatexCommand label
7853 name "sub:callback.register:-Register-a"
7855 \end_inset
7857 callback.register: Register a callback
7858 \end_layout
7860 \begin_layout Itemize
7861 Syntax: function callback.register(string cbname, function cbfun);
7862 \end_layout
7864 \begin_layout Standard
7865 Instruct function <cbfun> to be added to list of callbacks to call on event
7866  <cbname> (See section 
7867 \begin_inset CommandInset ref
7868 LatexCommand ref
7869 reference "sec:Callbacks"
7871 \end_inset
7874  The callback name does not have the 'on_' prefix (e.g.
7876 \begin_inset Quotes eld
7877 \end_inset
7879 paint
7880 \begin_inset Quotes erd
7881 \end_inset
7884  Returns <cbfun>.
7885 \end_layout
7887 \begin_layout Subsection
7888 \begin_inset CommandInset label
7889 LatexCommand label
7890 name "sub:callback.unregister:-Unregister-"
7892 \end_inset
7894 callback.unregister: Unregister a callback
7895 \end_layout
7897 \begin_layout Itemize
7898 Syntax: function callback.unregister(string cbname, function cbfun);
7899 \end_layout
7901 \begin_layout Standard
7902 Instruct function <cbfun> to be removed from list of callbacks to call on
7903  event <cbname>.
7904 \end_layout
7906 \begin_layout Subsection
7907 callback.<cbname>:register: Register callback
7908 \end_layout
7910 \begin_layout Itemize
7911 Syntax: function callback.<cbname>:register(function cbfun)
7912 \end_layout
7914 \begin_layout Standard
7915 Synonym for callback.register (section 
7916 \begin_inset CommandInset ref
7917 LatexCommand ref
7918 reference "sub:callback.register:-Register-a"
7920 \end_inset
7922 ), albeit with callback name specified differently.
7923 \end_layout
7925 \begin_layout Subsection
7926 callback.<cbname>:unregister: Register callback
7927 \end_layout
7929 \begin_layout Itemize
7930 Syntax: function callback.<cbname>:unregister(function cbfun)
7931 \end_layout
7933 \begin_layout Standard
7934 Synonym for callback.unregister (section 
7935 \begin_inset CommandInset ref
7936 LatexCommand ref
7937 reference "sub:callback.unregister:-Unregister-"
7939 \end_inset
7941 ), albeit with callback name specified differently.
7942 \end_layout
7944 \begin_layout Section
7945 table bsnes
7946 \end_layout
7948 \begin_layout Standard
7949 Various bsnes-specific functions.
7950 \end_layout
7952 \begin_layout Subsection
7953 bsnes.dump_sprite: Dump a sprite
7954 \end_layout
7956 \begin_layout Itemize
7957 Syntax: BITMAP bsnes.dump_sprite(string marea, number addr, number width,
7958  number height[, number stride])
7959 \end_layout
7961 \begin_layout Standard
7962 Dumps given sprite (in native format) from memory.
7963  memory area is usually 
7964 \begin_inset Quotes eld
7965 \end_inset
7967 VRAM
7968 \begin_inset Quotes erd
7969 \end_inset
7972  <Width> and <height> are given in 8x8 blocks.
7973  <Stride> overrides row stride (default 512).
7974 \end_layout
7976 \begin_layout Subsection
7977 bsnes.dump_palette: Dump a palette
7978 \end_layout
7980 \begin_layout Itemize
7981 Syntax: PALETTE bsnes.dump_palette(string marea, number addr, bool full256,
7982  bool first_trans)
7983 \end_layout
7985 \begin_layout Standard
7986 Dumps a palette from memory.
7987  memory area is usually 
7988 \begin_inset Quotes eld
7989 \end_inset
7991 CGRAM
7992 \begin_inset Quotes erd
7993 \end_inset
7996  If <full256> is true, 256 colors are dumped (otherwise 16).
7997  If <first_trans> is true, first color is forced transparent.
7998 \end_layout
8000 \begin_layout Subsection
8001 bsnes.enablelayer: Set layer visibility
8002 \end_layout
8004 \begin_layout Itemize
8005 Syntax: none bsnes.enablelayer(number layer, number priority, boolean enabled)
8006 \end_layout
8008 \begin_layout Standard
8009 Enable or disable specified layer at specified priority.
8010 \end_layout
8012 \begin_layout Subsection
8013 bsnes.redump_sprite: Redump a sprite
8014 \end_layout
8016 \begin_layout Itemize
8017 Syntax: none bsnes.redump_sprite(BITMAP bitmap, string marea, number addr[,
8018  number stride])
8019 \end_layout
8021 \begin_layout Standard
8022 Like bsnes.dump_sprite, but instead dumps to specified bitmap <bitmap>.
8023  The specified bitmap must have size multiple of 8x8.
8024 \end_layout
8026 \begin_layout Subsection
8027 bsnes.redump_palette: Redump a palette
8028 \end_layout
8030 \begin_layout Itemize
8031 Syntax: none bsnes.dump_palette(PALETTE pal, string marea, number addr, bool
8032  first_trans)
8033 \end_layout
8035 \begin_layout Standard
8036 Like bsnes.dump_palette, but instead dumps to specified palette <pal>.
8037  The specified palette must have either 16 or 256 colors.
8038 \end_layout
8040 \begin_layout Section
8041 extensions to table string
8042 \end_layout
8044 \begin_layout Subsection
8045 string.charU: string.char, UTF-8 version.
8046 \end_layout
8048 \begin_layout Itemize
8049 Syntax: string string.charU(number n...)
8050 \end_layout
8052 \begin_layout Standard
8053 Like Lua string.char(), but works in terms of Unicode codepoints.
8054  The returned string is UTF-8.
8055 \end_layout
8057 \begin_layout Subsection
8058 string.byteU: string.byte, UTF-8 version.
8059 \end_layout
8061 \begin_layout Itemize
8062 Syntax: number...
8063  string.byteU(string str[, number i[, number j]])
8064 \end_layout
8066 \begin_layout Standard
8067 Like string.byte(), but works in terms of Unicode codepoints.
8068  The input string <str> is assumed UTF-8.
8069 \end_layout
8071 \begin_layout Subsection
8072 string.regex: Match string against regular expression
8073 \end_layout
8075 \begin_layout Itemize
8076 Syntax: boolean/string...
8077  string.regex(string regexp, string against)
8078 \end_layout
8080 \begin_layout Standard
8081 Match POSIX-extended regular expression <regexp> against string <against>.
8082  If no match, false is returned.
8083  Otherwise if string has no subcaptures, true is returned.
8084  Otherwise each subcapture is returned as a string (in order of starting
8085  position).
8086 \end_layout
8088 \begin_layout Subsection
8089 string.hex: Transform integer into hex string
8090 \end_layout
8092 \begin_layout Itemize
8093 Syntax: string string.hex(number n, [number digits])
8094 \end_layout
8096 \begin_layout Standard
8097 Returns hexadecimal string representation of <n>, optionally padded with
8098  zeroes to <digits> digits (default is not to pad).
8099 \end_layout
8101 \begin_layout Subsection
8102 string.lpad: Pad string with spaces from left
8103 \end_layout
8105 \begin_layout Itemize
8106 Syntax: string string.lpad(string x, number n)
8107 \end_layout
8109 \begin_layout Standard
8110 Pad string <x> to <n> bytes by inserting spaces at start and return the
8111  result.
8112 \end_layout
8114 \begin_layout Subsection
8115 string.rpad: Pad string with spaces from right
8116 \end_layout
8118 \begin_layout Itemize
8119 Syntax: string string.rpad(string x, number n)
8120 \end_layout
8122 \begin_layout Standard
8123 Pad string <x> to <n> bytes by inserting spaces at end and return the result.
8124 \end_layout
8126 \begin_layout Section
8127 Table _SYSTEM
8128 \end_layout
8130 \begin_layout Standard
8131 Contains copy of global variables from time of Lua initialization.
8132  Non-writeable.
8133 \end_layout
8135 \begin_layout Standard
8136 \begin_inset Newpage pagebreak
8137 \end_inset
8140 \end_layout
8142 \begin_layout Section
8143 \begin_inset CommandInset label
8144 LatexCommand label
8145 name "sec:Callbacks"
8147 \end_inset
8149 Callbacks
8150 \end_layout
8152 \begin_layout Standard
8153 Various callbacks to Lua that can occur.
8154 \end_layout
8156 \begin_layout Subsection
8157 on_paint: Screen is being painted
8158 \end_layout
8160 \begin_layout Itemize
8161 Callback: on_paint(bool not_synth)
8162 \end_layout
8164 \begin_layout Standard
8165 Called when screen is being painted.
8166  Any gui.* calls requiring graphic context draw on the screen.
8167 \end_layout
8169 \begin_layout Itemize
8170 not_synth is true if this hook is being called in response to received frame,
8171  false otherwise.
8172 \end_layout
8174 \begin_layout Subsection
8175 on_video: Dumped video frame is being painted
8176 \end_layout
8178 \begin_layout Itemize
8179 Callback: on_video()
8180 \end_layout
8182 \begin_layout Standard
8183 Called when video dump frame is being painted.
8184  Any gui.* calls requiring graphic context draw on the video.
8185 \end_layout
8187 \begin_layout Subsection
8188 on_frame_emulated: Frame emulation complete
8189 \end_layout
8191 \begin_layout Itemize
8192 Callback: on_frame_emulated()
8193 \end_layout
8195 \begin_layout Standard
8196 Called when emulating frame has completed and on_paint()/on_video() calls
8197  are about to be issued.
8198 \end_layout
8200 \begin_layout Subsection
8201 on_frame: Frame emulation starting.
8202 \end_layout
8204 \begin_layout Itemize
8205 Callback: on_frame()
8206 \end_layout
8208 \begin_layout Standard
8209 Called on each starting whole frame.
8210 \end_layout
8212 \begin_layout Subsection
8213 on_rewind: Movie rewound to beginning
8214 \end_layout
8216 \begin_layout Itemize
8217 Callback: on_rewind()
8218 \end_layout
8220 \begin_layout Standard
8221 Called when rewind movie to beginning has completed.
8222 \end_layout
8224 \begin_layout Subsection
8225 on_pre_load: Load operation is about to start
8226 \end_layout
8228 \begin_layout Itemize
8229 Callback: on_pre_load(string name)
8230 \end_layout
8232 \begin_layout Standard
8233 Called just before savestate/movie load occurs (note: loads are always delayed,
8234  so this occurs even when load was initiated by lua).
8235 \end_layout
8237 \begin_layout Subsection
8238 on_err_Load: Load failed
8239 \end_layout
8241 \begin_layout Itemize
8242 Callback: on_err_load(string name)
8243 \end_layout
8245 \begin_layout Standard
8246 Called if loadstate goes wrong.
8247 \end_layout
8249 \begin_layout Subsection
8250 on_post_load: Load completed
8251 \end_layout
8253 \begin_layout Itemize
8254 Callback: on_post_load(string name, boolean was_savestate)
8255 \end_layout
8257 \begin_layout Standard
8258 Called on successful loadstate.
8259  was_savestate gives if this was a savestate or a movie.
8260 \end_layout
8262 \begin_layout Subsection
8263 on_pre_save: Save operation is about to start
8264 \end_layout
8266 \begin_layout Itemize
8267 Callback: on_pre_save(string name, boolean is_savestate)
8268 \end_layout
8270 \begin_layout Standard
8271 Called just before savestate save occurs (note: movie saves are synchronous
8272  and won't trigger these callbacks if called from Lua).
8273 \end_layout
8275 \begin_layout Subsection
8276 on_err_save: Save failed
8277 \end_layout
8279 \begin_layout Itemize
8280 Callback: on_err_save(string name)
8281 \end_layout
8283 \begin_layout Standard
8284 Called if savestate goes wrong.
8285 \end_layout
8287 \begin_layout Subsection
8288 on_post_save: Save completed
8289 \end_layout
8291 \begin_layout Itemize
8292 Callback: on_post_save(string name, boolean is_savestate)
8293 \end_layout
8295 \begin_layout Standard
8296 Called on successful savaestate.
8297  is_savestate gives if this was a savestate or a movie.
8298 \end_layout
8300 \begin_layout Subsection
8301 on_quit: Emulator is shutting down
8302 \end_layout
8304 \begin_layout Itemize
8305 Callback: on_quit()
8306 \end_layout
8308 \begin_layout Standard
8309 Called when emulator is shutting down.
8310 \end_layout
8312 \begin_layout Subsection
8313 on_input: Polling for input
8314 \end_layout
8316 \begin_layout Standard
8317 Called when emulator is just sending input to bsnes core.
8318  Warning: This is called even in readonly mode, but the results are ignored.
8319 \end_layout
8321 \begin_layout Subsection
8322 on_reset: System has been reset
8323 \end_layout
8325 \begin_layout Itemize
8326 Callback: on_reset()
8327 \end_layout
8329 \begin_layout Standard
8330 Called when system is reset.
8331 \end_layout
8333 \begin_layout Subsection
8334 on_readwrite: Entered recording mode
8335 \end_layout
8337 \begin_layout Itemize
8338 Callback: on_readwrite()
8339 \end_layout
8341 \begin_layout Standard
8342 Called when moving into recording mode as result of 
8343 \begin_inset Quotes eld
8344 \end_inset
8346 set-rwmode
8347 \begin_inset Quotes erd
8348 \end_inset
8350  command (note: moving to rwmode by Lua won't trigger this, as per recursive
8351  entry protection).
8352 \end_layout
8354 \begin_layout Subsection
8355 on_snoop/on_snoop2: Snoop core controller reads
8356 \end_layout
8358 \begin_layout Itemize
8359 Callback: on_snoop(number port, number controller, number index, number
8360  value)
8361 \end_layout
8363 \begin_layout Itemize
8364 Callback: on_snoop2(number port, number controller, number index, number
8365  value)
8366 \end_layout
8368 \begin_layout Standard
8369 Called each time bsnes asks for input.
8370  The value is the final value to be sent to bsnes core (readonly mode, autohold
8371  and autofire have been taken into account).
8372  Might be useful when translating movies to format suitable for console
8373  verification.
8374  Note: There is no way to modify the value to be sent.
8375 \end_layout
8377 \begin_layout Itemize
8378 On_snoop2 is called instead of on_snoop if defined.
8379  Reserves port 0 for system, having first user port be port 1.
8380 \end_layout
8382 \begin_layout Subsection
8383 on_keyhook: Hooked key/axis has been moved
8384 \end_layout
8386 \begin_layout Itemize
8387 Callback: on_keyhook(string keyname, table state)
8388 \end_layout
8390 \begin_layout Standard
8391 Sent when key that has keyhook events requested changes state.
8392  Keyname is name of the key (group) and state is the state (same kind as
8393  table values in input.raw).
8394 \end_layout
8396 \begin_layout Subsection
8397 on_idle: Idle event
8398 \end_layout
8400 \begin_layout Itemize
8401 Callback: on_idle()
8402 \end_layout
8404 \begin_layout Standard
8405 Called when requested by set_idle_timeout(), the timeout has expired and
8406  emulator is waiting.
8407 \end_layout
8409 \begin_layout Subsection
8410 on_timer: Timer event
8411 \end_layout
8413 \begin_layout Itemize
8414 Callback: on_timer()
8415 \end_layout
8417 \begin_layout Standard
8418 Called when requested by set_idle_timeout() and the timeout has expired
8419  (regardless if emulator is waiting).
8420 \end_layout
8422 \begin_layout Subsection
8423 on_set_rewind: Rewind point has been set
8424 \end_layout
8426 \begin_layout Itemize
8427 Callback: on_set_rewind(UNSAFEREWIND r)
8428 \end_layout
8430 \begin_layout Standard
8431 Called when unsafe rewind object has been constructed.
8432 \end_layout
8434 \begin_layout Subsection
8435 on_pre_rewind: Rewind is about to occur
8436 \end_layout
8438 \begin_layout Itemize
8439 Callback: on_pre_rewind() 
8440 \end_layout
8442 \begin_layout Standard
8443 Called just before unsafe rewind is about to occur.
8444 \end_layout
8446 \begin_layout Subsection
8447 on_post_rewind: Rewind has occured
8448 \end_layout
8450 \begin_layout Itemize
8451 Callback: on_post_rewind() 
8452 \end_layout
8454 \begin_layout Standard
8455 Called just after unsafe rewind has occured.
8456 \end_layout
8458 \begin_layout Subsection
8459 on_button: Button has been pressed
8460 \end_layout
8462 \begin_layout Itemize
8463 Callback: on_button(number port, number controller, number index, string
8464  type)
8465 \end_layout
8467 \begin_layout Standard
8468 Called on controller button press, with following parameters:
8469 \end_layout
8471 \begin_layout Itemize
8472 port: Port number (0 is system)
8473 \end_layout
8475 \begin_layout Itemize
8476 controller: Controller within port
8477 \end_layout
8479 \begin_layout Itemize
8480 index: Index of button.
8481 \end_layout
8483 \begin_layout Itemize
8484 type: Type of event, one of:
8485 \end_layout
8487 \begin_deeper
8488 \begin_layout Itemize
8489 \begin_inset Quotes eld
8490 \end_inset
8492 pressed
8493 \begin_inset Quotes erd
8494 \end_inset
8496 : Button was pressed.
8497 \end_layout
8499 \begin_layout Itemize
8500 \begin_inset Quotes eld
8501 \end_inset
8503 released
8504 \begin_inset Quotes erd
8505 \end_inset
8507 : Button was released.
8508 \end_layout
8510 \begin_layout Itemize
8511 \begin_inset Quotes eld
8512 \end_inset
8514 hold
8515 \begin_inset Quotes erd
8516 \end_inset
8518 : Held.
8519 \end_layout
8521 \begin_layout Itemize
8522 \begin_inset Quotes eld
8523 \end_inset
8525 unhold
8526 \begin_inset Quotes erd
8527 \end_inset
8529 : Released from hold.
8530 \end_layout
8532 \begin_layout Itemize
8533 \begin_inset Quotes eld
8534 \end_inset
8536 type
8537 \begin_inset Quotes erd
8538 \end_inset
8540 : Typing input on button.
8541 \end_layout
8543 \begin_layout Itemize
8544 \begin_inset Quotes eld
8545 \end_inset
8547 untype
8548 \begin_inset Quotes erd
8549 \end_inset
8551 : Typing input undone.
8552 \end_layout
8554 \begin_layout Itemize
8555 \begin_inset Quotes eld
8556 \end_inset
8558 autofire <duty> <cycle>
8559 \begin_inset Quotes erd
8560 \end_inset
8562 : Autofire with specifie duty and cycle.
8563 \end_layout
8565 \begin_layout Itemize
8566 \begin_inset Quotes eld
8567 \end_inset
8569 autofire
8570 \begin_inset Quotes erd
8571 \end_inset
8573 : Stop autofire.
8574 \end_layout
8576 \begin_layout Itemize
8577 \begin_inset Quotes eld
8578 \end_inset
8580 analog
8581 \begin_inset Quotes erd
8582 \end_inset
8584 : Analog action on axis.
8585 \end_layout
8587 \end_deeper
8588 \begin_layout Subsection
8589 on_movie_lost: Movie data is about to be lost
8590 \end_layout
8592 \begin_layout Itemize
8593 Callback: on_movie_lost(STRING kind)
8594 \end_layout
8596 \begin_layout Standard
8597 Called just before something would happen that could lose movie data.
8598  Kind can be:
8599 \end_layout
8601 \begin_layout Itemize
8602 readwrite: Switching to recording mode.
8603 \end_layout
8605 \begin_layout Itemize
8606 reload: ROM is being reloaded in recording mode.
8607 \end_layout
8609 \begin_layout Itemize
8610 load: New movie is being loaded.
8611 \end_layout
8613 \begin_layout Itemize
8614 unsaferewind: Unsafe rewind is happening.
8615 \end_layout
8617 \begin_layout Subsection
8618 on_latch: Latch line is rising
8619 \end_layout
8621 \begin_layout Itemize
8622 Callback: on_latch(<core-dependent-parameters>)
8623 \end_layout
8625 \begin_layout Standard
8626 Called when latch line for controller is rising.
8627  Some cores may not support this.
8628 \end_layout
8630 \begin_layout Section
8631 System-dependent behaviour
8632 \end_layout
8634 \begin_layout Subsection
8635 bsnes core
8636 \end_layout
8638 \begin_layout Itemize
8639 Registers are: pbpc, pb, pc, r0, r1, r2, r3, r4, r5, a, x, y, z, s, d, db,
8640  p, e, irq, wai, mdr, vector, aa, rd, sp, dp, p_n, p_v, p_m, p_x, p_d, p_i,
8641  p_z, p_c, ppu_display_disabled, ppu_oam_priority, ppu_bg_tilesize[0], ppu_bg_ti
8642 lesize[1], ppu_bg_tilesize[2], ppu_bg_tilesize[3], ppu_bg3_priority, ppu_mosaic_
8643 enabled[0], ppu_mosaic_enabled[1], ppu_mosaic_enabled[2], ppu_mosaic_enabled[3],
8644  ppu_vram_incmode, ppu_mode7_vflip, ppu_mode7_hflip, ppu_window1_enabled[0],
8645  ppu_window1_enabled[1], ppu_window1_enabled[2], ppu_window1_enabled[3],
8646  ppu_window1_enabled[4], ppu_window1_enabled[5], ppu_window1_invert[0],
8647  ppu_window1_invert[1], ppu_window1_invert[2], ppu_window1_invert[3], ppu_window
8648 1_invert[4], ppu_window1_invert[5], ppu_window2_enabled[0], ppu_window2_enabled[
8649 1], ppu_window2_enabled[2], ppu_window2_enabled[3], ppu_window2_enabled[4],
8650  ppu_window2_enabled[5], ppu_window2_invert[0], ppu_window2_invert[1], ppu_windo
8651 w2_invert[2], ppu_window2_invert[3], ppu_window2_invert[4], ppu_window2_invert[5
8652 ], ppu_bg_enabled[0], ppu_bg_enabled[1], ppu_bg_enabled[2], ppu_bg_enabled[3],
8653  ppu_bg_enabled[4], ppu_bgsub_enabled[0], ppu_bgsub_enabled[1], ppu_bgsub_enable
8654 d[2], ppu_bgsub_enabled[3], ppu_bgsub_enabled[4], ppu_window_enabled[0],
8655  ppu_window_enabled[1], ppu_window_enabled[2], ppu_window_enabled[3], ppu_window
8656 _enabled[4], ppu_sub_window_enabled[0], ppu_sub_window_enabled[1], ppu_sub_windo
8657 w_enabled[2], ppu_sub_window_enabled[3], ppu_sub_window_enabled[4], ppu_addsub_m
8658 ode, ppu_direct_color, ppu_color_mode, ppu_color_halve, ppu_color_enabled[0],
8659  ppu_color_enabled[1], ppu_color_enabled[2], ppu_color_enabled[3], ppu_color_ena
8660 bled[4], ppu_color_enabled[5], ppu_mode7_extbg, ppu_pseudo_hires, ppu_overscan,
8661  ppu_oam_interlace, ppu_interlace, ppu_latch_hcounter, ppu_latch_vcounter,
8662  ppu_counters_latched, ppu_time_over, ppu_range_over, ppu_ppu1_mdr, ppu_ppu2_mdr
8663 , ppu_bg_y[0], ppu_bg_y[1], ppu_bg_y[2], ppu_bg_y[3], ppu_ioamaddr, ppu_icgramad
8664 dr, ppu_display_brightness, ppu_oam_basesize, ppu_oam_nameselect, ppu_oam_tdaddr
8665 , ppu_oam_baseaddr, ppu_oam_addr, ppu_oam_firstsprite, ppu_oam_latchdata,
8666  ppu_bg_mode, ppu_mosaic_size, ppu_mosaic_countdown, ppu_bg_scaddr[0], ppu_bg_sc
8667 addr[1], ppu_bg_scaddr[2], ppu_bg_scaddr[3], ppu_bg_scsize[0], ppu_bg_scsize[1],
8668  ppu_bg_scsize[2], ppu_bg_scsize[3], ppu_bg_tdaddr[0], ppu_bg_tdaddr[1],
8669  ppu_bg_tdaddr[2], ppu_bg_tdaddr[3], ppu_bg_ofslatch, ppu_m7_hofs, ppu_m7_vofs,
8670  ppu_bg_hofs[0], ppu_bg_hofs[1], ppu_bg_hofs[2], ppu_bg_hofs[3], ppu_bg_vofs[0],
8671  ppu_bg_vofs[1], ppu_bg_vofs[2], ppu_bg_vofs[3], ppu_vram_mapping, ppu_vram_incs
8672 ize, ppu_vram_addr, ppu_mode7_repeat, ppu_m7_latch, ppu_m7a, ppu_m7b, ppu_m7c,
8673  ppu_m7d, ppu_m7x, ppu_m7y, ppu_cgram_addr, ppu_cgram_latchdata, ppu_window1_lef
8674 t, ppu_window1_right, ppu_window2_left, ppu_window2_right, ppu_window_mask[0],
8675  ppu_window_mask[1], ppu_window_mask[2], ppu_window_mask[3], ppu_window_mask[4],
8676  ppu_window_mask[5], ppu_color_mask, ppu_colorsub_mask, ppu_color_r, ppu_color_g
8677 , ppu_color_b, ppu_color_rgb, ppu_scanlines, ppu_hcounter, ppu_vcounter,
8678  ppu_vram_readbuffer, ppu_oam_itemcount, ppu_oam_tilecount, 
8679 \end_layout
8681 \begin_layout Itemize
8682 on_latch has no parameters
8683 \end_layout
8685 \begin_layout Itemize
8686 CPU 0 is S-CPU, 1 is S-SMP.
8687 \end_layout
8689 \begin_layout Itemize
8690 Cheats are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_{RAM,ROM}.
8691 \end_layout
8693 \begin_layout Itemize
8694 Read/Write/Execute hooks are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_
8695 {RAM,ROM}.
8696 \end_layout
8698 \begin_layout Itemize
8699 Memory areas are: WRAM, APURAM, VRAM, OAM, CGRAM, RTC, DSPRAM, DSPPROM,
8700  DSPDROM, SRAM, ROM, BUS, PTRTABLE, CPU_STATE, PPU_STATE, SMP_STATE, DSP_STATE,
8701  BSXFLASH, BSX_RAM, BSX_PRAM, SLOTA_ROM, SLOTB_ROM, SLOTA_RAM, SLOTB_RAM,
8702  GBCPU_STATE, GBROM, GBRAM, GBWRAM, GBHRAM.
8703 \end_layout
8705 \begin_layout Subsection
8706 gambatte core
8707 \end_layout
8709 \begin_layout Itemize
8710 Registers are: wrambank, cyclecounter, pc, sp, hf1, hf2, zf, cf, a, b, c,
8711  d, e, f, h, l
8712 \end_layout
8714 \begin_layout Itemize
8715 on_latch is not supported
8716 \end_layout
8718 \begin_layout Itemize
8719 CPU 0 is main CPU.
8720 \end_layout
8722 \begin_layout Itemize
8723 Cheats are supported for ROM, SRAM and WRAM.
8724 \end_layout
8726 \begin_layout Itemize
8727 Read/Write/Execute hooks are supported for ROM (read/execute only), SRAM
8728  and WRAM.
8729 \end_layout
8731 \begin_layout Itemize
8732 Memory areas are: SRAM, WRAM, VRAM, IOAMHRAM, ROM, BUS.
8733 \end_layout
8735 \end_body
8736 \end_document