Fix compilation if wxString is wchar_t-based
[lsnes.git] / manual.lyx
blob85d71413c0cc0afa580f5c9bd6c9298b01588679
1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
2 \lyxformat 413
3 \begin_document
4 \begin_header
5 \textclass article
6 \use_default_options true
7 \maintain_unincluded_children false
8 \language finnish
9 \language_package default
10 \inputencoding auto
11 \fontencoding global
12 \font_roman default
13 \font_sans default
14 \font_typewriter default
15 \font_default_family default
16 \use_non_tex_fonts false
17 \font_sc false
18 \font_osf false
19 \font_sf_scale 100
20 \font_tt_scale 100
22 \graphics default
23 \default_output_format default
24 \output_sync 0
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
28 \use_hyperref false
29 \papersize default
30 \use_geometry false
31 \use_amsmath 1
32 \use_esint 1
33 \use_mhchem 1
34 \use_mathdots 1
35 \cite_engine basic
36 \use_bibtopic false
37 \use_indices false
38 \paperorientation portrait
39 \suppress_date false
40 \use_refstyle 1
41 \index Hakusana
42 \shortcut idx
43 \color #008000
44 \end_index
45 \secnumdepth 3
46 \tocdepth 3
47 \paragraph_separation indent
48 \paragraph_indentation default
49 \quotes_language english
50 \papercolumns 1
51 \papersides 1
52 \paperpagestyle default
53 \tracking_changes false
54 \output_changes false
55 \html_math_output 0
56 \html_css_as_file 0
57 \html_be_strict false
58 \end_header
60 \begin_body
62 \begin_layout Section
63 Introduction
64 \end_layout
66 \begin_layout Standard
67 lsnes is SNES rerecording emulator based on bsnes core.
68 \end_layout
70 \begin_layout Section
71 Dependencies
72 \end_layout
74 \begin_layout Enumerate
75 bsnes libsnes (for bsnes SNES core)
76 \end_layout
78 \begin_deeper
79 \begin_layout Enumerate
80 v084-v087 (v084 or v085 for delayreset support)
81 \end_layout
83 \begin_layout Enumerate
84 accuracy or compatiblity core with debugger enabled.
85 \end_layout
87 \begin_layout Enumerate
88 Patched version (using included 7 patches)
89 \end_layout
91 \end_deeper
92 \begin_layout Enumerate
93 gambatte (for gambatte core)
94 \end_layout
96 \begin_deeper
97 \begin_layout Enumerate
98 SVN r320, r358 or r364
99 \end_layout
101 \begin_layout Enumerate
102 Patched with included patches
103 \end_layout
105 \end_deeper
106 \begin_layout Enumerate
107 Zlib
108 \end_layout
110 \begin_layout Enumerate
111 boost_iostreams
112 \end_layout
114 \begin_layout Enumerate
115 boost_filesystem
116 \end_layout
118 \begin_layout Enumerate
119 boost_thread (if native std::thread is not available)
120 \end_layout
122 \begin_layout Enumerate
123 libsdl (SDL only)
124 \end_layout
126 \begin_layout Enumerate
127 sdlmain (SDL only, part of SDL)
128 \end_layout
130 \begin_layout Enumerate
131 boost_conversion (this is header-only library)
132 \end_layout
134 \begin_layout Enumerate
135 libswscale (wxwidgets graphics only)
136 \end_layout
138 \begin_layout Enumerate
139 Portaudio (portaudio sound only)
140 \end_layout
142 \begin_layout Enumerate
143 libao (libao sound only)
144 \end_layout
146 \begin_layout Enumerate
147 Lua (if Lua support is needed) version 5.1.X or 5.2.X
148 \end_layout
150 \begin_layout Enumerate
151 G++ 4.6 or 4.7
152 \end_layout
154 \begin_layout Enumerate
155 libopus (optional, for commentary track tool)
156 \end_layout
158 \begin_layout Section
159 Building
160 \end_layout
162 \begin_layout Itemize
163 Copy bsnes sources (the bsnes subdirectory) to subdirectory 'bsnes' (for
164  bsnes core).
165 \end_layout
167 \begin_layout Itemize
168 Copy gambatte sources to subdirectory 'gambatte' (for gambatte core).
169 \end_layout
171 \begin_layout Itemize
172 Patch the bsnes sources with included patches (directory 'bsnes-patches/<version
173 >', bsnes core)
174 \end_layout
176 \begin_layout Itemize
177 Patch the gambatte sources with included patches (directory 'gambatte-patches/<v
178 ersion>', gambatte core)
179 \end_layout
181 \begin_layout Itemize
182 Edit options.build (or copy of that file)
183 \end_layout
185 \begin_layout Itemize
186 Run make (passing 'OPTIONS=<filename>' if using something else than options.build
188 \end_layout
190 \begin_layout Section
191 Command line options
192 \end_layout
194 \begin_layout Subsection
195 ROM options
196 \end_layout
198 \begin_layout Subsubsection
199 --rom=<file> (lsnes/SDL, lsnes/wxwidgets, lsnes-avidump)
200 \end_layout
202 \begin_layout Standard
203 Load <file> as ROM.
204 \end_layout
206 \begin_layout Subsubsection
207 <file> (lsnes/wxwidgets)
208 \end_layout
210 \begin_layout Standard
211 Load <file> as ROM.
212 \end_layout
214 \begin_layout Subsection
215 Session options
216 \end_layout
218 \begin_layout Subsubsection
219 --pause
220 \end_layout
222 \begin_layout Standard
223 Start paused
224 \end_layout
226 \begin_layout Subsubsection
227 <filename> (lsnes/SDL, lsnes-avidump, movieinfo)
228 \end_layout
230 \begin_layout Standard
231 Load <filename> as movie or savestate file.
232  All other session options are ignored.
233 \end_layout
235 \begin_layout Subsubsection
236 --port1=<device> (lsnes/SDL, bsnes core only)
237 \end_layout
239 \begin_layout Standard
240 Set type of port1.
241  Valid values are:
242 \end_layout
244 \begin_layout Itemize
245 none: No device connected
246 \end_layout
248 \begin_layout Itemize
249 gamepad: One gamepad (the default)
250 \end_layout
252 \begin_layout Itemize
253 multitap: Four gamepads (warning: makes most games refuse to start)
254 \end_layout
256 \begin_layout Itemize
257 mouse: Mouse.
258 \end_layout
260 \begin_layout Subsubsection
261 --port2=<type> (lsnes/SDL, bsnes core only)
262 \end_layout
264 \begin_layout Standard
265 Set type of port2.
266  Valid values are:
267 \end_layout
269 \begin_layout Itemize
270 none: No device connected (the default)
271 \end_layout
273 \begin_layout Itemize
274 gamepad: One gamepad
275 \end_layout
277 \begin_layout Itemize
278 multitap: Four gamepads.
279 \end_layout
281 \begin_layout Itemize
282 mouse: Mouse
283 \end_layout
285 \begin_layout Itemize
286 superscope: Super Scope
287 \end_layout
289 \begin_layout Itemize
290 justifier: One justifier
291 \end_layout
293 \begin_layout Itemize
294 justifiers: Two justifiers
295 \end_layout
297 \begin_layout Subsubsection
298 --gamename=<name> (lsnes/SDL)
299 \end_layout
301 \begin_layout Standard
302 Set the name of game to <name>.
303  Default is blank.
304 \end_layout
306 \begin_layout Subsubsection
307 --author=<name> (lsnes/SDL)
308 \end_layout
310 \begin_layout Standard
311 Add author with full name of <name> (no nickname).
312 \end_layout
314 \begin_layout Subsubsection
315 --author=|<name> (lsnes/SDL)
316 \end_layout
318 \begin_layout Standard
319 Add author with nickname of <name> (no full name).
320 \end_layout
322 \begin_layout Subsubsection
323 --author=<fullname>|<nickname> (lsnes/SDL)
324 \end_layout
326 \begin_layout Standard
327 Add author with full name of <fullname> and nickname of <nickname>.
328 \end_layout
330 \begin_layout Subsubsection
331 --rtc-second=<value> (lsnes/SDL)
332 \end_layout
334 \begin_layout Standard
335 Set RTC second (0 is 1st January 1970 00:00:00Z).
336  Default is 1,000,000,000.
337 \end_layout
339 \begin_layout Subsubsection
340 --rtc-subsecond=<value> (lsnes/SDL)
341 \end_layout
343 \begin_layout Standard
344 Set RTC subsecond.
345  Range is 0-.
346  Unit is CPU cycle.
347  Default is 0.
348 \end_layout
350 \begin_layout Subsubsection
351 --anchor-savestate=<file> (lsnes/SDL)
352 \end_layout
354 \begin_layout Standard
355 Set the anchor savestate file.
356 \end_layout
358 \begin_layout Subsubsection
359 --load=<file> (lsnes/wxwidgets)
360 \end_layout
362 \begin_layout Standard
363 After loading the ROM, load <file> as savestate/movie.
364 \end_layout
366 \begin_layout Subsection
367 Misc.
368  options:
369 \end_layout
371 \begin_layout Subsubsection
372 --run=<file> (lsnes/SDL)
373 \end_layout
375 \begin_layout Standard
376 After running main RC file, run this file.
377  If multiple are specified, these execute in order specified.
378 \end_layout
380 \begin_layout Subsubsection
381 --lua=<file> (lsnes/wxwidgets)
382 \end_layout
384 \begin_layout Standard
385 Run this Lua file on startup
386 \end_layout
388 \begin_layout Subsection
389 dump options (lsnes-dumpavi only)
390 \end_layout
392 \begin_layout Subsubsection
393 --dumper=<dumper>
394 \end_layout
396 \begin_layout Standard
397 Set the dumper to use (required).
398  Use 'list' for listing of known dumpers.
399 \end_layout
401 \begin_layout Subsubsection
402 --mode=<mode>
403 \end_layout
405 \begin_layout Standard
406 Set the mode to use (required for dumpers with multiple modes, forbidden
407  otherwise).
408  Use 'list' for known modes.
409 \end_layout
411 \begin_layout Subsubsection
412 --prefix=<prefix>
413 \end_layout
415 \begin_layout Standard
416 Set dump prefix.
417  Default is 
418 \begin_inset Quotes eld
419 \end_inset
421 avidump
422 \begin_inset Quotes erd
423 \end_inset
426 \end_layout
428 \begin_layout Subsubsection
429 --option=<name>=<value>
430 \end_layout
432 \begin_layout Standard
433 Set option <name> to value <value>.
434 \end_layout
436 \begin_layout Subsubsection
437 --length=<length>
438 \end_layout
440 \begin_layout Standard
441 Set number of frames to dump.
442  Mandatory.
443 \end_layout
445 \begin_layout Subsubsection
446 --lua=<script>
447 \end_layout
449 \begin_layout Standard
450 Run specified lua script (lsnes-dumpavi does not have initialization files).
451 \end_layout
453 \begin_layout Subsubsection
454 --load-library=<library>
455 \end_layout
457 \begin_layout Standard
458 Load the specified shared object / dynamic library / dynamic link library.
459 \end_layout
461 \begin_layout Section
462 Startup file lsnes.rc
463 \end_layout
465 \begin_layout Standard
466 Upon startup, lsnes (lsnes/SDL only) executes file lsnes.rc as commands.
467  This file is located in:
468 \end_layout
470 \begin_layout Itemize
471 Windows: %APPDATA%
472 \backslash
473 lsnes
474 \backslash
475 lsnes.rc (if %APPDATA% exists)
476 \end_layout
478 \begin_layout Itemize
479 Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME exists)
480 \end_layout
482 \begin_layout Itemize
483 Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
484 \end_layout
486 \begin_layout Itemize
487 All: ./lsnes.rc (fallback default).
488 \end_layout
490 \begin_layout Standard
491 If leading directories do not exist, attempt to create them is made.
492 \end_layout
494 \begin_layout Section
495 Internal commands
496 \end_layout
498 \begin_layout Itemize
499 Commands beginning with '*' invoke the corresponding command without alias
500  expansion.
501 \end_layout
503 \begin_layout Itemize
504 If command starts with '+' (after possible '*'), the command is executed
505  as-is when button is pressed, and when button is released, it is executed
506  with '+' replaced by '-'.
507 \end_layout
509 \begin_layout Itemize
510 Commands without '+' execute only on negative edge (release).
511 \end_layout
513 \begin_layout Subsection
514 Settings:
515 \end_layout
517 \begin_layout Standard
518 Settings control various aspects of emulator behaviour.
519 \end_layout
521 \begin_layout Subsubsection
522 set-setting <setting> <value>
523 \end_layout
525 \begin_layout Standard
526 Sets setting <setting> to value <value> (may be empty).
527 \end_layout
529 \begin_layout Subsubsection
530 unset-setting <setting>
531 \end_layout
533 \begin_layout Standard
534 Try to unset setting <setting> (not all settings can be unset).
535 \end_layout
537 \begin_layout Subsubsection
538 get-setting <setting>
539 \end_layout
541 \begin_layout Standard
542 Read value of setting <setting>
543 \end_layout
545 \begin_layout Subsubsection
546 show-settings
547 \end_layout
549 \begin_layout Standard
550 Print names and values of all settings.
551 \end_layout
553 \begin_layout Subsection
554 Keybindings
555 \end_layout
557 \begin_layout Standard
558 Keybindings bind commands or aliases to keys (or pseudo-keys).
560 \end_layout
562 \begin_layout Standard
563 Notes:
564 \end_layout
566 \begin_layout Itemize
567 Do not bind edge active (+/-) commands to keys with modifiers, that won't
568  work right!
569 \end_layout
571 \begin_layout Itemize
572 Names of keys and modifiers are platform-dependent.
573 \end_layout
575 \begin_layout Itemize
576 Be careful before binding pseudo-keys (such as joystick axes, buttons or
577  hats) with modifiers.
578  That may or may not work right.
579 \end_layout
581 \begin_layout Subsubsection
582 bind-key [<mod>/<modmask>] <key> <command>
583 \end_layout
585 \begin_layout Standard
586 Bind <command> to key <key> (activating if modifiers in <modmask> (comma-seperat
587 ed list) are set as <mod> (comma-seperated list).
588 \end_layout
590 \begin_layout Standard
591 The names of keys and modifiers are platform-dependent.
592 \end_layout
594 \begin_layout Subsubsection
595 unbind-key [<mod>/<modmask>] <key>
596 \end_layout
598 \begin_layout Standard
599 Unbind command from <key> (with specified <mod> and <modmask>).
600 \end_layout
602 \begin_layout Subsubsection
603 set-axis <axis> [disabled | axis | axis-inverse | pressure0- | pressure0+
604  | pressure-0 | pressure-+ | pressure+0 | pressure+-] [minus=<val>] [zero=<val>]
605  [plus=<val>] [tolerance=<val>]
606 \end_layout
608 \begin_layout Standard
609 Set axis parameters for axis <axis>.
610 \end_layout
612 \begin_layout Itemize
613 disabled: Disable axis
614 \end_layout
616 \begin_layout Itemize
617 axis: Normal axis
618 \end_layout
620 \begin_layout Itemize
621 axis-inverse: Inverse axis
622 \end_layout
624 \begin_layout Itemize
625 pressure0-: Pressure sensitive.
626  Released at 0, pressed at -.
627 \end_layout
629 \begin_layout Itemize
630 pressure0+: Pressure sensitive.
631  Released at 0, pressed at +.
632 \end_layout
634 \begin_layout Itemize
635 pressure-0: Pressure sensitive.
636  Released at -, pressed at 0.
637 \end_layout
639 \begin_layout Itemize
640 pressure-+: Pressure sensitive.
641  Released at -, pressed at +.
642 \end_layout
644 \begin_layout Itemize
645 pressure+0: Pressure sensitive.
646  Released at +, pressed at 0.
647 \end_layout
649 \begin_layout Itemize
650 pressure+-: Pressure sensitive.
651  Released at +, pressed at -.
652 \end_layout
654 \begin_layout Itemize
655 minus=<val>: Calibration at extreme minus position (-32768-32767)
656 \end_layout
658 \begin_layout Itemize
659 zero=<val>: Calibration at neutral position (-32768-32767)
660 \end_layout
662 \begin_layout Itemize
663 plus=<val>: Calibration at extreme plus position (-32768-32767)
664 \end_layout
666 \begin_layout Itemize
667 tolerance=<value>: Center band tolerance (0<x<1).
668  The smaller the value, the more sensitive the control is.
669 \end_layout
671 \begin_layout Subsubsection
672 show-bindings
673 \end_layout
675 \begin_layout Standard
676 Print all key bindings in effect.
677 \end_layout
679 \begin_layout Subsection
680 Aliases
681 \end_layout
683 \begin_layout Standard
684 Aliases bind command to sequence of commands.
685  After alias has been defined, it replaces the command it shadows.
686 \end_layout
688 \begin_layout Standard
689 Notes:
690 \end_layout
692 \begin_layout Itemize
693 You can't alias command to itself.
694 \end_layout
696 \begin_layout Itemize
697 Aliases starting with +/- are edge active just like ordinary commands starting
698  with +/-.
699 \end_layout
701 \begin_layout Itemize
702 One command can be aliased to multiple commands.
703 \end_layout
705 \begin_layout Subsubsection
706 alias-command <command> <expansion>
707 \end_layout
709 \begin_layout Standard
710 Append <expansion> to alias <command>.
711  If alias does not already exist, it is created.
712 \end_layout
714 \begin_layout Subsubsection
715 unalias-command <command>
716 \end_layout
718 \begin_layout Standard
719 Clear alias expansion for <command>.
720 \end_layout
722 \begin_layout Subsubsection
723 show-aliases
724 \end_layout
726 \begin_layout Standard
727 Print all aliases and their expansions in effect.
728 \end_layout
730 \begin_layout Subsection
731 run-script <script>
732 \end_layout
734 \begin_layout Standard
735 Run <script> as if commands were entered on the command line.
736 \end_layout
738 \begin_layout Subsection
739 Video dumping
740 \end_layout
742 \begin_layout Standard
743 Following commands control video dumping:
744 \end_layout
746 \begin_layout Subsubsection
747 start-dump <dumper> [<mode>] <prefix/filename>
748 \end_layout
750 \begin_layout Standard
751 Start dumping using dumper <dumper>.
752  If mode is present or not and if prefix or filename is present depends
753  on the dumper and dumper mode.
754 \end_layout
756 \begin_layout Standard
757 The following dumpers are available:
758 \end_layout
760 \begin_layout Itemize
761 INTERNAL-AVI-CSCD: Internal CSCD in .avi dumper.
762 \end_layout
764 \begin_deeper
765 \begin_layout Itemize
766 Mode: uncompressed/pcm: Uncompressed video, PCM audio.
767  Takes prefix.
768 \end_layout
770 \begin_layout Itemize
771 Mode: cscd/pcm: CSCD video, PCM audio.
772  Takes prefix.
773 \end_layout
775 \end_deeper
776 \begin_layout Itemize
777 INTERNAL-JMD: Internal .jmd dumper.
778 \end_layout
780 \begin_deeper
781 \begin_layout Itemize
782 Does not take mode.
783 \end_layout
785 \begin_layout Itemize
786 Takes a filename.
787 \end_layout
789 \end_deeper
790 \begin_layout Itemize
791 INTERNAL-RAW: Internal RAW dumper.
792 \end_layout
794 \begin_deeper
795 \begin_layout Itemize
796 Does not take mode.
797 \end_layout
799 \begin_layout Itemize
800 Takes a prefix.
801 \end_layout
803 \begin_layout Itemize
804 Sound is big-endian signed 16-bit, usually at 32040.5Hz.
805 \end_layout
807 \begin_layout Itemize
808 Video is always upscaled to double resolution (512x448 / 512 x 478).
809 \end_layout
811 \begin_layout Itemize
812 Video framerate is usually 322445/6448 fps for PAL and 10738636/178683 fps
813  for NTSC.
814 \end_layout
816 \end_deeper
817 \begin_layout Itemize
818 INTERNAL-SDMP: Internal SDMP dumper.
819 \end_layout
821 \begin_deeper
822 \begin_layout Itemize
823 Mode 'ms': Multi-segment.
824  Takes prefix.
825 \end_layout
827 \begin_layout Itemize
828 Mode 'ss': Single-segment.
829  Takes filename.
830 \end_layout
832 \end_deeper
833 \begin_layout Subsubsection
834 end-dump <dumper>
835 \end_layout
837 \begin_layout Standard
838 End dumping using <dumper>
839 \end_layout
841 \begin_layout Subsubsection
842 show-dumpers [<dumper>]
843 \end_layout
845 \begin_layout Standard
846 Show the list of dumpers or list of modes for <dumper>
847 \end_layout
849 \begin_layout Subsection
850 Memory manipulation
851 \end_layout
853 \begin_layout Standard
854 <address> may be decimal or hexadecimal (prefixed with '0x').
855  <value> can be hexadecimal (prefixed with '0x'), unsigned or signed (prefixed
856  with '-') decimal.
857 \end_layout
859 \begin_layout Standard
860 The available element <sizes> are:
861 \end_layout
863 \begin_layout Itemize
864 byte: 1 byte
865 \end_layout
867 \begin_layout Itemize
868 word: 2 bytes
869 \end_layout
871 \begin_layout Itemize
872 dword: 4 bytes
873 \end_layout
875 \begin_layout Itemize
876 qword: 8 bytes
877 \end_layout
879 \begin_layout Standard
880 When reading RAM and ROM, multi-byte reads/writes are big-endian.
881  When dealing with DSP memory, multi-byte reads/writes are native-endian
882  (do not use operand sizes exceeding DSP bitness, except dword is OK for
883  24-bit memory).
884 \end_layout
886 \begin_layout Subsubsection
887 read-<size> <address>
888 \end_layout
890 \begin_layout Standard
891 Read the value of byte in <address>.
892 \end_layout
894 \begin_layout Subsubsection
895 read-s<size> <address>
896 \end_layout
898 \begin_layout Standard
899 Read the value of signed byte in <address>.
900 \end_layout
902 \begin_layout Subsubsection
903 write-<size> <address> <value>
904 \end_layout
906 \begin_layout Standard
907 Write <value> to byte in address <address>.
908 \end_layout
910 \begin_layout Subsubsection
911 search-memory reset
912 \end_layout
914 \begin_layout Standard
915 Reset the memory search
916 \end_layout
918 \begin_layout Subsubsection
919 search-memory count
920 \end_layout
922 \begin_layout Standard
923 Print number of candidates remaining
924 \end_layout
926 \begin_layout Subsubsection
927 search-memory print
928 \end_layout
930 \begin_layout Standard
931 Print all candidates remaining
932 \end_layout
934 \begin_layout Subsubsection
935 search-memory <usflag><sizeflag><op>
936 \end_layout
938 \begin_layout Standard
939 Searches memory for addresses satisfying criteria.
940 \end_layout
942 \begin_layout Standard
943 <usflag> can be:
944 \end_layout
946 \begin_layout Itemize
947 u: unsigned
948 \end_layout
950 \begin_layout Itemize
951 s: signed
952 \end_layout
954 \begin_layout Standard
955 <sizeflag> can be:
956 \end_layout
958 \begin_layout Itemize
959 b: byte
960 \end_layout
962 \begin_layout Itemize
963 w: word
964 \end_layout
966 \begin_layout Itemize
967 d: dword
968 \end_layout
970 \begin_layout Itemize
971 q: qword
972 \end_layout
974 \begin_layout Standard
975 <op> can be:
976 \end_layout
978 \begin_layout Itemize
979 lt: < previous value.
980 \end_layout
982 \begin_layout Itemize
983 le: <= previous value.
984 \end_layout
986 \begin_layout Itemize
987 eq: = previous value.
988 \end_layout
990 \begin_layout Itemize
991 ne: != previous value.
992 \end_layout
994 \begin_layout Itemize
995 ge: >= previous value.
996 \end_layout
998 \begin_layout Itemize
999 gt: > previous value.
1000 \end_layout
1002 \begin_layout Subsubsection
1003 search-memory <sizeflag> <value>
1004 \end_layout
1006 \begin_layout Standard
1007 Searches for addresses that currently have value <value>.
1008  <sizeflag> is as in previous command.
1009 \end_layout
1011 \begin_layout Subsection
1012 Main commands
1013 \end_layout
1015 \begin_layout Standard
1016 These commands are not available in lsnesrc, but are available after ROM
1017  has been loaded.
1018 \end_layout
1020 \begin_layout Subsubsection
1021 quit-emulator [/y]
1022 \end_layout
1024 \begin_layout Standard
1025 Quits the emulator (asking for confirmation).
1026  If /y is given, no confirmation is asked.
1027 \end_layout
1029 \begin_layout Subsubsection
1030 pause-emulator
1031 \end_layout
1033 \begin_layout Standard
1034 Toggle paused/unpaused
1035 \end_layout
1037 \begin_layout Subsubsection
1038 +advance-frame 
1039 \end_layout
1041 \begin_layout Standard
1042 Advance frame.
1043  If the button is still held after configurable timeout expires, game unpauses
1044  for the duration frame advance is held.
1045 \end_layout
1047 \begin_layout Subsubsection
1048 +advance-poll 
1049 \end_layout
1051 \begin_layout Standard
1052 Advance subframe.
1053  If the button is still held after configurable timeout expires, game unpauses
1054  for the duration frame advance is held.
1055 \end_layout
1057 \begin_layout Subsubsection
1058 advance-skiplag 
1059 \end_layout
1061 \begin_layout Standard
1062 Skip to first poll in frame after current.
1063 \end_layout
1065 \begin_layout Subsubsection
1066 reset 
1067 \end_layout
1069 \begin_layout Standard
1070 Reset the SNES after this frame.
1071 \end_layout
1073 \begin_layout Subsubsection
1074 load <filename> 
1075 \end_layout
1077 \begin_layout Standard
1078 Load savestate <filename> in current mode.
1079 \end_layout
1081 \begin_layout Subsubsection
1082 load-state <filename> 
1083 \end_layout
1085 \begin_layout Standard
1086 Load savestate <filename> in readwrite mode.
1087 \end_layout
1089 \begin_layout Subsubsection
1090 load-readonly <filename> 
1091 \end_layout
1093 \begin_layout Standard
1094 Load savestate <filename> in readonly mode.
1095 \end_layout
1097 \begin_layout Subsubsection
1098 load-preserve <filename> 
1099 \end_layout
1101 \begin_layout Standard
1102 Load savestate <filename> in readonly mode, preserving current events.
1103 \end_layout
1105 \begin_layout Subsubsection
1106 load-movie <filename> 
1107 \end_layout
1109 \begin_layout Standard
1110 Load savestate <filename>, ignoring save part in readonly mode.
1111 \end_layout
1113 \begin_layout Subsubsection
1114 save-state <filename> 
1115 \end_layout
1117 \begin_layout Standard
1118 Save system state to <filename> as soon as possible.
1119 \end_layout
1121 \begin_layout Subsubsection
1122 save-movie <filename> 
1123 \end_layout
1125 \begin_layout Standard
1126 Save movie to <filename>.
1127 \end_layout
1129 \begin_layout Subsubsection
1130 set-rwmode 
1131 \end_layout
1133 \begin_layout Standard
1134 Set read-write mode.
1135 \end_layout
1137 \begin_layout Subsubsection
1138 set-romode 
1139 \end_layout
1141 \begin_layout Standard
1142 Set read-only mode
1143 \end_layout
1145 \begin_layout Subsubsection
1146 toggle-rwmode 
1147 \end_layout
1149 \begin_layout Standard
1150 Toggle between read-only and read-write modes.
1151 \end_layout
1153 \begin_layout Subsubsection
1154 set-gamename <name> 
1155 \end_layout
1157 \begin_layout Standard
1158 Set name of the game to <name>
1159 \end_layout
1161 \begin_layout Subsubsection
1162 get-gamename 
1163 \end_layout
1165 \begin_layout Standard
1166 Print the name of the game.
1167 \end_layout
1169 \begin_layout Subsubsection
1170 add-author <author> 
1171 \end_layout
1173 \begin_layout Standard
1174 Adds new author <author>.
1175  If <author> does not contain '|' it is full name.
1176  If it contains '|', '|' splits the full name and nickname.
1177 \end_layout
1179 \begin_layout Subsubsection
1180 edit-author <num> <author> 
1181 \end_layout
1183 \begin_layout Standard
1184 Edit the author in slot <num> (0-based) to be <author> (see add-author for
1185  format)
1186 \end_layout
1188 \begin_layout Subsubsection
1189 remove-author <num> 
1190 \end_layout
1192 \begin_layout Standard
1193 Remove author in slot <num>
1194 \end_layout
1196 \begin_layout Subsubsection
1197 print-authors 
1198 \end_layout
1200 \begin_layout Standard
1201 Print authors.
1202 \end_layout
1204 \begin_layout Subsubsection
1205 test-1, test-2, test-3
1206 \end_layout
1208 \begin_layout Standard
1209 Internal test commands.
1210  Don't use.
1211 \end_layout
1213 \begin_layout Subsubsection
1214 take-screenshot <filename> 
1215 \end_layout
1217 \begin_layout Standard
1218 Save screenshot to <filename>.
1219 \end_layout
1221 \begin_layout Subsubsection
1222 +controller<num><button>
1223 \end_layout
1225 \begin_layout Standard
1226 Press button <button> on controller <num> (1-8).
1227  The following button names are known:
1228 \end_layout
1230 \begin_layout Itemize
1231 left
1232 \end_layout
1234 \begin_layout Itemize
1235 right
1236 \end_layout
1238 \begin_layout Itemize
1240 \end_layout
1242 \begin_layout Itemize
1243 down
1244 \end_layout
1246 \begin_layout Itemize
1248 \end_layout
1250 \begin_layout Itemize
1252 \end_layout
1254 \begin_layout Itemize
1256 \end_layout
1258 \begin_layout Itemize
1260 \end_layout
1262 \begin_layout Itemize
1264 \end_layout
1266 \begin_layout Itemize
1268 \end_layout
1270 \begin_layout Itemize
1271 select
1272 \end_layout
1274 \begin_layout Itemize
1275 start
1276 \end_layout
1278 \begin_layout Itemize
1279 trigger
1280 \end_layout
1282 \begin_layout Itemize
1283 cursor
1284 \end_layout
1286 \begin_layout Itemize
1287 pause
1288 \end_layout
1290 \begin_layout Itemize
1291 turbo
1292 \end_layout
1294 \begin_layout Subsubsection
1295 controllerh<num><button>
1296 \end_layout
1298 \begin_layout Standard
1299 Hold/unhold button <button> on controller <num> (1-8).
1300  See +controller for button names.
1301 \end_layout
1303 \begin_layout Subsubsection
1304 controllerf<num><button>
1305 \end_layout
1307 \begin_layout Standard
1308 Hold/unhold button <button> on controller <num> (1-8) for the next frame.
1309  See +controller for button names.
1310 \end_layout
1312 \begin_layout Standard
1313 Cauntion: Does not work properly if outside frame advance.
1314 \end_layout
1316 \begin_layout Subsubsection
1317 autofire (<pattern>|-)...
1318 \end_layout
1320 \begin_layout Standard
1321 Set autofire pattern.
1322  Each parameter is comma-separated list of button names (in form of 1start,
1323  1A, 2B, etc..) to hold on that frame.
1324  After reaching the end of pattern, the pattern restarts from the beginning.
1325 \end_layout
1327 \begin_layout Subsubsection
1328 repaint
1329 \end_layout
1331 \begin_layout Standard
1332 Force a repaint.
1333 \end_layout
1335 \begin_layout Subsection
1336 Save jukebox 
1337 \end_layout
1339 \begin_layout Subsubsection
1340 cycle-jukebox-backward
1341 \end_layout
1343 \begin_layout Standard
1344 Cycle save jukebox backwards.
1345 \end_layout
1347 \begin_layout Subsubsection
1348 cycle-jukebox-forward
1349 \end_layout
1351 \begin_layout Standard
1352 Cycle save jukebox forwards
1353 \end_layout
1355 \begin_layout Subsubsection
1356 load-jukebox
1357 \end_layout
1359 \begin_layout Standard
1360 Do load from jukebox (current mode).
1361 \end_layout
1363 \begin_layout Subsubsection
1364 save-jukebox
1365 \end_layout
1367 \begin_layout Standard
1368 Do state save to jukebox.
1369 \end_layout
1371 \begin_layout Subsection
1372 Lua 
1373 \end_layout
1375 \begin_layout Standard
1376 Only available if lua support is compiled in.
1377 \end_layout
1379 \begin_layout Subsubsection
1380 evaluate-lua <luacode>
1381 \end_layout
1383 \begin_layout Standard
1384 Run Lua code <luacode> using built-in Lua interpretter.
1385 \end_layout
1387 \begin_layout Subsubsection
1388 L <luacode>
1389 \end_layout
1391 \begin_layout Standard
1392 Synonym for evaluate-lua.
1393 \end_layout
1395 \begin_layout Subsubsection
1396 run-lua <script>
1397 \end_layout
1399 \begin_layout Standard
1400 Run specified lua file using built-in Lua interpretter.
1401 \end_layout
1403 \begin_layout Subsubsection
1404 reset-lua
1405 \end_layout
1407 \begin_layout Standard
1408 Clear the Lua VM state and restore to factory defaults.
1409 \end_layout
1411 \begin_layout Subsection
1412 Memory watch
1413 \end_layout
1415 \begin_layout Subsubsection
1416 add-watch <name> <expression>
1417 \end_layout
1419 \begin_layout Standard
1420 Adds new watch (or modifies old one).
1421 \end_layout
1423 \begin_layout Subsubsection
1424 remove-watch <name>
1425 \end_layout
1427 \begin_layout Standard
1428 Remove a watch.
1429 \end_layout
1431 \begin_layout Subsection
1432 Sound 
1433 \end_layout
1435 \begin_layout Subsubsection
1436 enable-sound <on/off> 
1437 \end_layout
1439 \begin_layout Standard
1440 Enable/Disable sound.
1441 \end_layout
1443 \begin_layout Subsubsection
1444 set-sound-device <device> 
1445 \end_layout
1447 \begin_layout Standard
1448 Set sound device to <device>
1449 \end_layout
1451 \begin_layout Subsubsection
1452 show-sound-status 
1453 \end_layout
1455 \begin_layout Standard
1456 Show status of sound system.
1457 \end_layout
1459 \begin_layout Subsubsection
1460 show-sound-devices
1461 \end_layout
1463 \begin_layout Standard
1464 Show all available devices.
1465 \end_layout
1467 \begin_layout Subsubsection
1468 set-volume <multiplier>
1469 \end_layout
1471 \begin_layout Standard
1472 Set the volume multiplier to <multiplier>.
1473  1 is normal volume, and higher numbers are louder.
1474 \end_layout
1476 \begin_layout Subsubsection
1477 set-volume <multiplier>%
1478 \end_layout
1480 \begin_layout Standard
1481 Set the volume multiplier to <multiplier> percent.
1482  100 is normal volume, and higher numbers are louder.
1483 \end_layout
1485 \begin_layout Subsubsection
1486 set-volume <multiplier>dB
1487 \end_layout
1489 \begin_layout Standard
1490 Set the volume multiplier to <multiplier> dB.
1491  0 is normal volume, and higher numbers are louder.
1492  The value may be negative.
1493 \end_layout
1495 \begin_layout Subsection
1496 Misc.
1497 \end_layout
1499 \begin_layout Subsubsection
1500 reload-rom [<file>]
1501 \end_layout
1503 \begin_layout Standard
1504 Reloads the main ROM image from <file>.
1505 \end_layout
1507 \begin_layout Subsubsection
1508 edit-subtitle <firstframe> <length> [<text>]
1509 \end_layout
1511 \begin_layout Standard
1512 Edit or delete a subtitle.
1513 \end_layout
1515 \begin_layout Subsubsection
1516 list-subtitle
1517 \end_layout
1519 \begin_layout Standard
1520 List subtitles.
1521 \end_layout
1523 \begin_layout Subsection
1524 Commentary track
1525 \end_layout
1527 \begin_layout Subsubsection
1528 list-streams
1529 \end_layout
1531 \begin_layout Standard
1532 List streams
1533 \end_layout
1535 \begin_layout Subsubsection
1536 play-stream <id>
1537 \end_layout
1539 \begin_layout Standard
1540 Play stream <id>.
1541 \end_layout
1543 \begin_layout Subsubsection
1544 delete-stream <id>
1545 \end_layout
1547 \begin_layout Standard
1548 Delete stream <id>
1549 \end_layout
1551 \begin_layout Subsubsection
1552 change-timebase <id> <newbase>
1553 \end_layout
1555 \begin_layout Standard
1556 Change time base of <id> to <newbase>.
1557  The time base can be given as samples (integer) or second (postfix with
1558  s).
1559 \end_layout
1561 \begin_layout Subsubsection
1562 import-stream-opus <timebase> <file>
1563 \end_layout
1565 \begin_layout Standard
1566 Import opus stream from <file>, placing it at <timebase>.
1567  This operation is lossless.
1568 \end_layout
1570 \begin_layout Subsubsection
1571 import-stream-pcm <timebase> <file>
1572 \end_layout
1574 \begin_layout Standard
1575 Import PCM (.sox, 1ch@48kHz) stream from <file>, placing it at <timebase>.
1576 \end_layout
1578 \begin_layout Subsubsection
1579 export-stream-opus <id> <file>
1580 \end_layout
1582 \begin_layout Standard
1583 Export stream <id> as opus stream to <file>.
1584  This operation is lossless.
1585 \end_layout
1587 \begin_layout Subsubsection
1588 export-stream-pcm <id> <file>
1589 \end_layout
1591 \begin_layout Standard
1592 Export stream <id> as PCM (.sox) stream to <file>.
1594 \end_layout
1596 \begin_layout Subsubsection
1597 export-superstream <file>
1598 \end_layout
1600 \begin_layout Standard
1601 Export the entiere superstream as PCM (.sox) stream to <file>.
1602 \end_layout
1604 \begin_layout Subsubsection
1605 load-collection <file>
1606 \end_layout
1608 \begin_layout Standard
1609 Load collection (if there is existing collection, unload it) from <file>
1610 \end_layout
1612 \begin_layout Subsubsection
1613 unload-collection
1614 \end_layout
1616 \begin_layout Standard
1617 Unload collection.
1618 \end_layout
1620 \begin_layout Subsubsection
1621 +tangent
1622 \end_layout
1624 \begin_layout Standard
1625 Tangent for recording voice for commentary track.
1626  While pressed, record a stream.
1627 \end_layout
1629 \begin_layout Subsection
1630 SDL Platform commands 
1631 \end_layout
1633 \begin_layout Standard
1634 The following are valid on SDL platform.
1635 \end_layout
1637 \begin_layout Subsubsection
1638 identify-key
1639 \end_layout
1641 \begin_layout Standard
1642 Asks to press a key and then identifies that (pseudo-)key.
1643 \end_layout
1645 \begin_layout Subsubsection
1646 toggle-console 
1647 \end_layout
1649 \begin_layout Standard
1650 Toggle between windowed/fullscreen console.
1651 \end_layout
1653 \begin_layout Subsubsection
1654 scroll-fullup 
1655 \end_layout
1657 \begin_layout Standard
1658 Scroll messages window as far back as it goes.
1659 \end_layout
1661 \begin_layout Subsubsection
1662 scroll-fulldown 
1663 \end_layout
1665 \begin_layout Standard
1666 Scroll messages window as far forward as it goes.
1667 \end_layout
1669 \begin_layout Subsubsection
1670 scroll-up 
1671 \end_layout
1673 \begin_layout Standard
1674 Scroll messages window back one screenful.
1675 \end_layout
1677 \begin_layout Subsubsection
1678 scroll-down 
1679 \end_layout
1681 \begin_layout Standard
1682 Scroll messages window forward one screenful.
1683 \end_layout
1685 \begin_layout Subsubsection
1686 prompt-command <command>
1687 \end_layout
1689 \begin_layout Standard
1690 Enter command prompt, with prompt prepopulated with specified command.
1691 \end_layout
1693 \begin_layout Section
1694 Settings
1695 \end_layout
1697 \begin_layout Subsection
1698 Core settings
1699 \end_layout
1701 \begin_layout Subsubsection
1702 firmwarepath
1703 \end_layout
1705 \begin_layout Standard
1706 Set where bsnes looks for firmware files.
1707  Default is 
1708 \begin_inset Quotes eld
1709 \end_inset
1712 \begin_inset Quotes erd
1713 \end_inset
1716 \end_layout
1718 \begin_layout Subsubsection
1719 target
1720 \end_layout
1722 \begin_layout Standard
1723 Set the target .
1724  Numeric, range is 0.001 to 
1725 \begin_inset Quotes eld
1726 \end_inset
1728 infinite
1729 \begin_inset Quotes erd
1730 \end_inset
1733  Default is native framerate.
1734 \end_layout
1736 \begin_layout Subsubsection
1737 savecompression
1738 \end_layout
1740 \begin_layout Standard
1741 Set save compression level (integer 0-9).
1742  Default is 7 (0 is no compression).
1743 \end_layout
1745 \begin_layout Subsubsection
1746 advance-timeout
1747 \end_layout
1749 \begin_layout Standard
1750 Set the frame advance timeout in milliseconds.
1751  Numeric integer, range is 0-999999999.
1752  Default is 500.
1753 \end_layout
1755 \begin_layout Subsubsection
1756 advance-subframe-timeout
1757 \end_layout
1759 \begin_layout Standard
1760 Subframe advance timeout in milliseconds.
1761  Default is 100.
1762 \end_layout
1764 \begin_layout Subsubsection
1765 save-every-frame (bsnes only)
1766 \end_layout
1768 \begin_layout Standard
1769 If true, simulate saving on each frame.
1770  Trades off emulation accuracy for sync stability.
1771  Also needed if the movie assumes saving on each frame for rewind.
1772 \end_layout
1774 \begin_layout Subsection
1775 AVI dumper settings
1776 \end_layout
1778 \begin_layout Subsubsection
1779 avi-large
1780 \end_layout
1782 \begin_layout Standard
1783 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1784  outputs.
1785 \end_layout
1787 \begin_layout Subsubsection
1788 avi-left-border
1789 \end_layout
1791 \begin_layout Standard
1792 AVI dumper: Set the default left border thickness (unless lua overrides)
1793  for dumps.
1794  Range 0-8191.
1795  Default is 0.
1796 \end_layout
1798 \begin_layout Subsubsection
1799 avi-right-border
1800 \end_layout
1802 \begin_layout Standard
1803 AVI dumper: Set the default right border thickness (unless lua overrides)
1804  for dumps.
1805  Range 0-8191.
1806  Default is 0.
1807 \end_layout
1809 \begin_layout Subsubsection
1810 avi-top-border
1811 \end_layout
1813 \begin_layout Standard
1814 AVI dumper: Set the default top border thickness (unless lua overrides)
1815  for dumps.
1816  Range 0-8191.
1817  Default is 0.
1818 \end_layout
1820 \begin_layout Subsubsection
1821 avi-bottom-border
1822 \end_layout
1824 \begin_layout Standard
1825 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1826  for dumps.
1827  Range 0-8191.
1828  Default is 0.
1829 \end_layout
1831 \begin_layout Subsubsection
1832 avi-maxframes
1833 \end_layout
1835 \begin_layout Standard
1836 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1837  Range 0-999999999.
1838  Default is 0.
1839 \end_layout
1841 \begin_layout Subsubsection
1842 avi-compresison
1843 \end_layout
1845 \begin_layout Standard
1846 AVI dumper: Compression level (0-18).
1847 \end_layout
1849 \begin_layout Itemize
1850 Compression levels 10 and above are not compatible with stock CSCD codec.
1851 \end_layout
1853 \begin_layout Itemize
1854 Recomended level is 7.
1855 \end_layout
1857 \begin_layout Subsubsection
1858 avi-soundrate
1859 \end_layout
1861 \begin_layout Standard
1862 AVI dumper: Set method of determining the sound rate.
1863 \end_layout
1865 \begin_layout Itemize
1866 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48, 64, 88.2, 96,
1867  128, 176.4 and 192 kHz.
1868 \end_layout
1870 \begin_layout Itemize
1871 1: Round down to nearest integer.
1872 \end_layout
1874 \begin_layout Itemize
1875 2: Round up to nearest ingeter.
1876 \end_layout
1878 \begin_layout Subsection
1879 JMD options
1880 \end_layout
1882 \begin_layout Subsubsection
1883 jmd-copression
1884 \end_layout
1886 \begin_layout Standard
1887 JMD dumper: Compression level (0-9).
1888 \end_layout
1890 \begin_layout Subsection
1891 SDL platform settings
1892 \end_layout
1894 \begin_layout Subsubsection
1895 autorepeat-first-delay
1896 \end_layout
1898 \begin_layout Standard
1899 Sets the delay for first character in typematic autorepeat.
1900 \end_layout
1902 \begin_layout Subsubsection
1903 autorepeat-subsequent-delay
1904 \end_layout
1906 \begin_layout Standard
1907 Sets the delay for subsequent characters in typematic autorepeat.
1908 \end_layout
1910 \begin_layout Section
1911 Lua functions
1912 \end_layout
1914 \begin_layout Subsection
1915 Core (in main table)
1916 \end_layout
1918 \begin_layout Subsubsection
1919 print
1920 \end_layout
1922 \begin_layout Standard
1923 Print line to message console.
1924 \end_layout
1926 \begin_layout Subsubsection
1927 exec(string command)
1928 \end_layout
1930 \begin_layout Standard
1931 Run command as it was entered on the command line
1932 \end_layout
1934 \begin_layout Subsubsection
1935 utime()
1936 \end_layout
1938 \begin_layout Standard
1939 Returns two values.
1940  First is time since some epoch in seconds, the second is microseconds mod
1941  10^6 since that epoch.
1942 \end_layout
1944 \begin_layout Subsubsection
1945 emulator_ready()
1946 \end_layout
1948 \begin_layout Standard
1949 Returns true if emulator has finished booting, false if not (on_startup()
1950  will be issued later).
1951 \end_layout
1953 \begin_layout Subsubsection
1954 set_idle_timeout(number timeout)
1955 \end_layout
1957 \begin_layout Standard
1958 Set number of microseconds to block idle for.
1959  After this timeout has expired, on_idle() will be called once.
1960 \end_layout
1962 \begin_layout Subsubsection
1963 set_timer_timeout(number timeout)
1964 \end_layout
1966 \begin_layout Standard
1967 Set number of microseconds to block timer for.
1968  After this timeout has expired, on_timer() will be called once.
1969 \end_layout
1971 \begin_layout Subsubsection
1972 bus_address(number snesaddr)
1973 \end_layout
1975 \begin_layout Standard
1976 Returns virtual address corresponding to specified address on SNES bus.
1977 \end_layout
1979 \begin_layout Subsubsection
1980 loopwrapper(function fun, ...)
1981 \end_layout
1983 \begin_layout Standard
1984 Calls function fun with function and specified arguments.
1985  The function passed suspends execution until the function returned is called.
1986  Handy for linear flow control among multiple invocations of a hook.
1987  Example code:
1988 \end_layout
1990 \begin_layout LyX-Code
1991 on_paint = loopwrapper(function(wait)
1992 \end_layout
1994 \begin_deeper
1995 \begin_layout LyX-Code
1996 while true do
1997 \end_layout
1999 \begin_deeper
2000 \begin_layout LyX-Code
2001 gui.text(0, 0, 
2002 \begin_inset Quotes eld
2003 \end_inset
2005 Test!
2006 \begin_inset Quotes erd
2007 \end_inset
2010 \end_layout
2012 \begin_layout LyX-Code
2013 wait();
2014 \end_layout
2016 \end_deeper
2017 \begin_layout LyX-Code
2019 \end_layout
2021 \end_deeper
2022 \begin_layout LyX-Code
2023 end);
2024 \end_layout
2026 \begin_layout Subsubsection
2027 list_bindings([string cmd])
2028 \end_layout
2030 \begin_layout Standard
2031 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
2032  If command is specified, the table is limited to that command.
2033 \end_layout
2035 \begin_layout Subsubsection
2036 get_alias(string aname)
2037 \end_layout
2039 \begin_layout Standard
2040 Get expansion of given alias.
2041 \end_layout
2043 \begin_layout Subsubsection
2044 set_alias(string aname, string value)
2045 \end_layout
2047 \begin_layout Standard
2048 Set expansion of given alias.
2049 \end_layout
2051 \begin_layout Subsubsection
2052 create_ibind(string name, string cmd)
2053 \end_layout
2055 \begin_layout Standard
2056 Return object representing inverse binding with specified name and specified
2057  command.
2058 \end_layout
2060 \begin_layout Itemize
2061 To create press/release commands, use aliases +foo and -foo .
2062 \end_layout
2064 \begin_layout Itemize
2065 Keep the returned object around.
2066 \end_layout
2068 \begin_layout Subsection
2069 Table bit:
2070 \end_layout
2072 \begin_layout Standard
2073 Bitwise logical functions and related.
2074 \end_layout
2076 \begin_layout Subsubsection
2077 bit.none(number...) / bit.bnot(number...)
2078 \end_layout
2080 \begin_layout Standard
2081 48-bit bitwise NOT / NONE function (set bits that are set in none of the
2082  arguments).
2083 \end_layout
2085 \begin_layout Subsubsection
2086 bit.any(number...) / bit.bor(number...)
2087 \end_layout
2089 \begin_layout Standard
2090 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
2091 \end_layout
2093 \begin_layout Subsubsection
2094 bit.all(number...) / bit.band(number...)
2095 \end_layout
2097 \begin_layout Standard
2098 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
2100 \end_layout
2102 \begin_layout Subsubsection
2103 bit.parity(number...) / bit.bxor(number...)
2104 \end_layout
2106 \begin_layout Standard
2107 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
2108  of the arguments).
2109 \end_layout
2111 \begin_layout Subsubsection
2112 bit.lrotate(number base[, number amount[, number bits]])
2113 \end_layout
2115 \begin_layout Standard
2116 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
2117 \end_layout
2119 \begin_layout Subsubsection
2120 bit.rrotate(number base[, number amount[, number bits]])
2121 \end_layout
2123 \begin_layout Standard
2124 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
2125  places.
2126 \end_layout
2128 \begin_layout Subsubsection
2129 bit.lshift(number base[, number amount[, number bits]])
2130 \end_layout
2132 \begin_layout Standard
2133 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
2134  The new bits are filled with zeroes.
2135 \end_layout
2137 \begin_layout Subsubsection
2138 bit.lrshift(number base[, number amount[, number bits]])
2139 \end_layout
2141 \begin_layout Standard
2142 Shift bits-bit (max 48, default 48) number logically right by amount (default
2143  1) places.
2144  The new bits are filled with zeroes.
2145 \end_layout
2147 \begin_layout Subsubsection
2148 bit.arshift(number base[, number amount[, number bits]])
2149 \end_layout
2151 \begin_layout Standard
2152 Shift bits-bit (max 48, default 48) number arithmetically right by amount
2153  (default 1) places.
2154  The new bits are shifted in with copy of the high bit.
2155 \end_layout
2157 \begin_layout Subsubsection
2158 bit.extract(number base[, number bit0[, number bit1,...]])
2159 \end_layout
2161 \begin_layout Standard
2162 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
2163 \end_layout
2165 \begin_layout Standard
2166 Notes: 
2167 \end_layout
2169 \begin_layout Itemize
2170 Bit numbers up to 51 should work reliably (then things start falling apart
2171  due to double precision issues).
2172 \end_layout
2174 \begin_layout Itemize
2175 There are two special bit positions, true and false, standing for always
2176  set bit and always clear bit.
2177 \end_layout
2179 \begin_layout Subsubsection
2180 bit.value([number bit1[, number bit2,...]])
2181 \end_layout
2183 \begin_layout Standard
2184 Returns bitwise OR of 1 left shifted by bit1 places, 1 left shifted by bit2
2185  places and so on.
2186  As special value, nil argument is no-op.
2187 \end_layout
2189 \begin_layout Subsubsection
2190 bit.test_any(number a, number b)
2191 \end_layout
2193 \begin_layout Standard
2194 Is there a common set bit in a and b?
2195 \end_layout
2197 \begin_layout Subsubsection
2198 bit.test_all(number a, number b)
2199 \end_layout
2201 \begin_layout Standard
2202 Are all set bits in b also set in a?
2203 \end_layout
2205 \begin_layout Subsubsection
2206 bit.popcount(number a)
2207 \end_layout
2209 \begin_layout Standard
2210 Population count of a.
2211 \end_layout
2213 \begin_layout Subsubsection
2214 bit.clshift(number a, number b, [number amount,[number bits]])
2215 \end_layout
2217 \begin_layout Standard
2218 Does chained left shift on a, b by amount positions, assuming numbers to
2219  be of specified number of bits.
2220 \end_layout
2222 \begin_layout Subsubsection
2223 bit.crshift(number a, number b, [number amount,[number bits]])
2224 \end_layout
2226 \begin_layout Standard
2227 Does chained right shift on a, b by amount positions, assuming numbers to
2228  be of specified number of bits.
2229 \end_layout
2231 \begin_layout Subsubsection
2232 bit.flagdecode(number a, number bits, [string on, [string off]])
2233 \end_layout
2235 \begin_layout Standard
2236 Return string of length bits where ith character is ith character of on
2237  if bit i is on, otherwise ith character of off.
2238  Out of range reads give last character, or '*'/'-' if empty.
2239 \end_layout
2241 \begin_layout Subsubsection
2242 bit.rflagdecode(number a, number bits, [string on, [string off]])
2243 \end_layout
2245 \begin_layout Standard
2246 Like bit.flagdecode, but outputs the string in the opposite order (most significa
2247 nt bit first).
2248 \end_layout
2250 \begin_layout Subsection
2251 Table gui:
2252 \end_layout
2254 \begin_layout Standard
2255 Most of these functions can only be called in on_paint and on_video callbacks.
2256  Exceptions are noted.
2257 \end_layout
2259 \begin_layout Standard
2260 Colors are 32-bit.
2261  Bits 0-7 are the blue component, bits 8-15 are the green component, bits
2262  16-23 are the red component, bits 24-31 are alpha component (0 is fully
2263  opaque, 255 is almost transparent).
2264  -1 is the fully transparent color.
2265  Alpha values greater than 127 do work.
2266 \end_layout
2268 \begin_layout Standard
2269 Origin of coordinates is at top left corner of game display area.
2270  Left and top gaps correspond to negative coordinates.
2271 \end_layout
2273 \begin_layout Subsubsection
2274 gui.resolution()
2275 \end_layout
2277 \begin_layout Standard
2278 Returns 2-tuple (hresolution, vresolution).
2279 \end_layout
2281 \begin_layout Subsubsection
2282 gui.<class>_gap(number gap)
2283 \end_layout
2285 \begin_layout Standard
2286 Set the <class> (left, right, top, bottom) gap to specified value (max gap
2287  is 8191).
2288  If successful, old gap is returned.
2289 \end_layout
2291 \begin_layout Subsubsection
2292 gui.delta_<class>_gap(number gap)
2293 \end_layout
2295 \begin_layout Standard
2296 Increase the <class> (left, right, top, bottom) gap by specified value (max
2297  gap is 8191) and return the old gap (returns nothing on error).
2298 \end_layout
2300 \begin_layout Subsubsection
2301 gui.text(number x, number y, string text[, number fgc[, number bgc]])
2302 \end_layout
2304 \begin_layout Standard
2305 Draw specified text on the GUI (each character cell is 8 or 16 wide and
2306  16 high).
2307  Parameters:
2308 \end_layout
2310 \begin_layout Itemize
2311 x: X-coordinate to start the drawing from (and x-coordinate at begining
2312  of the lines).
2313 \end_layout
2315 \begin_layout Itemize
2316 y: Y-coordinate to start the drawing from.
2317 \end_layout
2319 \begin_layout Itemize
2320 text: The text to draw.
2321 \end_layout
2323 \begin_layout Itemize
2324 fgc: Text color (default is 0xFFFFFF (white))
2325 \end_layout
2327 \begin_layout Itemize
2328 bgc: Background color (default is -1 (transparent))
2329 \end_layout
2331 \begin_layout Subsubsection
2332 gui.textH(number x, number y, string text[, number fgc[, number bgc]])
2333 \end_layout
2335 \begin_layout Standard
2336 Like gui.text, but draw using double-width.
2337 \end_layout
2339 \begin_layout Subsubsection
2340 gui.textV(number x, number y, string text[, number fgc[, number bgc]])
2341 \end_layout
2343 \begin_layout Standard
2344 Like gui.text, but draw using double-height.
2345 \end_layout
2347 \begin_layout Subsubsection
2348 gui.textHV(number x, number y, string text[, number fgc[, number bgc]])
2349 \end_layout
2351 \begin_layout Standard
2352 Like gui.text, but draw using double-width/double-height.
2353 \end_layout
2355 \begin_layout Subsubsection
2356 gui.rectangle(number x, number y, number width, number height[, number thickness[
2357 , number outline[, number fill]]])
2358 \end_layout
2360 \begin_layout Standard
2361 Draw rectangle on the GUI.
2362  Parameters:
2363 \end_layout
2365 \begin_layout Itemize
2366 x: X-coordinate of left edge.
2367 \end_layout
2369 \begin_layout Itemize
2370 y: Y-coordinate of upper edge.
2371 \end_layout
2373 \begin_layout Itemize
2374 width: Width of rectangle.
2375 \end_layout
2377 \begin_layout Itemize
2378 height: Height of rectangle.
2379 \end_layout
2381 \begin_layout Itemize
2382 thickness: Thickness of outline (default is 1).
2383 \end_layout
2385 \begin_layout Itemize
2386 outline: Color of outline (default is 0xFFFFFF (white))
2387 \end_layout
2389 \begin_layout Itemize
2390 fill: Color of fill (default is -1 (transparent))
2391 \end_layout
2393 \begin_layout Subsubsection
2394 gui.box(number x, number y, number width, number height[, number thickness[,
2395  number outline1[,number outline2[, number fill]]]])
2396 \end_layout
2398 \begin_layout Standard
2399 Draw rectangle with 3D effect on the GUI.
2400  Parameters:
2401 \end_layout
2403 \begin_layout Itemize
2404 x: X-coordinate of left edge.
2405 \end_layout
2407 \begin_layout Itemize
2408 y: Y-coordinate of upper edge.
2409 \end_layout
2411 \begin_layout Itemize
2412 width: Width of rectangle.
2413 \end_layout
2415 \begin_layout Itemize
2416 height: Height of rectangle.
2417 \end_layout
2419 \begin_layout Itemize
2420 thickness: Thickness of outline (default is 1).
2421 \end_layout
2423 \begin_layout Itemize
2424 outline1: First color of outline (default is 0xFFFFFF (white))
2425 \end_layout
2427 \begin_layout Itemize
2428 outline2: First color of outline (default is 0x808080 (dark gray))
2429 \end_layout
2431 \begin_layout Itemize
2432 fill: Color of fill (default is 0xC0C0C0 (light grayy))
2433 \end_layout
2435 \begin_layout Subsubsection
2436 gui.pixel(number x, number y[, number color])
2437 \end_layout
2439 \begin_layout Standard
2440 Draw one pixel on the GUI.
2441  Parameters:
2442 \end_layout
2444 \begin_layout Itemize
2445 x: X-coordinate of the pixel
2446 \end_layout
2448 \begin_layout Itemize
2449 y: Y-coordinate of the pixel
2450 \end_layout
2452 \begin_layout Itemize
2453 color: Color of the pixel (default is 0xFFFFFF (white))
2454 \end_layout
2456 \begin_layout Subsubsection
2457 gui.crosshair(number x, number y[, number length[, number color]])
2458 \end_layout
2460 \begin_layout Standard
2461 Draw a crosshair.
2462  Parameters:
2463 \end_layout
2465 \begin_layout Itemize
2466 x: X-coordinate of the crosshair
2467 \end_layout
2469 \begin_layout Itemize
2470 y: Y-coordinate of the crosshair
2471 \end_layout
2473 \begin_layout Itemize
2474 length: Length of the crosshair lines (default 10).
2475 \end_layout
2477 \begin_layout Itemize
2478 color: Color of the crosshair (default is 0xFFFFFF (white))
2479 \end_layout
2481 \begin_layout Subsubsection
2482 gui.line(number x1, number y1, number x2, number y2[, number color])
2483 \end_layout
2485 \begin_layout Standard
2486 Draw a thin line.
2487  Parameters:
2488 \end_layout
2490 \begin_layout Itemize
2491 x1: X-coordinate of one end.
2492 \end_layout
2494 \begin_layout Itemize
2495 y1: Y-coordinate of one end.
2496 \end_layout
2498 \begin_layout Itemize
2499 x2: X-coordinate of the other end.
2500 \end_layout
2502 \begin_layout Itemize
2503 y2: Y-coordinate of the other end.
2504 \end_layout
2506 \begin_layout Itemize
2507 color: Color of the line (default is 0xFFFFFF (white)).
2508 \end_layout
2510 \begin_layout Subsubsection
2511 gui.circle(number x, number y, number r[, number thick[, number border[,
2512  number fil]]])
2513 \end_layout
2515 \begin_layout Standard
2516 Draw a circle.
2517  Parameters.
2518 \end_layout
2520 \begin_layout Itemize
2521 x: X-coordinate of the center
2522 \end_layout
2524 \begin_layout Itemize
2525 y: Y-coordinate of the center
2526 \end_layout
2528 \begin_layout Itemize
2529 r: The radius of the circle
2530 \end_layout
2532 \begin_layout Itemize
2533 thick: Border thickness
2534 \end_layout
2536 \begin_layout Itemize
2537 border: Border color (default is 0xFFFFFF (white))
2538 \end_layout
2540 \begin_layout Itemize
2541 fill: Fill color (default is -1 (transparent)).
2542 \end_layout
2544 \begin_layout Subsubsection
2545 gui.bitmap_draw(number x, number y, bitmap bitmap, palette palette)
2546 \end_layout
2548 \begin_layout Standard
2549 Draw a bitmap on screen with specified palette.
2550  Parameters:
2551 \end_layout
2553 \begin_layout Itemize
2554 x: X-coordinate of left edge.
2555 \end_layout
2557 \begin_layout Itemize
2558 y: Y-coordinate of top edge.
2559 \end_layout
2561 \begin_layout Itemize
2562 bitmap: The bitmap to draw
2563 \end_layout
2565 \begin_layout Itemize
2566 palette: The palette to draw the bitmap using.
2567 \end_layout
2569 \begin_layout Subsubsection
2570 gui.bitmap_draw(number x, number y, dbitmap bitmap)
2571 \end_layout
2573 \begin_layout Standard
2574 Draw a bitmap on screen.
2575  Parameters:
2576 \end_layout
2578 \begin_layout Itemize
2579 x: X-coordinate of left edge.
2580 \end_layout
2582 \begin_layout Itemize
2583 y: Y-coordinate of top edge.
2584 \end_layout
2586 \begin_layout Itemize
2587 bitmap: The bitmap to draw
2588 \end_layout
2590 \begin_layout Subsubsection
2591 gui.palette_new()
2592 \end_layout
2594 \begin_layout Standard
2595 Returns a new palette (initially all transparent).
2596  Can be used anywhere.
2597 \end_layout
2599 \begin_layout Subsubsection
2600 gui.bitmap_new(number w, number h, boolean direct[, bool icolor])
2601 \end_layout
2603 \begin_layout Standard
2604 Returns a new bitmap/dbitmap.
2605  Can be used anywhere.
2606  Parameters:
2607 \end_layout
2609 \begin_layout Itemize
2610 w: The width of new bitmap
2611 \end_layout
2613 \begin_layout Itemize
2614 h: The height of new bitmap
2615 \end_layout
2617 \begin_layout Itemize
2618 direct: If true, the returned bitmap is dbitmap, otherwise bitmap.
2619 \end_layout
2621 \begin_layout Itemize
2622 icolor: Initital fill color (defaults to 0 on BITMAP, -1 on DBITMAP)
2623 \end_layout
2625 \begin_layout Subsubsection
2626 gui.bitmap_load(string file)
2627 \end_layout
2629 \begin_layout Standard
2630 Returns loaded bitmap/dbitmap (if bitmap, the second return value is palette
2631  for bitmap).
2632  Can be used anywhere.
2633  Parameters:
2634 \end_layout
2636 \begin_layout Itemize
2637 file: The name of file to load.
2638 \end_layout
2640 \begin_layout Subsubsection
2641 gui.palette_set(palette palette, number index, number color)
2642 \end_layout
2644 \begin_layout Standard
2645 Sets color in palette.
2646  Can be used anywhere.
2647  Parameters:
2648 \end_layout
2650 \begin_layout Itemize
2651 palette: The palette to manipulate
2652 \end_layout
2654 \begin_layout Itemize
2655 index: Index of color (0-65535).
2656 \end_layout
2658 \begin_layout Itemize
2659 color: The color value.
2660 \end_layout
2662 \begin_layout Subsubsection
2663 gui.bitmap_pset(bitmap/dbitmap bitmap, number x, number y, number color)
2664 \end_layout
2666 \begin_layout Standard
2667 Sets specified pixel in bitmap.
2668  Can be used anywhere.
2669  Parameters:
2670 \end_layout
2672 \begin_layout Itemize
2673 bitmap: The bitmap to manipulate
2674 \end_layout
2676 \begin_layout Itemize
2677 x: The x-coordinate of the pixel.
2678 \end_layout
2680 \begin_layout Itemize
2681 y: The y-coordinate of the pixel.
2682 \end_layout
2684 \begin_layout Itemize
2685 color: If bitmap is a bitmap, color index (0-65535).
2686  Otherwise color value.
2687 \end_layout
2689 \begin_layout Subsubsection
2690 gui.bitmap_size(bitmap/dbitmap bitmap)
2691 \end_layout
2693 \begin_layout Standard
2694 Get size of bitmap.
2695  Can be used anywhere.
2696  Parameters:
2697 \end_layout
2699 \begin_layout Itemize
2700 bitmap: The bitmap to query.
2701 \end_layout
2703 \begin_layout Standard
2704 The first return is the width, the second is the height.
2705 \end_layout
2707 \begin_layout Subsubsection
2708 gui.bitmap_blit(bitmap/dbitmap dest, number dx, number dy, bitmap/dbitmap
2709  src, [palette pal, ]number sx, number sy, number w, number h[, number ck])
2710 \end_layout
2712 \begin_layout Standard
2713 Blit a part of bitmap to another.
2714  Can be used anywhere.
2715  Parameters:
2716 \end_layout
2718 \begin_layout Itemize
2719 dest: Destination to blit to.
2720 \end_layout
2722 \begin_layout Itemize
2723 dx: left edge of target
2724 \end_layout
2726 \begin_layout Itemize
2727 dy: Top edge of target
2728 \end_layout
2730 \begin_layout Itemize
2731 src: The source to blit from.
2732  If destination is paletted, must be paletted.
2733 \end_layout
2735 \begin_layout Itemize
2736 pal: The palette.
2738 \emph on
2739 Only present if src is paletted, but dest is not.
2740 \end_layout
2742 \begin_layout Itemize
2743 sx: left edge of source
2744 \end_layout
2746 \begin_layout Itemize
2747 sy: Top edge of source
2748 \end_layout
2750 \begin_layout Itemize
2751 w: Width of region
2752 \end_layout
2754 \begin_layout Itemize
2755 h: Height of region.
2756 \end_layout
2758 \begin_layout Itemize
2759 ck: Color key.
2760  Pixels of this color are not blitted.
2761 \end_layout
2763 \begin_deeper
2764 \begin_layout Itemize
2765 If bitmaps are bitmaps, this is color index of colorkey.
2766  Values outside range 0-65535 cause no key to be used as colorkey.
2767 \end_layout
2769 \begin_layout Itemize
2770 If bitmaps are dbitmaps, this color value of colorkey.
2771 \end_layout
2773 \begin_layout Itemize
2774 May be absent or nil for no colorkey blit.
2775 \end_layout
2777 \end_deeper
2778 \begin_layout Subsubsection
2779 gui.bitmap_load_png(string filename)
2780 \end_layout
2782 \begin_layout Standard
2783 Load a bitmap from PNG file.
2784  Parameters:
2785 \end_layout
2787 \begin_layout Itemize
2788 filename: The name of file to load the bitmap frame.
2789 \end_layout
2791 \begin_layout Standard
2792 Return value:
2793 \end_layout
2795 \begin_layout Itemize
2796 If the PNG is of color type 3 (PALETTE), returns two value.
2797  First is BITMAP containing the image data from the PNG and second is PALETTE
2798  containg the palette data from the PNG.
2799 \end_layout
2801 \begin_layout Itemize
2802 For color types 0 (GRAY), 2 (RGB), 4 (GRAY_ALPHA) and 6 (RGBA), returns
2803  one DBITMAP containg the image data loaded from the PNG.
2804 \end_layout
2806 \begin_layout Subsubsection
2807 gui.bitmap_load_pal(string filename)
2808 \end_layout
2810 \begin_layout Standard
2811 Load a palette from file.
2812  Parameters:
2813 \end_layout
2815 \begin_layout Itemize
2816 filename: The name of the file.
2817 \end_layout
2819 \begin_layout Standard
2820 The kinds of lines supported
2821 \end_layout
2823 \begin_layout Itemize
2824 Blank or just whitespace: Ignored
2825 \end_layout
2827 \begin_layout Itemize
2828 First non-whitespace is '#': Ignored
2829 \end_layout
2831 \begin_layout Itemize
2832 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
2833 \end_layout
2835 \begin_layout Itemize
2836 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
2837  (0-256, 0 being fully transparent and 256 fully opaque).
2838 \end_layout
2840 \begin_layout Itemize
2841 transparent: Fully transparent color
2842 \end_layout
2844 \begin_layout Subsubsection
2845 gui.bitmap_load_str(string content)
2846 \end_layout
2848 \begin_layout Standard
2849 Like gui.bitmap_load, but reads the specified string directly as content.
2850 \end_layout
2852 \begin_layout Subsubsection
2853 gui.bitmap_load_png_str(string base64content)
2854 \end_layout
2856 \begin_layout Standard
2857 Like gui.bitmap_load_png, but reads the specified string (as base64-encoded)
2858  directly as content.
2859 \end_layout
2861 \begin_layout Subsubsection
2862 gui.bitmap_load_pal_str(string content)
2863 \end_layout
2865 \begin_layout Standard
2866 Like gui.bitmap_load_pal, but reads the specified string directly as content.
2867 \end_layout
2869 \begin_layout Subsubsection
2870 gui.repaint()
2871 \end_layout
2873 \begin_layout Standard
2874 Request on_repaint() to happen as soon as possible.
2875  Can be used anywhere.
2876 \end_layout
2878 \begin_layout Subsubsection
2879 gui.subframe_update(boolean on)
2880 \end_layout
2882 \begin_layout Standard
2883 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
2884  or not happen (on=false).
2885  Can be used anywhere.
2886 \end_layout
2888 \begin_layout Subsubsection
2889 gui.screenshot(string filename)
2890 \end_layout
2892 \begin_layout Standard
2893 Write PNG screenshot of the current frame (no drawings) to specified file.
2894  Can be used anywhere.
2895 \end_layout
2897 \begin_layout Subsubsection
2898 gui.color(number r, number g, number b[, number a])
2899 \end_layout
2901 \begin_layout Standard
2902 Returns color (in notation Lua scripts use) corresponding to color (r,g,b),
2903  each component in scale 0-255.
2904  If a is specified, that is alpha (0 is fully transparent, 256(sic) is fully
2905  opaque).
2906  The default alpha is 256.
2907 \end_layout
2909 \begin_layout Subsubsection
2910 gui.status(string name, string value)
2911 \end_layout
2913 \begin_layout Standard
2914 Set status field 
2915 \begin_inset Quotes eld
2916 \end_inset
2918 L[<name>]
2919 \begin_inset Quotes erd
2920 \end_inset
2922  to <value> in status area.
2923  Can be used anywhere.
2924 \end_layout
2926 \begin_layout Subsubsection
2927 gui.rainbow(number step, number steps[, number color])
2928 \end_layout
2930 \begin_layout Standard
2931 Perform hue rotation of color <color> (default bright red), by <step> steps.
2932  The number of steps per full rotation is given by absolute value of <steps>.
2933 \end_layout
2935 \begin_layout Standard
2936 If <steps> is negative, the rotation will be counterclockwise.
2937 \end_layout
2939 \begin_layout Subsubsection
2940 gui.screenshot(string filename)
2941 \end_layout
2943 \begin_layout Standard
2944 Saves a screenshot into specified file.
2945 \end_layout
2947 \begin_layout Subsubsection
2948 gui.loadfont(string filename)
2949 \end_layout
2951 \begin_layout Standard
2952 Loads font from specified file (CUSTOMFONT object).
2953 \end_layout
2955 \begin_layout Subsubsection
2956 CUSTOMFONT(number x, number y, string text[, number fgc[, number bgc[, number
2957  hlc]]])
2958 \end_layout
2960 \begin_layout Standard
2961 Draw string with custom font to screen.
2962  The parameters are the same as in gui.text, except hlc is the halo color
2963  (default is no halo).
2965 \end_layout
2967 \begin_layout Subsection
2968 table input
2969 \end_layout
2971 \begin_layout Standard
2972 Input handling.
2973  Only available in on_input callback.
2974 \end_layout
2976 \begin_layout Subsubsection
2977 input.get(number controller, number index)
2978 \end_layout
2980 \begin_layout Standard
2981 Read the specified index (0-11) from specified controller (0-7).
2982  Notes:
2983 \end_layout
2985 \begin_layout Itemize
2986 Uses physical controller numbering.
2987  Gamepad in port 2 is controller 4, not 1!
2988 \end_layout
2990 \begin_layout Subsubsection
2991 input.set(number controller, number index, number value)
2992 \end_layout
2994 \begin_layout Standard
2995 Write the specified index (0-11) from specified controller (0-7), storing
2996  value.
2997  Notes:
2998 \end_layout
3000 \begin_layout Itemize
3001 Uses physical controller numbering.
3002  Gamepad in port 2 is controller 4, not 1!
3003 \end_layout
3005 \begin_layout Subsubsection
3006 input.get2(number port, number controller, number index)
3007 \end_layout
3009 \begin_layout Standard
3010 Read the specified input tuple.
3011 \end_layout
3013 \begin_layout Itemize
3014 Port 0 is system port.
3015 \end_layout
3017 \begin_layout Subsubsection
3018 input.set2(number port, number controller, number index, number value)
3019 \end_layout
3021 \begin_layout Standard
3022 Write the specified input tuple.
3023 \end_layout
3025 \begin_layout Itemize
3026 Port 0 is system port.
3027 \end_layout
3029 \begin_layout Subsubsection
3030 input.lcid_to_pcid2(number lcid)
3031 \end_layout
3033 \begin_layout Standard
3034 Look up physical pcid pair (port, controller) corresponding to specified
3035  logical controller (1-based).
3036  Returns nothing if controller does not exist.
3037 \end_layout
3039 \begin_layout Subsubsection
3040 input.port_type(number port)
3041 \end_layout
3043 \begin_layout Standard
3044 Return type of specified port.
3045 \end_layout
3047 \begin_layout Subsubsection
3048 input.controller_info(number port, number controller)
3049 \end_layout
3051 \begin_layout Standard
3052 Get controller info for specified controller.
3053  If controller does not exist, returns nil.
3054  Otherwise returns a table with following fields:
3055 \end_layout
3057 \begin_layout Itemize
3058 type (string): Type of the controller.
3059 \end_layout
3061 \begin_layout Itemize
3062 class (string): Class of the controller.
3063 \end_layout
3065 \begin_layout Itemize
3066 classnum (number): Number of the controller within its class (1-based)
3067 \end_layout
3069 \begin_layout Itemize
3070 lcid (number): Logical controller number of the controller.
3071 \end_layout
3073 \begin_layout Itemize
3074 button_count (number): Number of buttons on controller
3075 \end_layout
3077 \begin_layout Itemize
3078 buttons (array): Array of following info about each button:
3079 \end_layout
3081 \begin_deeper
3082 \begin_layout Itemize
3083 type (string): Type of button.
3084  Currently one of 
3085 \begin_inset Quotes eld
3086 \end_inset
3088 null
3089 \begin_inset Quotes erd
3090 \end_inset
3093 \begin_inset Quotes eld
3094 \end_inset
3096 button
3097 \begin_inset Quotes erd
3098 \end_inset
3101 \begin_inset Quotes eld
3102 \end_inset
3104 axis
3105 \begin_inset Quotes erd
3106 \end_inset
3109 \begin_inset Quotes eld
3110 \end_inset
3112 raxis
3113 \begin_inset Quotes erd
3114 \end_inset
3117 \end_layout
3119 \begin_layout Itemize
3120 name (string): Name of button.
3121 \end_layout
3123 \begin_layout Itemize
3124 symbol (string): Symbol of button.
3125  Only present for type 
3126 \begin_inset Quotes eld
3127 \end_inset
3129 button
3130 \begin_inset Quotes erd
3131 \end_inset
3134 \end_layout
3136 \begin_layout Itemize
3137 hidden (boolean): True if hidden button.
3139 \end_layout
3141 \end_deeper
3142 \begin_layout Subsubsection
3143 input.veto_button()
3144 \end_layout
3146 \begin_layout Standard
3147 Signals that the button event should be vetoed.
3148  Only valid in on_button callback.
3149 \end_layout
3151 \begin_layout Subsubsection
3152 input.geta(number controller)
3153 \end_layout
3155 \begin_layout Standard
3156 Get input state for entiere controller.
3157  Returns 13 return values.
3158 \end_layout
3160 \begin_layout Itemize
3161 1st return value: Bitmask: bit i is set if i:th index is nonzero
3162 \end_layout
3164 \begin_layout Itemize
3165 2nd-13th return value: value of i:th index.
3166 \end_layout
3168 \begin_layout Subsubsection
3169 input.seta(number controller, number bitmask, number args...)
3170 \end_layout
3172 \begin_layout Standard
3173 Set state for entiere controller.
3174  args is up to 12 values for indices (overriding values in bitmask if specified).
3175 \end_layout
3177 \begin_layout Subsubsection
3178 input.controllertype(number controller)
3179 \end_layout
3181 \begin_layout Standard
3182 Get the type of controller as string.
3183  Valid values are:
3184 \end_layout
3186 \begin_layout Itemize
3187 gamepad
3188 \end_layout
3190 \begin_layout Itemize
3191 mouse
3192 \end_layout
3194 \begin_layout Itemize
3195 justifier
3196 \end_layout
3198 \begin_layout Itemize
3199 superscope
3200 \end_layout
3202 \begin_layout Subsubsection
3203 input.reset([number cycles])
3204 \end_layout
3206 \begin_layout Standard
3207 Execute reset.
3208  If cycles is greater than zero, do delayed reset.
3209  0 (or no value) causes immediate reset.
3210 \end_layout
3212 \begin_layout Itemize
3213 Only available with subframe flag false.
3214 \end_layout
3216 \begin_layout Subsubsection
3217 input.raw()
3218 \end_layout
3220 \begin_layout Standard
3221 Returns table of tables of all available keys and axes.
3222  The first table is indexed by key name (platform-dependent!), and the inner
3223  table has the following fields:
3224 \end_layout
3226 \begin_layout Itemize
3227 last_rawval: Last reported raw value for control.
3228 \end_layout
3230 \begin_layout Itemize
3231 ktype: Type of key (disabled, key, mouse, axis, axis-inverse, hat, pressure-m0,
3232  pressure-mp, pressure-0m, pressure-0p, pressure-pm, pressure-p0).
3233 \end_layout
3235 \begin_layout Itemize
3236 cal_left: Minimum calibration value.
3237  Only meaningful with axis and pressure types.
3238 \end_layout
3240 \begin_layout Itemize
3241 cal_center: Center calibration value.
3242  Only meaningful with axis and pressure types.
3243 \end_layout
3245 \begin_layout Itemize
3246 cal_right: Maximum calibration value.
3247  Only meaningful with axis and pressure types.
3248 \end_layout
3250 \begin_layout Itemize
3251 cal_tolerance: Dead zone tolerance.
3252  Only meaningful with axis and pressure types.
3253 \end_layout
3255 \begin_layout Subsubsection
3256 input.keyhook(string key, boolean state)
3257 \end_layout
3259 \begin_layout Standard
3260 Requests that keyhook events to be sent for key (state=true) or not sent
3261  (state=false).
3262 \end_layout
3264 \begin_layout Subsubsection
3265 input.joyget(number controller)
3266 \end_layout
3268 \begin_layout Standard
3269 Returns table for current controls for specified controller.
3270  The names of fields vary by controller type.
3271 \end_layout
3273 \begin_layout Itemize
3274 The buttons have the same name as those are referred to in other contexts
3275  in the emulator
3276 \end_layout
3278 \begin_layout Itemize
3279 The analog axes are 
3280 \begin_inset Quotes eld
3281 \end_inset
3283 xaxis
3284 \begin_inset Quotes erd
3285 \end_inset
3287  and 
3288 \begin_inset Quotes eld
3289 \end_inset
3291 yaxis
3292 \begin_inset Quotes erd
3293 \end_inset
3296 \end_layout
3298 \begin_layout Subsubsection
3299 input.joyset(number controller, table controls)
3300 \end_layout
3302 \begin_layout Standard
3303 Set the the state of specified controller to values specified in specified
3304  table.
3305 \end_layout
3307 \begin_layout Itemize
3308 nil does not change value
3309 \end_layout
3311 \begin_layout Itemize
3312 true/false (buttons) and integers (axes) force value.
3313 \end_layout
3315 \begin_layout Itemize
3316 string (button) inverts the input.
3317 \end_layout
3319 \begin_layout Subsubsection
3320 input.lcid_to_pcid(number controller)
3321 \end_layout
3323 \begin_layout Standard
3324 Return the physical index, physical port and controller number in port for
3325  specified (1-based) logical controller.
3326 \end_layout
3328 \begin_layout Subsection
3329 Table subtitle
3330 \end_layout
3332 \begin_layout Standard
3333 Subtitle handling
3334 \end_layout
3336 \begin_layout Subsubsection
3337 subtitle.byindex(number i)
3338 \end_layout
3340 \begin_layout Standard
3341 Read the frame and length of ith subtitle.
3342  Returns nothing if not present.
3343 \end_layout
3345 \begin_layout Subsubsection
3346 subtitle.set(number f, number l, string txt)
3347 \end_layout
3349 \begin_layout Standard
3350 Set the text of subtitle.
3351 \end_layout
3353 \begin_layout Subsubsection
3354 subtitle.get(number f, number l)
3355 \end_layout
3357 \begin_layout Standard
3358 Get the text of subtitle.
3359 \end_layout
3361 \begin_layout Subsubsection
3362 subtitle.delete(number f, number l)
3363 \end_layout
3365 \begin_layout Standard
3366 Delete specified subtitle.
3367 \end_layout
3369 \begin_layout Subsection
3370 Table hostmemory
3371 \end_layout
3373 \begin_layout Standard
3374 Host memory handling (extra memory saved to savestates).
3375  Host memory starts empty.
3376 \end_layout
3378 \begin_layout Subsubsection
3379 hostmemory.read(number address)
3380 \end_layout
3382 \begin_layout Standard
3383 Reads hostmemory slot address.
3384  Slot numbers out of range return false instead of numeric.
3385 \end_layout
3387 \begin_layout Subsubsection
3388 hostmemory.write(number address, number value)
3389 \end_layout
3391 \begin_layout Standard
3392 Writes hostmemory slot with 0-255.
3393  Slot numbers out of range cause extension of host memory slot space.
3394 \end_layout
3396 \begin_layout Subsubsection
3397 hostmemory.readbyte(number address)
3398 \end_layout
3400 \begin_layout Standard
3401 Read unsigned byte (1 element) from given address.
3402  Slots out of range return false.
3403 \end_layout
3405 \begin_layout Subsubsection
3406 hostmemory.writebyte(number address, number value)
3407 \end_layout
3409 \begin_layout Standard
3410 Write unsigned byte (1 element) to given slot.
3411  Slot numbers out of range cause extension.
3412 \end_layout
3414 \begin_layout Subsubsection
3415 hostmemory.readsbyte(number address)
3416 \end_layout
3418 \begin_layout Standard
3419 Read signed byte (1 element) from given address.
3420  Slots out of range return false.
3421 \end_layout
3423 \begin_layout Subsubsection
3424 hostmemory.writesbyte(number address, number value)
3425 \end_layout
3427 \begin_layout Standard
3428 Write signed byte (1 element) to given slot.
3429  Slot numbers out of range cause extension.
3430 \end_layout
3432 \begin_layout Subsubsection
3433 hostmemory.readword(number address)
3434 \end_layout
3436 \begin_layout Standard
3437 Read unsigned word (2 elements) from given address.
3438  Slots out of range return false.
3439 \end_layout
3441 \begin_layout Subsubsection
3442 hostmemory.writeword(number address, number value)
3443 \end_layout
3445 \begin_layout Standard
3446 Write unsigned word (2 elements) to given slot.
3447  Slot numbers out of range cause extension.
3448 \end_layout
3450 \begin_layout Subsubsection
3451 hostmemory.readsword(number address)
3452 \end_layout
3454 \begin_layout Standard
3455 Read signed word (2 elements) from given address.
3456  Slots out of range return false.
3457 \end_layout
3459 \begin_layout Subsubsection
3460 hostmemory.writesword(number address, number value)
3461 \end_layout
3463 \begin_layout Standard
3464 Write signed word (2 elements) to given slot.
3465  Slot numbers out of range cause extension.
3466 \end_layout
3468 \begin_layout Subsubsection
3469 hostmemory.readdword(number address)
3470 \end_layout
3472 \begin_layout Standard
3473 Read unsigned doubleword (4 elements) from given address.
3474  Slots out of range return false.
3475 \end_layout
3477 \begin_layout Subsubsection
3478 hostmemory.writedword(number address, number value)
3479 \end_layout
3481 \begin_layout Standard
3482 Write unsigned doubleword (4 elements) to given slot.
3483  Slot numbers out of range cause extension.
3484 \end_layout
3486 \begin_layout Subsubsection
3487 hostmemory.readsdword(number address)
3488 \end_layout
3490 \begin_layout Standard
3491 Read signed doubleword (4 elements) from given address.
3492  Slots out of range return false.
3493 \end_layout
3495 \begin_layout Subsubsection
3496 hostmemory.writesdword(number address, number value)
3497 \end_layout
3499 \begin_layout Standard
3500 Write signed doubleword (4 elements) to given slot.
3501  Slot numbers out of range cause extension.
3502 \end_layout
3504 \begin_layout Subsubsection
3505 hostmemory.readqword(number address)
3506 \end_layout
3508 \begin_layout Standard
3509 Read unsigned quadword (8 elements) from given address.
3510  Slots out of range return false.
3511 \end_layout
3513 \begin_layout Subsubsection
3514 hostmemory.writeqword(number address, number value)
3515 \end_layout
3517 \begin_layout Standard
3518 Write unsigned quadword (4 elements) to given slot.
3519  Slot numbers out of range cause extension.
3520 \end_layout
3522 \begin_layout Subsubsection
3523 hostmemory.readsqword(number address)
3524 \end_layout
3526 \begin_layout Standard
3527 Read signed quadword (8 elements) from given address.
3528  Slots out of range return false.
3529 \end_layout
3531 \begin_layout Subsubsection
3532 hostmemory.writesqword(number address, number value)
3533 \end_layout
3535 \begin_layout Standard
3536 Write signed quadword (8 elements) to given slot.
3537  Slot numbers out of range cause extension.
3538 \end_layout
3540 \begin_layout Subsection
3541 Table movie
3542 \end_layout
3544 \begin_layout Standard
3545 Movie handling
3546 \end_layout
3548 \begin_layout Subsubsection
3549 movie.currentframe()
3550 \end_layout
3552 \begin_layout Standard
3553 Return number of current frame.
3554 \end_layout
3556 \begin_layout Subsubsection
3557 movie.framecount()
3558 \end_layout
3560 \begin_layout Standard
3561 Return number of frames in movie.
3562 \end_layout
3564 \begin_layout Subsubsection
3565 movie.readonly()
3566 \end_layout
3568 \begin_layout Standard
3569 Return true if in readonly mode, false if in readwrite.
3570 \end_layout
3572 \begin_layout Subsubsection
3573 movie.rerecords()
3574 \end_layout
3576 \begin_layout Standard
3577 Returns the current value of rerecord count.
3578 \end_layout
3580 \begin_layout Subsubsection
3581 movie.set_readwrite()
3582 \end_layout
3584 \begin_layout Standard
3585 Set readwrite mode (does not cause on_readwrite callback).
3586 \end_layout
3588 \begin_layout Subsubsection
3589 movie.frame_subframes(number frame)
3590 \end_layout
3592 \begin_layout Standard
3593 Count number of subframes in specified frame (frame numbers are 1-based)
3594  and return that.
3595 \end_layout
3597 \begin_layout Subsubsection
3598 movie.read_subframes(number frame, number subframe)
3599 \end_layout
3601 \begin_layout Standard
3602 Read specifed subframe in specified frame and return data as array (100
3603  elements, numbered 0-99 currently).
3604 \end_layout
3606 \begin_layout Subsubsection
3607 movie.read_rtc()
3608 \end_layout
3610 \begin_layout Standard
3611 Returns the current value of the RTC as a pair (second, subsecond).
3612 \end_layout
3614 \begin_layout Subsubsection
3615 movie.unsafe_rewind([UNSAFEREWIND state])
3616 \end_layout
3618 \begin_layout Standard
3619 Start setting point for unsafe rewind or jump to point of unsafe rewind.
3620 \end_layout
3622 \begin_layout Itemize
3623 If called without argument, causes emulator to start process of setting
3624  unsafe rewind point.
3625  When this has finished, callback on_set_rewind occurs, passing the rewind
3626  state to lua script.
3627 \end_layout
3629 \begin_layout Itemize
3630 If called with argument, causes emulator rewind to passed rewind point as
3631  soon as possible.
3632  Readwrite mode is implicitly activated.
3633 \end_layout
3635 \begin_layout Standard
3636 The following warnings apply to unsafe rewinding:
3637 \end_layout
3639 \begin_layout Itemize
3640 There are no safety checks against misuse (that's what 
3641 \begin_inset Quotes eld
3642 \end_inset
3644 unsafe
3645 \begin_inset Quotes erd
3646 \end_inset
3648  comes from)!
3649 \end_layout
3651 \begin_layout Itemize
3652 Only call rewind from timeline rewind point was set from.
3653 \end_layout
3655 \begin_layout Itemize
3656 Only call rewind from after the rewind point was set.
3657 \end_layout
3659 \begin_layout Subsubsection
3660 movie.copy_movie([INPUTMOVIE movie])
3661 \end_layout
3663 \begin_layout Standard
3664 Copies specified movie (if none or nil, the active movie) as new movie object
3665  (INPUTMOVIE).
3666 \end_layout
3668 \begin_layout Standard
3669 Also available as method in INPUTFRAME.
3670 \end_layout
3672 \begin_layout Subsubsection
3673 movie.get_frame([INPUTMOVIE movie,] number frame)
3674 \end_layout
3676 \begin_layout Standard
3677 Get INPUTFRAME object corresponding to specified frame in specified movie.
3678 \end_layout
3680 \begin_layout Standard
3681 Also available as method in INPUTFRAME.
3682 \end_layout
3684 \begin_layout Subsubsection
3685 movie.set_frame([INPUTMOVIE movie,] number frame, INPUTFRAME data)
3686 \end_layout
3688 \begin_layout Standard
3689 Set data in specified frame.
3690  Note: Past can't be edited in active movie.
3691 \end_layout
3693 \begin_layout Standard
3694 Also available as method in INPUTFRAME.
3695 \end_layout
3697 \begin_layout Subsubsection
3698 movie.get_size([INPUTMOVIE movie])
3699 \end_layout
3701 \begin_layout Standard
3702 Return number of subframes in specified movie.
3703 \end_layout
3705 \begin_layout Standard
3706 Also available as method in INPUTFRAME.
3707 \end_layout
3709 \begin_layout Subsubsection
3710 movie.count_frames([INPUTMOVIE movie])
3711 \end_layout
3713 \begin_layout Standard
3714 Return number of frames in movie.
3715 \end_layout
3717 \begin_layout Standard
3718 Also available as method in INPUTFRAME.
3719 \end_layout
3721 \begin_layout Subsubsection
3722 movie.find_frame([INPUTMOVIE movie], number frame)
3723 \end_layout
3725 \begin_layout Standard
3726 Returns starting subframe of given frame (frame numbers are 1-based).
3727  Returns -1 if frame number is bad.
3728 \end_layout
3730 \begin_layout Standard
3731 Also available as method in INPUTFRAME.
3732 \end_layout
3734 \begin_layout Subsubsection
3735 movie.blank_frame([INPUTMOVIE movie])
3736 \end_layout
3738 \begin_layout Standard
3739 Return blank INPUTFRAME with frame type from specified movie.
3740 \end_layout
3742 \begin_layout Standard
3743 Also available as method in INPUTFRAME.
3744 \end_layout
3746 \begin_layout Subsubsection
3747 movie.append_frames([INPUTMOVIE movie,] number frames)
3748 \end_layout
3750 \begin_layout Standard
3751 Append specified number of frames.
3752 \end_layout
3754 \begin_layout Standard
3755 Also available as method in INPUTFRAME.
3756 \end_layout
3758 \begin_layout Subsubsection
3759 movie.append_frame([INPUTMOVIE movie,] INPUTFRAME frame)
3760 \end_layout
3762 \begin_layout Standard
3763 Append specified frame.
3764  Past of current movie can't be edited.
3765 \end_layout
3767 \begin_layout Standard
3768 Also available as method in INPUTFRAME.
3769 \end_layout
3771 \begin_layout Subsubsection
3772 movie.truncate([INPUTMOVIE movie,] number frames)
3773 \end_layout
3775 \begin_layout Standard
3776 Truncate the specified movie to specified number of frames.
3777 \end_layout
3779 \begin_layout Standard
3780 Also available as method in INPUTFRAME.
3781 \end_layout
3783 \begin_layout Subsubsection
3784 movie.edit([INPUTMOVIE movie,] number frame, number port, number controller,
3785  number control, number/bool value)
3786 \end_layout
3788 \begin_layout Standard
3789 Change specified control in specified frame in specified movie.
3790  Past can't be edited in active movie.
3791 \end_layout
3793 \begin_layout Standard
3794 Also available as method in INPUTFRAME.
3795 \end_layout
3797 \begin_layout Subsubsection
3798 movie.copy_frames2([INPUTMOVIE dstmov,] number dst, [INPUTMOVIE srcmov,]
3799  number src, number count)
3800 \end_layout
3802 \begin_layout Standard
3803 Copy specified number of frames between two movies.
3804  The copy proceeeds in forward direction.
3805 \end_layout
3807 \begin_layout Subsubsection
3808 movie.copy_frames([INPUTMOVIE mov,] number dst, number src, number count,
3809  bool backwards)
3810 \end_layout
3812 \begin_layout Standard
3813 Copy specified number of frames from one point in movie to another.
3814  If backwards is true, the copy will be done backwards.
3815 \end_layout
3817 \begin_layout Standard
3818 Also available as method in INPUTFRAME.
3819 \end_layout
3821 \begin_layout Subsubsection
3822 movie.serialize([INPUTMOVIE movie,] string filename, bool binary)
3823 \end_layout
3825 \begin_layout Standard
3826 Serialize given movie into file.
3827  If binary is true, binary format (more compact and much faster) is used.
3828 \end_layout
3830 \begin_layout Standard
3831 Also available as method in INPUTFRAME.
3832 \end_layout
3834 \begin_layout Subsubsection
3835 movie.unserialize(INPUTFRAME template, string filename, bool binary)
3836 \end_layout
3838 \begin_layout Standard
3839 Unserialize movie from file.
3840  The given frame is used as template to decide the frame type.
3841  If binary is true, binary format is decoded (much faster).
3842 \end_layout
3844 \begin_layout Standard
3845 Also available as method in INPUTFRAME.
3846 \end_layout
3848 \begin_layout Subsubsection
3849 movie.current_first_subframe()
3850 \end_layout
3852 \begin_layout Standard
3853 Returns first subframe in current frame.
3854 \end_layout
3856 \begin_layout Subsubsection
3857 movie.pollcounter(number port, number controller, number control)
3858 \end_layout
3860 \begin_layout Standard
3861 Returns number of times the specified control has been polled this frame.
3862 \end_layout
3864 \begin_layout Subsubsection
3865 INPUTFRAME::get_button(number port, number controller, number control)
3866 \end_layout
3868 \begin_layout Standard
3869 Returns state of given button as boolean.
3870 \end_layout
3872 \begin_layout Subsubsection
3873 INPUTFRAME::get_axis(number port, number controller, number control)
3874 \end_layout
3876 \begin_layout Standard
3877 Returns state of given axis as number.
3878 \end_layout
3880 \begin_layout Subsubsection
3881 INPUTFRAME::set_button(number port, number controller, number control, number/bo
3882 ol value)
3883 \end_layout
3885 \begin_layout Standard
3886 Set the given button/axis to given value.
3887 \end_layout
3889 \begin_layout Subsubsection
3890 INPUTFRAME::set_axis(number port, number controller, number control)
3891 \end_layout
3893 \begin_layout Standard
3894 Same as set_button.
3895 \end_layout
3897 \begin_layout Subsubsection
3898 INPUTFRAME::serialize()
3899 \end_layout
3901 \begin_layout Standard
3902 Return string representation of frame.
3903 \end_layout
3905 \begin_layout Subsubsection
3906 INPUTFRAME::unserialize(string data)
3907 \end_layout
3909 \begin_layout Standard
3910 Set current frame from given data.
3911 \end_layout
3913 \begin_layout Subsubsection
3914 INPUTFRAME::get_stride()
3915 \end_layout
3917 \begin_layout Standard
3918 Return number of bytes needed to store the input frame.
3919  Mainly useful for some debugging.
3920 \end_layout
3922 \begin_layout Subsection
3923 Table settings
3924 \end_layout
3926 \begin_layout Standard
3927 Routines for settings manipulation
3928 \end_layout
3930 \begin_layout Subsubsection
3931 settings.get(string name)
3932 \end_layout
3934 \begin_layout Standard
3935 Get value of setting.
3936  If setting is blank, returns false.
3937  If setting value can't be obtained, returns (nil, error message).
3938 \end_layout
3940 \begin_layout Subsubsection
3941 settings.set(string name, string value)
3942 \end_layout
3944 \begin_layout Standard
3945 Set value of setting.
3946  If setting can't be set, returns (nil, error message).
3947 \end_layout
3949 \begin_layout Subsubsection
3950 settings.is_set(string name)
3951 \end_layout
3953 \begin_layout Standard
3954 Returns if setting is set.
3955  If setting does not exist, returns (nil, error message).
3956 \end_layout
3958 \begin_layout Subsubsection
3959 settings.blank(string name)
3960 \end_layout
3962 \begin_layout Standard
3963 Blanks a setting and returns true.
3964  If setting can't be blanked, returns (nil, error message).
3965 \end_layout
3967 \begin_layout Subsection
3968 Table memory
3969 \end_layout
3971 \begin_layout Standard
3972 Contains various functions for managing memory
3973 \end_layout
3975 \begin_layout Subsubsection
3976 memory.vma_count()
3977 \end_layout
3979 \begin_layout Standard
3980 Returns the number of VMAs
3981 \end_layout
3983 \begin_layout Subsubsection
3984 memory.read_vma(number index)
3985 \end_layout
3987 \begin_layout Standard
3988 Reads the specified VMA (indices start from zero).
3989  Trying to read invalid VMA gives nil.
3990  The read VMA is table with the following fields:
3991 \end_layout
3993 \begin_layout Itemize
3994 region_name (string): The readable name of the VMA
3995 \end_layout
3997 \begin_layout Itemize
3998 baseaddr (number): Base address of the VMA
3999 \end_layout
4001 \begin_layout Itemize
4002 lastaddr (number): Last address in the VMA.
4003 \end_layout
4005 \begin_layout Itemize
4006 size (number): The size of VMA in bytes.
4007 \end_layout
4009 \begin_layout Itemize
4010 readonly (boolean): True of the VMA corresponds to ROM.
4011 \end_layout
4013 \begin_layout Itemize
4014 iospace (boolean): True if the VMA is I/O space.
4015 \end_layout
4017 \begin_layout Itemize
4018 native_endian (boolean): True if the VMA has native endian as opposed to
4019  little endian.
4020 \end_layout
4022 \begin_layout Subsubsection
4023 memory.find_vma(number address)
4024 \end_layout
4026 \begin_layout Standard
4027 Finds the VMA containing specified address.
4028  Returns table in the same format as read_vma or nil if not found.
4029 \end_layout
4031 \begin_layout Subsubsection
4032 memory.readbyte(number address)
4033 \end_layout
4035 \begin_layout Standard
4036 Reads the specified address as unsigned byte and returns the result.
4037 \end_layout
4039 \begin_layout Subsubsection
4040 memory.readsbyte(number address)
4041 \end_layout
4043 \begin_layout Standard
4044 Reads the specified address as signed byte and returns the result.
4045 \end_layout
4047 \begin_layout Subsubsection
4048 memory.writebyte(number address, number value)
4049 \end_layout
4051 \begin_layout Standard
4052 Writes the specified value (negative values undergo 2's complement) to specified
4053  address (as a byte).
4054 \end_layout
4056 \begin_layout Subsubsection
4057 memory.readword(number address)
4058 \end_layout
4060 \begin_layout Standard
4061 Reads the specified address as unsigned word and returns the result.
4062 \end_layout
4064 \begin_layout Subsubsection
4065 memory.readsword(number address)
4066 \end_layout
4068 \begin_layout Standard
4069 Reads the specified address as signed word and returns the result.
4070 \end_layout
4072 \begin_layout Subsubsection
4073 memory.writeword(number address, number value)
4074 \end_layout
4076 \begin_layout Standard
4077 Writes the specified value (negative values undergo 2's complement) to specified
4078  address (as a word).
4079 \end_layout
4081 \begin_layout Subsubsection
4082 memory.readdword(number address)
4083 \end_layout
4085 \begin_layout Standard
4086 Reads the specified address as unsigned doubleword and returns the result.
4087 \end_layout
4089 \begin_layout Subsubsection
4090 memory.readsdword(number address)
4091 \end_layout
4093 \begin_layout Standard
4094 Reads the specified address as signed doubleword and returns the result.
4095 \end_layout
4097 \begin_layout Subsubsection
4098 memory.writedword(number address, number value)
4099 \end_layout
4101 \begin_layout Standard
4102 Writes the specified value (negative values undergo 2's complement) to specified
4103  address (as a doubleword).
4104 \end_layout
4106 \begin_layout Subsubsection
4107 memory.readqword(number address)
4108 \end_layout
4110 \begin_layout Standard
4111 Reads the specified address as unsigned quadword and returns the result.
4112 \end_layout
4114 \begin_layout Subsubsection
4115 memory.readsqword(number address)
4116 \end_layout
4118 \begin_layout Standard
4119 Reads the specified address as signed quadword and returns the result.
4120 \end_layout
4122 \begin_layout Subsubsection
4123 memory.writeqword(number address, number value)
4124 \end_layout
4126 \begin_layout Standard
4127 Writes the specified value (negative values undergo 2's complement) to specified
4128  address (as a quadword).
4129 \end_layout
4131 \begin_layout Subsubsection
4132 memory.hash_region(number base, number size)
4133 \end_layout
4135 \begin_layout Standard
4136 Hash specified number of bytes starting from specified address and return
4137  the SHA-256.
4138 \end_layout
4140 \begin_layout Subsubsection
4141 memory.hash_state()
4142 \end_layout
4144 \begin_layout Standard
4145 Hash the current system state.
4146  Mainly useful for debugging savestates.
4147 \end_layout
4149 \begin_layout Subsubsection
4150 memory.readregion(number base, number size)
4151 \end_layout
4153 \begin_layout Standard
4154 Read a region of memory.
4155 \end_layout
4157 \begin_layout Itemize
4158 Warning: If the region crosses VMA boundary, the results are undefined.
4159 \end_layout
4161 \begin_layout Subsubsection
4162 memory.map<type>([number base, number size])
4163 \end_layout
4165 \begin_layout Standard
4166 Returns a table mapping specified memory aperture for read/write.
4167  If parameters are omitted, entiere map space is the aperture.
4168 \end_layout
4170 \begin_layout Itemize
4171 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
4172 \end_layout
4174 \begin_layout Subsubsection
4175 memory.writeregion(number base, number size, table data)
4176 \end_layout
4178 \begin_layout Standard
4179 Write a region of memory.
4180 \end_layout
4182 \begin_layout Itemize
4183 Warning: If the region crosses VMA boundary, the results are undefined.
4184 \end_layout
4186 \begin_layout Subsubsection
4187 memory.map_structure()
4188 \end_layout
4190 \begin_layout Standard
4191 Returns a new mapping structure (MMAP_STRUCT)
4192 \end_layout
4194 \begin_layout Subsubsection
4195 MMAP_STRUCT(string key, number address, string type)
4196 \end_layout
4198 \begin_layout Standard
4199 Bind key in mmap structure to specified address with specified type.
4200 \end_layout
4202 \begin_layout Itemize
4203 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
4204 \end_layout
4206 \begin_layout Subsubsection
4207 memory.read_expr(string expr)
4208 \end_layout
4210 \begin_layout Standard
4211 Evaluate specified watch expression and return result
4212 \end_layout
4214 \begin_layout Subsection
4215 Table subtitle
4216 \end_layout
4218 \begin_layout Standard
4219 Contains functions for manipulating subtitles.
4220 \end_layout
4222 \begin_layout Subsubsection
4223 subtitle.byindex(number index)
4224 \end_layout
4226 \begin_layout Standard
4227 Get (basetime, length) pair of specified subtitle index or nothing if index
4228  isn't valid.
4229 \end_layout
4231 \begin_layout Subsubsection
4232 subtitle.get(number basetime, number length)
4233 \end_layout
4235 \begin_layout Standard
4236 Read the specified subtitle.
4237  Returns 
4238 \begin_inset Quotes eld
4239 \end_inset
4242 \begin_inset Quotes erd
4243 \end_inset
4245  if the subtitle does not exist.
4246 \end_layout
4248 \begin_layout Subsubsection
4249 subtitle.set(number basetime, number length, string content)
4250 \end_layout
4252 \begin_layout Standard
4253 Set the specified subtitle.
4254 \end_layout
4256 \begin_layout Subsubsection
4257 subtitle.deltete(number basetime, number length)
4258 \end_layout
4260 \begin_layout Standard
4261 Delete the specified subtitle.
4262 \end_layout
4264 \begin_layout Subsection
4265 Table _SYSTEM
4266 \end_layout
4268 \begin_layout Standard
4269 Contains copy of global variables from time of Lua initialization.
4270  Non-writeable.
4271 \end_layout
4273 \begin_layout Subsection
4274 Callbacks
4275 \end_layout
4277 \begin_layout Standard
4278 Various callbacks to Lua that can occur.
4279 \end_layout
4281 \begin_layout Subsubsection
4282 Callback: on_paint(bool not_synth)
4283 \end_layout
4285 \begin_layout Standard
4286 Called when screen is being painted.
4287  Any gui.* calls requiring graphic context draw on the screen.
4288 \end_layout
4290 \begin_layout Standard
4291 not_synth is true if this hook is being called in response to received frame,
4292  false otherwise.
4293 \end_layout
4295 \begin_layout Subsubsection
4296 Callback: on_video()
4297 \end_layout
4299 \begin_layout Standard
4300 Called when video dump frame is being painted.
4301  Any gui.* calls requiring graphic context draw on the video.
4302 \end_layout
4304 \begin_layout Subsubsection
4305 Callback: on_frame_emulated()
4306 \end_layout
4308 \begin_layout Standard
4309 Called when emulating frame has completed and on_paint()/on_video() calls
4310  are about to be issued.
4311 \end_layout
4313 \begin_layout Subsubsection
4314 Callback: on_frame()
4315 \end_layout
4317 \begin_layout Standard
4318 Called on each starting whole frame.
4319 \end_layout
4321 \begin_layout Subsubsection
4322 Callback: on_startup()
4323 \end_layout
4325 \begin_layout Standard
4326 Called when the emulator is starting (lsnes.rc and --run files has been run).
4327 \end_layout
4329 \begin_layout Subsubsection
4330 Callback: on_rewind()
4331 \end_layout
4333 \begin_layout Standard
4334 Called when rewind movie to beginning has completed.
4335 \end_layout
4337 \begin_layout Subsubsection
4338 Callback: on_pre_load(string name)
4339 \end_layout
4341 \begin_layout Standard
4342 Called just before savestate/movie load occurs (note: loads are always delayed,
4343  so this occurs even when load was initiated by lua).
4344 \end_layout
4346 \begin_layout Subsubsection
4347 Callback: on_err_load(string name)
4348 \end_layout
4350 \begin_layout Standard
4351 Called if loadstate goes wrong.
4352 \end_layout
4354 \begin_layout Subsubsection
4355 Callback: on_post_load(string name, boolean was_savestate)
4356 \end_layout
4358 \begin_layout Standard
4359 Called on successful loadstate.
4360  was_savestate gives if this was a savestate or a movie.
4361 \end_layout
4363 \begin_layout Subsubsection
4364 Callback: on_pre_save(string name, boolean is_savestate)
4365 \end_layout
4367 \begin_layout Standard
4368 Called just before savestate save occurs (note: movie saves are synchronous
4369  and won't trigger these callbacks if called from Lua).
4370 \end_layout
4372 \begin_layout Subsubsection
4373 Callback: on_err_save(string name)
4374 \end_layout
4376 \begin_layout Standard
4377 Called if savestate goes wrong.
4378 \end_layout
4380 \begin_layout Subsubsection
4381 Callback: on_post_save(string name, boolean is_savestate)
4382 \end_layout
4384 \begin_layout Standard
4385 Called on successful savaestate.
4386  is_savestate gives if this was a savestate or a movie.
4387 \end_layout
4389 \begin_layout Subsubsection
4390 Callback: on_quit()
4391 \end_layout
4393 \begin_layout Standard
4394 Called when emulator is shutting down.
4395 \end_layout
4397 \begin_layout Subsubsection
4398 Callback: on_input(boolean subframe)
4399 \end_layout
4401 \begin_layout Standard
4402 Called when emulator is just sending input to bsnes core.
4403  Warning: This is called even in readonly mode, but the results are ignored.
4404 \end_layout
4406 \begin_layout Subsubsection
4407 Callback: on_reset()
4408 \end_layout
4410 \begin_layout Standard
4411 Called when SNES is reset.
4412 \end_layout
4414 \begin_layout Subsubsection
4415 Callback: on_readwrite()
4416 \end_layout
4418 \begin_layout Standard
4419 Called when moving into readwrite mode as result of 
4420 \begin_inset Quotes eld
4421 \end_inset
4423 set-rwmode
4424 \begin_inset Quotes erd
4425 \end_inset
4427  command (note: moving to rwmode by Lua won't trigger this, as per recursive
4428  entry protection).
4429 \end_layout
4431 \begin_layout Subsubsection
4432 Callback: on_snoop(number port, number controller, number index, number
4433  value)
4434 \end_layout
4436 \begin_layout Standard
4437 Called each time bsnes asks for input.
4438  The value is the final value to be sent to bsnes core (readonly mode, autohold
4439  and autofire have been taken into account).
4440  Might be useful when translating movies to format suitable for console
4441  verification.
4442  Note: There is no way to modify the value to be sent.
4443 \end_layout
4445 \begin_layout Itemize
4446 Not called if callback on_snoop2 is defined.
4447 \end_layout
4449 \begin_layout Subsubsection
4450 Callback: on_snoop2(number port, number controller, number index, number
4451  value)
4452 \end_layout
4454 \begin_layout Standard
4455 Like on_snoop, but reserves port 0 for system, having first user port be
4456  port 1.
4457 \end_layout
4459 \begin_layout Subsubsection
4460 Callback: on_keyhook(string keyname, table state)
4461 \end_layout
4463 \begin_layout Standard
4464 Sent when key that has keyhook events requested changes state.
4465  Keyname is name of the key (group) and state is the state (same kind as
4466  table values in input.raw).
4467 \end_layout
4469 \begin_layout Subsubsection
4470 Callback: on_idle()
4471 \end_layout
4473 \begin_layout Standard
4474 Called when requested by set_idle_timeout(), the timeout has expired and
4475  emulator is waiting.
4476 \end_layout
4478 \begin_layout Subsubsection
4479 Callback: on_timer()
4480 \end_layout
4482 \begin_layout Standard
4483 Called when requested by set_idle_timeout() and the timeout has expired
4484  (regardless if emulator is waiting).
4485 \end_layout
4487 \begin_layout Subsubsection
4488 Callback: on_set_rewind(UNSAFEREWIND r)
4489 \end_layout
4491 \begin_layout Standard
4492 Called when unsafe rewind object has been constructed.
4493 \end_layout
4495 \begin_layout Subsubsection
4496 Callback: on_pre_rewind() 
4497 \end_layout
4499 \begin_layout Standard
4500 Called just before unsafe rewind is about to occur.
4501 \end_layout
4503 \begin_layout Subsubsection
4504 Callback: on_post_rewind() 
4505 \end_layout
4507 \begin_layout Standard
4508 Called just after unsafe rewind has occured.
4509 \end_layout
4511 \begin_layout Subsubsection
4512 Callback: on_button(number port, number controller, number index, string
4513  type)
4514 \end_layout
4516 \begin_layout Standard
4517 Called on controller button press, with following parameters:
4518 \end_layout
4520 \begin_layout Itemize
4521 port: Port number (0 is system)
4522 \end_layout
4524 \begin_layout Itemize
4525 controller: Controller within port
4526 \end_layout
4528 \begin_layout Itemize
4529 index: Index of button.
4530 \end_layout
4532 \begin_layout Itemize
4533 type: Type of event, one of:
4534 \end_layout
4536 \begin_deeper
4537 \begin_layout Itemize
4538 \begin_inset Quotes eld
4539 \end_inset
4541 pressed
4542 \begin_inset Quotes erd
4543 \end_inset
4545 : Button was pressed.
4546 \end_layout
4548 \begin_layout Itemize
4549 \begin_inset Quotes eld
4550 \end_inset
4552 released
4553 \begin_inset Quotes erd
4554 \end_inset
4556 : Button was released.
4557 \end_layout
4559 \begin_layout Itemize
4560 \begin_inset Quotes eld
4561 \end_inset
4563 hold
4564 \begin_inset Quotes erd
4565 \end_inset
4567 : Held.
4568 \end_layout
4570 \begin_layout Itemize
4571 \begin_inset Quotes eld
4572 \end_inset
4574 unhold
4575 \begin_inset Quotes erd
4576 \end_inset
4578 : Released from hold.
4579 \end_layout
4581 \begin_layout Itemize
4582 \begin_inset Quotes eld
4583 \end_inset
4585 type
4586 \begin_inset Quotes erd
4587 \end_inset
4589 : Typing input on button.
4590 \end_layout
4592 \begin_layout Itemize
4593 \begin_inset Quotes eld
4594 \end_inset
4596 untype
4597 \begin_inset Quotes erd
4598 \end_inset
4600 : Typing input undone.
4601 \end_layout
4603 \begin_layout Itemize
4604 \begin_inset Quotes eld
4605 \end_inset
4607 analog
4608 \begin_inset Quotes erd
4609 \end_inset
4611 : Analog action on axis.
4612 \end_layout
4614 \end_deeper
4615 \begin_layout Subsubsection
4616 Callback: on_movie_lost(STRING kind)
4617 \end_layout
4619 \begin_layout Standard
4620 Called just before something would happen that could lose movie data.
4621  Kind can be:
4622 \end_layout
4624 \begin_layout Itemize
4625 readwrite: Switching to readwrite mode.
4626 \end_layout
4628 \begin_layout Itemize
4629 reload: ROM is being reloaded in readwrite mode.
4630 \end_layout
4632 \begin_layout Itemize
4633 load: New movie is being loaded.
4634 \end_layout
4636 \begin_layout Itemize
4637 unsaferewind: Unsafe rewind is happening.
4638 \end_layout
4640 \begin_layout Section
4641 Movie editor
4642 \end_layout
4644 \begin_layout Itemize
4645 The editor edits in-memory movie.
4646 \end_layout
4648 \begin_layout Itemize
4649 Because past can't be edited and readwrite mode doesn't allow future, editing
4650  only works in 
4651 \emph on
4652 read only
4653 \emph default
4654  mode.
4655 \end_layout
4657 \begin_layout Itemize
4658 Keyboard triggers the normal hotkeys and bindings.
4659 \end_layout
4661 \begin_layout Subsection
4662 Left button actions
4663 \end_layout
4665 \begin_layout Itemize
4666 Clicking on cell in future (indicated by lack of redish background) toggles
4667  it (if it is a button) or prompts for a value (if it is an axis)
4668 \end_layout
4670 \begin_layout Itemize
4671 Dragging vertically toggles sequence of buttons or changes a sequence of
4672  axis values.
4673 \end_layout
4675 \begin_layout Subsection
4676 Right button actions
4677 \end_layout
4679 \begin_layout Standard
4680 The right mouse button pops up a context-sensitive menu:
4681 \end_layout
4683 \begin_layout Itemize
4684 Toggle <something>: Toggle this button
4685 \end_layout
4687 \begin_layout Itemize
4688 Change <something>: Change this axis value
4689 \end_layout
4691 \begin_layout Itemize
4692 Insert frame after: Insert a frame after this frame
4693 \end_layout
4695 \begin_layout Itemize
4696 Append frame: Append a frame to movie
4697 \end_layout
4699 \begin_layout Itemize
4700 Append frames: Append specified number of frames to movie
4701 \end_layout
4703 \begin_layout Itemize
4704 Delete frame: Delete this frame
4705 \end_layout
4707 \begin_layout Itemize
4708 Delete subframe: Delete this subframe
4709 \end_layout
4711 \begin_layout Itemize
4712 Truncate movie: Delete this subframe and everything after it.
4713 \end_layout
4715 \begin_layout Itemize
4716 Scroll to frame: Prompt for a frame and scroll the display to that frame.
4717 \end_layout
4719 \begin_layout Itemize
4720 Scroll to current frame: Scroll the display to current position
4721 \end_layout
4723 \begin_layout Itemize
4724 Run to frame: Prompts for frame and runs the emulation to that frame.
4725 \end_layout
4727 \begin_layout Itemize
4728 Change number of lines visible: Change the height of the movie display (1
4729  to 255).
4730 \end_layout
4732 \begin_layout Itemize
4733 Lock scroll to playback: While playing back or rewinding movies, the display
4734  will follow if enabled.
4735 \end_layout
4737 \begin_layout Section
4738 Memory watch expression syntax
4739 \end_layout
4741 \begin_layout Standard
4742 Memory watch expressions are in RPN (Reverse Polish Notation).
4743  At the end of expression, the top entry on stack is taken as the final
4744  result.
4745 \end_layout
4747 \begin_layout Standard
4748 Notations:
4749 \end_layout
4751 \begin_layout Itemize
4752 Evaluation order is strictly left to right.
4753 \end_layout
4755 \begin_layout Itemize
4756 a is the entry on top of stack
4757 \end_layout
4759 \begin_layout Itemize
4760 b is the entry immediately below top of stack
4761 \end_layout
4763 \begin_layout Itemize
4764 ; separates values to be pushed (no intermediate pop).
4765 \end_layout
4767 \begin_layout Itemize
4768 After end of element, all used stack slots are popped and all results are
4769  pushed.
4770 \end_layout
4772 \begin_layout Itemize
4773 When pushing multiple values, the pushes occur in order shown.
4774 \end_layout
4776 \begin_layout Standard
4777 The following operators are available:
4778 \end_layout
4780 \begin_layout Itemize
4781 + : a + b
4782 \end_layout
4784 \begin_layout Itemize
4785 - : a - b
4786 \end_layout
4788 \begin_layout Itemize
4789 * : a * b
4790 \end_layout
4792 \begin_layout Itemize
4793 / : a / b
4794 \end_layout
4796 \begin_layout Itemize
4797 % : a % b
4798 \end_layout
4800 \begin_layout Itemize
4801 a : atan(a)
4802 \end_layout
4804 \begin_layout Itemize
4805 b : read_signed_byte(a)
4806 \end_layout
4808 \begin_layout Itemize
4809 c : cos(a)
4810 \end_layout
4812 \begin_layout Itemize
4813 d : read_signed_dword(a)
4814 \end_layout
4816 \begin_layout Itemize
4817 i : quotent(a / b)
4818 \end_layout
4820 \begin_layout Itemize
4821 p :
4822 \begin_inset Formula $\pi$
4823 \end_inset
4826 \end_layout
4828 \begin_layout Itemize
4829 q : read_signed_qword(a)
4830 \end_layout
4832 \begin_layout Itemize
4833 r : sqrt(a)
4834 \end_layout
4836 \begin_layout Itemize
4837 s : sin(a)
4838 \end_layout
4840 \begin_layout Itemize
4841 t : tan(a)
4842 \end_layout
4844 \begin_layout Itemize
4845 u : a; a
4846 \end_layout
4848 \begin_layout Itemize
4849 w : read_signed_word(a)
4850 \end_layout
4852 \begin_layout Itemize
4853 A : atan2(a, b)
4854 \end_layout
4856 \begin_layout Itemize
4857 B : read_unsigned_byte(a)
4858 \end_layout
4860 \begin_layout Itemize
4861 C<number>z : Push number <number> to stack.
4862 \end_layout
4864 \begin_layout Itemize
4865 D : read_unsigned_dword(a)
4866 \end_layout
4868 \begin_layout Itemize
4869 C0x<number>z : Push number <number> (hexadecimal) to stack.
4870 \end_layout
4872 \begin_layout Itemize
4873 H<digit> : Set hexadecimal mode with specified number of digits (use A-G
4874  for 10-16 digits).
4875 \end_layout
4877 \begin_layout Itemize
4878 Q : read_unsigned_qword(a)
4879 \end_layout
4881 \begin_layout Itemize
4882 R<digit> : round a to <digit> digits.
4883 \end_layout
4885 \begin_layout Itemize
4886 W : read_unsigned_word(a)
4887 \end_layout
4889 \begin_layout Subsection
4890 Example:
4891 \end_layout
4893 \begin_layout Standard
4894 C0x007e0878zWC0x007e002czW-
4895 \end_layout
4897 \begin_layout Enumerate
4898 Push value 0x7e0878 on top of stack (C0x007e0878z).
4899 \end_layout
4901 \begin_layout Enumerate
4902 Pop the value on top of stack (0x7e0878), read word value at that address
4903  and push the result,call it x1 (W).
4904 \end_layout
4906 \begin_layout Enumerate
4907 Push value 0x7e002c on top of stack (C0x007e002cz).
4908 \end_layout
4910 \begin_layout Enumerate
4911 Pop the value on top of stack (0x7e002c), read word value at that address
4912  and push the result,call it x2 (W).
4913 \end_layout
4915 \begin_layout Enumerate
4916 Pop the two top numbers on stack, x1 and x2, substract x1 from x2 and push
4917  x2 - x1 (-).
4918 \end_layout
4920 \begin_layout Enumerate
4921 Since the expression ends, the final memory watch result is the top one
4922  on stack, which is x2 - x1.
4923 \end_layout
4925 \begin_layout Section
4926 Modifier and key names:
4927 \end_layout
4929 \begin_layout Subsection
4930 SDL Platform
4931 \end_layout
4933 \begin_layout Subsubsection
4934 Modifier names
4935 \end_layout
4937 \begin_layout Standard
4938 Following modifier names are known:
4939 \end_layout
4941 \begin_layout Itemize
4942 ctrl, lctrl, rctrl: Control keys
4943 \end_layout
4945 \begin_layout Itemize
4946 alt, lalt, ralt: ALT keys.
4947 \end_layout
4949 \begin_layout Itemize
4950 shift, lshift, rshift: Shift keys.
4951 \end_layout
4953 \begin_layout Itemize
4954 meta, lmeta, rmeta: Meta keys.
4955 \end_layout
4957 \begin_layout Itemize
4958 num, caps: Numlock/Capslock (these are sticky!)
4959 \end_layout
4961 \begin_layout Itemize
4962 mode: Mode select.
4963 \end_layout
4965 \begin_layout Subsubsection
4966 Key names
4967 \end_layout
4969 \begin_layout Standard
4970 Following key names are known:
4971 \end_layout
4973 \begin_layout Itemize
4974 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
4975  hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
4976  comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
4977  less, equals, greater, question, at, leftbracket, backslash, rightbracket,
4978  caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
4979  o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
4980  world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
4981  world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
4982  world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
4983  world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
4984  world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
4985  world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
4986  world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
4987  world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
4988  world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
4989  world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
4990  world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
4991  world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
4992  kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
4993  kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
4994  pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
4995  f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
4996  lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
4997  break, menu, power, euro, undo
4998 \end_layout
5000 \begin_layout Itemize
5001 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
5002  hardware-dependent scan code of <n> (useful to bind those keys that don't
5003  have symbolic names).
5004 \end_layout
5006 \begin_layout Subsubsection
5007 Joystick pseudo-keys:
5008 \end_layout
5010 \begin_layout Itemize
5011 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
5012 \end_layout
5014 \begin_layout Itemize
5015 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
5016 \end_layout
5018 \begin_layout Itemize
5019 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
5020 \end_layout
5022 \begin_layout Itemize
5023 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
5024 \end_layout
5026 \begin_layout Itemize
5027 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
5028 \end_layout
5030 \begin_layout Itemize
5031 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
5032  position (axis modes axis and axis_inverse).
5033 \end_layout
5035 \begin_layout Itemize
5036 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
5037  position (axis modes axis and axis_inverse).
5038 \end_layout
5040 \begin_layout Itemize
5041 joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis> pressure (axis
5042  modes pressure_*).
5043 \end_layout
5045 \begin_layout Subsubsection
5046 Special buttons:
5047 \end_layout
5049 \begin_layout Itemize
5050 Escape: Enter/Exit Command mode, cancel modal dialogs.
5051 \end_layout
5053 \begin_layout Itemize
5054 Return (also KPEnter): Execute command, ok modal dialog.
5055 \end_layout
5057 \begin_layout Itemize
5058 Pgup/Up (also KP8/9 if no num lock, CTRL+P; command mode): Previous command
5059  in command history
5060 \end_layout
5062 \begin_layout Itemize
5063 Pgdn/Down(also KP2/3 if no num lock, CTRL+N; command mode): Next command
5064  in command history
5065 \end_layout
5067 \begin_layout Itemize
5068 Home (also KP7 if no num lock, CTRL+A; command mode): Beginning of command.
5069 \end_layout
5071 \begin_layout Itemize
5072 End (also KP1 if no num lock, CTRL+E; command mode): End of command.
5073 \end_layout
5075 \begin_layout Itemize
5076 Left (also KP4 if no num lock, CTRL+B; command mode): Move cursor left.
5077 \end_layout
5079 \begin_layout Itemize
5080 Right (also KP6 if no num lock, CTRL+F; command mode): Move cursor right.
5081 \end_layout
5083 \begin_layout Itemize
5084 Delete (also KP.
5085  if no num lock; command mode): Delete character to right of cursor.
5086 \end_layout
5088 \begin_layout Itemize
5089 Insert (also KP0 if no num lock; command mode): Toggle between insert /
5090  overwrite modes.
5091 \end_layout
5093 \begin_layout Itemize
5094 Backspace (command mode): Delete character to left of cursor.
5095 \end_layout
5097 \begin_layout Itemize
5098 CTRL+LEFT (also ALT+B; command mode): Previous word.
5099 \end_layout
5101 \begin_layout Itemize
5102 CTRL+RIGHT (also ALT+F; command mode): Next word.
5103 \end_layout
5105 \begin_layout Itemize
5106 ALT+D (also CTRL+W; command mode): Delete word.
5107 \end_layout
5109 \begin_layout Itemize
5110 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
5111 \end_layout
5113 \begin_layout Subsection
5114 wxWidgets platform
5115 \end_layout
5117 \begin_layout Subsubsection
5118 Modifier names:
5119 \end_layout
5121 \begin_layout Standard
5122 Following modifier names are known:
5123 \end_layout
5125 \begin_layout Itemize
5127 \end_layout
5129 \begin_layout Itemize
5130 ctrl
5131 \end_layout
5133 \begin_layout Itemize
5134 shift 
5135 \end_layout
5137 \begin_layout Itemize
5138 meta
5139 \end_layout
5141 \begin_layout Itemize
5142 cmd (Mac OS X only)
5143 \end_layout
5145 \begin_layout Subsubsection
5146 Key names:
5147 \end_layout
5149 \begin_layout Standard
5150 Following key names are known:
5151 \end_layout
5153 \begin_layout Itemize
5154 back, tab, return, escape, space, exclaim, quotedbl, hash, dollar, percent,
5155  ampersand, quote, leftparen, rightparen, asterisk, plus, comma, minus,
5156  period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon, less, equals,
5157  greater, question, at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
5158  q, r, s, t, u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
5159  underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
5160  q, r, s, t, u, v, w, x, y, z, leftcurly, pipe, rightcurly, tilde, delete,
5161  start, lbutton, rbutton, cancel, mbutton, clear, shift, alt, control, menu,
5162  pause, capital, end, home, lefT, up, right, down, select, print, execute,
5163  snapshot, insert, help, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5,
5164  numpad6, numpad7, numpad8, numpad9, multiply, add, separator, subtract,
5165  decimal, divide, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13,
5166  f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, numlock, scroll,
5167  pageup, pagedown, numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
5168  numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up, numpad_right,
5169  numpad_down, numpad_pageup, numpad_pagedown, numpad_end, numpad_begin,
5170  numpad_insert, numpad_delete, numpad_equal, numpad_multiply, numpad_add,
5171  numpad_separator, numpad_subtract, numpad_decimal, numpad_divide, windows_left,
5172  windows_right, windows_menu, command, special1, special2, special3, special4,
5173  special5, special6, special7, special8, special9, special10, special11,
5174  special12, special13, special14, special15, special16, special17, special18,
5175  special19, special20
5176 \end_layout
5178 \begin_layout Section
5179 Movie file format
5180 \end_layout
5182 \begin_layout Standard
5183 Movie file is .zip archive in itself, normal ZIP archive tools work on it
5184  (note: If you recompress it, do not use compression methods other than
5185  store and deflate and especially do not use encryption of any kind).
5186 \end_layout
5188 \begin_layout Subsection
5189 Detecting clean start/SRAM/Savestate
5190 \end_layout
5192 \begin_layout Itemize
5193 If file has member 
5194 \begin_inset Quotes eld
5195 \end_inset
5197 savestate
5198 \begin_inset Quotes erd
5199 \end_inset
5201  it is savestate, otherwise:
5202 \end_layout
5204 \begin_layout Itemize
5205 If file has members with names starting 
5206 \begin_inset Quotes eld
5207 \end_inset
5209 moviesram.
5210 \begin_inset Quotes erd
5211 \end_inset
5213  it is movie starting from SRAM, otherwise:
5214 \end_layout
5216 \begin_layout Itemize
5217 It is movie starting from clear state.
5218 \end_layout
5220 \begin_layout Subsection
5221 Member: gametype
5222 \end_layout
5224 \begin_layout Standard
5225 Type of game ROM and region (as one line).
5226  Valid values are:
5227 \end_layout
5229 \begin_layout Standard
5230 \begin_inset Tabular
5231 <lyxtabular version="3" rows="8" columns="3">
5232 <features tabularvalignment="middle">
5233 <column alignment="center" valignment="top" width="0">
5234 <column alignment="center" valignment="top" width="0">
5235 <column alignment="center" valignment="top" width="0">
5236 <row>
5237 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5238 \begin_inset Text
5240 \begin_layout Plain Layout
5241 Value
5242 \end_layout
5244 \end_inset
5245 </cell>
5246 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5247 \begin_inset Text
5249 \begin_layout Plain Layout
5250 System
5251 \end_layout
5253 \end_inset
5254 </cell>
5255 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5256 \begin_inset Text
5258 \begin_layout Plain Layout
5259 Region
5260 \end_layout
5262 \end_inset
5263 </cell>
5264 </row>
5265 <row>
5266 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5267 \begin_inset Text
5269 \begin_layout Plain Layout
5270 snes_pal
5271 \end_layout
5273 \end_inset
5274 </cell>
5275 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5276 \begin_inset Text
5278 \begin_layout Plain Layout
5279 Super NES
5280 \end_layout
5282 \end_inset
5283 </cell>
5284 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5285 \begin_inset Text
5287 \begin_layout Plain Layout
5289 \end_layout
5291 \end_inset
5292 </cell>
5293 </row>
5294 <row>
5295 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5296 \begin_inset Text
5298 \begin_layout Plain Layout
5299 sgb_pal
5300 \end_layout
5302 \end_inset
5303 </cell>
5304 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5305 \begin_inset Text
5307 \begin_layout Plain Layout
5308 Super Game Boy
5309 \end_layout
5311 \end_inset
5312 </cell>
5313 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5314 \begin_inset Text
5316 \begin_layout Plain Layout
5318 \end_layout
5320 \end_inset
5321 </cell>
5322 </row>
5323 <row>
5324 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5325 \begin_inset Text
5327 \begin_layout Plain Layout
5328 snes_ntsc
5329 \end_layout
5331 \end_inset
5332 </cell>
5333 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5334 \begin_inset Text
5336 \begin_layout Plain Layout
5337 Super NES
5338 \end_layout
5340 \end_inset
5341 </cell>
5342 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5343 \begin_inset Text
5345 \begin_layout Plain Layout
5346 NTSC
5347 \end_layout
5349 \end_inset
5350 </cell>
5351 </row>
5352 <row>
5353 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5354 \begin_inset Text
5356 \begin_layout Plain Layout
5357 sgb_ntsc
5358 \end_layout
5360 \end_inset
5361 </cell>
5362 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5363 \begin_inset Text
5365 \begin_layout Plain Layout
5366 Super Game Boy
5367 \end_layout
5369 \end_inset
5370 </cell>
5371 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5372 \begin_inset Text
5374 \begin_layout Plain Layout
5375 NTSC
5376 \end_layout
5378 \end_inset
5379 </cell>
5380 </row>
5381 <row>
5382 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5383 \begin_inset Text
5385 \begin_layout Plain Layout
5387 \end_layout
5389 \end_inset
5390 </cell>
5391 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5392 \begin_inset Text
5394 \begin_layout Plain Layout
5395 BS-X (non-slotted)
5396 \end_layout
5398 \end_inset
5399 </cell>
5400 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5401 \begin_inset Text
5403 \begin_layout Plain Layout
5404 NTSC
5405 \end_layout
5407 \end_inset
5408 </cell>
5409 </row>
5410 <row>
5411 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5412 \begin_inset Text
5414 \begin_layout Plain Layout
5415 bsxslotted
5416 \end_layout
5418 \end_inset
5419 </cell>
5420 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5421 \begin_inset Text
5423 \begin_layout Plain Layout
5424 BS-X (slotted)
5425 \end_layout
5427 \end_inset
5428 </cell>
5429 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5430 \begin_inset Text
5432 \begin_layout Plain Layout
5433 NTSC
5434 \end_layout
5436 \end_inset
5437 </cell>
5438 </row>
5439 <row>
5440 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5441 \begin_inset Text
5443 \begin_layout Plain Layout
5444 sufamiturbo
5445 \end_layout
5447 \end_inset
5448 </cell>
5449 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5450 \begin_inset Text
5452 \begin_layout Plain Layout
5453 Sufami Turbo
5454 \end_layout
5456 \end_inset
5457 </cell>
5458 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5459 \begin_inset Text
5461 \begin_layout Plain Layout
5462 NTSC
5463 \end_layout
5465 \end_inset
5466 </cell>
5467 </row>
5468 </lyxtabular>
5470 \end_inset
5473 \end_layout
5475 \begin_layout Standard
5476 Frame rates are:
5477 \end_layout
5479 \begin_layout Standard
5480 \begin_inset Tabular
5481 <lyxtabular version="3" rows="3" columns="2">
5482 <features tabularvalignment="middle">
5483 <column alignment="center" valignment="top" width="0">
5484 <column alignment="center" valignment="top" width="0">
5485 <row>
5486 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5487 \begin_inset Text
5489 \begin_layout Plain Layout
5490 Region
5491 \end_layout
5493 \end_inset
5494 </cell>
5495 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5496 \begin_inset Text
5498 \begin_layout Plain Layout
5499 Framerate (fps)
5500 \end_layout
5502 \end_inset
5503 </cell>
5504 </row>
5505 <row>
5506 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5507 \begin_inset Text
5509 \begin_layout Plain Layout
5511 \end_layout
5513 \end_inset
5514 </cell>
5515 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5516 \begin_inset Text
5518 \begin_layout Plain Layout
5519 322445/6448
5520 \end_layout
5522 \end_inset
5523 </cell>
5524 </row>
5525 <row>
5526 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5527 \begin_inset Text
5529 \begin_layout Plain Layout
5530 NTSC
5531 \end_layout
5533 \end_inset
5534 </cell>
5535 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5536 \begin_inset Text
5538 \begin_layout Plain Layout
5539 10738636/178683
5540 \end_layout
5542 \end_inset
5543 </cell>
5544 </row>
5545 </lyxtabular>
5547 \end_inset
5550 \end_layout
5552 \begin_layout Subsection
5553 Member: port1
5554 \end_layout
5556 \begin_layout Standard
5557 Contains type of port #1 (as one line).
5558  Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
5559  If not present, defaults to 'gamepad'.
5560 \end_layout
5562 \begin_layout Subsection
5563 Member: port2
5564 \end_layout
5566 \begin_layout Standard
5567 Contains type of port #2 (as one line).
5568  Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
5569  'justifier' and 'justifiers'.
5570  If not present, defaults to 'none'.
5571 \end_layout
5573 \begin_layout Subsection
5574 Member: gamename
5575 \end_layout
5577 \begin_layout Standard
5578 Contains name of the game (as one line).
5579 \end_layout
5581 \begin_layout Subsection
5582 Member: authors
5583 \end_layout
5585 \begin_layout Standard
5586 Contains authors, one per line.
5587  Part before '|' is the full name, part after is the nickname.
5588 \end_layout
5590 \begin_layout Subsection
5591 Member: systemid
5592 \end_layout
5594 \begin_layout Standard
5595 Always 
5596 \begin_inset Quotes eld
5597 \end_inset
5599 lsnes-rr1
5600 \begin_inset Quotes erd
5601 \end_inset
5603  (one line).
5604  Used to reject other saves.
5605 \end_layout
5607 \begin_layout Subsection
5608 Member: controlsversion
5609 \end_layout
5611 \begin_layout Standard
5612 Always 
5613 \begin_inset Quotes eld
5614 \end_inset
5617 \begin_inset Quotes erd
5618 \end_inset
5620  (one line).
5621  Used to identify what controls are there.
5622 \end_layout
5624 \begin_layout Subsection
5625 Member: 
5626 \begin_inset Quotes eld
5627 \end_inset
5629 coreversion
5630 \begin_inset Quotes erd
5631 \end_inset
5634 \end_layout
5636 \begin_layout Standard
5637 Contains bsnes core version number (as one line).
5638 \end_layout
5640 \begin_layout Subsection
5641 Member: projectid
5642 \end_layout
5644 \begin_layout Standard
5645 Contains project ID (as one line).
5646  Used to identify if two movies are part of the same project.
5647 \end_layout
5649 \begin_layout Subsection
5650 Member: {rom,slota,slotb}{,xml}.sha256
5651 \end_layout
5653 \begin_layout Standard
5654 Contains SHA-256 of said ROM or ROM mapping file (as one line).
5655  Absent if corresponding file is absent.
5656 \end_layout
5658 \begin_layout Subsection
5659 Member: moviesram.<name>
5660 \end_layout
5662 \begin_layout Standard
5663 Raw binary startup SRAM of kind <name>.
5664  Only present in savestates and movies starting from SRAM.
5665 \end_layout
5667 \begin_layout Subsection
5668 Member: saveframe
5669 \end_layout
5671 \begin_layout Standard
5672 Contains frame number (as one line) of frame movie was saved on.
5673  Only present in savestates.
5674 \end_layout
5676 \begin_layout Subsection
5677 Member: lagcounter
5678 \end_layout
5680 \begin_layout Standard
5681 Current value of lag counter (as one line).
5682  Only present in savestates.
5683 \end_layout
5685 \begin_layout Subsection
5686 Member: pollcounters
5687 \end_layout
5689 \begin_layout Standard
5690 Contains poll counters (currently 100 of them), one per line.
5691  Each line is raw poll count if DRDY is set for it.
5692  Otherwise it is negative poll count minus one.
5693  Only present in savestates.
5694 \end_layout
5696 \begin_layout Subsection
5697 Member: hostmemory
5698 \end_layout
5700 \begin_layout Standard
5701 Raw binary dump of host memory.
5702  Only present in savestates.
5703 \end_layout
5705 \begin_layout Subsection
5706 Member: savestate
5707 \end_layout
5709 \begin_layout Standard
5710 The raw binary savestate itself.
5711  Savestate detection uses this file, only present in savestates.
5712 \end_layout
5714 \begin_layout Subsection
5715 Member: screenshot
5716 \end_layout
5718 \begin_layout Standard
5719 Screenshot of current frame.
5720  Only present in savestates.
5721  First 2 bytes are big-endian width of image, rest are 24-bit RGB image
5722  data.
5723  Height of image is inferred from the width and size of data.
5724 \end_layout
5726 \begin_layout Subsection
5727 Member: sram.<name>
5728 \end_layout
5730 \begin_layout Standard
5731 Raw binary SRAM of kind <name> at time of savestate.
5732  Only present in savestates.
5733 \end_layout
5735 \begin_layout Subsection
5736 Member: input
5737 \end_layout
5739 \begin_layout Standard
5740 The actual input track, one line per subframe (blank lines are skipped).
5741 \end_layout
5743 \begin_layout Itemize
5744 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
5745  part of same frame as previous, otherwise it starts a new frame.
5746 \end_layout
5748 \begin_layout Itemize
5749 First subframe must start a new frame.
5750 \end_layout
5752 \begin_layout Standard
5753 Length of movie in frames is number of lines in input file that start a
5754  new frame.
5755 \end_layout
5757 \begin_layout Subsection
5758 Member: subtitles
5759 \end_layout
5761 \begin_layout Standard
5762 Subtitle track.
5763  Optional.
5764 \end_layout
5766 \begin_layout Itemize
5767 Each line is in form <firstframe> <numframes> <text>.
5768 \end_layout
5770 \begin_layout Itemize
5771 Linefeed is encoded as 
5772 \backslash
5773 n, backslash is encoded as 
5774 \backslash
5776 \backslash
5778 \end_layout
5780 \begin_layout Subsection
5781 Member: rerecords
5782 \end_layout
5784 \begin_layout Standard
5785 Contains textual base-10 rerecord count (as one line; emulator just writes
5786  this, it doesn't read it) + 1.
5787 \end_layout
5789 \begin_layout Subsection
5790 Member: rrdata
5791 \end_layout
5793 \begin_layout Standard
5794 This member stores set of load IDs.
5795  There is one load ID per rerecord (plus one corresponding to start of project).
5796 \end_layout
5798 \begin_layout Itemize
5799 This member constists of concatenation of records
5800 \end_layout
5802 \begin_layout Itemize
5803 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
5804  IDs.
5805 \end_layout
5807 \begin_layout Itemize
5808 IDs are interpretted as 256-bit big-endian integers with warparound.
5809 \end_layout
5811 \begin_layout Itemize
5812 Initial predicted ID is all zeroes.
5813 \end_layout
5815 \begin_layout Standard
5816 Format of each record is:
5817 \end_layout
5819 \begin_layout Itemize
5820 1 byte: Opcode byte.
5821  Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
5822  Bit 7 is unused.
5823 \end_layout
5825 \begin_layout Itemize
5826 32-prefixlen bytes of ID.
5827 \end_layout
5829 \begin_layout Itemize
5830 countlen bytes of big-endian count (count).
5831 \end_layout
5833 \begin_layout Standard
5834 Records are processed as follows:
5835 \end_layout
5837 \begin_layout Itemize
5838 To form the first ID encoded by record, take the first prefixlen bytes predicted
5839  ID and append the read ID value to it.
5840  The result is the first ID encoded.
5841 \end_layout
5843 \begin_layout Itemize
5844 If countlen is 0, record encodes 1 ID.
5845 \end_layout
5847 \begin_layout Itemize
5848 If countlen is 1, record encodes 2+count IDs.
5849 \end_layout
5851 \begin_layout Itemize
5852 If countlen is 2, record encodes 258+count IDs.
5853 \end_layout
5855 \begin_layout Itemize
5856 If countlen is 3, record encodes 65794+count IDs.
5857 \end_layout
5859 \begin_layout Itemize
5860 The new predicted ID is the next ID after last one encoded by the record.
5861 \end_layout
5863 \begin_layout Standard
5864 The number of rerecords + 1 is equal to the sum of number of IDs encoded
5865  by all records.
5866 \end_layout
5868 \begin_layout Subsection
5869 Member: starttime.second
5870 \end_layout
5872 \begin_layout Standard
5873 Movie starting time, second part.
5874  Epoch is Unix epoch.
5875  Default is 1,000,000,000.
5876 \end_layout
5878 \begin_layout Subsection
5879 Member: starttime.subsecond
5880 \end_layout
5882 \begin_layout Standard
5883 Movie starting time, subsecond part.
5884  Unit is CPU clocks.
5885  Default is 0.
5886 \end_layout
5888 \begin_layout Subsection
5889 Member: savetime.second
5890 \end_layout
5892 \begin_layout Standard
5893 Movie saving time, second part.
5894  Default is starttime.second.
5895  Only present in savestates.
5896 \end_layout
5898 \begin_layout Subsection
5899 Member: savetime.subsecond
5900 \end_layout
5902 \begin_layout Standard
5903 Movie saving time, subsecond part.
5904  Default is starttime.subsecond.
5905  Only present in savestates.
5906 \end_layout
5908 \begin_layout Section
5909 lsvs file format (commentary tracks)
5910 \end_layout
5912 \begin_layout Subsection
5913 Clusters
5914 \end_layout
5916 \begin_layout Itemize
5917 Each cluster is 8kB (8192 bytes) in size.
5918 \end_layout
5920 \begin_layout Itemize
5921 Cluster n starts at offset 8192*n in file.
5922 \end_layout
5924 \begin_layout Itemize
5925 The following clusters are system special:
5926 \end_layout
5928 \begin_deeper
5929 \begin_layout Itemize
5930 Cluster 0 and all clusters with number multiple of 2048 (cluster tables)
5931 \end_layout
5933 \begin_layout Itemize
5934 Cluster 1 (superblock)
5935 \end_layout
5937 \end_deeper
5938 \begin_layout Subsection
5939 Cluster tables
5940 \end_layout
5942 \begin_layout Itemize
5943 The cluster table describing cluster n is stored in cluster n & ~0x7FF (zero
5944  last 11 bits of n).
5945 \end_layout
5947 \begin_layout Itemize
5948 This cluster table consists of 2048 4-byte big-endian integers.
5949 \end_layout
5951 \begin_layout Itemize
5952 Each entry describes a cluster in 16MB supercluster, in order.
5953 \end_layout
5955 \begin_layout Itemize
5956 The valid values for entries are:
5957 \end_layout
5959 \begin_deeper
5960 \begin_layout Itemize
5961 0x00000000: Free cluster
5962 \end_layout
5964 \begin_layout Itemize
5965 0x00000001: Last cluster in chain.
5966 \end_layout
5968 \begin_layout Itemize
5969 0xFFFFFFFF: System cluster (cluster tables and superblock)
5970 \end_layout
5972 \begin_layout Itemize
5973 (anything else): Number of next cluster in chain.
5974  Must not be multiple of 2048.
5975 \end_layout
5977 \end_deeper
5978 \begin_layout Itemize
5979 Due to limitations of the format, there can be at most 2097052 superclusters,
5980  giving maximum file size of 16TB.
5981 \end_layout
5983 \begin_layout Subsection
5984 Stream table
5985 \end_layout
5987 \begin_layout Itemize
5988 The stream table chain always starts in cluster 2.
5989 \end_layout
5991 \begin_layout Itemize
5992 Otherwise, it follows normal chaining.
5993 \end_layout
5995 \begin_layout Itemize
5996 The stream table consists of 16-byte entries:
5997 \end_layout
5999 \begin_deeper
6000 \begin_layout Itemize
6001 The first 8 bytes of entry give big-endian beginning position of stream
6002  in units of 1/48000 s.
6003 \end_layout
6005 \begin_layout Itemize
6006 The next 4 bytes of entry give big-endian beginning cluster for control
6007  data.
6008  0 here marks the entry as not present.
6009 \end_layout
6011 \begin_layout Itemize
6012 The last 4 bytes of entry give big-endian beginning cluster for codec data.
6013 \end_layout
6015 \end_deeper
6016 \begin_layout Itemize
6017 Stream table clusters are normal clusters, following normal chaining.
6018 \end_layout
6020 \begin_layout Itemize
6021 The stream begnning position is not guarenteed unique.
6022  There can be multiple streams with the same starting position in the file.
6023 \end_layout
6025 \begin_layout Subsection
6026 Stream control data
6027 \end_layout
6029 \begin_layout Itemize
6030 The stream control data consists of entries 4 bytes each:
6031 \end_layout
6033 \begin_deeper
6034 \begin_layout Itemize
6035 The first 2 bytes of entry gives big-endian length of packet
6036 \end_layout
6038 \begin_layout Itemize
6039 The next byte of entry gives audio length of packet in units of 1/400 s.
6040 \end_layout
6042 \begin_layout Itemize
6043 The last byte is control byte.
6044 \end_layout
6046 \begin_deeper
6047 \begin_layout Itemize
6048 0 means this entry is not present and the control data ends.
6049 \end_layout
6051 \begin_layout Itemize
6052 1 is valid control entry.
6053 \end_layout
6055 \end_deeper
6056 \end_deeper
6057 \begin_layout Itemize
6058 The stream control data can also end by running into end of the readable
6059  chain.
6060 \end_layout
6062 \begin_deeper
6063 \begin_layout Itemize
6064 This happens if there happens to be exact multiple of 2048 packets in stream
6065  and number of packets is nonzero.
6066 \end_layout
6068 \end_deeper
6069 \begin_layout Itemize
6070 These clusters follow normal chaining.
6071 \end_layout
6073 \begin_layout Subsection
6074 Stream codec data
6075 \end_layout
6077 \begin_layout Itemize
6078 Stream codec data consists of raw Opus data packets packed back to back
6079  with nothing in between.
6080 \end_layout
6082 \begin_layout Itemize
6083 Warning: Due to internal limitations, this data must reside in the first
6084  65536 superclusters (that is, the first 1TB of the file).
6085 \end_layout
6087 \begin_layout Subsection
6088 Superblock
6089 \end_layout
6091 \begin_layout Itemize
6092 The superblock is stored in cluster 1.
6094 \end_layout
6096 \begin_layout Itemize
6097 The first 11 bytes are 
6098 \begin_inset Quotes eld
6099 \end_inset
6101 sefs-magic
6102 \begin_inset Quotes erd
6103 \end_inset
6105 <NUL>.
6106 \end_layout
6108 \begin_layout Itemize
6109 The rest are unused.
6110 \end_layout
6112 \begin_layout Itemize
6113 This cluster 1 is marked as system special.
6114 \end_layout
6116 \begin_layout Section
6117 Known ROM extensions
6118 \end_layout
6120 \begin_layout Itemize
6121 SNES cartridge ROMs: sfc, smc, swc, fig, ufo, sf2, gd3, gd7, dx2, mgd, mgh.
6122 \end_layout
6124 \begin_layout Itemize
6125 DMG cartridge ROMs: dmg, gb.
6126 \end_layout
6128 \begin_layout Itemize
6129 GBC cartridge ROMs: cgb, gbc.
6130 \end_layout
6132 \begin_layout Section
6133 Gamepack files
6134 \end_layout
6136 \begin_layout Itemize
6137 The first line must be: 
6138 \begin_inset Quotes eld
6139 \end_inset
6141 [GAMEPACK FILE]
6142 \begin_inset Quotes erd
6143 \end_inset
6146 \end_layout
6148 \begin_layout Itemize
6149 There is one needed line: 
6150 \begin_inset Quotes eld
6151 \end_inset
6153 type <systype>
6154 \begin_inset Quotes erd
6155 \end_inset
6158  This sets system type to <systype>.
6159  The following system types are valid:
6160 \end_layout
6162 \begin_deeper
6163 \begin_layout Itemize
6164 snes (SNES)
6165 \end_layout
6167 \begin_layout Itemize
6168 bsx (BS-X non-slotted)
6169 \end_layout
6171 \begin_layout Itemize
6172 bsxslotted (BS-X slotted)
6173 \end_layout
6175 \begin_layout Itemize
6176 sufamiturbo (Sufami Turbo)
6177 \end_layout
6179 \begin_layout Itemize
6180 sgb (Super Game Boy)
6181 \end_layout
6183 \begin_layout Itemize
6184 dmg (Game Boy)
6185 \end_layout
6187 \begin_layout Itemize
6188 gbc (Game Boy Color)
6189 \end_layout
6191 \begin_layout Itemize
6192 gbc_gba (Game Boy Color with GBA initial register values)
6193 \end_layout
6195 \end_deeper
6196 \begin_layout Itemize
6197 Optionally a region can be specified: 
6198 \begin_inset Quotes eld
6199 \end_inset
6201 region <region>
6202 \begin_inset Quotes erd
6203 \end_inset
6206  The following values are valid:
6207 \end_layout
6209 \begin_deeper
6210 \begin_layout Itemize
6211 autodetect (Autodetect region: snes and sgb only)
6212 \end_layout
6214 \begin_layout Itemize
6215 ntsc (NTSC: snes, bsx, bsxslotted, sufamiturbo, sgb)
6216 \end_layout
6218 \begin_layout Itemize
6219 pal (PAL: snes, sgb)
6220 \end_layout
6222 \begin_layout Itemize
6223 world (World: dmg, gbc, gbc_gba)
6224 \end_layout
6226 \end_deeper
6227 \begin_layout Itemize
6228 ROM images are loaded as: 
6229 \begin_inset Quotes eld
6230 \end_inset
6232 rom <type> <file>
6233 \begin_inset Quotes erd
6234 \end_inset
6237  The following types are valid:
6238 \end_layout
6240 \begin_deeper
6241 \begin_layout Itemize
6242 rom (Cartridge ROM in snes, dmg, gbc, gbc_gba.
6243  BIOS in bsx, bsxslotted, sufamiturbo)
6244 \end_layout
6246 \begin_layout Itemize
6247 bsx (Cartridge ROM in bsx, bsxslotted)
6248 \end_layout
6250 \begin_layout Itemize
6251 slot-a (Cartridge ROM in sufamiturbo)
6252 \end_layout
6254 \begin_layout Itemize
6255 slot-b (Cartridge ROM in sufamiturbo)
6256 \end_layout
6258 \end_deeper
6259 \begin_layout Itemize
6260 ROM markup can be loaded as: 
6261 \begin_inset Quotes eld
6262 \end_inset
6264 xml <type> <file>
6265 \begin_inset Quotes erd
6266 \end_inset
6269  The types valid are the same as for ROMs.
6270 \end_layout
6272 \begin_layout Itemize
6273 Patches can be loaded as 
6274 \begin_inset Quotes eld
6275 \end_inset
6277 patch[<offset>] <type> <file>
6278 \begin_inset Quotes erd
6279 \end_inset
6282  The types are the same as for ROMs.
6283 \end_layout
6285 \begin_deeper
6286 \begin_layout Itemize
6287 Offset is given in form [+-]<number>.
6288  Usually offset is either +0 or -512.
6289 \end_layout
6291 \begin_layout Itemize
6292 Default offset is +0.
6293 \end_layout
6295 \end_deeper
6296 \begin_layout Subsection
6297 Example:
6298 \end_layout
6300 \begin_layout LyX-Code
6301 [GAMEPACK FILE]
6302 \end_layout
6304 \begin_layout LyX-Code
6305 type snes
6306 \end_layout
6308 \begin_layout LyX-Code
6309 rom rom speedygonzales.sfc
6310 \end_layout
6312 \begin_layout LyX-Code
6313 patch-512 rom sonicthehedgehog.ips
6314 \end_layout
6316 \begin_layout Subsection
6317 Example 2:
6318 \end_layout
6320 \begin_layout LyX-Code
6321 [GAMEPACK FILE]
6322 \end_layout
6324 \begin_layout LyX-Code
6325 type sgb
6326 \end_layout
6328 \begin_layout LyX-Code
6329 rom rom supergameboy.sfc
6330 \end_layout
6332 \begin_layout LyX-Code
6333 rom dmg megamanV.dmg
6334 \end_layout
6336 \begin_layout Section
6337 Quick'n'dirty encode guide
6338 \end_layout
6340 \begin_layout Enumerate
6341 Start the emulator and load the ROM and movie file.
6342 \end_layout
6344 \begin_layout Enumerate
6345 Set large AVI option 'set-setting avi-large on'
6346 \end_layout
6348 \begin_layout Enumerate
6349 Enable dumping 'dump-avi tmpdump' 
6350 \end_layout
6352 \begin_layout Enumerate
6353 Unpause and let it run until you want to end dumping.
6354 \end_layout
6356 \begin_layout Enumerate
6357 Close the emulator (closing the window is the easiest way).
6358  Or use 'end-avi'.
6359 \end_layout
6361 \begin_layout Enumerate
6362 For each tmpdump*.avi file created, on command prompt, do 'x264 --crf 10
6363  -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
6364 \end_layout
6366 \begin_layout Enumerate
6367 Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
6368 \end_layout
6370 \begin_layout Enumerate
6371 Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv + tmpdump_0000001.mkv
6372  + tmpdump_0000002.mkv' (list every tmpdump_<numbers>.mkv, with + in between).
6373 \end_layout
6375 \begin_layout Enumerate
6376 Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'.
6377  Now final.mkv contains quick'n'dirty encode.
6378 \end_layout
6380 \begin_layout Section
6381 Axis configurations for some gamepad types:
6382 \end_layout
6384 \begin_layout Subsection
6385 XBox360 controller:
6386 \end_layout
6388 \begin_layout Standard
6389 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be set to pressure-+.
6390 \end_layout
6392 \begin_layout LyX-Code
6393 set-axis joystick0axis2 pressure-+
6394 \end_layout
6396 \begin_layout LyX-Code
6397 set-axis joystick0axis5 pressure-+
6398 \end_layout
6400 \begin_layout Itemize
6401 This is needed for SDL only.
6402  EVDEV sets those types correctly.
6403 \end_layout
6405 \begin_layout Subsection
6406 PS3 
6407 \begin_inset Quotes eld
6408 \end_inset
6410 sixaxis
6411 \begin_inset Quotes erd
6412 \end_inset
6414  controller:
6415 \end_layout
6417 \begin_layout Standard
6418 Axes 8-19 should be disabled.
6419 \end_layout
6421 \begin_layout LyX-Code
6422 set-axis joystick0axis8 disabled
6423 \end_layout
6425 \begin_layout LyX-Code
6426 set-axis joystick0axis9 disabled
6427 \end_layout
6429 \begin_layout LyX-Code
6430 set-axis joystick0axis10 disabled
6431 \end_layout
6433 \begin_layout LyX-Code
6434 set-axis joystick0axis11 disabled
6435 \end_layout
6437 \begin_layout LyX-Code
6438 set-axis joystick0axis12 disabled
6439 \end_layout
6441 \begin_layout LyX-Code
6442 set-axis joystick0axis13 disabled
6443 \end_layout
6445 \begin_layout LyX-Code
6446 set-axis joystick0axis14 disabled
6447 \end_layout
6449 \begin_layout LyX-Code
6450 set-axis joystick0axis15 disabled
6451 \end_layout
6453 \begin_layout LyX-Code
6454 set-axis joystick0axis16 disabled
6455 \end_layout
6457 \begin_layout LyX-Code
6458 set-axis joystick0axis17 disabled
6459 \end_layout
6461 \begin_layout LyX-Code
6462 set-axis joystick0axis18 disabled
6463 \end_layout
6465 \begin_layout LyX-Code
6466 set-axis joystick0axis19 disabled
6467 \end_layout
6469 \begin_layout Section
6470 Errata:
6471 \end_layout
6473 \begin_layout Subsection
6474 Problems from BSNES core:
6475 \end_layout
6477 \begin_layout Itemize
6478 The whole pending save stuff.
6479 \end_layout
6481 \begin_layout Itemize
6482 Lack of layer hiding.
6483 \end_layout
6485 \begin_layout Itemize
6486 It is slow (especially accuracy).
6487 \end_layout
6489 \begin_layout Itemize
6490 Firmwares can't be loaded from ZIP archives.
6491 \end_layout
6493 \begin_layout Subsection
6494 Other problems:
6495 \end_layout
6497 \begin_layout Itemize
6498 Modifiers don't work with pseudo-keys (SDL, EVDEV).
6499 \end_layout
6501 \begin_layout Itemize
6502 Audio for last dumped frame is not itself dumped.
6503 \end_layout
6505 \begin_layout Itemize
6506 Audio in UI is pretty bad in quality if game doesn't run at full speed.
6507 \end_layout
6509 \begin_layout Itemize
6510 No menus, command based interface (SDL).
6511 \end_layout
6513 \begin_layout Itemize
6514 Long commands don't scroll.
6515 \end_layout
6517 \begin_layout Section
6518 Changelog:
6519 \end_layout
6521 \begin_layout Subsection
6522 rr0-beta1
6523 \end_layout
6525 \begin_layout Itemize
6526 Fix -Wall warnings
6527 \end_layout
6529 \begin_layout Itemize
6530 Fix dumper video corruption with levels 10-18.
6531 \end_layout
6533 \begin_layout Subsection
6534 rr0-beta2
6535 \end_layout
6537 \begin_layout Itemize
6538 Autofire
6539 \end_layout
6541 \begin_layout Itemize
6542 Lots of code cleanups
6543 \end_layout
6545 \begin_layout Itemize
6546 Lua interface to settings
6547 \end_layout
6549 \begin_layout Itemize
6550 Allow specifying AVI borders without Lua
6551 \end_layout
6553 \begin_layout Itemize
6554 Fix scaling if vscale > 1 and originx > 0 (left border exists)
6555 \end_layout
6557 \begin_layout Itemize
6558 on_snoop lua callback
6559 \end_layout
6561 \begin_layout Itemize
6562 Faster movie loading and saving.
6563 \end_layout
6565 \begin_layout Subsection
6566 rr0-beta3
6567 \end_layout
6569 \begin_layout Itemize
6570 Joystick support
6571 \end_layout
6573 \begin_layout Subsection
6574 rr0-beta4
6575 \end_layout
6577 \begin_layout Itemize
6578 Fix multi-buttons
6579 \end_layout
6581 \begin_layout Itemize
6582 Save jukebox functionality.
6583 \end_layout
6585 \begin_layout Subsection
6586 rr0-beta5
6587 \end_layout
6589 \begin_layout Itemize
6590 Try to fix some nasty failing movie load edge cases
6591 \end_layout
6593 \begin_layout Itemize
6594 Allow specifying scripts to run on command line.
6595 \end_layout
6597 \begin_layout Subsection
6598 rr0-beta6
6599 \end_layout
6601 \begin_layout Itemize
6602 Major source code reorganization.
6603 \end_layout
6605 \begin_layout Itemize
6606 Backup savestates before overwriting.
6607 \end_layout
6609 \begin_layout Itemize
6610 Don't crash if loading initial state fails.
6611 \end_layout
6613 \begin_layout Subsection
6614 rr0-beta7
6615 \end_layout
6617 \begin_layout Itemize
6618 Fix firmware lookup
6619 \end_layout
6621 \begin_layout Itemize
6622 Fix author name parsing
6623 \end_layout
6625 \begin_layout Itemize
6626 Fix rerecord counting
6627 \end_layout
6629 \begin_layout Itemize
6630 (SDL) Print messages to console if SDL is uninitialized
6631 \end_layout
6633 \begin_layout Itemize
6634 Add movieinfo program
6635 \end_layout
6637 \begin_layout Itemize
6638 Fix loading movies starting from SRAM.
6639 \end_layout
6641 \begin_layout Subsection
6642 rr0-beta8
6643 \end_layout
6645 \begin_layout Itemize
6646 Add support for unattended dumping
6647 \end_layout
6649 \begin_layout Itemize
6650 Fix compiling for Win32
6651 \end_layout
6653 \begin_layout Itemize
6654 Don't lock up if sound can't be initialized
6655 \end_layout
6657 \begin_layout Itemize
6658 Strip trailing CR from commands
6659 \end_layout
6661 \begin_layout Itemize
6662 Don't try to do dubious things in global ctors (fix crash on startup)
6663 \end_layout
6665 \begin_layout Subsection
6666 rr0-beta9
6667 \end_layout
6669 \begin_layout Itemize
6670 Small documentation tweaking
6671 \end_layout
6673 \begin_layout Itemize
6674 Fix make clean
6675 \end_layout
6677 \begin_layout Itemize
6678 Fix major bug in modifier matching
6679 \end_layout
6681 \begin_layout Subsection
6682 rr0-beta10
6683 \end_layout
6685 \begin_layout Itemize
6686 Lots of documentation fixes
6687 \end_layout
6689 \begin_layout Itemize
6690 Use dedicated callbacks for event backcomm., not commands.
6691 \end_layout
6693 \begin_layout Itemize
6694 Ensure that the watchdog is not hit when executing delayed reset.
6695 \end_layout
6697 \begin_layout Itemize
6698 Remove errant tab from joystick message.
6699 \end_layout
6701 \begin_layout Subsection
6702 rr0-beta11
6703 \end_layout
6705 \begin_layout Itemize
6706 Make autofire operate in absolute time, not linear time
6707 \end_layout
6709 \begin_layout Itemize
6710 Reinitialize controls when resuming from loadstate
6711 \end_layout
6713 \begin_layout Itemize
6714 Some more code cleanups
6715 \end_layout
6717 \begin_layout Itemize
6718 If Lua allocator fails, call OOM_panic()
6719 \end_layout
6721 \begin_layout Itemize
6722 Byte/word/dword/qword sized host memory write/read functions.
6723 \end_layout
6725 \begin_layout Itemize
6726 Dump at correct framerate if dumping interlaced NTSC (height=448).
6727 \end_layout
6729 \begin_layout Subsection
6730 rr0-beta12
6731 \end_layout
6733 \begin_layout Itemize
6734 Actually include the complete source code
6735 \end_layout
6737 \begin_layout Itemize
6738 Keep track of RTC
6739 \end_layout
6741 \begin_layout Subsection
6742 rr0-beta13
6743 \end_layout
6745 \begin_layout Itemize
6746 Document {save,start}time.{,sub}second.
6747 \end_layout
6749 \begin_layout Itemize
6750 Intercept time() from bsnes core.
6751 \end_layout
6753 \begin_layout Subsection
6754 rr0-beta14
6755 \end_layout
6757 \begin_layout Itemize
6758 Allow disabling time() interception (allow build on Mac OS X)
6759 \end_layout
6761 \begin_layout Itemize
6762 Use SDLMain on Mac OS X (make SDL not crash)
6763 \end_layout
6765 \begin_layout Itemize
6766 Disable delayed resets (just plain too buggy for now).
6767 \end_layout
6769 \begin_layout Itemize
6770 Code cleanups
6771 \end_layout
6773 \begin_layout Itemize
6774 Use 16-bit for graphics/video instead of 32-bit.
6775 \end_layout
6777 \begin_layout Itemize
6778 gui.rectangle/gui.pixel
6779 \end_layout
6781 \begin_layout Itemize
6782 gui.crosshair
6783 \end_layout
6785 \begin_layout Itemize
6786 New CSCD writer implementation.
6787 \end_layout
6789 \begin_layout Subsection
6790 rr0-beta15
6791 \end_layout
6793 \begin_layout Itemize
6794 Fix interaction of * and +.
6795 \end_layout
6797 \begin_layout Itemize
6798 Manual improvements
6799 \end_layout
6801 \begin_layout Itemize
6802 Use gettimeofday()/usleep(), these seem portable enough.
6803 \end_layout
6805 \begin_layout Itemize
6806 Move joystick axis manipulation to keymapper code.
6807 \end_layout
6809 \begin_layout Itemize
6810 Changes to how read-only works.
6811 \end_layout
6813 \begin_layout Itemize
6814 Refactor controller input code.
6815 \end_layout
6817 \begin_layout Subsection
6818 rr0-beta16
6819 \end_layout
6821 \begin_layout Itemize
6822 Fix mouseclick scale compensation.
6823 \end_layout
6825 \begin_layout Itemize
6826 Draw area boundaries correctly in SDL code.
6827 \end_layout
6829 \begin_layout Itemize
6830 gui.screenshot.
6831 \end_layout
6833 \begin_layout Itemize
6834 Fix CSCD output (buffer overrun and race condition).
6835 \end_layout
6837 \begin_layout Subsection
6838 rr0-beta17
6839 \end_layout
6841 \begin_layout Itemize
6842 JMD dumping support.
6843 \end_layout
6845 \begin_layout Itemize
6846 Allow unattended dumping to JMD.
6847 \end_layout
6849 \begin_layout Itemize
6850 Move to BSNES v083.
6851 \end_layout
6853 \begin_layout Itemize
6854 Switch back to 32-bit colors.
6855 \end_layout
6857 \begin_layout Itemize
6858 Add Lua function gui.color.
6859 \end_layout
6861 \begin_layout Itemize
6862 Use some new C++11 features in GCC 4.6.
6863 \end_layout
6865 \begin_layout Itemize
6866 Be prepared for core frequency changes.
6867 \end_layout
6869 \begin_layout Itemize
6870 Pass colors in one chunk from Lua.
6871 \end_layout
6873 \begin_layout Subsection
6874 rr0-beta18
6875 \end_layout
6877 \begin_layout Itemize
6878 New lua functions gui.line(), gui.status() and gui.circle(), memory.vma_count(),
6879  memory.read_vma() and memory.find_vma().
6880 \end_layout
6882 \begin_layout Itemize
6883 Numerious documentation fixups
6884 \end_layout
6886 \begin_layout Itemize
6887 RTC time format changed
6888 \end_layout
6890 \begin_layout Itemize
6891 Reformat flags display
6892 \end_layout
6894 \begin_layout Itemize
6895 Allow lua package name to be overridden
6896 \end_layout
6898 \begin_layout Itemize
6899 SDUMP (high-quality dumping).
6900 \end_layout
6902 \begin_layout Itemize
6903 Split platform support to plugins.
6904 \end_layout
6906 \begin_layout Itemize
6907 Make all sound plugins support basic sound commands
6908 \end_layout
6910 \begin_layout Itemize
6911 Support portaudio for sound.
6912 \end_layout
6914 \begin_layout Itemize
6915 Allow disable Lua/SDL searching.
6916 \end_layout
6918 \begin_layout Itemize
6919 Upconvert colors when copying lcscreen to screen.
6920 \end_layout
6922 \begin_layout Itemize
6923 Reorganize source tree.
6924 \end_layout
6926 \begin_layout Itemize
6927 Evdev joystick support.
6928 \end_layout
6930 \begin_layout Itemize
6931 Refactor more code into generic window code.
6932 \end_layout
6934 \begin_layout Subsection
6935 rr0-beta19
6936 \end_layout
6938 \begin_layout Itemize
6939 Refactor message handling.
6940 \end_layout
6942 \begin_layout Itemize
6943 Rework makefile
6944 \end_layout
6946 \begin_layout Itemize
6947 Documentation fixes
6948 \end_layout
6950 \begin_layout Itemize
6951 Finish pending saves before load/quit.
6952 \end_layout
6954 \begin_layout Itemize
6955 Wxwidgets graphics plugin.
6956 \end_layout
6958 \begin_layout Subsection
6959 rr0-beta20
6960 \end_layout
6962 \begin_layout Itemize
6963 Get rid of win32-crap.[ch]pp.
6964 \end_layout
6966 \begin_layout Itemize
6967 Move files around a lot.
6968 \end_layout
6970 \begin_layout Itemize
6971 Get rid of need for host C++ compiler.
6972 \end_layout
6974 \begin_layout Itemize
6975 Bsnes v084 core.
6976 \end_layout
6978 \begin_layout Itemize
6979 Refactor inter-component communication.
6980 \end_layout
6982 \begin_layout Itemize
6983 Fix zero luma.
6984 \end_layout
6986 \begin_layout Itemize
6987 Fix crash on multiline aliases.
6988 \end_layout
6990 \begin_layout Itemize
6991 Load/Save settings in wxwidgets gui.
6992 \end_layout
6994 \begin_layout Subsection
6995 rr0-beta21
6996 \end_layout
6998 \begin_layout Itemize
6999 Patch problems in bsnes core
7000 \end_layout
7002 \begin_layout Itemize
7003 SNES is little-endian, not big-endian!
7004 \end_layout
7006 \begin_layout Itemize
7007 Fix memory corruption in lcscreen::load()
7008 \end_layout
7010 \begin_layout Subsection
7011 rr0-beta22
7012 \end_layout
7014 \begin_layout Itemize
7015 Fix interpretting repeat counts in rrdata loading.
7016 \end_layout
7018 \begin_layout Itemize
7019 New lua callback: on_frame()
7020 \end_layout
7022 \begin_layout Itemize
7023 Remove calls to runtosave() that aren't supposed to be there
7024 \end_layout
7026 \begin_layout Itemize
7027 Lua function: movie.read_rtc()
7028 \end_layout
7030 \begin_layout Itemize
7031 Ignore src/fonts/font.cpp
7032 \end_layout
7034 \begin_layout Itemize
7035 Fix more bsnes core problems
7036 \end_layout
7038 \begin_layout Itemize
7039 Control bsnes random seeding
7040 \end_layout
7042 \begin_layout Itemize
7043 Pause-on-end
7044 \end_layout
7046 \begin_layout Itemize
7047 Some bsnes core debugging features (state dump and state hash)
7048 \end_layout
7050 \begin_layout Itemize
7051 Fix titlebar version number (no, the last version wasn't 'lsnes-0-beta21',
7052  it was 'lsnes rr0-beta21').
7053 \end_layout
7055 \begin_layout Subsection
7056 rr0-beta23
7057 \end_layout
7059 \begin_layout Itemize
7060 Fix memory corruption due to macro/field mixup
7061 \end_layout
7063 \begin_layout Itemize
7064 search-memory update
7065 \end_layout
7067 \begin_layout Itemize
7068 Allow direct-mapped framebuffer
7069 \end_layout
7071 \begin_layout Itemize
7072 SDL: Use SDL_ANYFORMAT if possible
7073 \end_layout
7075 \begin_layout Itemize
7076 SDMP2SOX: 2s delay modes.
7077 \end_layout
7079 \begin_layout Itemize
7080 Wxwidgets: Cleanups
7081 \end_layout
7083 \begin_layout Itemize
7084 Use sed -E, not sed -r.
7085  Fixes building on Mac OS X.
7086 \end_layout
7088 \begin_layout Itemize
7089 Wxwidgets: Save jukebox on exit
7090 \end_layout
7092 \begin_layout Itemize
7093 Fix RTC if using load-movie on savestate.
7094 \end_layout
7096 \begin_layout Itemize
7097 Fix crash related to full console mode.
7098 \end_layout
7100 \begin_layout Subsection
7101 rr0-beta24
7102 \end_layout
7104 \begin_layout Itemize
7105 Wxwidgets: Allow bringing application to foreground on Mac OS X.
7106 \end_layout
7108 \begin_layout Itemize
7109 Wxwidgets: Allow compiling on Mac OS X.
7110 \end_layout
7112 \begin_layout Itemize
7113 Use movie compare instead of movie hashing (faster save/load).
7114 \end_layout
7116 \begin_layout Itemize
7117 Lua: _SYSTEM table.
7118 \end_layout
7120 \begin_layout Subsection
7121 rr0-beta25
7122 \end_layout
7124 \begin_layout Itemize
7125 sdmp2sox: Pad soundtrack if using -l or -L.
7126 \end_layout
7128 \begin_layout Itemize
7129 sdmp2sox: Fix NTSC overscan.
7130 \end_layout
7132 \begin_layout Itemize
7133 sdmp2sox: Add AR correction mode.
7134 \end_layout
7136 \begin_layout Itemize
7137 call lua_close() when exiting.
7138 \end_layout
7140 \begin_layout Itemize
7141 Fix zip_writer bug causing warnings from info-zip and error from advzip.
7142 \end_layout
7144 \begin_layout Subsection
7145 rr0-beta26
7146 \end_layout
7148 \begin_layout Itemize
7149 Fix IPS patching code (use bsnes core IPS patcher).
7150 \end_layout
7152 \begin_layout Itemize
7153 Implement BPS patching (using bsnes core IPS patcher).
7154 \end_layout
7156 \begin_layout Itemize
7157 Add feature to load headered ROMs.
7158 \end_layout
7160 \begin_layout Subsection
7161 rr0-beta27
7162 \end_layout
7164 \begin_layout Itemize
7165 Show command names when showing keybindings
7166 \end_layout
7168 \begin_layout Subsection
7170 \end_layout
7172 \begin_layout Itemize
7173 Fix pause-on-end to be actually controllable
7174 \end_layout
7176 \begin_layout Itemize
7177 SDL: Poll all events in queue, not just first one (fixes slowness in command
7178  typing)
7179 \end_layout
7181 \begin_layout Itemize
7182 Wxwidgets: Fix ROM loading.
7183 \end_layout
7185 \begin_layout Subsection
7186 rr1-beta0
7187 \end_layout
7189 \begin_layout Itemize
7190 Lua: Add gui.textH, gui.textV, gui.textHV
7191 \end_layout
7193 \begin_layout Itemize
7194 Fix text colors on SDL on Mac OS X
7195 \end_layout
7197 \begin_layout Itemize
7198 Mode 'F' for finished in readonly mode.
7199 \end_layout
7201 \begin_layout Itemize
7202 Fix some WS errors.
7203 \end_layout
7205 \begin_layout Itemize
7206 Reliably pause after skip poll
7207 \end_layout
7209 \begin_layout Itemize
7210 Split UI and core into their own threads
7211 \end_layout
7213 \begin_layout Subsection
7214 rr1-beta1
7215 \end_layout
7217 \begin_layout Itemize
7218 Remove leftover dummy SRAM slot
7219 \end_layout
7221 \begin_layout Itemize
7222 Fix controller numbers.
7223 \end_layout
7225 \begin_layout Subsection
7226 rr1-beta2
7227 \end_layout
7229 \begin_layout Itemize
7230 Fix lsnes-dumpavi after interface change.
7231 \end_layout
7233 \begin_layout Itemize
7234 Also give BSNES patches for v085.
7235 \end_layout
7237 \begin_layout Itemize
7238 Pack movie data in memory.
7239 \end_layout
7241 \begin_layout Subsection
7242 rr1-beta3
7243 \end_layout
7245 \begin_layout Itemize
7246 Fix framecount/length given when loading movies.
7247 \end_layout
7249 \begin_layout Itemize
7250 Controller command memory leak fixes.
7251 \end_layout
7253 \begin_layout Itemize
7254 Don't leak palette if freeing screen object.
7255 \end_layout
7257 \begin_layout Subsection
7258 rr1-beta4
7259 \end_layout
7261 \begin_layout Itemize
7262 Detect revisions.
7263 \end_layout
7265 \begin_layout Itemize
7266 Wxwidgets: Allow controlling dumper from the menu.
7267 \end_layout
7269 \begin_layout Subsection
7270 rr1-beta5
7271 \end_layout
7273 \begin_layout Itemize
7274 Rewrite parts of manual
7275 \end_layout
7277 \begin_layout Itemize
7278 Lua: Make it work with Lua 5.2.
7279 \end_layout
7281 \begin_layout Subsection
7282 rr1-beta6
7283 \end_layout
7285 \begin_layout Itemize
7286 Win32: Fix compile errors.
7287 \end_layout
7289 \begin_layout Subsection
7290 rr1-beta7
7291 \end_layout
7293 \begin_layout Itemize
7294 Refactor controller input code.
7295 \end_layout
7297 \begin_layout Itemize
7298 Fix crash when using command line on SDL / Mac OS X.
7299 \end_layout
7301 \begin_layout Subsection
7302 rr1-beta8
7303 \end_layout
7305 \begin_layout Itemize
7306 Delete core/coroutine (obsolete)
7307 \end_layout
7309 \begin_layout Itemize
7310 Lag input display by one frame.
7311 \end_layout
7313 \begin_layout Itemize
7314 Rewind movie to beginning function.
7315 \end_layout
7317 \begin_layout Itemize
7318 Fix wrong frame number reported to Lua when repainting after loadstate
7319 \end_layout
7321 \begin_layout Itemize
7322 Support UI editing of jukebox
7323 \end_layout
7325 \begin_layout Itemize
7326 Wxwidgets: Save settings on exit.
7327 \end_layout
7329 \begin_layout Itemize
7330 Support ${project} for filenames
7331 \end_layout
7333 \begin_layout Itemize
7334 SDL: Fix command history
7335 \end_layout
7337 \begin_layout Subsection
7338 rr1-beta9
7339 \end_layout
7341 \begin_layout Itemize
7342 Fix some order-of-global-ctor bugs.
7343 \end_layout
7345 \begin_layout Subsection
7346 rr1-beta10
7347 \end_layout
7349 \begin_layout Itemize
7350 Fix crashes when quitting on Win32.
7351 \end_layout
7353 \begin_layout Subsection
7354 rr1-beta11
7355 \end_layout
7357 \begin_layout Itemize
7358 EVDEV: Queue keypresses from joystick, don't send directly
7359 \end_layout
7361 \begin_layout Itemize
7362 Wxwidgets: Load-Preserve that actually works.
7363 \end_layout
7365 \begin_layout Subsection
7366 rr1-beta12
7367 \end_layout
7369 \begin_layout Itemize
7370 Wxwidgets: GUI for memory search.
7371 \end_layout
7373 \begin_layout Itemize
7374 Warn about using synchronous queue in UI callback.
7375 \end_layout
7377 \begin_layout Subsection
7378 rr1-beta13
7379 \end_layout
7381 \begin_layout Itemize
7382 Remember last saved file for each ROM
7383 \end_layout
7385 \begin_layout Itemize
7386 Support MT dumping via boost.
7387 \end_layout
7389 \begin_layout Itemize
7390 Lua: input.raw
7391 \end_layout
7393 \begin_layout Itemize
7394 Lua: input.keyhook
7395 \end_layout
7397 \begin_layout Itemize
7398 Make mouse be ordinary input instead of special-casing
7399 \end_layout
7401 \begin_layout Itemize
7402 SDL: Don't screw up commands with NUL codepoints.
7403 \end_layout
7405 \begin_layout Subsection
7406 rr1-beta14
7407 \end_layout
7409 \begin_layout Itemize
7410 Merge status panel and main window
7411 \end_layout
7413 \begin_layout Itemize
7414 True movie slot support (the rest of it)
7415 \end_layout
7417 \begin_layout Itemize
7418 SDL: Fix compilation error
7419 \end_layout
7421 \begin_layout Itemize
7422 Elminate cross calls in dump menu code.
7423 \end_layout
7425 \begin_layout Subsection
7426 rr1-beta15
7427 \end_layout
7429 \begin_layout Itemize
7430 Cancel pending saves command
7431 \end_layout
7433 \begin_layout Itemize
7434 Wxwidgets: Code refactoring
7435 \end_layout
7437 \begin_layout Itemize
7438 Wxwidgets: Fix system -> reset
7439 \end_layout
7441 \begin_layout Itemize
7442 Wxwidgets: Read watch expressions in the right thread
7443 \end_layout
7445 \begin_layout Subsection
7446 rr1-beta16
7447 \end_layout
7449 \begin_layout Itemize
7450 Wxwidgets: Don't prompt for member when running Lua script (Lua doesn't
7451  support that).
7452 \end_layout
7454 \begin_layout Itemize
7455 Wxwidgets: 128 -> 1024 Autohold slots (in case more are needed).
7456 \end_layout
7458 \begin_layout Itemize
7459 Don't append trailing '-' to prefix when saving movie.
7460 \end_layout
7462 \begin_layout Itemize
7463 Fix ROM/savestate handling (don't let user mismatch ROM and savestates).
7464 \end_layout
7466 \begin_layout Subsection
7468 \end_layout
7470 \begin_layout Itemize
7471 Document memory watch syntax.
7472 \end_layout
7474 \begin_layout Subsection
7475 rr1-delta1
7476 \end_layout
7478 \begin_layout Itemize
7479 Fix unattended dumping (lsnes-dumpavi)
7480 \end_layout
7482 \begin_layout Itemize
7483 Support RAW dumping
7484 \end_layout
7486 \begin_layout Itemize
7487 Use adv_dumper instead of the old interface in lsnes-dumpavi (changes syntax)
7488 \end_layout
7490 \begin_layout Itemize
7491 Add option to control sample rate preturbation in AVI dumper
7492 \end_layout
7494 \begin_layout Subsection
7495 rr1-delta2
7496 \end_layout
7498 \begin_layout Itemize
7499 Wxwidgets: Fix dumper submodes
7500 \end_layout
7502 \begin_layout Itemize
7503 Set core controller types before loadstate
7504 \end_layout
7506 \begin_layout Subsection
7507 rr1-delta2epsilon1
7508 \end_layout
7510 \begin_layout Itemize
7511 Fix compiling with bsnes v086.
7512 \end_layout
7514 \begin_layout Subsection
7515 rr1-delta3
7516 \end_layout
7518 \begin_layout Itemize
7519 Don't prompt before quitting
7520 \end_layout
7522 \begin_layout Itemize
7523 Start unpaused, preserve pause/unpause over load.
7524 \end_layout
7526 \begin_layout Itemize
7527 Try to autodetect if ROM is headered.
7528 \end_layout
7530 \begin_layout Itemize
7531 Wxwidgets: Only bring up ROM patching screen if specifically requested.
7532 \end_layout
7534 \begin_layout Itemize
7535 Allow configuring some hotkeys.
7536 \end_layout
7538 \begin_layout Subsection
7539 rr1-delta4
7540 \end_layout
7542 \begin_layout Itemize
7543 Lots of code cleanups
7544 \end_layout
7546 \begin_layout Itemize
7547 Fix JMD compression (JMD dumping was broken)
7548 \end_layout
7550 \begin_layout Itemize
7551 Don't crash if Lua C function throws an exception.
7552 \end_layout
7554 \begin_layout Itemize
7555 Support bitmap drawing in Lua.
7556 \end_layout
7558 \begin_layout Itemize
7559 Fix bsnes v085/v086 patches.
7560 \end_layout
7562 \begin_layout Itemize
7563 Improve stability on win32.
7564 \end_layout
7566 \begin_layout Subsection
7567 rr1-delta4epsilon1
7568 \end_layout
7570 \begin_layout Itemize
7571 Don't corrupt movie if movie length is integer multiple of frames per page.
7572 \end_layout
7574 \begin_layout Subsection
7575 rr1-delta5
7576 \end_layout
7578 \begin_layout Itemize
7579 New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
7580 \end_layout
7582 \begin_layout Itemize
7583 New Lua functions: emulator_ready(), utime(), set_idle_timeout(), set_timer_time
7584 out(), bit.extract(), bit.value(), input.geta(), input.seta() and input.controllertyp
7586 \end_layout
7588 \begin_layout Itemize
7589 Wxwidgets: Fix internal focus lost (hotkeys stop working)
7590 \end_layout
7592 \begin_layout Itemize
7593 Wxwidgets: Fix broken modifiers
7594 \end_layout
7596 \begin_layout Itemize
7597 on_paint has parameter now.
7598 \end_layout
7600 \begin_layout Itemize
7601 Optional initital fill for bitmaps
7602 \end_layout
7604 \begin_layout Itemize
7605 Fix palette changing.
7606 \end_layout
7608 \begin_layout Itemize
7609 Optimize rendering a bit.
7610 \end_layout
7612 \begin_layout Itemize
7613 Bsnes v087 support.
7614 \end_layout
7616 \begin_layout Subsection
7617 rr1-delta5epsilon1
7618 \end_layout
7620 \begin_layout Itemize
7621 Movieinfo: Fix display of port #2 type.
7622 \end_layout
7624 \begin_layout Itemize
7625 Call on_input() after loadstate.
7626 \end_layout
7628 \begin_layout Subsection
7629 rr1-delta5epsilon2
7630 \end_layout
7632 \begin_layout Itemize
7633 Fix writing port2 data to movie.
7634 \end_layout
7636 \begin_layout Itemize
7637 Fix SRAM handling with Bsnes v087.
7638 \end_layout
7640 \begin_layout Subsection
7641 rr1-delta6
7642 \end_layout
7644 \begin_layout Itemize
7645 Library loading support
7646 \end_layout
7648 \begin_layout Itemize
7649 Built-in TSCC encoder
7650 \end_layout
7652 \begin_layout Itemize
7653 Hi-color (256T colors) dumping.
7654 \end_layout
7656 \begin_layout Itemize
7657 Dump over TCP/IP(v6)
7658 \end_layout
7660 \begin_layout Itemize
7661 Hidable status panel
7662 \end_layout
7664 \begin_layout Itemize
7665 Turbo toggle/hold
7666 \end_layout
7668 \begin_layout Itemize
7669 Adjustable sound volume
7670 \end_layout
7672 \begin_layout Itemize
7673 Screen scaling
7674 \end_layout
7676 \begin_layout Itemize
7677 Allow DnD into filename boxes
7678 \end_layout
7680 \begin_layout Itemize
7681 Configurable paths
7682 \end_layout
7684 \begin_layout Itemize
7685 Portaudio: Fix speaker popping at start
7686 \end_layout
7688 \begin_layout Itemize
7689 Lots of UI changes
7690 \end_layout
7692 \begin_layout Itemize
7693 Speed adjustment menu
7694 \end_layout
7696 \begin_layout Itemize
7697 Win32 joystick support
7698 \end_layout
7700 \begin_layout Itemize
7701 Lua: gui.rainbow and gui.box
7702 \end_layout
7704 \begin_layout Itemize
7705 Split key lists into classes (the key list was large!)
7706 \end_layout
7708 \begin_layout Itemize
7709 More save slots support
7710 \end_layout
7712 \begin_layout Itemize
7713 Wxwidgets (wxJoystick) joystick support
7714 \end_layout
7716 \begin_layout Subsection
7717 rr1-delta7
7718 \end_layout
7720 \begin_layout Itemize
7721 Lots of internal joystick refactoring
7722 \end_layout
7724 \begin_layout Itemize
7725 Evdev: Add mapping for BTN_TOOL_QUINTTAP
7726 \end_layout
7728 \begin_layout Itemize
7729 Wxwidgets: Settings mode (open settings without ROM)
7730 \end_layout
7732 \begin_layout Itemize
7733 Wxwidgets: Prompt key to use option
7734 \end_layout
7736 \begin_layout Itemize
7737 Wxwidgets: Fix crash if key goes away underneath
7738 \end_layout
7740 \begin_layout Itemize
7741 Wxwidgets: Fix mouse position in presence of scaling
7742 \end_layout
7744 \begin_layout Itemize
7745 AVI dumper: Mode 4 (high-quality resampling to common rate using SRC)
7746 \end_layout
7748 \begin_layout Itemize
7749 Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree control doesn't
7750  seem to work well on WinXP)
7751 \end_layout
7753 \begin_layout Itemize
7754 Start paused option.
7755 \end_layout
7757 \begin_layout Subsection
7758 rr1-delta7epsilon1
7759 \end_layout
7761 \begin_layout Itemize
7762 AVI: ZMBV support
7763 \end_layout
7765 \begin_layout Itemize
7766 lsnes-dumpavi: Start Lua before starting dumper
7767 \end_layout
7769 \begin_layout Itemize
7770 AVI: Fix secondary audio in mode 4.
7771 \end_layout
7773 \begin_layout Subsection
7774 rr1-delta7epsilon2
7775 \end_layout
7777 \begin_layout Itemize
7778 AVI: Refactor ZMBV a bit.
7779 \end_layout
7781 \begin_layout Itemize
7782 Fix error reading analog values from movie file
7783 \end_layout
7785 \begin_layout Subsection
7786 rr1-delta8
7787 \end_layout
7789 \begin_layout Itemize
7790 Delayed reset support
7791 \end_layout
7793 \begin_layout Itemize
7794 Lua: memory.hash_region
7795 \end_layout
7797 \begin_layout Subsection
7798 rr1-delta8epsilon1
7799 \end_layout
7801 \begin_layout Itemize
7802 Rework the build system
7803 \end_layout
7805 \begin_layout Itemize
7806 Typing input support
7807 \end_layout
7809 \begin_layout Itemize
7810 Fix building with bsnes v086 and v087.
7811 \end_layout
7813 \begin_layout Itemize
7814 SDL: Save settings on exit
7815 \end_layout
7817 \begin_layout Itemize
7818 SDL: Command to enter command line mode with given command.
7819 \end_layout
7821 \begin_layout Itemize
7822 SDL: More advanced command editing.
7823 \end_layout
7825 \begin_layout Subsection
7826 rr1-delta9
7827 \end_layout
7829 \begin_layout Itemize
7830 wxMSW: Fix the 
7831 \begin_inset Quotes eld
7832 \end_inset
7834 arrow keys and enter don't work
7835 \begin_inset Quotes erd
7836 \end_inset
7838  problem
7839 \end_layout
7841 \begin_layout Itemize
7842 MSU-1 support
7843 \end_layout
7845 \begin_layout Itemize
7846 Show mode changes due to rewinding.
7847 \end_layout
7849 \begin_layout Itemize
7850 Unsafe rewind support
7851 \end_layout
7853 \begin_layout Itemize
7854 Fix directory transversal.
7855 \end_layout
7857 \begin_layout Subsection
7858 rr1-delta10
7859 \end_layout
7861 \begin_layout Itemize
7862 AVI: Sound mode 5 (48kHz high-quality)
7863 \end_layout
7865 \begin_layout Itemize
7866 Lua: Reset Lua VM
7867 \end_layout
7869 \begin_layout Itemize
7870 Map the SNES bus into address space
7871 \end_layout
7873 \begin_layout Itemize
7874 Fix loading memory watch files with CRLF line endings
7875 \end_layout
7877 \begin_layout Subsection
7878 rr1-delta10epsilon1
7879 \end_layout
7881 \begin_layout Itemize
7882 Map bsnes internal state into memory space
7883 \end_layout
7885 \begin_layout Itemize
7886 Fix the 
7887 \begin_inset Quotes eld
7888 \end_inset
7890 click on panel wedges the emulator
7891 \begin_inset Quotes erd
7892 \end_inset
7894  for real.
7895 \end_layout
7897 \begin_layout Itemize
7898 DnD movies/saves on the main window.
7899 \end_layout
7901 \begin_layout Subsection
7902 rr1-delta11
7903 \end_layout
7905 \begin_layout Itemize
7906 Split core bindings into own module.
7907 \end_layout
7909 \begin_layout Itemize
7910 Remember invalid settings
7911 \end_layout
7913 \begin_layout Itemize
7914 Support for modified Gambatte core for GB/GBC emulation.
7915 \end_layout
7917 \begin_layout Itemize
7918 Reload/swap ROM function
7919 \end_layout
7921 \begin_layout Subsection
7922 rr1-delta11epsilon1
7923 \end_layout
7925 \begin_layout Itemize
7926 Fix step poll function
7927 \end_layout
7929 \begin_layout Subsection
7930 rr1-delta12
7931 \end_layout
7933 \begin_layout Itemize
7934 Non-insane savestate anchoring
7935 \end_layout
7937 \begin_layout Subsection
7938 rr1-delta13
7939 \end_layout
7941 \begin_layout Itemize
7942 More Memory search methods
7943 \end_layout
7945 \begin_layout Itemize
7946 Preserve movie if loading in RO mode.
7947 \end_layout
7949 \begin_layout Itemize
7950 Fix a obscure case in timeline check
7951 \end_layout
7953 \begin_layout Itemize
7954 Revamp the entiere ROM loading code
7955 \end_layout
7957 \begin_layout Itemize
7958 Support DnD on ROMs
7959 \end_layout
7961 \begin_layout Itemize
7962 Revamp menu layout
7963 \end_layout
7965 \begin_layout Itemize
7966 Standalone hotkey config dialog
7967 \end_layout
7969 \begin_layout Itemize
7970 Show bindings in more user-friendly format
7971 \end_layout
7973 \begin_layout Subsection
7974 rr1-delta13epsilon1
7975 \end_layout
7977 \begin_layout Itemize
7978 Pipedec support
7979 \end_layout
7981 \begin_layout Itemize
7982 Fix uninitialized variables in bsnes v085
7983 \end_layout
7985 \begin_layout Subsection
7986 rr1-delta14
7987 \end_layout
7989 \begin_layout Itemize
7990 Merge gambatte core into mainline (from its own branch)
7991 \end_layout
7993 \begin_layout Itemize
7994 Wxwidgets: Show expected dump file formats
7995 \end_layout
7997 \begin_layout Itemize
7998 Memory watch: Data typing
7999 \end_layout
8001 \begin_layout Itemize
8002 lsnes internal MMIO area.
8003 \end_layout
8005 \begin_layout Itemize
8006 Wxwidgets: New memory watch editor
8007 \end_layout
8009 \begin_layout Itemize
8010 Hexadecimal memory watches
8011 \end_layout
8013 \begin_layout Itemize
8014 Wxwidgets: Monospaced panel
8015 \end_layout
8017 \begin_layout Itemize
8018 Wxwidgets: Split memory watches in panel
8019 \end_layout
8021 \begin_layout Itemize
8022 Wxwidgets: Disable VMAs in memory search
8023 \end_layout
8025 \begin_layout Itemize
8026 lsnes-dumpavi: Fix speed bug
8027 \end_layout
8029 \begin_layout Itemize
8030 Movie subtitle support
8031 \end_layout
8033 \begin_layout Itemize
8034 Fix rerecord count reporting
8035 \end_layout
8037 \begin_layout Itemize
8038 Don't trash movie when loading in readonly mode.
8039 \end_layout
8041 \begin_layout Subsection
8042 rr1-delta14epsilon1
8043 \end_layout
8045 \begin_layout Itemize
8046 Wxwidgets: Fix crashes on closing settings dialogs on Mac OS X.
8047 \end_layout
8049 \begin_layout Itemize
8050 Fix build on Mac OS X.
8051 \end_layout
8053 \begin_layout Itemize
8054 Lua: loopwrapper
8055 \end_layout
8057 \begin_layout Itemize
8058 Wxwidgets: Hidable messages window
8059 \end_layout
8061 \begin_layout Itemize
8062 Lua: input.joyset
8063 \end_layout
8065 \begin_layout Itemize
8066 Bsnes: Support inconsistent saves
8067 \end_layout
8069 \begin_layout Itemize
8070 Bsnes: Allow simulating saving every frame
8071 \end_layout
8073 \begin_layout Itemize
8074 Fix desync if savestate is loaded in readonly mode in certain conditions.
8075 \end_layout
8077 \begin_layout Itemize
8078 Wxwidgets: Fix save dialogs on Mac OS X.
8079 \end_layout
8081 \begin_layout Itemize
8082 Wxwidgets: Fix insane status width on Win32.
8083 \end_layout
8085 \begin_layout Itemize
8086 Wxwidgets: Fix autohold processing to be faster.
8087 \end_layout
8089 \begin_layout Itemize
8090 Wxwidgets: Allow loading ROMs and movies from commandline.
8091 \end_layout
8093 \begin_layout Subsection
8094 rr1-delta15
8095 \end_layout
8097 \begin_layout Itemize
8098 Be a bit smarter with --load
8099 \end_layout
8101 \begin_layout Itemize
8102 Rewrote higher-level parts of audio system
8103 \end_layout
8105 \begin_layout Itemize
8106 Tool to build commentary tracks
8107 \end_layout
8109 \begin_layout Itemize
8110 Lua: input.joyget
8111 \end_layout
8113 \begin_layout Itemize
8114 Gambatte: Add support for SVN358
8115 \end_layout
8117 \begin_layout Itemize
8118 Use builtin font when rendering status panel.
8119 \end_layout
8121 \begin_layout Itemize
8122 Option to detach memory watch to its own window.
8123 \end_layout
8125 \begin_layout Itemize
8126 Recent ROMs/Movies menu
8127 \end_layout
8129 \begin_layout Itemize
8130 Libao support
8131 \end_layout
8133 \begin_layout Itemize
8134 Useful lag counter for SNES games that autopoll
8135 \end_layout
8137 \begin_layout Itemize
8138 Fix buffer overflow in gambatte sound output
8139 \end_layout
8141 \begin_layout Subsection
8142 rr1-delta15epsilon1
8143 \end_layout
8145 \begin_layout Itemize
8146 Don't blow up on wxGTK if the window is hidden somehow
8147 \end_layout
8149 \begin_layout Itemize
8150 Support simultaneous drop of ROM and movie.
8151 \end_layout
8153 \begin_layout Itemize
8154 Gambatte: Don't save spurious SRAMs.
8155 \end_layout
8157 \begin_layout Itemize
8158 Make SGB ROMs actually usable.
8159 \end_layout
8161 \begin_layout Itemize
8162 Fix so that saved movies appear in recent movies.
8163 \end_layout
8165 \begin_layout Itemize
8166 Don't open multiple commentary editors at once.
8167 \end_layout
8169 \begin_layout Subsection
8170 rr1-delta15epsilon2
8171 \end_layout
8173 \begin_layout Itemize
8174 Lua: memory.readregion/memory.writeregion
8175 \end_layout
8177 \begin_layout Itemize
8178 Lua: memory.map{,s}{byte,word,dword,qword}
8179 \end_layout
8181 \begin_layout Itemize
8182 Lua: memory.map_structure
8183 \end_layout
8185 \begin_layout Itemize
8186 Lua: Fix bus_address for gambatte
8187 \end_layout
8189 \begin_layout Itemize
8190 Fix features dependent of bsnes debugger
8191 \end_layout
8193 \begin_layout Itemize
8194 Cleanup bsnes debugger logic
8195 \end_layout
8197 \begin_layout Itemize
8198 Fix resets in presence of save every frame
8199 \end_layout
8201 \begin_layout Subsection
8202 rr1-delta15epsilon3
8203 \end_layout
8205 \begin_layout Itemize
8206 Lua: input.lcid_to_pcid
8207 \end_layout
8209 \begin_layout Itemize
8210 Fix off-by-one bug with slot hashes
8211 \end_layout
8213 \begin_layout Itemize
8214 Fix crashes on certain memory watch expressions
8215 \end_layout
8217 \begin_layout Itemize
8218 Lua: memory.read_expr
8219 \end_layout
8221 \begin_layout Itemize
8222 Lua: Fix memory.read_expr on nil argument
8223 \end_layout
8225 \begin_layout Itemize
8226 Fix the code to compile on G++ 4.7
8227 \end_layout
8229 \begin_layout Itemize
8230 Change button_id to be a function pointer field, not a virtual method
8231 \end_layout
8233 \begin_layout Itemize
8234 Add bsnes patches to fix libsnes to compile on GCC 4.7
8235 \end_layout
8237 \begin_layout Itemize
8238 Gambatte: Always use legacy lag counting
8239 \end_layout
8241 \begin_layout Itemize
8242 Memory commands: Memory addresses are up to 16 hex digits, not up to 8
8243 \end_layout
8245 \begin_layout Itemize
8246 Fix analog controllers
8247 \end_layout
8249 \begin_layout Itemize
8250 Fix autohold menus
8251 \end_layout
8253 \begin_layout Itemize
8254 Fix button symbols in input display
8255 \end_layout
8257 \begin_layout Itemize
8258 Compensate for nuts bsnes superscope/justifier handling
8259 \end_layout
8261 \begin_layout Itemize
8262 Lua: Fix bit.extract boolean handling
8263 \end_layout
8265 \begin_layout Subsection
8266 rr1-delta16
8267 \end_layout
8269 \begin_layout Itemize
8270 Stop at movie end: Don't off-by-one
8271 \end_layout
8273 \begin_layout Itemize
8274 Fix crash closing lsnes with voice playback active.
8275 \end_layout
8277 \begin_layout Itemize
8278 Import/Export OggOpus for commentary tracks
8279 \end_layout
8281 \begin_layout Itemize
8282 16-button controllers.
8283 \end_layout
8285 \begin_layout Itemize
8286 Don't show nonexistent controllers in input display
8287 \end_layout
8289 \begin_layout Itemize
8290 Set voice record/playback volume from UI
8291 \end_layout
8293 \begin_layout Itemize
8294 Patches for gambatte SVN364.
8295 \end_layout
8297 \begin_layout Itemize
8298 Load markup (if exists) even without gamepack file.
8299 \end_layout
8301 \begin_layout Itemize
8302 Screen rotation & flipping
8303 \end_layout
8305 \begin_layout Itemize
8306 Lua: Some new bit functions
8307 \end_layout
8309 \begin_layout Itemize
8310 Auto-refresh voice streams on change.
8311 \end_layout
8313 \begin_layout Itemize
8314 Auto-refresh subtitles on change & new subtitle editor.
8315 \end_layout
8317 \begin_layout Itemize
8318 Fix music volume adjustment.
8319 \end_layout
8321 \begin_layout Subsection
8322 rr1-delta16epsilon1
8323 \end_layout
8325 \begin_layout Itemize
8326 Wxwidgets: Fix memory watch rendering.
8327 \end_layout
8329 \begin_layout Itemize
8330 Wxwidgets: Allow setting voice stream gain.
8331 \end_layout
8333 \begin_layout Itemize
8334 Wxwidgets: VU meters and volume adjustment.
8335 \end_layout
8337 \begin_layout Itemize
8338 Lua: Custom fonts support.
8339 \end_layout
8341 \begin_layout Itemize
8342 Lua: Fix methods stopping working when resetting Lua.
8343 \end_layout
8345 \begin_layout Itemize
8346 Fix loading standard-format movies in preserve (readonly) mode.
8347 \end_layout
8349 \begin_layout Subsection
8350 rr1-delta17
8351 \end_layout
8353 \begin_layout Itemize
8354 Primitive movie editor
8355 \end_layout
8357 \begin_layout Itemize
8358 Fix VU meter with no sound device.
8359 \end_layout
8361 \begin_layout Itemize
8362 Fix various undefined return values.
8363 \end_layout
8365 \begin_layout Itemize
8366 Show rates in VU meter window.
8367 \end_layout
8369 \begin_layout Subsection
8370 rr1-delta17epsilon1
8371 \end_layout
8373 \begin_layout Itemize
8374 Commentary tool: Set nominal bit rate and limit max bit rate.
8375 \end_layout
8377 \begin_layout Itemize
8378 Lua: Unconditionally reload host memory on loadstate
8379 \end_layout
8381 \begin_layout Itemize
8382 Lua: Query bindings, manipulate aliases, create inverse bindings
8383 \end_layout
8385 \begin_layout Itemize
8386 Lua: Fix crashes with resetting VM while some types of paint requests are
8387  in flight.
8388 \end_layout
8390 \begin_layout Itemize
8391 Lua: gui.text: Clip the text properly instead of corrupting memory in some
8392  cases.
8393 \end_layout
8395 \begin_layout Itemize
8396 Save screenshot header reliably
8397 \end_layout
8399 \begin_layout Itemize
8400 Lua: Backport input.get2 and input.set2
8401 \end_layout
8403 \begin_layout Itemize
8404 Lua: New controller info functions.
8405 \end_layout
8407 \begin_layout Itemize
8408 Movie editor: Fix reset delay counters to be the right way around.
8409 \end_layout
8411 \begin_layout Itemize
8412 Lua: on_snoop2
8413 \end_layout
8415 \begin_layout Itemize
8416 Lua: on_button and input.veto_button.
8417 \end_layout
8419 \begin_layout Subsection
8420 rr1-delta17epsilon2
8421 \end_layout
8423 \begin_layout Itemize
8424 Fix saving PNG screenshots on Win32.
8425 \end_layout
8427 \begin_layout Itemize
8428 Movie editor: Sweep axis.
8429 \end_layout
8431 \begin_layout Itemize
8432 Load selected slot in ro/rw/preserve/movie mode.
8433 \end_layout
8435 \begin_layout Itemize
8436 input.joyset: Preserve and invert user input.
8437 \end_layout
8439 \begin_layout Itemize
8440 Allow immediate saving at point of save (transfer saves).
8441 \end_layout
8443 \begin_layout Itemize
8444 Wxwidgets: Filter filenames in dialogs, autoappend extensions.
8445 \end_layout
8447 \begin_layout Itemize
8448 data/verysmall.font: Add missing glyph 70 (
8449 \begin_inset Quotes eld
8450 \end_inset
8453 \begin_inset Quotes erd
8454 \end_inset
8457 \end_layout
8459 \begin_layout Itemize
8460 Lua: Allow painting custom fonts with halo.
8461 \end_layout
8463 \begin_layout Itemize
8464 Fix memory value search to work on byte types.
8465 \end_layout
8467 \begin_layout Subsection
8468 rr1-delta17epsilon3
8469 \end_layout
8471 \begin_layout Itemize
8472 Fix status panel (and movie editor) flicker
8473 \end_layout
8475 \begin_layout Itemize
8476 Show effects of Lua in input display
8477 \end_layout
8479 \begin_layout Itemize
8480 Offer lsmv.backup as file filter too for load lsmv
8481 \end_layout
8483 \begin_layout Itemize
8484 Allow slowing down subframe advance 
8485 \end_layout
8487 \begin_layout Itemize
8488 Display current save slot information
8489 \end_layout
8491 \begin_layout Itemize
8492 Add snes9x fonts
8493 \end_layout
8495 \begin_layout Itemize
8496 Fix hotkeys stopping working after X-ing settings dialog
8497 \end_layout
8499 \begin_layout Itemize
8500 Movie editor: Fix bug if extending finished movie
8501 \end_layout
8503 \begin_layout Itemize
8504 Cap current_frame_first_subframe to movie size when recounting movie
8505 \end_layout
8507 \begin_layout Itemize
8508 Movie editor: Interpret ctrl+click as right click 
8509 \end_layout
8511 \end_body
8512 \end_document