1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
6 \use_default_options true
7 \maintain_unincluded_children false
9 \language_package default
14 \font_typewriter default
15 \font_default_family default
16 \use_non_tex_fonts false
23 \default_output_format default
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
31 \pdf_bookmarksnumbered false
32 \pdf_bookmarksopen false
33 \pdf_bookmarksopenlevel 1
48 \paperorientation portrait
64 \paragraph_separation indent
65 \paragraph_indentation default
66 \quotes_language english
69 \paperpagestyle default
70 \tracking_changes false
80 lsnes Lua functions reference
87 \begin_layout Standard
88 \begin_inset CommandInset toc
89 LatexCommand tableofcontents
96 \begin_layout Standard
97 \begin_inset Newpage pagebreak
103 \begin_layout Section
107 \begin_layout Subsection
111 \begin_layout Itemize
112 Coordinates increase to right and down.
115 \begin_layout Itemize
116 The origin is at top left of game area or buffer.
119 \begin_layout Subsection
123 \begin_layout Itemize
124 Methods that draw something (unless stated otherwise) require a valid rendering
126 This context can come in three ways:
130 \begin_layout Enumerate
131 The default rendering context of paint callback (the screen).
134 \begin_layout Enumerate
135 The default rendering context of video callback (the video).
138 \begin_layout Enumerate
139 Explicitly set rendering context (RENDERCTX:set).
143 \begin_layout Itemize
144 The rendering context is always reset when callback ends.
147 \begin_layout Subsection
151 \begin_layout Standard
152 (Direct) colors can be specified either as numbers or strings.
155 \begin_layout Itemize
156 -1 is fully transparent.
159 \begin_layout Itemize
160 Non-negative numbers less than
161 \begin_inset Formula $2^{32}$
164 are partially opaque colors (
165 \begin_inset Formula $a*2^{24}+r*2^{16}+g*2^{8}+b$
172 \begin_layout Itemize
173 \begin_inset Formula $a$
177 \begin_inset Formula $0-255$
181 \begin_inset Formula $0$
185 \begin_inset Formula $256$
188 would be fully transparent.
192 \begin_layout Itemize
193 Thus, numbers in range
194 \begin_inset Formula $0-16777215$
197 stand for fully opaque colors.
201 \begin_layout Itemize
202 \begin_inset Formula $r$
206 \begin_inset Formula $g$
210 \begin_inset Formula $b$
213 are intensities of base colors on scale
214 \begin_inset Formula $0-255$
221 \begin_layout Itemize
222 Color can also be specified by name as string: The following color names
223 are known: aliceblue antiquewhite antiquewhite1 antiquewhite2 antiquewhite3
224 antiquewhite4 aqua aquamarine aquamarine1 aquamarine2 aquamarine3 aquamarine4
225 azure azure1 azure2 azure3 azure4 beige bisque bisque1 bisque2 bisque3
226 bisque4 black blanchedalmond blue blue1 blue2 blue3 blue4 blueviolet brown
227 brown1 brown2 brown3 brown4 burlywood burlywood1 burlywood2 burlywood3
228 burlywood4 cadet cadetblue cadetblue1 cadetblue2 cadetblue3 cadetblue4
229 chartreuse chartreuse1 chartreuse2 chartreuse3 chartreuse4 chocolate chocolate1
230 chocolate2 chocolate3 chocolate4 coral coral1 coral2 coral3 coral4 cornflowerbl
231 ue cornsilk cornsilk1 cornsilk2 cornsilk3 cornsilk4 crimson cyan cyan1 cyan2
232 cyan3 cyan4 darkblue darkcyan darkgoldenrod darkgoldenrod1 darkgoldenrod2
233 darkgoldenrod3 darkgoldenrod4 darkgray darkgreen darkgrey darkkhaki darkmagenta
234 darkolivegreen darkolivegreen1 darkolivegreen2 darkolivegreen3 darkolivegreen4
235 darkorange darkorange1 darkorange2 darkorange3 darkorange4 darkorchid darkorchi
236 d1 darkorchid2 darkorchid3 darkorchid4 darkred darksalmon darkseagreen darkseagr
237 een1 darkseagreen2 darkseagreen3 darkseagreen4 darkslateblue darkslategray
238 darkslategray1 darkslategray2 darkslategray3 darkslategray4 darkslategrey
239 darkturquoise darkviolet deeppink deeppink1 deeppink2 deeppink3 deeppink4
240 deepskyblue deepskyblue1 deepskyblue2 deepskyblue3 deepskyblue4 dimgray
241 dimgrey dodgerblue dodgerblue1 dodgerblue2 dodgerblue3 dodgerblue4 firebrick
242 firebrick1 firebrick2 firebrick3 firebrick4 floralwhite forestgreen fractal
243 fuchsia gainsboro ghostwhite gold gold1 gold2 gold3 gold4 goldenrod goldenrod1
244 goldenrod2 goldenrod3 goldenrod4 gray gray0 gray1 gray10 gray100 gray11
245 gray12 gray13 gray14 gray15 gray16 gray17 gray18 gray19 gray2 gray20 gray21
246 gray22 gray23 gray24 gray25 gray26 gray27 gray28 gray29 gray3 gray30 gray31
247 gray32 gray33 gray34 gray35 gray36 gray37 gray38 gray39 gray4 gray40 gray41
248 gray42 gray43 gray44 gray45 gray46 gray47 gray48 gray49 gray5 gray50 gray51
249 gray52 gray53 gray54 gray55 gray56 gray57 gray58 gray59 gray6 gray60 gray61
250 gray62 gray63 gray64 gray65 gray66 gray67 gray68 gray69 gray7 gray70 gray71
251 gray72 gray73 gray74 gray75 gray76 gray77 gray78 gray79 gray8 gray80 gray81
252 gray82 gray83 gray84 gray85 gray86 gray87 gray88 gray89 gray9 gray90 gray91
253 gray92 gray93 gray94 gray95 gray96 gray97 gray98 gray99 green green1 green2
254 green3 green4 greenyellow grey grey0 grey1 grey10 grey100 grey11 grey12
255 grey13 grey14 grey15 grey16 grey17 grey18 grey19 grey2 grey20 grey21 grey22
256 grey23 grey24 grey25 grey26 grey27 grey28 grey29 grey3 grey30 grey31 grey32
257 grey33 grey34 grey35 grey36 grey37 grey38 grey39 grey4 grey40 grey41 grey42
258 grey43 grey44 grey45 grey46 grey47 grey48 grey49 grey5 grey50 grey51 grey52
259 grey53 grey54 grey55 grey56 grey57 grey58 grey59 grey6 grey60 grey61 grey62
260 grey63 grey64 grey65 grey66 grey67 grey68 grey69 grey7 grey70 grey71 grey72
261 grey73 grey74 grey75 grey76 grey77 grey78 grey79 grey8 grey80 grey81 grey82
262 grey83 grey84 grey85 grey86 grey87 grey88 grey89 grey9 grey90 grey91 grey92
263 grey93 grey94 grey95 grey96 grey97 grey98 grey99 honeydew honeydew1 honeydew2
264 honeydew3 honeydew4 hotpink hotpink1 hotpink2 hotpink3 hotpink4 indianred
265 indianred1 indianred2 indianred3 indianred4 indigo ivory ivory1 ivory2
266 ivory3 ivory4 khaki khaki1 khaki2 khaki3 khaki4 lavender lavenderblush
267 lavenderblush1 lavenderblush2 lavenderblush3 lavenderblush4 lawngreen lemonchif
268 fon lemonchiffon1 lemonchiffon2 lemonchiffon3 lemonchiffon4 lightblue lightblue1
269 lightblue2 lightblue3 lightblue4 lightcoral lightcyan lightcyan1 lightcyan2
270 lightcyan3 lightcyan4 lightgoldenrod lightgoldenrod1 lightgoldenrod2 lightgolde
271 nrod3 lightgoldenrod4 lightgoldenrodyellow lightgray lightgreen lightgrey
272 lightpink lightpink1 lightpink2 lightpink3 lightpink4 lightsalmon lightsalmon1
273 lightsalmon2 lightsalmon3 lightsalmon4 lightseagreen lightskyblue lightskyblue1
274 lightskyblue2 lightskyblue3 lightskyblue4 lightslateblue lightslategray
275 lightslategrey lightsteelblue lightsteelblue1 lightsteelblue2 lightsteelblue3
276 lightsteelblue4 lightyellow lightyellow1 lightyellow2 lightyellow3 lightyellow4
277 lime limegreen linen magenta magenta1 magenta2 magenta3 magenta4 maroon
278 maroon1 maroon2 maroon3 maroon4 mediumaquamarine mediumblue mediumforestgreen
279 mediumgoldenrod mediumorchid mediumorchid1 mediumorchid2 mediumorchid3
280 mediumorchid4 mediumpurple mediumpurple1 mediumpurple2 mediumpurple3 mediumpurp
281 le4 mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumviole
282 tred midnightblue mintcream mistyrose mistyrose1 mistyrose2 mistyrose3 mistyrose
283 4 moccasin navajowhite navajowhite1 navajowhite2 navajowhite3 navajowhite4
284 navy navyblue oldlace olive olivedrab olivedrab1 olivedrab2 olivedrab3
285 olivedrab4 orange orange1 orange2 orange3 orange4 orangered orangered1
286 orangered2 orangered3 orangered4 orchid orchid1 orchid2 orchid3 orchid4
287 palegoldenrod palegreen palegreen1 palegreen2 palegreen3 palegreen4 paleturquoi
288 se paleturquoise1 paleturquoise2 paleturquoise3 paleturquoise4 palevioletred
289 palevioletred1 palevioletred2 palevioletred3 palevioletred4 papayawhip
290 peachpuff peachpuff1 peachpuff2 peachpuff3 peachpuff4 peru pink pink1 pink2
291 pink3 pink4 plum plum1 plum2 plum3 plum4 powderblue purple purple1 purple2
292 purple3 purple4 red red1 red2 red3 red4 rosybrown rosybrown1 rosybrown2
293 rosybrown3 rosybrown4 royalblue royalblue1 royalblue2 royalblue3 royalblue4
294 saddlebrown salmon salmon1 salmon2 salmon3 salmon4 sandybrown seagreen
295 seagreen1 seagreen2 seagreen3 seagreen4 seashell seashell1 seashell2 seashell3
296 seashell4 sienna sienna1 sienna2 sienna3 sienna4 silver skyblue skyblue1
297 skyblue2 skyblue3 skyblue4 slateblue slateblue1 slateblue2 slateblue3 slateblue
298 4 slategray slategray1 slategray2 slategray3 slategray4 slategrey snow snow1
299 snow2 snow3 snow4 springgreen springgreen1 springgreen2 springgreen3 springgree
300 n4 steelblue steelblue1 steelblue2 steelblue3 steelblue4 tan tan1 tan2 tan3
301 tan4 teal thistle thistle1 thistle2 thistle3 thistle4 tomato tomato1 tomato2
302 tomato3 tomato4 transparent turquoise turquoise1 turquoise2 turquoise3
303 turquoise4 violet violetred violetred1 violetred2 violetred3 violetred4
304 wheat wheat1 wheat2 wheat3 wheat4 white whitesmoke yellow yellow1 yellow2
305 yellow3 yellow4 yellowgreen
308 \begin_layout Itemize
309 The HSL base color names: hsl-<hue><saturation><lightness>.
313 \begin_layout Itemize
314 Hue can be one of: r (red), ry (red-yellow), o (orange, same as red-yellow),
315 y (yellow), yg (yellow-green), g (green), gc (green-cyan), c (cyan), cb
316 (cyan-blue), b (blue), bm (blue-magenta), m (magenta), mr (magenta-red).
319 \begin_layout Itemize
320 Saturation is 0-8, where 0 is greyscale and 8 is fully saturated.
323 \begin_layout Itemize
324 Lightness is 0-8, where 0 is black and 8 is white.
328 \begin_layout Itemize
329 The color names can have a modifier after space (multiple modifiers are
330 allowed, separated by spaces): opaque10, opaque20, opaque25, opaque30,
331 opaque40, opaque50, opaque60, opaque70, opaque75, opaque80, opaque90, opaque,
332 hue{+,-}{1-23}, {saturation,lightness}{+,-}{1-16}.
336 \begin_layout Itemize
337 opaqueness is measured as percentage.
340 \begin_layout Itemize
341 Hue adjustments are on 24-step scale.
344 \begin_layout Itemize
345 Saturation and lightness adjustments are on 16-step scale.
349 \begin_layout Section
353 \begin_layout Standard
354 These tokens are special, and are expanded while the script is being loaded
357 \begin_layout Subsection
358 @@LUA_SCRIPT_FILENAME@@
361 \begin_layout Standard
362 Expanded to string token containing path and filename of this Lua script.
363 Handy for referencing other lua scripts or resources that are relative
367 \begin_layout Standard
368 In practicular, this is suitable to be passed as base argument of various
369 functions like loadfile, dofile, resolve_filename, gui.bitmap_load, gui.bitmap_lo
370 ad_png and gui.bitmap_load_pal.
373 \begin_layout Section
377 \begin_layout Subsection
378 MMAP_STRUCT: Quasi-table mapping emulated memory
381 \begin_layout Standard
382 Objects of this class act like tables, except that the values are reflected
383 to and from emulated memory.
386 \begin_layout Subsubsection
387 static function new: Create new instance
390 \begin_layout Itemize
391 Syntax: mmap memory.mmap.new()
394 \begin_layout Itemize
395 Syntax: mmap classes.MMAP_STRUCT.new()
398 \begin_layout Itemize
399 Deprecated: mmap memory.map_structure()
402 \begin_layout Standard
406 \begin_layout Itemize
407 mmap: MMAP_STRUCT: The created mmap structure.
410 \begin_layout Standard
411 Create a new MMAP_STRUCT (with no mappings) and return it.
414 \begin_layout Subsubsection
415 operator(): Bind key in mmap structure
418 \begin_layout Itemize
419 Syntax: obj(key, address, type)
422 \begin_layout Itemize
423 Syntax: obj(key, marea, address, type)
426 \begin_layout Standard
430 \begin_layout Itemize
431 obj: MMAP_STRUCT: The structure to manipulate.
434 \begin_layout Itemize
435 key: String: The name of the key in array to map.
438 \begin_layout Itemize
439 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 type: String: The type of data to map.
453 \begin_layout Itemize
454 One of: byte, sbyte, word, sword, hword, shword, dword, sdword, qword, sqword,
459 \begin_layout Standard
460 Bind key <key> in mmap structure <obj> to address <address> (relative to
462 The memory address is treated as type <type>.
465 \begin_layout Itemize
467 \begin_inset Quotes eld
471 \begin_inset Quotes erd
475 \begin_inset Quotes eld
479 \begin_inset Quotes erd
483 \begin_inset Quotes eld
487 \begin_inset Quotes erd
493 \begin_layout Standard
494 This binds signed word at address WRAM+0x2A into key
495 \begin_inset Quotes eld
499 \begin_inset Quotes erd
505 \begin_layout Standard
506 \begin_inset Newpage pagebreak
512 \begin_layout Subsection
513 ZIPWRITER: Write .zip files
516 \begin_layout Standard
517 This class does writing of .zip files.
520 \begin_layout Subsubsection
521 Static function new: Create a new zipfile
524 \begin_layout Itemize
525 Syntax: zip zip.writer.new(filename, [compression])
528 \begin_layout Itemize
529 Deprecated: zip zip.create(filename, [compression])
532 \begin_layout Standard
536 \begin_layout Itemize
537 filename: string: The name of the file to write.
540 \begin_layout Itemize
541 compression: number: Compression level (0-9).
545 \begin_layout Standard
549 \begin_layout Itemize
550 zip: ZIPWRITER: The newly created ZIP writer.
553 \begin_layout Standard
554 Create a new ZIPWRITER object and return it.
557 \begin_layout Subsubsection
558 Method commit: Finish creating ZIP file.
561 \begin_layout Itemize
562 Syntax: zipfile:commit()
565 \begin_layout Standard
569 \begin_layout Itemize
570 zipfile: ZIPFILE: The ZIP file object.
573 \begin_layout Standard
574 Finish writing the ZIP file and actually create it on disk.
577 \begin_layout Itemize
578 If a member is currently open, it is implicitly closed.
581 \begin_layout Itemize
582 Invoking this on already committed or rolled back zipfile causes an error.
585 \begin_layout Subsubsection
586 Method rollback: Cancel writing the ZIP file.
589 \begin_layout Itemize
590 Syntax: zipfile:rollback()
593 \begin_layout Standard
597 \begin_layout Itemize
598 zipfile: ZIPFILE: The ZIP file object.
601 \begin_layout Standard
602 Cancel writing the whole ZIP file.
603 The file on disk will not be modified.
606 \begin_layout Itemize
607 If a member is currently open, it is implicitly closed.
610 \begin_layout Itemize
611 Invoking this on already committed or rolled back zipfile causes an error.
614 \begin_layout Subsubsection
615 Method create_file: Start writing a new member
618 \begin_layout Itemize
619 Syntax: zipfile:create_file(filename)
622 \begin_layout Standard
626 \begin_layout Itemize
627 zipfile: ZIPFILE: The ZIP file object.
630 \begin_layout Itemize
631 string filename: Name of the new member to create
634 \begin_layout Standard
635 Start writing a new member <filename> in ZIP file.
638 \begin_layout Itemize
639 If a member is currently open, it is implicitly closed.
642 \begin_layout Itemize
643 Invoking this on already committed or rolled back zipfile causes an error.
646 \begin_layout Subsubsection
647 Method close_file: Close member
650 \begin_layout Itemize
651 Syntax: zipfile:close_file()
654 \begin_layout Standard
658 \begin_layout Itemize
659 zipfile: ZIPFILE: The ZIP file object.
662 \begin_layout Standard
663 Close the currently open member in zipfile.
666 \begin_layout Itemize
667 Invoking this on already committed or rolled back zipfile causes an error.
670 \begin_layout Itemize
671 Invoking this without an open member causes an error.
674 \begin_layout Subsubsection
675 Method write: Write data
678 \begin_layout Itemize
679 Syntax: zipfile:write(data)
682 \begin_layout Standard
686 \begin_layout Itemize
687 zipfile: ZIPFILE: The ZIP file object.
690 \begin_layout Itemize
691 data: string: The data to write.
694 \begin_layout Standard
695 Write <data> in binary mode (as-is) to currently open member.
698 \begin_layout Itemize
699 Invoking this without a member being open causes an error.
702 \begin_layout Standard
703 \begin_inset Newpage pagebreak
709 \begin_layout Subsection
710 TILEMAP: Tiled collection of bitmaps.
713 \begin_layout Standard
714 A tilemap is tiled table, each cell holding a bitmap (indexed or direct).
717 \begin_layout Subsubsection
718 Static function new: Create a tilemap
721 \begin_layout Itemize
722 Syntax: tilemap gui.tiled_bitmap.new(w, h, bw, bh);
725 \begin_layout Itemize
726 Syntax: tilemap classes.TILEMAP.new(w, h, bw, bh);
729 \begin_layout Itemize
730 Deprecated: tilemap gui.tilemap(w, h, bw, bh);
733 \begin_layout Standard
737 \begin_layout Itemize
738 w: number: Width of the tilemap in tiles
741 \begin_layout Itemize
742 h: number: Height of the tilemap in tiles
745 \begin_layout Itemize
746 bw: number: Width of each tile in pixels.
749 \begin_layout Itemize
750 bh: number: Height of each tile in pixels.
753 \begin_layout Standard
757 \begin_layout Itemize
758 tilemap: TILEMAP: the newly created tilemap
761 \begin_layout Standard
762 Create a new tilemap of <w>*<h> tiles, each of <bw>*<bh> pixels and return
766 \begin_layout Subsubsection
767 TILEMAP:getsize: Query tilemap size
770 \begin_layout Itemize
771 Syntax: width, height tmap:getsize()
774 \begin_layout Standard
778 \begin_layout Itemize
779 tmap: TILEMAP: The tilemap to query.
782 \begin_layout Standard
786 \begin_layout Itemize
787 width: number : The width of the tilemap in tiles.
790 \begin_layout Itemize
791 height: number: The height of the tilemap in tiles.
794 \begin_layout Standard
795 Get size of tilemap in tiles.
798 \begin_layout Subsubsection
799 TILEMAP:getcsize: Query tilemap cell size
802 \begin_layout Itemize
803 Syntax: width, height tmap:getcsize()
806 \begin_layout Standard
810 \begin_layout Itemize
811 tmap: TILEMAP: The tilemap to query.
814 \begin_layout Standard
818 \begin_layout Itemize
819 width: number: The width of tilemap tile in pixels.
822 \begin_layout Itemize
823 height: number: The height of tilemap tile in pixels.
826 \begin_layout Standard
827 Get size of each tilemap tile in pixels.
830 \begin_layout Subsubsection
831 TILEMAP:get: Query tilemap tile
834 \begin_layout Itemize
835 Syntax: bitmap, palette tmap:get(x, y)
838 \begin_layout Standard
842 \begin_layout Itemize
843 tmap: TILEMAP: The tilemap to query.
846 \begin_layout Itemize
847 x: number: The x-coordinate of tile to query.
850 \begin_layout Itemize
851 y: number: The y-coordinate of tile to query.
854 \begin_layout Standard
858 \begin_layout Itemize
859 bitmap: The associated bitmap (BITMAP or DBITMAP), or nil if none.
862 \begin_layout Itemize
863 palette: The palette (PALETTE) associated with indexed-color bitmap, if
868 \begin_layout Standard
869 Return the contents of tile at <x>,<y>.
872 \begin_layout Subsubsection
873 TILEMAP:set: Set tilemap cell
876 \begin_layout Itemize
877 Syntax: tmap:set(x, y)
880 \begin_layout Itemize
881 Syntax: tmap:set(x, y, bitmap)
884 \begin_layout Itemize
885 Syntax: tmap:set(x, y, bitmap, palette)
888 \begin_layout Standard
892 \begin_layout Itemize
893 tmap: TILEMAP: The tilemap to manipulate.
896 \begin_layout Itemize
897 number x: The x-coordinate of tile to set.
900 \begin_layout Itemize
901 number y: The y-coordinate of tile to set.
904 \begin_layout Itemize
905 bitmap: BITMAP/DBITMAP: The bitmap to set to tile.
908 \begin_layout Itemize
909 palette: PALETTE: The associated palette for bitmap.
912 \begin_layout Standard
913 Set the contents of tile <x>,<y>.
914 If no <bitmap> is given, clears the tile.
915 Otherwise sets the tile to contain bitmap <bitmap> with associated palette
919 \begin_layout Itemize
920 Specifying index bitmap <bitmap> without palette <palette> causes an error.
923 \begin_layout Subsubsection
924 TILEMAP:scroll: Scroll tilemap
927 \begin_layout Itemize
928 Syntax: tmap:scroll(ox, oy);
931 \begin_layout Itemize
932 Syntax: tmap:scroll(ox, oy, x, y, w, h);
935 \begin_layout Itemize
936 Syntax: tmap:scroll(ox, oy, x, y, w, h, circ_x, circ_y);
939 \begin_layout Standard
943 \begin_layout Itemize
944 tmap: TILEMAP: The tilemap to manipulate.
947 \begin_layout Itemize
948 ox: number: The number of tiles to scroll horizontally (positive is to right).
951 \begin_layout Itemize
952 oy: number: The number of tiles to scroll vertically (positive is to down).
955 \begin_layout Itemize
956 x: number: The left edge of scroll window.
959 \begin_layout Itemize
960 y: number: The top edge of scroll window.
963 \begin_layout Itemize
964 w: number: The width of scroll window.
967 \begin_layout Itemize
968 h: number: The height of scroll window.
971 \begin_layout Itemize
972 circ_x: boolean: If true, treat the window as circular in horizontal direction.
975 \begin_layout Itemize
976 circ_y: boolean: If true, treat the window as circular in vertical direction.
979 \begin_layout Standard
980 Scroll the specified tilemap <tmap> by <ox>,<oy>.
981 If a window <x>,<y>,<w>,<h> is specified, only that part is scrolled.
982 <circ_x> and <circ_y> control if scroll is circular or not.
985 \begin_layout Itemize
986 Specifying out-of-range window causes an error.
989 \begin_layout Subsubsection
990 TILEMAP:draw: Draw tilemap
993 \begin_layout Itemize
994 Name: tmap:draw(x, y)
997 \begin_layout Itemize
998 Name: tmap:draw(x, y, x0, y0, w, h)
1001 \begin_layout Standard
1005 \begin_layout Itemize
1006 tmap: TILEMAP: The tilemap to draw.
1009 \begin_layout Itemize
1010 x: The x coordinate on screen to draw to.
1013 \begin_layout Itemize
1014 y: The y coordinate on screen to draw to.
1017 \begin_layout Itemize
1018 x0: number: The x coordinate on tilemap (in pixels) to start drawing from.
1021 \begin_layout Itemize
1022 y0: number: The y coordinate on tilemap (in pixels) to start drawing from.
1025 \begin_layout Itemize
1026 w: number: The width to draw (in pixels).
1029 \begin_layout Itemize
1030 h: number: The height to draw (in pixels).
1033 \begin_layout Standard
1034 Draw tilemap <tmap> to screen at <x>,<y>.
1035 If a window <x0>,<y0>,<w>,<h> is specified, only that part is drawn.
1038 \begin_layout Itemize
1039 This method requires a rendering context to work.
1042 \begin_layout Standard
1043 \begin_inset Newpage pagebreak
1049 \begin_layout Subsection
1050 RENDERCTX: Off-screen rendering context
1053 \begin_layout Standard
1054 Object acting as off-screen rendering context.
1057 \begin_layout Subsubsection
1058 Static function new: Create a render queue
1061 \begin_layout Itemize
1062 Syntax: renderctx gui.renderctx.new(width, height);
1065 \begin_layout Itemize
1066 Syntax: renderctx classes.RENDERCTX.new(width, height);
1069 \begin_layout Itemize
1070 Deprecated: renderctx gui.renderq_new(width, height);
1073 \begin_layout Standard
1077 \begin_layout Itemize
1078 width: number: The notional width of the game area.
1081 \begin_layout Itemize
1082 height: number: The notional height of the game area.
1085 \begin_layout Standard
1089 \begin_layout Itemize
1090 rendectx: RENDERCTX: The newly created render context.
1093 \begin_layout Standard
1094 Create a render context with reported size <width>*<height> and return it.
1097 \begin_layout Subsubsection
1098 Static function setnull: Reset to default queue
1101 \begin_layout Itemize
1102 Syntax: gui.renderctx.setnull()
1105 \begin_layout Itemize
1106 Syntax: classes.RENDERCTX:setnull()
1109 \begin_layout Itemize
1110 Deprecated: gui.renderq_set()
1113 \begin_layout Standard
1114 Reset the used render context back to default for the executing callback:
1117 \begin_layout Itemize
1118 The default for paint callback is the screen
1121 \begin_layout Itemize
1122 The default for video callback is the video frame
1125 \begin_layout Itemize
1126 The default otherwise is nothing.
1129 \begin_layout Subsubsection
1130 Method clear: Clear a render queue
1133 \begin_layout Itemize
1134 Syntax: renderctx:clear()
1137 \begin_layout Itemize
1138 Deprecated: gui.renderq_clear(renderctx)
1141 \begin_layout Standard
1145 \begin_layout Itemize
1146 renderctx: RENDERCTX: The render queue to clear.
1149 \begin_layout Standard
1150 Clear all drawing from the context.
1153 \begin_layout Subsubsection
1154 Method set: Change active render context
1157 \begin_layout Itemize
1158 Syntax: renderctx:set()
1161 \begin_layout Itemize
1162 Deprecated: gui.renderq_set(renderctx)
1165 \begin_layout Standard
1169 \begin_layout Itemize
1170 renderctx: RENDERCTX: The render queue to use.
1173 \begin_layout Standard
1174 Switch the current rendering context <renderctx>.
1177 \begin_layout Subsubsection
1178 Method run: Draw all objects in context to another
1181 \begin_layout Itemize
1182 Syntax: renderctx:run()
1185 \begin_layout Itemize
1186 Deprecated: gui.renderq_run(renderctx)
1189 \begin_layout Standard
1193 \begin_layout Itemize
1194 renderctx: RENDERCTX: The render context to overlay.
1197 \begin_layout Standard
1198 Overlay the specified render context <context> upon the active rendering
1202 \begin_layout Itemize
1203 Trying to overlay rendering context upon itself is a bad idea.
1206 \begin_layout Subsubsection
1207 Method render: Render a contex to bitmap
1210 \begin_layout Itemize
1211 Syntax: bitmap renderctx:render()
1214 \begin_layout Standard
1218 \begin_layout Itemize
1219 renderctx: RENDERCTX: The context to render.
1222 \begin_layout Standard
1226 \begin_layout Itemize
1227 bitmap: DBITMAP: The rendered bitmap.
1230 \begin_layout Standard
1231 Render the specified context <renderctx> to a new bitmap.
1234 \begin_layout Itemize
1235 The size of bitmap will be nominal game area size, plus any set gaps.
1238 \begin_layout Itemize
1239 This method does not require active rendering context.
1242 \begin_layout Subsubsection
1243 Method synchronous_repaint: Paint screen now
1246 \begin_layout Itemize
1247 Syntax: renderctx:synchronous_repaint()
1250 \begin_layout Itemize
1251 Deprecated: gui.synchronous_repaint(renderctx)
1254 \begin_layout Standard
1258 \begin_layout Itemize
1259 renderctx: RENDERCTX: The context to paint.
1262 \begin_layout Standard
1263 Immediately redraw the screen with game overlayed by drawings from context
1267 \begin_layout Itemize
1268 This does not require active rendering context.
1271 \begin_layout Itemize
1272 Will not cause paint callback to be invoked.
1275 \begin_layout Standard
1276 \begin_inset Newpage pagebreak
1282 \begin_layout Subsection
1283 PALETTE: Color palette for indexed image
1286 \begin_layout Subsubsection
1287 Static function new: Create a new palette
1290 \begin_layout Itemize
1291 Syntax: palette gui.palette.new()
1294 \begin_layout Itemize
1295 Syntax: palette classes.PALETTE.new()
1298 \begin_layout Itemize
1299 Deprecated: palette gui.palette_new()
1302 \begin_layout Standard
1306 \begin_layout Itemize
1307 palette: PALETTE: The created palette.
1310 \begin_layout Standard
1311 Create a new palette (with all colors transparent) and return it.
1314 \begin_layout Subsubsection
1315 Static function load: Load a palette
1318 \begin_layout Itemize
1319 Syntax: palette gui.palette.load(file, [base])
1322 \begin_layout Itemize
1323 Syntax: palette classes.PALETTE.load(file, [base])
1326 \begin_layout Itemize
1327 Deprecated: palette gui.palette_load(file, [base])
1330 \begin_layout Standard
1334 \begin_layout Itemize
1335 string file: The file to load.
1338 \begin_layout Itemize
1339 string base (optional): The base file to resolve file relative to.
1342 \begin_layout Standard
1346 \begin_layout Itemize
1347 palette: PALETTE: The loaded palette.
1350 \begin_layout Standard
1351 Load a palette from file <file> (resolved relative to <base>).
1354 \begin_layout Itemize
1355 The file format is a series of lines, each with following format:
1359 \begin_layout Itemize
1360 Blank or just whitespace: Ignored
1363 \begin_layout Itemize
1364 First non-whitespace is '#': Ignored
1367 \begin_layout Itemize
1368 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
1371 \begin_layout Itemize
1372 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
1373 (0-256, 0 being fully transparent and 256 fully opaque).
1376 \begin_layout Itemize
1377 transparent: Fully transparent color
1381 \begin_layout Subsubsection
1382 Static function load_str: Load a palette from string
1385 \begin_layout Itemize
1386 Syntax: palette gui.palette.load(data)
1389 \begin_layout Itemize
1390 Syntax: palette classes.PALETTE.load(data)
1393 \begin_layout Itemize
1394 Deprecated: palette gui.palette_load(data)
1397 \begin_layout Standard
1401 \begin_layout Itemize
1402 string data: The palette data.
1405 \begin_layout Standard
1409 \begin_layout Itemize
1410 palette: PALETTE: The loaded palette.
1413 \begin_layout Standard
1414 Like PALETTE:load, but instead of reading palette from file, reads it from
1418 \begin_layout Subsubsection
1419 Method set: Set palette entry
1422 \begin_layout Itemize
1423 Syntax: palette:set(index, color)
1426 \begin_layout Itemize
1427 Deprecated: gui.palette_set(palette, ...)
1430 \begin_layout Standard
1434 \begin_layout Itemize
1435 palette: PALETTE: The palette to manipulate
1438 \begin_layout Itemize
1439 index: number: The index of color to set (0-65535).
1442 \begin_layout Itemize
1443 color: number/string: The color value to set.
1446 \begin_layout Standard
1447 Set palette <palette> index <index> to color <color>.
1450 \begin_layout Subsubsection
1451 Method hash: Hash a palette
1454 \begin_layout Itemize
1455 Syntax: hash palette:hash()
1458 \begin_layout Itemize
1459 Deprecated: hash gui.palette_hash(palette)
1462 \begin_layout Standard
1466 \begin_layout Itemize
1467 palette: The palette to hash.
1470 \begin_layout Standard
1474 \begin_layout Itemize
1475 hash: string: 64-hex digit hash.
1478 \begin_layout Standard
1479 Obtain crypto-grade hash of palette data of <palette>.
1482 \begin_layout Itemize
1483 All colors after the last non-transparent one are ignored.
1486 \begin_layout Subsubsection
1487 Method adjust_transparency: Adjust transparency
1490 \begin_layout Itemize
1491 Syntax: palette:adjust_transparency(newvalue)
1494 \begin_layout Itemize
1495 Deprecated: gui.adjust_transparency(palette, ...)
1498 \begin_layout Standard
1502 \begin_layout Itemize
1503 palette: PALETTE: The palette to adjust.
1506 \begin_layout Itemize
1507 Number adj: The factor to multiply opaqueness with times 256.
1510 \begin_layout Standard
1511 Multiply opaqueness of all colors in palette <palette> by factor of <adj>/256.
1514 \begin_layout Standard
1515 \begin_inset Newpage pagebreak
1521 \begin_layout Subsection
1522 BITMAP: Indexed-color bitmap
1525 \begin_layout Subsubsection
1526 Static function new: Create a new bitmap
1529 \begin_layout Itemize
1530 Syntax: bitmap gui.bitmap.new(w, h, [fillcolor])
1533 \begin_layout Itemize
1534 Syntax: bitmap classes.BITMAP.new(w, h, [fillcolor])
1537 \begin_layout Itemize
1538 Deprecated: bitmap gui.bitmap_new(w, h, false, [fillcolor])
1541 \begin_layout Standard
1545 \begin_layout Itemize
1546 w: number: The width of bitmap to create in pixels.
1549 \begin_layout Itemize
1550 h: number: The height of bitmap to create in pixels.
1553 \begin_layout Itemize
1554 false: boolean: Constant boolean false.
1557 \begin_layout Itemize
1558 fillcolor: number: The initial fill index.
1559 Default 0 if not specified.
1562 \begin_layout Standard
1563 Create a new bitmap of size <w>*<h>.
1564 Fill the bitmap with color index <fillcolor>.
1567 \begin_layout Subsubsection
1568 Method draw: Draw a bitmap
1571 \begin_layout Itemize
1572 Syntax: bitmap:draw(x, y, palette)
1575 \begin_layout Itemize
1576 Deprecated: gui.bitmap_draw(x, y, bitmap, palette)
1579 \begin_layout Standard
1583 \begin_layout Itemize
1584 bitmap: BITMAP: The bitmap to draw
1587 \begin_layout Itemize
1588 x: number: The x-coordinate on screen.
1591 \begin_layout Itemize
1592 y: number: The y-coordinate on screen.
1595 \begin_layout Itemize
1596 palette: The palette to use for drawing.
1599 \begin_layout Standard
1600 Draw bitmap <bitmap> on screen at <x>,<y> with palette <palette>.
1603 \begin_layout Subsubsection
1604 Method pset: Set pixel in bitmap
1607 \begin_layout Itemize
1608 Syntax: bitmap:pset(x, y, color)
1611 \begin_layout Itemize
1612 Deprecaed: gui.bitmap_pset(bitmap, ...)
1615 \begin_layout Standard
1619 \begin_layout Itemize
1620 bitmap: BITMAP: The bitmap to manipulate.
1623 \begin_layout Itemize
1624 x: number: x-coordinate of pixel to set.
1627 \begin_layout Itemize
1628 y: number: y-coordinate of pixel to set.
1631 \begin_layout Itemize
1632 color: number: The color index to set.
1635 \begin_layout Standard
1636 Sets specified pixel <x>,<y> in bitmap <bitmap> to color index <color>.
1639 \begin_layout Subsubsection
1640 Method pget: Get pixel in bitmap
1643 \begin_layout Itemize
1644 Syntax: color bitmap:pget(x,y)
1647 \begin_layout Itemize
1648 Deprecated: color gui.bitmap_pget(bitmap, ...)
1651 \begin_layout Standard
1655 \begin_layout Itemize
1656 bitmap: BITMAP: The bitmap to query.
1659 \begin_layout Itemize
1660 x: number: x-coordinate of pixel to get.
1663 \begin_layout Itemize
1664 y: number: y-coordinate of pixel to get.
1667 \begin_layout Standard
1671 \begin_layout Itemize
1672 color: number: The color index in specified pixel.
1675 \begin_layout Standard
1676 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
1679 \begin_layout Subsubsection
1680 Method size: Get size of bitmap
1683 \begin_layout Itemize
1684 Syntax: width, height bitmap:size()
1687 \begin_layout Itemize
1688 Syntax: width, height gui.bitmap_size(bitmap)
1691 \begin_layout Standard
1695 \begin_layout Itemize
1696 bitmap: BITMAP: The bitmap to query.
1699 \begin_layout Standard
1703 \begin_layout Itemize
1704 width: number: The width of the bitmap.
1707 \begin_layout Itemize
1708 height: number: The height of the bitmap.
1711 \begin_layout Standard
1712 Get size of bitmap <bitmap>.
1715 \begin_layout Subsubsection
1716 Method blit: Blit a bitmap into another
1719 \begin_layout Itemize
1720 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
1723 \begin_layout Itemize
1724 Deprecated: gui.bitmap_blit(dest, ...)
1727 \begin_layout Standard
1731 \begin_layout Itemize
1732 dest: BITMAP: The target bitmap to blit to.
1735 \begin_layout Itemize
1736 dx: number: The x-coordinate in target.
1739 \begin_layout Itemize
1740 dy: number: The y-coordinate in target.
1743 \begin_layout Itemize
1744 src: BITMAP: The source bitmap.
1747 \begin_layout Itemize
1748 sx: number: The x-coordinate in source.
1751 \begin_layout Itemize
1752 sy: number: The y-coordinate in source.
1755 \begin_layout Itemize
1756 w: number: The width of area to blit.
1759 \begin_layout Itemize
1760 h: number: The height of area to blit.
1763 \begin_layout Itemize
1764 ck: number: The color key.
1765 Pixels with this index are not copied.
1769 \begin_layout Itemize
1770 If none is specified, all pixels are copied.
1774 \begin_layout Standard
1775 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> into <dest> at
1777 If a color key <ck> is specified, pixels of that color are not copied.
1780 \begin_layout Subsubsection
1781 Method blit_scaled: Blit a bitmap into another with scaling
1784 \begin_layout Itemize
1785 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
1788 \begin_layout Itemize
1789 Deprecated: gui.bitmap_blit_scaled(dest, ...)
1792 \begin_layout Standard
1796 \begin_layout Itemize
1797 dest: BITMAP: The target bitmap to blit to.
1800 \begin_layout Itemize
1801 dx: number: The x-coordinate in target.
1804 \begin_layout Itemize
1805 dy: number: The y-coordinate in target.
1808 \begin_layout Itemize
1809 src: BITMAP: The source bitmap.
1812 \begin_layout Itemize
1813 sx: number: The x-coordinate in source.
1816 \begin_layout Itemize
1817 sy: number: The y-coordinate in source.
1820 \begin_layout Itemize
1821 w: number: The width of area to blit.
1824 \begin_layout Itemize
1825 h: number: The height of area to blit.
1828 \begin_layout Itemize
1829 hscl: number: Horizontal scale factor (integer).
1832 \begin_layout Itemize
1833 vscl: number: Vertical scale factor (integer).
1834 Defaults to the same as <hscl>.
1837 \begin_layout Itemize
1838 ck: number: The color key.
1839 Pixels with this index are not copied.
1843 \begin_layout Itemize
1844 If none is specified, all pixels are copied.
1848 \begin_layout Standard
1849 Like BITMAP:blit, but also scales the copied part of bitmap (using nearest
1850 neighbor) by factor of <hscl>*<vscl>.
1853 \begin_layout Subsubsection
1854 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
1857 \begin_layout Itemize
1858 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
1861 \begin_layout Itemize
1862 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
1865 \begin_layout Standard
1869 \begin_layout Itemize
1870 dest: BITMAP: The target bitmap to blit to.
1873 \begin_layout Itemize
1874 dx: number: The x-coordinate in target.
1877 \begin_layout Itemize
1878 dy: number: The y-coordinate in target.
1881 \begin_layout Itemize
1882 src: BITMAP: The source bitmap.
1885 \begin_layout Itemize
1886 sx: number: The x-coordinate in source.
1889 \begin_layout Itemize
1890 sy: number: The y-coordinate in source.
1893 \begin_layout Itemize
1894 w: number: The width of area to blit.
1897 \begin_layout Itemize
1898 h: number: The height of area to blit.
1901 \begin_layout Itemize
1902 operator: string: The operator to use.
1906 \begin_layout Itemize
1907 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
1908 DestOut, Clear or Xor.
1912 \begin_layout Standard
1913 Like BITMAP:blit, but instead of just overwriting, applies specified Porter-Duff
1918 \begin_layout Itemize
1919 Color index 0 in source and target is treated as background.
1922 \begin_layout Subsubsection
1923 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
1924 Porter-Duff composition
1927 \begin_layout Itemize
1928 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
1932 \begin_layout Itemize
1933 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
1936 \begin_layout Standard
1940 \begin_layout Itemize
1941 dest: BITMAP: The target bitmap to blit to.
1944 \begin_layout Itemize
1945 dx: number: The x-coordinate in target.
1948 \begin_layout Itemize
1949 dy: number: The y-coordinate in target.
1952 \begin_layout Itemize
1953 src: BITMAP: The source bitmap.
1956 \begin_layout Itemize
1957 sx: number: The x-coordinate in source.
1960 \begin_layout Itemize
1961 sy: number: The y-coordinate in source.
1964 \begin_layout Itemize
1965 w: number: The width of area to blit.
1968 \begin_layout Itemize
1969 h: number: The height of area to blit.
1972 \begin_layout Itemize
1973 hscl: number: Horizontal scale factor (integer).
1976 \begin_layout Itemize
1977 vscl: number: Vertical scale factor (integer).
1978 Defaults to the same as <hscl>.
1981 \begin_layout Itemize
1982 operator: string: The operator to use.
1986 \begin_layout Itemize
1987 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
1988 DestOut, Clear or Xor.
1992 \begin_layout Standard
1993 Like BITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
1994 like BITMAP:blit_scaled.
1997 \begin_layout Subsubsection
1998 Method blit_priority: Blit a bitmap into another with color priority
2001 \begin_layout Itemize
2002 Syntax: dest:blit_priority(dx, dy, src, sx, sy, w, h)
2005 \begin_layout Itemize
2006 Deprecated: gui.bitmap_blit_priority(dest, ...)
2009 \begin_layout Standard
2013 \begin_layout Itemize
2014 dest: BITMAP: The target bitmap to blit to.
2017 \begin_layout Itemize
2018 dx: number: The x-coordinate in target.
2021 \begin_layout Itemize
2022 dy: number: The y-coordinate in target.
2025 \begin_layout Itemize
2026 src: BITMAP: The source bitmap.
2029 \begin_layout Itemize
2030 sx: number: The x-coordinate in source.
2033 \begin_layout Itemize
2034 sy: number: The y-coordinate in source.
2037 \begin_layout Itemize
2038 w: number: The width of area to blit.
2041 \begin_layout Itemize
2042 h: number: The height of area to blit.
2045 \begin_layout Standard
2046 Like BITMAP:blit, but only copy pixels where source color index is greater
2047 than destination color index.
2050 \begin_layout Subsubsection
2051 Method blit_scaled_priority: Blit a bitmap into another with color priority
2055 \begin_layout Itemize
2056 Syntax: dest:blit_scaled_priority(dx, dy, src, sx, sy, w, h, hscl, [vscl])
2059 \begin_layout Itemize
2060 Deprecated: gui.bitmap_blit_scaled_priority(dest, ...)
2063 \begin_layout Standard
2067 \begin_layout Itemize
2068 dest: BITMAP: The target bitmap to blit to.
2071 \begin_layout Itemize
2072 dx: number: The x-coordinate in target.
2075 \begin_layout Itemize
2076 dy: number: The y-coordinate in target.
2079 \begin_layout Itemize
2080 src: BITMAP: The source bitmap.
2083 \begin_layout Itemize
2084 sx: number: The x-coordinate in source.
2087 \begin_layout Itemize
2088 sy: number: The y-coordinate in source.
2091 \begin_layout Itemize
2092 w: number: The width of area to blit.
2095 \begin_layout Itemize
2096 h: number: The height of area to blit.
2099 \begin_layout Itemize
2100 hscl: number: Horizontal scale factor (integer).
2103 \begin_layout Itemize
2104 vscl: number: Vertical scale factor (integer).
2105 Defaults to the same as <hscl>.
2108 \begin_layout Standard
2109 Like BITMAP:blit_priority, but apply scaling by <hscl>*<vscl> like BITMAP:blit_s
2113 \begin_layout Subsubsection
2114 Method save_png: Save a bitmap to PNG
2117 \begin_layout Itemize
2118 Syntax: bitmap:save_png(filename, [base], palette)
2121 \begin_layout Itemize
2122 Syntax: data bitmap:save_png(palette)
2125 \begin_layout Itemize
2127 gui.bitmap_save_png(bitmap, ...)
2130 \begin_layout Standard
2134 \begin_layout Itemize
2135 bitmap: BITMAP: The bitmap to save.
2138 \begin_layout Itemize
2139 filename: string: The filename to save to.
2142 \begin_layout Itemize
2143 base: string: The base filename is resolved relative to.
2146 \begin_layout Itemize
2147 palette: PALETTE: The palette to use.
2150 \begin_layout Standard
2154 \begin_layout Itemize
2155 data: string: BASE64 encoded PNG data.
2158 \begin_layout Standard
2159 Save bitmap <bitmap>, with palette <pal> into PNG file <filename> (relative
2160 to <base>) or return BASE64 encoding of it.
2163 \begin_layout Subsubsection
2164 Method hash: Hash a bitmap
2167 \begin_layout Itemize
2168 Syntax: hash bitmap:hash()
2171 \begin_layout Itemize
2172 Deprecated: hash bitmap:hash(bitmap)
2175 \begin_layout Standard
2179 \begin_layout Itemize
2180 bitmap: BITMAP: The bitmap to hash.
2183 \begin_layout Standard
2187 \begin_layout Itemize
2188 hash: string: 64-hex digit hash
2191 \begin_layout Standard
2192 Hashes bitmap <bitmap> and returns crypto-strong hash.
2196 \begin_layout Itemize
2197 Color order in bitmap is significant.
2200 \begin_layout Standard
2201 \begin_inset Newpage pagebreak
2207 \begin_layout Subsection
2208 DBITMAP: Direct-color bitmap
2211 \begin_layout Subsubsection
2212 Static function: new: Create a new bitmap
2215 \begin_layout Itemize
2216 Syntax: bitmap gui.dbitmap.new(w, h, [fillcolor])
2219 \begin_layout Itemize
2220 Syntax: bitmap classes.DBITMAP.new(w, h, [fillcolor])
2223 \begin_layout Itemize
2224 Deprecated: bitmap gui.bitmap_new (w, h, true, [fillcolor]).
2227 \begin_layout Standard
2231 \begin_layout Itemize
2232 w: number: The width of new bitmap.
2235 \begin_layout Itemize
2236 h: number: The height of new bitmap.
2239 \begin_layout Itemize
2240 true: boolean: Fixed boolean true
2243 \begin_layout Itemize
2244 fillcolor: The color to fill the bitmap with (default transparent).
2247 \begin_layout Standard
2251 \begin_layout Itemize
2252 bitmap: DBITMAP: The new bitmap.
2255 \begin_layout Standard
2256 Create a new direct-color bitmap of size <w>*<h>, initially filled with
2260 \begin_layout Subsubsection
2261 Method draw: Draw a bitmap
2264 \begin_layout Itemize
2265 Syntax: bitmap.draw(x, y)
2268 \begin_layout Itemize
2269 Deprecated: gui.bitmap_draw(x, y, bitmap)
2272 \begin_layout Standard
2276 \begin_layout Itemize
2277 bitmap: DBITMAP: The bitmap to draw.
2280 \begin_layout Itemize
2281 x: number: X-coordinate on screen.
2284 \begin_layout Itemize
2285 y: number: Y-coordinate on screen.
2288 \begin_layout Standard
2289 Draw bitmap <bitmap> on screen at <x>,<y>.
2292 \begin_layout Subsubsection
2293 Method pset: Set pixel in bitmap
2296 \begin_layout Itemize
2297 Syntax: bitmap:pset(x, y, color)
2300 \begin_layout Itemize
2301 Deprecaed: gui.bitmap_pset(bitmap, ...)
2304 \begin_layout Standard
2308 \begin_layout Itemize
2309 bitmap: DBITMAP: The bitmap to manipulate.
2312 \begin_layout Itemize
2313 x: number: x-coordinate of pixel to set.
2316 \begin_layout Itemize
2317 y: number: y-coordinate of pixel to set.
2320 \begin_layout Itemize
2321 color: number/string: The color to set.
2324 \begin_layout Standard
2325 Sets specified pixel <x>,<y> in bitmap <bitmap> to color <color>.
2328 \begin_layout Subsubsection
2329 Method pget: Get pixel in bitmap
2332 \begin_layout Itemize
2333 Syntax: color bitmap:pget(x,y)
2336 \begin_layout Itemize
2337 Deprecated: color gui.bitmap_pget(bitmap, ...)
2340 \begin_layout Standard
2344 \begin_layout Itemize
2345 bitmap: DBITMAP: The bitmap to query.
2348 \begin_layout Itemize
2349 x: number: x-coordinate of pixel to get.
2352 \begin_layout Itemize
2353 y: number: y-coordinate of pixel to get.
2356 \begin_layout Standard
2360 \begin_layout Itemize
2361 color: number: The color of specified pixel.
2364 \begin_layout Standard
2365 Gets color index of specified pixel <x>,<y> in bitmap <bitmap>.
2368 \begin_layout Subsubsection
2369 Method size: Get size of bitmap
2372 \begin_layout Itemize
2373 Syntax: width, height bitmap:size()
2376 \begin_layout Itemize
2377 Syntax: width, height gui.bitmap_size(bitmap)
2380 \begin_layout Standard
2384 \begin_layout Itemize
2385 bitmap: DBITMAP: The bitmap to query.
2388 \begin_layout Standard
2392 \begin_layout Itemize
2393 width: number: The width of the bitmap.
2396 \begin_layout Itemize
2397 height: number: The height of the bitmap.
2400 \begin_layout Standard
2401 Get size of bitmap <bitmap>.
2404 \begin_layout Subsubsection
2405 Method blit: Blit a bitmap into another
2408 \begin_layout Itemize
2409 Syntax: dest:blit(dx, dy, src, sx, sy, w, h, [ck])
2412 \begin_layout Itemize
2413 Syntax: dest:blit(dx, dy, src, srcpal, sx, sy, w, h, [ck])
2416 \begin_layout Itemize
2417 Deprecated: gui.bitmap_blit(dest, ...)
2420 \begin_layout Standard
2424 \begin_layout Itemize
2425 dest: DBITMAP: The target bitmap to blit to.
2428 \begin_layout Itemize
2429 dx: number: The x-coordinate in target.
2432 \begin_layout Itemize
2433 dy: number: The y-coordinate in target.
2436 \begin_layout Itemize
2437 src: BITMAP/DBITMAP: The source bitmap.
2440 \begin_layout Itemize
2441 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2444 \begin_layout Itemize
2445 sx: number: The x-coordinate in source.
2448 \begin_layout Itemize
2449 sy: number: The y-coordinate in source.
2452 \begin_layout Itemize
2453 w: number: The width of area to blit.
2456 \begin_layout Itemize
2457 h: number: The height of area to blit.
2460 \begin_layout Itemize
2461 ck: number: The color key.
2462 Pixels with this index are not copied.
2466 \begin_layout Itemize
2467 If none is specified, all pixels are copied.
2470 \begin_layout Itemize
2471 If <src> is paletted, this is color index, otherwise it is a color.
2475 \begin_layout Standard
2476 Copy region of size <w>*<h> at <sx>,<sy> in bitmap <src> (with palette <pal>
2477 if indexed) into <dest> at <dx>,<dy>.
2478 If a color key <ck> is specified, pixels of that color are not copied.
2481 \begin_layout Subsubsection
2482 Method blit_scaled: Blit a bitmap into another with scaling
2485 \begin_layout Itemize
2486 Syntax: dest:blit_scaled(dx, dy, src, sx, sy, w, h, hscl, [vscl], [ck])
2489 \begin_layout Itemize
2490 Syntax: dest:blit_scaled(dx, dy, src, srcpal, sx, sy, w, h, hscl, [vscl],
2494 \begin_layout Itemize
2495 Deprecated: gui.bitmap_blit_scaled(dest, ...)
2498 \begin_layout Standard
2502 \begin_layout Itemize
2503 dest: DBITMAP: The target bitmap to blit to.
2506 \begin_layout Itemize
2507 dx: number: The x-coordinate in target.
2510 \begin_layout Itemize
2511 dy: number: The y-coordinate in target.
2514 \begin_layout Itemize
2515 src: BITMAP/DBITMAP: The source bitmap.
2518 \begin_layout Itemize
2519 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2522 \begin_layout Itemize
2523 sx: number: The x-coordinate in source.
2526 \begin_layout Itemize
2527 sy: number: The y-coordinate in source.
2530 \begin_layout Itemize
2531 w: number: The width of area to blit.
2534 \begin_layout Itemize
2535 h: number: The height of area to blit.
2538 \begin_layout Itemize
2539 hscl: number: Horizontal scale factor (integer).
2542 \begin_layout Itemize
2543 vscl: number: Vertical scale factor (integer).
2544 Defaults to the same as <hscl>.
2547 \begin_layout Itemize
2548 ck: number: The color key.
2549 Pixels with this index are not copied.
2553 \begin_layout Itemize
2554 If none is specified, all pixels are copied.
2557 \begin_layout Itemize
2558 If <src> is paletted, this is color index, otherwise it is a color.
2562 \begin_layout Standard
2563 Like DBITMAP:blit, but also scales the copied part of bitmap (using nearest
2564 neighbor) by factor of <hscl>*<vscl>.
2567 \begin_layout Subsubsection
2568 Method blit_porterduff: Blit a bitmap into another with Porter-Duff composition
2571 \begin_layout Itemize
2572 Syntax: dest:blit_porterduff(dx, dy, src, sx, sy, w, h, operator)
2575 \begin_layout Itemize
2576 Syntax: dest:blit_porterduff(dx, dy, src, srcpal, sx, sy, w, h, operator)
2579 \begin_layout Itemize
2580 Deprecated: gui.bitmap_blit_porterduff(dest, ...)
2583 \begin_layout Standard
2587 \begin_layout Itemize
2588 dest: DBITMAP: The target bitmap to blit to.
2591 \begin_layout Itemize
2592 dx: number: The x-coordinate in target.
2595 \begin_layout Itemize
2596 dy: number: The y-coordinate in target.
2599 \begin_layout Itemize
2600 src: BITMAP/DBITMAP: The source bitmap.
2603 \begin_layout Itemize
2604 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2607 \begin_layout Itemize
2608 sx: number: The x-coordinate in source.
2611 \begin_layout Itemize
2612 sy: number: The y-coordinate in source.
2615 \begin_layout Itemize
2616 w: number: The width of area to blit.
2619 \begin_layout Itemize
2620 h: number: The height of area to blit.
2623 \begin_layout Itemize
2624 operator: string: The operator to use.
2628 \begin_layout Itemize
2629 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2630 DestOut, Clear or Xor.
2634 \begin_layout Standard
2635 Like DBITMAP:blit, but instead of just overwriting, applies specified Porter-Duf
2640 \begin_layout Itemize
2641 In target, fully transparent is background.
2642 In source, either fully transparent (if direct) or index 0 (if paletted)
2643 is treated as background.
2646 \begin_layout Subsubsection
2647 Method blit_scaled_porterduff: Blit a bitmap into another with scaling and
2648 Porter-Duff composition
2651 \begin_layout Itemize
2652 Syntax: dest:blit_scaled_porterduff(dx, dy, src, sx, sy, w, h, hscl, [vscl],
2656 \begin_layout Itemize
2657 Syntax: dest:blit_scaled_porterduff(dx, dy, src, srcpal, sx, sy, w, h, hscl,
2661 \begin_layout Itemize
2662 Deprecated: gui.bitmap_blit_scaled_porterduff(dest, ...)
2665 \begin_layout Standard
2669 \begin_layout Itemize
2670 dest: DBITMAP: The target bitmap to blit to.
2673 \begin_layout Itemize
2674 dx: number: The x-coordinate in target.
2677 \begin_layout Itemize
2678 dy: number: The y-coordinate in target.
2681 \begin_layout Itemize
2682 src: BITMAP/DBITMAP: The source bitmap.
2685 \begin_layout Itemize
2686 srcpal: PALETTE: If <src> is indexed, this is the palette for source.
2689 \begin_layout Itemize
2690 sx: number: The x-coordinate in source.
2693 \begin_layout Itemize
2694 sy: number: The y-coordinate in source.
2697 \begin_layout Itemize
2698 w: number: The width of area to blit.
2701 \begin_layout Itemize
2702 h: number: The height of area to blit.
2705 \begin_layout Itemize
2706 hscl: number: Horizontal scale factor (integer).
2709 \begin_layout Itemize
2710 vscl: number: Vertical scale factor (integer).
2711 Defaults to the same as <hscl>.
2714 \begin_layout Itemize
2715 operator: string: The operator to use.
2719 \begin_layout Itemize
2720 Can be one of: Src, Atop, Over, In, Out, Dest, DestAtop, DestOver, DestIn,
2721 DestOut, Clear or Xor.
2725 \begin_layout Standard
2726 Like DBITMAP:blit_porterduff, but also scales the source by <hscl>*<vscl>
2727 like DBITMAP:blit_scaled.
2730 \begin_layout Subsubsection
2731 Method adjust_transparency: Adjust transparency of bitmap
2734 \begin_layout Itemize
2735 Syntax: bitmap:adjust_transparency(newvalue)
2738 \begin_layout Itemize
2739 Deprecated: gui.adjust_transparency(bitmap, ...)
2742 \begin_layout Standard
2746 \begin_layout Itemize
2747 bitmap: DBITMAP: The bitmap to adjust.
2750 \begin_layout Itemize
2751 Number adj: The factor to multiply opaqueness with times 256.
2754 \begin_layout Standard
2755 Multiply opaqueness of all colors in bitmap <bitmap> by factor of <adj>/256.
2758 \begin_layout Subsubsection
2759 Method save_png: Save a bitmap to PNG
2762 \begin_layout Itemize
2763 Syntax: bitmap:save_png(filename, [base])
2766 \begin_layout Itemize
2767 Syntax: data bitmap:save_png()
2770 \begin_layout Itemize
2772 gui.bitmap_save_png(bitmap, ...)
2775 \begin_layout Standard
2779 \begin_layout Itemize
2780 bitmap: DBITMAP: The bitmap to save.
2783 \begin_layout Itemize
2784 filename: string: The filename to save to.
2787 \begin_layout Itemize
2788 base: string: The base filename is resolved relative to.
2791 \begin_layout Standard
2795 \begin_layout Itemize
2796 data: string: BASE64 encoded PNG data.
2799 \begin_layout Standard
2800 Save bitmap <bitmap> into PNG file <filename> (relative to <base>) or return
2801 BASE64 encoding of it.
2804 \begin_layout Subsubsection
2805 Method hash: Hash a bitmap
2808 \begin_layout Itemize
2809 Syntax: hash bitmap:hash()
2812 \begin_layout Itemize
2813 Deprecated: hash bitmap:hash(bitmap)
2816 \begin_layout Standard
2820 \begin_layout Itemize
2821 bitmap: DBITMAP: The bitmap to hash.
2824 \begin_layout Standard
2828 \begin_layout Itemize
2829 hash: string: 64-hex digit hash
2832 \begin_layout Standard
2833 Hashes bitmap <bitmap> and returns crypto-strong hash.
2837 \begin_layout Subsection
2838 IMAGELOADER: Load an image
2841 \begin_layout Subsubsection
2842 Static function load: Load a bitmap from file
2845 \begin_layout Itemize
2846 Syntax: bitmap, palette gui.image.load(file, [base])
2849 \begin_layout Itemize
2850 Syntax: bitmap, palette classes.IMAGELOADER.load(file, [base])
2853 \begin_layout Itemize
2855 gui.bitmap_load(...)
2858 \begin_layout Standard
2862 \begin_layout Itemize
2863 file: string: The file to read.
2866 \begin_layout Itemize
2867 base: string: The base to resolve <file> relative to.
2870 \begin_layout Standard
2874 \begin_layout Itemize
2875 bitmap: BITMAP/DBITMAP: The new bitmap
2878 \begin_layout Itemize
2879 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2883 \begin_layout Standard
2884 Load a new bitmap and return it (plus associated palette if any).
2887 \begin_layout Subsubsection
2888 Static function load_str: Load a bitmap from string
2891 \begin_layout Itemize
2892 Syntax: bitmap, palette gui.image.load_str(data)
2895 \begin_layout Itemize
2896 Syntax: bitmap, palette classes.IMAGELOADER.load_str(data)
2899 \begin_layout Itemize
2901 gui.bitmap_load_str(...)
2904 \begin_layout Standard
2908 \begin_layout Itemize
2909 data: string: The image data
2912 \begin_layout Standard
2916 \begin_layout Itemize
2917 bitmap: BITMAP/DBITMAP: The new bitmap
2920 \begin_layout Itemize
2921 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2925 \begin_layout Standard
2926 Like IMAGELOADER:load, but read the bitmap from string <data> instead of
2930 \begin_layout Subsubsection
2931 Static function load_png: Load a bitmap from PNG file
2934 \begin_layout Itemize
2935 Syntax: bitmap, palette gui.image.load_png(file, [base])
2938 \begin_layout Itemize
2939 Syntax: bitmap, palette classes.IMAGELOADER.load_png(file, [base])
2942 \begin_layout Itemize
2944 gui.bitmap_load_png(...)
2947 \begin_layout Standard
2951 \begin_layout Itemize
2952 file: string: The file to read.
2955 \begin_layout Itemize
2956 base: string: The base to resolve <file> relative to.
2959 \begin_layout Standard
2963 \begin_layout Itemize
2964 bitmap: BITMAP/DBITMAP: The new bitmap
2967 \begin_layout Itemize
2968 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
2972 \begin_layout Standard
2973 Like IMAGELOADER:load, but load a PNG file instead.
2976 \begin_layout Subsubsection
2977 Static function load_png_str: Load a PNG bitmap from string
2980 \begin_layout Itemize
2981 Syntax: bitmap, palette gui.image.load_png_str(data)
2984 \begin_layout Itemize
2985 Syntax: bitmap, palette classes.IMAGELOADER.load_png_str(data)
2988 \begin_layout Itemize
2990 gui.bitmap_load_png_str(...)
2993 \begin_layout Standard
2997 \begin_layout Itemize
2998 data: string: The image data, base64 encoded.
3001 \begin_layout Standard
3005 \begin_layout Itemize
3006 bitmap: BITMAP/DBITMAP: The new bitmap
3009 \begin_layout Itemize
3010 palette: PALETTE: If bitmap is paletted, this is the palette, otherwise
3014 \begin_layout Standard
3015 Like IMAGELOADER:load_png, but read the bitmap from BASE64 encoded string
3016 <data> instead of file.
3019 \begin_layout Standard
3020 \begin_inset Newpage pagebreak
3026 \begin_layout Subsection
3027 CUSTOMFONT: Arbitrary-sized bitmap font
3030 \begin_layout Subsubsection
3031 Static function new: Return a new empty font
3034 \begin_layout Itemize
3035 Syntax: font gui.font.new()
3038 \begin_layout Itemize
3039 Syntax: font classes.CUSTOMFONT.new()
3042 \begin_layout Itemize
3043 Deprecated: font gui.font_new()
3046 \begin_layout Standard
3050 \begin_layout Itemize
3051 font: CUSTOMFONT: New font.
3054 \begin_layout Standard
3055 Create a new font with no characters and return it.
3058 \begin_layout Subsubsection
3059 Static function: load: Load a font file
3062 \begin_layout Itemize
3063 Syntax: font gui.font.load(file, [base])
3066 \begin_layout Itemize
3067 Syntax: font gui.font.load()
3070 \begin_layout Itemize
3071 Syntax: font classes.CUSTOMFONT.load(file, [base])
3074 \begin_layout Itemize
3075 Syntax: font classes.CUSTOMFONT.load()
3078 \begin_layout Itemize
3079 Deprecated: font gui.loadfont(...)
3082 \begin_layout Standard
3086 \begin_layout Itemize
3087 file: string: The file to read the font from
3090 \begin_layout Itemize
3091 base: string: The file to resolve <file> relative to.
3094 \begin_layout Standard
3098 \begin_layout Itemize
3099 font: CUSTOMFONT: New font.
3102 \begin_layout Standard
3103 Load font from file <file> (relative to <base>).
3104 If no filename is given, system default font is loaded.
3107 \begin_layout Subsubsection
3108 operator(): Render text to screen
3111 \begin_layout Itemize
3112 Syntax: font(x, y, text, [fgc], [bgc], [hlc])
3115 \begin_layout Standard
3119 \begin_layout Itemize
3120 font: CUSTOMFONT: The font to use.
3123 \begin_layout Itemize
3124 x: number: The x-position on screen to draw to.
3127 \begin_layout Itemize
3128 y: number: The y-position on screen to draw to.
3131 \begin_layout Itemize
3132 text: string: The text to draw.
3135 \begin_layout Itemize
3136 fgc: number/string: Foreground color (default white).
3139 \begin_layout Itemize
3140 bgc: number/string: Background color (default transparent).
3143 \begin_layout Itemize
3144 hlc: number/string: Outline color (default transparent).
3147 \begin_layout Standard
3148 Draws a string <text> with specified font <font> and colors <fgc>,<bgc>,<hlc>
3152 \begin_layout Itemize
3153 If <hlc> is transparent, no outline is drawn.
3156 \begin_layout Subsubsection
3157 Method edit: Alter glyph in font
3160 \begin_layout Itemize
3161 Syntax: font:edit(character, glyph)
3164 \begin_layout Standard
3168 \begin_layout Itemize
3169 font: CUSTOMFONT: The font to edit.
3172 \begin_layout Itemize
3173 character: string: The character to edit (UTF-8 encoded).
3176 \begin_layout Itemize
3177 glyph: BITMAP: The bitmap to use.
3180 \begin_layout Standard
3181 Replace character <character> in font <font> by <glyph>.
3184 \begin_layout Itemize
3185 Color index 0 is background, everything else is foreground.
3188 \begin_layout Itemize
3189 <character> may be empty string, meaning the replacement character used
3193 \begin_layout Itemize
3194 <character> may be multi-codepoint string, meaning character used for that
3198 \begin_layout Standard
3199 \begin_inset Newpage pagebreak
3205 \begin_layout Subsection
3206 ICONV: Character set conversions
3209 \begin_layout Subsubsection
3210 Static function new: Create new character set converter
3213 \begin_layout Itemize
3214 Syntax: iconv iconv.new(from, to);
3217 \begin_layout Itemize
3218 Syntax: iconv classes.ICONV.new(from, to);
3221 \begin_layout Itemize
3222 Deprecated: iconv iconv_new(...);
3225 \begin_layout Standard
3229 \begin_layout Itemize
3230 from: string: The source character set.
3233 \begin_layout Itemize
3234 to: string: The target character set.
3237 \begin_layout Standard
3241 \begin_layout Itemize
3242 iconv: ICONV: The converter.
3245 \begin_layout Standard
3246 Create a character set converter, converting from <from> to <to> and return
3250 \begin_layout Subsubsection
3251 Operator(): Convert string fragment from character set to another
3254 \begin_layout Itemize
3255 Syntax: success, result, unconverted, error iconv(input)
3258 \begin_layout Standard
3262 \begin_layout Itemize
3263 iconv: ICONV: The context to use.
3266 \begin_layout Itemize
3267 input: string: The input to convert.
3270 \begin_layout Standard
3274 \begin_layout Itemize
3275 success: boolean: True if conversion was successful, false if not.
3278 \begin_layout Itemize
3279 result: string: The string (partially) converted.
3282 \begin_layout Itemize
3283 unconvered: number: Number of bytes that were not converted (only if <success>
3287 \begin_layout Itemize
3288 error: string: Error that caused conversion to stop (only if <success> is
3293 \begin_layout Itemize
3294 INVALID: The input string is invalid.
3297 \begin_layout Itemize
3298 INCOMPLETE: The input string cuts off in middle of character.
3301 \begin_layout Itemize
3302 INTERNALERR: Internal error.
3306 \begin_layout Standard
3307 Convert a string <input> using character set converter <iconv> and return
3311 \begin_layout Standard
3312 \begin_inset Newpage pagebreak
3318 \begin_layout Subsection
3319 FILEREADER: Read a file as a stream
3322 \begin_layout Subsubsection
3323 Static function open: Open a stream
3326 \begin_layout Itemize
3327 Syntax: handle filereader.open(file, [base])
3330 \begin_layout Itemize
3331 Syntax: handle classes.FILEREADER.open(file, [base])
3334 \begin_layout Itemize
3335 Deprecated: handle open_file(file, [base])
3338 \begin_layout Standard
3342 \begin_layout Itemize
3343 file: string: The filename to read.
3346 \begin_layout Itemize
3347 base: string: The base <file> is resolved against.
3350 \begin_layout Standard
3354 \begin_layout Itemize
3355 handle: FILEREADER: The new file reader.
3358 \begin_layout Standard
3359 Open file <file> (relative to <base>) and return a handle to it.
3362 \begin_layout Subsubsection
3363 operator(): Read line/bytes from stream
3366 \begin_layout Itemize
3367 Syntax: result handle()
3370 \begin_layout Itemize
3371 Syntax: result handle(bytes)
3374 \begin_layout Standard
3378 \begin_layout Itemize
3379 handle: FILEREADER: The handle to read from.
3382 \begin_layout Itemize
3383 bytes: Number of bytes to read (default is next line).
3386 \begin_layout Standard
3390 \begin_layout Itemize
3391 result: string: The read data, or nil on end-of-file.
3394 \begin_layout Standard
3395 Reads next line or <bytes> bytes from specified file handle <handle>.
3398 \begin_layout Itemize
3399 If reading specified number of bytes, the bytes are read in binary mode
3403 \begin_layout Itemize
3404 If reading next line, the line is read in text mode (any line ending is
3408 \begin_layout Subsubsection
3409 Method lines: Iterator to read all lines
3412 \begin_layout Itemize
3413 Syntax: for line in handle:lines() do ...
3417 \begin_layout Standard
3421 \begin_layout Itemize
3422 handle: FILEREADER: The handle to read.
3425 \begin_layout Standard
3429 \begin_layout Itemize
3430 A lua iterator with one variable.
3433 \begin_layout Standard
3434 Return a Lua iterator that iterates all the lines in <handle>.
3437 \begin_layout Standard
3438 \begin_inset Newpage pagebreak
3444 \begin_layout Subsection
3445 COMPARE_OBJ: Watch memory area for changes
3448 \begin_layout Standard
3449 Objects of this class allow fast checking for modifications to given memory
3453 \begin_layout Subsubsection
3454 Static function new: Create a checker
3457 \begin_layout Itemize
3458 Syntax: handle classes.COMPARE_OBJ.new([marea], offset, size, [rows, stride])
3461 \begin_layout Itemize
3462 Syntax: handle open_file([marea], offset, size, rows, stride)
3465 \begin_layout Standard
3469 \begin_layout Itemize
3470 marea: string: The memory area to interpret <offset> against.
3471 Default is global space.
3474 \begin_layout Itemize
3475 offset: number: The initial offset in memory area.
3478 \begin_layout Itemize
3479 size: number: The number of bytes in each row.
3482 \begin_layout Itemize
3483 rows: number: The number of rows.
3487 \begin_layout Itemize
3488 stride: number: The number of bytes offset increments from one row to next.
3491 \begin_layout Standard
3495 \begin_layout Itemize
3499 \begin_layout Standard
3500 Return an object watching specified memory area.
3503 \begin_layout Itemize
3504 Note: For fastest operation, limit checks to inside one memory area (that
3505 has to be mappable, individual RAM areas often are).
3508 \begin_layout Subsubsection
3509 operator(): Check area for modifications
3512 \begin_layout Itemize
3513 Syntax: boolean handle()
3516 \begin_layout Standard
3520 \begin_layout Itemize
3521 True if memory block has been modified since last call (or object creation
3522 if first call), false if not.
3525 \begin_layout Standard
3526 Check if the block has been modified.
3529 \begin_layout Standard
3530 \begin_inset Newpage pagebreak
3536 \begin_layout Section
3540 \begin_layout Subsection
3541 print: Print values to console
3544 \begin_layout Itemize
3545 Syntax: none print(value...
3549 \begin_layout Standard
3550 Prints specified values to console.
3551 Can print any Lua type at least enough to identify the type and instance.
3554 \begin_layout Subsection
3555 tostringx: Format a value to string
3558 \begin_layout Itemize
3559 Syntax: string tostringx(value val)
3562 \begin_layout Standard
3563 Formats value <val> like print would, and returns the result as a string.
3566 \begin_layout Subsection
3567 exec: Execute lsnes commands
3570 \begin_layout Itemize
3571 Syntax: none exec(string cmd)
3574 \begin_layout Standard
3575 Execute lsnes command <cmd>.
3578 \begin_layout Subsection
3579 utime: Get current time
3582 \begin_layout Itemize
3583 Syntax: (number,number) utime()
3586 \begin_layout Standard
3587 Returns two numbers.
3588 First is time since some epoch in seconds, the second is microseconds mod
3589 10^6 since that epoch.
3592 \begin_layout Subsection
3593 set_idle_timeout: Run function after timeout when emulator is idle
3596 \begin_layout Itemize
3597 Syntax: none set_idle_timeout(number timeout)
3600 \begin_layout Standard
3601 Set number of microseconds to block idle for.
3602 After this timeout has expired, on_idle() will be called once.
3605 \begin_layout Subsection
3606 set_timer_timeout: Run function after timeout.
3609 \begin_layout Itemize
3610 Syntax: none set_timer_timeout(number timeout)
3613 \begin_layout Standard
3614 Set number of microseconds to block timer for.
3615 After this timeout has expired, on_timer() will be called once.
3618 \begin_layout Subsection
3619 bus_address: Look up address in system bus.
3622 \begin_layout Itemize
3623 Syntax: none bus_address(number bus_addr)
3626 \begin_layout Standard
3627 Returns virtual address corresponding to specified address on system bus.
3630 \begin_layout Subsection
3631 loopwrapper: Convert loop into callable function
3634 \begin_layout Itemize
3635 Syntax: function loopwrapper(function fun, ...)
3638 \begin_layout Standard
3639 Calls function <fun> with function and specified arguments.
3640 The function passed suspends execution until the function returned is called.
3641 Handy for linear flow control among multiple invocations of a hook.
3645 \begin_layout LyX-Code
3646 on_paint = loopwrapper(function(wait)
3650 \begin_layout LyX-Code
3655 \begin_layout LyX-Code
3657 \begin_inset Quotes eld
3661 \begin_inset Quotes erd
3667 \begin_layout LyX-Code
3672 \begin_layout LyX-Code
3677 \begin_layout LyX-Code
3681 \begin_layout Subsection
3682 list_bindings: List keybindings
3685 \begin_layout Itemize
3686 Syntax: table list_bindings([string cmd])
3689 \begin_layout Standard
3690 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
3691 If <cmd> is specified, the table is limited to that command.
3692 Also searches for controller keys.
3695 \begin_layout Subsection
3696 get_alias: Get expansion of alias
3699 \begin_layout Itemize
3700 Syntax: string get_alias(string aname)
3703 \begin_layout Standard
3704 Get expansion of given alias <aname>.
3707 \begin_layout Subsection
3708 set_alias: Set expansion of alias
3711 \begin_layout Itemize
3712 Syntax: none set_alias(string aname, string value)
3715 \begin_layout Standard
3716 Set expansion of given alias.
3719 \begin_layout Subsection
3720 create_ibind: Create invese binding
3723 \begin_layout Itemize
3724 Syntax: INVERSEBIND create_ibind(string name, string cmd)
3727 \begin_layout Standard
3728 Return object representing inverse binding with specified name <name> and
3729 specified command <cmd>.
3732 \begin_layout Itemize
3733 Note: To create press/release commands, use aliases +foo and -foo .
3736 \begin_layout Itemize
3737 Note: Keep the returned object around.
3740 \begin_layout Subsection
3741 create_command: Create a command
3744 \begin_layout Itemize
3745 Syntax: COMMANDBIND create_commmand(string name, function a)
3748 \begin_layout Itemize
3749 Syntax: COMMANDBIND create_commmand(string name, function a, function b)
3752 \begin_layout Standard
3753 Return object representing a command (pair).
3756 \begin_layout Itemize
3757 If only one function is specied, the command is level-sensitive, <a> is
3761 \begin_layout Itemize
3762 If <b> is function, the function is edge-sensitive, <a> is positive edge
3763 callback and <b> is negative edge callback.
3766 \begin_layout Itemize
3767 All callbacks get single argument: The parameters passed.
3770 \begin_layout Itemize
3771 Keep the returned object around.
3774 \begin_layout Subsection
3775 loadfile: Load Lua script
3778 \begin_layout Itemize
3779 Syntax: function loadfile(string filename[, string base])
3782 \begin_layout Standard
3783 Load lua script from <filename>, resolved relative to <base> (if empty,
3787 \begin_layout Subsection
3788 dofile: Execute Lua script
3791 \begin_layout Itemize
3792 Syntax: function dofile(string filename[, string base])
3795 \begin_layout Standard
3796 Execute lua script from <filename>, resolved relative to <base> (if empty,
3797 current directory) and return all return values.
3800 \begin_layout Subsection
3801 resolve_filename: Resolve name of file relative to another
3804 \begin_layout Itemize
3805 Syntax: string resolve_file(string filename, string base)
3808 \begin_layout Standard
3809 Resolve name of file <filename> relative to <base> and return the result.
3812 \begin_layout Subsection
3813 render_queue_function: Return paint function for render queue
3816 \begin_layout Itemize
3817 Syntax: function render_queue_function(RENDERQUEUE rq)
3820 \begin_layout Standard
3821 Return function that renders render queue <rq>.
3824 \begin_layout Itemize
3825 Handy for paint callback if one is using render queues updated in other
3830 \begin_layout LyX-Code
3831 handle = callback.paint:register(render_queue_function(my_rq));
3834 \begin_layout Subsection
3835 identify_class: Identify class of object
3838 \begin_layout Itemize
3839 Syntax: string identify_class(userdata object)
3842 \begin_layout Standard
3843 Identifies the class of userdata <object>, if possible.
3844 If no identification is possible, returns
3845 \begin_inset Quotes eld
3849 \begin_inset Quotes erd
3855 \begin_layout Subsection
3856 lookup_class: Lookup class by name
3859 \begin_layout Itemize
3860 Syntax: classobj lookup_class(string name)
3863 \begin_layout Standard
3864 Looks up class corresponding to <name>, if possible.
3865 If not found, returns nil.
3866 The classobj has following fields:
3869 \begin_layout Itemize
3870 _static_methods: Return static method names
3873 \begin_layout Itemize
3874 _class_methods: Return class method names
3877 \begin_layout Itemize
3878 <static-function-name>: The specified static function.
3881 \begin_layout Subsection
3882 all_classes: Get list of all classes
3885 \begin_layout Itemize
3890 \begin_layout Standard
3891 Get names of all classes available.
3894 \begin_layout Subsection
3898 \begin_layout Standard
3902 \begin_layout Subsection
3903 filereader: Class FILEREADER
3906 \begin_layout Standard
3907 See class FILEREADER.
3910 \begin_layout Standard
3911 \begin_inset Newpage pagebreak
3917 \begin_layout Section
3921 \begin_layout Standard
3922 Bitwise logical functions and related.
3925 \begin_layout Subsection
3926 bit.none/bit.bnot: Bitwise none or NOT function
3929 \begin_layout Itemize
3930 Syntax: number bit.none(number...)
3933 \begin_layout Itemize
3934 Syntax: number bit.bnot(number...)
3937 \begin_layout Standard
3938 48-bit bitwise NOT / NONE function (set bits that are set in none of the
3942 \begin_layout Subsection
3943 bit.any/bit.bor: Bitwise any or OR function
3946 \begin_layout Itemize
3947 Syntax: number bit.any(number...)
3950 \begin_layout Itemize
3951 Syntax: number bit.bor(number...)
3954 \begin_layout Standard
3955 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
3958 \begin_layout Subsection
3959 bit.all/bit.band: Bitwise all or AND function
3962 \begin_layout Itemize
3963 Syntax: number bit.all(number...)
3966 \begin_layout Itemize
3967 Syntax: number bit.band(number...)
3970 \begin_layout Standard
3971 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
3975 \begin_layout Subsection
3976 bit.parity/bit.bxor: Bitwise parity or XOR function
3979 \begin_layout Itemize
3980 Syntax: number bit.parity(number...)
3983 \begin_layout Itemize
3984 Syntax: number bit.bxor(number...)
3987 \begin_layout Standard
3988 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
3992 \begin_layout Subsection
3993 bit.lrotate: Rotate a number left
3996 \begin_layout Itemize
3997 Syntax: number bit.lrotate(number base[, number amount[, number bits]])
4000 \begin_layout Standard
4001 Rotate <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4005 \begin_layout Subsection
4006 bit.rrotate: Rotate a number right
4009 \begin_layout Itemize
4010 Syntax: number bit.rrotate(number base[, number amount[, number bits]])
4013 \begin_layout Standard
4014 Rotate <bits>-bit (max 48, default 48) number <base> right by <amount> (default
4018 \begin_layout Subsection
4019 bit.lshift: Shift a number left
4022 \begin_layout Itemize
4023 Syntax: number bit.lshift(number base[, number amount[, number bits]])
4026 \begin_layout Standard
4027 Shift <bits>-bit (max 48, default 48) number <base> left by <amount> (default
4029 The new bits are filled with zeroes.
4032 \begin_layout Subsection
4033 bit.lrshift: Shift a number right (logical)
4036 \begin_layout Itemize
4037 Syntax: number bit.lrshift(number base[, number amount[, number bits]])
4040 \begin_layout Standard
4041 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4043 The new bits are filled with zeroes.
4046 \begin_layout Subsection
4047 bit.arshift: Shift a number right (arithmetic)
4050 \begin_layout Itemize
4051 Syntax: number bit.arshift(number base[, number amount[, number bits]])
4054 \begin_layout Standard
4055 Shift <bits>-bit (max 48, default 48) number <base> logically right by <amount>
4057 The new bits are shifted in with copy of the high bit.
4060 \begin_layout Subsection
4061 bit.extract: Extract/shuffle bits from number
4064 \begin_layout Itemize
4065 Syntax: number bit.extract(number base[, number bit0[, number bit1,...]])
4068 \begin_layout Standard
4069 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
4072 \begin_layout Itemize
4073 Note: Bit numbers up to 51 should work reliably (then things start falling
4074 apart due to double precision issues).
4077 \begin_layout Itemize
4078 Note: There are two special bit positions, true and false, standing for
4079 always set bit and always clear bit.
4082 \begin_layout Subsection
4083 bit.value: Construct number with specified bits set
4086 \begin_layout Itemize
4087 Syntax: number bit.value([number bit1[, number bit2,...]])
4090 \begin_layout Standard
4091 Returns bitwise OR of 1 left shifted by <bit1> places, 1 left shifted by
4092 <bit2> places and so on.
4093 As special value, nil argument is no-op.
4096 \begin_layout Subsection
4097 bit.test_any: Test if any bit is set
4100 \begin_layout Itemize
4101 Syntax: boolean bit.test_any(number a, number b)
4104 \begin_layout Standard
4105 Returns true if bitwise and of <a> and <b> is nonzero, otherwise false.
4108 \begin_layout Subsection
4109 bit.test_all: Test if all bits are set
4112 \begin_layout Itemize
4113 Syntax: boolean bit.test_all(number a, number b)
4116 \begin_layout Standard
4117 Returns true if bitwise and of <a> and <b> equals <b>, otherwise false.
4120 \begin_layout Subsection
4121 bit.popcount: Population count
4124 \begin_layout Itemize
4125 Syntax: number bit.popcount(number a)
4128 \begin_layout Standard
4129 Returns number of set bits in <a>.
4132 \begin_layout Subsection
4133 bit.clshift: Chained left shift
4136 \begin_layout Itemize
4137 Syntax: (number, number) bit.clshift(number a, number b, [number amount,[number
4141 \begin_layout Standard
4142 Does chained left shift on <a>, <b> by <amount> positions (default 1), assuming
4143 numbers to be of specified number of bits <bits> (default 48).
4146 \begin_layout Subsection
4147 bit.crshift: Chained right shift
4150 \begin_layout Itemize
4151 Syntax: (number, number) bit.crshift(number a, number b, [number amount,[number
4155 \begin_layout Standard
4156 Does chained right shift on <a>, <b> by <amount> positions (default 1),
4157 assuming numbers to be of specified number of bits <bits> (default 48).
4160 \begin_layout Subsection
4161 bit.flagdecode: Decode bitfield into flags
4164 \begin_layout Itemize
4165 Syntax: string bit.flagdecode(number a, number bits, [string on, [string
4169 \begin_layout Standard
4170 Return string of length bits where ith character is ith character of on
4171 if bit i is on, otherwise ith character of off.
4172 Out of range reads give last character.
4175 \begin_layout Itemize
4176 Note: <on> defaults to '*' if empty.
4179 \begin_layout Itemize
4180 Note: <off> defaults to '-' if empty.
4183 \begin_layout Subsection
4184 bit.rflagdecode: Decode bitfield into flags
4187 \begin_layout Itemize
4188 Syntax: string bit.rflagdecode(number a, number bits, [string on, [string
4192 \begin_layout Standard
4193 Like bit.flagdecode, but outputs the string in the opposite order (most significa
4197 \begin_layout Subsection
4198 bit.swap{,s}{,h,d,q}word: Swap word endian
4201 \begin_layout Itemize
4202 Syntax: number bit.swapword(number n)
4205 \begin_layout Itemize
4206 Syntax: number bit.swaphword(number n)
4209 \begin_layout Itemize
4210 Syntax: number bit.swapdword(number n)
4213 \begin_layout Itemize
4214 Syntax: number bit.swapqword(number n)
4217 \begin_layout Itemize
4218 Syntax: number bit.swapsword(number n)
4221 \begin_layout Itemize
4222 Syntax: number bit.swapshword(number n)
4225 \begin_layout Itemize
4226 Syntax: number bit.swapsdword(number n)
4229 \begin_layout Itemize
4230 Syntax: number bit.swapsqword(number n)
4233 \begin_layout Standard
4234 Swap endianess of (un)signed integer <n>.
4237 \begin_layout Subsection
4238 bit.compose: Compose multi-byte number
4241 \begin_layout Itemize
4242 Syntax: number bit.compose(number n...)
4245 \begin_layout Standard
4247 \begin_inset Formula $n_{1}+256n_{2}+256^{2}n_{3}+\ldots$
4253 \begin_layout Subsection
4254 bit.binary_ld_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Load binary integer
4257 \begin_layout Itemize
4258 Syntax: number bit.binary_ld_<type>le(string str, number pos);
4261 \begin_layout Itemize
4262 Syntax: number bit.binary_ld_<type>be(string str, number pos);
4265 \begin_layout Standard
4266 Load little (*le) or big (*be) endian binary number from position <pos>
4268 Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4272 \begin_layout Subsection
4273 bit.binary_st_{{u,s}{8,16,24,32,64},float,double}{l,b}e: Store binary integer
4276 \begin_layout Itemize
4277 Syntax: string bit.binary_st_<type>le(number x);
4280 \begin_layout Itemize
4281 Syntax: string bit.binary_st_<type>be(number x);
4284 \begin_layout Standard
4285 Store specified number <x> as binary in string and return the result.
4286 Type may be one of: u8, u16, u24, u32, u64, s8, s16, s24, s32, s64, float,
4290 \begin_layout Subsection
4291 bit.quotent: Integer quotent
4294 \begin_layout Itemize
4295 Syntax: number bit.quotent(number a, number b)
4298 \begin_layout Standard
4299 Calculate quotent a/b.
4302 \begin_layout Standard
4303 \begin_inset Newpage pagebreak
4309 \begin_layout Section
4313 \begin_layout Subsection
4314 classes.<foo>: The classobj for class <foo>
4317 \begin_layout Itemize
4318 Syntax: classes.<foo>
4321 \begin_layout Standard
4322 The classobj for class <foo>.
4325 \begin_layout Subsection
4326 classes.<foo>._static_methods: Enumerate static methods
4329 \begin_layout Itemize
4331 classes.<foo>._static_methods()
4334 \begin_layout Standard
4335 Returns all static methods of <foo> as strings.
4338 \begin_layout Subsection
4339 classes.<foo>._class_methods: Enumerate static methods
4342 \begin_layout Itemize
4344 classes.<foo>._class_methods()
4347 \begin_layout Standard
4348 Returns all class methods of <foo> as strings.
4351 \begin_layout Subsection
4352 classes.<foo>.<bar>: Static method
4355 \begin_layout Itemize
4356 Syntax: variable classes.<foo>.<bar>(variable...)
4359 \begin_layout Standard
4360 Invokes static method <bar> of class <foo>.
4363 \begin_layout Section
4367 \begin_layout Subsection
4368 gui.resolution: Get current resolution
4371 \begin_layout Itemize
4372 Syntax: (number, number) gui.resolution()
4375 \begin_layout Standard
4376 Returns 2-tuple (hresolution, vresolution).
4379 \begin_layout Subsection
4380 gui.left_gap/gui.right_gap/gui.top_gap/gui.bottom_gap: Set edge gaps
4383 \begin_layout Itemize
4384 Syntax: number gui.left_gap(number gap)
4387 \begin_layout Itemize
4388 Syntax: number gui.right_gap(number gap)
4391 \begin_layout Itemize
4392 Syntax: number gui.top_gap(number gap)
4395 \begin_layout Itemize
4396 Syntax: number gui.bottom_gap(number gap)
4399 \begin_layout Standard
4400 Set the specified edge gap to specified value <gap> (max gap is 8191).
4401 If successful, old gap is returned.
4404 \begin_layout Subsection
4405 gui.delta_left_gap/gui.delta_right_gap/gui.delta_top_gap/gui.delta_bottom_gap:
4409 \begin_layout Itemize
4410 Syntax: number gui.delta_left_gap(number dgap)
4413 \begin_layout Itemize
4414 Syntax: number gui.delta_right_gap(number dgap)
4417 \begin_layout Itemize
4418 Syntax: number gui.delta_top_gap(number dgap)
4421 \begin_layout Itemize
4422 Syntax: number gui.delta_bottom_gap(number dgap)
4425 \begin_layout Standard
4426 Increase the specified edge gap by specified value <dgap> (max gap is 8191)
4427 and return the old gap (returns nothing on error).
4430 \begin_layout Subsection
4431 gui.text/gui.textH/gui.textV,gui.textHV: Draw text
4434 \begin_layout Itemize
4435 Syntax: none gui.text(number x, number y, string text[, number fgc[, number
4439 \begin_layout Itemize
4440 Syntax: none gui.textH(number x, number y, string text[, number fgc[, number
4444 \begin_layout Itemize
4445 Syntax: none gui.textV(number x, number y, string text[, number fgc[, number
4449 \begin_layout Itemize
4450 Syntax: none gui.textHV(number x, number y, string text[, number fgc[, number
4454 \begin_layout Standard
4455 Draw specified text on the GUI (each character cell is 8 or 16 wide and
4460 \begin_layout Itemize
4461 x: X-coordinate to start the drawing from (and x-coordinate at begining
4465 \begin_layout Itemize
4466 y: Y-coordinate to start the drawing from.
4469 \begin_layout Itemize
4470 text: The text to draw.
4473 \begin_layout Itemize
4474 fgc: Text color (default is 0xFFFFFF (white))
4477 \begin_layout Itemize
4478 bgc: Background color (default is -1 (transparent))
4481 \begin_layout Standard
4482 Note: The H variants draw at double width and V variants draw at double
4486 \begin_layout Subsection
4487 gui.rectangle: Draw a rectangle
4490 \begin_layout Itemize
4491 Syntax: none gui.rectangle(number x, number y, number width, number height[,
4492 number thickness[, number outline[, number fill]]])
4495 \begin_layout Standard
4496 Draw rectangle on the GUI.
4500 \begin_layout Itemize
4501 x: X-coordinate of left edge.
4504 \begin_layout Itemize
4505 y: Y-coordinate of upper edge.
4508 \begin_layout Itemize
4509 width: Width of rectangle.
4512 \begin_layout Itemize
4513 height: Height of rectangle.
4516 \begin_layout Itemize
4517 thickness: Thickness of outline (default is 1).
4520 \begin_layout Itemize
4521 outline: Color of outline (default is 0xFFFFFF (white))
4524 \begin_layout Itemize
4525 fill: Color of fill (default is -1 (transparent))
4528 \begin_layout Subsection
4529 gui.box: Draw a 3D-effect box
4532 \begin_layout Itemize
4533 Syntax: none gui.box(number x, number y, number width, number height[, number
4534 thickness[, number outline1[,number outline2[, number fill]]]])
4537 \begin_layout Standard
4538 Draw rectangle with 3D effect on the GUI.
4542 \begin_layout Itemize
4543 x: X-coordinate of left edge.
4546 \begin_layout Itemize
4547 y: Y-coordinate of upper edge.
4550 \begin_layout Itemize
4551 width: Width of rectangle.
4554 \begin_layout Itemize
4555 height: Height of rectangle.
4558 \begin_layout Itemize
4559 thickness: Thickness of outline (default is 1).
4562 \begin_layout Itemize
4563 outline1: First color of outline (default is 0xFFFFFF (white))
4566 \begin_layout Itemize
4567 outline2: First color of outline (default is 0x808080 (dark gray))
4570 \begin_layout Itemize
4571 fill: Color of fill (default is 0xC0C0C0 (light grayy))
4574 \begin_layout Subsection
4575 gui.pixel: Draw a single pixel
4578 \begin_layout Itemize
4579 Syntax: none gui.pixel(number x, number y[, number color])
4582 \begin_layout Standard
4583 Draw one pixel on the GUI.
4587 \begin_layout Itemize
4588 x: X-coordinate of the pixel
4591 \begin_layout Itemize
4592 y: Y-coordinate of the pixel
4595 \begin_layout Itemize
4596 color: Color of the pixel (default is 0xFFFFFF (white))
4599 \begin_layout Subsection
4600 gui.crosshair: Draw a crosshair
4603 \begin_layout Itemize
4604 Syntax: none gui.crosshair(number x, number y[, number length[, number color]])
4607 \begin_layout Standard
4612 \begin_layout Itemize
4613 x: X-coordinate of the crosshair
4616 \begin_layout Itemize
4617 y: Y-coordinate of the crosshair
4620 \begin_layout Itemize
4621 length: Length of the crosshair lines (default 10).
4624 \begin_layout Itemize
4625 color: Color of the crosshair (default is 0xFFFFFF (white))
4628 \begin_layout Subsection
4629 gui.line: Draw a line
4632 \begin_layout Itemize
4633 Syntax: none gui.line(number x1, number y1, number x2, number y2[, number
4637 \begin_layout Standard
4642 \begin_layout Itemize
4643 x1: X-coordinate of one end.
4646 \begin_layout Itemize
4647 y1: Y-coordinate of one end.
4650 \begin_layout Itemize
4651 x2: X-coordinate of the other end.
4654 \begin_layout Itemize
4655 y2: Y-coordinate of the other end.
4658 \begin_layout Itemize
4659 color: Color of the line (default is 0xFFFFFF (white)).
4662 \begin_layout Subsection
4663 gui.circle: Draw a (filled) circle
4666 \begin_layout Itemize
4667 Syntax: none gui.circle(number x, number y, number r[, number thick[, number
4668 border[, number fil]]])
4671 \begin_layout Standard
4676 \begin_layout Itemize
4677 x: X-coordinate of the center
4680 \begin_layout Itemize
4681 y: Y-coordinate of the center
4684 \begin_layout Itemize
4685 r: The radius of the circle
4688 \begin_layout Itemize
4689 thick: Border thickness
4692 \begin_layout Itemize
4693 border: Border color (default is 0xFFFFFF (white))
4696 \begin_layout Itemize
4697 fill: Fill color (default is -1 (transparent)).
4700 \begin_layout Subsection
4701 gui.repaint: Arrange a repaint
4704 \begin_layout Itemize
4705 Syntax: none gui.repaint()
4708 \begin_layout Standard
4709 Request on_repaint() to happen as soon as possible.
4712 \begin_layout Subsection
4713 gui.subframe_update: Enable/Disable subframe updates
4716 \begin_layout Itemize
4717 Syntax: none gui.subframe_update(boolean on)
4720 \begin_layout Standard
4721 Request subframe updates (calling on_paint() on subframes) to happen (<on>=true)
4722 or not happen (<on>=false).
4725 \begin_layout Subsection
4726 gui.screenshot: Write a screenshot
4729 \begin_layout Itemize
4730 Syntax: none gui.screenshot(string filename)
4733 \begin_layout Standard
4734 Write PNG screenshot of the current frame (no drawings) to specified file
4738 \begin_layout Subsection
4739 gui.screenshot_bitmap: Write a screenshot to bitmap
4742 \begin_layout Itemize
4743 Syntax: DBITMAP gui.screenshot_bitmap()
4746 \begin_layout Standard
4747 Write PNG screenshot of the current frame (no drawings) to dbitmap and return
4751 \begin_layout Subsection
4752 gui.color: Compose a color.
4755 \begin_layout Itemize
4756 Syntax: number gui.color(number r, number g, number b[, number a])
4759 \begin_layout Itemize
4760 Syntax: number gui.color(string c)
4763 \begin_layout Standard
4764 Returns color (in notation Lua scripts use) corresponding to color (<r>,<g>,<b>)
4765 , each component in scale 0-255.
4766 If <a> is specified, that is alpha (0 is fully transparent, 256(sic) is
4768 The default alpha is 256.
4771 \begin_layout Standard
4772 The form taking a string returns color corresponding color name.
4775 \begin_layout Subsection
4776 gui.status: Set status variable
4779 \begin_layout Itemize
4780 Syntax: none gui.status(string name, string value)
4783 \begin_layout Standard
4785 \begin_inset Quotes eld
4789 \begin_inset Quotes erd
4792 to <value> in status area.
4795 \begin_layout Subsection
4796 gui.rainbow: Rainbow color calculation
4799 \begin_layout Itemize
4800 Syntax: number gui.rainbow(number step, number steps[, number color])
4803 \begin_layout Standard
4804 Perform hue rotation of color <color> (default bright red), by <step> steps.
4805 The number of steps per full rotation is given by absolute value of <steps>.
4808 \begin_layout Standard
4809 If <step> is negative, the rotation will be counterclockwise.
4812 \begin_layout Subsection
4813 gui.kill_frame: Kill video frame and associated sound
4816 \begin_layout Itemize
4817 Syntax: none gui.kill_frame()
4820 \begin_layout Standard
4821 Kills the currently dumped video frame + the associated sound.
4822 Only valid in on_video callback.
4825 \begin_layout Subsection
4826 gui.set_video_scale: Set video frame scale
4829 \begin_layout Itemize
4830 Syntax: none gui.set_video_scale(number h, number v)
4833 \begin_layout Standard
4834 Sets the scale factors of current frame to <h>x<v>.
4835 Only valid in on_video callback.
4838 \begin_layout Subsection
4839 gui.arrow: Draw an arrow
4842 \begin_layout Itemize
4843 Syntax: none gui.arrow(number x, number y, number length, number hwidth,
4844 number direction[, bool fill[, number color[, number twidth[, number hthick]]]]
4848 \begin_layout Standard
4849 Draws an arrow using color <color>.
4850 The tip of arrow is at (<x>, <y>).
4854 \begin_layout Enumerate
4855 <length>: The length of arrow tail.
4858 \begin_layout Enumerate
4859 <hwidth>: The width of arrow head.
4863 \begin_layout Enumerate
4864 <direction>: Direction of arrow.
4865 0 is to right, +1 rotates 45 degrees counterclockwise.
4868 \begin_layout Enumerate
4869 <fill>: If true, fill the arrow head.
4873 \begin_layout Enumerate
4874 <twidth>: Tail width.
4879 \begin_layout Enumerate
4880 <hthick>: Head thickness (only used if <fill> is false).
4881 Default is <twidth>.
4884 \begin_layout Subsection
4885 gui.tiled_bitmap: Class TILEMAP
4888 \begin_layout Standard
4892 \begin_layout Subsection
4893 gui.palette: Class PALETTE
4896 \begin_layout Standard
4900 \begin_layout Subsection
4901 gui.bitmap: Class BITMAP
4904 \begin_layout Standard
4908 \begin_layout Subsection
4909 gui.dbitmap: Class DBITMAP
4912 \begin_layout Standard
4916 \begin_layout Subsection
4917 gui.font: Class CUSTOMFONT
4920 \begin_layout Standard
4921 See class CUSTOMFONT.
4924 \begin_layout Subsection
4925 gui.renderctx: Class RENDERCTX
4928 \begin_layout Standard
4929 See class RENDERCTX.
4932 \begin_layout Subsection
4933 gui.image: Class IMAGELOADER
4936 \begin_layout Standard
4937 See class IMAGELOADER.
4940 \begin_layout Standard
4941 \begin_inset Newpage pagebreak
4947 \begin_layout Section
4951 \begin_layout Standard
4953 Functions manipulating input are only available in on_input callback.
4956 \begin_layout Subsection
4957 input.get: Read controller button/axis (deprecated)
4960 \begin_layout Itemize
4961 Syntax: number input.get(number controller, number index)
4964 \begin_layout Standard
4965 Read the specified index <index> (zero-based) from specified controller
4966 <controller> (zero-based).
4970 \begin_layout Subsection
4971 input.set: Write controller button/axis (deprecated)
4974 \begin_layout Itemize
4975 Syntax: none input.set(number controller, number index, number value)
4978 \begin_layout Standard
4979 Write the specified index <index> (zero-based) from specified controller
4980 <controller> (zero-based), storing value <value>.
4983 \begin_layout Subsection
4984 input.get2: Read controller button/axis
4987 \begin_layout Itemize
4988 Syntax: number input.get2(number port, number controller, number index)
4991 \begin_layout Standard
4992 Read the specified input tuple.
4993 Port 0 is system port.
4996 \begin_layout Subsection
4997 input.set2: Write controller button/axis
5000 \begin_layout Itemize
5001 Syntax: input.set2(number port, number controller, number index, number value)
5004 \begin_layout Standard
5005 Write the specified input tuple.
5006 Port 0 is system port.
5009 \begin_layout Subsection
5010 input.lcid_to_pcid2: Look up logical controller
5013 \begin_layout Itemize
5014 Syntax: (number, number) input.lcid_to_pcid2(number lcid)
5017 \begin_layout Standard
5018 Look up physical pcid pair (port, controller) corresponding to specified
5019 logical controller (1-based).
5020 Returns nothing if controller does not exist.
5023 \begin_layout Subsection
5024 input.port_type: Look up port type
5027 \begin_layout Itemize
5028 Syntax: string input.port_type(number port)
5031 \begin_layout Standard
5032 Return type of specified port.
5035 \begin_layout Subsection
5036 input.controller_info: Get information about controller
5039 \begin_layout Itemize
5040 Syntax: table input.controller_info(number port, number controller)
5043 \begin_layout Standard
5044 Get controller info for specified controller.
5045 If controller does not exist, returns nil.
5046 Otherwise returns a table with following fields:
5049 \begin_layout Itemize
5050 type (string): Type of the controller.
5053 \begin_layout Itemize
5054 class (string): Class of the controller.
5057 \begin_layout Itemize
5058 classnum (number): Number of the controller within its class (1-based)
5061 \begin_layout Itemize
5062 lcid (number): Logical controller number of the controller.
5065 \begin_layout Itemize
5066 button_count (number): Number of buttons on controller
5069 \begin_layout Itemize
5070 buttons (array): Array of following info about each button:
5074 \begin_layout Itemize
5075 type (string): Type of button.
5077 \begin_inset Quotes eld
5081 \begin_inset Quotes erd
5085 \begin_inset Quotes eld
5089 \begin_inset Quotes erd
5093 \begin_inset Quotes eld
5097 \begin_inset Quotes erd
5101 \begin_inset Quotes eld
5105 \begin_inset Quotes erd
5111 \begin_layout Itemize
5112 name (string): Name of button.
5115 \begin_layout Itemize
5116 symbol (string): Symbol of button.
5117 Only present for type
5118 \begin_inset Quotes eld
5122 \begin_inset Quotes erd
5128 \begin_layout Itemize
5129 hidden (boolean): True if hidden button.
5134 \begin_layout Subsection
5135 input.veto_button: Veto a button press
5138 \begin_layout Itemize
5139 Syntax: none input.veto_button()
5142 \begin_layout Standard
5143 Signals that the button event should be vetoed.
5144 Only valid in on_button callback.
5147 \begin_layout Subsection
5148 input.geta: Get all buttons for controller (deprecated)
5151 \begin_layout Itemize
5152 Syntax: (number, number...) input.geta(number controller)
5155 \begin_layout Standard
5156 Get input state for entiere controller.
5157 Returns n return values.
5160 \begin_layout Itemize
5161 1st return value: Bitmask: bit i is set if i:th index is nonzero
5164 \begin_layout Itemize
5165 2nd- return value: value of i:th index.
5168 \begin_layout Subsection
5169 input.seta: Set all buttons for controller (deprecated)
5172 \begin_layout Itemize
5173 Syntax: none input.seta(number controller, number bitmask, number args...)
5176 \begin_layout Standard
5177 Set state for entiere controller.
5178 args is up to N values for indices (overriding values in bitmask if specified).
5181 \begin_layout Subsection
5182 input.controllertype: Get controller type (deprecated)
5185 \begin_layout Itemize
5186 syntax: string input.controllertype(number controller)
5189 \begin_layout Standard
5190 Get the type of controller as string.
5193 \begin_layout Subsection
5194 input.reset: Execute (delayed) reset
5197 \begin_layout Itemize
5198 Syntax: none input.reset([number cycles])
5201 \begin_layout Standard
5203 If <cycles> is greater than zero, do delayed reset.
5204 0 (or no value) causes immediate reset.
5207 \begin_layout Itemize
5208 Note: Only available with subframe flag false.
5211 \begin_layout Subsection
5212 input.raw: Return raw input data
5215 \begin_layout Itemize
5216 Syntax: table input.raw()
5219 \begin_layout Standard
5220 Returns table of tables of all available keys and axes.
5221 The first table is indexed by key name (platform-dependent!), and the inner
5222 table has the following fields:
5225 \begin_layout Itemize
5226 value: Last reported value for control
5230 \begin_layout Itemize
5231 For keys: 1 for pressed, 0 for released.
5234 \begin_layout Itemize
5235 For axes: -32767...32767.
5238 \begin_layout Itemize
5239 For presure-sensitive buttons: 0...32767.
5242 \begin_layout Itemize
5243 For hats: Bitmask: 1=>Up, 2=>Right, 4=>Down, 8=>Left.
5246 \begin_layout Itemize
5247 For mouse: Coordinates relative to game area.
5251 \begin_layout Itemize
5252 ktype: Type of key (disabled, key, mouse, axis, hat, pressure).
5255 \begin_layout Subsection
5256 input.keyhook: Hook a key
5259 \begin_layout Itemize
5260 Syntax: none input.keyhook(string key, boolean state)
5263 \begin_layout Standard
5264 Requests that keyhook events to be sent for key <key> (<state>=true) or
5265 not sent (<state>=false).
5268 \begin_layout Subsection
5269 input.joyget: Get controls for controller
5272 \begin_layout Itemize
5273 Syntax: table input.joyget(number logical)
5276 \begin_layout Standard
5277 Returns table for current controls for specified logical controller <logical>.
5278 The names of fields vary by controller type.
5281 \begin_layout Itemize
5282 The buttons have the same name as those are referred to in other contexts
5286 \begin_layout Itemize
5287 The analog axes are usually
5288 \begin_inset Quotes eld
5292 \begin_inset Quotes erd
5296 \begin_inset Quotes eld
5300 \begin_inset Quotes erd
5306 \begin_layout Itemize
5307 Each field is numeric or boolean depending on axis/button.
5310 \begin_layout Subsection
5311 input.joyset: Set controls for controller
5314 \begin_layout Itemize
5315 Syntax: none input.joyset(number controller, table controls)
5318 \begin_layout Standard
5319 Set the the state of specified controller to values specified in specified
5323 \begin_layout Itemize
5324 Each field can be boolean or number.
5327 \begin_layout Itemize
5328 Also, buttons allow strings, which cause value to be inverted.
5331 \begin_layout Subsection
5332 input.lcid_to_pcid: Look up logical controller (deprecated)
5335 \begin_layout Itemize
5336 Syntax: (number, number, number) input.lcid_to_pcid(number lcid)
5339 \begin_layout Standard
5340 Returns the legacy pcid for controller (or false if there isn't one), followed
5342 Returns nothing if controller does not exist.
5345 \begin_layout Standard
5346 \begin_inset Newpage pagebreak
5352 \begin_layout Section
5356 \begin_layout Standard
5357 Various keybinding-related functions
5360 \begin_layout Subsection
5361 keyboard.bind: Bind a key
5364 \begin_layout Itemize
5365 Syntax: none keyboard.bind(string mod, string mask, string key, string cmd)
5368 \begin_layout Standard
5369 Bind specified key with specified modifers to specified command.
5372 \begin_layout Subsection
5373 keyboard.unbind: Unbind a key
5376 \begin_layout Itemize
5377 Syntax: none keyboard.unbind(string mod, string mask, string key)
5380 \begin_layout Standard
5381 Unbind specified key with specified modifers.
5384 \begin_layout Subsection
5385 keyboard.alias: Set alias expansion
5388 \begin_layout Itemize
5389 Syntax: none keyboard.alias(string alias, string expansion)
5392 \begin_layout Standard
5393 Set expansion of given command.
5396 \begin_layout Standard
5397 \begin_inset Newpage pagebreak
5403 \begin_layout Section
5407 \begin_layout Standard
5411 \begin_layout Subsection
5412 subtitle.byindex: Look up start and length of subtitle by index
5415 \begin_layout Itemize
5416 Syntax: (number, number) subtitle.byindex(number i)
5419 \begin_layout Standard
5420 Read the frame and length of ith subtitle.
5421 Returns nothing if not present.
5424 \begin_layout Subsection
5425 subtitle.set: Write a subtitle
5428 \begin_layout Itemize
5429 Syntax: none subtitle.set(number f, number l, string txt)
5432 \begin_layout Standard
5433 Set the text of subtitle.
5436 \begin_layout Subsection
5437 subtitle.get: Read a subtitle
5440 \begin_layout Itemize
5441 Syntax: string subtitle.get(number f, number l)
5444 \begin_layout Standard
5445 Get the text of subtitle.
5448 \begin_layout Subsection
5449 subtitle.delete: Delete a subtitle
5452 \begin_layout Itemize
5453 Syntax: none subtitle.delete(number f, number l)
5456 \begin_layout Standard
5457 Delete specified subtitle.
5460 \begin_layout Standard
5461 \begin_inset Newpage pagebreak
5467 \begin_layout Section
5471 \begin_layout Standard
5472 Host memory handling (extra memory saved to savestates).
5473 Host memory starts empty.
5476 \begin_layout Itemize
5477 Reads out of range return false.
5480 \begin_layout Itemize
5481 Writes out of range extend the memory.
5484 \begin_layout Subsection
5485 hostmemory.read: Read byte from host memory
5488 \begin_layout Itemize
5489 Syntax: number hostmemory.read(number address)
5492 \begin_layout Standard
5493 Reads byte from hostmemory slot address <address>.
5496 \begin_layout Subsection
5497 hostmemory.write: Write byte to host memory
5500 \begin_layout Itemize
5501 Syntax: none hostmemory.write(number address, number value)
5504 \begin_layout Standard
5505 Writes hostmemory slot with value <value> 0-255.
5508 \begin_layout Subsection
5509 hostmemory.read{,s}{byte,{,h,d,q}word}: Read from host memory
5512 \begin_layout Itemize
5513 Syntax: number hostmemory.readbyte(number address)
5516 \begin_layout Itemize
5517 Syntax: number hostmemory.readsbyte(number address)
5520 \begin_layout Itemize
5521 Syntax: number hostmemory.readword(number address)
5524 \begin_layout Itemize
5525 Syntax: number hostmemory.readsword(number address)
5528 \begin_layout Itemize
5529 Syntax: number hostmemory.readhword(number address)
5532 \begin_layout Itemize
5533 Syntax: number hostmemory.readshword(number address)
5536 \begin_layout Itemize
5537 Syntax: number hostmemory.readdword(number address)
5540 \begin_layout Itemize
5541 Syntax: number hostmemory.readsdword(number address)
5544 \begin_layout Itemize
5545 Syntax: number hostmemory.readqword(number address)
5548 \begin_layout Itemize
5549 Syntax: number hostmemory.readsqword(number address)
5552 \begin_layout Standard
5553 Read elements (big-endian) from given address <address>.
5556 \begin_layout Itemize
5560 \begin_layout Itemize
5564 \begin_layout Itemize
5568 \begin_layout Itemize
5572 \begin_layout Itemize
5573 qword is 8 elements.
5576 \begin_layout Itemize
5577 The 's' variants do signed read.
5580 \begin_layout Subsection
5581 hostmemory.read{float,double}: Read from host memory
5584 \begin_layout Itemize
5585 syntax: number hostmemory.readfloat(number address)
5588 \begin_layout Itemize
5589 Syntax: number hostmemory.readdouble(number address)
5592 \begin_layout Standard
5593 Read elements (big-endian) floating-pont from given address <address>.
5596 \begin_layout Subsection
5597 hostmemory.write{,s}{byte,{,h,d,q}word}: Write to host memory
5600 \begin_layout Itemize
5601 Syntax: number hostmemory.writebyte(number address, number value)
5604 \begin_layout Itemize
5605 Syntax: number hostmemory.writesbyte(number address, number value)
5608 \begin_layout Itemize
5609 Syntax: number hostmemory.writeword(number address, number value)
5612 \begin_layout Itemize
5613 Syntax: number hostmemory.writesword(number address, number value)
5616 \begin_layout Itemize
5617 Syntax: number hostmemory.writehword(number address, number value)
5620 \begin_layout Itemize
5621 Syntax: number hostmemory.writeshword(number address, number value)
5624 \begin_layout Itemize
5625 Syntax: number hostmemory.writedword(number address, number value)
5628 \begin_layout Itemize
5629 Syntax: number hostmemory.writesdword(number address, number value)
5632 \begin_layout Itemize
5633 Syntax: number hostmemory.writeqword(number address, number value)
5636 \begin_layout Itemize
5637 Syntax: number hostmemory.writesqword(number address, number value)
5640 \begin_layout Standard
5641 Write value <value> to elements (little-endian) starting from given address
5645 \begin_layout Itemize
5649 \begin_layout Itemize
5653 \begin_layout Itemize
5657 \begin_layout Itemize
5661 \begin_layout Itemize
5662 qword is 8 elements.
5665 \begin_layout Itemize
5666 The 's' variants do signed write.
5669 \begin_layout Subsection
5670 hostmemory.write{float,double}: Write to host memory
5673 \begin_layout Itemize
5674 syntax: none hostmemory.readfloat(number address, number value)
5677 \begin_layout Itemize
5678 Syntax: none hostmemory.readdouble(number address, number value)
5681 \begin_layout Standard
5682 Write elements (big-endian) floating-pont to given address <address>, storing
5686 \begin_layout Standard
5687 \begin_inset Newpage pagebreak
5693 \begin_layout Section
5697 \begin_layout Standard
5701 \begin_layout Subsection
5702 movie.currentframe: Get current frame number
5705 \begin_layout Itemize
5706 Syntax: number movie.currentframe()
5709 \begin_layout Standard
5710 Return number of current frame.
5713 \begin_layout Subsection
5714 movie.framecount: Get move frame count
5717 \begin_layout Itemize
5718 Syntax: number movie.framecount()
5721 \begin_layout Standard
5722 Return number of frames in movie.
5725 \begin_layout Subsection
5726 movie.readonly: Is in readonly mode?
5729 \begin_layout Itemize
5730 Syntax: boolean movie.readonly()
5733 \begin_layout Standard
5734 Return true if in readonly mode, false if in readwrite.
5737 \begin_layout Subsection
5738 movie.rerecords: Movie rerecord count
5741 \begin_layout Itemize
5742 Syntax: number movie.rerecords()
5745 \begin_layout Standard
5746 Returns the current value of rerecord count.
5749 \begin_layout Subsection
5750 movie.set_readwrite: Set read-write mode.
5753 \begin_layout Itemize
5754 Syntax: none movie.set_readwrite()
5757 \begin_layout Standard
5758 Set readwrite mode (does not cause on_readwrite callback).
5761 \begin_layout Subsection
5762 movie.frame_subframes: Count subframes in frame
5765 \begin_layout Itemize
5766 Syntax: number movie.frame_subframes(number frame)
5769 \begin_layout Standard
5770 Count number of subframes in specified frame <frame> (frame numbers are
5771 1-based) and return that.
5774 \begin_layout Subsection
5775 movie.read_subframes: Read subframe data (deprecated)
5778 \begin_layout Itemize
5779 Syntax: table movie.read_subframes(number frame, number subframe)
5782 \begin_layout Standard
5783 Read specifed subframe in specified frame and return data as array.
5786 \begin_layout Subsection
5787 movie.read_rtc: Read current RTC time
5790 \begin_layout Itemize
5791 Syntax: (number, number) movie.read_rtc()
5794 \begin_layout Standard
5795 Returns the current value of the RTC as a pair (second, subsecond).
5798 \begin_layout Subsection
5799 movie.unsafe_rewind: Fast movie rewind to saved state
5802 \begin_layout Itemize
5803 Syntax: none movie.unsafe_rewind([UNSAFEREWIND state])
5806 \begin_layout Standard
5807 Start setting point for unsafe rewind or jump to point of unsafe rewind.
5810 \begin_layout Itemize
5811 If called without argument, causes emulator to start process of setting
5812 unsafe rewind point.
5813 When this has finished, callback on_set_rewind occurs, passing the rewind
5814 state to lua script.
5817 \begin_layout Itemize
5818 If called with argument, causes emulator rewind to passed rewind point as
5820 Readwrite mode is implicitly activated.
5823 \begin_layout Standard
5824 The following warnings apply to unsafe rewinding:
5827 \begin_layout Itemize
5828 There are no safety checks against misuse (that's what
5829 \begin_inset Quotes eld
5833 \begin_inset Quotes erd
5839 \begin_layout Itemize
5840 Only call rewind from timeline rewind point was set from.
5843 \begin_layout Itemize
5844 Only call rewind from after the rewind point was set.
5847 \begin_layout Subsection
5848 movie.to_rewind: Load savestate as rewind point
5851 \begin_layout Itemize
5852 Syntax: UNSAFEREWIND movie.to_rewind(string filename)
5855 \begin_layout Standard
5856 Load specified savestate file <filename> as rewind point and return UNSAFEREWIND
5857 corresponding to it.
5860 \begin_layout Itemize
5861 Note: This operation does not take emulated time.
5864 \begin_layout Subsection
5865 movie.copy_movie/INPUTMOVIE::copy_movie: Copy movie to movie object
5868 \begin_layout Itemize
5869 Syntax: INPUTMOVIE movie.copy_movie([INPUTMOVIE/string movie])
5872 \begin_layout Itemize
5873 Syntax: INPUTMOVIE INPUTMOVIE::copy_movie()
5876 \begin_layout Standard
5877 Copies specified movie or branch <movie>/current object (if none or nil,
5878 the active movie) as new movie object.
5881 \begin_layout Subsection
5882 movie.get_frame/INPUTMOVIE::get_frame: Read specified frame in movie.
5885 \begin_layout Itemize
5886 Syntax: INPUTFRAME movie.get_frame([INPUTMOVIE/string movie,] number frame)
5889 \begin_layout Itemize
5890 Syntax: INPUTFRAME INPUTMOVIE::get_frame(number frame);
5893 \begin_layout Standard
5894 Get INPUTFRAME object corresponding to specified frame in specified movie
5898 \begin_layout Subsection
5899 movie.set_frame/INPUTMOVIE::set_frame: Write speicifed frame in movie.
5902 \begin_layout Itemize
5903 Syntax: none movie.set_frame([INPUTMOVIE/string movie,] number frame, INPUTFRAME
5907 \begin_layout Itemize
5908 Syntax: none INPUTMOVIE::set_frame(number frame, INPUTFRAME data)
5911 \begin_layout Standard
5912 Set data in specified frame.
5915 \begin_layout Itemize
5916 Note: Past can't be edited in active movie.
5919 \begin_layout Subsection
5920 movie.get_size/INPUTMOVIE::get_size: Get size of movie
5923 \begin_layout Itemize
5924 Syntax: integer movie.get_size([INPUTMOVIE/string movie])
5927 \begin_layout Itemize
5928 Syntax: integer INPUTMOVIE::get_size()
5931 \begin_layout Standard
5932 Return number of subframes in specified movie or branch.
5935 \begin_layout Subsection
5936 movie.count_frames/INPUTMOVIE::count_frames: Count frames in movie
5939 \begin_layout Itemize
5940 Syntax: number movie.count_frames([INPUTMOVIE/string movie])
5943 \begin_layout Itemize
5944 Syntax: number INPUTMOVIE::count_frames()
5947 \begin_layout Standard
5948 Return number of frames in movie.
5951 \begin_layout Subsection
5952 movie.find_frame/INPUTMOVIE::find_frame: Find subframe corresponding to frame
5955 \begin_layout Itemize
5956 Syntax: number movie.find_frame([INPUTMOVIE/string movie], number frame)
5959 \begin_layout Itemize
5960 Syntax: number INPUTMOVIE::find_frame(number frame)
5963 \begin_layout Standard
5964 Returns starting subframe of given frame (frame numbers are 1-based).
5965 Returns -1 if frame number is bad.
5968 \begin_layout Subsection
5969 movie.blank_frame/INPUTMOVIE::blank_frame: Return a blank frame
5972 \begin_layout Itemize
5973 Syntax: INPUTFRAME movie.blank_frame([INPUTMOVIE/string movie])
5976 \begin_layout Itemize
5977 Syntax: INPUTFRAME INPUTMOVIE::blank_frame()
5980 \begin_layout Standard
5981 Return blank INPUTFRAME with frame type from specified movie.
5984 \begin_layout Subsection
5985 movie.append_frames/INPUTMOVIE::append_frames: Append blank frames
5988 \begin_layout Itemize
5989 Syntax: none movie.append_frames([INPUTMOVIE/string movie,] number frames)
5992 \begin_layout Itemize
5993 Syntax: none INPUTMOVIE::append_frames(number frames)
5996 \begin_layout Standard
5997 Append specified number <frames> of frames.
6000 \begin_layout Subsection
6001 movie.append_frame/INPUTMOVIE::append_frame: Append a frame
6004 \begin_layout Itemize
6005 Syntax: none movie.append_frame([INPUTMOVIE/string movie,] INPUTFRAME frame)
6008 \begin_layout Itemize
6009 Syntax: none INPUTMOVIE::append_frame(INPUTFRAME frame)
6012 \begin_layout Standard
6013 Append specified frame <frame>.
6014 Past of current movie can't be edited.
6017 \begin_layout Subsection
6018 movie.truncate/INPUTMOVIE::truncate: Truncate a movie.
6021 \begin_layout Itemize
6022 Syntax: none movie.truncate([INPUTMOVIE/string movie,] number frames)
6025 \begin_layout Itemize
6026 Syntax: none INPUTMOVIE::truncate(number frames)
6029 \begin_layout Standard
6030 Truncate the specified movie to specified number of frames.
6033 \begin_layout Subsection
6034 movie.edit/INPUTMOVIE::edit: Edit a movie
6037 \begin_layout Itemize
6038 Syntax: none movie.edit([INPUTMOVIE movie,] number frame, number port, number
6039 controller, number control, number/bool value)
6042 \begin_layout Itemize
6043 Syntax: none movie.edit(string branch, number frame, number port, number
6044 controller, number control, number/bool value)
6047 \begin_layout Itemize
6048 Syntax: none INPUTMOVIE::edit(number frame, number port, number controller,
6049 number control, number/bool value)
6052 \begin_layout Standard
6053 Change specified control in specified frame in specified movie.
6054 Past can't be edited in active movie.
6057 \begin_layout Subsection
6058 movie.copy_frames2: Copy frames between movies
6061 \begin_layout Itemize
6062 Syntax: none movie.copy_frames2([INPUTMOVIE/string dstmov,] number dst, [INPUTMOV
6063 IE/string srcmov,] number src, number count)
6066 \begin_layout Standard
6067 Copy specified number of frames between two movies.
6068 The copy proceeeds in forward direction.
6071 \begin_layout Subsection
6072 movie.copy_frames/INPUTMOVIE::copy_frames: Copy frames in movie
6075 \begin_layout Itemize
6076 Syntax: none movie.copy_frames([INPUTMOVIE/string mov,] number dst, number
6077 src, number count, bool backwards)
6080 \begin_layout Itemize
6081 Syntax: none INPUTMOVIE::copy_frames(number dst, number src, number count,
6085 \begin_layout Standard
6086 Copy specified number of frames from one point in movie to another.
6087 If backwards is true, the copy will be done backwards.
6090 \begin_layout Subsection
6091 movie.serialize/INPUTMOVIE::serialize: Serialize movie
6094 \begin_layout Itemize
6095 Syntax: none movie.serialize([INPUTMOVIE movie/string,] string filename,
6099 \begin_layout Itemize
6100 Syntax: none INPUTMOIVE::serialize(string filename, bool binary)
6103 \begin_layout Standard
6104 Serialize given movie into file.
6105 If binary is true, binary format (more compact and much faster) is used.
6108 \begin_layout Subsection
6109 movie.unserialize: Unserialize movie
6112 \begin_layout Itemize
6113 Syntax: INPUTMOVIE movie.unserialize(INPUTFRAME template, string filename,
6117 \begin_layout Standard
6118 Unserialize movie from file.
6119 The given frame is used as template to decide the frame type.
6120 If binary is true, binary format is decoded (much faster).
6123 \begin_layout Subsection
6124 movie.current_first_subframe: Return first subframe in current frame
6127 \begin_layout Itemize
6128 Syntax: number movie.current_first_subframe()
6131 \begin_layout Standard
6132 Returns first subframe in current frame.
6135 \begin_layout Subsection
6136 movie.pollcounter: Return poll counter for speified control
6139 \begin_layout Itemize
6140 Syntax: number movie.pollcounter(number port, number controller, number control)
6143 \begin_layout Standard
6144 Returns number of times the specified control has been polled this frame.
6147 \begin_layout Subsection
6148 movie.current_branch: Return current branch
6151 \begin_layout Itemize
6152 Syntax: string movie.current_branch()
6155 \begin_layout Standard
6156 Returns the name of the current branch.
6159 \begin_layout Subsection
6160 movie.get_branches: Return names of all branches
6163 \begin_layout Itemize
6165 movie.get_branches()
6168 \begin_layout Standard
6169 Returns the name of all branches.
6172 \begin_layout Subsection
6173 INPUTFRAME::get_button: Get button
6176 \begin_layout Itemize
6177 Syntax: boolean INPUTFRAME::get_button(number port, number controller, number
6181 \begin_layout Standard
6182 Returns state of given button as boolean.
6185 \begin_layout Subsection
6186 INPUTFRAME::get_axis: Get axis
6189 \begin_layout Itemize
6190 Syntax: number INPUTFRAME::get_axis(number port, number controller, number
6194 \begin_layout Standard
6195 Returns state of given axis as number.
6198 \begin_layout Subsection
6199 INPUTFRAME::set_button/INPUTFRAME::set_axis: Set button or axis
6202 \begin_layout Itemize
6203 Syntax: none INPUTFRAME::set_button(number port, number controller, number
6204 control, number/bool value)
6207 \begin_layout Itemize
6208 Syntax: none INPUTFRAME::set_axis(number port, number controller, number
6212 \begin_layout Standard
6213 Set the given button/axis to given value.
6216 \begin_layout Subsection
6217 INPUTFRAME::serialize: Serialize a frame
6220 \begin_layout Itemize
6221 Syntax: string INPUTFRAME::serialize()
6224 \begin_layout Standard
6225 Return string representation of frame.
6228 \begin_layout Subsection
6229 INPUTFRAME::unserialize: Unserialize a frame
6232 \begin_layout Itemize
6233 Syntax: none INPUTFRAME::unserialize(string data)
6236 \begin_layout Standard
6237 Set current frame from given data.
6240 \begin_layout Subsection
6241 INPUTFRAME::get_stride: Get movie stride
6244 \begin_layout Itemize
6245 Syntax: number INPUTFRAME::get_stride()
6248 \begin_layout Standard
6249 Return number of bytes needed to store the input frame.
6250 Mainly useful for some debugging.
6253 \begin_layout Standard
6254 \begin_inset Newpage pagebreak
6260 \begin_layout Section
6264 \begin_layout Standard
6265 Routines for settings manipulation
6268 \begin_layout Subsection
6269 settings.get: Get value of setting
6272 \begin_layout Itemize
6273 Syntax: string settings.get(string name)
6276 \begin_layout Standard
6277 Get value of setting <name>.
6278 If setting value can't be obtained, returns (nil, error message).
6281 \begin_layout Subsection
6282 settings.set: Set value of setting
6285 \begin_layout Itemize
6286 Syntax: none settings.set(string name, string value)
6289 \begin_layout Standard
6290 Set value <value> of setting <name>.
6291 If setting can't be set, returns (nil, error message).
6294 \begin_layout Standard
6295 \begin_inset Newpage pagebreak
6301 \begin_layout Section
6305 \begin_layout Standard
6306 Contains various functions for managing memory
6309 \begin_layout Subsection
6310 memory.vma_count: Count number of memory areas.
6313 \begin_layout Itemize
6314 Syntax: number memory.vma_count()
6317 \begin_layout Standard
6318 Returns the number of memory areas
6321 \begin_layout Subsection
6322 memory.read_vma: Lookup memory area info by index
6325 \begin_layout Itemize
6326 Syntax: table memory.read_vma(number index)
6329 \begin_layout Standard
6330 Reads the specified memory area (indices start from zero).
6331 Trying to read invalid memory area gives nil.
6332 The return value is table with the following fields:
6335 \begin_layout Itemize
6336 region_name (string): The readable name of the memory area
6339 \begin_layout Itemize
6340 baseaddr (number): Base address of the memory area
6343 \begin_layout Itemize
6344 lastaddr (number): Last address in the memory area.
6347 \begin_layout Itemize
6348 size (number): The size of memory area in bytes.
6351 \begin_layout Itemize
6352 readonly (boolean): True of the memory area corresponds to ROM.
6355 \begin_layout Itemize
6356 iospace (boolean): True if the memory area is I/O space.
6359 \begin_layout Itemize
6360 native_endian (boolean): True if the memory area has native endian as opposed
6364 \begin_layout Subsection
6365 memory.find_vma: Find memory area info by address
6368 \begin_layout Itemize
6369 Syntax: table memory.find_vma(number address)
6372 \begin_layout Standard
6373 Finds the memory area containing specified address.
6374 Returns table in the same format as read_vma or nil if not found.
6377 \begin_layout Subsection
6378 memory.read{,s}{byte,{,h,d,q}word}: Read memory
6381 \begin_layout Itemize
6382 Syntax: none memory.readbyte([string marea, ]number address)
6385 \begin_layout Itemize
6386 Syntax: none memory.readword([string marea, ]number address)
6389 \begin_layout Itemize
6390 Syntax: none memory.readhword([string marea, ]number address)
6393 \begin_layout Itemize
6394 Syntax: none memory.readdword([string marea, ]number address)
6397 \begin_layout Itemize
6398 Syntax: none memory.readqword([string marea, ]number address)
6401 \begin_layout Itemize
6402 Syntax: none memory.readsbyte([string marea, ]number address)
6405 \begin_layout Itemize
6406 Syntax: none memory.readsword([string marea, ]number address)
6409 \begin_layout Itemize
6410 Syntax: none memory.readshword([string marea, ]number address)
6413 \begin_layout Itemize
6414 Syntax: none memory.readsdword([string marea, ]number address)
6417 \begin_layout Itemize
6418 Syntax: none memory.readsqword([string marea, ]number address)
6421 \begin_layout Standard
6422 Reads the specified address <address> (if 's' variant is used, do undergo
6426 \begin_layout Subsection
6427 memory.{,s}read_sg: Scatter/Gather read memory
6430 \begin_layout Itemize
6431 Syntax: none memory.read_sg(string/boolean/number...)
6434 \begin_layout Itemize
6435 Syntax: none memory.sread_sg(string/boolean/number...)
6438 \begin_layout Standard
6439 Perform (2s complement signed if using memory.sread_sg) scatter/gather read
6441 Each argument can be string, boolean or number:
6444 \begin_layout Itemize
6445 String: Set memory area addresses are relative to (e.g.
6449 \begin_layout Itemize
6450 boolean: If true, increment relative address by 1, if false, decrement by
6452 The new address is read as next higher byte.
6455 \begin_layout Itemize
6456 integer: Set the relative address to specified value and read the address
6457 as next higher byte.
6460 \begin_layout Subsection
6461 memory.write_sg: Scatter/Gather write memory
6464 \begin_layout Itemize
6465 Syntax: none memory.write_sg(number value, string/boolean/number...)
6468 \begin_layout Standard
6469 Perform scatter/gather write of value <value> on memory.
6470 Each argument can be string, boolean or number:
6473 \begin_layout Itemize
6474 String: Set memory area addresses are relative to (e.g.
6478 \begin_layout Itemize
6479 boolean: If true, increment relative address by 1, if false, decrement by
6481 The new address is read as next higher byte.
6484 \begin_layout Itemize
6485 integer: Set the relative address to specified value and read the address
6486 as next higher byte.
6489 \begin_layout Subsection
6490 memory.read{float,double}: Read memory
6493 \begin_layout Itemize
6494 Syntax: none memory.readfloat([string marea, ]number address)
6497 \begin_layout Itemize
6498 Syntax: none memory.readdouble([string marea, ]number address)
6501 \begin_layout Standard
6502 Reads the specified address <address>
6505 \begin_layout Subsection
6506 memory.write{byte,{,h,d,q}word,float,double}: Write memory
6509 \begin_layout Itemize
6510 Syntax: none memory.writebyte([string marea, ]number address, number value)
6513 \begin_layout Itemize
6514 Syntax: none memory.writeword([string marea, ]number address, number value)
6517 \begin_layout Itemize
6518 Syntax: none memory.writehword([string marea, ]number address, number value)
6521 \begin_layout Itemize
6522 Syntax: none memory.writedword([string marea, ]number address, number value)
6525 \begin_layout Itemize
6526 Syntax: none memory.writeqword([string marea, ]number address, number value)
6529 \begin_layout Itemize
6530 Syntax: none memory.writefloat([string marea, ]number address, number value)
6533 \begin_layout Itemize
6534 Syntax: none memory.writedouble([string marea, ]number address, number value)
6537 \begin_layout Standard
6538 Writes the specified value <value> (negative integer values undergo 2's
6539 complement) to specified address <address>.
6542 \begin_layout Subsection
6543 memory.map{{,s}{byte,{,h,d,q}word},float,double}: Map an array
6546 \begin_layout Itemize
6547 Syntax: userdata memory.map<type>([[string marea, ]number base, number size])
6550 \begin_layout Standard
6551 Returns a table mapping specified memory aperture for read/write.
6552 If parameters are omitted, entiere map space is the aperture.
6555 \begin_layout Itemize
6556 Type may be one of: byte, sbyte, word, sword, hword, shword, dword, sdword,
6557 qword, sqword, float or double.
6560 \begin_layout Subsection
6561 memory.hash_region: Hash region of memory
6564 \begin_layout Itemize
6565 Syntax: string memory.hash_region([string marea, ]number base, number size)
6568 \begin_layout Standard
6569 Hash <size> bytes starting from address <base> (relative to <marea>) and
6573 \begin_layout Subsection
6574 memory.hash_region2: Hash region of memory
6577 \begin_layout Itemize
6578 Syntax: string memory.hash_region2([string marea, ]number base, number size[,
6579 number rows, number stride])
6582 \begin_layout Standard
6583 Hash <rows> blocks of <size> bytes starting from address <base> (relative
6585 The blocks are offset by <stride> from one another and return the SHA-256.
6588 \begin_layout Subsection
6589 memory.hash_region_skein: Hash region of memory
6592 \begin_layout Itemize
6593 Syntax: string memory.hash_region_skein([string marea, ]number base, number
6594 size[, number rows, number stride])
6597 \begin_layout Standard
6598 Same as memory.hash_region2, but uses Skein-512-256 (v1.3; one of the SHA-3
6599 finalists) as hash function.
6602 \begin_layout Subsection
6603 memory.store: Store region of memory
6606 \begin_layout Itemize
6607 Syntax: none memory.store([string marea, ]number addr, number daddr[, number
6608 rows, number stride]
6611 \begin_layout Standard
6612 Copy memory starting from <addr> in memory area <marea> (each row being
6613 of size <size>, there being <rows> rows, and rows being separated by <stride>
6614 in memory) into savestate-saved memory area, starting from <daadr> (all
6615 rows are written back to back).
6618 \begin_layout Subsection
6619 memory.storecmp: Compare and store region of memory
6622 \begin_layout Itemize
6623 Syntax: bool memory.storecmp([string marea, ]number addr, number daddr[,
6624 number rows, number stride]
6627 \begin_layout Standard
6628 Like memory.store, but returns true if target of copy already held the value
6629 that would be copied before the copy happened.
6630 Otherwise returns false (if target and source differ before copy).
6633 \begin_layout Subsection
6634 memory.hash_state: Hash system state
6637 \begin_layout Itemize
6638 Syntax: string memory.hash_state()
6641 \begin_layout Standard
6642 Hash the current system state.
6643 Mainly useful for debugging savestates.
6646 \begin_layout Subsection
6647 memory.readregion: Read region of memory
6650 \begin_layout Itemize
6651 Syntax: table memory.readregion([string marea, ]number base, number size)
6654 \begin_layout Standard
6655 Read a region of memory.
6658 \begin_layout Itemize
6659 Warning: If the region crosses memory area boundary, the results are undefined.
6662 \begin_layout Subsection
6663 memory.writeregion: Write region of memory
6666 \begin_layout Itemize
6667 Syntax: none memory.writeregion([string marea, ]number base, number size,
6671 \begin_layout Standard
6672 Write a region of memory.
6675 \begin_layout Itemize
6676 Warning: If the region crosses memory area boundary, the results are undefined.
6679 \begin_layout Subsection
6680 memory.action: Run core action
6683 \begin_layout Itemize
6684 memory.action(string action, [<params>])
6687 \begin_layout Standard
6689 The different models expect parameters as:
6692 \begin_layout Itemize
6696 \begin_layout Itemize
6700 \begin_layout Itemize
6704 \begin_layout Itemize
6708 \begin_layout Itemize
6712 \begin_layout Subsection
6713 memory.get_lag_flag: Get lag flag
6716 \begin_layout Itemize
6717 Syntax: boolean memory.get_lag_flag()
6720 \begin_layout Standard
6721 Get the value of core lag flag.
6722 True if this frame has been lag so far, false if poll has been detected.
6725 \begin_layout Subsection
6726 memory.set_lag_flag: Set lag flag
6729 \begin_layout Itemize
6730 Syntax: none memory.set_lag_flag(boolean flag)
6733 \begin_layout Standard
6734 Set the value of core lag flag.
6735 This flag automatically gets cleared if poll is detected, but can be forcibly
6736 set or cleared if game so requires.
6739 \begin_layout Itemize
6740 Should only be used in on_frame_emulated callback.
6743 \begin_layout Itemize
6744 Setting or clearing this affects the emulator lag counter.
6747 \begin_layout Subsection
6748 memory.{,un}register{read,write,exec}: (Un)Register read / write / execute
6752 \begin_layout Itemize
6753 Syntax: function memory.registerread([string marea, ] number addr, function
6757 \begin_layout Itemize
6758 Syntax: function memory.registerwrite([string marea, ] number addr, function
6762 \begin_layout Itemize
6763 Syntax: function memory.registerexec([string marea, ] number addr, function
6767 \begin_layout Itemize
6768 Syntax: none memory.unregisterread([string marea, ] number addr, function
6772 \begin_layout Itemize
6773 Syntax: none memory.unregisterwrite([string marea, ] number addr, function
6777 \begin_layout Itemize
6778 Syntax: none memory.unregisterexec([string marea, ] number addr, function
6782 \begin_layout Standard
6783 Add or remove callback on memory read, write or execute (depending on the
6785 If <marea> is specified, <addr> is relative to it, otherwise <addr> is
6787 <fn> is the callback.
6788 The register* functions return <fn> (which can then be passed to unregister*
6792 \begin_layout Itemize
6793 Not all cores support this, and it may be unsupported for some memory areas.
6796 \begin_layout Itemize
6797 The functions are passed two parameters: Address and value.
6800 \begin_layout Subsection
6801 memory.{,un}registertrace: Set/Clear trace hook
6804 \begin_layout Itemize
6805 Syntax: function memory.registertrace(number processor, function fn);
6808 \begin_layout Itemize
6809 Syntax: none memory.unregistertrace(number processor, function fn);
6812 \begin_layout Standard
6813 Add or remove trace callback.
6814 <processor> is system-dependent processor number (0 is usually main CPU).
6815 The function arguments work like in other (un)register* functions.
6818 \begin_layout Itemize
6819 The functions are passed two parameters: Trace CPU and Trace event string.
6822 \begin_layout Subsection
6823 memory.cheat: Set cheat
6826 \begin_layout Itemize
6827 Syntax: none memory.cheat([string marea, ] number addr, number value);
6830 \begin_layout Itemize
6831 Syntax: none memory.cheat([string marea, ] number addr);
6834 \begin_layout Standard
6835 Set or clear cheat (value <value>) on address <addr>.
6836 If <marea> is specified, <addr> is relative to that.
6837 If <value> is not speicified, clear a cheat.
6840 \begin_layout Itemize
6841 Not all cores support this, and it may be unsupported for some memory areas.
6844 \begin_layout Subsection
6845 memory.setxmask: Set global execute hook mask
6848 \begin_layout Itemize
6849 Syntax: none memory.setxmask(number mask)
6852 \begin_layout Standard
6853 Set the global execute hook mask to <mask>.
6854 The meaning of each bit is system-dependent, but bit 0 should be the main
6858 \begin_layout Subsection
6859 memory.mmap: Class MMAP_STRUCT
6862 \begin_layout Standard
6863 See class MMAP_STRUCT
6866 \begin_layout Standard
6867 \begin_inset Newpage pagebreak
6873 \begin_layout Section
6877 \begin_layout Standard
6878 Contains newer memory functions.
6881 \begin_layout Subsection
6882 memory2(): Get all memory area names.
6885 \begin_layout Itemize
6886 Syntax: table memory2()
6889 \begin_layout Standard
6890 Returns array of all valid memory area names.
6893 \begin_layout Subsection
6894 memory2.<marea>:info: Get memory area info
6897 \begin_layout Itemize
6898 Syntax: table memory2.<marea>:info()
6901 \begin_layout Standard
6902 Return table describing given memory area.
6903 Includes fields address, size, last, readonly, special and endian.
6906 \begin_layout Subsection
6907 memory2.<marea>:<op>: Read/Write memory
6910 \begin_layout Itemize
6911 Syntax: none memory2.<marea>:<op>(number offset, number value)
6914 \begin_layout Itemize
6915 Syntax: number memory2.<marea>:<op>(number offset)
6918 \begin_layout Standard
6919 Read/Write value from/to given memory area <marea> at given offset <offset>
6921 The value written is <value>.
6922 <Op> is of form: [i][s]<type>, where:
6925 \begin_layout Itemize
6926 <type> is one of 'byte', 'word', 'hword', 'dword', 'qword', 'float', 'double'.
6929 \begin_layout Itemize
6930 'i' signifies that the value is treated as opposite-to-normal endianess,
6933 \begin_layout Itemize
6934 's' signifies that value is treated as signed (not available for floating-point).
6937 \begin_layout Subsection
6938 memory2.<marea>:read: Scatter-gather value read
6941 \begin_layout Itemize
6942 Syntax: number memory2.<marea>:read(number addr...)
6945 \begin_layout Standard
6946 Read value from given memory area <marea> at byte offsets <addr>..., given
6947 in order of increasing significance.
6948 Value of true and false are special.
6949 True increments address by 1, and false decrements address by 1.
6952 \begin_layout Subsection
6953 memory2.<marea>:sread: Signed scatter-gather value read
6956 \begin_layout Itemize
6957 Syntax: number memory2.<marea>:sread(number addr...)
6960 \begin_layout Standard
6961 Like memory2.<marea>:read, but reads signed values.
6964 \begin_layout Subsection
6965 memory2.<marea>:write: Scatter-gather value write
6968 \begin_layout Itemize
6969 Syntax: number memory2.<marea>:write(number val, number addr...)
6972 \begin_layout Standard
6973 Write value <val> to given memory area <marea> at byte offsets <addr>..., given
6974 in order of increasing significance.
6975 Value of true and false are special.
6976 True increments address by 1, and false decrements address by 1.
6979 \begin_layout Subsection
6980 memory2.<marea>:cheat: Set/Clear cheat
6983 \begin_layout Itemize
6984 Syntax: none memory2.<marea>:cheat(number addr, [number value])
6987 \begin_layout Standard
6988 Set/Clear cheat at offset <addr> of memory area <marea>.
6989 If <value> is given, cheat with specified value is set.
6990 Otherwise cheat on address is removed.
6993 \begin_layout Subsection
6994 memory2.<marea>:sha256: SHA-256
6997 \begin_layout Itemize
6998 Syntax: string memory2.<marea>:sha256(number addr, number size[, number rows,
7002 \begin_layout Standard
7003 Compute SHA-256 of <rows> (default 1) chunks of <size> bytes each, starting
7004 from offset <addr> of area <marea>.
7005 The chunks are separated by <stride>.
7008 \begin_layout Subsection
7009 memory2.<marea>:skein: Skein-512-256
7012 \begin_layout Itemize
7013 Syntax: string memory2.<marea>:skein(number addr, number size[, number rows,
7017 \begin_layout Standard
7018 Same as memory2.<marea>:sha256, except with Skein-512-256 as hash function.
7021 \begin_layout Subsection
7022 memory2.<marea>:store{,cmp}: Copy region to Lua memory with compare
7025 \begin_layout Itemize
7026 Syntax: none memory2.<marea>:store(number addr, number daddr, number size[,
7027 number rows, number stride])
7030 \begin_layout Itemize
7031 Syntax: boolean memory2.<marea>:storecmp(number addr, number daddr, number
7032 size[, number rows, number stride])
7035 \begin_layout Standard
7036 Copy <rows> (default 1) chunks of <size> bytes each, starting from offset
7037 <addr> of area <marea>.
7038 The chunks are separated by <stride>.
7039 The target is Lua host memory, starting from offset <daddr>.
7042 \begin_layout Standard
7043 Additionally, the storecmp method returns false if target was modified (otherwis
7047 \begin_layout Subsection
7048 memory2.<marea>:readregion: Read region
7051 \begin_layout Itemize
7052 Syntax table memory2.<marea>:readregion(number addr, number size)
7055 \begin_layout Standard
7056 Read <size> bytes starting from <addr> in <marea> and return as array.
7059 \begin_layout Subsection
7060 memory2.<marea>:writeregion: Write region
7063 \begin_layout Itemize
7064 Syntax none memory2.<marea>:writeregion(number addr, table data)
7067 \begin_layout Standard
7068 Write array <data> to bytes starting from <addr> in <marea>.
7071 \begin_layout Subsection
7072 memory2.<marea>:register{read,write,exec}: Register hook
7075 \begin_layout Itemize
7076 Syntax: function memory2.<marea>:registerread(number addr, function fn);
7079 \begin_layout Itemize
7080 Syntax: function memory2.<marea>:registerwrite(number addr, function fn);
7083 \begin_layout Itemize
7084 Syntax: function memory2.<marea>:registerexec(number addr, function fn);
7087 \begin_layout Standard
7088 Register debug callback <fn> of specified type at offset <addr> of memory
7093 \begin_layout Subsection
7094 memory2.<marea>:unregister{read,write,exec}: Unregister hook
7097 \begin_layout Itemize
7098 Syntax: none memory2.<marea>:unregisterread(number addr, function fn);
7101 \begin_layout Itemize
7102 Syntax: none memory2.<marea>:unregisterwrite(number addr, function fn);
7105 \begin_layout Itemize
7106 Syntax: none memory2.<marea>:unregisterexec(number addr, function fn);
7109 \begin_layout Standard
7110 Unregister debug callback <fn> of specified type at offset <addr> of memory
7114 \begin_layout Standard
7115 \begin_inset Newpage pagebreak
7121 \begin_layout Section
7125 \begin_layout Standard
7126 Contains random number generation methods.
7127 These functions do not return reproducable results.
7130 \begin_layout Subsection
7131 random.boolean: Random boolean
7134 \begin_layout Itemize
7135 Syntax: boolean random.boolean()
7138 \begin_layout Standard
7139 Returns true or false at random (50-50 chance).
7142 \begin_layout Subsection
7143 random.integer: Random integer
7146 \begin_layout Itemize
7147 Syntax: number random.integer(number highplusone)
7150 \begin_layout Itemize
7151 Syntax: number random.integer(number low, number high)
7154 \begin_layout Standard
7155 With one argument, return random integer [0,<highplusone>) (upper end exclusive).
7156 With two arguments, return random integer [<low>,<high>] (both ends inclusive).
7159 \begin_layout Standard
7160 The returned numbers are from uniform distribution.
7163 \begin_layout Subsection
7164 random.float: Random float
7167 \begin_layout Itemize
7168 Syntax: number random.float()
7171 \begin_layout Standard
7172 Returns random decimal number [0,1).
7175 \begin_layout Subsection
7176 random.among: Random parameter
7179 \begin_layout Itemize
7180 Syntax: value random.among(value values...)
7183 \begin_layout Standard
7184 Returns random parameter value, picked at uniform.
7185 Multiple equivalent values are returned with higher chance.
7188 \begin_layout Subsection
7189 random.amongtable: Random from table
7192 \begin_layout Itemize
7193 Syntax: value random.amongtable(table tab)
7196 \begin_layout Standard
7197 Returns random value from table <tab>.
7198 As in random.among, no equality testing is done.
7201 \begin_layout Standard
7202 \begin_inset Newpage pagebreak
7208 \begin_layout Section
7212 \begin_layout Subsection
7213 zip.enumerate: Enumerate members in zipfile
7216 \begin_layout Itemize
7217 Syntax: Table zip.enumerate(string filename[, boolean invert])
7220 \begin_layout Standard
7221 Returns table of files in zip archive <filename>.
7222 If <invert> is true, instead of returning array of names, returns table
7223 with keys being member names and values being true.
7226 \begin_layout Subsection
7227 zip.writer: Class ZIPWRITER
7230 \begin_layout Standard
7231 See class ZIPWRITER.
7234 \begin_layout Standard
7235 \begin_inset Newpage pagebreak
7241 \begin_layout Section
7245 \begin_layout Standard
7246 Various callback-related functions.
7249 \begin_layout Subsection
7250 \begin_inset CommandInset label
7252 name "sub:callback.register:-Register-a"
7256 callback.register: Register a callback
7259 \begin_layout Itemize
7260 Syntax: function callback.register(string cbname, function cbfun);
7263 \begin_layout Standard
7264 Instruct function <cbfun> to be added to list of callbacks to call on event
7265 <cbname> (See section
7266 \begin_inset CommandInset ref
7268 reference "sec:Callbacks"
7273 The callback name does not have the 'on_' prefix (e.g.
7275 \begin_inset Quotes eld
7279 \begin_inset Quotes erd
7286 \begin_layout Subsection
7287 \begin_inset CommandInset label
7289 name "sub:callback.unregister:-Unregister-"
7293 callback.unregister: Unregister a callback
7296 \begin_layout Itemize
7297 Syntax: function callback.unregister(string cbname, function cbfun);
7300 \begin_layout Standard
7301 Instruct function <cbfun> to be removed from list of callbacks to call on
7305 \begin_layout Subsection
7306 callback.<cbname>:register: Register callback
7309 \begin_layout Itemize
7310 Syntax: function callback.<cbname>:register(function cbfun)
7313 \begin_layout Standard
7314 Synonym for callback.register (section
7315 \begin_inset CommandInset ref
7317 reference "sub:callback.register:-Register-a"
7321 ), albeit with callback name specified differently.
7324 \begin_layout Subsection
7325 callback.<cbname>:unregister: Register callback
7328 \begin_layout Itemize
7329 Syntax: function callback.<cbname>:unregister(function cbfun)
7332 \begin_layout Standard
7333 Synonym for callback.unregister (section
7334 \begin_inset CommandInset ref
7336 reference "sub:callback.unregister:-Unregister-"
7340 ), albeit with callback name specified differently.
7343 \begin_layout Section
7347 \begin_layout Standard
7348 Various bsnes-specific functions.
7351 \begin_layout Subsection
7352 bsnes.dump_sprite: Dump a sprite
7355 \begin_layout Itemize
7356 Syntax: BITMAP bsnes.dump_sprite([string marea, ] number addr, number width,
7357 number height[, number stride])
7360 \begin_layout Standard
7361 Dumps given sprite (in native format) from memory.
7362 memory area is usually
7363 \begin_inset Quotes eld
7367 \begin_inset Quotes erd
7371 <Width> and <height> are given in 8x8 blocks.
7372 <Stride> overrides row stride (default 512).
7375 \begin_layout Subsection
7376 bsnes.dump_palette: Dump a palette
7379 \begin_layout Itemize
7380 Syntax: PALETTE bsnes.dump_palette([string marea, ] number addr, bool full256,
7384 \begin_layout Standard
7385 Dumps a palette from memory.
7386 memory area is usually
7387 \begin_inset Quotes eld
7391 \begin_inset Quotes erd
7395 If <full256> is true, 256 colors are dumped (otherwise 16).
7396 If <first_trans> is true, first color is forced transparent.
7399 \begin_layout Subsection
7400 bsnes.enablelayer: Set layer visibility
7403 \begin_layout Itemize
7404 Syntax: none bsnes.enablelayer(number layer, number priority, boolean enabled)
7407 \begin_layout Standard
7408 Enable or disable specified layer at specified priority.
7411 \begin_layout Subsection
7412 bsnes.redump_sprite: Redump a sprite
7415 \begin_layout Itemize
7416 Syntax: none bsnes.redump_sprite(BITMAP bitmap, [string marea, ] number addr[,
7420 \begin_layout Standard
7421 Like bsnes.dump_sprite, but instead dumps to specified bitmap <bitmap>.
7422 The specified bitmap must have size multiple of 8x8.
7425 \begin_layout Subsection
7426 bsnes.redump_palette: Redump a palette
7429 \begin_layout Itemize
7430 Syntax: none bsnes.dump_palette(PALETTE pal, [string marea, ] number addr,
7434 \begin_layout Standard
7435 Like bsnes.dump_palette, but instead dumps to specified palette <pal>.
7436 The specified palette must have either 16 or 256 colors.
7439 \begin_layout Section
7440 extensions to table string
7443 \begin_layout Subsection
7444 string.charU: string.char, UTF-8 version.
7447 \begin_layout Itemize
7448 Syntax: string string.charU(number n...)
7451 \begin_layout Standard
7452 Like Lua string.char(), but works in terms of Unicode codepoints.
7453 The returned string is UTF-8.
7456 \begin_layout Subsection
7457 string.byteU: string.byte, UTF-8 version.
7460 \begin_layout Itemize
7462 string.byteU(string str[, number i[, number j]])
7465 \begin_layout Standard
7466 Like string.byte(), but works in terms of Unicode codepoints.
7467 The input string <str> is assumed UTF-8.
7470 \begin_layout Section
7474 \begin_layout Standard
7475 Contains copy of global variables from time of Lua initialization.
7479 \begin_layout Standard
7480 \begin_inset Newpage pagebreak
7486 \begin_layout Section
7487 \begin_inset CommandInset label
7489 name "sec:Callbacks"
7496 \begin_layout Standard
7497 Various callbacks to Lua that can occur.
7500 \begin_layout Subsection
7501 on_paint: Screen is being painted
7504 \begin_layout Itemize
7505 Callback: on_paint(bool not_synth)
7508 \begin_layout Standard
7509 Called when screen is being painted.
7510 Any gui.* calls requiring graphic context draw on the screen.
7513 \begin_layout Itemize
7514 not_synth is true if this hook is being called in response to received frame,
7518 \begin_layout Subsection
7519 on_video: Dumped video frame is being painted
7522 \begin_layout Itemize
7523 Callback: on_video()
7526 \begin_layout Standard
7527 Called when video dump frame is being painted.
7528 Any gui.* calls requiring graphic context draw on the video.
7531 \begin_layout Subsection
7532 on_frame_emulated: Frame emulation complete
7535 \begin_layout Itemize
7536 Callback: on_frame_emulated()
7539 \begin_layout Standard
7540 Called when emulating frame has completed and on_paint()/on_video() calls
7541 are about to be issued.
7544 \begin_layout Subsection
7545 on_frame: Frame emulation starting.
7548 \begin_layout Itemize
7549 Callback: on_frame()
7552 \begin_layout Standard
7553 Called on each starting whole frame.
7556 \begin_layout Subsection
7557 on_rewind: Movie rewound to beginning
7560 \begin_layout Itemize
7561 Callback: on_rewind()
7564 \begin_layout Standard
7565 Called when rewind movie to beginning has completed.
7568 \begin_layout Subsection
7569 on_pre_load: Load operation is about to start
7572 \begin_layout Itemize
7573 Callback: on_pre_load(string name)
7576 \begin_layout Standard
7577 Called just before savestate/movie load occurs (note: loads are always delayed,
7578 so this occurs even when load was initiated by lua).
7581 \begin_layout Subsection
7582 on_err_Load: Load failed
7585 \begin_layout Itemize
7586 Callback: on_err_load(string name)
7589 \begin_layout Standard
7590 Called if loadstate goes wrong.
7593 \begin_layout Subsection
7594 on_post_load: Load completed
7597 \begin_layout Itemize
7598 Callback: on_post_load(string name, boolean was_savestate)
7601 \begin_layout Standard
7602 Called on successful loadstate.
7603 was_savestate gives if this was a savestate or a movie.
7606 \begin_layout Subsection
7607 on_pre_save: Save operation is about to start
7610 \begin_layout Itemize
7611 Callback: on_pre_save(string name, boolean is_savestate)
7614 \begin_layout Standard
7615 Called just before savestate save occurs (note: movie saves are synchronous
7616 and won't trigger these callbacks if called from Lua).
7619 \begin_layout Subsection
7620 on_err_save: Save failed
7623 \begin_layout Itemize
7624 Callback: on_err_save(string name)
7627 \begin_layout Standard
7628 Called if savestate goes wrong.
7631 \begin_layout Subsection
7632 on_post_save: Save completed
7635 \begin_layout Itemize
7636 Callback: on_post_save(string name, boolean is_savestate)
7639 \begin_layout Standard
7640 Called on successful savaestate.
7641 is_savestate gives if this was a savestate or a movie.
7644 \begin_layout Subsection
7645 on_quit: Emulator is shutting down
7648 \begin_layout Itemize
7652 \begin_layout Standard
7653 Called when emulator is shutting down.
7656 \begin_layout Subsection
7657 on_input: Polling for input
7660 \begin_layout Standard
7661 Called when emulator is just sending input to bsnes core.
7662 Warning: This is called even in readonly mode, but the results are ignored.
7665 \begin_layout Subsection
7666 on_reset: System has been reset
7669 \begin_layout Itemize
7670 Callback: on_reset()
7673 \begin_layout Standard
7674 Called when system is reset.
7677 \begin_layout Subsection
7678 on_readwrite: Entered readwrite mode
7681 \begin_layout Itemize
7682 Callback: on_readwrite()
7685 \begin_layout Standard
7686 Called when moving into readwrite mode as result of
7687 \begin_inset Quotes eld
7691 \begin_inset Quotes erd
7694 command (note: moving to rwmode by Lua won't trigger this, as per recursive
7698 \begin_layout Subsection
7699 on_snoop/on_snoop2: Snoop core controller reads
7702 \begin_layout Itemize
7703 Callback: on_snoop(number port, number controller, number index, number
7707 \begin_layout Itemize
7708 Callback: on_snoop2(number port, number controller, number index, number
7712 \begin_layout Standard
7713 Called each time bsnes asks for input.
7714 The value is the final value to be sent to bsnes core (readonly mode, autohold
7715 and autofire have been taken into account).
7716 Might be useful when translating movies to format suitable for console
7718 Note: There is no way to modify the value to be sent.
7721 \begin_layout Itemize
7722 On_snoop2 is called instead of on_snoop if defined.
7723 Reserves port 0 for system, having first user port be port 1.
7726 \begin_layout Subsection
7727 on_keyhook: Hooked key/axis has been moved
7730 \begin_layout Itemize
7731 Callback: on_keyhook(string keyname, table state)
7734 \begin_layout Standard
7735 Sent when key that has keyhook events requested changes state.
7736 Keyname is name of the key (group) and state is the state (same kind as
7737 table values in input.raw).
7740 \begin_layout Subsection
7744 \begin_layout Itemize
7748 \begin_layout Standard
7749 Called when requested by set_idle_timeout(), the timeout has expired and
7750 emulator is waiting.
7753 \begin_layout Subsection
7754 on_timer: Timer event
7757 \begin_layout Itemize
7758 Callback: on_timer()
7761 \begin_layout Standard
7762 Called when requested by set_idle_timeout() and the timeout has expired
7763 (regardless if emulator is waiting).
7766 \begin_layout Subsection
7767 on_set_rewind: Rewind point has been set
7770 \begin_layout Itemize
7771 Callback: on_set_rewind(UNSAFEREWIND r)
7774 \begin_layout Standard
7775 Called when unsafe rewind object has been constructed.
7778 \begin_layout Subsection
7779 on_pre_rewind: Rewind is about to occur
7782 \begin_layout Itemize
7783 Callback: on_pre_rewind()
7786 \begin_layout Standard
7787 Called just before unsafe rewind is about to occur.
7790 \begin_layout Subsection
7791 on_post_rewind: Rewind has occured
7794 \begin_layout Itemize
7795 Callback: on_post_rewind()
7798 \begin_layout Standard
7799 Called just after unsafe rewind has occured.
7802 \begin_layout Subsection
7803 on_button: Button has been pressed
7806 \begin_layout Itemize
7807 Callback: on_button(number port, number controller, number index, string
7811 \begin_layout Standard
7812 Called on controller button press, with following parameters:
7815 \begin_layout Itemize
7816 port: Port number (0 is system)
7819 \begin_layout Itemize
7820 controller: Controller within port
7823 \begin_layout Itemize
7824 index: Index of button.
7827 \begin_layout Itemize
7828 type: Type of event, one of:
7832 \begin_layout Itemize
7833 \begin_inset Quotes eld
7837 \begin_inset Quotes erd
7840 : Button was pressed.
7843 \begin_layout Itemize
7844 \begin_inset Quotes eld
7848 \begin_inset Quotes erd
7851 : Button was released.
7854 \begin_layout Itemize
7855 \begin_inset Quotes eld
7859 \begin_inset Quotes erd
7865 \begin_layout Itemize
7866 \begin_inset Quotes eld
7870 \begin_inset Quotes erd
7873 : Released from hold.
7876 \begin_layout Itemize
7877 \begin_inset Quotes eld
7881 \begin_inset Quotes erd
7884 : Typing input on button.
7887 \begin_layout Itemize
7888 \begin_inset Quotes eld
7892 \begin_inset Quotes erd
7895 : Typing input undone.
7898 \begin_layout Itemize
7899 \begin_inset Quotes eld
7902 autofire <duty> <cycle>
7903 \begin_inset Quotes erd
7906 : Autofire with specifie duty and cycle.
7909 \begin_layout Itemize
7910 \begin_inset Quotes eld
7914 \begin_inset Quotes erd
7920 \begin_layout Itemize
7921 \begin_inset Quotes eld
7925 \begin_inset Quotes erd
7928 : Analog action on axis.
7932 \begin_layout Subsection
7933 on_movie_lost: Movie data is about to be lost
7936 \begin_layout Itemize
7937 Callback: on_movie_lost(STRING kind)
7940 \begin_layout Standard
7941 Called just before something would happen that could lose movie data.
7945 \begin_layout Itemize
7946 readwrite: Switching to readwrite mode.
7949 \begin_layout Itemize
7950 reload: ROM is being reloaded in readwrite mode.
7953 \begin_layout Itemize
7954 load: New movie is being loaded.
7957 \begin_layout Itemize
7958 unsaferewind: Unsafe rewind is happening.
7961 \begin_layout Subsection
7962 on_latch: Latch line is rising
7965 \begin_layout Itemize
7966 Callback: on_latch(<core-dependent-parameters>)
7969 \begin_layout Standard
7970 Called when latch line for controller is rising.
7971 Some cores may not support this.
7974 \begin_layout Section
7975 System-dependent behaviour
7978 \begin_layout Subsection
7982 \begin_layout Itemize
7983 Registers are: pbpc, pb, pc, r0, r1, r2, r3, r4, r5, a, x, y, z, s, d, db,
7984 p, e, irq, wai, mdr, vector, aa, rd, sp, dp, p_n, p_v, p_m, p_x, p_d, p_i,
7985 p_z, p_c, ppu_display_disabled, ppu_oam_priority, ppu_bg_tilesize[0], ppu_bg_ti
7986 lesize[1], ppu_bg_tilesize[2], ppu_bg_tilesize[3], ppu_bg3_priority, ppu_mosaic_
7987 enabled[0], ppu_mosaic_enabled[1], ppu_mosaic_enabled[2], ppu_mosaic_enabled[3],
7988 ppu_vram_incmode, ppu_mode7_vflip, ppu_mode7_hflip, ppu_window1_enabled[0],
7989 ppu_window1_enabled[1], ppu_window1_enabled[2], ppu_window1_enabled[3],
7990 ppu_window1_enabled[4], ppu_window1_enabled[5], ppu_window1_invert[0],
7991 ppu_window1_invert[1], ppu_window1_invert[2], ppu_window1_invert[3], ppu_window
7992 1_invert[4], ppu_window1_invert[5], ppu_window2_enabled[0], ppu_window2_enabled[
7993 1], ppu_window2_enabled[2], ppu_window2_enabled[3], ppu_window2_enabled[4],
7994 ppu_window2_enabled[5], ppu_window2_invert[0], ppu_window2_invert[1], ppu_windo
7995 w2_invert[2], ppu_window2_invert[3], ppu_window2_invert[4], ppu_window2_invert[5
7996 ], ppu_bg_enabled[0], ppu_bg_enabled[1], ppu_bg_enabled[2], ppu_bg_enabled[3],
7997 ppu_bg_enabled[4], ppu_bgsub_enabled[0], ppu_bgsub_enabled[1], ppu_bgsub_enable
7998 d[2], ppu_bgsub_enabled[3], ppu_bgsub_enabled[4], ppu_window_enabled[0],
7999 ppu_window_enabled[1], ppu_window_enabled[2], ppu_window_enabled[3], ppu_window
8000 _enabled[4], ppu_sub_window_enabled[0], ppu_sub_window_enabled[1], ppu_sub_windo
8001 w_enabled[2], ppu_sub_window_enabled[3], ppu_sub_window_enabled[4], ppu_addsub_m
8002 ode, ppu_direct_color, ppu_color_mode, ppu_color_halve, ppu_color_enabled[0],
8003 ppu_color_enabled[1], ppu_color_enabled[2], ppu_color_enabled[3], ppu_color_ena
8004 bled[4], ppu_color_enabled[5], ppu_mode7_extbg, ppu_pseudo_hires, ppu_overscan,
8005 ppu_oam_interlace, ppu_interlace, ppu_latch_hcounter, ppu_latch_vcounter,
8006 ppu_counters_latched, ppu_time_over, ppu_range_over, ppu_ppu1_mdr, ppu_ppu2_mdr
8007 , ppu_bg_y[0], ppu_bg_y[1], ppu_bg_y[2], ppu_bg_y[3], ppu_ioamaddr, ppu_icgramad
8008 dr, ppu_display_brightness, ppu_oam_basesize, ppu_oam_nameselect, ppu_oam_tdaddr
8009 , ppu_oam_baseaddr, ppu_oam_addr, ppu_oam_firstsprite, ppu_oam_latchdata,
8010 ppu_bg_mode, ppu_mosaic_size, ppu_mosaic_countdown, ppu_bg_scaddr[0], ppu_bg_sc
8011 addr[1], ppu_bg_scaddr[2], ppu_bg_scaddr[3], ppu_bg_scsize[0], ppu_bg_scsize[1],
8012 ppu_bg_scsize[2], ppu_bg_scsize[3], ppu_bg_tdaddr[0], ppu_bg_tdaddr[1],
8013 ppu_bg_tdaddr[2], ppu_bg_tdaddr[3], ppu_bg_ofslatch, ppu_m7_hofs, ppu_m7_vofs,
8014 ppu_bg_hofs[0], ppu_bg_hofs[1], ppu_bg_hofs[2], ppu_bg_hofs[3], ppu_bg_vofs[0],
8015 ppu_bg_vofs[1], ppu_bg_vofs[2], ppu_bg_vofs[3], ppu_vram_mapping, ppu_vram_incs
8016 ize, ppu_vram_addr, ppu_mode7_repeat, ppu_m7_latch, ppu_m7a, ppu_m7b, ppu_m7c,
8017 ppu_m7d, ppu_m7x, ppu_m7y, ppu_cgram_addr, ppu_cgram_latchdata, ppu_window1_lef
8018 t, ppu_window1_right, ppu_window2_left, ppu_window2_right, ppu_window_mask[0],
8019 ppu_window_mask[1], ppu_window_mask[2], ppu_window_mask[3], ppu_window_mask[4],
8020 ppu_window_mask[5], ppu_color_mask, ppu_colorsub_mask, ppu_color_r, ppu_color_g
8021 , ppu_color_b, ppu_color_rgb, ppu_scanlines, ppu_hcounter, ppu_vcounter,
8022 ppu_vram_readbuffer, ppu_oam_itemcount, ppu_oam_tilecount,
8025 \begin_layout Itemize
8026 on_latch has no parameters
8029 \begin_layout Itemize
8030 CPU 0 is S-CPU, 1 is S-SMP.
8033 \begin_layout Itemize
8034 Cheats are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_{RAM,ROM}.
8037 \begin_layout Itemize
8038 Read/Write/Execute hooks are supported for ROM, SRAM, WRAM, BSXFLASH, SLOT{A,B}_
8042 \begin_layout Itemize
8043 Memory areas are: WRAM, APURAM, VRAM, OAM, CGRAM, RTC, DSPRAM, DSPPROM,
8044 DSPDROM, SRAM, ROM, BUS, PTRTABLE, CPU_STATE, PPU_STATE, SMP_STATE, DSP_STATE,
8045 BSXFLASH, BSX_RAM, BSX_PRAM, SLOTA_ROM, SLOTB_ROM, SLOTA_RAM, SLOTB_RAM,
8046 GBCPU_STATE, GBROM, GBRAM, GBWRAM, GBHRAM.
8049 \begin_layout Subsection
8053 \begin_layout Itemize
8054 Registers are: wrambank, cyclecounter, pc, sp, hf1, hf2, zf, cf, a, b, c,
8058 \begin_layout Itemize
8059 on_latch is not supported
8062 \begin_layout Itemize
8066 \begin_layout Itemize
8067 Cheats are supported for ROM, SRAM and WRAM.
8070 \begin_layout Itemize
8071 Read/Write/Execute hooks are supported for ROM (read/execute only), SRAM
8075 \begin_layout Itemize
8076 Memory areas are: SRAM, WRAM, VRAM, IOAMHRAM, ROM, BUS.