1 #LyX 2.1 created this file. For more info see http://www.lyx.org/
6 \use_default_options true
7 \maintain_unincluded_children false
9 \language_package default
14 \font_typewriter default
16 \font_default_family default
17 \use_non_tex_fonts false
23 \default_output_format default
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
31 \pdf_bookmarksnumbered false
32 \pdf_bookmarksopen false
33 \pdf_bookmarksopenlevel 1
41 \use_package amsmath 1
42 \use_package amssymb 1
45 \use_package mathdots 1
46 \use_package mathtools 1
48 \use_package stackrel 1
49 \use_package stmaryrd 1
50 \use_package undertilde 1
52 \cite_engine_type default
56 \paperorientation portrait
73 \paragraph_separation indent
74 \paragraph_indentation default
75 \quotes_language english
78 \paperpagestyle default
79 \tracking_changes false
89 lsnes Lua functions reference
96 \begin_layout Standard
97 \begin_inset CommandInset toc
98 LatexCommand tableofcontents
105 \begin_layout Standard
106 \begin_inset Newpage pagebreak
112 \begin_layout Section
116 \begin_layout Subsection
120 \begin_layout Itemize
121 Coordinates increase to right and down.
124 \begin_layout Itemize
125 The origin is at top left of game area or buffer.
128 \begin_layout Subsection
132 \begin_layout Itemize
133 Methods that draw something (unless stated otherwise) require a valid rendering
135 This context can come in three ways:
139 \begin_layout Enumerate
140 The default rendering context of paint callback (the screen).
143 \begin_layout Enumerate
144 The default rendering context of video callback (the video).
147 \begin_layout Enumerate
148 Explicitly set rendering context (RENDERCTX:set).
152 \begin_layout Itemize
153 The rendering context is always reset when callback ends.
156 \begin_layout Subsection
160 \begin_layout Standard
161 (Direct) colors can be specified either as numbers or strings.
164 \begin_layout Itemize
165 -1 is fully transparent.
168 \begin_layout Itemize
169 Non-negative numbers less than
170 \begin_inset Formula $2^{32}$
173 are partially opaque colors (
174 \begin_inset Formula $a*2^{24}+r*2^{16}+g*2^{8}+b$
181 \begin_layout Itemize
182 \begin_inset Formula $a$
186 \begin_inset Formula $0-255$
190 \begin_inset Formula $0$
194 \begin_inset Formula $256$
197 would be fully transparent.
201 \begin_layout Itemize
202 Thus, numbers in range
203 \begin_inset Formula $0-16777215$
206 stand for fully opaque colors.
210 \begin_layout Itemize
211 \begin_inset Formula $r$
215 \begin_inset Formula $g$
219 \begin_inset Formula $b$
222 are intensities of base colors on scale
223 \begin_inset Formula $0-255$
230 \begin_layout Itemize
231 Color can also be specified by name as string: The following color names
232 are known: aliceblue antiquewhite antiquewhite1 antiquewhite2 antiquewhite3
233 antiquewhite4 aqua aquamarine aquamarine1 aquamarine2 aquamarine3 aquamarine4
234 azure azure1 azure2 azure3 azure4 beige bisque bisque1 bisque2 bisque3
235 bisque4 black blanchedalmond blue blue1 blue2 blue3 blue4 blueviolet brown
236 brown1 brown2 brown3 brown4 burlywood burlywood1 burlywood2 burlywood3
237 burlywood4 cadet cadetblue cadetblue1 cadetblue2 cadetblue3 cadetblue4
238 chartreuse chartreuse1 chartreuse2 chartreuse3 chartreuse4 chocolate chocolate1
239 chocolate2 chocolate3 chocolate4 coral coral1 coral2 coral3 coral4 cornflowerbl
240 ue cornsilk cornsilk1 cornsilk2 cornsilk3 cornsilk4 crimson cyan cyan1 cyan2
241 cyan3 cyan4 darkblue darkcyan darkgoldenrod darkgoldenrod1 darkgoldenrod2
242 darkgoldenrod3 darkgoldenrod4 darkgray darkgreen darkgrey darkkhaki darkmagenta
243 darkolivegreen darkolivegreen1 darkolivegreen2 darkolivegreen3 darkolivegreen4
244 darkorange darkorange1 darkorange2 darkorange3 darkorange4 darkorchid darkorchi
245 d1 darkorchid2 darkorchid3 darkorchid4 darkred darksalmon darkseagreen darkseagr
246 een1 darkseagreen2 darkseagreen3 darkseagreen4 darkslateblue darkslategray
247 darkslategray1 darkslategray2 darkslategray3 darkslategray4 darkslategrey
248 darkturquoise darkviolet deeppink deeppink1 deeppink2 deeppink3 deeppink4
249 deepskyblue deepskyblue1 deepskyblue2 deepskyblue3 deepskyblue4 dimgray
250 dimgrey dodgerblue dodgerblue1 dodgerblue2 dodgerblue3 dodgerblue4 firebrick
251 firebrick1 firebrick2 firebrick3 firebrick4 floralwhite forestgreen fractal
252 fuchsia gainsboro ghostwhite gold gold1 gold2 gold3 gold4 goldenrod goldenrod1
253 goldenrod2 goldenrod3 goldenrod4 gray gray0 gray1 gray10 gray100 gray11
254 gray12 gray13 gray14 gray15 gray16 gray17 gray18 gray19 gray2 gray20 gray21
255 gray22 gray23 gray24 gray25 gray26 gray27 gray28 gray29 gray3 gray30 gray31
256 gray32 gray33 gray34 gray35 gray36 gray37 gray38 gray39 gray4 gray40 gray41
257 gray42 gray43 gray44 gray45 gray46 gray47 gray48 gray49 gray5 gray50 gray51
258 gray52 gray53 gray54 gray55 gray56 gray57 gray58 gray59 gray6 gray60 gray61
259 gray62 gray63 gray64 gray65 gray66 gray67 gray68 gray69 gray7 gray70 gray71
260 gray72 gray73 gray74 gray75 gray76 gray77 gray78 gray79 gray8 gray80 gray81
261 gray82 gray83 gray84 gray85 gray86 gray87 gray88 gray89 gray9 gray90 gray91
262 gray92 gray93 gray94 gray95 gray96 gray97 gray98 gray99 green green1 green2
263 green3 green4 greenyellow grey grey0 grey1 grey10 grey100 grey11 grey12
264 grey13 grey14 grey15 grey16 grey17 grey18 grey19 grey2 grey20 grey21 grey22
265 grey23 grey24 grey25 grey26 grey27 grey28 grey29 grey3 grey30 grey31 grey32
266 grey33 grey34 grey35 grey36 grey37 grey38 grey39 grey4 grey40 grey41 grey42
267 grey43 grey44 grey45 grey46 grey47 grey48 grey49 grey5 grey50 grey51 grey52
268 grey53 grey54 grey55 grey56 grey57 grey58 grey59 grey6 grey60 grey61 grey62
269 grey63 grey64 grey65 grey66 grey67 grey68 grey69 grey7 grey70 grey71 grey72
270 grey73 grey74 grey75 grey76 grey77 grey78 grey79 grey8 grey80 grey81 grey82
271 grey83 grey84 grey85 grey86 grey87 grey88 grey89 grey9 grey90 grey91 grey92
272 grey93 grey94 grey95 grey96 grey97 grey98 grey99 honeydew honeydew1 honeydew2
273 honeydew3 honeydew4 hotpink hotpink1 hotpink2 hotpink3 hotpink4 indianred
274 indianred1 indianred2 indianred3 indianred4 indigo ivory ivory1 ivory2
275 ivory3 ivory4 khaki khaki1 khaki2 khaki3 khaki4 lavender lavenderblush
276 lavenderblush1 lavenderblush2 lavenderblush3 lavenderblush4 lawngreen lemonchif
277 fon lemonchiffon1 lemonchiffon2 lemonchiffon3 lemonchiffon4 lightblue lightblue1
278 lightblue2 lightblue3 lightblue4 lightcoral lightcyan lightcyan1 lightcyan2
279 lightcyan3 lightcyan4 lightgoldenrod lightgoldenrod1 lightgoldenrod2 lightgolde
280 nrod3 lightgoldenrod4 lightgoldenrodyellow lightgray lightgreen lightgrey
281 lightpink lightpink1 lightpink2 lightpink3 lightpink4 lightsalmon lightsalmon1
282 lightsalmon2 lightsalmon3 lightsalmon4 lightseagreen lightskyblue lightskyblue1
283 lightskyblue2 lightskyblue3 lightskyblue4 lightslateblue lightslategray
284 lightslategrey lightsteelblue lightsteelblue1 lightsteelblue2 lightsteelblue3
285 lightsteelblue4 lightyellow lightyellow1 lightyellow2 lightyellow3 lightyellow4
286 lime limegreen linen magenta magenta1 magenta2 magenta3 magenta4 maroon
287 maroon1 maroon2 maroon3 maroon4 mediumaquamarine mediumblue mediumforestgreen
288 mediumgoldenrod mediumorchid mediumorchid1 mediumorchid2 mediumorchid3
289 mediumorchid4 mediumpurple mediumpurple1 mediumpurple2 mediumpurple3 mediumpurp
290 le4 mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumviole
291 tred midnightblue mintcream mistyrose mistyrose1 mistyrose2 mistyrose3 mistyrose
292 4 moccasin navajowhite navajowhite1 navajowhite2 navajowhite3 navajowhite4
293 navy navyblue oldlace olive olivedrab olivedrab1 olivedrab2 olivedrab3
294 olivedrab4 orange orange1 orange2 orange3 orange4 orangered orangered1
295 orangered2 orangered3 orangered4 orchid orchid1 orchid2 orchid3 orchid4
296 palegoldenrod palegreen palegreen1 palegreen2 palegreen3 palegreen4 paleturquoi
297 se paleturquoise1 paleturquoise2 paleturquoise3 paleturquoise4 palevioletred
298 palevioletred1 palevioletred2 palevioletred3 palevioletred4 papayawhip
299 peachpuff peachpuff1 peachpuff2 peachpuff3 peachpuff4 peru pink pink1 pink2
300 pink3 pink4 plum plum1 plum2 plum3 plum4 powderblue purple purple1 purple2
301 purple3 purple4 red red1 red2 red3 red4 rosybrown rosybrown1 rosybrown2
302 rosybrown3 rosybrown4 royalblue royalblue1 royalblue2 royalblue3 royalblue4
303 saddlebrown salmon salmon1 salmon2 salmon3 salmon4 sandybrown seagreen
304 seagreen1 seagreen2 seagreen3 seagreen4 seashell seashell1 seashell2 seashell3
305 seashell4 sienna sienna1 sienna2 sienna3 sienna4 silver skyblue skyblue1
306 skyblue2 skyblue3 skyblue4 slateblue slateblue1 slateblue2 slateblue3 slateblue
307 4 slategray slategray1 slategray2 slategray3 slategray4 slategrey snow snow1
308 snow2 snow3 snow4 springgreen springgreen1 springgreen2 springgreen3 springgree
309 n4 steelblue steelblue1 steelblue2 steelblue3 steelblue4 tan tan1 tan2 tan3
310 tan4 teal thistle thistle1 thistle2 thistle3 thistle4 tomato tomato1 tomato2
311 tomato3 tomato4 transparent turquoise turquoise1 turquoise2 turquoise3
312 turquoise4 violet violetred violetred1 violetred2 violetred3 violetred4
313 wheat wheat1 wheat2 wheat3 wheat4 white whitesmoke yellow yellow1 yellow2
314 yellow3 yellow4 yellowgreen
317 \begin_layout Itemize
318 The HSL base color names: hsl-<hue><saturation><lightness>.
322 \begin_layout Itemize
323 Hue can be one of: r (red), ry (red-yellow), o (orange, same as red-yellow),
324 y (yellow), yg (yellow-green), g (green), gc (green-cyan), c (cyan), cb
325 (cyan-blue), b (blue), bm (blue-magenta), m (magenta), mr (magenta-red).
328 \begin_layout Itemize
329 Saturation is 0-8, where 0 is greyscale and 8 is fully saturated.
332 \begin_layout Itemize
333 Lightness is 0-8, where 0 is black and 8 is white.
337 \begin_layout Itemize
338 The color names can have a modifier after space (multiple modifiers are
339 allowed, separated by spaces): opaque10, opaque20, opaque25, opaque30,
340 opaque40, opaque50, opaque60, opaque70, opaque75, opaque80, opaque90, opaque,
341 hue{+,-}{1-23}, {saturation,lightness}{+,-}{1-16}.
345 \begin_layout Itemize
346 opaqueness is measured as percentage.
349 \begin_layout Itemize
350 Hue adjustments are on 24-step scale.
353 \begin_layout Itemize
354 Saturation and lightness adjustments are on 16-step scale.
358 \begin_layout Section
362 \begin_layout Standard
363 These tokens are special, and are expanded while the script is being loaded
366 \begin_layout Subsection
367 @@LUA_SCRIPT_FILENAME@@
370 \begin_layout Standard
371 Expanded to string token containing path and filename of this Lua script.
372 Handy for referencing other lua scripts or resources that are relative
376 \begin_layout Standard
377 In practicular, this is suitable to be passed as base argument of various
378 functions like loadfile, dofile, resolve_filename, gui.bitmap_load, gui.bitmap_lo
379 ad_png and gui.bitmap_load_pal.
382 \begin_layout Section
386 \begin_layout Subsection
387 MMAP_STRUCT: Quasi-table mapping emulated memory
390 \begin_layout Standard
391 Objects act like tables, but the values reflect emulated memory.
394 \begin_layout Subsubsection
395 static function new: Create a new instance
398 \begin_layout Itemize
399 Syntax: mmap memory.mmap.new()
402 \begin_layout Itemize
403 Syntax: mmap classes.MMAP_STRUCT.new()
406 \begin_layout Standard
410 \begin_layout Itemize
411 mmap: MMAP_STRUCT: The created mmap structure.
414 \begin_layout Standard
415 Create a new object (with no mappings) and return it.
418 \begin_layout Subsubsection
419 operator(): Bind key in mmap structure
422 \begin_layout Itemize
423 Syntax: obj(key, {marea, address|addrobj}, type)
426 \begin_layout Standard
430 \begin_layout Itemize
431 obj: MMAP_STRUCT: The structure to manipulate.
434 \begin_layout Itemize
435 key: String: The name of the key in array to map.
438 \begin_layout Itemize
439 marea: String: The memory area the mapped address is in (default: global
443 \begin_layout Itemize
444 address: Number: The offset of memory addreess, relative to specified memory
445 area or global memory space.
448 \begin_layout Itemize
449 addrobj: ADDRESS: The memory address.
452 \begin_layout Itemize
453 type: String: The type of data to map.
457 \begin_layout Itemize
458 One of: byte, sbyte, word, sword, hword, shword, dword, sdword, qword, sqword,
463 \begin_layout Standard
464 Bind key <key> in mmap structure <obj> to address <address> (relative to
466 The memory address is treated as type <type>.
469 \begin_layout Itemize
471 \begin_inset Quotes eld
475 \begin_inset Quotes erd
479 \begin_inset Quotes eld
483 \begin_inset Quotes erd
487 \begin_inset Quotes eld
491 \begin_inset Quotes erd
497 \begin_layout Standard
498 This binds signed word at address WRAM+0x2A into key
499 \begin_inset Quotes eld
503 \begin_inset Quotes erd
509 \begin_layout Standard
510 \begin_inset Newpage pagebreak
516 \begin_layout Subsection
517 ZIPWRITER: Write .zip files
520 \begin_layout Standard
521 This class does writing of .zip files.
524 \begin_layout Subsubsection
525 Static function new: Create a new zipfile
528 \begin_layout Itemize
529 Syntax: zip zip.writer.new(filename, [compression])
532 \begin_layout Itemize
533 Deprecated: zip zip.create(filename, [compression])
536 \begin_layout Standard
540 \begin_layout Itemize
541 filename: string: The name of the file to write.
544 \begin_layout Itemize
545 compression: number: Compression level (0-9).
549 \begin_layout Standard
553 \begin_layout Itemize
554 zip: ZIPWRITER: The newly created ZIP writer.
557 \begin_layout Standard
558 Create a new ZIPWRITER object and return it.
561 \begin_layout Subsubsection
562 Method commit: Finish creating ZIP file.
565 \begin_layout Itemize
566 Syntax: zipfile:commit()
569 \begin_layout Standard
573 \begin_layout Itemize
574 zipfile: ZIPFILE: The ZIP file object.
577 \begin_layout Standard
578 Finish writing the ZIP file and actually create it on disk.
581 \begin_layout Itemize
582 If a member is currently open, it is implicitly closed.
585 \begin_layout Itemize
586 Invoking this on already committed or rolled back zipfile causes an error.
589 \begin_layout Subsubsection
590 Method rollback: Cancel writing the ZIP file.
593 \begin_layout Itemize
594 Syntax: zipfile:rollback()
597 \begin_layout Standard
601 \begin_layout Itemize
602 zipfile: ZIPFILE: The ZIP file object.
605 \begin_layout Standard
606 Cancel writing the whole ZIP file.
607 The file on disk will not be modified.
610 \begin_layout Itemize
611 If a member is currently open, it is implicitly closed.
614 \begin_layout Itemize
615 Invoking this on already committed or rolled back zipfile causes an error.
618 \begin_layout Subsubsection
619 Method create_file: Start writing a new member
622 \begin_layout Itemize
623 Syntax: zipfile:create_file(filename)
626 \begin_layout Standard
630 \begin_layout Itemize
631 zipfile: ZIPFILE: The ZIP file object.
634 \begin_layout Itemize
635 string filename: Name of the new member to create
638 \begin_layout Standard
639 Start writing a new member <filename> in ZIP file.
642 \begin_layout Itemize
643 If a member is currently open, it is implicitly closed.
646 \begin_layout Itemize
647 Invoking this on already committed or rolled back zipfile causes an error.
650 \begin_layout Subsubsection
651 Method close_file: Close member
654 \begin_layout Itemize
655 Syntax: zipfile:close_file()
658 \begin_layout Standard
662 \begin_layout Itemize
663 zipfile: ZIPFILE: The ZIP file object.
666 \begin_layout Standard
667 Close the currently open member in zipfile.
670 \begin_layout Itemize
671 Invoking this on already committed or rolled back zipfile causes an error.
674 \begin_layout Itemize
675 Invoking this without an open member causes an error.
678 \begin_layout Subsubsection
679 Method write: Write data
682 \begin_layout Itemize
683 Syntax: zipfile:write(data)
686 \begin_layout Standard
690 \begin_layout Itemize
691 zipfile: ZIPFILE: The ZIP file object.
694 \begin_layout Itemize
695 data: string: The data to write.
698 \begin_layout Standard
699 Write <data> in binary mode (as-is) to currently open member.
702 \begin_layout Itemize
703 Invoking this without a member being open causes an error.
706 \begin_layout Standard
707 \begin_inset Newpage pagebreak
713 \begin_layout Subsection
714 TILEMAP: Tiled collection of bitmaps.
717 \begin_layout Standard
718 A tilemap is tiled table, each cell holding a bitmap (indexed or direct).
721 \begin_layout Subsubsection
722 Static function new: Create a tilemap
725 \begin_layout Itemize
726 Syntax: tilemap gui.tiled_bitmap.new(w, h, bw, bh);
729 \begin_layout Itemize
730 Syntax: tilemap classes.TILEMAP.new(w, h, bw, bh);
733 \begin_layout Itemize
734 Deprecated: tilemap gui.tilemap(w, h, bw, bh);
737 \begin_layout Standard
741 \begin_layout Itemize
742 w: number: Width of the tilemap in tiles
745 \begin_layout Itemize
746 h: number: Height of the tilemap in tiles
749 \begin_layout Itemize
750 bw: number: Width of each tile in pixels.
753 \begin_layout Itemize
754 bh: number: Height of each tile in pixels.
757 \begin_layout Standard
761 \begin_layout Itemize
762 tilemap: TILEMAP: the newly created tilemap
765 \begin_layout Standard
766 Create a new tilemap of <w>*<h> tiles, each of <bw>*<bh> pixels and return
770 \begin_layout Subsubsection
771 TILEMAP:getsize: Query tilemap size
774 \begin_layout Itemize
775 Syntax: width, height tmap:getsize()
778 \begin_layout Standard
782 \begin_layout Itemize
783 tmap: TILEMAP: The tilemap to query.
786 \begin_layout Standard
790 \begin_layout Itemize
791 width: number : The width of the tilemap in tiles.
794 \begin_layout Itemize
795 height: number: The height of the tilemap in tiles.
798 \begin_layout Standard
799 Get size of tilemap in tiles.
802 \begin_layout Subsubsection
803 TILEMAP:getcsize: Query tilemap cell size
806 \begin_layout Itemize
807 Syntax: width, height tmap:getcsize()
810 \begin_layout Standard
814 \begin_layout Itemize
815 tmap: TILEMAP: The tilemap to query.
818 \begin_layout Standard
822 \begin_layout Itemize
823 width: number: The width of tilemap tile in pixels.
826 \begin_layout Itemize
827 height: number: The height of tilemap tile in pixels.
830 \begin_layout Standard
831 Get size of each tilemap tile in pixels.
834 \begin_layout Subsubsection
835 TILEMAP:get: Query tilemap tile
838 \begin_layout Itemize
839 Syntax: bitmap, palette tmap:get(x, y)
842 \begin_layout Standard
846 \begin_layout Itemize
847 tmap: TILEMAP: The tilemap to query.
850 \begin_layout Itemize
851 x: number: The x-coordinate of tile to query.
854 \begin_layout Itemize
855 y: number: The y-coordinate of tile to query.
858 \begin_layout Standard
862 \begin_layout Itemize
863 bitmap: The associated bitmap (BITMAP or DBITMAP), or nil if none.
866 \begin_layout Itemize
867 palette: The palette (PALETTE) associated with indexed-color bitmap, if
872 \begin_layout Standard
873 Return the contents of tile at <x>,<y>.
876 \begin_layout Subsubsection
877 TILEMAP:set: Set tilemap cell
880 \begin_layout Itemize
881 Syntax: tmap:set(x, y)
884 \begin_layout Itemize
885 Syntax: tmap:set(x, y, bitmap)
888 \begin_layout Itemize
889 Syntax: tmap:set(x, y, bitmap, palette)
892 \begin_layout Standard
896 \begin_layout Itemize
897 tmap: TILEMAP: The tilemap to manipulate.
900 \begin_layout Itemize
901 number x: The x-coordinate of tile to set.
904 \begin_layout Itemize
905 number y: The y-coordinate of tile to set.
908 \begin_layout Itemize
909 bitmap: BITMAP/DBITMAP: The bitmap to set to tile.
912 \begin_layout Itemize
913 palette: PALETTE: The associated palette for bitmap.
916 \begin_layout Standard
917 Set the contents of tile <x>,<y>.
918 If no <bitmap> is given, clears the tile.
919 Otherwise sets the tile to contain bitmap <bitmap> with associated palette
923 \begin_layout Itemize
924 Specifying index bitmap <bitmap> without palette <palette> causes an error.
927 \begin_layout Subsubsection
928 TILEMAP:scroll: Scroll tilemap
931 \begin_layout Itemize
932 Syntax: tmap:scroll(ox, oy);
935 \begin_layout Itemize
936 Syntax: tmap:scroll(ox, oy, x, y, w, h);
939 \begin_layout Itemize
940 Syntax: tmap:scroll(ox, oy, x, y, w, h, circ_x, circ_y);
943 \begin_layout Standard
947 \begin_layout Itemize
948 tmap: TILEMAP: The tilemap to manipulate.
951 \begin_layout Itemize
952 ox: number: The number of tiles to scroll horizontally (positive is to right).
955 \begin_layout Itemize
956 oy: number: The number of tiles to scroll vertically (positive is to down).
959 \begin_layout Itemize
960 x: number: The left edge of scroll window.
963 \begin_layout Itemize
964 y: number: The top edge of scroll window.
967 \begin_layout Itemize
968 w: number: The width of scroll window.
971 \begin_layout Itemize
972 h: number: The height of scroll window.
975 \begin_layout Itemize
976 circ_x: boolean: If true, treat the window as circular in horizontal direction.
979 \begin_layout Itemize
980 circ_y: boolean: If true, treat the window as circular in vertical direction.
983 \begin_layout Standard
984 Scroll the specified tilemap <tmap> by <ox>,<oy>.
985 If a window <x>,<y>,<w>,<h> is specified, only that part is scrolled.
986 <circ_x> and <circ_y> control if scroll is circular or not.
989 \begin_layout Itemize
990 Specifying out-of-range window causes an error.
993 \begin_layout Subsubsection
994 TILEMAP:draw: Draw tilemap
997 \begin_layout Itemize
998 Name: tmap:draw(x, y)
1001 \begin_layout Itemize
1002 Name: tmap:draw(x, y, x0, y0, w, h)
1005 \begin_layout Standard
1009 \begin_layout Itemize
1010 tmap: TILEMAP: The tilemap to draw.
1013 \begin_layout Itemize
1014 x: The x coordinate on screen to draw to.
1017 \begin_layout Itemize
1018 y: The y coordinate on screen to draw to.
1021 \begin_layout Itemize
1022 x0: number: The x coordinate on tilemap (in pixels) to start drawing from.
1025 \begin_layout Itemize
1026 y0: number: The y coordinate on tilemap (in pixels) to start drawing from.
1029 \begin_layout Itemize
1030 w: number: The width to draw (in pixels).
1033 \begin_layout Itemize
1034 h: number: The height to draw (in pixels).
1037 \begin_layout Standard
1038 Draw tilemap <tmap> to screen at <x>,<y>.
1039 If a window <x0>,<y0>,<w>,<h> is specified, only that part is drawn.
1042 \begin_layout Itemize
1043 This method requires a rendering context to work.
1046 \begin_layout Subsubsection
1047 TILEMAP:draw_outside: Draw tilemap outside game area
1050 \begin_layout Itemize
1051 Name: tmap:draw_outside(x, y)
1054 \begin_layout Itemize
1055 Name: tmap:draw_outside(x, y, x0, y0, w, h)
1058 \begin_layout Standard
1059 Like TILEMAP:draw, but draws only outside game area.
1062 \begin_layout Standard
1063 \begin_inset Newpage pagebreak
1069 \begin_layout Subsection
1070 RENDERCTX: Off-screen rendering context
1073 \begin_layout Standard
1074 Object acting as off-screen rendering context.
1077 \begin_layout Subsubsection
1078 Static function new: Create a render queue
1081 \begin_layout Itemize
1082 Syntax: renderctx gui.renderctx.new(width, height);
1085 \begin_layout Itemize
1086 Syntax: renderctx classes.RENDERCTX.new(width, height);
1089 \begin_layout Itemize
1090 Deprecated: renderctx gui.renderq_new(width, height);
1093 \begin_layout Standard
1097 \begin_layout Itemize
1098 width: number: The notional width of the game area.
1101 \begin_layout Itemize
1102 height: number: The notional height of the game area.
1105 \begin_layout Standard
1109 \begin_layout Itemize
1110 rendectx: RENDERCTX: The newly created render context.
1113 \begin_layout Standard
1114 Create a render context with reported size <width>*<height> and return it.
1117 \begin_layout Subsubsection
1118 Static function setnull: Reset to default queue
1121 \begin_layout Itemize
1122 Syntax: gui.renderctx.setnull()
1125 \begin_layout Itemize
1126 Syntax: classes.RENDERCTX:setnull()
1129 \begin_layout Itemize
1130 Deprecated: gui.renderq_set()
1133 \begin_layout Standard
1134 Reset the used render context back to default for the executing callback:
1137 \begin_layout Itemize
1138 The default for paint callback is the screen
1141 \begin_layout Itemize
1142 The default for video callback is the video frame
1145 \begin_layout Itemize
1146 The default otherwise is nothing.
1149 \begin_layout Subsubsection
1150 Method clear: Clear a render queue
1153 \begin_layout Itemize
1154 Syntax: renderctx:clear()
1157 \begin_layout Itemize
1158 Deprecated: gui.renderq_clear(renderctx)
1161 \begin_layout Standard
1165 \begin_layout Itemize
1166 renderctx: RENDERCTX: The render queue to clear.
1169 \begin_layout Standard
1170 Clear all drawing from the context.
1173 \begin_layout Subsubsection
1174 Method set: Change active render context
1177 \begin_layout Itemize
1178 Syntax: renderctx:set()
1181 \begin_layout Itemize
1182 Deprecated: gui.renderq_set(renderctx)
1185 \begin_layout Standard
1189 \begin_layout Itemize
1190 renderctx: RENDERCTX: The render queue to use.
1193 \begin_layout Standard
1194 Switch the current rendering context <renderctx>.
1197 \begin_layout Subsubsection
1198 Method run: Draw all objects in context to another
1201 \begin_layout Itemize
1202 Syntax: renderctx:run()
1205 \begin_layout Itemize
1206 Deprecated: gui.renderq_run(renderctx)
1209 \begin_layout Standard
1213 \begin_layout Itemize
1214 renderctx: RENDERCTX: The render context to overlay.
1217 \begin_layout Standard
1218 Overlay the specified render context <context> upon the active rendering
1222 \begin_layout Itemize
1223 Trying to overlay rendering context upon itself is a bad idea.
1226 \begin_layout Subsubsection
1227 Method render: Render a contex to bitmap
1230 \begin_layout Itemize
1231 Syntax: bitmap renderctx:render()
1234 \begin_layout Standard
1238 \begin_layout Itemize
1239 renderctx: RENDERCTX: The context to render.
1242 \begin_layout Standard
1246 \begin_layout Itemize
1247 bitmap: DBITMAP: The rendered bitmap.
1250 \begin_layout Standard
1251 Render the specified context <renderctx> to a new bitmap.
1254 \begin_layout Itemize
1255 The size of bitmap will be nominal game area size, plus any set gaps.
1258 \begin_layout Itemize
1259 This method does not require active rendering context.
1262 \begin_layout Subsubsection
1263 Method synchronous_repaint: Paint screen now
1266 \begin_layout Itemize
1267 Syntax: renderctx:synchronous_repaint()
1270 \begin_layout Itemize
1271 Deprecated: gui.synchronous_repaint(renderctx)
1274 \begin_layout Standard
1278 \begin_layout Itemize
1279 renderctx: RENDERCTX: The context to paint.
1282 \begin_layout Standard
1283 Immediately redraw the screen with game overlayed by drawings from context
1287 \begin_layout Itemize
1288 This does not require active rendering context.
1291 \begin_layout Itemize
1292 Will not cause paint callback to be invoked.
1295 \begin_layout Standard
1296 \begin_inset Newpage pagebreak
1302 \begin_layout Subsection
1303 PALETTE: Color palette for indexed image
1306 \begin_layout Subsubsection
1307 Static function new: Create a new palette
1310 \begin_layout Itemize
1311 Syntax: palette gui.palette.new()
1314 \begin_layout Itemize
1315 Syntax: palette classes.PALETTE.new()
1318 \begin_layout Itemize
1319 Deprecated: palette gui.palette_new()
1322 \begin_layout Standard
1326 \begin_layout Itemize
1327 palette: PALETTE: The created palette.
1330 \begin_layout Standard
1331 Create a new palette (with all colors transparent) and return it.
1334 \begin_layout Subsubsection
1335 Static function load: Load a palette
1338 \begin_layout Itemize
1339 Syntax: palette gui.palette.load(file, [base])
1342 \begin_layout Itemize
1343 Syntax: palette classes.PALETTE.load(file, [base])
1346 \begin_layout Itemize
1347 Deprecated: palette gui.palette_load(file, [base])
1350 \begin_layout Standard
1354 \begin_layout Itemize
1355 string file: The file to load.
1358 \begin_layout Itemize
1359 string base (optional): The base file to resolve file relative to.
1362 \begin_layout Standard
1366 \begin_layout Itemize
1367 palette: PALETTE: The loaded palette.
1370 \begin_layout Standard
1371 Load a palette from file <file> (resolved relative to <base>).
1374 \begin_layout Itemize
1375 The file format is a series of lines, each with following format:
1379 \begin_layout Itemize
1380 Blank or just whitespace: Ignored
1383 \begin_layout Itemize
1384 First non-whitespace is '#': Ignored
1387 \begin_layout Itemize
1388 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
1391 \begin_layout Itemize
1392 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
1393 (0-256, 0 being fully transparent and 256 fully opaque).
1396 \begin_layout Itemize
1397 transparent: Fully transparent color
1401 \begin_layout Subsubsection
1402 Static function load_str: Load a palette from string
1405 \begin_layout Itemize
1406 Syntax: palette gui.palette.load(data)
1409 \begin_layout Itemize
1410 Syntax: palette classes.PALETTE.load(data)
1413 \begin_layout Itemize
1414 Deprecated: palette gui.palette_load(data)
1417 \begin_layout Standard
1421 \begin_layout Itemize
1422 string data: The palette data.
1425 \begin_layout Standard
1429 \begin_layout Itemize
1430 palette: PALETTE: The loaded palette.
1433 \begin_layout Standard
1434 Like PALETTE:load, but instead of reading palette from file, reads it from
1438 \begin_layout Subsubsection
1439 Method set: Set palette entry
1442 \begin_layout Itemize
1443 Syntax: palette:set(index, color)
1446 \begin_layout Itemize
1447 Deprecated: gui.palette_set(palette, ...)
1450 \begin_layout Standard
1454 \begin_layout Itemize
1455 palette: PALETTE: The palette to manipulate
1458 \begin_layout Itemize
1459 index: number: The index of color to set (0-65535).
1462 \begin_layout Itemize
1463 color: number/string: The color value to set.
1466 \begin_layout Standard
1467 Set palette <palette> index <index> to color <color>.
1470 \begin_layout Subsubsection
1471 Method get: Get palette entry
1474 \begin_layout Itemize
1475 Syntax: number palette:get(index)
1478 \begin_layout Standard
1482 \begin_layout Itemize
1483 palette: PALETTE: The palette to query
1486 \begin_layout Itemize
1487 index: number: The index of color to get (0-65535).
1490 \begin_layout Standard
1494 \begin_layout Itemize
1495 The palette entry as integer.
1498 \begin_layout Standard
1499 Get palette entry <index> of palette <palette> and return it.
1502 \begin_layout Subsubsection
1503 Method hash: Hash a palette
1506 \begin_layout Itemize
1507 Syntax: hash palette:hash()
1510 \begin_layout Itemize
1511 Deprecated: hash gui.palette_hash(palette)
1514 \begin_layout Standard
1518 \begin_layout Itemize
1519 palette: The palette to hash.
1522 \begin_layout Standard
1526 \begin_layout Itemize
1527 hash: string: 64-hex digit hash.
1530 \begin_layout Standard
1531 Obtain crypto-grade hash of palette data of <palette>.
1534 \begin_layout Itemize
1535 All colors after the last non-transparent one are ignored.
1538 \begin_layout Subsubsection
1539 Method adjust_transparency: Adjust transparency
1542 \begin_layout Itemize
1543 Syntax: palette:adjust_transparency(newvalue)
1546 \begin_layout Itemize
1547 Deprecated: gui.adjust_transparency(palette, ...)
1550 \begin_layout Standard
1554 \begin_layout Itemize
1555 palette: PALETTE: The palette to adjust.
1558 \begin_layout Itemize
1559 Number adj: The factor to multiply opaqueness with times 256.
1562 \begin_layout Standard
1563 Multiply opaqueness of all colors in palette <palette> by factor of <adj>/256.
1566 \begin_layout Standard
1567 \begin_inset Newpage pagebreak
1573 \begin_layout Subsection
1574 BITMAP: Indexed-color bitmap
1577 \begin_layout Subsubsection
1578 Static function new: Create a new bitmap
1581 \begin_layout Itemize
1582 Syntax: bitmap gui.bitmap.new(w, h, [fillcolor])
1585 \begin_layout Itemize
1586 Syntax: bitmap classes.BITMAP.new(w, h, [fillcolor])
1589 \begin_layout Itemize
1590 Deprecated: bitmap gui.bitmap_new(w, h, false, [fillcolor])
1593 \begin_layout Standard
1597 \begin_layout Itemize
1598 w: number: The width of bitmap to create in pixels.
1601 \begin_layout Itemize
1602 h: number: The height of bitmap to create in pixels.
1605 \begin_layout Itemize
1606 false: boolean: Constant boolean false.
1609 \begin_layout Itemize
1610 fillcolor: number: The initial fill index.
1611 Default 0 if not specified.
1614 \begin_layout Standard
1615 Create a new bitmap of size <w>*<h>.
1616 Fill the bitmap with color index <fillcolor>.
1619 \begin_layout Subsubsection
1620 Method draw: Draw a bitmap
1623 \begin_layout Itemize
1624 Syntax: bitmap:draw(x, y, palette)
1627 \begin_layout Itemize
1628 Deprecated: gui.bitmap_draw(x, y, bitmap, palette)
1631 \begin_layout Standard
1635 \begin_layout Itemize
1636 bitmap: BITMAP: The bitmap to draw
1639 \begin_layout Itemize
1640 x: number: The x-coordinate on screen.
1643 \begin_layout Itemize
1644 y: number: The y-coordinate on screen.
1647 \begin_layout Itemize
1648 palette: The palette to use for drawing.
1651 \begin_layout Standard
1652 Draw bitmap <bitmap> on screen at <x>,<y> with palette <palette>.
1655 \begin_layout Subsubsection
1656 Method draw_outside: Draw a bitmap outside game area
1659 \begin_layout Itemize
1660 Syntax: bitmap:draw_outside(x, y, palette)
1663 \begin_layout Standard
1664 Like bitmap:draw, but does not draw on game area.
1667 \begin_layout Subsubsection
1668 Method draw_clip: Draw a bitmap, with clipping
1671 \begin_layout Itemize
1672 Syntax: bitmap:draw_clip(x, y, palette, x0, y0, width, height)
1675 \begin_layout Standard
1679 \begin_layout Itemize
1680 bitmap: BITMAP: The bitmap to draw
1683 \begin_layout Itemize
1684 x: number: The x-coordinate on screen.
1687 \begin_layout Itemize
1688 y: number: The y-coordinate on screen.
1691 \begin_layout Itemize
1692 palette: The palette to use for drawing.
1695 \begin_layout Itemize
1696 x0: The smallest bitmap x coordinate to draw.
1699 \begin_layout Itemize
1700 y0: The smallest bitmap y coordinate to draw.
1703 \begin_layout Itemize
1704 width: Width of region to draw
1707 \begin_layout Itemize
1708 height: Height of region to draw.
1711 \begin_layout Standard
1712 Like bitmap:draw, but clip the bitmap area drawn.
1715 \begin_layout Subsubsection
1716 Method draw_clip_outside: Draw a bitmap outside game are, with clipping
1719 \begin_layout Itemize
1720 Syntax: bitmap:draw_clip_outside(x, y, palette, x0, y0, width, height)
1723 \begin_layout Standard
1724 Like bitmap:draw_clip, but only draw outside game area.
1727 \begin_layout Subsubsection
1728 Method pset: Set pixel in bitmap
1731 \begin_layout Itemize
1732 Syntax: bitmap:pset(x, y, color)
1735 \begin_layout Itemize
1736 Deprecaed: gui.bitmap_pset(bitmap, ...)
1739 \begin_layout Standard
1743 \begin_layout Itemize
1744 bitmap: BITMAP: The bitmap to manipulate.
1747 \begin_layout Itemize
1748 x: number: x-coordinate of pixel to set.
1751 \begin_layout Itemize
1752 y: number: y-coordinate of pixel to set.
1755 \begin_layout Itemize
1756 color: number: The color index to set.
1759 \begin_layout Standard
1760 Sets specified pixel <x>,<y> in bitmap <bitmap> to color index <color>.
1763 \begin_layout Subsubsection
1764 Method pget: Get pixel in bitmap
1767 \begin_layout Itemize
1768 Syntax: color bitmap:pget(x,y)
1771 \begin_layout Itemize
1772 Deprecated: color gui.bitmap_pget(bitmap, ...)
1775 \begin_layout Standard
1779 \begin_layout Itemize
1780 bitmap: BITMAP: The bitmap to query.
1783 \begin_layout Itemize
1784 x: number: x-coordinate of pixel to get.
1787 \begin_layout Itemize
1788 y: number: y-coordinate of pixel to get.
1791 \begin_layout Standard
1795 \begin_layout Itemize
1796 color: number: The color index in specified pixel.
1799 \begin_layout Standard
1800 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
1803 \begin_layout Subsubsection
1804 Method size: Get size of bitmap
1807 \begin_layout Itemize
1808 Syntax: width, height bitmap:size()
1811 \begin_layout Itemize
1812 Syntax: width, height gui.bitmap_size(bitmap)
1815 \begin_layout Standard
1819 \begin_layout Itemize
1820 bitmap: BITMAP: The bitmap to query.
1823 \begin_layout Standard
1827 \begin_layout Itemize
1828 width: number: The width of the bitmap.
1831 \begin_layout Itemize
1832 height: number: The height of the bitmap.
1835 \begin_layout Standard
1836 Get size of bitmap <bitmap>.
1839 \begin_layout Subsubsection
1840 Method blit: Blit a bitmap into another
1843 \begin_layout Itemize
1844 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
1847 \begin_layout Itemize
1848 Deprecated: gui.bitmap_blit(dest, ...)
1851 \begin_layout Standard
1855 \begin_layout Itemize
1856 dest: BITMAP: The target bitmap to blit to.
1859 \begin_layout Itemize
1860 dx: number: The x-coordinate in target.
1863 \begin_layout Itemize
1864 dy: number: The y-coordinate in target.
1867 \begin_layout Itemize
1868 src: BITMAP: The source bitmap.
1871 \begin_layout Itemize
1872 sx: number: The x-coordinate in source.
1875 \begin_layout Itemize
1876 sy: number: The y-coordinate in source.
1879 \begin_layout Itemize
1880 w: number: The width of area to blit.
1883 \begin_layout Itemize
1884 h: number: The height of area to blit.
1887 \begin_layout Itemize
1888 ck: number: The color key.
1889 Pixels with this index are not copied.
1893 \begin_layout Itemize
1894 If none is specified, all pixels are copied.
1898 \begin_layout Standard
1899 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> into <dest> at
1901 If a color key <ck> is specified, pixels of that color are not copied.
1904 \begin_layout Subsubsection
1905 Method blit_scaled: Blit a bitmap into another with scaling
1908 \begin_layout Itemize
1909 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
1912 \begin_layout Itemize
1913 Deprecated: gui.bitmap_blit_scaled(dest, ...)
1916 \begin_layout Standard
1920 \begin_layout Itemize
1921 dest: BITMAP: The target bitmap to blit to.
1924 \begin_layout Itemize
1925 dx: number: The x-coordinate in target.
1928 \begin_layout Itemize
1929 dy: number: The y-coordinate in target.
1932 \begin_layout Itemize
1933 src: BITMAP: The source bitmap.
1936 \begin_layout Itemize
1937 sx: number: The x-coordinate in source.
1940 \begin_layout Itemize
1941 sy: number: The y-coordinate in source.
1944 \begin_layout Itemize
1945 w: number: The width of area to blit.
1948 \begin_layout Itemize
1949 h: number: The height of area to blit.
1952 \begin_layout Itemize
1953 hscl: number: Horizontal scale factor (integer).
1956 \begin_layout Itemize
1957 vscl: number: Vertical scale factor (integer).
1958 Defaults to the same as <hscl>.
1961 \begin_layout Itemize
1962 ck: number: The color key.
1963 Pixels with this index are not copied.
1967 \begin_layout Itemize
1968 If none is specified, all pixels are copied.
1972 \begin_layout Standard
1973 Like BITMAP:blit, but also scales the copied part of bitmap (using nearest
1974 neighbor) by factor of <hscl>*<vscl>.
1977 \begin_layout Subsubsection
1978 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
1981 \begin_layout Itemize
1982 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
1985 \begin_layout Itemize
1986 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
1989 \begin_layout Standard
1993 \begin_layout Itemize
1994 dest: BITMAP: The target bitmap to blit to.
1997 \begin_layout Itemize
1998 dx: number: The x-coordinate in target.
2001 \begin_layout Itemize
2002 dy: number: The y-coordinate in target.
2005 \begin_layout Itemize
2006 src: BITMAP: The source bitmap.
2009 \begin_layout Itemize
2010 sx: number: The x-coordinate in source.
2013 \begin_layout Itemize
2014 sy: number: The y-coordinate in source.
2017 \begin_layout Itemize
2018 w: number: The width of area to blit.
2021 \begin_layout Itemize
2022 h: number: The height of area to blit.
2025 \begin_layout Itemize
2026 operator: string: The operator to use.
2030 \begin_layout Itemize
2031 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2032 DestOut, Clear or Xor.
2036 \begin_layout Standard
2037 Like BITMAP:blit, but instead of just overwriting, applies specified Porter-Duff
2042 \begin_layout Itemize
2043 Color index 0 in source and target is treated as background.
2046 \begin_layout Subsubsection
2047 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2048 Porter-Duff composition
2051 \begin_layout Itemize
2052 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2056 \begin_layout Itemize
2057 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2060 \begin_layout Standard
2064 \begin_layout Itemize
2065 dest: BITMAP: The target bitmap to blit to.
2068 \begin_layout Itemize
2069 dx: number: The x-coordinate in target.
2072 \begin_layout Itemize
2073 dy: number: The y-coordinate in target.
2076 \begin_layout Itemize
2077 src: BITMAP: The source bitmap.
2080 \begin_layout Itemize
2081 sx: number: The x-coordinate in source.
2084 \begin_layout Itemize
2085 sy: number: The y-coordinate in source.
2088 \begin_layout Itemize
2089 w: number: The width of area to blit.
2092 \begin_layout Itemize
2093 h: number: The height of area to blit.
2096 \begin_layout Itemize
2097 hscl: number: Horizontal scale factor (integer).
2100 \begin_layout Itemize
2101 vscl: number: Vertical scale factor (integer).
2102 Defaults to the same as <hscl>.
2105 \begin_layout Itemize
2106 operator: string: The operator to use.
2110 \begin_layout Itemize
2111 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2112 DestOut, Clear or Xor.
2116 \begin_layout Standard
2117 Like BITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2118 like BITMAP:blit_scaled.
2121 \begin_layout Subsubsection
2122 Method blit_priority: Blit a bitmap into another with color priority
2125 \begin_layout Itemize
2126 Syntax: dest:blit_priority(dx, dy, src, sx, sy, w, h)
2129 \begin_layout Itemize
2130 Deprecated: gui.bitmap_blit_priority(dest, ...)
2133 \begin_layout Standard
2137 \begin_layout Itemize
2138 dest: BITMAP: The target bitmap to blit to.
2141 \begin_layout Itemize
2142 dx: number: The x-coordinate in target.
2145 \begin_layout Itemize
2146 dy: number: The y-coordinate in target.
2149 \begin_layout Itemize
2150 src: BITMAP: The source bitmap.
2153 \begin_layout Itemize
2154 sx: number: The x-coordinate in source.
2157 \begin_layout Itemize
2158 sy: number: The y-coordinate in source.
2161 \begin_layout Itemize
2162 w: number: The width of area to blit.
2165 \begin_layout Itemize
2166 h: number: The height of area to blit.
2169 \begin_layout Standard
2170 Like BITMAP:blit, but only copy pixels where source color index is greater
2171 than destination color index.
2174 \begin_layout Subsubsection
2175 Method blit_scaled_priority: Blit a bitmap into another with color priority
2179 \begin_layout Itemize
2180 Syntax: dest:blit_scaled_priority(dx, dy, src, sx, sy, w, h, hscl, [vscl])
2183 \begin_layout Itemize
2184 Deprecated: gui.bitmap_blit_scaled_priority(dest, ...)
2187 \begin_layout Standard
2191 \begin_layout Itemize
2192 dest: BITMAP: The target bitmap to blit to.
2195 \begin_layout Itemize
2196 dx: number: The x-coordinate in target.
2199 \begin_layout Itemize
2200 dy: number: The y-coordinate in target.
2203 \begin_layout Itemize
2204 src: BITMAP: The source bitmap.
2207 \begin_layout Itemize
2208 sx: number: The x-coordinate in source.
2211 \begin_layout Itemize
2212 sy: number: The y-coordinate in source.
2215 \begin_layout Itemize
2216 w: number: The width of area to blit.
2219 \begin_layout Itemize
2220 h: number: The height of area to blit.
2223 \begin_layout Itemize
2224 hscl: number: Horizontal scale factor (integer).
2227 \begin_layout Itemize
2228 vscl: number: Vertical scale factor (integer).
2229 Defaults to the same as <hscl>.
2232 \begin_layout Standard
2233 Like BITMAP:blit_priority, but apply scaling by <hscl>*<vscl> like BITMAP:blit_s
2237 \begin_layout Subsubsection
2238 Method save_png: Save a bitmap to PNG
2241 \begin_layout Itemize
2242 Syntax: bitmap:save_png(filename, [base], palette)
2245 \begin_layout Itemize
2246 Syntax: data bitmap:save_png(palette)
2249 \begin_layout Itemize
2251 gui.bitmap_save_png(bitmap, ...)
2254 \begin_layout Standard
2258 \begin_layout Itemize
2259 bitmap: BITMAP: The bitmap to save.
2262 \begin_layout Itemize
2263 filename: string: The filename to save to.
2266 \begin_layout Itemize
2267 base: string: The base filename is resolved relative to.
2270 \begin_layout Itemize
2271 palette: PALETTE: The palette to use.
2274 \begin_layout Standard
2278 \begin_layout Itemize
2279 data: string: BASE64 encoded PNG data.
2282 \begin_layout Standard
2283 Save bitmap <bitmap>, with palette <pal> into PNG file <filename> (relative
2284 to <base>) or return BASE64 encoding of it.
2287 \begin_layout Subsubsection
2288 Method hash: Hash a bitmap
2291 \begin_layout Itemize
2292 Syntax: hash bitmap:hash()
2295 \begin_layout Itemize
2296 Deprecated: hash bitmap:hash(bitmap)
2299 \begin_layout Standard
2303 \begin_layout Itemize
2304 bitmap: BITMAP: The bitmap to hash.
2307 \begin_layout Standard
2311 \begin_layout Itemize
2312 hash: string: 64-hex digit hash
2315 \begin_layout Standard
2316 Hashes bitmap <bitmap> and returns crypto-strong hash.
2320 \begin_layout Itemize
2321 Color order in bitmap is significant.
2324 \begin_layout Standard
2325 \begin_inset Newpage pagebreak
2331 \begin_layout Subsection
2332 DBITMAP: Direct-color bitmap
2335 \begin_layout Subsubsection
2336 Static function: new: Create a new bitmap
2339 \begin_layout Itemize
2340 Syntax: bitmap gui.dbitmap.new(w, h, [fillcolor])
2343 \begin_layout Itemize
2344 Syntax: bitmap classes.DBITMAP.new(w, h, [fillcolor])
2347 \begin_layout Itemize
2348 Deprecated: bitmap gui.bitmap_new (w, h, true, [fillcolor]).
2351 \begin_layout Standard
2355 \begin_layout Itemize
2356 w: number: The width of new bitmap.
2359 \begin_layout Itemize
2360 h: number: The height of new bitmap.
2363 \begin_layout Itemize
2364 true: boolean: Fixed boolean true
2367 \begin_layout Itemize
2368 fillcolor: The color to fill the bitmap with (default transparent).
2371 \begin_layout Standard
2375 \begin_layout Itemize
2376 bitmap: DBITMAP: The new bitmap.
2379 \begin_layout Standard
2380 Create a new direct-color bitmap of size <w>*<h>, initially filled with
2384 \begin_layout Subsubsection
2385 Method draw: Draw a bitmap
2388 \begin_layout Itemize
2389 Syntax: bitmap.draw(x, y)
2392 \begin_layout Itemize
2393 Deprecated: gui.bitmap_draw(x, y, bitmap)
2396 \begin_layout Standard
2400 \begin_layout Itemize
2401 bitmap: DBITMAP: The bitmap to draw.
2404 \begin_layout Itemize
2405 x: number: X-coordinate on screen.
2408 \begin_layout Itemize
2409 y: number: Y-coordinate on screen.
2412 \begin_layout Standard
2413 Draw bitmap <bitmap> on screen at <x>,<y>.
2416 \begin_layout Subsubsection
2417 Method draw_outside: Draw a bitmap outside game area
2420 \begin_layout Itemize
2421 Syntax: dbitmap:draw_outside(x, y, palette)
2424 \begin_layout Standard
2425 Like dbitmap:draw, but does not draw on game area.
2428 \begin_layout Subsubsection
2429 Method draw_clip: Draw a bitmap, with clipping
2432 \begin_layout Itemize
2433 Syntax: dbitmap:draw(x, y, palette, x0, y0, width, height)
2436 \begin_layout Standard
2440 \begin_layout Itemize
2441 bitmap: DBITMAP: The bitmap to draw
2444 \begin_layout Itemize
2445 x: number: The x-coordinate on screen.
2448 \begin_layout Itemize
2449 y: number: The y-coordinate on screen.
2452 \begin_layout Itemize
2453 x0: The smallest bitmap x coordinate to draw.
2456 \begin_layout Itemize
2457 y0: The smallest bitmap y coordinate to draw.
2460 \begin_layout Itemize
2461 width: Width of region to draw
2464 \begin_layout Itemize
2465 height: Height of region to draw.
2468 \begin_layout Standard
2469 Like dbitmap:draw, but clip the bitmap area drawn.
2472 \begin_layout Subsubsection
2473 Method draw_clip_outside: Draw a bitmap outside game are, with clipping
2476 \begin_layout Itemize
2477 Syntax: dbitmap:draw_clip_outside(x, y, palette, x0, y0, width, height)
2480 \begin_layout Standard
2481 Like dbitmap:draw_clip, but only draw outside game area.
2484 \begin_layout Subsubsection
2485 Method pset: Set pixel in bitmap
2488 \begin_layout Itemize
2489 Syntax: bitmap:pset(x, y, color)
2492 \begin_layout Itemize
2493 Deprecaed: gui.bitmap_pset(bitmap, ...)
2496 \begin_layout Standard
2500 \begin_layout Itemize
2501 bitmap: DBITMAP: The bitmap to manipulate.
2504 \begin_layout Itemize
2505 x: number: x-coordinate of pixel to set.
2508 \begin_layout Itemize
2509 y: number: y-coordinate of pixel to set.
2512 \begin_layout Itemize
2513 color: number/string: The color to set.
2516 \begin_layout Standard
2517 Sets specified pixel <x>,<y> in bitmap <bitmap> to color <color>.
2520 \begin_layout Subsubsection
2521 Method pget: Get pixel in bitmap
2524 \begin_layout Itemize
2525 Syntax: color bitmap:pget(x,y)
2528 \begin_layout Itemize
2529 Deprecated: color gui.bitmap_pget(bitmap, ...)
2532 \begin_layout Standard
2536 \begin_layout Itemize
2537 bitmap: DBITMAP: The bitmap to query.
2540 \begin_layout Itemize
2541 x: number: x-coordinate of pixel to get.
2544 \begin_layout Itemize
2545 y: number: y-coordinate of pixel to get.
2548 \begin_layout Standard
2552 \begin_layout Itemize
2553 color: number: The color of specified pixel.
2556 \begin_layout Standard
2557 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
2560 \begin_layout Subsubsection
2561 Method size: Get size of bitmap
2564 \begin_layout Itemize
2565 Syntax: width, height bitmap:size()
2568 \begin_layout Itemize
2569 Syntax: width, height gui.bitmap_size(bitmap)
2572 \begin_layout Standard
2576 \begin_layout Itemize
2577 bitmap: DBITMAP: The bitmap to query.
2580 \begin_layout Standard
2584 \begin_layout Itemize
2585 width: number: The width of the bitmap.
2588 \begin_layout Itemize
2589 height: number: The height of the bitmap.
2592 \begin_layout Standard
2593 Get size of bitmap <bitmap>.
2596 \begin_layout Subsubsection
2597 Method blit: Blit a bitmap into another
2600 \begin_layout Itemize
2601 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
2604 \begin_layout Itemize
2605 Syntax: dest:blit(dx, dy, src, srcpal, sx, sy, w, h, [ck])
2608 \begin_layout Itemize
2609 Deprecated: gui.bitmap_blit(dest, ...)
2612 \begin_layout Standard
2616 \begin_layout Itemize
2617 dest: DBITMAP: The target bitmap to blit to.
2620 \begin_layout Itemize
2621 dx: number: The x-coordinate in target.
2624 \begin_layout Itemize
2625 dy: number: The y-coordinate in target.
2628 \begin_layout Itemize
2629 src: BITMAP/DBITMAP: The source bitmap.
2632 \begin_layout Itemize
2633 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2636 \begin_layout Itemize
2637 sx: number: The x-coordinate in source.
2640 \begin_layout Itemize
2641 sy: number: The y-coordinate in source.
2644 \begin_layout Itemize
2645 w: number: The width of area to blit.
2648 \begin_layout Itemize
2649 h: number: The height of area to blit.
2652 \begin_layout Itemize
2653 ck: number: The color key.
2654 Pixels with this index are not copied.
2658 \begin_layout Itemize
2659 If none is specified, all pixels are copied.
2662 \begin_layout Itemize
2663 If <src> is paletted, this is color index, otherwise it is a color.
2667 \begin_layout Standard
2668 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> (with palette <pal>
2669 if indexed) into <dest> at <dx>,<dy>.
2670 If a color key <ck> is specified, pixels of that color are not copied.
2673 \begin_layout Subsubsection
2674 Method blit_scaled: Blit a bitmap into another with scaling
2677 \begin_layout Itemize
2678 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
2681 \begin_layout Itemize
2682 Syntax: dest:blit_scaled(dx, dy, src, srcpal, sx, sy, w, h, hscl, [vscl],
2686 \begin_layout Itemize
2687 Deprecated: gui.bitmap_blit_scaled(dest, ...)
2690 \begin_layout Standard
2694 \begin_layout Itemize
2695 dest: DBITMAP: The target bitmap to blit to.
2698 \begin_layout Itemize
2699 dx: number: The x-coordinate in target.
2702 \begin_layout Itemize
2703 dy: number: The y-coordinate in target.
2706 \begin_layout Itemize
2707 src: BITMAP/DBITMAP: The source bitmap.
2710 \begin_layout Itemize
2711 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2714 \begin_layout Itemize
2715 sx: number: The x-coordinate in source.
2718 \begin_layout Itemize
2719 sy: number: The y-coordinate in source.
2722 \begin_layout Itemize
2723 w: number: The width of area to blit.
2726 \begin_layout Itemize
2727 h: number: The height of area to blit.
2730 \begin_layout Itemize
2731 hscl: number: Horizontal scale factor (integer).
2734 \begin_layout Itemize
2735 vscl: number: Vertical scale factor (integer).
2736 Defaults to the same as <hscl>.
2739 \begin_layout Itemize
2740 ck: number: The color key.
2741 Pixels with this index are not copied.
2745 \begin_layout Itemize
2746 If none is specified, all pixels are copied.
2749 \begin_layout Itemize
2750 If <src> is paletted, this is color index, otherwise it is a color.
2754 \begin_layout Standard
2755 Like DBITMAP:blit, but also scales the copied part of bitmap (using nearest
2756 neighbor) by factor of <hscl>*<vscl>.
2759 \begin_layout Subsubsection
2760 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
2763 \begin_layout Itemize
2764 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
2767 \begin_layout Itemize
2768 Syntax: dest:blit_porterduff(dx, dy, src, srcpal, sx, sy, w, h, operator)
2771 \begin_layout Itemize
2772 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
2775 \begin_layout Standard
2779 \begin_layout Itemize
2780 dest: DBITMAP: The target bitmap to blit to.
2783 \begin_layout Itemize
2784 dx: number: The x-coordinate in target.
2787 \begin_layout Itemize
2788 dy: number: The y-coordinate in target.
2791 \begin_layout Itemize
2792 src: BITMAP/DBITMAP: The source bitmap.
2795 \begin_layout Itemize
2796 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2799 \begin_layout Itemize
2800 sx: number: The x-coordinate in source.
2803 \begin_layout Itemize
2804 sy: number: The y-coordinate in source.
2807 \begin_layout Itemize
2808 w: number: The width of area to blit.
2811 \begin_layout Itemize
2812 h: number: The height of area to blit.
2815 \begin_layout Itemize
2816 operator: string: The operator to use.
2820 \begin_layout Itemize
2821 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2822 DestOut, Clear or Xor.
2826 \begin_layout Standard
2827 Like DBITMAP:blit, but instead of just overwriting, applies specified Porter-Duf
2832 \begin_layout Itemize
2833 In target, fully transparent is background.
2834 In source, either fully transparent (if direct) or index 0 (if paletted)
2835 is treated as background.
2838 \begin_layout Subsubsection
2839 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2840 Porter-Duff composition
2843 \begin_layout Itemize
2844 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2848 \begin_layout Itemize
2849 Syntax: dest:blit_scaled_porterduff(dx, dy, src, srcpal, sx, sy, w, h, hscl,
2853 \begin_layout Itemize
2854 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2857 \begin_layout Standard
2861 \begin_layout Itemize
2862 dest: DBITMAP: The target bitmap to blit to.
2865 \begin_layout Itemize
2866 dx: number: The x-coordinate in target.
2869 \begin_layout Itemize
2870 dy: number: The y-coordinate in target.
2873 \begin_layout Itemize
2874 src: BITMAP/DBITMAP: The source bitmap.
2877 \begin_layout Itemize
2878 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2881 \begin_layout Itemize
2882 sx: number: The x-coordinate in source.
2885 \begin_layout Itemize
2886 sy: number: The y-coordinate in source.
2889 \begin_layout Itemize
2890 w: number: The width of area to blit.
2893 \begin_layout Itemize
2894 h: number: The height of area to blit.
2897 \begin_layout Itemize
2898 hscl: number: Horizontal scale factor (integer).
2901 \begin_layout Itemize
2902 vscl: number: Vertical scale factor (integer).
2903 Defaults to the same as <hscl>.
2906 \begin_layout Itemize
2907 operator: string: The operator to use.
2911 \begin_layout Itemize
2912 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2913 DestOut, Clear or Xor.
2917 \begin_layout Standard
2918 Like DBITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2919 like DBITMAP:blit_scaled.
2922 \begin_layout Subsubsection
2923 Method adjust_transparency: Adjust transparency of bitmap
2926 \begin_layout Itemize
2927 Syntax: bitmap:adjust_transparency(newvalue)
2930 \begin_layout Itemize
2931 Deprecated: gui.adjust_transparency(bitmap, ...)
2934 \begin_layout Standard
2938 \begin_layout Itemize
2939 bitmap: DBITMAP: The bitmap to adjust.
2942 \begin_layout Itemize
2943 Number adj: The factor to multiply opaqueness with times 256.
2946 \begin_layout Standard
2947 Multiply opaqueness of all colors in bitmap <bitmap> by factor of <adj>/256.
2950 \begin_layout Subsubsection
2951 Method save_png: Save a bitmap to PNG
2954 \begin_layout Itemize
2955 Syntax: bitmap:save_png(filename, [base])
2958 \begin_layout Itemize
2959 Syntax: data bitmap:save_png()
2962 \begin_layout Itemize
2964 gui.bitmap_save_png(bitmap, ...)
2967 \begin_layout Standard
2971 \begin_layout Itemize
2972 bitmap: DBITMAP: The bitmap to save.
2975 \begin_layout Itemize
2976 filename: string: The filename to save to.
2979 \begin_layout Itemize
2980 base: string: The base filename is resolved relative to.
2983 \begin_layout Standard
2987 \begin_layout Itemize
2988 data: string: BASE64 encoded PNG data.
2991 \begin_layout Standard
2992 Save bitmap <bitmap> into PNG file <filename> (relative to <base>) or return
2993 BASE64 encoding of it.
2996 \begin_layout Subsubsection
2997 Method hash: Hash a bitmap
3000 \begin_layout Itemize
3001 Syntax: hash bitmap:hash()
3004 \begin_layout Itemize
3005 Deprecated: hash bitmap:hash(bitmap)
3008 \begin_layout Standard
3012 \begin_layout Itemize
3013 bitmap: DBITMAP: The bitmap to hash.
3016 \begin_layout Standard
3020 \begin_layout Itemize
3021 hash: string: 64-hex digit hash
3024 \begin_layout Standard
3025 Hashes bitmap <bitmap> and returns crypto-strong hash.
3029 \begin_layout Subsection
3030 IMAGELOADER: Load an image
3033 \begin_layout Subsubsection
3034 Static function load: Load a bitmap from file
3037 \begin_layout Itemize
3038 Syntax: bitmap, palette gui.image.load(file, [base])
3041 \begin_layout Itemize
3042 Syntax: bitmap, palette classes.IMAGELOADER.load(file, [base])
3045 \begin_layout Itemize
3047 gui.bitmap_load(...)
3050 \begin_layout Standard
3054 \begin_layout Itemize
3055 file: string: The file to read.
3058 \begin_layout Itemize
3059 base: string: The base to resolve <file> relative to.
3062 \begin_layout Standard
3066 \begin_layout Itemize
3067 bitmap: BITMAP/DBITMAP: The new bitmap
3070 \begin_layout Itemize
3071 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3075 \begin_layout Standard
3076 Load a new bitmap and return it (plus associated palette if any).
3079 \begin_layout Subsubsection
3080 Static function load_str: Load a bitmap from string
3083 \begin_layout Itemize
3084 Syntax: bitmap, palette gui.image.load_str(data)
3087 \begin_layout Itemize
3088 Syntax: bitmap, palette classes.IMAGELOADER.load_str(data)
3091 \begin_layout Itemize
3093 gui.bitmap_load_str(...)
3096 \begin_layout Standard
3100 \begin_layout Itemize
3101 data: string: The image data
3104 \begin_layout Standard
3108 \begin_layout Itemize
3109 bitmap: BITMAP/DBITMAP: The new bitmap
3112 \begin_layout Itemize
3113 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3117 \begin_layout Standard
3118 Like IMAGELOADER:load, but read the bitmap from string <data> instead of
3122 \begin_layout Subsubsection
3123 Static function load_png: Load a bitmap from PNG file
3126 \begin_layout Itemize
3127 Syntax: bitmap, palette gui.image.load_png(file, [base])
3130 \begin_layout Itemize
3131 Syntax: bitmap, palette classes.IMAGELOADER.load_png(file, [base])
3134 \begin_layout Itemize
3136 gui.bitmap_load_png(...)
3139 \begin_layout Standard
3143 \begin_layout Itemize
3144 file: string: The file to read.
3147 \begin_layout Itemize
3148 base: string: The base to resolve <file> relative to.
3151 \begin_layout Standard
3155 \begin_layout Itemize
3156 bitmap: BITMAP/DBITMAP: The new bitmap
3159 \begin_layout Itemize
3160 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3164 \begin_layout Standard
3165 Like IMAGELOADER:load, but load a PNG file instead.
3168 \begin_layout Subsubsection
3169 Static function load_png_str: Load a PNG bitmap from string
3172 \begin_layout Itemize
3173 Syntax: bitmap, palette gui.image.load_png_str(data)
3176 \begin_layout Itemize
3177 Syntax: bitmap, palette classes.IMAGELOADER.load_png_str(data)
3180 \begin_layout Itemize
3182 gui.bitmap_load_png_str(...)
3185 \begin_layout Standard
3189 \begin_layout Itemize
3190 data: string: The image data, base64 encoded.
3193 \begin_layout Standard
3197 \begin_layout Itemize
3198 bitmap: BITMAP/DBITMAP: The new bitmap
3201 \begin_layout Itemize
3202 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3206 \begin_layout Standard
3207 Like IMAGELOADER:load_png, but read the bitmap from BASE64 encoded string
3208 <data> instead of file.
3211 \begin_layout Standard
3212 \begin_inset Newpage pagebreak
3218 \begin_layout Subsection
3219 CUSTOMFONT: Arbitrary-sized bitmap font
3222 \begin_layout Subsubsection
3223 Static function new: Return a new empty font
3226 \begin_layout Itemize
3227 Syntax: font gui.font.new()
3230 \begin_layout Itemize
3231 Syntax: font classes.CUSTOMFONT.new()
3234 \begin_layout Itemize
3235 Deprecated: font gui.font_new()
3238 \begin_layout Standard
3242 \begin_layout Itemize
3243 font: CUSTOMFONT: New font.
3246 \begin_layout Standard
3247 Create a new font with no characters and return it.
3250 \begin_layout Subsubsection
3251 Static function: load: Load a font file
3254 \begin_layout Itemize
3255 Syntax: font gui.font.load(file, [base])
3258 \begin_layout Itemize
3259 Syntax: font gui.font.load()
3262 \begin_layout Itemize
3263 Syntax: font classes.CUSTOMFONT.load(file, [base])
3266 \begin_layout Itemize
3267 Syntax: font classes.CUSTOMFONT.load()
3270 \begin_layout Itemize
3271 Deprecated: font gui.loadfont(...)
3274 \begin_layout Standard
3278 \begin_layout Itemize
3279 file: string: The file to read the font from
3282 \begin_layout Itemize
3283 base: string: The file to resolve <file> relative to.
3286 \begin_layout Standard
3290 \begin_layout Itemize
3291 font: CUSTOMFONT: New font.
3294 \begin_layout Standard
3295 Load font from file <file> (relative to <base>).
3296 If no filename is given, system default font is loaded.
3299 \begin_layout Subsubsection
3300 operator(): Render text to screen
3303 \begin_layout Itemize
3304 Syntax: font(x, y, text, [fgc], [bgc], [hlc])
3307 \begin_layout Standard
3311 \begin_layout Itemize
3312 font: CUSTOMFONT: The font to use.
3315 \begin_layout Itemize
3316 x: number: The x-position on screen to draw to.
3319 \begin_layout Itemize
3320 y: number: The y-position on screen to draw to.
3323 \begin_layout Itemize
3324 text: string: The text to draw.
3327 \begin_layout Itemize
3328 fgc: number/string: Foreground color (default white).
3331 \begin_layout Itemize
3332 bgc: number/string: Background color (default transparent).
3335 \begin_layout Itemize
3336 hlc: number/string: Outline color (default transparent).
3339 \begin_layout Standard
3340 Draws a string <text> with specified font <font> and colors <fgc>,<bgc>,<hlc>
3344 \begin_layout Itemize
3345 If <hlc> is transparent, no outline is drawn.
3348 \begin_layout Subsubsection
3349 Method edit: Alter glyph in font
3352 \begin_layout Itemize
3353 Syntax: font:edit(string character, bitmap glyph)
3356 \begin_layout Standard
3360 \begin_layout Itemize
3361 font: CUSTOMFONT: The font to edit.
3364 \begin_layout Itemize
3365 character: string: The character to edit (UTF-8 encoded).
3368 \begin_layout Itemize
3369 glyph: BITMAP: The bitmap to use.
3372 \begin_layout Standard
3373 Replace character <character> in font <font> by <glyph>.
3376 \begin_layout Itemize
3377 Color index 0 is background, everything else is foreground.
3380 \begin_layout Itemize
3381 <character> may be empty string, meaning the replacement character used
3385 \begin_layout Itemize
3386 <character> may be multi-codepoint string, meaning character used for that
3390 \begin_layout Subsubsection
3391 Method dump: Dump font into file
3394 \begin_layout Itemize
3395 Syntax: font:dump(string filename[, string base])
3398 \begin_layout Standard
3402 \begin_layout Itemize
3403 filename: string: The file to dump to
3406 \begin_layout Itemize
3407 base: string: The base filename
3410 \begin_layout Standard
3411 Dump contents of <font> in file <filename> (resolved relative to <base>).
3412 The dump is in format CUSTOMFONT:load() can load.
3415 \begin_layout Standard
3416 \begin_inset Newpage pagebreak
3422 \begin_layout Subsection
3423 ICONV: Character set conversions
3426 \begin_layout Subsubsection
3427 Static function new: Create new character set converter
3430 \begin_layout Itemize
3431 Syntax: iconv iconv.new(from, to);
3434 \begin_layout Itemize
3435 Syntax: iconv classes.ICONV.new(from, to);
3438 \begin_layout Itemize
3439 Deprecated: iconv iconv_new(...);
3442 \begin_layout Standard
3446 \begin_layout Itemize
3447 from: string: The source character set.
3450 \begin_layout Itemize
3451 to: string: The target character set.
3454 \begin_layout Standard
3458 \begin_layout Itemize
3459 iconv: ICONV: The converter.
3462 \begin_layout Standard
3463 Create a character set converter, converting from <from> to <to> and return
3467 \begin_layout Subsubsection
3468 Operator(): Convert string fragment from character set to another
3471 \begin_layout Itemize
3472 Syntax: success, result, unconverted, error iconv(input)
3475 \begin_layout Standard
3479 \begin_layout Itemize
3480 iconv: ICONV: The context to use.
3483 \begin_layout Itemize
3484 input: string: The input to convert.
3487 \begin_layout Standard
3491 \begin_layout Itemize
3492 success: boolean: True if conversion was successful, false if not.
3495 \begin_layout Itemize
3496 result: string: The string (partially) converted.
3499 \begin_layout Itemize
3500 unconvered: number: Number of bytes that were not converted (only if <success>
3504 \begin_layout Itemize
3505 error: string: Error that caused conversion to stop (only if <success> is
3510 \begin_layout Itemize
3511 INVALID: The input string is invalid.
3514 \begin_layout Itemize
3515 INCOMPLETE: The input string cuts off in middle of character.
3518 \begin_layout Itemize
3519 INTERNALERR: Internal error.
3523 \begin_layout Standard
3524 Convert a string <input> using character set converter <iconv> and return
3528 \begin_layout Standard
3529 \begin_inset Newpage pagebreak
3535 \begin_layout Subsection
3536 FILEREADER: Read a file as a stream
3539 \begin_layout Subsubsection
3540 Static function open: Open a stream
3543 \begin_layout Itemize
3544 Syntax: handle filereader.open(file, [base])
3547 \begin_layout Itemize
3548 Syntax: handle classes.FILEREADER.open(file, [base])
3551 \begin_layout Itemize
3552 Deprecated: handle open_file(file, [base])
3555 \begin_layout Standard
3559 \begin_layout Itemize
3560 file: string: The filename to read.
3563 \begin_layout Itemize
3564 base: string: The base <file> is resolved against.
3567 \begin_layout Standard
3571 \begin_layout Itemize
3572 handle: FILEREADER: The new file reader.
3575 \begin_layout Standard
3576 Open file <file> (relative to <base>) and return a handle to it.
3579 \begin_layout Subsubsection
3580 operator(): Read line/bytes from stream
3583 \begin_layout Itemize
3584 Syntax: result handle()
3587 \begin_layout Itemize
3588 Syntax: result handle(bytes)
3591 \begin_layout Standard
3595 \begin_layout Itemize
3596 handle: FILEREADER: The handle to read from.
3599 \begin_layout Itemize
3600 bytes: Number of bytes to read (default is next line).
3603 \begin_layout Standard
3607 \begin_layout Itemize
3608 result: string: The read data, or nil on end-of-file.
3611 \begin_layout Standard
3612 Reads next line or <bytes> bytes from specified file handle <handle>.
3615 \begin_layout Itemize
3616 If reading specified number of bytes, the bytes are read in binary mode
3620 \begin_layout Itemize
3621 If reading next line, the line is read in text mode (any line ending is
3625 \begin_layout Subsubsection
3626 Method lines: Iterator to read all lines
3629 \begin_layout Itemize
3630 Syntax: for line in handle:lines() do ...
3634 \begin_layout Standard
3638 \begin_layout Itemize
3639 handle: FILEREADER: The handle to read.
3642 \begin_layout Standard
3646 \begin_layout Itemize
3647 A lua iterator with one variable.
3650 \begin_layout Standard
3651 Return a Lua iterator that iterates all the lines in <handle>.
3654 \begin_layout Standard
3655 \begin_inset Newpage pagebreak
3661 \begin_layout Subsection
3662 COMPARE_OBJ: Watch memory area for changes
3665 \begin_layout Standard
3666 Objects of this class allow fast checking for modifications to given memory
3670 \begin_layout Subsubsection
3671 Static function new: Create a checker
3674 \begin_layout Itemize
3675 Syntax: handle classes.COMPARE_OBJ.new({marea, offset|addrobj}, size, [rows,
3679 \begin_layout Itemize
3680 Syntax: handle memory.compare_new({marea, offset|addrobj}, size, rows, stride)
3683 \begin_layout Standard
3687 \begin_layout Itemize
3688 marea: string: The memory area to interpret <offset> against.
3691 \begin_layout Itemize
3692 offset: number: The initial offset in memory area.
3695 \begin_layout Itemize
3696 addrobj: ADDRESS: The memory address.
3699 \begin_layout Itemize
3700 size: number: The number of bytes in each row.
3703 \begin_layout Itemize
3704 rows: number: The number of rows.
3708 \begin_layout Itemize
3709 stride: number: The number of bytes offset increments from one row to next.
3712 \begin_layout Standard
3716 \begin_layout Itemize
3720 \begin_layout Standard
3721 Return an object watching specified memory area.
3724 \begin_layout Itemize
3725 Note: For fastest operation, limit checks to inside one memory area (that
3726 has to be mappable, individual RAM areas often are).
3729 \begin_layout Subsubsection
3730 operator(): Check area for modifications
3733 \begin_layout Itemize
3734 Syntax: boolean handle()
3737 \begin_layout Standard
3741 \begin_layout Itemize
3742 True if memory block has been modified since last call (or object creation
3743 if first call), false if not.
3746 \begin_layout Standard
3747 Check if the block has been modified.
3750 \begin_layout Subsection
3751 ADDRESS: Memory address
3754 \begin_layout Standard
3755 Objects of this class contain a memory address.
3758 \begin_layout Subsubsection
3759 Static function new: Create new memory address
3762 \begin_layout Itemize
3763 Syntax: ADDRESS classes.ADDRESS.new(string marea, number offset)
3766 \begin_layout Itemize
3767 Syntax: ADDRESS memory.address.new(string marea, number offset)
3770 \begin_layout Itemize
3771 Syntax: ADDRESS memory.mkaddr(string marea, number offset)
3774 \begin_layout Standard
3778 \begin_layout Itemize
3779 marea: The memory area
3782 \begin_layout Itemize
3783 offset: The offset in memory area.
3786 \begin_layout Standard
3790 \begin_layout Itemize
3794 \begin_layout Standard
3795 Construct a new memory address object.
3798 \begin_layout Subsubsection
3799 Method: addr: Get global address
3802 \begin_layout Itemize
3803 Syntax: number addr:addr()
3806 \begin_layout Standard
3810 \begin_layout Itemize
3811 addr: ADRESS: The original address.
3814 \begin_layout Standard
3818 \begin_layout Itemize
3819 The global address corresponding to this address.
3822 \begin_layout Subsubsection
3823 Method: vma: Get memory area
3826 \begin_layout Itemize
3827 Syntax: string addr:vma()
3830 \begin_layout Standard
3834 \begin_layout Itemize
3835 addr: ADRESS: The original address.
3838 \begin_layout Standard
3842 \begin_layout Itemize
3843 The memory area corresponding to this address.
3846 \begin_layout Subsubsection
3847 Method: offset: Get memory area offset
3850 \begin_layout Itemize
3851 Syntax: string addr:offset()
3854 \begin_layout Standard
3858 \begin_layout Itemize
3859 addr: ADRESS: The original address.
3862 \begin_layout Standard
3866 \begin_layout Itemize
3867 The offset in memory area corresponding to this address.
3870 \begin_layout Subsubsection
3871 Method: replace: Replace address part
3874 \begin_layout Itemize
3875 Syntax: ADDRESS addr:replace(offset[, bits])
3878 \begin_layout Standard
3882 \begin_layout Itemize
3883 addr: ADRESS: The original address.
3886 \begin_layout Itemize
3887 offset: number: The new offset
3890 \begin_layout Itemize
3891 bits: number: The number of LSB to replace.
3894 \begin_layout Standard
3898 \begin_layout Itemize
3899 The modified address
3902 \begin_layout Standard
3903 Returns a new address, with <bits> (all if missing) least significant bits
3904 of <addr> replaced by LSB of <offset>.
3907 \begin_layout Subsubsection
3908 Method: add: Add to address
3911 \begin_layout Itemize
3912 Syntax: ADDRESS addr:add(offset)
3915 \begin_layout Itemize
3916 Syntax: ADDRESS addr:add(number, stride)
3919 \begin_layout Itemize
3920 Syntax: ADDRESS addr:add(number, stride, offset)
3923 \begin_layout Standard
3927 \begin_layout Itemize
3928 addr: ADRESS: The original address.
3931 \begin_layout Itemize
3932 offset: number: Offset to add.
3935 \begin_layout Itemize
3936 number: number: Number of table strides to add.
3939 \begin_layout Itemize
3940 stride: number: The table stride.
3943 \begin_layout Standard
3947 \begin_layout Itemize
3948 The modified address
3951 \begin_layout Standard
3952 Adds <offset>, <number>*<stride> or <number>*<stride>+<offset> into specified
3956 \begin_layout Subsection
3957 ADDRESS:<op>: Read/Write memory
3960 \begin_layout Itemize
3961 Syntax: none addr:<op>(value)
3964 \begin_layout Itemize
3965 Syntax: number addr:<op>()
3968 \begin_layout Standard
3972 \begin_layout Itemize
3973 addr: ADDRESS: The address to read/write.
3976 \begin_layout Itemize
3977 value: number: The number to write.
3980 \begin_layout Standard
3984 \begin_layout Itemize
3988 \begin_layout Standard
3989 Read/Write value from/to given address <addr>.
3990 The value written is <value>.
3991 <Op> is of form: [i][s]<type>, where:
3994 \begin_layout Itemize
3995 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
3998 \begin_layout Itemize
3999 'i' signifies that the value is treated as opposite-to-normal endianess,
4002 \begin_layout Itemize
4003 's' signifies that value is treated as signed (not available for floating-point).
4006 \begin_layout Standard
4007 \begin_inset Newpage pagebreak
4013 \begin_layout Section
4017 \begin_layout Subsection
4018 print: Print values to console
4021 \begin_layout Itemize
4022 Syntax: none print(value...
4026 \begin_layout Standard
4027 Prints specified values to console.
4028 Can print any Lua type at least enough to identify the type and instance.
4031 \begin_layout Subsection
4032 tostringx: Format a value to string
4035 \begin_layout Itemize
4036 Syntax: string tostringx(value val)
4039 \begin_layout Standard
4040 Formats value <val> like print would, and returns the result as a string.
4043 \begin_layout Subsection
4044 exec: Execute lsnes commands
4047 \begin_layout Itemize
4048 Syntax: none exec(string cmd)
4051 \begin_layout Standard
4052 Execute lsnes command <cmd>.
4055 \begin_layout Subsection
4056 utime: Get current time
4059 \begin_layout Itemize
4060 Syntax: (number,number) utime()
4063 \begin_layout Standard
4064 Returns two numbers.
4065 First is time since some epoch in seconds, the second is microseconds mod
4066 10^6 since that epoch.
4069 \begin_layout Subsection
4070 set_idle_timeout: Run function after timeout when emulator is idle
4073 \begin_layout Itemize
4074 Syntax: none set_idle_timeout(number timeout)
4077 \begin_layout Standard
4078 Set number of microseconds to block idle for.
4079 After this timeout has expired, on_idle() will be called once.
4082 \begin_layout Subsection
4083 set_timer_timeout: Run function after timeout.
4086 \begin_layout Itemize
4087 Syntax: none set_timer_timeout(number timeout)
4090 \begin_layout Standard
4091 Set number of microseconds to block timer for.
4092 After this timeout has expired, on_timer() will be called once.
4095 \begin_layout Subsection
4096 bus_address: Look up address in system bus.
4099 \begin_layout Itemize
4100 Syntax: none bus_address(number bus_addr)
4103 \begin_layout Standard
4104 Returns virtual address corresponding to specified address on system bus.
4107 \begin_layout Subsection
4108 loopwrapper: Convert loop into callable function
4111 \begin_layout Itemize
4112 Syntax: function loopwrapper(function fun, ...)
4115 \begin_layout Standard
4116 Calls function <fun> with function and specified arguments.
4117 The function passed suspends execution until the function returned is called.
4118 Handy for linear flow control among multiple invocations of a hook.
4122 \begin_layout LyX-Code
4123 on_paint = loopwrapper(function(wait)
4127 \begin_layout LyX-Code
4132 \begin_layout LyX-Code
4134 \begin_inset Quotes eld
4138 \begin_inset Quotes erd
4144 \begin_layout LyX-Code
4149 \begin_layout LyX-Code
4154 \begin_layout LyX-Code
4158 \begin_layout Subsection
4159 list_bindings: List keybindings
4162 \begin_layout Itemize
4163 Syntax: table list_bindings([string cmd])
4166 \begin_layout Standard
4167 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
4168 If <cmd> is specified, the table is limited to that command.
4169 Also searches for controller keys.
4172 \begin_layout Subsection
4173 get_alias: Get expansion of alias
4176 \begin_layout Itemize
4177 Syntax: string get_alias(string aname)
4180 \begin_layout Standard
4181 Get expansion of given alias <aname>.
4184 \begin_layout Subsection
4185 set_alias: Set expansion of alias
4188 \begin_layout Itemize
4189 Syntax: none set_alias(string aname, string value)
4192 \begin_layout Standard
4193 Set expansion of given alias.
4196 \begin_layout Subsection
4197 create_ibind: Create invese binding
4200 \begin_layout Itemize
4201 Syntax: INVERSEBIND create_ibind(string name, string cmd)
4204 \begin_layout Standard
4205 Return object representing inverse binding with specified name <name> and
4206 specified command <cmd>.
4209 \begin_layout Itemize
4210 Note: To create press/release commands, use aliases +foo and -foo .
4213 \begin_layout Itemize
4214 Note: Keep the returned object around.
4217 \begin_layout Subsection
4218 create_command: Create a command
4221 \begin_layout Itemize
4222 Syntax: COMMANDBIND create_command(string name, function a)
4225 \begin_layout Itemize
4226 Syntax: COMMANDBIND create_command(string name, function a, function b)
4229 \begin_layout Standard
4230 Return object representing a command (pair).
4233 \begin_layout Itemize
4234 If only one function is specied, the command is level-sensitive, <a> is
4238 \begin_layout Itemize
4239 If <b> is function, the function is edge-sensitive, <a> is positive edge
4240 callback and <b> is negative edge callback.
4243 \begin_layout Itemize
4244 All callbacks get single argument: The parameters passed.
4247 \begin_layout Itemize
4248 Keep the returned object around.
4251 \begin_layout Subsection
4252 loadfile: Load Lua script
4255 \begin_layout Itemize
4256 Syntax: function loadfile(string filename[, string base])
4259 \begin_layout Standard
4260 Load lua script from <filename>, resolved relative to <base> (if empty,
4264 \begin_layout Subsection
4265 dofile: Execute Lua script
4268 \begin_layout Itemize
4269 Syntax: function dofile(string filename[, string base])
4272 \begin_layout Standard
4273 Execute lua script from <filename>, resolved relative to <base> (if empty,
4274 current directory) and return all return values.
4277 \begin_layout Subsection
4278 resolve_filename: Resolve name of file relative to another
4281 \begin_layout Itemize
4282 Syntax: string resolve_filename(string filename[, string base])
4285 \begin_layout Standard
4286 Resolve name of file <filename> relative to <base> and return the result.
4289 \begin_layout Subsection
4290 render_queue_function: Return paint function for render queue
4293 \begin_layout Itemize
4294 Syntax: function render_queue_function(RENDERQUEUE rq)
4297 \begin_layout Standard
4298 Return function that renders render queue <rq>.
4301 \begin_layout Itemize
4302 Handy for paint callback if one is using render queues updated in other
4307 \begin_layout LyX-Code
4308 handle = callback.paint:register(render_queue_function(my_rq));
4311 \begin_layout Subsection
4312 get_directory_contents: Get files in directory
4315 \begin_layout Itemize
4316 Syntax: table get_directory_contents(string name[, string base[, string
4320 \begin_layout Standard
4321 Return array containg all files in specified directory <name> (relative
4323 If <pattern> is specified, the filenames are matched to specified regex.
4324 The returned filenames inherit path.
4327 \begin_layout Subsection
4328 get_file_type: Get type of file
4331 \begin_layout Itemize
4332 Syntax: string/nil get_file_type(string path)
4335 \begin_layout Standard
4336 Return type of file <path>.
4337 Currently possible return values are:
4340 \begin_layout Itemize
4341 regular: regular file
4344 \begin_layout Itemize
4345 directory: subdirectory
4348 \begin_layout Itemize
4349 unknown: Exists, but type not known (not anything above).
4352 \begin_layout Itemize
4353 <nil>: File does not exist.
4356 \begin_layout Subsection
4357 identify_class: Identify class of object
4360 \begin_layout Itemize
4361 Syntax: string identify_class(userdata object)
4364 \begin_layout Standard
4365 Identifies the class of userdata <object>, if possible.
4366 If no identification is possible, returns
4367 \begin_inset Quotes eld
4371 \begin_inset Quotes erd
4377 \begin_layout Subsection
4378 lookup_class: Lookup class by name
4381 \begin_layout Itemize
4382 Syntax: classobj lookup_class(string name)
4385 \begin_layout Standard
4386 Looks up class corresponding to <name>, if possible.
4387 If not found, returns nil.
4388 The classobj has following fields:
4391 \begin_layout Itemize
4392 _static_methods: Return static method names
4395 \begin_layout Itemize
4396 _class_methods: Return class method names
4399 \begin_layout Itemize
4400 <static-function-name>: The specified static function.
4403 \begin_layout Subsection
4404 all_classes: Get list of all classes
4407 \begin_layout Itemize
4412 \begin_layout Standard
4413 Get names of all classes available.
4416 \begin_layout Subsection
4417 lsnes_features: Read feature flags
4420 \begin_layout Itemize
4421 Syntax: boolean lsnes_features(string feature)
4424 \begin_layout Standard
4425 Checks if feature <feature> is available, if it is, returns true, otherwise
4427 The following features are known:
4430 \begin_layout Itemize
4431 text-halos: gui.text supports halos (takes halo color argument).
4434 \begin_layout Subsection
4438 \begin_layout Standard
4442 \begin_layout Subsection
4443 filereader: Class FILEREADER
4446 \begin_layout Standard
4447 See class FILEREADER.
4450 \begin_layout Standard
4451 \begin_inset Newpage pagebreak
4457 \begin_layout Section
4461 \begin_layout Standard
4462 Bitwise logical functions and related.
4465 \begin_layout Subsection
4466 bit.none/bit.bnot: Bitwise none or NOT function
4469 \begin_layout Itemize
4470 Syntax: number bit.none(number...)
4473 \begin_layout Itemize
4474 Syntax: number bit.bnot(number...)
4477 \begin_layout Standard
4478 48-bit bitwise NOT / NONE function (set bits that are set in none of the
4482 \begin_layout Subsection
4483 bit.any/bit.bor: Bitwise any or OR function
4486 \begin_layout Itemize
4487 Syntax: number bit.any(number...)
4490 \begin_layout Itemize
4491 Syntax: number bit.bor(number...)
4494 \begin_layout Standard
4495 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
4498 \begin_layout Subsection
4499 bit.all/bit.band: Bitwise all or AND function
4502 \begin_layout Itemize
4503 Syntax: number bit.all(number...)
4506 \begin_layout Itemize
4507 Syntax: number bit.band(number...)
4510 \begin_layout Standard
4511 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
4515 \begin_layout Subsection
4516 bit.parity/bit.bxor: Bitwise parity or XOR function
4519 \begin_layout Itemize
4520 Syntax: number bit.parity(number...)
4523 \begin_layout Itemize
4524 Syntax: number bit.bxor(number...)
4527 \begin_layout Standard
4528 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
4532 \begin_layout Subsection
4533 bit.lrotate: Rotate a number left
4536 \begin_layout Itemize
4537 Syntax: number bit.lrotate(number base[, number amount[, number bits]])
4540 \begin_layout Standard
4541 Rotate <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4545 \begin_layout Subsection
4546 bit.rrotate: Rotate a number right
4549 \begin_layout Itemize
4550 Syntax: number bit.rrotate(number base[, number amount[, number bits]])
4553 \begin_layout Standard
4554 Rotate <bits>-bit (max 48, default 48) number <base> right by <amount> (default
4558 \begin_layout Subsection
4559 bit.lshift: Shift a number left
4562 \begin_layout Itemize
4563 Syntax: number bit.lshift(number base[, number amount[, number bits]])
4566 \begin_layout Standard
4567 Shift <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4569 The new bits are filled with zeroes.
4572 \begin_layout Subsection
4573 bit.lrshift: Shift a number right (logical)
4576 \begin_layout Itemize
4577 Syntax: number bit.lrshift(number base[, number amount[, number bits]])
4580 \begin_layout Standard
4581 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4583 The new bits are filled with zeroes.
4586 \begin_layout Subsection
4587 bit.arshift: Shift a number right (arithmetic)
4590 \begin_layout Itemize
4591 Syntax: number bit.arshift(number base[, number amount[, number bits]])
4594 \begin_layout Standard
4595 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4597 The new bits are shifted in with copy of the high bit.
4600 \begin_layout Subsection
4601 bit.extract: Extract/shuffle bits from number
4604 \begin_layout Itemize
4605 Syntax: number bit.extract(number base[, number bit0[, number bit1,...]])
4608 \begin_layout Standard
4609 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
4612 \begin_layout Itemize
4613 Note: Bit numbers up to 51 should work reliably (then things start falling
4614 apart due to double precision issues).
4617 \begin_layout Itemize
4618 Note: There are two special bit positions, true and false, standing for
4619 always set bit and always clear bit.
4622 \begin_layout Subsection
4623 bit.value: Construct number with specified bits set
4626 \begin_layout Itemize
4627 Syntax: number bit.value([number bit1[, number bit2,...]])
4630 \begin_layout Standard
4631 Returns bitwise OR of 1 left shifted by <bit1> places, 1 left shifted by
4632 <bit2> places and so on.
4633 As special value, nil argument is no-op.
4636 \begin_layout Subsection
4637 bit.test: Test if bit is set
4640 \begin_layout Itemize
4641 Syntax: boolean bit.test(number a, number bit)
4644 \begin_layout Standard
4645 Tests if bit <bit> is set in <a>.
4646 If it is set, returns true, otherwise false.
4649 \begin_layout Subsection
4650 bit.testn: Test if bit is clear
4653 \begin_layout Itemize
4654 Syntax: boolean bit.testn(number a, number bit)
4657 \begin_layout Standard
4658 Tests if bit <bit> is set in <a>.
4659 If it is clear, returns true, otherwise false.
4662 \begin_layout Subsection
4663 bit.test_any: Test if any bit is set
4666 \begin_layout Itemize
4667 Syntax: boolean bit.test_any(number a, number b)
4670 \begin_layout Standard
4671 Returns true if bitwise and of <a> and <b> is nonzero, otherwise false.
4674 \begin_layout Subsection
4675 bit.test_all: Test if all bits are set
4678 \begin_layout Itemize
4679 Syntax: boolean bit.test_all(number a, number b)
4682 \begin_layout Standard
4683 Returns true if bitwise and of <a> and <b> equals <b>, otherwise false.
4686 \begin_layout Subsection
4687 bit.popcount: Population count
4690 \begin_layout Itemize
4691 Syntax: number bit.popcount(number a)
4694 \begin_layout Standard
4695 Returns number of set bits in <a>.
4698 \begin_layout Subsection
4699 bit.clshift: Chained left shift
4702 \begin_layout Itemize
4703 Syntax: (number, number) bit.clshift(number a, number b, [number amount,[number
4707 \begin_layout Standard
4708 Does chained left shift on <a>, <b> by <amount> positions (default 1), assuming
4709 numbers to be of specified number of bits <bits> (default 48).
4712 \begin_layout Subsection
4713 bit.crshift: Chained right shift
4716 \begin_layout Itemize
4717 Syntax: (number, number) bit.crshift(number a, number b, [number amount,[number
4721 \begin_layout Standard
4722 Does chained right shift on <a>, <b> by <amount> positions (default 1),
4723 assuming numbers to be of specified number of bits <bits> (default 48).
4726 \begin_layout Subsection
4727 bit.flagdecode: Decode bitfield into flags
4730 \begin_layout Itemize
4731 Syntax: string bit.flagdecode(number a, number bits, [string on, [string
4735 \begin_layout Standard
4736 Return string of length bits where ith character is ith character of on
4737 if bit i is on, otherwise ith character of off.
4738 Out of range reads give last character.
4741 \begin_layout Itemize
4742 Note: <on> defaults to '*' if empty.
4745 \begin_layout Itemize
4746 Note: <off> defaults to '-' if empty.
4749 \begin_layout Subsection
4750 bit.rflagdecode: Decode bitfield into flags
4753 \begin_layout Itemize
4754 Syntax: string bit.rflagdecode(number a, number bits, [string on, [string
4758 \begin_layout Standard
4759 Like bit.flagdecode, but outputs the string in the opposite order (most significa
4763 \begin_layout Subsection
4764 bit.swap{,s}{,h,d,q}word: Swap word endian
4767 \begin_layout Itemize
4768 Syntax: number bit.swapword(number n)
4771 \begin_layout Itemize
4772 Syntax: number bit.swaphword(number n)
4775 \begin_layout Itemize
4776 Syntax: number bit.swapdword(number n)
4779 \begin_layout Itemize
4780 Syntax: number bit.swapqword(number n)
4783 \begin_layout Itemize
4784 Syntax: number bit.swapsword(number n)
4787 \begin_layout Itemize
4788 Syntax: number bit.swapshword(number n)
4791 \begin_layout Itemize
4792 Syntax: number bit.swapsdword(number n)
4795 \begin_layout Itemize
4796 Syntax: number bit.swapsqword(number n)
4799 \begin_layout Standard
4800 Swap endianess of (un)signed integer <n>.
4803 \begin_layout Subsection
4804 bit.compose: Compose multi-byte number
4807 \begin_layout Itemize
4808 Syntax: number bit.compose(number n...)
4811 \begin_layout Standard
4813 \begin_inset Formula $n_{1}+256n_{2}+256^{2}n_{3}+\ldots$
4819 \begin_layout Subsection
4820 bit.binary_ld_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Load binary integer
4823 \begin_layout Itemize
4824 Syntax: number bit.binary_ld_<type>le(string str, number pos);
4827 \begin_layout Itemize
4828 Syntax: number bit.binary_ld_<type>be(string str, number pos);
4831 \begin_layout Standard
4832 Load little (*le) or big (*be) endian binary number from position <pos>
4834 Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4838 \begin_layout Subsection
4839 bit.binary_st_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Store binary integer
4842 \begin_layout Itemize
4843 Syntax: string bit.binary_st_<type>le(number x);
4846 \begin_layout Itemize
4847 Syntax: string bit.binary_st_<type>be(number x);
4850 \begin_layout Standard
4851 Store specified number <x> as binary in string and return the result.
4852 Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4856 \begin_layout Subsection
4857 bit.quotent: Integer quotent
4860 \begin_layout Itemize
4861 Syntax: number bit.quotent(number a, number b)
4864 \begin_layout Standard
4865 Calculate quotent a/b.
4868 \begin_layout Subsection
4869 bit.multidiv: Divide and split among multiple divisiors
4872 \begin_layout Itemize
4874 bit.multidiv(number v, number q...)
4877 \begin_layout Standard
4878 Does the following steps:
4881 \begin_layout Enumerate
4885 \begin_layout Enumerate
4890 \begin_layout Enumerate
4891 Calculate quotent(v'/q) and add that to numbers returned.
4894 \begin_layout Enumerate
4895 v' <- remainder(v'/q)
4899 \begin_layout Enumerate
4900 Add v' to numbers returned.
4903 \begin_layout Standard
4904 That is, it successively divides <v> by <q>s, and reduces <v> modulo <q>
4906 <v> may be floating point, <q>s are integers.
4909 \begin_layout Itemize
4911 bit.multidiv(time, 3600, 60) splits time into hours, minutes and seconds.
4914 \begin_layout Itemize
4916 bit.multidiv(a, b) calculates quotent and remainder of a/b.
4919 \begin_layout Subsection
4920 bit.mul32: 32-bit multiply
4923 \begin_layout Itemize
4924 Syntax: number, number bit.mul32(number a, number b)
4927 \begin_layout Standard
4928 Multiply 32-bit numbers <a> and <b>.
4929 The first return value is low 32 bits of result, the second is high 32
4933 \begin_layout Subsection
4934 bit.fextract: Extract bit field
4937 \begin_layout Itemize
4938 Syntax: number bit.fextract(number value, number shift, number width)
4941 \begin_layout Standard
4942 Extract <width> bits starting from bit <shift> from number <value>.
4943 This is more compact way to write
4944 \begin_inset Formula $\left(value\gg shift\right)\&\left(2^{width}-1\right)$
4950 \begin_layout Subsection
4951 bit.bfields: Split number into bit fields
4954 \begin_layout Itemize
4956 bit.bfields(number v, number q...)
4959 \begin_layout Standard
4960 Split a number <v> into bitfields of <q> bits (in order, from least significant
4961 towards more significant bits), with no padding in between.
4964 \begin_layout Itemize
4966 number of form 0 bbbbb ggggg rrrrr can be decoded to its component fields
4967 using r,g,b = bit.bfields(v, 5, 5, 5).
4971 \begin_layout Itemize
4973 number of form x yyyyyyy w zzzzzzz can be decode to its component fields
4974 using z, w, y, x = bit.bfields(v, 7, 1, 7, 1).
4977 \begin_layout Standard
4978 \begin_inset Newpage pagebreak
4984 \begin_layout Section
4988 \begin_layout Subsection
4989 classes.<foo>: The classobj for class <foo>
4992 \begin_layout Itemize
4993 Syntax: classes.<foo>
4996 \begin_layout Standard
4997 The classobj for class <foo>.
5000 \begin_layout Subsection
5001 classes.<foo>._static_methods: Enumerate static methods
5004 \begin_layout Itemize
5006 classes.<foo>._static_methods()
5009 \begin_layout Standard
5010 Returns all static methods of <foo> as strings.
5013 \begin_layout Subsection
5014 classes.<foo>._class_methods: Enumerate static methods
5017 \begin_layout Itemize
5019 classes.<foo>._class_methods()
5022 \begin_layout Standard
5023 Returns all class methods of <foo> as strings.
5026 \begin_layout Subsection
5027 classes.<foo>.<bar>: Static method
5030 \begin_layout Itemize
5031 Syntax: variable classes.<foo>.<bar>(variable...)
5034 \begin_layout Standard
5035 Invokes static method <bar> of class <foo>.
5038 \begin_layout Section
5042 \begin_layout Subsection
5043 gui.resolution: Get current resolution
5046 \begin_layout Itemize
5047 Syntax: (number, number) gui.resolution()
5050 \begin_layout Standard
5051 Returns 2-tuple (hresolution, vresolution).
5054 \begin_layout Subsection
5055 gui.left_gap/gui.right_gap/gui.top_gap/gui.bottom_gap: Set edge gaps
5058 \begin_layout Itemize
5059 Syntax: number gui.left_gap(number gap)
5062 \begin_layout Itemize
5063 Syntax: number gui.right_gap(number gap)
5066 \begin_layout Itemize
5067 Syntax: number gui.top_gap(number gap)
5070 \begin_layout Itemize
5071 Syntax: number gui.bottom_gap(number gap)
5074 \begin_layout Standard
5075 Set the specified edge gap to specified value <gap> (max gap is 8191).
5076 If successful, old gap is returned.
5079 \begin_layout Subsection
5080 gui.delta_left_gap/gui.delta_right_gap/gui.delta_top_gap/gui.delta_bottom_gap:
5084 \begin_layout Itemize
5085 Syntax: number gui.delta_left_gap(number dgap)
5088 \begin_layout Itemize
5089 Syntax: number gui.delta_right_gap(number dgap)
5092 \begin_layout Itemize
5093 Syntax: number gui.delta_top_gap(number dgap)
5096 \begin_layout Itemize
5097 Syntax: number gui.delta_bottom_gap(number dgap)
5100 \begin_layout Standard
5101 Increase the specified edge gap by specified value <dgap> (max gap is 8191)
5102 and return the old gap (returns nothing on error).
5105 \begin_layout Subsection
5106 gui.text/gui.textH/gui.textV,gui.textHV: Draw text
5109 \begin_layout Itemize
5110 Syntax: none gui.text(number x, number y, string text[, number fgc[, number
5111 bgc[, number hlc]]])
5114 \begin_layout Itemize
5115 Syntax: none gui.textH(number x, number y, string text[, number fgc[, number
5116 bgc[, number hlc]]])
5119 \begin_layout Itemize
5120 Syntax: none gui.textV(number x, number y, string text[, number fgc[, number
5121 bgc[, number hlc]]])
5124 \begin_layout Itemize
5125 Syntax: none gui.textHV(number x, number y, string text[, number fgc[, number
5126 bgc[, number hlc]]])
5129 \begin_layout Standard
5130 Draw specified text on the GUI (each character cell is 8 or 16 wide and
5135 \begin_layout Itemize
5136 x: X-coordinate to start the drawing from (and x-coordinate at begining
5140 \begin_layout Itemize
5141 y: Y-coordinate to start the drawing from.
5144 \begin_layout Itemize
5145 text: The text to draw.
5148 \begin_layout Itemize
5149 fgc: Text color (default is 0xFFFFFF (white))
5152 \begin_layout Itemize
5153 bgc: Background color (default is -1 (transparent))
5156 \begin_layout Itemize
5157 hlc: Halo color (default is -1 (transparent))
5160 \begin_layout Standard
5161 Note: The H variants draw at double width and V variants draw at double
5163 Halo thickness is always 1 and is not doubled.
5166 \begin_layout Subsection
5167 gui.rectangle: Draw a rectangle
5170 \begin_layout Itemize
5171 Syntax: none gui.rectangle(number x, number y, number width, number height[,
5172 number thickness[, number outline[, number fill]]])
5175 \begin_layout Standard
5176 Draw rectangle on the GUI.
5180 \begin_layout Itemize
5181 x: X-coordinate of left edge.
5184 \begin_layout Itemize
5185 y: Y-coordinate of upper edge.
5188 \begin_layout Itemize
5189 width: Width of rectangle.
5192 \begin_layout Itemize
5193 height: Height of rectangle.
5196 \begin_layout Itemize
5197 thickness: Thickness of outline (default is 1).
5200 \begin_layout Itemize
5201 outline: Color of outline (default is 0xFFFFFF (white))
5204 \begin_layout Itemize
5205 fill: Color of fill (default is -1 (transparent))
5208 \begin_layout Subsection
5209 gui.solidrectangle: Draw a solid rectangle
5212 \begin_layout Itemize
5213 Syntax: none gui.rectangle(number x, number y, number width, number height[,
5217 \begin_layout Standard
5218 Draw solid rectangle on the GUI.
5222 \begin_layout Itemize
5223 x: X-coordinate of left edge.
5226 \begin_layout Itemize
5227 y: Y-coordinate of upper edge.
5230 \begin_layout Itemize
5231 width: Width of rectangle.
5234 \begin_layout Itemize
5235 height: Height of rectangle.
5238 \begin_layout Itemize
5239 color: Color of rectangle (default is 0xFFFFFF (white))
5242 \begin_layout Subsection
5243 gui.box: Draw a 3D-effect box
5246 \begin_layout Itemize
5247 Syntax: none gui.box(number x, number y, number width, number height[, number
5248 thickness[, number outline1[,number outline2[, number fill]]]])
5251 \begin_layout Standard
5252 Draw rectangle with 3D effect on the GUI.
5256 \begin_layout Itemize
5257 x: X-coordinate of left edge.
5260 \begin_layout Itemize
5261 y: Y-coordinate of upper edge.
5264 \begin_layout Itemize
5265 width: Width of rectangle.
5268 \begin_layout Itemize
5269 height: Height of rectangle.
5272 \begin_layout Itemize
5273 thickness: Thickness of outline (default is 1).
5276 \begin_layout Itemize
5277 outline1: First color of outline (default is 0xFFFFFF (white))
5280 \begin_layout Itemize
5281 outline2: First color of outline (default is 0x808080 (dark gray))
5284 \begin_layout Itemize
5285 fill: Color of fill (default is 0xC0C0C0 (light grayy))
5288 \begin_layout Subsection
5289 gui.pixel: Draw a single pixel
5292 \begin_layout Itemize
5293 Syntax: none gui.pixel(number x, number y[, number color])
5296 \begin_layout Standard
5297 Draw one pixel on the GUI.
5301 \begin_layout Itemize
5302 x: X-coordinate of the pixel
5305 \begin_layout Itemize
5306 y: Y-coordinate of the pixel
5309 \begin_layout Itemize
5310 color: Color of the pixel (default is 0xFFFFFF (white))
5313 \begin_layout Subsection
5314 gui.crosshair: Draw a crosshair
5317 \begin_layout Itemize
5318 Syntax: none gui.crosshair(number x, number y[, number length[, number color]])
5321 \begin_layout Standard
5326 \begin_layout Itemize
5327 x: X-coordinate of the crosshair
5330 \begin_layout Itemize
5331 y: Y-coordinate of the crosshair
5334 \begin_layout Itemize
5335 length: Length of the crosshair lines (default 10).
5338 \begin_layout Itemize
5339 color: Color of the crosshair (default is 0xFFFFFF (white))
5342 \begin_layout Subsection
5343 gui.line: Draw a line
5346 \begin_layout Itemize
5347 Syntax: none gui.line(number x1, number y1, number x2, number y2[, number
5351 \begin_layout Standard
5356 \begin_layout Itemize
5357 x1: X-coordinate of one end.
5360 \begin_layout Itemize
5361 y1: Y-coordinate of one end.
5364 \begin_layout Itemize
5365 x2: X-coordinate of the other end.
5368 \begin_layout Itemize
5369 y2: Y-coordinate of the other end.
5372 \begin_layout Itemize
5373 color: Color of the line (default is 0xFFFFFF (white)).
5376 \begin_layout Subsection
5377 gui.circle: Draw a (filled) circle
5380 \begin_layout Itemize
5381 Syntax: none gui.circle(number x, number y, number r[, number thick[, number
5382 border[, number fil]]])
5385 \begin_layout Standard
5390 \begin_layout Itemize
5391 x: X-coordinate of the center
5394 \begin_layout Itemize
5395 y: Y-coordinate of the center
5398 \begin_layout Itemize
5399 r: The radius of the circle
5402 \begin_layout Itemize
5403 thick: Border thickness
5406 \begin_layout Itemize
5407 border: Border color (default is 0xFFFFFF (white))
5410 \begin_layout Itemize
5411 fill: Fill color (default is -1 (transparent)).
5414 \begin_layout Subsection
5415 gui.repaint: Arrange a repaint
5418 \begin_layout Itemize
5419 Syntax: none gui.repaint()
5422 \begin_layout Standard
5423 Request on_repaint() to happen as soon as possible.
5426 \begin_layout Subsection
5427 gui.subframe_update: Enable/Disable subframe updates
5430 \begin_layout Itemize
5431 Syntax: none gui.subframe_update(boolean on)
5434 \begin_layout Standard
5435 Request subframe updates (calling on_paint() on subframes) to happen (<on>=true)
5436 or not happen (<on>=false).
5439 \begin_layout Subsection
5440 gui.screenshot: Write a screenshot
5443 \begin_layout Itemize
5444 Syntax: none gui.screenshot(string filename)
5447 \begin_layout Standard
5448 Write PNG screenshot of the current frame (no drawings) to specified file
5452 \begin_layout Subsection
5453 gui.screenshot_bitmap: Write a screenshot to bitmap
5456 \begin_layout Itemize
5457 Syntax: DBITMAP gui.screenshot_bitmap()
5460 \begin_layout Standard
5461 Write PNG screenshot of the current frame (no drawings) to dbitmap and return
5465 \begin_layout Subsection
5466 gui.color: Compose a color.
5469 \begin_layout Itemize
5470 Syntax: number gui.color(number r, number g, number b[, number a])
5473 \begin_layout Itemize
5474 Syntax: number gui.color(string c)
5477 \begin_layout Standard
5478 Returns color (in notation Lua scripts use) corresponding to color (<r>,<g>,<b>)
5479 , each component in scale 0-255.
5480 If <a> is specified, that is alpha (0 is fully transparent, 256(sic) is
5482 The default alpha is 256.
5485 \begin_layout Standard
5486 The form taking a string returns color corresponding color name.
5489 \begin_layout Subsection
5490 gui.status: Set status variable
5493 \begin_layout Itemize
5494 Syntax: none gui.status(string name, string value)
5497 \begin_layout Standard
5499 \begin_inset Quotes eld
5503 \begin_inset Quotes erd
5506 to <value> in status area.
5509 \begin_layout Subsection
5510 gui.rainbow: Rainbow color calculation
5513 \begin_layout Itemize
5514 Syntax: number gui.rainbow(number step, number steps[, number color])
5517 \begin_layout Standard
5518 Perform hue rotation of color <color> (default bright red), by <step> steps.
5519 The number of steps per full rotation is given by absolute value of <steps>.
5522 \begin_layout Standard
5523 If <step> is negative, the rotation will be counterclockwise.
5526 \begin_layout Subsection
5527 gui.kill_frame: Kill video frame and associated sound
5530 \begin_layout Itemize
5531 Syntax: none gui.kill_frame()
5534 \begin_layout Standard
5535 Kills the currently dumped video frame + the associated sound.
5536 Only valid in on_video callback.
5539 \begin_layout Subsection
5540 gui.set_video_scale: Set video frame scale
5543 \begin_layout Itemize
5544 Syntax: none gui.set_video_scale(number h, number v)
5547 \begin_layout Standard
5548 Sets the scale factors of current frame to <h>x<v>.
5549 Only valid in on_video callback.
5552 \begin_layout Subsection
5553 gui.arrow: Draw an arrow
5556 \begin_layout Itemize
5557 Syntax: none gui.arrow(number x, number y, number length, number hwidth,
5558 number direction[, bool fill[, number color[, number twidth[, number hthick]]]]
5562 \begin_layout Standard
5563 Draws an arrow using color <color>.
5564 The tip of arrow is at (<x>, <y>).
5568 \begin_layout Enumerate
5569 <length>: The length of arrow tail.
5572 \begin_layout Enumerate
5573 <hwidth>: The width of arrow head.
5577 \begin_layout Enumerate
5578 <direction>: Direction of arrow.
5579 0 is to right, +1 rotates 45 degrees counterclockwise.
5582 \begin_layout Enumerate
5583 <fill>: If true, fill the arrow head.
5587 \begin_layout Enumerate
5588 <twidth>: Tail width.
5593 \begin_layout Enumerate
5594 <hthick>: Head thickness (only used if <fill> is false).
5595 Default is <twidth>.
5598 \begin_layout Subsection
5599 gui.tiled_bitmap: Class TILEMAP
5602 \begin_layout Standard
5606 \begin_layout Subsection
5607 gui.palette: Class PALETTE
5610 \begin_layout Standard
5614 \begin_layout Subsection
5615 gui.bitmap: Class BITMAP
5618 \begin_layout Standard
5622 \begin_layout Subsection
5623 gui.dbitmap: Class DBITMAP
5626 \begin_layout Standard
5630 \begin_layout Subsection
5631 gui.font: Class CUSTOMFONT
5634 \begin_layout Standard
5635 See class CUSTOMFONT.
5638 \begin_layout Subsection
5639 gui.renderctx: Class RENDERCTX
5642 \begin_layout Standard
5643 See class RENDERCTX.
5646 \begin_layout Subsection
5647 gui.image: Class IMAGELOADER
5650 \begin_layout Standard
5651 See class IMAGELOADER.
5654 \begin_layout Subsection
5655 gui.get_runmode: Get current emulator mode
5658 \begin_layout Itemize
5659 Syntax: string gui.get_runmode()
5662 \begin_layout Standard
5663 Gets the current emulator runmode.
5664 The possible ones are:
5667 \begin_layout Itemize
5668 quit: Emulator is quitting.
5671 \begin_layout Itemize
5672 normal: Emulator is running emulation
5675 \begin_layout Itemize
5676 load: Emulator is loading a movie/savestate
5679 \begin_layout Itemize
5680 advance_frame: Emulator is doing frame advance
5683 \begin_layout Itemize
5684 advance_subframe: Emulator is doing subframe advance
5687 \begin_layout Itemize
5688 skiplag: Emulator is skipping lag frames
5691 \begin_layout Itemize
5692 skiplag_pending: Emulator will start skipping lag frames next frame
5695 \begin_layout Itemize
5696 pause: Emulator is paused
5699 \begin_layout Itemize
5700 pause_break: Emulator is paused at breakpoint
5703 \begin_layout Itemize
5704 corrupt: Emulator can't run because corrupt emulation state
5707 \begin_layout Itemize
5708 unknown: Unknown state (should not happen).
5711 \begin_layout Standard
5712 \begin_inset Newpage pagebreak
5718 \begin_layout Section
5722 \begin_layout Standard
5724 Functions manipulating input are only available in on_input callback.
5727 \begin_layout Subsection
5728 input.get: Read controller button/axis (deprecated)
5731 \begin_layout Itemize
5732 Syntax: number input.get(number controller, number index)
5735 \begin_layout Standard
5736 Read the specified index <index> (zero-based) from specified controller
5737 <controller> (zero-based).
5741 \begin_layout Subsection
5742 input.set: Write controller button/axis (deprecated)
5745 \begin_layout Itemize
5746 Syntax: none input.set(number controller, number index, number value)
5749 \begin_layout Standard
5750 Write the specified index <index> (zero-based) from specified controller
5751 <controller> (zero-based), storing value <value>.
5754 \begin_layout Subsection
5755 input.get2: Read controller button/axis
5758 \begin_layout Itemize
5759 Syntax: number input.get2(number port, number controller, number index)
5762 \begin_layout Standard
5763 Read the specified input tuple.
5764 Port 0 is system port.
5767 \begin_layout Subsection
5768 input.set2: Write controller button/axis
5771 \begin_layout Itemize
5772 Syntax: input.set2(number port, number controller, number index, number value)
5775 \begin_layout Standard
5776 Write the specified input tuple.
5777 Port 0 is system port.
5780 \begin_layout Subsection
5781 input.lcid_to_pcid2: Look up logical controller
5784 \begin_layout Itemize
5785 Syntax: (number, number) input.lcid_to_pcid2(number lcid)
5788 \begin_layout Standard
5789 Look up physical pcid pair (port, controller) corresponding to specified
5790 logical controller (1-based).
5791 Returns nothing if controller does not exist.
5794 \begin_layout Subsection
5795 input.port_type: Look up port type
5798 \begin_layout Itemize
5799 Syntax: string input.port_type(number port)
5802 \begin_layout Standard
5803 Return type of specified port.
5806 \begin_layout Subsection
5807 input.controller_info: Get information about controller
5810 \begin_layout Itemize
5811 Syntax: table input.controller_info(number port, number controller)
5814 \begin_layout Standard
5815 Get controller info for specified controller.
5816 If controller does not exist, returns nil.
5817 Otherwise returns a table with following fields:
5820 \begin_layout Itemize
5821 type (string): Type of the controller.
5824 \begin_layout Itemize
5825 class (string): Class of the controller.
5828 \begin_layout Itemize
5829 classnum (number): Number of the controller within its class (1-based)
5832 \begin_layout Itemize
5833 lcid (number): Logical controller number of the controller.
5836 \begin_layout Itemize
5837 button_count (number): Number of buttons on controller
5840 \begin_layout Itemize
5841 buttons (array): Array of following info about each button:
5845 \begin_layout Itemize
5846 type (string): Type of button.
5848 \begin_inset Quotes eld
5852 \begin_inset Quotes erd
5856 \begin_inset Quotes eld
5860 \begin_inset Quotes erd
5864 \begin_inset Quotes eld
5868 \begin_inset Quotes erd
5872 \begin_inset Quotes eld
5876 \begin_inset Quotes erd
5882 \begin_layout Itemize
5883 name (string): Name of button.
5886 \begin_layout Itemize
5887 symbol (string): Symbol of button.
5888 Only present for type
5889 \begin_inset Quotes eld
5893 \begin_inset Quotes erd
5899 \begin_layout Itemize
5900 hidden (boolean): True if hidden button.
5905 \begin_layout Subsection
5906 input.veto_button: Veto a button press
5909 \begin_layout Itemize
5910 Syntax: none input.veto_button()
5913 \begin_layout Standard
5914 Signals that the button event should be vetoed.
5915 Only valid in on_button callback.
5918 \begin_layout Subsection
5919 input.geta: Get all buttons for controller (deprecated)
5922 \begin_layout Itemize
5923 Syntax: (number, number...) input.geta(number controller)
5926 \begin_layout Standard
5927 Get input state for entiere controller.
5928 Returns n return values.
5931 \begin_layout Itemize
5932 1st return value: Bitmask: bit i is set if i:th index is nonzero
5935 \begin_layout Itemize
5936 2nd- return value: value of i:th index.
5939 \begin_layout Subsection
5940 input.seta: Set all buttons for controller (deprecated)
5943 \begin_layout Itemize
5944 Syntax: none input.seta(number controller, number bitmask, number args...)
5947 \begin_layout Standard
5948 Set state for entiere controller.
5949 args is up to N values for indices (overriding values in bitmask if specified).
5952 \begin_layout Subsection
5953 input.controllertype: Get controller type (deprecated)
5956 \begin_layout Itemize
5957 syntax: string input.controllertype(number controller)
5960 \begin_layout Standard
5961 Get the type of controller as string.
5964 \begin_layout Subsection
5965 input.reset: Execute (delayed) reset
5968 \begin_layout Itemize
5969 Syntax: none input.reset([number cycles])
5972 \begin_layout Standard
5974 If <cycles> is greater than zero, do delayed reset.
5975 0 (or no value) causes immediate reset.
5978 \begin_layout Itemize
5979 Note: Only available with subframe flag false.
5982 \begin_layout Subsection
5983 input.raw: Return raw input data
5986 \begin_layout Itemize
5987 Syntax: table input.raw()
5990 \begin_layout Standard
5991 Returns table of tables of all available keys and axes.
5992 The first table is indexed by key name (platform-dependent!), and the inner
5993 table has the following fields:
5996 \begin_layout Itemize
5997 value: Last reported value for control
6001 \begin_layout Itemize
6002 For keys: 1 for pressed, 0 for released.
6005 \begin_layout Itemize
6006 For axes: -32767...32767.
6009 \begin_layout Itemize
6010 For presure-sensitive buttons: 0...32767.
6013 \begin_layout Itemize
6014 For hats: Bitmask: 1=>Up, 2=>Right, 4=>Down, 8=>Left.
6017 \begin_layout Itemize
6018 For mouse: Coordinates relative to game area.
6022 \begin_layout Itemize
6023 ktype: Type of key (disabled, key, mouse, axis, hat, pressure).
6026 \begin_layout Subsection
6027 input.keyhook: Hook a key
6030 \begin_layout Itemize
6031 Syntax: none input.keyhook(string key, boolean state)
6034 \begin_layout Standard
6035 Requests that keyhook events to be sent for key <key> (<state>=true) or
6036 not sent (<state>=false).
6039 \begin_layout Subsection
6040 input.joyget: Get controls for controller
6043 \begin_layout Itemize
6044 Syntax: table input.joyget(number logical)
6047 \begin_layout Standard
6048 Returns table for current controls for specified logical controller <logical>.
6049 The names of fields vary by controller type.
6052 \begin_layout Itemize
6053 The buttons have the same name as those are referred to in other contexts
6057 \begin_layout Itemize
6058 The analog axes are usually
6059 \begin_inset Quotes eld
6063 \begin_inset Quotes erd
6067 \begin_inset Quotes eld
6071 \begin_inset Quotes erd
6077 \begin_layout Itemize
6078 Each field is numeric or boolean depending on axis/button.
6081 \begin_layout Subsection
6082 input.joyset: Set controls for controller
6085 \begin_layout Itemize
6086 Syntax: none input.joyset(number controller, table controls)
6089 \begin_layout Standard
6090 Set the the state of specified controller to values specified in specified
6094 \begin_layout Itemize
6095 Each field can be boolean or number.
6098 \begin_layout Itemize
6099 Also, buttons allow strings, which cause value to be inverted.
6102 \begin_layout Subsection
6103 input.lcid_to_pcid: Look up logical controller (deprecated)
6106 \begin_layout Itemize
6107 Syntax: (number, number, number) input.lcid_to_pcid(number lcid)
6110 \begin_layout Standard
6111 Returns the legacy pcid for controller (or false if there isn't one), followed
6113 Returns nothing if controller does not exist.
6116 \begin_layout Standard
6117 \begin_inset Newpage pagebreak
6123 \begin_layout Section
6127 \begin_layout Standard
6128 Various keybinding-related functions
6131 \begin_layout Subsection
6132 keyboard.bind: Bind a key
6135 \begin_layout Itemize
6136 Syntax: none keyboard.bind(string mod, string mask, string key, string cmd)
6139 \begin_layout Standard
6140 Bind specified key with specified modifers to specified command.
6143 \begin_layout Subsection
6144 keyboard.unbind: Unbind a key
6147 \begin_layout Itemize
6148 Syntax: none keyboard.unbind(string mod, string mask, string key)
6151 \begin_layout Standard
6152 Unbind specified key with specified modifers.
6155 \begin_layout Subsection
6156 keyboard.alias: Set alias expansion
6159 \begin_layout Itemize
6160 Syntax: none keyboard.alias(string alias, string expansion)
6163 \begin_layout Standard
6164 Set expansion of given command.
6167 \begin_layout Standard
6168 \begin_inset Newpage pagebreak
6174 \begin_layout Section
6178 \begin_layout Standard
6182 \begin_layout Subsection
6183 subtitle.byindex: Look up start and length of subtitle by index
6186 \begin_layout Itemize
6187 Syntax: (number, number) subtitle.byindex(number i)
6190 \begin_layout Standard
6191 Read the frame and length of ith subtitle.
6192 Returns nothing if not present.
6195 \begin_layout Subsection
6196 subtitle.set: Write a subtitle
6199 \begin_layout Itemize
6200 Syntax: none subtitle.set(number f, number l, string txt)
6203 \begin_layout Standard
6204 Set the text of subtitle.
6207 \begin_layout Subsection
6208 subtitle.get: Read a subtitle
6211 \begin_layout Itemize
6212 Syntax: string subtitle.get(number f, number l)
6215 \begin_layout Standard
6216 Get the text of subtitle.
6219 \begin_layout Subsection
6220 subtitle.delete: Delete a subtitle
6223 \begin_layout Itemize
6224 Syntax: none subtitle.delete(number f, number l)
6227 \begin_layout Standard
6228 Delete specified subtitle.
6231 \begin_layout Standard
6232 \begin_inset Newpage pagebreak
6238 \begin_layout Section
6242 \begin_layout Standard
6243 Host memory handling (extra memory saved to savestates).
6244 Host memory starts empty.
6247 \begin_layout Itemize
6248 Reads out of range return false.
6251 \begin_layout Itemize
6252 Writes out of range extend the memory.
6255 \begin_layout Subsection
6256 hostmemory.read: Read byte from host memory
6259 \begin_layout Itemize
6260 Syntax: number hostmemory.read(number address)
6263 \begin_layout Standard
6264 Reads byte from hostmemory slot address <address>.
6267 \begin_layout Subsection
6268 hostmemory.write: Write byte to host memory
6271 \begin_layout Itemize
6272 Syntax: none hostmemory.write(number address, number value)
6275 \begin_layout Standard
6276 Writes hostmemory slot with value <value> 0-255.
6279 \begin_layout Subsection
6280 hostmemory.read{,s}{byte,{,h,d,q}word}: Read from host memory
6283 \begin_layout Itemize
6284 Syntax: number hostmemory.readbyte(number address)
6287 \begin_layout Itemize
6288 Syntax: number hostmemory.readsbyte(number address)
6291 \begin_layout Itemize
6292 Syntax: number hostmemory.readword(number address)
6295 \begin_layout Itemize
6296 Syntax: number hostmemory.readsword(number address)
6299 \begin_layout Itemize
6300 Syntax: number hostmemory.readhword(number address)
6303 \begin_layout Itemize
6304 Syntax: number hostmemory.readshword(number address)
6307 \begin_layout Itemize
6308 Syntax: number hostmemory.readdword(number address)
6311 \begin_layout Itemize
6312 Syntax: number hostmemory.readsdword(number address)
6315 \begin_layout Itemize
6316 Syntax: number hostmemory.readqword(number address)
6319 \begin_layout Itemize
6320 Syntax: number hostmemory.readsqword(number address)
6323 \begin_layout Standard
6324 Read elements (big-endian) from given address <address>.
6327 \begin_layout Itemize
6331 \begin_layout Itemize
6335 \begin_layout Itemize
6339 \begin_layout Itemize
6343 \begin_layout Itemize
6344 qword is 8 elements.
6347 \begin_layout Itemize
6348 The 's' variants do signed read.
6351 \begin_layout Subsection
6352 hostmemory.read{float,double}: Read from host memory
6355 \begin_layout Itemize
6356 syntax: number hostmemory.readfloat(number address)
6359 \begin_layout Itemize
6360 Syntax: number hostmemory.readdouble(number address)
6363 \begin_layout Standard
6364 Read elements (big-endian) floating-pont from given address <address>.
6367 \begin_layout Subsection
6368 hostmemory.write{,s}{byte,{,h,d,q}word}: Write to host memory
6371 \begin_layout Itemize
6372 Syntax: number hostmemory.writebyte(number address, number value)
6375 \begin_layout Itemize
6376 Syntax: number hostmemory.writesbyte(number address, number value)
6379 \begin_layout Itemize
6380 Syntax: number hostmemory.writeword(number address, number value)
6383 \begin_layout Itemize
6384 Syntax: number hostmemory.writesword(number address, number value)
6387 \begin_layout Itemize
6388 Syntax: number hostmemory.writehword(number address, number value)
6391 \begin_layout Itemize
6392 Syntax: number hostmemory.writeshword(number address, number value)
6395 \begin_layout Itemize
6396 Syntax: number hostmemory.writedword(number address, number value)
6399 \begin_layout Itemize
6400 Syntax: number hostmemory.writesdword(number address, number value)
6403 \begin_layout Itemize
6404 Syntax: number hostmemory.writeqword(number address, number value)
6407 \begin_layout Itemize
6408 Syntax: number hostmemory.writesqword(number address, number value)
6411 \begin_layout Standard
6412 Write value <value> to elements (little-endian) starting from given address
6416 \begin_layout Itemize
6420 \begin_layout Itemize
6424 \begin_layout Itemize
6428 \begin_layout Itemize
6432 \begin_layout Itemize
6433 qword is 8 elements.
6436 \begin_layout Itemize
6437 The 's' variants do signed write.
6440 \begin_layout Subsection
6441 hostmemory.write{float,double}: Write to host memory
6444 \begin_layout Itemize
6445 syntax: none hostmemory.readfloat(number address, number value)
6448 \begin_layout Itemize
6449 Syntax: none hostmemory.readdouble(number address, number value)
6452 \begin_layout Standard
6453 Write elements (big-endian) floating-pont to given address <address>, storing
6457 \begin_layout Standard
6458 \begin_inset Newpage pagebreak
6464 \begin_layout Section
6468 \begin_layout Standard
6472 \begin_layout Subsection
6473 movie.currentframe: Get current frame number
6476 \begin_layout Itemize
6477 Syntax: number movie.currentframe()
6480 \begin_layout Standard
6481 Return number of current frame.
6484 \begin_layout Subsection
6485 movie.framecount: Get move frame count
6488 \begin_layout Itemize
6489 Syntax: number movie.framecount()
6492 \begin_layout Standard
6493 Return number of frames in movie.
6496 \begin_layout Subsection
6497 movie.lagcount: Get current lag count
6500 \begin_layout Itemize
6501 Syntax: number movie.lagcount()
6504 \begin_layout Standard
6505 Return number of lag frames recorded so far.
6508 \begin_layout Subsection
6509 movie.readonly: Is in playback mode?
6512 \begin_layout Itemize
6513 Syntax: boolean movie.readonly()
6516 \begin_layout Standard
6517 Return true if in playback mode, false if in recording.
6520 \begin_layout Subsection
6521 movie.rerecords: Movie rerecord count
6524 \begin_layout Itemize
6525 Syntax: number movie.rerecords()
6528 \begin_layout Standard
6529 Returns the current value of rerecord count.
6532 \begin_layout Subsection
6533 movie.set_readwrite: Set recording mode.
6536 \begin_layout Itemize
6537 Syntax: none movie.set_readwrite()
6540 \begin_layout Standard
6541 Set recording mode (does not cause on_readwrite callback).
6544 \begin_layout Subsection
6545 movie.frame_subframes: Count subframes in frame
6548 \begin_layout Itemize
6549 Syntax: number movie.frame_subframes(number frame)
6552 \begin_layout Standard
6553 Count number of subframes in specified frame <frame> (frame numbers are
6554 1-based) and return that.
6557 \begin_layout Subsection
6558 movie.read_subframes: Read subframe data (deprecated)
6561 \begin_layout Itemize
6562 Syntax: table movie.read_subframes(number frame, number subframe)
6565 \begin_layout Standard
6566 Read specifed subframe in specified frame and return data as array.
6569 \begin_layout Subsection
6570 movie.read_rtc: Read current RTC time
6573 \begin_layout Itemize
6574 Syntax: (number, number) movie.read_rtc()
6577 \begin_layout Standard
6578 Returns the current value of the RTC as a pair (second, subsecond).
6581 \begin_layout Subsection
6582 movie.unsafe_rewind: Fast movie rewind to saved state
6585 \begin_layout Itemize
6586 Syntax: none movie.unsafe_rewind([UNSAFEREWIND state])
6589 \begin_layout Standard
6590 Start setting point for unsafe rewind or jump to point of unsafe rewind.
6593 \begin_layout Itemize
6594 If called without argument, causes emulator to start process of setting
6595 unsafe rewind point.
6596 When this has finished, callback on_set_rewind occurs, passing the rewind
6597 state to lua script.
6600 \begin_layout Itemize
6601 If called with argument, causes emulator rewind to passed rewind point as
6603 recording mode is implicitly activated.
6606 \begin_layout Standard
6607 The following warnings apply to unsafe rewinding:
6610 \begin_layout Itemize
6611 There are no safety checks against misuse (that's what
6612 \begin_inset Quotes eld
6616 \begin_inset Quotes erd
6622 \begin_layout Itemize
6623 Only call rewind from timeline rewind point was set from.
6626 \begin_layout Itemize
6627 Only call rewind from after the rewind point was set.
6630 \begin_layout Subsection
6631 movie.to_rewind: Load savestate as rewind point
6634 \begin_layout Itemize
6635 Syntax: UNSAFEREWIND movie.to_rewind(string filename)
6638 \begin_layout Standard
6639 Load specified savestate file <filename> as rewind point and return UNSAFEREWIND
6640 corresponding to it.
6643 \begin_layout Itemize
6644 Note: This operation does not take emulated time.
6647 \begin_layout Subsection
6648 movie.copy_movie/INPUTMOVIE::copy_movie: Copy movie to movie object
6651 \begin_layout Itemize
6652 Syntax: INPUTMOVIE movie.copy_movie([INPUTMOVIE/string movie])
6655 \begin_layout Itemize
6656 Syntax: INPUTMOVIE INPUTMOVIE::copy_movie()
6659 \begin_layout Standard
6660 Copies specified movie or branch <movie>/current object (if none or nil,
6661 the active movie) as new movie object.
6664 \begin_layout Subsection
6665 movie.get_frame/INPUTMOVIE::get_frame: Read specified frame in movie.
6668 \begin_layout Itemize
6669 Syntax: INPUTFRAME movie.get_frame([INPUTMOVIE/string movie,] number frame)
6672 \begin_layout Itemize
6673 Syntax: INPUTFRAME INPUTMOVIE::get_frame(number frame);
6676 \begin_layout Standard
6677 Get INPUTFRAME object corresponding to specified frame in specified movie
6681 \begin_layout Subsection
6682 movie.set_frame/INPUTMOVIE::set_frame: Write speicifed frame in movie.
6685 \begin_layout Itemize
6686 Syntax: none movie.set_frame([INPUTMOVIE/string movie,] number frame, INPUTFRAME
6690 \begin_layout Itemize
6691 Syntax: none INPUTMOVIE::set_frame(number frame, INPUTFRAME data)
6694 \begin_layout Standard
6695 Set data in specified frame.
6698 \begin_layout Itemize
6699 Note: Past can't be edited in active movie.
6702 \begin_layout Subsection
6703 movie.get_size/INPUTMOVIE::get_size: Get size of movie
6706 \begin_layout Itemize
6707 Syntax: integer movie.get_size([INPUTMOVIE/string movie])
6710 \begin_layout Itemize
6711 Syntax: integer INPUTMOVIE::get_size()
6714 \begin_layout Standard
6715 Return number of subframes in specified movie or branch.
6718 \begin_layout Subsection
6719 movie.count_frames/INPUTMOVIE::count_frames: Count frames in movie
6722 \begin_layout Itemize
6723 Syntax: number movie.count_frames([INPUTMOVIE/string movie])
6726 \begin_layout Itemize
6727 Syntax: number INPUTMOVIE::count_frames()
6730 \begin_layout Standard
6731 Return number of frames in movie.
6734 \begin_layout Subsection
6735 movie.find_frame/INPUTMOVIE::find_frame: Find subframe corresponding to frame
6738 \begin_layout Itemize
6739 Syntax: number movie.find_frame([INPUTMOVIE/string movie], number frame)
6742 \begin_layout Itemize
6743 Syntax: number INPUTMOVIE::find_frame(number frame)
6746 \begin_layout Standard
6747 Returns starting subframe of given frame (frame numbers are 1-based).
6748 Returns -1 if frame number is bad.
6751 \begin_layout Subsection
6752 movie.subframe_to_frame/INPUTMOVIE::subframe_to_frame: Find frame corresponding
6756 \begin_layout Itemize
6757 Syntax: number movie.subframe_to_frame([INPUTMOVIE/string movie], number
6761 \begin_layout Itemize
6762 Syntax: number INPUTMOVIE::subframe_to_frame(number subframe)
6765 \begin_layout Standard
6766 Returns frame containing given subframe (subframe numbers are 0-based).
6767 Returns -1 if subframe number is bad.
6770 \begin_layout Subsection
6771 movie.blank_frame/INPUTMOVIE::blank_frame: Return a blank frame
6774 \begin_layout Itemize
6775 Syntax: INPUTFRAME movie.blank_frame([INPUTMOVIE/string movie])
6778 \begin_layout Itemize
6779 Syntax: INPUTFRAME INPUTMOVIE::blank_frame()
6782 \begin_layout Standard
6783 Return blank INPUTFRAME with frame type from specified movie.
6786 \begin_layout Subsection
6787 movie.append_frames/INPUTMOVIE::append_frames: Append blank frames
6790 \begin_layout Itemize
6791 Syntax: none movie.append_frames([INPUTMOVIE/string movie,] number frames)
6794 \begin_layout Itemize
6795 Syntax: none INPUTMOVIE::append_frames(number frames)
6798 \begin_layout Standard
6799 Append specified number <frames> of frames.
6802 \begin_layout Subsection
6803 movie.append_frame/INPUTMOVIE::append_frame: Append a frame
6806 \begin_layout Itemize
6807 Syntax: none movie.append_frame([INPUTMOVIE/string movie,] INPUTFRAME frame)
6810 \begin_layout Itemize
6811 Syntax: none INPUTMOVIE::append_frame(INPUTFRAME frame)
6814 \begin_layout Standard
6815 Append specified frame <frame>.
6816 Past of current movie can't be edited.
6819 \begin_layout Subsection
6820 movie.truncate/INPUTMOVIE::truncate: Truncate a movie.
6823 \begin_layout Itemize
6824 Syntax: none movie.truncate([INPUTMOVIE/string movie,] number frames)
6827 \begin_layout Itemize
6828 Syntax: none INPUTMOVIE::truncate(number frames)
6831 \begin_layout Standard
6832 Truncate the specified movie to specified number of frames.
6835 \begin_layout Subsection
6836 movie.edit/INPUTMOVIE::edit: Edit a movie
6839 \begin_layout Itemize
6840 Syntax: none movie.edit([INPUTMOVIE movie,] number frame, number port, number
6841 controller, number control, number/bool value)
6844 \begin_layout Itemize
6845 Syntax: none movie.edit(string branch, number frame, number port, number
6846 controller, number control, number/bool value)
6849 \begin_layout Itemize
6850 Syntax: none INPUTMOVIE::edit(number frame, number port, number controller,
6851 number control, number/bool value)
6854 \begin_layout Standard
6855 Change specified control in specified frame in specified movie.
6856 Past can't be edited in active movie.
6859 \begin_layout Subsection
6860 movie.copy_frames2: Copy frames between movies
6863 \begin_layout Itemize
6864 Syntax: none movie.copy_frames2([INPUTMOVIE/string dstmov,] number dst, [INPUTMOV
6865 IE/string srcmov,] number src, number count)
6868 \begin_layout Standard
6869 Copy specified number of frames between two movies.
6870 The copy proceeeds in forward direction.
6873 \begin_layout Subsection
6874 movie.copy_frames/INPUTMOVIE::copy_frames: Copy frames in movie
6877 \begin_layout Itemize
6878 Syntax: none movie.copy_frames([INPUTMOVIE/string mov,] number dst, number
6879 src, number count, bool backwards)
6882 \begin_layout Itemize
6883 Syntax: none INPUTMOVIE::copy_frames(number dst, number src, number count,
6887 \begin_layout Standard
6888 Copy specified number of frames from one point in movie to another.
6889 If backwards is true, the copy will be done backwards.
6892 \begin_layout Subsection
6893 movie.serialize/INPUTMOVIE::serialize: Serialize movie
6896 \begin_layout Itemize
6897 Syntax: none movie.serialize([INPUTMOVIE movie/string,] string filename,
6901 \begin_layout Itemize
6902 Syntax: none INPUTMOIVE::serialize(string filename, bool binary)
6905 \begin_layout Standard
6906 Serialize given movie into file.
6907 If binary is true, binary format (more compact and much faster) is used.
6910 \begin_layout Subsection
6911 movie.unserialize: Unserialize movie
6914 \begin_layout Itemize
6915 Syntax: INPUTMOVIE movie.unserialize(INPUTFRAME template, string filename,
6919 \begin_layout Standard
6920 Unserialize movie from file.
6921 The given frame is used as template to decide the frame type.
6922 If binary is true, binary format is decoded (much faster).
6925 \begin_layout Subsection
6926 movie.current_first_subframe: Return first subframe in current frame
6929 \begin_layout Itemize
6930 Syntax: number movie.current_first_subframe()
6933 \begin_layout Standard
6934 Returns first subframe in current frame.
6937 \begin_layout Subsection
6938 movie.pollcounter: Return poll counter for speified control
6941 \begin_layout Itemize
6942 Syntax: number movie.pollcounter(number port, number controller, number control)
6945 \begin_layout Standard
6946 Returns number of times the specified control has been polled this frame.
6949 \begin_layout Subsection
6950 movie.current_branch: Return current branch
6953 \begin_layout Itemize
6954 Syntax: string movie.current_branch()
6957 \begin_layout Standard
6958 Returns the name of the current branch.
6961 \begin_layout Subsection
6962 movie.get_branches: Return names of all branches
6965 \begin_layout Itemize
6967 movie.get_branches()
6970 \begin_layout Standard
6971 Returns the name of all branches.
6974 \begin_layout Subsection
6975 movie.rom_loaded: Is ROM loaded?
6978 \begin_layout Itemize
6979 Syntax: boolean movie.rom_loaded()
6982 \begin_layout Standard
6983 Returns true if ROM is loaded, false otherwise.
6986 \begin_layout Subsection
6987 movie.get_rom_info: Get info about loaded ROM
6990 \begin_layout Itemize
6991 Syntax: Table movie.get_rom_info()
6994 \begin_layout Standard
6995 Returns a table of tables.
6996 The outer table is indexed by ROM slot index.
6997 The inner table has the following fields:
7000 \begin_layout Itemize
7001 filename: The name of file
7004 \begin_layout Itemize
7005 hint: File name hint
7008 \begin_layout Itemize
7009 sha256: SHA-256 hash of ROM.
7012 \begin_layout Itemize
7013 xml_filename: The name of file for markup
7016 \begin_layout Itemize
7017 xml_hint: File name hint for markup
7020 \begin_layout Itemize
7021 xml_sha256: SHA-256 hash of ROM markup.
7024 \begin_layout Standard
7025 If there is no markup, the xml_* fields are absent.
7028 \begin_layout Subsection
7029 movie.get_game_info: Get info about loaded game
7032 \begin_layout Itemize
7033 Syntax: Table movie.get_game_info()
7036 \begin_layout Standard
7037 Returns a table with following fields:
7040 \begin_layout Itemize
7041 core: The name of the core
7044 \begin_layout Itemize
7045 core_short: Short name of the core
7048 \begin_layout Itemize
7049 type: The name of the system type
7052 \begin_layout Itemize
7053 type_long: The long name of the system type
7056 \begin_layout Itemize
7057 region: The name of region
7060 \begin_layout Itemize
7061 region_long: The long name of region
7064 \begin_layout Itemize
7065 gametype: The gametype of movie.
7068 \begin_layout Itemize
7069 fps: Nominal fps as floating-point value
7072 \begin_layout Itemize
7073 fps_n: Exact nominal fps numerator
7076 \begin_layout Itemize
7077 fps_d: Exact nominal fps denominator.
7080 \begin_layout Subsection
7081 INPUTFRAME::get_button: Get button
7084 \begin_layout Itemize
7085 Syntax: boolean INPUTFRAME::get_button(number port, number controller, number
7089 \begin_layout Standard
7090 Returns state of given button as boolean.
7093 \begin_layout Subsection
7094 INPUTFRAME::get_axis: Get axis
7097 \begin_layout Itemize
7098 Syntax: number INPUTFRAME::get_axis(number port, number controller, number
7102 \begin_layout Standard
7103 Returns state of given axis as number.
7106 \begin_layout Subsection
7107 INPUTFRAME::set_button/INPUTFRAME::set_axis: Set button or axis
7110 \begin_layout Itemize
7111 Syntax: none INPUTFRAME::set_button(number port, number controller, number
7112 control, number/bool value)
7115 \begin_layout Itemize
7116 Syntax: none INPUTFRAME::set_axis(number port, number controller, number
7120 \begin_layout Standard
7121 Set the given button/axis to given value.
7124 \begin_layout Subsection
7125 INPUTFRAME::serialize: Serialize a frame
7128 \begin_layout Itemize
7129 Syntax: string INPUTFRAME::serialize()
7132 \begin_layout Standard
7133 Return string representation of frame.
7136 \begin_layout Subsection
7137 INPUTFRAME::unserialize: Unserialize a frame
7140 \begin_layout Itemize
7141 Syntax: none INPUTFRAME::unserialize(string data)
7144 \begin_layout Standard
7145 Set current frame from given data.
7148 \begin_layout Subsection
7149 INPUTFRAME::get_stride: Get movie stride
7152 \begin_layout Itemize
7153 Syntax: number INPUTFRAME::get_stride()
7156 \begin_layout Standard
7157 Return number of bytes needed to store the input frame.
7158 Mainly useful for some debugging.
7161 \begin_layout Standard
7162 \begin_inset Newpage pagebreak
7168 \begin_layout Section
7172 \begin_layout Standard
7173 Routines for settings manipulation
7176 \begin_layout Subsection
7177 settings.get: Get value of setting
7180 \begin_layout Itemize
7181 Syntax: string settings.get(string name)
7184 \begin_layout Standard
7185 Get value of setting <name>.
7186 If setting value can't be obtained, returns (nil, error message).
7189 \begin_layout Subsection
7190 settings.set: Set value of setting
7193 \begin_layout Itemize
7194 Syntax: none settings.set(string name, string value)
7197 \begin_layout Standard
7198 Set value <value> of setting <name>.
7199 If setting can't be set, returns (nil, error message).
7202 \begin_layout Subsection
7203 settings.get_all: Get values of all settings
7206 \begin_layout Itemize
7207 Syntax: table settings.get_all()
7210 \begin_layout Standard
7211 Return a table with all setting names as keys and all current values as
7215 \begin_layout Subsection
7216 settings.get_speed: Get current speed
7219 \begin_layout Itemize
7220 Syntax: number/string settings.get_speed()
7223 \begin_layout Standard
7224 Return the current speed multiplier (1 is normal), or
7225 \begin_inset Quotes eld
7229 \begin_inset Quotes erd
7232 if speed is set to turbo (this does not react to turbo toggle).
7235 \begin_layout Subsection
7236 settings.set_speed: Set current speed
7239 \begin_layout Itemize
7240 Syntax: settings.get_speed(number spd)
7243 \begin_layout Itemize
7244 Syntax: settings.get_speed(string special)
7247 \begin_layout Standard
7248 Set the current speed multiplier (1 is normal).
7249 The speed may be positive multiplier or
7250 \begin_inset Quotes eld
7254 \begin_inset Quotes erd
7260 \begin_layout Standard
7261 \begin_inset Newpage pagebreak
7267 \begin_layout Section
7271 \begin_layout Standard
7272 Contains various functions for managing memory
7275 \begin_layout Subsection
7276 memory.vma_count: Count number of memory areas.
7279 \begin_layout Itemize
7280 Syntax: number memory.vma_count()
7283 \begin_layout Standard
7284 Returns the number of memory areas
7287 \begin_layout Subsection
7288 memory.read_vma: Lookup memory area info by index
7291 \begin_layout Itemize
7292 Syntax: table memory.read_vma(number index)
7295 \begin_layout Standard
7296 Reads the specified memory area (indices start from zero).
7297 Trying to read invalid memory area gives nil.
7298 The return value is table with the following fields:
7301 \begin_layout Itemize
7302 region_name (string): The readable name of the memory area
7305 \begin_layout Itemize
7306 baseaddr (number): Base address of the memory area
7309 \begin_layout Itemize
7310 lastaddr (number): Last address in the memory area.
7313 \begin_layout Itemize
7314 size (number): The size of memory area in bytes.
7317 \begin_layout Itemize
7318 readonly (boolean): True of the memory area corresponds to ROM.
7321 \begin_layout Itemize
7322 iospace (boolean): True if the memory area is I/O space.
7325 \begin_layout Itemize
7326 native_endian (boolean): True if the memory area has native endian as opposed
7330 \begin_layout Subsection
7331 memory.find_vma: Find memory area info by address
7334 \begin_layout Itemize
7335 Syntax: table memory.find_vma(number address)
7338 \begin_layout Standard
7339 Finds the memory area containing specified address.
7340 Returns table in the same format as read_vma or nil if not found.
7343 \begin_layout Subsection
7344 memory.read{,s}{byte,{,h,d,q}word}: Read memory
7347 \begin_layout Itemize
7348 Syntax: none memory.readbyte({string marea, number address|ADDRESS addrobj})
7351 \begin_layout Itemize
7352 Syntax: none memory.readword({string marea, number address|ADDRESS addrobj})
7355 \begin_layout Itemize
7356 Syntax: none memory.readhword({string marea, number address|ADDRESS addrobj})
7359 \begin_layout Itemize
7360 Syntax: none memory.readdword({string marea, number address|ADDRESS addrobj})
7363 \begin_layout Itemize
7364 Syntax: none memory.readqword({string marea, number address|ADDRESS addrobj})
7367 \begin_layout Itemize
7368 Syntax: none memory.readsbyte({string marea, number address|ADDRESS addrobj})
7371 \begin_layout Itemize
7372 Syntax: none memory.readsword({string marea, number address|ADDRESS addrobj})
7375 \begin_layout Itemize
7376 Syntax: none memory.readshword({string marea, number address|ADDRESS addrobj})
7379 \begin_layout Itemize
7380 Syntax: none memory.readsdword({string marea, number address|ADDRESS addrobj})
7383 \begin_layout Itemize
7384 Syntax: none memory.readsqword({string marea, number address|ADDRESS addrobj})
7387 \begin_layout Standard
7388 Reads the specified address <address> (if 's' variant is used, do undergo
7392 \begin_layout Subsection
7393 memory.{,s}read_sg: Scatter/Gather read memory
7396 \begin_layout Itemize
7397 Syntax: none memory.read_sg(string/boolean/number...)
7400 \begin_layout Itemize
7401 Syntax: none memory.sread_sg(string/boolean/number...)
7404 \begin_layout Standard
7405 Perform (2s complement signed if using memory.sread_sg) scatter/gather read
7407 Each argument can be string, boolean or number:
7410 \begin_layout Itemize
7411 String: Set memory area addresses are relative to (e.g.
7415 \begin_layout Itemize
7416 boolean: If true, increment relative address by 1, if false, decrement by
7418 The new address is read as next higher byte.
7421 \begin_layout Itemize
7422 integer: Set the relative address to specified value and read the address
7423 as next higher byte.
7426 \begin_layout Subsection
7427 memory.write_sg: Scatter/Gather write memory
7430 \begin_layout Itemize
7431 Syntax: none memory.write_sg(number value, string/boolean/number...)
7434 \begin_layout Standard
7435 Perform scatter/gather write of value <value> on memory.
7436 Each argument can be string, boolean or number:
7439 \begin_layout Itemize
7440 String: Set memory area addresses are relative to (e.g.
7444 \begin_layout Itemize
7445 boolean: If true, increment relative address by 1, if false, decrement by
7447 The new address is read as next higher byte.
7450 \begin_layout Itemize
7451 integer: Set the relative address to specified value and read the address
7452 as next higher byte.
7455 \begin_layout Subsection
7456 memory.read{float,double}: Read memory
7459 \begin_layout Itemize
7460 Syntax: none memory.readfloat({string marea, number address|ADDRESS addrobj})
7463 \begin_layout Itemize
7464 Syntax: none memory.readdouble({string marea, number address|ADDRESS addrobj})
7467 \begin_layout Standard
7468 Reads the specified address <address>
7471 \begin_layout Subsection
7472 memory.write{byte,{,h,d,q}word,float,double}: Write memory
7475 \begin_layout Itemize
7476 Syntax: none memory.writebyte({string marea, number address|ADDRESS addrobj},
7480 \begin_layout Itemize
7481 Syntax: none memory.writeword({string marea, number address|ADDRESS addrobj},
7485 \begin_layout Itemize
7486 Syntax: none memory.writehword({string marea, number address|ADDRESS addrobj},
7490 \begin_layout Itemize
7491 Syntax: none memory.writedword({string marea, number address|ADDRESS addrobj},
7495 \begin_layout Itemize
7496 Syntax: none memory.writeqword({string marea, number address|ADDRESS addrobj},
7500 \begin_layout Itemize
7501 Syntax: none memory.writefloat({string marea, number address|ADDRESS addrobj},
7505 \begin_layout Itemize
7506 Syntax: none memory.writedouble({string marea, number address|ADDRESS addrobj},
7510 \begin_layout Standard
7511 Writes the specified value <value> (negative integer values undergo 2's
7512 complement) to specified address <address>.
7515 \begin_layout Subsection
7516 memory.map{{,s}{byte,{,h,d,q}word},float,double}: Map an array
7519 \begin_layout Itemize
7520 Syntax: userdata memory.map<type>({string marea, number base|ADDRESS addrobj},
7524 \begin_layout Standard
7525 Returns a table mapping specified memory aperture for read/write.
7528 \begin_layout Itemize
7529 Type may be one of: byte, sbyte, word, sword, hword, shword, dword, sdword,
7530 qword, sqword, float or double.
7533 \begin_layout Subsection
7534 memory.hash_region: Hash region of memory
7537 \begin_layout Itemize
7538 Syntax: string memory.hash_region({string marea, number base|ADDRESS addrobj},
7542 \begin_layout Standard
7543 Hash <size> bytes starting from address <base> (relative to <marea>) and
7547 \begin_layout Subsection
7548 memory.hash_region2: Hash region of memory
7551 \begin_layout Itemize
7552 Syntax: string memory.hash_region2({string marea, number base|ADDRESS addrobj},
7553 number size[, number rows, number stride])
7556 \begin_layout Standard
7557 Hash <rows> blocks of <size> bytes starting from address <base> (relative
7559 The blocks are offset by <stride> from one another and return the SHA-256.
7562 \begin_layout Subsection
7563 memory.hash_region_skein: Hash region of memory
7566 \begin_layout Itemize
7567 Syntax: string memory.hash_region_skein({string marea, number base|ADDRESS
7568 addrobj}, number size[, number rows, number stride])
7571 \begin_layout Standard
7572 Same as memory.hash_region2, but uses Skein-512-256 (v1.3; one of the SHA-3
7573 finalists) as hash function.
7576 \begin_layout Subsection
7577 memory.store: Store region of memory
7580 \begin_layout Itemize
7581 Syntax: none memory.store({string marea, number addr|ADDRESS addrobj}, number
7582 daddr[, number rows, number stride]
7585 \begin_layout Standard
7586 Copy memory starting from <addr> in memory area <marea> (each row being
7587 of size <size>, there being <rows> rows, and rows being separated by <stride>
7588 in memory) into savestate-saved memory area, starting from <daadr> (all
7589 rows are written back to back).
7592 \begin_layout Subsection
7593 memory.storecmp: Compare and store region of memory
7596 \begin_layout Itemize
7597 Syntax: bool memory.storecmp({string marea, number addr|ADDRESS addrobj},
7598 number daddr[, number rows, number stride]
7601 \begin_layout Standard
7602 Like memory.store, but returns true if target of copy already held the value
7603 that would be copied before the copy happened.
7604 Otherwise returns false (if target and source differ before copy).
7607 \begin_layout Subsection
7608 memory.hash_state: Hash system state
7611 \begin_layout Itemize
7612 Syntax: string memory.hash_state()
7615 \begin_layout Standard
7616 Hash the current system state.
7617 Mainly useful for debugging savestates.
7620 \begin_layout Subsection
7621 memory.readregion: Read region of memory
7624 \begin_layout Itemize
7625 Syntax: table memory.readregion({string marea, number base|ADDRESS addrobj},
7629 \begin_layout Standard
7630 Read a region of memory.
7633 \begin_layout Itemize
7634 Warning: If the region crosses memory area boundary, the results are undefined.
7637 \begin_layout Subsection
7638 memory.writeregion: Write region of memory
7641 \begin_layout Itemize
7642 Syntax: none memory.writeregion({string marea, number base|ADDRESS addrobj},
7643 number size, table data)
7646 \begin_layout Standard
7647 Write a region of memory.
7650 \begin_layout Itemize
7651 Warning: If the region crosses memory area boundary, the results are undefined.
7654 \begin_layout Subsection
7655 memory.action: Run core action
7658 \begin_layout Itemize
7659 memory.action(string action, [<params>])
7662 \begin_layout Standard
7664 The different models expect parameters as:
7667 \begin_layout Itemize
7671 \begin_layout Itemize
7675 \begin_layout Itemize
7679 \begin_layout Itemize
7683 \begin_layout Itemize
7687 \begin_layout Subsection
7688 memory.action_flags: Get core action flags
7691 \begin_layout Itemize
7692 memory.action_flags(string action)
7695 \begin_layout Standard
7696 Get value of action flags for core action <action>.
7699 \begin_layout Itemize
7703 \begin_layout Itemize
7704 Bit 1: Selected (not all actions can be selected)?
7707 \begin_layout Subsection
7708 memory.get_lag_flag: Get lag flag
7711 \begin_layout Itemize
7712 Syntax: boolean memory.get_lag_flag()
7715 \begin_layout Standard
7716 Get the value of core lag flag.
7717 True if this frame has been lag so far, false if poll has been detected.
7720 \begin_layout Subsection
7721 memory.set_lag_flag: Set lag flag
7724 \begin_layout Itemize
7725 Syntax: none memory.set_lag_flag(boolean flag)
7728 \begin_layout Standard
7729 Set the value of core lag flag.
7730 This flag automatically gets cleared if poll is detected, but can be forcibly
7731 set or cleared if game so requires.
7734 \begin_layout Itemize
7735 Should only be used in on_frame_emulated callback.
7738 \begin_layout Itemize
7739 Setting or clearing this affects the emulator lag counter.
7742 \begin_layout Subsection
7743 memory.{,un}register{read,write,exec}: (Un)Register read / write / execute
7747 \begin_layout Itemize
7748 Syntax: function memory.registerread({string marea, number addr|ADDRESS addrobj},
7752 \begin_layout Itemize
7753 Syntax: function memory.registerwrite({string marea, number addr|ADDRESS
7754 addrobj}, function fn);
7757 \begin_layout Itemize
7758 Syntax: function memory.registerexec({string marea, number addr|ADDRESS addrobj},
7762 \begin_layout Itemize
7763 Syntax: none memory.unregisterread({string marea, number addr|ADDRESS addrobj},
7767 \begin_layout Itemize
7768 Syntax: none memory.unregisterwrite({string marea, number addr|ADDRESS addrobj},
7772 \begin_layout Itemize
7773 Syntax: none memory.unregisterexec({string marea, number addr|ADDRESS addrobj},
7777 \begin_layout Standard
7778 Add or remove callback on memory read, write or execute (depending on the
7780 <addr> is relative to <marea>.
7781 <fn> is the callback.
7782 The register* functions return <fn> (which can then be passed to unregister*
7786 \begin_layout Itemize
7787 Not all cores support this, and it may be unsupported for some memory areas.
7790 \begin_layout Itemize
7791 The functions are passed two parameters: Address and value.
7794 \begin_layout Subsection
7795 memory.{,un}registertrace: Set/Clear trace hook
7798 \begin_layout Itemize
7799 Syntax: function memory.registertrace(number processor, function fn);
7802 \begin_layout Itemize
7803 Syntax: none memory.unregistertrace(number processor, function fn);
7806 \begin_layout Standard
7807 Add or remove trace callback.
7808 <processor> is system-dependent processor number (0 is usually main CPU).
7809 The function arguments work like in other (un)register* functions.
7812 \begin_layout Itemize
7813 The functions are passed two parameters: Trace CPU and Trace event string.
7816 \begin_layout Subsection
7817 memory.cheat: Set cheat
7820 \begin_layout Itemize
7821 Syntax: none memory.cheat({string marea, number addr|ADDRESS addrobj}, number
7825 \begin_layout Itemize
7826 Syntax: none memory.cheat({string marea, number addr|ADDRESS addrobj});
7829 \begin_layout Standard
7830 Set or clear cheat (value <value>) on address <addr> (relative to <marea>).
7831 If <value> is not speicified, clear a cheat.
7834 \begin_layout Itemize
7835 Not all cores support this, and it may be unsupported for some memory areas.
7838 \begin_layout Subsection
7839 memory.setxmask: Set global execute hook mask
7842 \begin_layout Itemize
7843 Syntax: none memory.setxmask(number mask)
7846 \begin_layout Standard
7847 Set the global execute hook mask to <mask>.
7848 The meaning of each bit is system-dependent, but bit 0 should be the main
7852 \begin_layout Subsection
7853 memory.getregister: Get register value
7856 \begin_layout Itemize
7857 Syntax: number/boolean memory.getregister(string register)
7860 \begin_layout Standard
7861 Get the value of named register.
7864 \begin_layout Subsection
7865 memory.getregisters: Get register values
7868 \begin_layout Itemize
7869 Syntax: table memory.getregisters()
7872 \begin_layout Standard
7873 Get the value of all known registers as table.
7876 \begin_layout Subsection
7877 memory.setregister: Set register value
7880 \begin_layout Itemize
7881 Syntax: none memory.setregister(string register, number/boolean value)
7884 \begin_layout Standard
7885 Set the value of named register.
7888 \begin_layout Subsection
7889 memory.mmap: Class MMAP_STRUCT
7892 \begin_layout Standard
7893 See class MMAP_STRUCT
7896 \begin_layout Standard
7897 \begin_inset Newpage pagebreak
7903 \begin_layout Section
7907 \begin_layout Standard
7908 Contains newer memory functions.
7911 \begin_layout Subsection
7912 memory2(): Get all memory area names.
7915 \begin_layout Itemize
7916 Syntax: table memory2()
7919 \begin_layout Standard
7920 Returns array of all valid memory area names.
7923 \begin_layout Subsection
7924 memory2.<marea>:info: Get memory area info
7927 \begin_layout Itemize
7928 Syntax: table memory2.<marea>:info()
7931 \begin_layout Standard
7932 Return table describing given memory area.
7933 Includes fields address, size, last, readonly, special and endian.
7936 \begin_layout Subsection
7937 memory2.<marea>:<op>: Read/Write memory
7940 \begin_layout Itemize
7941 Syntax: none memory2.<marea>:<op>(number offset, number value)
7944 \begin_layout Itemize
7945 Syntax: number memory2.<marea>:<op>(number offset)
7948 \begin_layout Standard
7949 Read/Write value from/to given memory area <marea> at given offset <offset>
7951 The value written is <value>.
7952 <Op> is of form: [i][s]<type>, where:
7955 \begin_layout Itemize
7956 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
7959 \begin_layout Itemize
7960 'i' signifies that the value is treated as opposite-to-normal endianess,
7963 \begin_layout Itemize
7964 's' signifies that value is treated as signed (not available for floating-point).
7967 \begin_layout Subsection
7968 memory2.<marea>:read: Scatter-gather value read
7971 \begin_layout Itemize
7972 Syntax: number memory2.<marea>:read(number addr...)
7975 \begin_layout Standard
7976 Read value from given memory area <marea> at byte offsets <addr>..., given
7977 in order of increasing significance.
7978 Value of true and false are special.
7979 True increments address by 1, and false decrements address by 1.
7982 \begin_layout Subsection
7983 memory2.<marea>:sread: Signed scatter-gather value read
7986 \begin_layout Itemize
7987 Syntax: number memory2.<marea>:sread(number addr...)
7990 \begin_layout Standard
7991 Like memory2.<marea>:read, but reads signed values.
7994 \begin_layout Subsection
7995 memory2.<marea>:write: Scatter-gather value write
7998 \begin_layout Itemize
7999 Syntax: number memory2.<marea>:write(number val, number addr...)
8002 \begin_layout Standard
8003 Write value <val> to given memory area <marea> at byte offsets <addr>..., given
8004 in order of increasing significance.
8005 Value of true and false are special.
8006 True increments address by 1, and false decrements address by 1.
8009 \begin_layout Subsection
8010 memory2.<marea>:cheat: Set/Clear cheat
8013 \begin_layout Itemize
8014 Syntax: none memory2.<marea>:cheat(number addr, [number value])
8017 \begin_layout Standard
8018 Set/Clear cheat at offset <addr> of memory area <marea>.
8019 If <value> is given, cheat with specified value is set.
8020 Otherwise cheat on address is removed.
8023 \begin_layout Subsection
8024 memory2.<marea>:sha256: SHA-256
8027 \begin_layout Itemize
8028 Syntax: string memory2.<marea>:sha256(number addr, number size[, number rows,
8032 \begin_layout Standard
8033 Compute SHA-256 of <rows> (default 1) chunks of <size> bytes each, starting
8034 from offset <addr> of area <marea>.
8035 The chunks are separated by <stride>.
8038 \begin_layout Subsection
8039 memory2.<marea>:skein: Skein-512-256
8042 \begin_layout Itemize
8043 Syntax: string memory2.<marea>:skein(number addr, number size[, number rows,
8047 \begin_layout Standard
8048 Same as memory2.<marea>:sha256, except with Skein-512-256 as hash function.
8051 \begin_layout Subsection
8052 memory2.<marea>:store{,cmp}: Copy region to Lua memory with compare
8055 \begin_layout Itemize
8056 Syntax: none memory2.<marea>:store(number addr, number daddr, number size[,
8057 number rows, number stride])
8060 \begin_layout Itemize
8061 Syntax: boolean memory2.<marea>:storecmp(number addr, number daddr, number
8062 size[, number rows, number stride])
8065 \begin_layout Standard
8066 Copy <rows> (default 1) chunks of <size> bytes each, starting from offset
8067 <addr> of area <marea>.
8068 The chunks are separated by <stride>.
8069 The target is Lua host memory, starting from offset <daddr>.
8072 \begin_layout Standard
8073 Additionally, the storecmp method returns false if target was modified (otherwis
8077 \begin_layout Subsection
8078 memory2.<marea>:readregion: Read region
8081 \begin_layout Itemize
8082 Syntax table memory2.<marea>:readregion(number addr, number size)
8085 \begin_layout Standard
8086 Read <size> bytes starting from <addr> in <marea> and return as array.
8089 \begin_layout Subsection
8090 memory2.<marea>:writeregion: Write region
8093 \begin_layout Itemize
8094 Syntax none memory2.<marea>:writeregion(number addr, table data)
8097 \begin_layout Standard
8098 Write array <data> to bytes starting from <addr> in <marea>.
8101 \begin_layout Subsection
8102 memory2.<marea>:register{read,write,exec}: Register hook
8105 \begin_layout Itemize
8106 Syntax: function memory2.<marea>:registerread(number addr, function fn);
8109 \begin_layout Itemize
8110 Syntax: function memory2.<marea>:registerwrite(number addr, function fn);
8113 \begin_layout Itemize
8114 Syntax: function memory2.<marea>:registerexec(number addr, function fn);
8117 \begin_layout Standard
8118 Register debug callback <fn> of specified type at offset <addr> of memory
8123 \begin_layout Subsection
8124 memory2.<marea>:unregister{read,write,exec}: Unregister hook
8127 \begin_layout Itemize
8128 Syntax: none memory2.<marea>:unregisterread(number addr, function fn);
8131 \begin_layout Itemize
8132 Syntax: none memory2.<marea>:unregisterwrite(number addr, function fn);
8135 \begin_layout Itemize
8136 Syntax: none memory2.<marea>:unregisterexec(number addr, function fn);
8139 \begin_layout Standard
8140 Unregister debug callback <fn> of specified type at offset <addr> of memory
8144 \begin_layout Standard
8145 \begin_inset Newpage pagebreak
8151 \begin_layout Section
8155 \begin_layout Standard
8156 Contains random number generation methods.
8157 These functions do not return reproducable results.
8160 \begin_layout Subsection
8161 random.boolean: Random boolean
8164 \begin_layout Itemize
8165 Syntax: boolean random.boolean()
8168 \begin_layout Standard
8169 Returns true or false at random (50-50 chance).
8172 \begin_layout Subsection
8173 random.integer: Random integer
8176 \begin_layout Itemize
8177 Syntax: number random.integer(number highplusone)
8180 \begin_layout Itemize
8181 Syntax: number random.integer(number low, number high)
8184 \begin_layout Standard
8185 With one argument, return random integer [0,<highplusone>) (upper end exclusive).
8186 With two arguments, return random integer [<low>,<high>] (both ends inclusive).
8189 \begin_layout Standard
8190 The returned numbers are from uniform distribution.
8193 \begin_layout Subsection
8194 random.float: Random float
8197 \begin_layout Itemize
8198 Syntax: number random.float()
8201 \begin_layout Standard
8202 Returns random decimal number [0,1).
8205 \begin_layout Subsection
8206 random.among: Random parameter
8209 \begin_layout Itemize
8210 Syntax: value random.among(value values...)
8213 \begin_layout Standard
8214 Returns random parameter value, picked at uniform.
8215 Multiple equivalent values are returned with higher chance.
8218 \begin_layout Subsection
8219 random.amongtable: Random from table
8222 \begin_layout Itemize
8223 Syntax: value random.amongtable(table tab)
8226 \begin_layout Standard
8227 Returns random value from table <tab>.
8228 As in random.among, no equality testing is done.
8231 \begin_layout Standard
8232 \begin_inset Newpage pagebreak
8238 \begin_layout Section
8242 \begin_layout Subsection
8243 zip.enumerate: Enumerate members in zipfile
8246 \begin_layout Itemize
8247 Syntax: Table zip.enumerate(string filename[, boolean invert])
8250 \begin_layout Standard
8251 Returns table of files in zip archive <filename>.
8252 If <invert> is true, instead of returning array of names, returns table
8253 with keys being member names and values being true.
8256 \begin_layout Subsection
8257 zip.writer: Class ZIPWRITER
8260 \begin_layout Standard
8261 See class ZIPWRITER.
8264 \begin_layout Section
8268 \begin_layout Subsection
8269 paths.get_executable_file: Get the name of lsnes executable file
8272 \begin_layout Itemize
8273 Syntax: String paths.get_executable_file()
8276 \begin_layout Standard
8277 Returns the filename of the lsnes executable (together with path), if known.
8278 If unknown, returns nil.
8281 \begin_layout Subsection
8282 paths.get_executable_path: Get the path of lsnes executable file
8285 \begin_layout Itemize
8286 Syntax: String paths.get_executable_path()
8289 \begin_layout Standard
8290 Returns the directory of the lsnes executable path, if known.
8291 If unknown, returns nil.
8294 \begin_layout Subsection
8295 paths.get_config_path: Get the path of lsnes config file
8298 \begin_layout Itemize
8299 Syntax: String paths.get_config_path()
8302 \begin_layout Standard
8303 Returns the directory of the lsnes configuration.
8306 \begin_layout Subsection
8307 paths.get_rompath: Get the path of ROM files
8310 \begin_layout Itemize
8311 Syntax: String paths.get_rompath()
8314 \begin_layout Standard
8315 Returns the default directory for various ROMs.
8318 \begin_layout Subsection
8319 paths.get_firmwarepath: Get the path of firmware files
8322 \begin_layout Itemize
8323 Syntax: String paths.get_firmwarepath()
8326 \begin_layout Standard
8327 Returns the default directory for various firmwares.
8330 \begin_layout Subsection
8331 paths.get_slotpath: Get the path of save slot files
8334 \begin_layout Itemize
8335 Syntax: String paths.get_slotpath()
8338 \begin_layout Standard
8339 Returns the default directory for various save slots.
8340 If in project context, returns the project directory.
8343 \begin_layout Subsection
8344 paths.get_save_slot_file: Get save slot filename
8347 \begin_layout Itemize
8348 Syntax: String paths.get_slotpath(string name)
8351 \begin_layout Itemize
8352 Syntax: String paths.get_slotpath(integer slotnum, bool for_save)
8355 \begin_layout Standard
8356 Resolve the filename of specified save slot <name> or <slotnum>.
8357 Projects and save branches are taken into account.
8358 If <for_save> is true, the filename is always for current branch.
8359 If <for_save> is false, branch tree is walked upwards until root is reached
8360 or desired file is located.
8363 \begin_layout Standard
8364 \begin_inset Newpage pagebreak
8370 \begin_layout Section
8374 \begin_layout Standard
8375 Various callback-related functions.
8378 \begin_layout Subsection
8379 \begin_inset CommandInset label
8381 name "sub:callback.register:-Register-a"
8385 callback.register: Register a callback
8388 \begin_layout Itemize
8389 Syntax: function callback.register(string cbname, function cbfun);
8392 \begin_layout Standard
8393 Instruct function <cbfun> to be added to list of callbacks to call on event
8394 <cbname> (See section
8395 \begin_inset CommandInset ref
8397 reference "sec:Callbacks"
8402 The callback name does not have the 'on_' prefix (e.g.
8404 \begin_inset Quotes eld
8408 \begin_inset Quotes erd
8415 \begin_layout Subsection
8416 \begin_inset CommandInset label
8418 name "sub:callback.unregister:-Unregister-"
8422 callback.unregister: Unregister a callback
8425 \begin_layout Itemize
8426 Syntax: function callback.unregister(string cbname, function cbfun);
8429 \begin_layout Standard
8430 Instruct function <cbfun> to be removed from list of callbacks to call on
8434 \begin_layout Subsection
8435 callback.<cbname>:register: Register callback
8438 \begin_layout Itemize
8439 Syntax: function callback.<cbname>:register(function cbfun)
8442 \begin_layout Standard
8443 Synonym for callback.register (section
8444 \begin_inset CommandInset ref
8446 reference "sub:callback.register:-Register-a"
8450 ), albeit with callback name specified differently.
8453 \begin_layout Subsection
8454 callback.<cbname>:unregister: Register callback
8457 \begin_layout Itemize
8458 Syntax: function callback.<cbname>:unregister(function cbfun)
8461 \begin_layout Standard
8462 Synonym for callback.unregister (section
8463 \begin_inset CommandInset ref
8465 reference "sub:callback.unregister:-Unregister-"
8469 ), albeit with callback name specified differently.
8472 \begin_layout Section
8476 \begin_layout Standard
8477 Various bsnes-specific functions.
8480 \begin_layout Subsection
8481 bsnes.dump_sprite: Dump a sprite
8484 \begin_layout Itemize
8485 Syntax: BITMAP bsnes.dump_sprite(string marea, number addr, number width,
8486 number height[, number stride])
8489 \begin_layout Standard
8490 Dumps given sprite (in native format) from memory.
8491 memory area is usually
8492 \begin_inset Quotes eld
8496 \begin_inset Quotes erd
8500 <Width> and <height> are given in 8x8 blocks.
8501 <Stride> overrides row stride (default 512).
8504 \begin_layout Subsection
8505 bsnes.dump_sprite2: Dump a 2bpp sprite
8508 \begin_layout Itemize
8509 Syntax: BITMAP bsnes.dump_sprite2(string marea, number addr, number width,
8510 number height[, number stride])
8513 \begin_layout Standard
8514 Dumps given sprite (in 2bpp format) from memory.
8515 memory area is usually
8516 \begin_inset Quotes eld
8520 \begin_inset Quotes erd
8524 <Width> and <height> are given in 8x8 blocks.
8525 <Stride> overrides row stride (default 256).
8528 \begin_layout Subsection
8529 bsnes.dump_palette: Dump a palette
8532 \begin_layout Itemize
8533 Syntax: PALETTE bsnes.dump_palette(string marea, number addr, bool/integer
8534 full256, bool first_trans)
8537 \begin_layout Standard
8538 Dumps a palette from memory.
8539 memory area is usually
8540 \begin_inset Quotes eld
8544 \begin_inset Quotes erd
8548 If <full256> is true, 256 colors are dumped (otherwise 16).
8549 <full256> can also be number of colors (4, 16 or 256).
8550 If <first_trans> is true, first color is forced transparent.
8553 \begin_layout Subsection
8554 bsnes.enablelayer: Set layer visibility
8557 \begin_layout Itemize
8558 Syntax: none bsnes.enablelayer(number layer, number priority, boolean enabled)
8561 \begin_layout Standard
8562 Enable or disable specified layer at specified priority.
8565 \begin_layout Subsection
8566 bsnes.redump_sprite: Redump a sprite
8569 \begin_layout Itemize
8570 Syntax: none bsnes.redump_sprite(BITMAP bitmap, string marea, number addr[,
8574 \begin_layout Standard
8575 Like bsnes.dump_sprite, but instead dumps to specified bitmap <bitmap>.
8576 The specified bitmap must have size multiple of 8x8.
8579 \begin_layout Subsection
8580 bsnes.redump_sprite2: Redump a 2bpp sprite
8583 \begin_layout Itemize
8584 Syntax: none bsnes.redump_sprite2(BITMAP bitmap, string marea, number addr[,
8588 \begin_layout Standard
8589 Like bsnes.dump_sprite2, but instead dumps to specified bitmap <bitmap>.
8590 The specified bitmap must have size multiple of 8x8.
8593 \begin_layout Subsection
8594 bsnes.redump_palette: Redump a palette
8597 \begin_layout Itemize
8598 Syntax: none bsnes.dump_palette(PALETTE pal, string marea, number addr, bool
8602 \begin_layout Standard
8603 Like bsnes.dump_palette, but instead dumps to specified palette <pal>.
8604 The specified palette must have either 16 or 256 colors.
8607 \begin_layout Section
8608 extensions to table string
8611 \begin_layout Subsection
8612 string.charU: string.char, UTF-8 version.
8615 \begin_layout Itemize
8616 Syntax: string string.charU(number n...)
8619 \begin_layout Standard
8620 Like Lua string.char(), but works in terms of Unicode codepoints.
8621 The returned string is UTF-8.
8624 \begin_layout Subsection
8625 string.byteU: string.byte, UTF-8 version.
8628 \begin_layout Itemize
8630 string.byteU(string str[, number i[, number j]])
8633 \begin_layout Standard
8634 Like string.byte(), but works in terms of Unicode codepoints.
8635 The input string <str> is assumed UTF-8.
8638 \begin_layout Subsection
8639 string.regex: Match string against regular expression
8642 \begin_layout Itemize
8643 Syntax: boolean/string...
8644 string.regex(string regexp, string against)
8647 \begin_layout Standard
8648 Match POSIX-extended regular expression <regexp> against string <against>.
8649 If no match, false is returned.
8650 Otherwise if string has no subcaptures, true is returned.
8651 Otherwise each subcapture is returned as a string (in order of starting
8655 \begin_layout Subsection
8656 string.hex: Transform integer into hex string
8659 \begin_layout Itemize
8660 Syntax: string string.hex(number n, [number digits])
8663 \begin_layout Standard
8664 Returns hexadecimal string representation of <n>, optionally padded with
8665 zeroes to <digits> digits (default is not to pad).
8668 \begin_layout Subsection
8669 string.lpad: Pad string with spaces from left
8672 \begin_layout Itemize
8673 Syntax: string string.lpad(string x, number n)
8676 \begin_layout Standard
8677 Pad string <x> to <n> bytes by inserting spaces at start and return the
8681 \begin_layout Subsection
8682 string.rpad: Pad string with spaces from right
8685 \begin_layout Itemize
8686 Syntax: string string.rpad(string x, number n)
8689 \begin_layout Standard
8690 Pad string <x> to <n> bytes by inserting spaces at end and return the result.
8693 \begin_layout Section
8697 \begin_layout Standard
8698 Contains copy of global variables from time of Lua initialization.
8702 \begin_layout Standard
8703 \begin_inset Newpage pagebreak
8709 \begin_layout Section
8710 \begin_inset CommandInset label
8712 name "sec:Callbacks"
8719 \begin_layout Standard
8720 Various callbacks to Lua that can occur.
8723 \begin_layout Subsection
8724 on_paint: Screen is being painted
8727 \begin_layout Itemize
8728 Callback: on_paint(bool not_synth)
8731 \begin_layout Standard
8732 Called when screen is being painted.
8733 Any gui.* calls requiring graphic context draw on the screen.
8736 \begin_layout Itemize
8737 not_synth is true if this hook is being called in response to received frame,
8741 \begin_layout Subsection
8742 on_video: Dumped video frame is being painted
8745 \begin_layout Itemize
8746 Callback: on_video()
8749 \begin_layout Standard
8750 Called when video dump frame is being painted.
8751 Any gui.* calls requiring graphic context draw on the video.
8754 \begin_layout Subsection
8755 on_frame_emulated: Frame emulation complete
8758 \begin_layout Itemize
8759 Callback: on_frame_emulated()
8762 \begin_layout Standard
8763 Called when emulating frame has completed and on_paint()/on_video() calls
8764 are about to be issued.
8767 \begin_layout Subsection
8768 on_frame: Frame emulation starting.
8771 \begin_layout Itemize
8772 Callback: on_frame()
8775 \begin_layout Standard
8776 Called on each starting whole frame.
8779 \begin_layout Subsection
8780 on_rewind: Movie rewound to beginning
8783 \begin_layout Itemize
8784 Callback: on_rewind()
8787 \begin_layout Standard
8788 Called when rewind movie to beginning has completed.
8791 \begin_layout Subsection
8792 on_pre_load: Load operation is about to start
8795 \begin_layout Itemize
8796 Callback: on_pre_load(string name)
8799 \begin_layout Standard
8800 Called just before savestate/movie load occurs (note: loads are always delayed,
8801 so this occurs even when load was initiated by lua).
8804 \begin_layout Subsection
8805 on_err_Load: Load failed
8808 \begin_layout Itemize
8809 Callback: on_err_load(string name)
8812 \begin_layout Standard
8813 Called if loadstate goes wrong.
8816 \begin_layout Subsection
8817 on_post_load: Load completed
8820 \begin_layout Itemize
8821 Callback: on_post_load(string name, boolean was_savestate)
8824 \begin_layout Standard
8825 Called on successful loadstate.
8826 was_savestate gives if this was a savestate or a movie.
8829 \begin_layout Subsection
8830 on_pre_save: Save operation is about to start
8833 \begin_layout Itemize
8834 Callback: on_pre_save(string name, boolean is_savestate)
8837 \begin_layout Standard
8838 Called just before savestate save occurs (note: movie saves are synchronous
8839 and won't trigger these callbacks if called from Lua).
8842 \begin_layout Subsection
8843 on_err_save: Save failed
8846 \begin_layout Itemize
8847 Callback: on_err_save(string name)
8850 \begin_layout Standard
8851 Called if savestate goes wrong.
8854 \begin_layout Subsection
8855 on_post_save: Save completed
8858 \begin_layout Itemize
8859 Callback: on_post_save(string name, boolean is_savestate)
8862 \begin_layout Standard
8863 Called on successful savaestate.
8864 is_savestate gives if this was a savestate or a movie.
8867 \begin_layout Subsection
8868 on_quit: Emulator is shutting down
8871 \begin_layout Itemize
8875 \begin_layout Standard
8876 Called when emulator is shutting down.
8879 \begin_layout Subsection
8880 on_input: Polling for input
8883 \begin_layout Standard
8884 Called when emulator is just sending input to bsnes core.
8885 Warning: This is called even in readonly mode, but the results are ignored.
8888 \begin_layout Subsection
8889 on_reset: System has been reset
8892 \begin_layout Itemize
8893 Callback: on_reset()
8896 \begin_layout Standard
8897 Called when system is reset.
8900 \begin_layout Subsection
8901 on_readwrite: Entered recording mode
8904 \begin_layout Itemize
8905 Callback: on_readwrite()
8908 \begin_layout Standard
8909 Called when moving into recording mode as result of
8910 \begin_inset Quotes eld
8914 \begin_inset Quotes erd
8917 command (note: moving to rwmode by Lua won't trigger this, as per recursive
8921 \begin_layout Subsection
8922 on_snoop/on_snoop2: Snoop core controller reads
8925 \begin_layout Itemize
8926 Callback: on_snoop(number port, number controller, number index, number
8930 \begin_layout Itemize
8931 Callback: on_snoop2(number port, number controller, number index, number
8935 \begin_layout Standard
8936 Called each time bsnes asks for input.
8937 The value is the final value to be sent to bsnes core (readonly mode, autohold
8938 and autofire have been taken into account).
8939 Might be useful when translating movies to format suitable for console
8941 Note: There is no way to modify the value to be sent.
8944 \begin_layout Itemize
8945 On_snoop2 is called instead of on_snoop if defined.
8946 Reserves port 0 for system, having first user port be port 1.
8949 \begin_layout Subsection
8950 on_keyhook: Hooked key/axis has been moved
8953 \begin_layout Itemize
8954 Callback: on_keyhook(string keyname, table state)
8957 \begin_layout Standard
8958 Sent when key that has keyhook events requested changes state.
8959 Keyname is name of the key (group) and state is the state (same kind as
8960 table values in input.raw).
8963 \begin_layout Subsection
8967 \begin_layout Itemize
8971 \begin_layout Standard
8972 Called when requested by set_idle_timeout(), the timeout has expired and
8973 emulator is waiting.
8976 \begin_layout Subsection
8977 on_timer: Timer event
8980 \begin_layout Itemize
8981 Callback: on_timer()
8984 \begin_layout Standard
8985 Called when requested by set_idle_timeout() and the timeout has expired
8986 (regardless if emulator is waiting).
8989 \begin_layout Subsection
8990 on_set_rewind: Rewind point has been set
8993 \begin_layout Itemize
8994 Callback: on_set_rewind(UNSAFEREWIND r)
8997 \begin_layout Standard
8998 Called when unsafe rewind object has been constructed.
9001 \begin_layout Subsection
9002 on_pre_rewind: Rewind is about to occur
9005 \begin_layout Itemize
9006 Callback: on_pre_rewind()
9009 \begin_layout Standard
9010 Called just before unsafe rewind is about to occur.
9013 \begin_layout Subsection
9014 on_post_rewind: Rewind has occured
9017 \begin_layout Itemize
9018 Callback: on_post_rewind()
9021 \begin_layout Standard
9022 Called just after unsafe rewind has occured.
9025 \begin_layout Subsection
9026 on_button: Button has been pressed
9029 \begin_layout Itemize
9030 Callback: on_button(number port, number controller, number index, string
9034 \begin_layout Standard
9035 Called on controller button press, with following parameters:
9038 \begin_layout Itemize
9039 port: Port number (0 is system)
9042 \begin_layout Itemize
9043 controller: Controller within port
9046 \begin_layout Itemize
9047 index: Index of button.
9050 \begin_layout Itemize
9051 type: Type of event, one of:
9055 \begin_layout Itemize
9056 \begin_inset Quotes eld
9060 \begin_inset Quotes erd
9063 : Button was pressed.
9066 \begin_layout Itemize
9067 \begin_inset Quotes eld
9071 \begin_inset Quotes erd
9074 : Button was released.
9077 \begin_layout Itemize
9078 \begin_inset Quotes eld
9082 \begin_inset Quotes erd
9088 \begin_layout Itemize
9089 \begin_inset Quotes eld
9093 \begin_inset Quotes erd
9096 : Released from hold.
9099 \begin_layout Itemize
9100 \begin_inset Quotes eld
9104 \begin_inset Quotes erd
9107 : Typing input on button.
9110 \begin_layout Itemize
9111 \begin_inset Quotes eld
9115 \begin_inset Quotes erd
9118 : Typing input undone.
9121 \begin_layout Itemize
9122 \begin_inset Quotes eld
9125 autofire <duty> <cycle>
9126 \begin_inset Quotes erd
9129 : Autofire with specifie duty and cycle.
9132 \begin_layout Itemize
9133 \begin_inset Quotes eld
9137 \begin_inset Quotes erd
9143 \begin_layout Itemize
9144 \begin_inset Quotes eld
9148 \begin_inset Quotes erd
9151 : Analog action on axis.
9155 \begin_layout Subsection
9156 on_movie_lost: Movie data is about to be lost
9159 \begin_layout Itemize
9160 Callback: on_movie_lost(STRING kind)
9163 \begin_layout Standard
9164 Called just before something would happen that could lose movie data.
9168 \begin_layout Itemize
9169 readwrite: Switching to recording mode.
9172 \begin_layout Itemize
9173 reload: ROM is being reloaded in recording mode.
9176 \begin_layout Itemize
9177 load: New movie is being loaded.
9180 \begin_layout Itemize
9181 unsaferewind: Unsafe rewind is happening.
9184 \begin_layout Subsection
9185 on_latch: Latch line is rising
9188 \begin_layout Itemize
9189 Callback: on_latch(<core-dependent-parameters>)
9192 \begin_layout Standard
9193 Called when latch line for controller is rising.
9194 Some cores may not support this.
9197 \begin_layout Section
9198 System-dependent behaviour
9201 \begin_layout Subsection
9205 \begin_layout Itemize
9206 Registers are: pbpc, pb, pc, r0, r1, r2, r3, r4, r5, a, x, y, z, s, d, db,
9207 p, e, irq, wai, mdr, vector, aa, rd, sp, dp, p_n, p_v, p_m, p_x, p_d, p_i,
9208 p_z, p_c, ppu_display_disabled, ppu_oam_priority, ppu_bg_tilesize[0], ppu_bg_ti
9209 lesize[1], ppu_bg_tilesize[2], ppu_bg_tilesize[3], ppu_bg3_priority, ppu_mosaic_
9210 enabled[0], ppu_mosaic_enabled[1], ppu_mosaic_enabled[2], ppu_mosaic_enabled[3],
9211 ppu_vram_incmode, ppu_mode7_vflip, ppu_mode7_hflip, ppu_window1_enabled[0],
9212 ppu_window1_enabled[1], ppu_window1_enabled[2], ppu_window1_enabled[3],
9213 ppu_window1_enabled[4], ppu_window1_enabled[5], ppu_window1_invert[0],
9214 ppu_window1_invert[1], ppu_window1_invert[2], ppu_window1_invert[3], ppu_window
9215 1_invert[4], ppu_window1_invert[5], ppu_window2_enabled[0], ppu_window2_enabled[
9216 1], ppu_window2_enabled[2], ppu_window2_enabled[3], ppu_window2_enabled[4],
9217 ppu_window2_enabled[5], ppu_window2_invert[0], ppu_window2_invert[1], ppu_windo
9218 w2_invert[2], ppu_window2_invert[3], ppu_window2_invert[4], ppu_window2_invert[5
9219 ], ppu_bg_enabled[0], ppu_bg_enabled[1], ppu_bg_enabled[2], ppu_bg_enabled[3],
9220 ppu_bg_enabled[4], ppu_bgsub_enabled[0], ppu_bgsub_enabled[1], ppu_bgsub_enable
9221 d[2], ppu_bgsub_enabled[3], ppu_bgsub_enabled[4], ppu_window_enabled[0],
9222 ppu_window_enabled[1], ppu_window_enabled[2], ppu_window_enabled[3], ppu_window
9223 _enabled[4], ppu_sub_window_enabled[0], ppu_sub_window_enabled[1], ppu_sub_windo
9224 w_enabled[2], ppu_sub_window_enabled[3], ppu_sub_window_enabled[4], ppu_addsub_m
9225 ode, ppu_direct_color, ppu_color_mode, ppu_color_halve, ppu_color_enabled[0],
9226 ppu_color_enabled[1], ppu_color_enabled[2], ppu_color_enabled[3], ppu_color_ena
9227 bled[4], ppu_color_enabled[5], ppu_mode7_extbg, ppu_pseudo_hires, ppu_overscan,
9228 ppu_oam_interlace, ppu_interlace, ppu_latch_hcounter, ppu_latch_vcounter,
9229 ppu_counters_latched, ppu_time_over, ppu_range_over, ppu_ppu1_mdr, ppu_ppu2_mdr
9230 , ppu_bg_y[0], ppu_bg_y[1], ppu_bg_y[2], ppu_bg_y[3], ppu_ioamaddr, ppu_icgramad
9231 dr, ppu_display_brightness, ppu_oam_basesize, ppu_oam_nameselect, ppu_oam_tdaddr
9232 , ppu_oam_baseaddr, ppu_oam_addr, ppu_oam_firstsprite, ppu_oam_latchdata,
9233 ppu_bg_mode, ppu_mosaic_size, ppu_mosaic_countdown, ppu_bg_scaddr[0], ppu_bg_sc
9234 addr[1], ppu_bg_scaddr[2], ppu_bg_scaddr[3], ppu_bg_scsize[0], ppu_bg_scsize[1],
9235 ppu_bg_scsize[2], ppu_bg_scsize[3], ppu_bg_tdaddr[0], ppu_bg_tdaddr[1],
9236 ppu_bg_tdaddr[2], ppu_bg_tdaddr[3], ppu_bg_ofslatch, ppu_m7_hofs, ppu_m7_vofs,
9237 ppu_bg_hofs[0], ppu_bg_hofs[1], ppu_bg_hofs[2], ppu_bg_hofs[3], ppu_bg_vofs[0],
9238 ppu_bg_vofs[1], ppu_bg_vofs[2], ppu_bg_vofs[3], ppu_vram_mapping, ppu_vram_incs
9239 ize, ppu_vram_addr, ppu_mode7_repeat, ppu_m7_latch, ppu_m7a, ppu_m7b, ppu_m7c,
9240 ppu_m7d, ppu_m7x, ppu_m7y, ppu_cgram_addr, ppu_cgram_latchdata, ppu_window1_lef
9241 t, ppu_window1_right, ppu_window2_left, ppu_window2_right, ppu_window_mask[0],
9242 ppu_window_mask[1], ppu_window_mask[2], ppu_window_mask[3], ppu_window_mask[4],
9243 ppu_window_mask[5], ppu_color_mask, ppu_colorsub_mask, ppu_color_r, ppu_color_g
9244 , ppu_color_b, ppu_color_rgb, ppu_scanlines, ppu_hcounter, ppu_vcounter,
9245 ppu_vram_readbuffer, ppu_oam_itemcount, ppu_oam_tilecount,
9248 \begin_layout Itemize
9249 on_latch has no parameters
9252 \begin_layout Itemize
9253 CPU 0 is S-CPU, 1 is S-SMP.
9256 \begin_layout Itemize
9257 Cheats are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_{RAM,ROM}.
9260 \begin_layout Itemize
9261 Read/Write/Execute hooks are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_
9265 \begin_layout Itemize
9266 Memory areas are: WRAM, APURAM, VRAM, OAM, CGRAM, RTC, DSPRAM, DSPPROM,
9267 DSPDROM, SRAM, ROM, BUS, PTRTABLE, CPU_STATE, PPU_STATE, SMP_STATE, DSP_STATE,
9268 BSXFLASH, BSX_RAM, BSX_PRAM, SLOTA_ROM, SLOTB_ROM, SLOTA_RAM, SLOTB_RAM,
9269 GBCPU_STATE, GBROM, GBRAM, GBWRAM, GBHRAM.
9272 \begin_layout Subsection
9276 \begin_layout Itemize
9277 Registers are: wrambank, cyclecounter, pc, sp, hf1, hf2, zf, cf, a, b, c,
9281 \begin_layout Itemize
9282 on_latch is not supported
9285 \begin_layout Itemize
9289 \begin_layout Itemize
9290 Cheats are supported for ROM, SRAM and WRAM.
9293 \begin_layout Itemize
9294 Read/Write/Execute hooks are supported for ROM (read/execute only), SRAM
9298 \begin_layout Itemize
9299 Memory areas are: SRAM, WRAM, VRAM, IOAMHRAM, ROM, BUS.