Lua: Query bindings, manipulate aliases, create inverse bindings
[lsnes.git] / manual.lyx
blobccd01ebd33b92c439cd24402d8de5d9c45a683df
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 run-lua <script>
1389 \end_layout
1391 \begin_layout Standard
1392 Run specified lua file using built-in Lua interpretter.
1393 \end_layout
1395 \begin_layout Subsubsection
1396 reset-lua
1397 \end_layout
1399 \begin_layout Standard
1400 Clear the Lua VM state and restore to factory defaults.
1401 \end_layout
1403 \begin_layout Subsection
1404 Memory watch
1405 \end_layout
1407 \begin_layout Subsubsection
1408 add-watch <name> <expression>
1409 \end_layout
1411 \begin_layout Standard
1412 Adds new watch (or modifies old one).
1413 \end_layout
1415 \begin_layout Subsubsection
1416 remove-watch <name>
1417 \end_layout
1419 \begin_layout Standard
1420 Remove a watch.
1421 \end_layout
1423 \begin_layout Subsection
1424 Sound 
1425 \end_layout
1427 \begin_layout Subsubsection
1428 enable-sound <on/off> 
1429 \end_layout
1431 \begin_layout Standard
1432 Enable/Disable sound.
1433 \end_layout
1435 \begin_layout Subsubsection
1436 set-sound-device <device> 
1437 \end_layout
1439 \begin_layout Standard
1440 Set sound device to <device>
1441 \end_layout
1443 \begin_layout Subsubsection
1444 show-sound-status 
1445 \end_layout
1447 \begin_layout Standard
1448 Show status of sound system.
1449 \end_layout
1451 \begin_layout Subsubsection
1452 show-sound-devices
1453 \end_layout
1455 \begin_layout Standard
1456 Show all available devices.
1457 \end_layout
1459 \begin_layout Subsubsection
1460 set-volume <multiplier>
1461 \end_layout
1463 \begin_layout Standard
1464 Set the volume multiplier to <multiplier>.
1465  1 is normal volume, and higher numbers are louder.
1466 \end_layout
1468 \begin_layout Subsubsection
1469 set-volume <multiplier>%
1470 \end_layout
1472 \begin_layout Standard
1473 Set the volume multiplier to <multiplier> percent.
1474  100 is normal volume, and higher numbers are louder.
1475 \end_layout
1477 \begin_layout Subsubsection
1478 set-volume <multiplier>dB
1479 \end_layout
1481 \begin_layout Standard
1482 Set the volume multiplier to <multiplier> dB.
1483  0 is normal volume, and higher numbers are louder.
1484  The value may be negative.
1485 \end_layout
1487 \begin_layout Subsection
1488 Misc.
1489 \end_layout
1491 \begin_layout Subsubsection
1492 reload-rom [<file>]
1493 \end_layout
1495 \begin_layout Standard
1496 Reloads the main ROM image from <file>.
1497 \end_layout
1499 \begin_layout Subsubsection
1500 edit-subtitle <firstframe> <length> [<text>]
1501 \end_layout
1503 \begin_layout Standard
1504 Edit or delete a subtitle.
1505 \end_layout
1507 \begin_layout Subsubsection
1508 list-subtitle
1509 \end_layout
1511 \begin_layout Standard
1512 List subtitles.
1513 \end_layout
1515 \begin_layout Subsection
1516 Commentary track
1517 \end_layout
1519 \begin_layout Subsubsection
1520 list-streams
1521 \end_layout
1523 \begin_layout Standard
1524 List streams
1525 \end_layout
1527 \begin_layout Subsubsection
1528 play-stream <id>
1529 \end_layout
1531 \begin_layout Standard
1532 Play stream <id>.
1533 \end_layout
1535 \begin_layout Subsubsection
1536 delete-stream <id>
1537 \end_layout
1539 \begin_layout Standard
1540 Delete stream <id>
1541 \end_layout
1543 \begin_layout Subsubsection
1544 change-timebase <id> <newbase>
1545 \end_layout
1547 \begin_layout Standard
1548 Change time base of <id> to <newbase>.
1549  The time base can be given as samples (integer) or second (postfix with
1550  s).
1551 \end_layout
1553 \begin_layout Subsubsection
1554 import-stream-opus <timebase> <file>
1555 \end_layout
1557 \begin_layout Standard
1558 Import opus stream from <file>, placing it at <timebase>.
1559  This operation is lossless.
1560 \end_layout
1562 \begin_layout Subsubsection
1563 import-stream-pcm <timebase> <file>
1564 \end_layout
1566 \begin_layout Standard
1567 Import PCM (.sox, 1ch@48kHz) stream from <file>, placing it at <timebase>.
1568 \end_layout
1570 \begin_layout Subsubsection
1571 export-stream-opus <id> <file>
1572 \end_layout
1574 \begin_layout Standard
1575 Export stream <id> as opus stream to <file>.
1576  This operation is lossless.
1577 \end_layout
1579 \begin_layout Subsubsection
1580 export-stream-pcm <id> <file>
1581 \end_layout
1583 \begin_layout Standard
1584 Export stream <id> as PCM (.sox) stream to <file>.
1586 \end_layout
1588 \begin_layout Subsubsection
1589 export-superstream <file>
1590 \end_layout
1592 \begin_layout Standard
1593 Export the entiere superstream as PCM (.sox) stream to <file>.
1594 \end_layout
1596 \begin_layout Subsubsection
1597 load-collection <file>
1598 \end_layout
1600 \begin_layout Standard
1601 Load collection (if there is existing collection, unload it) from <file>
1602 \end_layout
1604 \begin_layout Subsubsection
1605 unload-collection
1606 \end_layout
1608 \begin_layout Standard
1609 Unload collection.
1610 \end_layout
1612 \begin_layout Subsubsection
1613 +tangent
1614 \end_layout
1616 \begin_layout Standard
1617 Tangent for recording voice for commentary track.
1618  While pressed, record a stream.
1619 \end_layout
1621 \begin_layout Subsection
1622 SDL Platform commands 
1623 \end_layout
1625 \begin_layout Standard
1626 The following are valid on SDL platform.
1627 \end_layout
1629 \begin_layout Subsubsection
1630 identify-key
1631 \end_layout
1633 \begin_layout Standard
1634 Asks to press a key and then identifies that (pseudo-)key.
1635 \end_layout
1637 \begin_layout Subsubsection
1638 toggle-console 
1639 \end_layout
1641 \begin_layout Standard
1642 Toggle between windowed/fullscreen console.
1643 \end_layout
1645 \begin_layout Subsubsection
1646 scroll-fullup 
1647 \end_layout
1649 \begin_layout Standard
1650 Scroll messages window as far back as it goes.
1651 \end_layout
1653 \begin_layout Subsubsection
1654 scroll-fulldown 
1655 \end_layout
1657 \begin_layout Standard
1658 Scroll messages window as far forward as it goes.
1659 \end_layout
1661 \begin_layout Subsubsection
1662 scroll-up 
1663 \end_layout
1665 \begin_layout Standard
1666 Scroll messages window back one screenful.
1667 \end_layout
1669 \begin_layout Subsubsection
1670 scroll-down 
1671 \end_layout
1673 \begin_layout Standard
1674 Scroll messages window forward one screenful.
1675 \end_layout
1677 \begin_layout Subsubsection
1678 prompt-command <command>
1679 \end_layout
1681 \begin_layout Standard
1682 Enter command prompt, with prompt prepopulated with specified command.
1683 \end_layout
1685 \begin_layout Section
1686 Settings
1687 \end_layout
1689 \begin_layout Subsection
1690 Core settings
1691 \end_layout
1693 \begin_layout Subsubsection
1694 firmwarepath
1695 \end_layout
1697 \begin_layout Standard
1698 Set where bsnes looks for firmware files.
1699  Default is 
1700 \begin_inset Quotes eld
1701 \end_inset
1704 \begin_inset Quotes erd
1705 \end_inset
1708 \end_layout
1710 \begin_layout Subsubsection
1711 target
1712 \end_layout
1714 \begin_layout Standard
1715 Set the target .
1716  Numeric, range is 0.001 to 
1717 \begin_inset Quotes eld
1718 \end_inset
1720 infinite
1721 \begin_inset Quotes erd
1722 \end_inset
1725  Default is native framerate.
1726 \end_layout
1728 \begin_layout Subsubsection
1729 savecompression
1730 \end_layout
1732 \begin_layout Standard
1733 Set save compression level (integer 0-9).
1734  Default is 7 (0 is no compression).
1735 \end_layout
1737 \begin_layout Subsubsection
1738 advance-timeout
1739 \end_layout
1741 \begin_layout Standard
1742 Set the frame advance timeout in milliseconds.
1743  Numeric integer, range is 0-999999999.
1744  Default is 500.
1745 \end_layout
1747 \begin_layout Subsubsection
1748 allow-inconsistent-saves (bsnes only)
1749 \end_layout
1751 \begin_layout Standard
1752 If true, save without synchronization.
1753  Makes games seriously unstable.
1754 \end_layout
1756 \begin_layout Subsubsection
1757 save-every-frame (bsnes only)
1758 \end_layout
1760 \begin_layout Standard
1761 If true, simulate saving on each frame.
1762  Trades off emulation accuracy for sync stability.
1763  Also needed if the movie assumes saving on each frame for rewind.
1764 \end_layout
1766 \begin_layout Subsection
1767 AVI dumper settings
1768 \end_layout
1770 \begin_layout Subsubsection
1771 avi-large
1772 \end_layout
1774 \begin_layout Standard
1775 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1776  outputs.
1777 \end_layout
1779 \begin_layout Subsubsection
1780 avi-left-border
1781 \end_layout
1783 \begin_layout Standard
1784 AVI dumper: Set the default left border thickness (unless lua overrides)
1785  for dumps.
1786  Range 0-8191.
1787  Default is 0.
1788 \end_layout
1790 \begin_layout Subsubsection
1791 avi-right-border
1792 \end_layout
1794 \begin_layout Standard
1795 AVI dumper: Set the default right border thickness (unless lua overrides)
1796  for dumps.
1797  Range 0-8191.
1798  Default is 0.
1799 \end_layout
1801 \begin_layout Subsubsection
1802 avi-top-border
1803 \end_layout
1805 \begin_layout Standard
1806 AVI dumper: Set the default top border thickness (unless lua overrides)
1807  for dumps.
1808  Range 0-8191.
1809  Default is 0.
1810 \end_layout
1812 \begin_layout Subsubsection
1813 avi-bottom-border
1814 \end_layout
1816 \begin_layout Standard
1817 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1818  for dumps.
1819  Range 0-8191.
1820  Default is 0.
1821 \end_layout
1823 \begin_layout Subsubsection
1824 avi-maxframes
1825 \end_layout
1827 \begin_layout Standard
1828 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1829  Range 0-999999999.
1830  Default is 0.
1831 \end_layout
1833 \begin_layout Subsubsection
1834 avi-compresison
1835 \end_layout
1837 \begin_layout Standard
1838 AVI dumper: Compression level (0-18).
1839 \end_layout
1841 \begin_layout Itemize
1842 Compression levels 10 and above are not compatible with stock CSCD codec.
1843 \end_layout
1845 \begin_layout Itemize
1846 Recomended level is 7.
1847 \end_layout
1849 \begin_layout Subsubsection
1850 avi-soundrate
1851 \end_layout
1853 \begin_layout Standard
1854 AVI dumper: Set method of determining the sound rate.
1855 \end_layout
1857 \begin_layout Itemize
1858 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48, 64, 88.2, 96,
1859  128, 176.4 and 192 kHz.
1860 \end_layout
1862 \begin_layout Itemize
1863 1: Round down to nearest integer.
1864 \end_layout
1866 \begin_layout Itemize
1867 2: Round up to nearest ingeter.
1868 \end_layout
1870 \begin_layout Subsection
1871 JMD options
1872 \end_layout
1874 \begin_layout Subsubsection
1875 jmd-copression
1876 \end_layout
1878 \begin_layout Standard
1879 JMD dumper: Compression level (0-9).
1880 \end_layout
1882 \begin_layout Subsection
1883 SDL platform settings
1884 \end_layout
1886 \begin_layout Subsubsection
1887 autorepeat-first-delay
1888 \end_layout
1890 \begin_layout Standard
1891 Sets the delay for first character in typematic autorepeat.
1892 \end_layout
1894 \begin_layout Subsubsection
1895 autorepeat-subsequent-delay
1896 \end_layout
1898 \begin_layout Standard
1899 Sets the delay for subsequent characters in typematic autorepeat.
1900 \end_layout
1902 \begin_layout Section
1903 Lua functions
1904 \end_layout
1906 \begin_layout Subsection
1907 Core (in main table)
1908 \end_layout
1910 \begin_layout Subsubsection
1911 print
1912 \end_layout
1914 \begin_layout Standard
1915 Print line to message console.
1916 \end_layout
1918 \begin_layout Subsubsection
1919 exec(string command)
1920 \end_layout
1922 \begin_layout Standard
1923 Run command as it was entered on the command line
1924 \end_layout
1926 \begin_layout Subsubsection
1927 utime()
1928 \end_layout
1930 \begin_layout Standard
1931 Returns two values.
1932  First is time since some epoch in seconds, the second is microseconds mod
1933  10^6 since that epoch.
1934 \end_layout
1936 \begin_layout Subsubsection
1937 emulator_ready()
1938 \end_layout
1940 \begin_layout Standard
1941 Returns true if emulator has finished booting, false if not (on_startup()
1942  will be issued later).
1943 \end_layout
1945 \begin_layout Subsubsection
1946 set_idle_timeout(number timeout)
1947 \end_layout
1949 \begin_layout Standard
1950 Set number of microseconds to block idle for.
1951  After this timeout has expired, on_idle() will be called once.
1952 \end_layout
1954 \begin_layout Subsubsection
1955 set_timer_timeout(number timeout)
1956 \end_layout
1958 \begin_layout Standard
1959 Set number of microseconds to block timer for.
1960  After this timeout has expired, on_timer() will be called once.
1961 \end_layout
1963 \begin_layout Subsubsection
1964 bus_address(number snesaddr)
1965 \end_layout
1967 \begin_layout Standard
1968 Returns virtual address corresponding to specified address on SNES bus.
1969 \end_layout
1971 \begin_layout Subsubsection
1972 loopwrapper(function fun, ...)
1973 \end_layout
1975 \begin_layout Standard
1976 Calls function fun with function and specified arguments.
1977  The function passed suspends execution until the function returned is called.
1978  Handy for linear flow control among multiple invocations of a hook.
1979  Example code:
1980 \end_layout
1982 \begin_layout LyX-Code
1983 on_paint = loopwrapper(function(wait)
1984 \end_layout
1986 \begin_deeper
1987 \begin_layout LyX-Code
1988 while true do
1989 \end_layout
1991 \begin_deeper
1992 \begin_layout LyX-Code
1993 gui.text(0, 0, 
1994 \begin_inset Quotes eld
1995 \end_inset
1997 Test!
1998 \begin_inset Quotes erd
1999 \end_inset
2002 \end_layout
2004 \begin_layout LyX-Code
2005 wait();
2006 \end_layout
2008 \end_deeper
2009 \begin_layout LyX-Code
2011 \end_layout
2013 \end_deeper
2014 \begin_layout LyX-Code
2015 end);
2016 \end_layout
2018 \begin_layout Subsubsection
2019 list_bindings([string cmd])
2020 \end_layout
2022 \begin_layout Standard
2023 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
2024  If command is specified, the table is limited to that command.
2025 \end_layout
2027 \begin_layout Subsubsection
2028 get_alias(string aname)
2029 \end_layout
2031 \begin_layout Standard
2032 Get expansion of given alias.
2033 \end_layout
2035 \begin_layout Subsubsection
2036 set_alias(string aname, string value)
2037 \end_layout
2039 \begin_layout Standard
2040 Set expansion of given alias.
2041 \end_layout
2043 \begin_layout Subsubsection
2044 create_ibind(string name, string cmd)
2045 \end_layout
2047 \begin_layout Standard
2048 Return object representing inverse binding with specified name and specified
2049  command.
2050 \end_layout
2052 \begin_layout Itemize
2053 To create press/release commands, use aliases +foo and -foo .
2054 \end_layout
2056 \begin_layout Itemize
2057 Keep the returned object around.
2058 \end_layout
2060 \begin_layout Subsection
2061 Table bit:
2062 \end_layout
2064 \begin_layout Standard
2065 Bitwise logical functions and related.
2066 \end_layout
2068 \begin_layout Subsubsection
2069 bit.none(number...) / bit.bnot(number...)
2070 \end_layout
2072 \begin_layout Standard
2073 48-bit bitwise NOT / NONE function (set bits that are set in none of the
2074  arguments).
2075 \end_layout
2077 \begin_layout Subsubsection
2078 bit.any(number...) / bit.bor(number...)
2079 \end_layout
2081 \begin_layout Standard
2082 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
2083 \end_layout
2085 \begin_layout Subsubsection
2086 bit.all(number...) / bit.band(number...)
2087 \end_layout
2089 \begin_layout Standard
2090 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
2092 \end_layout
2094 \begin_layout Subsubsection
2095 bit.parity(number...) / bit.bxor(number...)
2096 \end_layout
2098 \begin_layout Standard
2099 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
2100  of the arguments).
2101 \end_layout
2103 \begin_layout Subsubsection
2104 bit.lrotate(number base[, number amount[, number bits]])
2105 \end_layout
2107 \begin_layout Standard
2108 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
2109 \end_layout
2111 \begin_layout Subsubsection
2112 bit.rrotate(number base[, number amount[, number bits]])
2113 \end_layout
2115 \begin_layout Standard
2116 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
2117  places.
2118 \end_layout
2120 \begin_layout Subsubsection
2121 bit.lshift(number base[, number amount[, number bits]])
2122 \end_layout
2124 \begin_layout Standard
2125 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
2126  The new bits are filled with zeroes.
2127 \end_layout
2129 \begin_layout Subsubsection
2130 bit.lrshift(number base[, number amount[, number bits]])
2131 \end_layout
2133 \begin_layout Standard
2134 Shift bits-bit (max 48, default 48) number logically right by amount (default
2135  1) places.
2136  The new bits are filled with zeroes.
2137 \end_layout
2139 \begin_layout Subsubsection
2140 bit.arshift(number base[, number amount[, number bits]])
2141 \end_layout
2143 \begin_layout Standard
2144 Shift bits-bit (max 48, default 48) number arithmetically right by amount
2145  (default 1) places.
2146  The new bits are shifted in with copy of the high bit.
2147 \end_layout
2149 \begin_layout Subsubsection
2150 bit.extract(number base[, number bit0[, number bit1,...]])
2151 \end_layout
2153 \begin_layout Standard
2154 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
2155 \end_layout
2157 \begin_layout Standard
2158 Notes: 
2159 \end_layout
2161 \begin_layout Itemize
2162 Bit numbers up to 51 should work reliably (then things start falling apart
2163  due to double precision issues).
2164 \end_layout
2166 \begin_layout Itemize
2167 There are two special bit positions, true and false, standing for always
2168  set bit and always clear bit.
2169 \end_layout
2171 \begin_layout Subsubsection
2172 bit.value([number bit1[, number bit2,...]])
2173 \end_layout
2175 \begin_layout Standard
2176 Returns bitwise OR of 1 left shifted by bit1 places, 1 left shifted by bit2
2177  places and so on.
2178  As special value, nil argument is no-op.
2179 \end_layout
2181 \begin_layout Subsubsection
2182 bit.test_any(number a, number b)
2183 \end_layout
2185 \begin_layout Standard
2186 Is there a common set bit in a and b?
2187 \end_layout
2189 \begin_layout Subsubsection
2190 bit.test_all(number a, number b)
2191 \end_layout
2193 \begin_layout Standard
2194 Are all set bits in b also set in a?
2195 \end_layout
2197 \begin_layout Subsubsection
2198 bit.popcount(number a)
2199 \end_layout
2201 \begin_layout Standard
2202 Population count of a.
2203 \end_layout
2205 \begin_layout Subsubsection
2206 bit.clshift(number a, number b, [number amount,[number bits]])
2207 \end_layout
2209 \begin_layout Standard
2210 Does chained left shift on a, b by amount positions, assuming numbers to
2211  be of specified number of bits.
2212 \end_layout
2214 \begin_layout Subsubsection
2215 bit.crshift(number a, number b, [number amount,[number bits]])
2216 \end_layout
2218 \begin_layout Standard
2219 Does chained right shift on a, b by amount positions, assuming numbers to
2220  be of specified number of bits.
2221 \end_layout
2223 \begin_layout Subsubsection
2224 bit.flagdecode(number a, number bits, [string on, [string off]])
2225 \end_layout
2227 \begin_layout Standard
2228 Return string of length bits where ith character is ith character of on
2229  if bit i is on, otherwise ith character of off.
2230  Out of range reads give last character, or '*'/'-' if empty.
2231 \end_layout
2233 \begin_layout Subsubsection
2234 bit.rflagdecode(number a, number bits, [string on, [string off]])
2235 \end_layout
2237 \begin_layout Standard
2238 Like bit.flagdecode, but outputs the string in the opposite order (most significa
2239 nt bit first).
2240 \end_layout
2242 \begin_layout Subsection
2243 Table gui:
2244 \end_layout
2246 \begin_layout Standard
2247 Most of these functions can only be called in on_paint and on_video callbacks.
2248  Exceptions are noted.
2249 \end_layout
2251 \begin_layout Standard
2252 Colors are 32-bit.
2253  Bits 0-7 are the blue component, bits 8-15 are the green component, bits
2254  16-23 are the red component, bits 24-31 are alpha component (0 is fully
2255  opaque, 255 is almost transparent).
2256  -1 is the fully transparent color.
2257  Alpha values greater than 127 do work.
2258 \end_layout
2260 \begin_layout Standard
2261 Origin of coordinates is at top left corner of game display area.
2262  Left and top gaps correspond to negative coordinates.
2263 \end_layout
2265 \begin_layout Subsubsection
2266 gui.resolution()
2267 \end_layout
2269 \begin_layout Standard
2270 Returns 2-tuple (hresolution, vresolution).
2271 \end_layout
2273 \begin_layout Subsubsection
2274 gui.<class>_gap(number gap)
2275 \end_layout
2277 \begin_layout Standard
2278 Set the <class> (left, right, top, bottom) gap to specified value (max gap
2279  is 8191).
2280 \end_layout
2282 \begin_layout Subsubsection
2283 gui.text(number x, number y, string text[, number fgc[, number bgc]])
2284 \end_layout
2286 \begin_layout Standard
2287 Draw specified text on the GUI (each character cell is 8 or 16 wide and
2288  16 high).
2289  Parameters:
2290 \end_layout
2292 \begin_layout Itemize
2293 x: X-coordinate to start the drawing from (and x-coordinate at begining
2294  of the lines).
2295 \end_layout
2297 \begin_layout Itemize
2298 y: Y-coordinate to start the drawing from.
2299 \end_layout
2301 \begin_layout Itemize
2302 text: The text to draw.
2303 \end_layout
2305 \begin_layout Itemize
2306 fgc: Text color (default is 0xFFFFFF (white))
2307 \end_layout
2309 \begin_layout Itemize
2310 bgc: Background color (default is -1 (transparent))
2311 \end_layout
2313 \begin_layout Subsubsection
2314 gui.textH(number x, number y, string text[, number fgc[, number bgc]])
2315 \end_layout
2317 \begin_layout Standard
2318 Like gui.text, but draw using double-width.
2319 \end_layout
2321 \begin_layout Subsubsection
2322 gui.textV(number x, number y, string text[, number fgc[, number bgc]])
2323 \end_layout
2325 \begin_layout Standard
2326 Like gui.text, but draw using double-height.
2327 \end_layout
2329 \begin_layout Subsubsection
2330 gui.textHV(number x, number y, string text[, number fgc[, number bgc]])
2331 \end_layout
2333 \begin_layout Standard
2334 Like gui.text, but draw using double-width/double-height.
2335 \end_layout
2337 \begin_layout Subsubsection
2338 gui.rectangle(number x, number y, number width, number height[, number thickness[
2339 , number outline[, number fill]]])
2340 \end_layout
2342 \begin_layout Standard
2343 Draw rectangle on the GUI.
2344  Parameters:
2345 \end_layout
2347 \begin_layout Itemize
2348 x: X-coordinate of left edge.
2349 \end_layout
2351 \begin_layout Itemize
2352 y: Y-coordinate of upper edge.
2353 \end_layout
2355 \begin_layout Itemize
2356 width: Width of rectangle.
2357 \end_layout
2359 \begin_layout Itemize
2360 height: Height of rectangle.
2361 \end_layout
2363 \begin_layout Itemize
2364 thickness: Thickness of outline (default is 1).
2365 \end_layout
2367 \begin_layout Itemize
2368 outline: Color of outline (default is 0xFFFFFF (white))
2369 \end_layout
2371 \begin_layout Itemize
2372 fill: Color of fill (default is -1 (transparent))
2373 \end_layout
2375 \begin_layout Subsubsection
2376 gui.box(number x, number y, number width, number height[, number thickness[,
2377  number outline1[,number outline2[, number fill]]]])
2378 \end_layout
2380 \begin_layout Standard
2381 Draw rectangle with 3D effect on the GUI.
2382  Parameters:
2383 \end_layout
2385 \begin_layout Itemize
2386 x: X-coordinate of left edge.
2387 \end_layout
2389 \begin_layout Itemize
2390 y: Y-coordinate of upper edge.
2391 \end_layout
2393 \begin_layout Itemize
2394 width: Width of rectangle.
2395 \end_layout
2397 \begin_layout Itemize
2398 height: Height of rectangle.
2399 \end_layout
2401 \begin_layout Itemize
2402 thickness: Thickness of outline (default is 1).
2403 \end_layout
2405 \begin_layout Itemize
2406 outline1: First color of outline (default is 0xFFFFFF (white))
2407 \end_layout
2409 \begin_layout Itemize
2410 outline2: First color of outline (default is 0x808080 (dark gray))
2411 \end_layout
2413 \begin_layout Itemize
2414 fill: Color of fill (default is 0xC0C0C0 (light grayy))
2415 \end_layout
2417 \begin_layout Subsubsection
2418 gui.pixel(number x, number y[, number color])
2419 \end_layout
2421 \begin_layout Standard
2422 Draw one pixel on the GUI.
2423  Parameters:
2424 \end_layout
2426 \begin_layout Itemize
2427 x: X-coordinate of the pixel
2428 \end_layout
2430 \begin_layout Itemize
2431 y: Y-coordinate of the pixel
2432 \end_layout
2434 \begin_layout Itemize
2435 color: Color of the pixel (default is 0xFFFFFF (white))
2436 \end_layout
2438 \begin_layout Subsubsection
2439 gui.crosshair(number x, number y[, number length[, number color]])
2440 \end_layout
2442 \begin_layout Standard
2443 Draw a crosshair.
2444  Parameters:
2445 \end_layout
2447 \begin_layout Itemize
2448 x: X-coordinate of the crosshair
2449 \end_layout
2451 \begin_layout Itemize
2452 y: Y-coordinate of the crosshair
2453 \end_layout
2455 \begin_layout Itemize
2456 length: Length of the crosshair lines (default 10).
2457 \end_layout
2459 \begin_layout Itemize
2460 color: Color of the crosshair (default is 0xFFFFFF (white))
2461 \end_layout
2463 \begin_layout Subsubsection
2464 gui.line(number x1, number y1, number x2, number y2[, number color])
2465 \end_layout
2467 \begin_layout Standard
2468 Draw a thin line.
2469  Parameters:
2470 \end_layout
2472 \begin_layout Itemize
2473 x1: X-coordinate of one end.
2474 \end_layout
2476 \begin_layout Itemize
2477 y1: Y-coordinate of one end.
2478 \end_layout
2480 \begin_layout Itemize
2481 x2: X-coordinate of the other end.
2482 \end_layout
2484 \begin_layout Itemize
2485 y2: Y-coordinate of the other end.
2486 \end_layout
2488 \begin_layout Itemize
2489 color: Color of the line (default is 0xFFFFFF (white)).
2490 \end_layout
2492 \begin_layout Subsubsection
2493 gui.circle(number x, number y, number r[, number thick[, number border[,
2494  number fil]]])
2495 \end_layout
2497 \begin_layout Standard
2498 Draw a circle.
2499  Parameters.
2500 \end_layout
2502 \begin_layout Itemize
2503 x: X-coordinate of the center
2504 \end_layout
2506 \begin_layout Itemize
2507 y: Y-coordinate of the center
2508 \end_layout
2510 \begin_layout Itemize
2511 r: The radius of the circle
2512 \end_layout
2514 \begin_layout Itemize
2515 thick: Border thickness
2516 \end_layout
2518 \begin_layout Itemize
2519 border: Border color (default is 0xFFFFFF (white))
2520 \end_layout
2522 \begin_layout Itemize
2523 fill: Fill color (default is -1 (transparent)).
2524 \end_layout
2526 \begin_layout Subsubsection
2527 gui.bitmap_draw(number x, number y, bitmap bitmap, palette palette)
2528 \end_layout
2530 \begin_layout Standard
2531 Draw a bitmap on screen with specified palette.
2532  Parameters:
2533 \end_layout
2535 \begin_layout Itemize
2536 x: X-coordinate of left edge.
2537 \end_layout
2539 \begin_layout Itemize
2540 y: Y-coordinate of top edge.
2541 \end_layout
2543 \begin_layout Itemize
2544 bitmap: The bitmap to draw
2545 \end_layout
2547 \begin_layout Itemize
2548 palette: The palette to draw the bitmap using.
2549 \end_layout
2551 \begin_layout Subsubsection
2552 gui.bitmap_draw(number x, number y, dbitmap bitmap)
2553 \end_layout
2555 \begin_layout Standard
2556 Draw a bitmap on screen.
2557  Parameters:
2558 \end_layout
2560 \begin_layout Itemize
2561 x: X-coordinate of left edge.
2562 \end_layout
2564 \begin_layout Itemize
2565 y: Y-coordinate of top edge.
2566 \end_layout
2568 \begin_layout Itemize
2569 bitmap: The bitmap to draw
2570 \end_layout
2572 \begin_layout Subsubsection
2573 gui.palette_new()
2574 \end_layout
2576 \begin_layout Standard
2577 Returns a new palette (initially all transparent).
2578  Can be used anywhere.
2579 \end_layout
2581 \begin_layout Subsubsection
2582 gui.bitmap_new(number w, number h, boolean direct[, bool icolor])
2583 \end_layout
2585 \begin_layout Standard
2586 Returns a new bitmap/dbitmap.
2587  Can be used anywhere.
2588  Parameters:
2589 \end_layout
2591 \begin_layout Itemize
2592 w: The width of new bitmap
2593 \end_layout
2595 \begin_layout Itemize
2596 h: The height of new bitmap
2597 \end_layout
2599 \begin_layout Itemize
2600 direct: If true, the returned bitmap is dbitmap, otherwise bitmap.
2601 \end_layout
2603 \begin_layout Itemize
2604 icolor: Initital fill color (defaults to 0 on BITMAP, -1 on DBITMAP)
2605 \end_layout
2607 \begin_layout Subsubsection
2608 gui.bitmap_load(string file)
2609 \end_layout
2611 \begin_layout Standard
2612 Returns loaded bitmap/dbitmap (if bitmap, the second return value is palette
2613  for bitmap).
2614  Can be used anywhere.
2615  Parameters:
2616 \end_layout
2618 \begin_layout Itemize
2619 file: The name of file to load.
2620 \end_layout
2622 \begin_layout Subsubsection
2623 gui.palette_set(palette palette, number index, number color)
2624 \end_layout
2626 \begin_layout Standard
2627 Sets color in palette.
2628  Can be used anywhere.
2629  Parameters:
2630 \end_layout
2632 \begin_layout Itemize
2633 palette: The palette to manipulate
2634 \end_layout
2636 \begin_layout Itemize
2637 index: Index of color (0-65535).
2638 \end_layout
2640 \begin_layout Itemize
2641 color: The color value.
2642 \end_layout
2644 \begin_layout Subsubsection
2645 gui.bitmap_pset(bitmap/dbitmap bitmap, number x, number y, number color)
2646 \end_layout
2648 \begin_layout Standard
2649 Sets specified pixel in bitmap.
2650  Can be used anywhere.
2651  Parameters:
2652 \end_layout
2654 \begin_layout Itemize
2655 bitmap: The bitmap to manipulate
2656 \end_layout
2658 \begin_layout Itemize
2659 x: The x-coordinate of the pixel.
2660 \end_layout
2662 \begin_layout Itemize
2663 y: The y-coordinate of the pixel.
2664 \end_layout
2666 \begin_layout Itemize
2667 color: If bitmap is a bitmap, color index (0-65535).
2668  Otherwise color value.
2669 \end_layout
2671 \begin_layout Subsubsection
2672 gui.bitmap_size(bitmap/dbitmap bitmap)
2673 \end_layout
2675 \begin_layout Standard
2676 Get size of bitmap.
2677  Can be used anywhere.
2678  Parameters:
2679 \end_layout
2681 \begin_layout Itemize
2682 bitmap: The bitmap to query.
2683 \end_layout
2685 \begin_layout Standard
2686 The first return is the width, the second is the height.
2687 \end_layout
2689 \begin_layout Subsubsection
2690 gui.bitmap_blit(bitmap/dbitmap dest, number dx, number dy, bitmap/dbitmap
2691  src, number sx, number sy, number w, number h[, number ck])
2692 \end_layout
2694 \begin_layout Standard
2695 Blit a part of bitmap to another.
2696  Can be used anywhere.
2697  Parameters:
2698 \end_layout
2700 \begin_layout Itemize
2701 dest: Destination to blit to.
2702 \end_layout
2704 \begin_layout Itemize
2705 dx: left edge of target
2706 \end_layout
2708 \begin_layout Itemize
2709 dy: Top edge of target
2710 \end_layout
2712 \begin_layout Itemize
2713 src: The source to blit from.
2714  Must be of the same type as destination.
2715 \end_layout
2717 \begin_layout Itemize
2718 sx: left edge of source
2719 \end_layout
2721 \begin_layout Itemize
2722 sy: Top edge of source
2723 \end_layout
2725 \begin_layout Itemize
2726 w: Width of region
2727 \end_layout
2729 \begin_layout Itemize
2730 h: Height of region.
2731 \end_layout
2733 \begin_layout Itemize
2734 ck: Color key.
2735  Pixels of this color are not blitted.
2736 \end_layout
2738 \begin_deeper
2739 \begin_layout Itemize
2740 If bitmaps are bitmaps, this is color index of colorkey.
2741  Values outside range 0-65535 cause no key to be used as colorkey.
2742 \end_layout
2744 \begin_layout Itemize
2745 If bitmaps are dbitmaps, this color value of colorkey.
2746 \end_layout
2748 \begin_layout Itemize
2749 May be absent or nil for no colorkey blit.
2750 \end_layout
2752 \end_deeper
2753 \begin_layout Subsubsection
2754 gui.repaint()
2755 \end_layout
2757 \begin_layout Standard
2758 Request on_repaint() to happen as soon as possible.
2759  Can be used anywhere.
2760 \end_layout
2762 \begin_layout Subsubsection
2763 gui.subframe_update(boolean on)
2764 \end_layout
2766 \begin_layout Standard
2767 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
2768  or not happen (on=false).
2769  Can be used anywhere.
2770 \end_layout
2772 \begin_layout Subsubsection
2773 gui.screenshot(string filename)
2774 \end_layout
2776 \begin_layout Standard
2777 Write PNG screenshot of the current frame (no drawings) to specified file.
2778  Can be used anywhere.
2779 \end_layout
2781 \begin_layout Subsubsection
2782 gui.color(number r, number g, number b[, number a])
2783 \end_layout
2785 \begin_layout Standard
2786 Returns color (in notation Lua scripts use) corresponding to color (r,g,b),
2787  each component in scale 0-255.
2788  If a is specified, that is alpha (0 is fully transparent, 256(sic) is fully
2789  opaque).
2790  The default alpha is 256.
2791 \end_layout
2793 \begin_layout Subsubsection
2794 gui.status(string name, string value)
2795 \end_layout
2797 \begin_layout Standard
2798 Set status field 
2799 \begin_inset Quotes eld
2800 \end_inset
2802 L[<name>]
2803 \begin_inset Quotes erd
2804 \end_inset
2806  to <value> in status area.
2807  Can be used anywhere.
2808 \end_layout
2810 \begin_layout Subsubsection
2811 gui.rainbow(number step, number steps[, number color])
2812 \end_layout
2814 \begin_layout Standard
2815 Perform hue rotation of color <color> (default bright red), by <step> steps.
2816  The number of steps per full rotation is given by absolute value of <steps>.
2817 \end_layout
2819 \begin_layout Standard
2820 If <steps> is negative, the rotation will be counterclockwise.
2821 \end_layout
2823 \begin_layout Subsubsection
2824 gui.screenshot(string filename)
2825 \end_layout
2827 \begin_layout Standard
2828 Saves a screenshot into specified file.
2829 \end_layout
2831 \begin_layout Subsubsection
2832 gui.loadfont(string filename)
2833 \end_layout
2835 \begin_layout Standard
2836 Loads font from specified file (CUSTOMFONT object).
2837 \end_layout
2839 \begin_layout Subsubsection
2840 CUSTOMFONT(number x, number y, string text[, number fgc[, number bgc]])
2841 \end_layout
2843 \begin_layout Standard
2844 Draw string with custom font to screen.
2845  The parameters are the same as in gui.text.
2846 \end_layout
2848 \begin_layout Subsection
2849 table input
2850 \end_layout
2852 \begin_layout Standard
2853 Input handling.
2854  Only available in on_input callback.
2855 \end_layout
2857 \begin_layout Subsubsection
2858 input.get(number controller, number index)
2859 \end_layout
2861 \begin_layout Standard
2862 Read the specified index (0-11) from specified controller (0-7).
2863  Notes:
2864 \end_layout
2866 \begin_layout Itemize
2867 Uses physical controller numbering.
2868  Gamepad in port 2 is controller 4, not 1!
2869 \end_layout
2871 \begin_layout Subsubsection
2872 input.set(number controller, number index, number value)
2873 \end_layout
2875 \begin_layout Standard
2876 Write the specified index (0-11) from specified controller (0-7), storing
2877  value.
2878  Notes:
2879 \end_layout
2881 \begin_layout Itemize
2882 Uses physical controller numbering.
2883  Gamepad in port 2 is controller 4, not 1!
2884 \end_layout
2886 \begin_layout Subsubsection
2887 input.geta(number controller)
2888 \end_layout
2890 \begin_layout Standard
2891 Get input state for entiere controller.
2892  Returns 13 return values.
2893 \end_layout
2895 \begin_layout Itemize
2896 1st return value: Bitmask: bit i is set if i:th index is nonzero
2897 \end_layout
2899 \begin_layout Itemize
2900 2nd-13th return value: value of i:th index.
2901 \end_layout
2903 \begin_layout Subsubsection
2904 input.seta(number controller, number bitmask, number args...)
2905 \end_layout
2907 \begin_layout Standard
2908 Set state for entiere controller.
2909  args is up to 12 values for indices (overriding values in bitmask if specified).
2910 \end_layout
2912 \begin_layout Subsubsection
2913 input.controllertype(number controller)
2914 \end_layout
2916 \begin_layout Standard
2917 Get the type of controller as string.
2918  Valid values are:
2919 \end_layout
2921 \begin_layout Itemize
2922 gamepad
2923 \end_layout
2925 \begin_layout Itemize
2926 mouse
2927 \end_layout
2929 \begin_layout Itemize
2930 justifier
2931 \end_layout
2933 \begin_layout Itemize
2934 superscope
2935 \end_layout
2937 \begin_layout Subsubsection
2938 input.reset([number cycles])
2939 \end_layout
2941 \begin_layout Standard
2942 Execute reset.
2943  If cycles is greater than zero, do delayed reset.
2944  0 (or no value) causes immediate reset.
2945 \end_layout
2947 \begin_layout Itemize
2948 Only available with subframe flag false.
2949 \end_layout
2951 \begin_layout Subsubsection
2952 input.raw()
2953 \end_layout
2955 \begin_layout Standard
2956 Returns table of tables of all available keys and axes.
2957  The first table is indexed by key name (platform-dependent!), and the inner
2958  table has the following fields:
2959 \end_layout
2961 \begin_layout Itemize
2962 last_rawval: Last reported raw value for control.
2963 \end_layout
2965 \begin_layout Itemize
2966 ktype: Type of key (disabled, key, mouse, axis, axis-inverse, hat, pressure-m0,
2967  pressure-mp, pressure-0m, pressure-0p, pressure-pm, pressure-p0).
2968 \end_layout
2970 \begin_layout Itemize
2971 cal_left: Minimum calibration value.
2972  Only meaningful with axis and pressure types.
2973 \end_layout
2975 \begin_layout Itemize
2976 cal_center: Center calibration value.
2977  Only meaningful with axis and pressure types.
2978 \end_layout
2980 \begin_layout Itemize
2981 cal_right: Maximum calibration value.
2982  Only meaningful with axis and pressure types.
2983 \end_layout
2985 \begin_layout Itemize
2986 cal_tolerance: Dead zone tolerance.
2987  Only meaningful with axis and pressure types.
2988 \end_layout
2990 \begin_layout Subsubsection
2991 input.keyhook(string key, boolean state)
2992 \end_layout
2994 \begin_layout Standard
2995 Requests that keyhook events to be sent for key (state=true) or not sent
2996  (state=false).
2997 \end_layout
2999 \begin_layout Subsubsection
3000 input.joyget(number controller)
3001 \end_layout
3003 \begin_layout Standard
3004 Returns table for current controls for specified controller.
3005  The names of fields vary by controller type.
3006 \end_layout
3008 \begin_layout Itemize
3009 The buttons have the same name as those are referred to in other contexts
3010  in the emulator
3011 \end_layout
3013 \begin_layout Itemize
3014 The analog axes are 
3015 \begin_inset Quotes eld
3016 \end_inset
3018 xaxis
3019 \begin_inset Quotes erd
3020 \end_inset
3022  and 
3023 \begin_inset Quotes eld
3024 \end_inset
3026 yaxis
3027 \begin_inset Quotes erd
3028 \end_inset
3031 \end_layout
3033 \begin_layout Subsubsection
3034 input.joyset(number controller, table controls)
3035 \end_layout
3037 \begin_layout Standard
3038 Set the the state of specified controller to values specified in specified
3039  table.
3040 \end_layout
3042 \begin_layout Subsubsection
3043 input.lcid_to_pcid(number controller)
3044 \end_layout
3046 \begin_layout Standard
3047 Return the physical index, physical port and controller number in port for
3048  specified (1-based) logical controller.
3049 \end_layout
3051 \begin_layout Subsection
3052 Table subtitle
3053 \end_layout
3055 \begin_layout Standard
3056 Subtitle handling
3057 \end_layout
3059 \begin_layout Subsubsection
3060 subtitle.byindex(number i)
3061 \end_layout
3063 \begin_layout Standard
3064 Read the frame and length of ith subtitle.
3065  Returns nothing if not present.
3066 \end_layout
3068 \begin_layout Subsubsection
3069 subtitle.set(number f, number l, string txt)
3070 \end_layout
3072 \begin_layout Standard
3073 Set the text of subtitle.
3074 \end_layout
3076 \begin_layout Subsubsection
3077 subtitle.get(number f, number l)
3078 \end_layout
3080 \begin_layout Standard
3081 Get the text of subtitle.
3082 \end_layout
3084 \begin_layout Subsubsection
3085 subtitle.delete(number f, number l)
3086 \end_layout
3088 \begin_layout Standard
3089 Delete specified subtitle.
3090 \end_layout
3092 \begin_layout Subsection
3093 Table hostmemory
3094 \end_layout
3096 \begin_layout Standard
3097 Host memory handling (extra memory saved to savestates).
3098  Host memory starts empty.
3099 \end_layout
3101 \begin_layout Subsubsection
3102 hostmemory.read(number address)
3103 \end_layout
3105 \begin_layout Standard
3106 Reads hostmemory slot address.
3107  Slot numbers out of range return false instead of numeric.
3108 \end_layout
3110 \begin_layout Subsubsection
3111 hostmemory.write(number address, number value)
3112 \end_layout
3114 \begin_layout Standard
3115 Writes hostmemory slot with 0-255.
3116  Slot numbers out of range cause extension of host memory slot space.
3117 \end_layout
3119 \begin_layout Subsubsection
3120 hostmemory.readbyte(number address)
3121 \end_layout
3123 \begin_layout Standard
3124 Read unsigned byte (1 element) from given address.
3125  Slots out of range return false.
3126 \end_layout
3128 \begin_layout Subsubsection
3129 hostmemory.writebyte(number address, number value)
3130 \end_layout
3132 \begin_layout Standard
3133 Write unsigned byte (1 element) to given slot.
3134  Slot numbers out of range cause extension.
3135 \end_layout
3137 \begin_layout Subsubsection
3138 hostmemory.readsbyte(number address)
3139 \end_layout
3141 \begin_layout Standard
3142 Read signed byte (1 element) from given address.
3143  Slots out of range return false.
3144 \end_layout
3146 \begin_layout Subsubsection
3147 hostmemory.writesbyte(number address, number value)
3148 \end_layout
3150 \begin_layout Standard
3151 Write signed byte (1 element) to given slot.
3152  Slot numbers out of range cause extension.
3153 \end_layout
3155 \begin_layout Subsubsection
3156 hostmemory.readword(number address)
3157 \end_layout
3159 \begin_layout Standard
3160 Read unsigned word (2 elements) from given address.
3161  Slots out of range return false.
3162 \end_layout
3164 \begin_layout Subsubsection
3165 hostmemory.writeword(number address, number value)
3166 \end_layout
3168 \begin_layout Standard
3169 Write unsigned word (2 elements) to given slot.
3170  Slot numbers out of range cause extension.
3171 \end_layout
3173 \begin_layout Subsubsection
3174 hostmemory.readsword(number address)
3175 \end_layout
3177 \begin_layout Standard
3178 Read signed word (2 elements) from given address.
3179  Slots out of range return false.
3180 \end_layout
3182 \begin_layout Subsubsection
3183 hostmemory.writesword(number address, number value)
3184 \end_layout
3186 \begin_layout Standard
3187 Write signed word (2 elements) to given slot.
3188  Slot numbers out of range cause extension.
3189 \end_layout
3191 \begin_layout Subsubsection
3192 hostmemory.readdword(number address)
3193 \end_layout
3195 \begin_layout Standard
3196 Read unsigned doubleword (4 elements) from given address.
3197  Slots out of range return false.
3198 \end_layout
3200 \begin_layout Subsubsection
3201 hostmemory.writedword(number address, number value)
3202 \end_layout
3204 \begin_layout Standard
3205 Write unsigned doubleword (4 elements) to given slot.
3206  Slot numbers out of range cause extension.
3207 \end_layout
3209 \begin_layout Subsubsection
3210 hostmemory.readsdword(number address)
3211 \end_layout
3213 \begin_layout Standard
3214 Read signed doubleword (4 elements) from given address.
3215  Slots out of range return false.
3216 \end_layout
3218 \begin_layout Subsubsection
3219 hostmemory.writesdword(number address, number value)
3220 \end_layout
3222 \begin_layout Standard
3223 Write signed doubleword (4 elements) to given slot.
3224  Slot numbers out of range cause extension.
3225 \end_layout
3227 \begin_layout Subsubsection
3228 hostmemory.readqword(number address)
3229 \end_layout
3231 \begin_layout Standard
3232 Read unsigned quadword (8 elements) from given address.
3233  Slots out of range return false.
3234 \end_layout
3236 \begin_layout Subsubsection
3237 hostmemory.writeqword(number address, number value)
3238 \end_layout
3240 \begin_layout Standard
3241 Write unsigned quadword (4 elements) to given slot.
3242  Slot numbers out of range cause extension.
3243 \end_layout
3245 \begin_layout Subsubsection
3246 hostmemory.readsqword(number address)
3247 \end_layout
3249 \begin_layout Standard
3250 Read signed quadword (8 elements) from given address.
3251  Slots out of range return false.
3252 \end_layout
3254 \begin_layout Subsubsection
3255 hostmemory.writesqword(number address, number value)
3256 \end_layout
3258 \begin_layout Standard
3259 Write signed quadword (8 elements) to given slot.
3260  Slot numbers out of range cause extension.
3261 \end_layout
3263 \begin_layout Subsection
3264 Table movie
3265 \end_layout
3267 \begin_layout Standard
3268 Movie handling
3269 \end_layout
3271 \begin_layout Subsubsection
3272 movie.currentframe()
3273 \end_layout
3275 \begin_layout Standard
3276 Return number of current frame.
3277 \end_layout
3279 \begin_layout Subsubsection
3280 movie.framecount()
3281 \end_layout
3283 \begin_layout Standard
3284 Return number of frames in movie.
3285 \end_layout
3287 \begin_layout Subsubsection
3288 movie.readonly()
3289 \end_layout
3291 \begin_layout Standard
3292 Return true if in readonly mode, false if in readwrite.
3293 \end_layout
3295 \begin_layout Subsubsection
3296 movie.rerecords()
3297 \end_layout
3299 \begin_layout Standard
3300 Returns the current value of rerecord count.
3301 \end_layout
3303 \begin_layout Subsubsection
3304 movie.set_readwrite()
3305 \end_layout
3307 \begin_layout Standard
3308 Set readwrite mode (does not cause on_readwrite callback).
3309 \end_layout
3311 \begin_layout Subsubsection
3312 movie.frame_subframes(number frame)
3313 \end_layout
3315 \begin_layout Standard
3316 Count number of subframes in specified frame (frame numbers are 1-based)
3317  and return that.
3318 \end_layout
3320 \begin_layout Subsubsection
3321 movie.read_subframe(number frame, number subframe)
3322 \end_layout
3324 \begin_layout Standard
3325 Read specifed subframe in specified frame and return data as array (100
3326  elements, numbered 0-99 currently).
3327 \end_layout
3329 \begin_layout Subsubsection
3330 movie.read_rtc()
3331 \end_layout
3333 \begin_layout Standard
3334 Returns the current value of the RTC as a pair (second, subsecond).
3335 \end_layout
3337 \begin_layout Subsubsection
3338 movie.unsafe_rewind([UNSAFEREWIND state])
3339 \end_layout
3341 \begin_layout Standard
3342 Start setting point for unsafe rewind or jump to point of unsafe rewind.
3343 \end_layout
3345 \begin_layout Itemize
3346 If called without argument, causes emulator to start process of setting
3347  unsafe rewind point.
3348  When this has finished, callback on_set_rewind occurs, passing the rewind
3349  state to lua script.
3350 \end_layout
3352 \begin_layout Itemize
3353 If called with argument, causes emulator rewind to passed rewind point as
3354  soon as possible.
3355  Readwrite mode is implicitly activated.
3356 \end_layout
3358 \begin_layout Standard
3359 The following warnings apply to unsafe rewinding:
3360 \end_layout
3362 \begin_layout Itemize
3363 There are no safety checks against misuse (that's what 
3364 \begin_inset Quotes eld
3365 \end_inset
3367 unsafe
3368 \begin_inset Quotes erd
3369 \end_inset
3371  comes from)!
3372 \end_layout
3374 \begin_layout Itemize
3375 Only call rewind from timeline rewind point was set from.
3376 \end_layout
3378 \begin_layout Itemize
3379 Only call rewind from after the rewind point was set.
3380 \end_layout
3382 \begin_layout Subsection
3383 Table settings
3384 \end_layout
3386 \begin_layout Standard
3387 Routines for settings manipulation
3388 \end_layout
3390 \begin_layout Subsubsection
3391 settings.get(string name)
3392 \end_layout
3394 \begin_layout Standard
3395 Get value of setting.
3396  If setting is blank, returns false.
3397  If setting value can't be obtained, returns (nil, error message).
3398 \end_layout
3400 \begin_layout Subsubsection
3401 settings.set(string name, string value)
3402 \end_layout
3404 \begin_layout Standard
3405 Set value of setting.
3406  If setting can't be set, returns (nil, error message).
3407 \end_layout
3409 \begin_layout Subsubsection
3410 settings.is_set(string name)
3411 \end_layout
3413 \begin_layout Standard
3414 Returns if setting is set.
3415  If setting does not exist, returns (nil, error message).
3416 \end_layout
3418 \begin_layout Subsubsection
3419 settings.blank(string name)
3420 \end_layout
3422 \begin_layout Standard
3423 Blanks a setting and returns true.
3424  If setting can't be blanked, returns (nil, error message).
3425 \end_layout
3427 \begin_layout Subsection
3428 Table memory
3429 \end_layout
3431 \begin_layout Standard
3432 Contains various functions for managing memory
3433 \end_layout
3435 \begin_layout Subsubsection
3436 memory.vma_count()
3437 \end_layout
3439 \begin_layout Standard
3440 Returns the number of VMAs
3441 \end_layout
3443 \begin_layout Subsubsection
3444 memory.read_vma(number index)
3445 \end_layout
3447 \begin_layout Standard
3448 Reads the specified VMA (indices start from zero).
3449  Trying to read invalid VMA gives nil.
3450  The read VMA is table with the following fields:
3451 \end_layout
3453 \begin_layout Itemize
3454 region_name (string): The readable name of the VMA
3455 \end_layout
3457 \begin_layout Itemize
3458 baseaddr (number): Base address of the VMA
3459 \end_layout
3461 \begin_layout Itemize
3462 lastaddr (number): Last address in the VMA.
3463 \end_layout
3465 \begin_layout Itemize
3466 size (number): The size of VMA in bytes.
3467 \end_layout
3469 \begin_layout Itemize
3470 readonly (boolean): True of the VMA corresponds to ROM.
3471 \end_layout
3473 \begin_layout Itemize
3474 iospace (boolean): True if the VMA is I/O space.
3475 \end_layout
3477 \begin_layout Itemize
3478 native_endian (boolean): True if the VMA has native endian as opposed to
3479  little endian.
3480 \end_layout
3482 \begin_layout Subsubsection
3483 memory.find_vma(number address)
3484 \end_layout
3486 \begin_layout Standard
3487 Finds the VMA containing specified address.
3488  Returns table in the same format as read_vma or nil if not found.
3489 \end_layout
3491 \begin_layout Subsubsection
3492 memory.readbyte(number address)
3493 \end_layout
3495 \begin_layout Standard
3496 Reads the specified address as unsigned byte and returns the result.
3497 \end_layout
3499 \begin_layout Subsubsection
3500 memory.readsbyte(number address)
3501 \end_layout
3503 \begin_layout Standard
3504 Reads the specified address as signed byte and returns the result.
3505 \end_layout
3507 \begin_layout Subsubsection
3508 memory.writebyte(number address, number value)
3509 \end_layout
3511 \begin_layout Standard
3512 Writes the specified value (negative values undergo 2's complement) to specified
3513  address (as a byte).
3514 \end_layout
3516 \begin_layout Subsubsection
3517 memory.readword(number address)
3518 \end_layout
3520 \begin_layout Standard
3521 Reads the specified address as unsigned word and returns the result.
3522 \end_layout
3524 \begin_layout Subsubsection
3525 memory.readsword(number address)
3526 \end_layout
3528 \begin_layout Standard
3529 Reads the specified address as signed word and returns the result.
3530 \end_layout
3532 \begin_layout Subsubsection
3533 memory.writeword(number address, number value)
3534 \end_layout
3536 \begin_layout Standard
3537 Writes the specified value (negative values undergo 2's complement) to specified
3538  address (as a word).
3539 \end_layout
3541 \begin_layout Subsubsection
3542 memory.readdword(number address)
3543 \end_layout
3545 \begin_layout Standard
3546 Reads the specified address as unsigned doubleword and returns the result.
3547 \end_layout
3549 \begin_layout Subsubsection
3550 memory.readsdword(number address)
3551 \end_layout
3553 \begin_layout Standard
3554 Reads the specified address as signed doubleword and returns the result.
3555 \end_layout
3557 \begin_layout Subsubsection
3558 memory.writedword(number address, number value)
3559 \end_layout
3561 \begin_layout Standard
3562 Writes the specified value (negative values undergo 2's complement) to specified
3563  address (as a doubleword).
3564 \end_layout
3566 \begin_layout Subsubsection
3567 memory.readqword(number address)
3568 \end_layout
3570 \begin_layout Standard
3571 Reads the specified address as unsigned quadword and returns the result.
3572 \end_layout
3574 \begin_layout Subsubsection
3575 memory.readsqword(number address)
3576 \end_layout
3578 \begin_layout Standard
3579 Reads the specified address as signed quadword and returns the result.
3580 \end_layout
3582 \begin_layout Subsubsection
3583 memory.writeqword(number address, number value)
3584 \end_layout
3586 \begin_layout Standard
3587 Writes the specified value (negative values undergo 2's complement) to specified
3588  address (as a quadword).
3589 \end_layout
3591 \begin_layout Subsubsection
3592 memory.hash_region(number base, number size)
3593 \end_layout
3595 \begin_layout Standard
3596 Hash specified number of bytes starting from specified address and return
3597  the SHA-256.
3598 \end_layout
3600 \begin_layout Subsubsection
3601 memory.hash_state()
3602 \end_layout
3604 \begin_layout Standard
3605 Hash the current system state.
3606  Mainly useful for debugging savestates.
3607 \end_layout
3609 \begin_layout Subsubsection
3610 memory.readregion(number base, number size)
3611 \end_layout
3613 \begin_layout Standard
3614 Read a region of memory.
3615 \end_layout
3617 \begin_layout Itemize
3618 Warning: If the region crosses VMA boundary, the results are undefined.
3619 \end_layout
3621 \begin_layout Subsubsection
3622 memory.map<type>([number base, number size])
3623 \end_layout
3625 \begin_layout Standard
3626 Returns a table mapping specified memory aperture for read/write.
3627  If parameters are omitted, entiere map space is the aperture.
3628 \end_layout
3630 \begin_layout Itemize
3631 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
3632 \end_layout
3634 \begin_layout Subsubsection
3635 memory.writeregion(number base, number size, table data)
3636 \end_layout
3638 \begin_layout Standard
3639 Write a region of memory.
3640 \end_layout
3642 \begin_layout Itemize
3643 Warning: If the region crosses VMA boundary, the results are undefined.
3644 \end_layout
3646 \begin_layout Subsubsection
3647 memory.map_structure()
3648 \end_layout
3650 \begin_layout Standard
3651 Returns a new mapping structure (MMAP_STRUCT)
3652 \end_layout
3654 \begin_layout Subsubsection
3655 MMAP_STRUCT(string key, number address, string type)
3656 \end_layout
3658 \begin_layout Standard
3659 Bind key in mmap structure to specified address with specified type.
3660 \end_layout
3662 \begin_layout Itemize
3663 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
3664 \end_layout
3666 \begin_layout Subsubsection
3667 memory.read_expr(string expr)
3668 \end_layout
3670 \begin_layout Standard
3671 Evaluate specified watch expression and return result
3672 \end_layout
3674 \begin_layout Subsection
3675 Table subtitle
3676 \end_layout
3678 \begin_layout Standard
3679 Contains functions for manipulating subtitles.
3680 \end_layout
3682 \begin_layout Subsubsection
3683 subtitle.byindex(number index)
3684 \end_layout
3686 \begin_layout Standard
3687 Get (basetime, length) pair of specified subtitle index or nothing if index
3688  isn't valid.
3689 \end_layout
3691 \begin_layout Subsubsection
3692 subtitle.get(number basetime, number length)
3693 \end_layout
3695 \begin_layout Standard
3696 Read the specified subtitle.
3697  Returns 
3698 \begin_inset Quotes eld
3699 \end_inset
3702 \begin_inset Quotes erd
3703 \end_inset
3705  if the subtitle does not exist.
3706 \end_layout
3708 \begin_layout Subsubsection
3709 subtitle.set(number basetime, number length, string content)
3710 \end_layout
3712 \begin_layout Standard
3713 Set the specified subtitle.
3714 \end_layout
3716 \begin_layout Subsubsection
3717 subtitle.deltete(number basetime, number length)
3718 \end_layout
3720 \begin_layout Standard
3721 Delete the specified subtitle.
3722 \end_layout
3724 \begin_layout Subsection
3725 Table _SYSTEM
3726 \end_layout
3728 \begin_layout Standard
3729 Contains copy of global variables from time of Lua initialization.
3730  Non-writeable.
3731 \end_layout
3733 \begin_layout Subsection
3734 Callbacks
3735 \end_layout
3737 \begin_layout Standard
3738 Various callbacks to Lua that can occur.
3739 \end_layout
3741 \begin_layout Subsubsection
3742 Callback: on_paint(bool not_synth)
3743 \end_layout
3745 \begin_layout Standard
3746 Called when screen is being painted.
3747  Any gui.* calls requiring graphic context draw on the screen.
3748 \end_layout
3750 \begin_layout Standard
3751 not_synth is true if this hook is being called in response to received frame,
3752  false otherwise.
3753 \end_layout
3755 \begin_layout Subsubsection
3756 Callback: on_video()
3757 \end_layout
3759 \begin_layout Standard
3760 Called when video dump frame is being painted.
3761  Any gui.* calls requiring graphic context draw on the video.
3762 \end_layout
3764 \begin_layout Subsubsection
3765 Callback: on_frame_emulated()
3766 \end_layout
3768 \begin_layout Standard
3769 Called when emulating frame has completed and on_paint()/on_video() calls
3770  are about to be issued.
3771 \end_layout
3773 \begin_layout Subsubsection
3774 Callback: on_frame()
3775 \end_layout
3777 \begin_layout Standard
3778 Called on each starting whole frame.
3779 \end_layout
3781 \begin_layout Subsubsection
3782 Callback: on_startup()
3783 \end_layout
3785 \begin_layout Standard
3786 Called when the emulator is starting (lsnes.rc and --run files has been run).
3787 \end_layout
3789 \begin_layout Subsubsection
3790 Callback: on_rewind()
3791 \end_layout
3793 \begin_layout Standard
3794 Called when rewind movie to beginning has completed.
3795 \end_layout
3797 \begin_layout Subsubsection
3798 Callback: on_pre_load(string name)
3799 \end_layout
3801 \begin_layout Standard
3802 Called just before savestate/movie load occurs (note: loads are always delayed,
3803  so this occurs even when load was initiated by lua).
3804 \end_layout
3806 \begin_layout Subsubsection
3807 Callback: on_err_load(string name)
3808 \end_layout
3810 \begin_layout Standard
3811 Called if loadstate goes wrong.
3812 \end_layout
3814 \begin_layout Subsubsection
3815 Callback: on_post_load(string name, boolean was_savestate)
3816 \end_layout
3818 \begin_layout Standard
3819 Called on successful loadstate.
3820  was_savestate gives if this was a savestate or a movie.
3821 \end_layout
3823 \begin_layout Subsubsection
3824 Callback: on_pre_save(string name, boolean is_savestate)
3825 \end_layout
3827 \begin_layout Standard
3828 Called just before savestate save occurs (note: movie saves are synchronous
3829  and won't trigger these callbacks if called from Lua).
3830 \end_layout
3832 \begin_layout Subsubsection
3833 Callback: on_err_save(string name)
3834 \end_layout
3836 \begin_layout Standard
3837 Called if savestate goes wrong.
3838 \end_layout
3840 \begin_layout Subsubsection
3841 Callback: on_post_save(string name, boolean is_savestate)
3842 \end_layout
3844 \begin_layout Standard
3845 Called on successful savaestate.
3846  is_savestate gives if this was a savestate or a movie.
3847 \end_layout
3849 \begin_layout Subsubsection
3850 Callback: on_quit()
3851 \end_layout
3853 \begin_layout Standard
3854 Called when emulator is shutting down.
3855 \end_layout
3857 \begin_layout Subsubsection
3858 Callback: on_input(boolean subframe)
3859 \end_layout
3861 \begin_layout Standard
3862 Called when emulator is just sending input to bsnes core.
3863  Warning: This is called even in readonly mode, but the results are ignored.
3864 \end_layout
3866 \begin_layout Subsubsection
3867 Callback: on_reset()
3868 \end_layout
3870 \begin_layout Standard
3871 Called when SNES is reset.
3872 \end_layout
3874 \begin_layout Subsubsection
3875 Callback: on_readwrite()
3876 \end_layout
3878 \begin_layout Standard
3879 Called when moving into readwrite mode as result of 
3880 \begin_inset Quotes eld
3881 \end_inset
3883 set-rwmode
3884 \begin_inset Quotes erd
3885 \end_inset
3887  command (note: moving to rwmode by Lua won't trigger this, as per recursive
3888  entry protection).
3889 \end_layout
3891 \begin_layout Subsubsection
3892 Callback: on_snoop(number port, number controller, number index, number
3893  value)
3894 \end_layout
3896 \begin_layout Standard
3897 Called each time bsnes asks for input.
3898  The value is the final value to be sent to bsnes core (readonly mode, autohold
3899  and autofire have been taken into account).
3900  Might be useful when translating movies to format suitable for console
3901  verification.
3902  Note: There is no way to modify the value to be sent.
3903 \end_layout
3905 \begin_layout Subsubsection
3906 Callback: on_keyhook(string keyname, table state)
3907 \end_layout
3909 \begin_layout Standard
3910 Sent when key that has keyhook events requested changes state.
3911  Keyname is name of the key (group) and state is the state (same kind as
3912  table values in input.raw).
3913 \end_layout
3915 \begin_layout Subsubsection
3916 Callback: on_idle()
3917 \end_layout
3919 \begin_layout Standard
3920 Called when requested by set_idle_timeout(), the timeout has expired and
3921  emulator is waiting.
3922 \end_layout
3924 \begin_layout Subsubsection
3925 Callback: on_timer()
3926 \end_layout
3928 \begin_layout Standard
3929 Called when requested by set_idle_timeout() and the timeout has expired
3930  (regardless if emulator is waiting).
3931 \end_layout
3933 \begin_layout Subsubsection
3934 Callback: on_set_rewind(UNSAFEREWIND r)
3935 \end_layout
3937 \begin_layout Standard
3938 Called when unsafe rewind object has been constructed.
3939 \end_layout
3941 \begin_layout Subsubsection
3942 Callback: on_pre_rewind() 
3943 \end_layout
3945 \begin_layout Standard
3946 Called just before unsafe rewind is about to occur.
3947 \end_layout
3949 \begin_layout Subsubsection
3950 Callback: on_post_rewind() 
3951 \end_layout
3953 \begin_layout Standard
3954 Called just after unsafe rewind has occured.
3955 \end_layout
3957 \begin_layout Section
3958 Movie editor
3959 \end_layout
3961 \begin_layout Itemize
3962 The editor edits in-memory movie.
3963 \end_layout
3965 \begin_layout Itemize
3966 Because past can't be edited and readwrite mode doesn't allow future, editing
3967  only works in 
3968 \emph on
3969 read only
3970 \emph default
3971  mode.
3972 \end_layout
3974 \begin_layout Itemize
3975 Keyboard triggers the normal hotkeys and bindings.
3976 \end_layout
3978 \begin_layout Subsection
3979 Left button actions
3980 \end_layout
3982 \begin_layout Itemize
3983 Clicking on cell in future (indicated by lack of redish background) toggles
3984  it (if it is a button) or prompts for a value (if it is an axis)
3985 \end_layout
3987 \begin_layout Itemize
3988 Dragging vertically toggles sequence of buttons or changes a sequence of
3989  axis values.
3990 \end_layout
3992 \begin_layout Subsection
3993 Right button actions
3994 \end_layout
3996 \begin_layout Standard
3997 The right mouse button pops up a context-sensitive menu:
3998 \end_layout
4000 \begin_layout Itemize
4001 Toggle <something>: Toggle this button
4002 \end_layout
4004 \begin_layout Itemize
4005 Change <something>: Change this axis value
4006 \end_layout
4008 \begin_layout Itemize
4009 Insert frame after: Insert a frame after this frame
4010 \end_layout
4012 \begin_layout Itemize
4013 Append frame: Append a frame to movie
4014 \end_layout
4016 \begin_layout Itemize
4017 Append frames: Append specified number of frames to movie
4018 \end_layout
4020 \begin_layout Itemize
4021 Delete frame: Delete this frame
4022 \end_layout
4024 \begin_layout Itemize
4025 Delete subframe: Delete this subframe
4026 \end_layout
4028 \begin_layout Itemize
4029 Truncate movie: Delete this subframe and everything after it.
4030 \end_layout
4032 \begin_layout Itemize
4033 Scroll to frame: Prompt for a frame and scroll the display to that frame.
4034 \end_layout
4036 \begin_layout Itemize
4037 Scroll to current frame: Scroll the display to current position
4038 \end_layout
4040 \begin_layout Itemize
4041 Run to frame: Prompts for frame and runs the emulation to that frame.
4042 \end_layout
4044 \begin_layout Itemize
4045 Change number of lines visible: Change the height of the movie display (1
4046  to 255).
4047 \end_layout
4049 \begin_layout Itemize
4050 Lock scroll to playback: While playing back or rewinding movies, the display
4051  will follow if enabled.
4052 \end_layout
4054 \begin_layout Section
4055 Memory watch expression syntax
4056 \end_layout
4058 \begin_layout Standard
4059 Memory watch expressions are in RPN (Reverse Polish Notation).
4060  At the end of expression, the top entry on stack is taken as the final
4061  result.
4062 \end_layout
4064 \begin_layout Standard
4065 Notations:
4066 \end_layout
4068 \begin_layout Itemize
4069 Evaluation order is strictly left to right.
4070 \end_layout
4072 \begin_layout Itemize
4073 a is the entry on top of stack
4074 \end_layout
4076 \begin_layout Itemize
4077 b is the entry immediately below top of stack
4078 \end_layout
4080 \begin_layout Itemize
4081 ; separates values to be pushed (no intermediate pop).
4082 \end_layout
4084 \begin_layout Itemize
4085 After end of element, all used stack slots are popped and all results are
4086  pushed.
4087 \end_layout
4089 \begin_layout Itemize
4090 When pushing multiple values, the pushes occur in order shown.
4091 \end_layout
4093 \begin_layout Standard
4094 The following operators are available:
4095 \end_layout
4097 \begin_layout Itemize
4098 + : a + b
4099 \end_layout
4101 \begin_layout Itemize
4102 - : a - b
4103 \end_layout
4105 \begin_layout Itemize
4106 * : a * b
4107 \end_layout
4109 \begin_layout Itemize
4110 / : a / b
4111 \end_layout
4113 \begin_layout Itemize
4114 % : a % b
4115 \end_layout
4117 \begin_layout Itemize
4118 a : atan(a)
4119 \end_layout
4121 \begin_layout Itemize
4122 b : read_signed_byte(a)
4123 \end_layout
4125 \begin_layout Itemize
4126 c : cos(a)
4127 \end_layout
4129 \begin_layout Itemize
4130 d : read_signed_dword(a)
4131 \end_layout
4133 \begin_layout Itemize
4134 i : quotent(a / b)
4135 \end_layout
4137 \begin_layout Itemize
4138 p :
4139 \begin_inset Formula $\pi$
4140 \end_inset
4143 \end_layout
4145 \begin_layout Itemize
4146 q : read_signed_qword(a)
4147 \end_layout
4149 \begin_layout Itemize
4150 r : sqrt(a)
4151 \end_layout
4153 \begin_layout Itemize
4154 s : sin(a)
4155 \end_layout
4157 \begin_layout Itemize
4158 t : tan(a)
4159 \end_layout
4161 \begin_layout Itemize
4162 u : a; a
4163 \end_layout
4165 \begin_layout Itemize
4166 w : read_signed_word(a)
4167 \end_layout
4169 \begin_layout Itemize
4170 A : atan2(a, b)
4171 \end_layout
4173 \begin_layout Itemize
4174 B : read_unsigned_byte(a)
4175 \end_layout
4177 \begin_layout Itemize
4178 C<number>z : Push number <number> to stack.
4179 \end_layout
4181 \begin_layout Itemize
4182 D : read_unsigned_dword(a)
4183 \end_layout
4185 \begin_layout Itemize
4186 C0x<number>z : Push number <number> (hexadecimal) to stack.
4187 \end_layout
4189 \begin_layout Itemize
4190 H<digit> : Set hexadecimal mode with specified number of digits (use A-G
4191  for 10-16 digits).
4192 \end_layout
4194 \begin_layout Itemize
4195 Q : read_unsigned_qword(a)
4196 \end_layout
4198 \begin_layout Itemize
4199 R<digit> : round a to <digit> digits.
4200 \end_layout
4202 \begin_layout Itemize
4203 W : read_unsigned_word(a)
4204 \end_layout
4206 \begin_layout Subsection
4207 Example:
4208 \end_layout
4210 \begin_layout Standard
4211 C0x007e0878zWC0x007e002czW-
4212 \end_layout
4214 \begin_layout Enumerate
4215 Push value 0x7e0878 on top of stack (C0x007e0878z).
4216 \end_layout
4218 \begin_layout Enumerate
4219 Pop the value on top of stack (0x7e0878), read word value at that address
4220  and push the result,call it x1 (W).
4221 \end_layout
4223 \begin_layout Enumerate
4224 Push value 0x7e002c on top of stack (C0x007e002cz).
4225 \end_layout
4227 \begin_layout Enumerate
4228 Pop the value on top of stack (0x7e002c), read word value at that address
4229  and push the result,call it x2 (W).
4230 \end_layout
4232 \begin_layout Enumerate
4233 Pop the two top numbers on stack, x1 and x2, substract x1 from x2 and push
4234  x2 - x1 (-).
4235 \end_layout
4237 \begin_layout Enumerate
4238 Since the expression ends, the final memory watch result is the top one
4239  on stack, which is x2 - x1.
4240 \end_layout
4242 \begin_layout Section
4243 Modifier and key names:
4244 \end_layout
4246 \begin_layout Subsection
4247 SDL Platform
4248 \end_layout
4250 \begin_layout Subsubsection
4251 Modifier names
4252 \end_layout
4254 \begin_layout Standard
4255 Following modifier names are known:
4256 \end_layout
4258 \begin_layout Itemize
4259 ctrl, lctrl, rctrl: Control keys
4260 \end_layout
4262 \begin_layout Itemize
4263 alt, lalt, ralt: ALT keys.
4264 \end_layout
4266 \begin_layout Itemize
4267 shift, lshift, rshift: Shift keys.
4268 \end_layout
4270 \begin_layout Itemize
4271 meta, lmeta, rmeta: Meta keys.
4272 \end_layout
4274 \begin_layout Itemize
4275 num, caps: Numlock/Capslock (these are sticky!)
4276 \end_layout
4278 \begin_layout Itemize
4279 mode: Mode select.
4280 \end_layout
4282 \begin_layout Subsubsection
4283 Key names
4284 \end_layout
4286 \begin_layout Standard
4287 Following key names are known:
4288 \end_layout
4290 \begin_layout Itemize
4291 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
4292  hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
4293  comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
4294  less, equals, greater, question, at, leftbracket, backslash, rightbracket,
4295  caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
4296  o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
4297  world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
4298  world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
4299  world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
4300  world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
4301  world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
4302  world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
4303  world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
4304  world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
4305  world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
4306  world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
4307  world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
4308  world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
4309  kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
4310  kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
4311  pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
4312  f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
4313  lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
4314  break, menu, power, euro, undo
4315 \end_layout
4317 \begin_layout Itemize
4318 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
4319  hardware-dependent scan code of <n> (useful to bind those keys that don't
4320  have symbolic names).
4321 \end_layout
4323 \begin_layout Subsubsection
4324 Joystick pseudo-keys:
4325 \end_layout
4327 \begin_layout Itemize
4328 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
4329 \end_layout
4331 \begin_layout Itemize
4332 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
4333 \end_layout
4335 \begin_layout Itemize
4336 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
4337 \end_layout
4339 \begin_layout Itemize
4340 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
4341 \end_layout
4343 \begin_layout Itemize
4344 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
4345 \end_layout
4347 \begin_layout Itemize
4348 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
4349  position (axis modes axis and axis_inverse).
4350 \end_layout
4352 \begin_layout Itemize
4353 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
4354  position (axis modes axis and axis_inverse).
4355 \end_layout
4357 \begin_layout Itemize
4358 joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis> pressure (axis
4359  modes pressure_*).
4360 \end_layout
4362 \begin_layout Subsubsection
4363 Special buttons:
4364 \end_layout
4366 \begin_layout Itemize
4367 Escape: Enter/Exit Command mode, cancel modal dialogs.
4368 \end_layout
4370 \begin_layout Itemize
4371 Return (also KPEnter): Execute command, ok modal dialog.
4372 \end_layout
4374 \begin_layout Itemize
4375 Pgup/Up (also KP8/9 if no num lock, CTRL+P; command mode): Previous command
4376  in command history
4377 \end_layout
4379 \begin_layout Itemize
4380 Pgdn/Down(also KP2/3 if no num lock, CTRL+N; command mode): Next command
4381  in command history
4382 \end_layout
4384 \begin_layout Itemize
4385 Home (also KP7 if no num lock, CTRL+A; command mode): Beginning of command.
4386 \end_layout
4388 \begin_layout Itemize
4389 End (also KP1 if no num lock, CTRL+E; command mode): End of command.
4390 \end_layout
4392 \begin_layout Itemize
4393 Left (also KP4 if no num lock, CTRL+B; command mode): Move cursor left.
4394 \end_layout
4396 \begin_layout Itemize
4397 Right (also KP6 if no num lock, CTRL+F; command mode): Move cursor right.
4398 \end_layout
4400 \begin_layout Itemize
4401 Delete (also KP.
4402  if no num lock; command mode): Delete character to right of cursor.
4403 \end_layout
4405 \begin_layout Itemize
4406 Insert (also KP0 if no num lock; command mode): Toggle between insert /
4407  overwrite modes.
4408 \end_layout
4410 \begin_layout Itemize
4411 Backspace (command mode): Delete character to left of cursor.
4412 \end_layout
4414 \begin_layout Itemize
4415 CTRL+LEFT (also ALT+B; command mode): Previous word.
4416 \end_layout
4418 \begin_layout Itemize
4419 CTRL+RIGHT (also ALT+F; command mode): Next word.
4420 \end_layout
4422 \begin_layout Itemize
4423 ALT+D (also CTRL+W; command mode): Delete word.
4424 \end_layout
4426 \begin_layout Itemize
4427 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
4428 \end_layout
4430 \begin_layout Subsection
4431 wxWidgets platform
4432 \end_layout
4434 \begin_layout Subsubsection
4435 Modifier names:
4436 \end_layout
4438 \begin_layout Standard
4439 Following modifier names are known:
4440 \end_layout
4442 \begin_layout Itemize
4444 \end_layout
4446 \begin_layout Itemize
4447 ctrl
4448 \end_layout
4450 \begin_layout Itemize
4451 shift 
4452 \end_layout
4454 \begin_layout Itemize
4455 meta
4456 \end_layout
4458 \begin_layout Itemize
4459 cmd (Mac OS X only)
4460 \end_layout
4462 \begin_layout Subsubsection
4463 Key names:
4464 \end_layout
4466 \begin_layout Standard
4467 Following key names are known:
4468 \end_layout
4470 \begin_layout Itemize
4471 back, tab, return, escape, space, exclaim, quotedbl, hash, dollar, percent,
4472  ampersand, quote, leftparen, rightparen, asterisk, plus, comma, minus,
4473  period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon, less, equals,
4474  greater, question, at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
4475  q, r, s, t, u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
4476  underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
4477  q, r, s, t, u, v, w, x, y, z, leftcurly, pipe, rightcurly, tilde, delete,
4478  start, lbutton, rbutton, cancel, mbutton, clear, shift, alt, control, menu,
4479  pause, capital, end, home, lefT, up, right, down, select, print, execute,
4480  snapshot, insert, help, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5,
4481  numpad6, numpad7, numpad8, numpad9, multiply, add, separator, subtract,
4482  decimal, divide, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13,
4483  f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, numlock, scroll,
4484  pageup, pagedown, numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
4485  numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up, numpad_right,
4486  numpad_down, numpad_pageup, numpad_pagedown, numpad_end, numpad_begin,
4487  numpad_insert, numpad_delete, numpad_equal, numpad_multiply, numpad_add,
4488  numpad_separator, numpad_subtract, numpad_decimal, numpad_divide, windows_left,
4489  windows_right, windows_menu, command, special1, special2, special3, special4,
4490  special5, special6, special7, special8, special9, special10, special11,
4491  special12, special13, special14, special15, special16, special17, special18,
4492  special19, special20
4493 \end_layout
4495 \begin_layout Section
4496 Movie file format
4497 \end_layout
4499 \begin_layout Standard
4500 Movie file is .zip archive in itself, normal ZIP archive tools work on it
4501  (note: If you recompress it, do not use compression methods other than
4502  store and deflate and especially do not use encryption of any kind).
4503 \end_layout
4505 \begin_layout Subsection
4506 Detecting clean start/SRAM/Savestate
4507 \end_layout
4509 \begin_layout Itemize
4510 If file has member 
4511 \begin_inset Quotes eld
4512 \end_inset
4514 savestate
4515 \begin_inset Quotes erd
4516 \end_inset
4518  it is savestate, otherwise:
4519 \end_layout
4521 \begin_layout Itemize
4522 If file has members with names starting 
4523 \begin_inset Quotes eld
4524 \end_inset
4526 moviesram.
4527 \begin_inset Quotes erd
4528 \end_inset
4530  it is movie starting from SRAM, otherwise:
4531 \end_layout
4533 \begin_layout Itemize
4534 It is movie starting from clear state.
4535 \end_layout
4537 \begin_layout Subsection
4538 Member: gametype
4539 \end_layout
4541 \begin_layout Standard
4542 Type of game ROM and region (as one line).
4543  Valid values are:
4544 \end_layout
4546 \begin_layout Standard
4547 \begin_inset Tabular
4548 <lyxtabular version="3" rows="8" columns="3">
4549 <features tabularvalignment="middle">
4550 <column alignment="center" valignment="top" width="0">
4551 <column alignment="center" valignment="top" width="0">
4552 <column alignment="center" valignment="top" width="0">
4553 <row>
4554 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4555 \begin_inset Text
4557 \begin_layout Plain Layout
4558 Value
4559 \end_layout
4561 \end_inset
4562 </cell>
4563 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4564 \begin_inset Text
4566 \begin_layout Plain Layout
4567 System
4568 \end_layout
4570 \end_inset
4571 </cell>
4572 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4573 \begin_inset Text
4575 \begin_layout Plain Layout
4576 Region
4577 \end_layout
4579 \end_inset
4580 </cell>
4581 </row>
4582 <row>
4583 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4584 \begin_inset Text
4586 \begin_layout Plain Layout
4587 snes_pal
4588 \end_layout
4590 \end_inset
4591 </cell>
4592 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4593 \begin_inset Text
4595 \begin_layout Plain Layout
4596 Super NES
4597 \end_layout
4599 \end_inset
4600 </cell>
4601 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4602 \begin_inset Text
4604 \begin_layout Plain Layout
4606 \end_layout
4608 \end_inset
4609 </cell>
4610 </row>
4611 <row>
4612 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4613 \begin_inset Text
4615 \begin_layout Plain Layout
4616 sgb_pal
4617 \end_layout
4619 \end_inset
4620 </cell>
4621 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4622 \begin_inset Text
4624 \begin_layout Plain Layout
4625 Super Game Boy
4626 \end_layout
4628 \end_inset
4629 </cell>
4630 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4631 \begin_inset Text
4633 \begin_layout Plain Layout
4635 \end_layout
4637 \end_inset
4638 </cell>
4639 </row>
4640 <row>
4641 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4642 \begin_inset Text
4644 \begin_layout Plain Layout
4645 snes_ntsc
4646 \end_layout
4648 \end_inset
4649 </cell>
4650 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4651 \begin_inset Text
4653 \begin_layout Plain Layout
4654 Super NES
4655 \end_layout
4657 \end_inset
4658 </cell>
4659 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4660 \begin_inset Text
4662 \begin_layout Plain Layout
4663 NTSC
4664 \end_layout
4666 \end_inset
4667 </cell>
4668 </row>
4669 <row>
4670 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4671 \begin_inset Text
4673 \begin_layout Plain Layout
4674 sgb_ntsc
4675 \end_layout
4677 \end_inset
4678 </cell>
4679 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4680 \begin_inset Text
4682 \begin_layout Plain Layout
4683 Super Game Boy
4684 \end_layout
4686 \end_inset
4687 </cell>
4688 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4689 \begin_inset Text
4691 \begin_layout Plain Layout
4692 NTSC
4693 \end_layout
4695 \end_inset
4696 </cell>
4697 </row>
4698 <row>
4699 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4700 \begin_inset Text
4702 \begin_layout Plain Layout
4704 \end_layout
4706 \end_inset
4707 </cell>
4708 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4709 \begin_inset Text
4711 \begin_layout Plain Layout
4712 BS-X (non-slotted)
4713 \end_layout
4715 \end_inset
4716 </cell>
4717 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4718 \begin_inset Text
4720 \begin_layout Plain Layout
4721 NTSC
4722 \end_layout
4724 \end_inset
4725 </cell>
4726 </row>
4727 <row>
4728 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4729 \begin_inset Text
4731 \begin_layout Plain Layout
4732 bsxslotted
4733 \end_layout
4735 \end_inset
4736 </cell>
4737 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4738 \begin_inset Text
4740 \begin_layout Plain Layout
4741 BS-X (slotted)
4742 \end_layout
4744 \end_inset
4745 </cell>
4746 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4747 \begin_inset Text
4749 \begin_layout Plain Layout
4750 NTSC
4751 \end_layout
4753 \end_inset
4754 </cell>
4755 </row>
4756 <row>
4757 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4758 \begin_inset Text
4760 \begin_layout Plain Layout
4761 sufamiturbo
4762 \end_layout
4764 \end_inset
4765 </cell>
4766 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4767 \begin_inset Text
4769 \begin_layout Plain Layout
4770 Sufami Turbo
4771 \end_layout
4773 \end_inset
4774 </cell>
4775 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4776 \begin_inset Text
4778 \begin_layout Plain Layout
4779 NTSC
4780 \end_layout
4782 \end_inset
4783 </cell>
4784 </row>
4785 </lyxtabular>
4787 \end_inset
4790 \end_layout
4792 \begin_layout Standard
4793 Frame rates are:
4794 \end_layout
4796 \begin_layout Standard
4797 \begin_inset Tabular
4798 <lyxtabular version="3" rows="3" columns="2">
4799 <features tabularvalignment="middle">
4800 <column alignment="center" valignment="top" width="0">
4801 <column alignment="center" valignment="top" width="0">
4802 <row>
4803 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4804 \begin_inset Text
4806 \begin_layout Plain Layout
4807 Region
4808 \end_layout
4810 \end_inset
4811 </cell>
4812 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4813 \begin_inset Text
4815 \begin_layout Plain Layout
4816 Framerate (fps)
4817 \end_layout
4819 \end_inset
4820 </cell>
4821 </row>
4822 <row>
4823 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4824 \begin_inset Text
4826 \begin_layout Plain Layout
4828 \end_layout
4830 \end_inset
4831 </cell>
4832 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4833 \begin_inset Text
4835 \begin_layout Plain Layout
4836 322445/6448
4837 \end_layout
4839 \end_inset
4840 </cell>
4841 </row>
4842 <row>
4843 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4844 \begin_inset Text
4846 \begin_layout Plain Layout
4847 NTSC
4848 \end_layout
4850 \end_inset
4851 </cell>
4852 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4853 \begin_inset Text
4855 \begin_layout Plain Layout
4856 10738636/178683
4857 \end_layout
4859 \end_inset
4860 </cell>
4861 </row>
4862 </lyxtabular>
4864 \end_inset
4867 \end_layout
4869 \begin_layout Subsection
4870 Member: port1
4871 \end_layout
4873 \begin_layout Standard
4874 Contains type of port #1 (as one line).
4875  Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
4876  If not present, defaults to 'gamepad'.
4877 \end_layout
4879 \begin_layout Subsection
4880 Member: port2
4881 \end_layout
4883 \begin_layout Standard
4884 Contains type of port #2 (as one line).
4885  Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
4886  'justifier' and 'justifiers'.
4887  If not present, defaults to 'none'.
4888 \end_layout
4890 \begin_layout Subsection
4891 Member: gamename
4892 \end_layout
4894 \begin_layout Standard
4895 Contains name of the game (as one line).
4896 \end_layout
4898 \begin_layout Subsection
4899 Member: authors
4900 \end_layout
4902 \begin_layout Standard
4903 Contains authors, one per line.
4904  Part before '|' is the full name, part after is the nickname.
4905 \end_layout
4907 \begin_layout Subsection
4908 Member: systemid
4909 \end_layout
4911 \begin_layout Standard
4912 Always 
4913 \begin_inset Quotes eld
4914 \end_inset
4916 lsnes-rr1
4917 \begin_inset Quotes erd
4918 \end_inset
4920  (one line).
4921  Used to reject other saves.
4922 \end_layout
4924 \begin_layout Subsection
4925 Member: controlsversion
4926 \end_layout
4928 \begin_layout Standard
4929 Always 
4930 \begin_inset Quotes eld
4931 \end_inset
4934 \begin_inset Quotes erd
4935 \end_inset
4937  (one line).
4938  Used to identify what controls are there.
4939 \end_layout
4941 \begin_layout Subsection
4942 Member: 
4943 \begin_inset Quotes eld
4944 \end_inset
4946 coreversion
4947 \begin_inset Quotes erd
4948 \end_inset
4951 \end_layout
4953 \begin_layout Standard
4954 Contains bsnes core version number (as one line).
4955 \end_layout
4957 \begin_layout Subsection
4958 Member: projectid
4959 \end_layout
4961 \begin_layout Standard
4962 Contains project ID (as one line).
4963  Used to identify if two movies are part of the same project.
4964 \end_layout
4966 \begin_layout Subsection
4967 Member: {rom,slota,slotb}{,xml}.sha256
4968 \end_layout
4970 \begin_layout Standard
4971 Contains SHA-256 of said ROM or ROM mapping file (as one line).
4972  Absent if corresponding file is absent.
4973 \end_layout
4975 \begin_layout Subsection
4976 Member: moviesram.<name>
4977 \end_layout
4979 \begin_layout Standard
4980 Raw binary startup SRAM of kind <name>.
4981  Only present in savestates and movies starting from SRAM.
4982 \end_layout
4984 \begin_layout Subsection
4985 Member: saveframe
4986 \end_layout
4988 \begin_layout Standard
4989 Contains frame number (as one line) of frame movie was saved on.
4990  Only present in savestates.
4991 \end_layout
4993 \begin_layout Subsection
4994 Member: lagcounter
4995 \end_layout
4997 \begin_layout Standard
4998 Current value of lag counter (as one line).
4999  Only present in savestates.
5000 \end_layout
5002 \begin_layout Subsection
5003 Member: pollcounters
5004 \end_layout
5006 \begin_layout Standard
5007 Contains poll counters (currently 100 of them), one per line.
5008  Each line is raw poll count if DRDY is set for it.
5009  Otherwise it is negative poll count minus one.
5010  Only present in savestates.
5011 \end_layout
5013 \begin_layout Subsection
5014 Member: hostmemory
5015 \end_layout
5017 \begin_layout Standard
5018 Raw binary dump of host memory.
5019  Only present in savestates.
5020 \end_layout
5022 \begin_layout Subsection
5023 Member: savestate
5024 \end_layout
5026 \begin_layout Standard
5027 The raw binary savestate itself.
5028  Savestate detection uses this file, only present in savestates.
5029 \end_layout
5031 \begin_layout Subsection
5032 Member: screenshot
5033 \end_layout
5035 \begin_layout Standard
5036 Screenshot of current frame.
5037  Only present in savestates.
5038  First 2 bytes are big-endian width of image, rest are 24-bit RGB image
5039  data.
5040  Height of image is inferred from the width and size of data.
5041 \end_layout
5043 \begin_layout Subsection
5044 Member: sram.<name>
5045 \end_layout
5047 \begin_layout Standard
5048 Raw binary SRAM of kind <name> at time of savestate.
5049  Only present in savestates.
5050 \end_layout
5052 \begin_layout Subsection
5053 Member: input
5054 \end_layout
5056 \begin_layout Standard
5057 The actual input track, one line per subframe (blank lines are skipped).
5058 \end_layout
5060 \begin_layout Itemize
5061 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
5062  part of same frame as previous, otherwise it starts a new frame.
5063 \end_layout
5065 \begin_layout Itemize
5066 First subframe must start a new frame.
5067 \end_layout
5069 \begin_layout Standard
5070 Length of movie in frames is number of lines in input file that start a
5071  new frame.
5072 \end_layout
5074 \begin_layout Subsection
5075 Member: subtitles
5076 \end_layout
5078 \begin_layout Standard
5079 Subtitle track.
5080  Optional.
5081 \end_layout
5083 \begin_layout Itemize
5084 Each line is in form <firstframe> <numframes> <text>.
5085 \end_layout
5087 \begin_layout Itemize
5088 Linefeed is encoded as 
5089 \backslash
5090 n, backslash is encoded as 
5091 \backslash
5093 \backslash
5095 \end_layout
5097 \begin_layout Subsection
5098 Member: rerecords
5099 \end_layout
5101 \begin_layout Standard
5102 Contains textual base-10 rerecord count (as one line; emulator just writes
5103  this, it doesn't read it) + 1.
5104 \end_layout
5106 \begin_layout Subsection
5107 Member: rrdata
5108 \end_layout
5110 \begin_layout Standard
5111 This member stores set of load IDs.
5112  There is one load ID per rerecord (plus one corresponding to start of project).
5113 \end_layout
5115 \begin_layout Itemize
5116 This member constists of concatenation of records
5117 \end_layout
5119 \begin_layout Itemize
5120 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
5121  IDs.
5122 \end_layout
5124 \begin_layout Itemize
5125 IDs are interpretted as 256-bit big-endian integers with warparound.
5126 \end_layout
5128 \begin_layout Itemize
5129 Initial predicted ID is all zeroes.
5130 \end_layout
5132 \begin_layout Standard
5133 Format of each record is:
5134 \end_layout
5136 \begin_layout Itemize
5137 1 byte: Opcode byte.
5138  Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
5139  Bit 7 is unused.
5140 \end_layout
5142 \begin_layout Itemize
5143 32-prefixlen bytes of ID.
5144 \end_layout
5146 \begin_layout Itemize
5147 countlen bytes of big-endian count (count).
5148 \end_layout
5150 \begin_layout Standard
5151 Records are processed as follows:
5152 \end_layout
5154 \begin_layout Itemize
5155 To form the first ID encoded by record, take the first prefixlen bytes predicted
5156  ID and append the read ID value to it.
5157  The result is the first ID encoded.
5158 \end_layout
5160 \begin_layout Itemize
5161 If countlen is 0, record encodes 1 ID.
5162 \end_layout
5164 \begin_layout Itemize
5165 If countlen is 1, record encodes 2+count IDs.
5166 \end_layout
5168 \begin_layout Itemize
5169 If countlen is 2, record encodes 258+count IDs.
5170 \end_layout
5172 \begin_layout Itemize
5173 If countlen is 3, record encodes 65794+count IDs.
5174 \end_layout
5176 \begin_layout Itemize
5177 The new predicted ID is the next ID after last one encoded by the record.
5178 \end_layout
5180 \begin_layout Standard
5181 The number of rerecords + 1 is equal to the sum of number of IDs encoded
5182  by all records.
5183 \end_layout
5185 \begin_layout Subsection
5186 Member: starttime.second
5187 \end_layout
5189 \begin_layout Standard
5190 Movie starting time, second part.
5191  Epoch is Unix epoch.
5192  Default is 1,000,000,000.
5193 \end_layout
5195 \begin_layout Subsection
5196 Member: starttime.subsecond
5197 \end_layout
5199 \begin_layout Standard
5200 Movie starting time, subsecond part.
5201  Unit is CPU clocks.
5202  Default is 0.
5203 \end_layout
5205 \begin_layout Subsection
5206 Member: savetime.second
5207 \end_layout
5209 \begin_layout Standard
5210 Movie saving time, second part.
5211  Default is starttime.second.
5212  Only present in savestates.
5213 \end_layout
5215 \begin_layout Subsection
5216 Member: savetime.subsecond
5217 \end_layout
5219 \begin_layout Standard
5220 Movie saving time, subsecond part.
5221  Default is starttime.subsecond.
5222  Only present in savestates.
5223 \end_layout
5225 \begin_layout Section
5226 lsvs file format (commentary tracks)
5227 \end_layout
5229 \begin_layout Subsection
5230 Clusters
5231 \end_layout
5233 \begin_layout Itemize
5234 Each cluster is 8kB (8192 bytes) in size.
5235 \end_layout
5237 \begin_layout Itemize
5238 Cluster n starts at offset 8192*n in file.
5239 \end_layout
5241 \begin_layout Itemize
5242 The following clusters are system special:
5243 \end_layout
5245 \begin_deeper
5246 \begin_layout Itemize
5247 Cluster 0 and all clusters with number multiple of 2048 (cluster tables)
5248 \end_layout
5250 \begin_layout Itemize
5251 Cluster 1 (superblock)
5252 \end_layout
5254 \end_deeper
5255 \begin_layout Subsection
5256 Cluster tables
5257 \end_layout
5259 \begin_layout Itemize
5260 The cluster table describing cluster n is stored in cluster n & ~0x7FF (zero
5261  last 11 bits of n).
5262 \end_layout
5264 \begin_layout Itemize
5265 This cluster table consists of 2048 4-byte big-endian integers.
5266 \end_layout
5268 \begin_layout Itemize
5269 Each entry describes a cluster in 16MB supercluster, in order.
5270 \end_layout
5272 \begin_layout Itemize
5273 The valid values for entries are:
5274 \end_layout
5276 \begin_deeper
5277 \begin_layout Itemize
5278 0x00000000: Free cluster
5279 \end_layout
5281 \begin_layout Itemize
5282 0x00000001: Last cluster in chain.
5283 \end_layout
5285 \begin_layout Itemize
5286 0xFFFFFFFF: System cluster (cluster tables and superblock)
5287 \end_layout
5289 \begin_layout Itemize
5290 (anything else): Number of next cluster in chain.
5291  Must not be multiple of 2048.
5292 \end_layout
5294 \end_deeper
5295 \begin_layout Itemize
5296 Due to limitations of the format, there can be at most 2097052 superclusters,
5297  giving maximum file size of 16TB.
5298 \end_layout
5300 \begin_layout Subsection
5301 Stream table
5302 \end_layout
5304 \begin_layout Itemize
5305 The stream table chain always starts in cluster 2.
5306 \end_layout
5308 \begin_layout Itemize
5309 Otherwise, it follows normal chaining.
5310 \end_layout
5312 \begin_layout Itemize
5313 The stream table consists of 16-byte entries:
5314 \end_layout
5316 \begin_deeper
5317 \begin_layout Itemize
5318 The first 8 bytes of entry give big-endian beginning position of stream
5319  in units of 1/48000 s.
5320 \end_layout
5322 \begin_layout Itemize
5323 The next 4 bytes of entry give big-endian beginning cluster for control
5324  data.
5325  0 here marks the entry as not present.
5326 \end_layout
5328 \begin_layout Itemize
5329 The last 4 bytes of entry give big-endian beginning cluster for codec data.
5330 \end_layout
5332 \end_deeper
5333 \begin_layout Itemize
5334 Stream table clusters are normal clusters, following normal chaining.
5335 \end_layout
5337 \begin_layout Itemize
5338 The stream begnning position is not guarenteed unique.
5339  There can be multiple streams with the same starting position in the file.
5340 \end_layout
5342 \begin_layout Subsection
5343 Stream control data
5344 \end_layout
5346 \begin_layout Itemize
5347 The stream control data consists of entries 4 bytes each:
5348 \end_layout
5350 \begin_deeper
5351 \begin_layout Itemize
5352 The first 2 bytes of entry gives big-endian length of packet
5353 \end_layout
5355 \begin_layout Itemize
5356 The next byte of entry gives audio length of packet in units of 1/400 s.
5357 \end_layout
5359 \begin_layout Itemize
5360 The last byte is control byte.
5361 \end_layout
5363 \begin_deeper
5364 \begin_layout Itemize
5365 0 means this entry is not present and the control data ends.
5366 \end_layout
5368 \begin_layout Itemize
5369 1 is valid control entry.
5370 \end_layout
5372 \end_deeper
5373 \end_deeper
5374 \begin_layout Itemize
5375 The stream control data can also end by running into end of the readable
5376  chain.
5377 \end_layout
5379 \begin_deeper
5380 \begin_layout Itemize
5381 This happens if there happens to be exact multiple of 2048 packets in stream
5382  and number of packets is nonzero.
5383 \end_layout
5385 \end_deeper
5386 \begin_layout Itemize
5387 These clusters follow normal chaining.
5388 \end_layout
5390 \begin_layout Subsection
5391 Stream codec data
5392 \end_layout
5394 \begin_layout Itemize
5395 Stream codec data consists of raw Opus data packets packed back to back
5396  with nothing in between.
5397 \end_layout
5399 \begin_layout Itemize
5400 Warning: Due to internal limitations, this data must reside in the first
5401  65536 superclusters (that is, the first 1TB of the file).
5402 \end_layout
5404 \begin_layout Subsection
5405 Superblock
5406 \end_layout
5408 \begin_layout Itemize
5409 The superblock is stored in cluster 1.
5411 \end_layout
5413 \begin_layout Itemize
5414 The first 11 bytes are 
5415 \begin_inset Quotes eld
5416 \end_inset
5418 sefs-magic
5419 \begin_inset Quotes erd
5420 \end_inset
5422 <NUL>.
5423 \end_layout
5425 \begin_layout Itemize
5426 The rest are unused.
5427 \end_layout
5429 \begin_layout Itemize
5430 This cluster 1 is marked as system special.
5431 \end_layout
5433 \begin_layout Section
5434 Known ROM extensions
5435 \end_layout
5437 \begin_layout Itemize
5438 SNES cartridge ROMs: sfc, smc, swc, fig, ufo, sf2, gd3, gd7, dx2, mgd, mgh.
5439 \end_layout
5441 \begin_layout Itemize
5442 DMG cartridge ROMs: dmg, gb.
5443 \end_layout
5445 \begin_layout Itemize
5446 GBC cartridge ROMs: cgb, gbc.
5447 \end_layout
5449 \begin_layout Section
5450 Gamepack files
5451 \end_layout
5453 \begin_layout Itemize
5454 The first line must be: 
5455 \begin_inset Quotes eld
5456 \end_inset
5458 [GAMEPACK FILE]
5459 \begin_inset Quotes erd
5460 \end_inset
5463 \end_layout
5465 \begin_layout Itemize
5466 There is one needed line: 
5467 \begin_inset Quotes eld
5468 \end_inset
5470 type <systype>
5471 \begin_inset Quotes erd
5472 \end_inset
5475  This sets system type to <systype>.
5476  The following system types are valid:
5477 \end_layout
5479 \begin_deeper
5480 \begin_layout Itemize
5481 snes (SNES)
5482 \end_layout
5484 \begin_layout Itemize
5485 bsx (BS-X non-slotted)
5486 \end_layout
5488 \begin_layout Itemize
5489 bsxslotted (BS-X slotted)
5490 \end_layout
5492 \begin_layout Itemize
5493 sufamiturbo (Sufami Turbo)
5494 \end_layout
5496 \begin_layout Itemize
5497 sgb (Super Game Boy)
5498 \end_layout
5500 \begin_layout Itemize
5501 dmg (Game Boy)
5502 \end_layout
5504 \begin_layout Itemize
5505 gbc (Game Boy Color)
5506 \end_layout
5508 \begin_layout Itemize
5509 gbc_gba (Game Boy Color with GBA initial register values)
5510 \end_layout
5512 \end_deeper
5513 \begin_layout Itemize
5514 Optionally a region can be specified: 
5515 \begin_inset Quotes eld
5516 \end_inset
5518 region <region>
5519 \begin_inset Quotes erd
5520 \end_inset
5523  The following values are valid:
5524 \end_layout
5526 \begin_deeper
5527 \begin_layout Itemize
5528 autodetect (Autodetect region: snes and sgb only)
5529 \end_layout
5531 \begin_layout Itemize
5532 ntsc (NTSC: snes, bsx, bsxslotted, sufamiturbo, sgb)
5533 \end_layout
5535 \begin_layout Itemize
5536 pal (PAL: snes, sgb)
5537 \end_layout
5539 \begin_layout Itemize
5540 world (World: dmg, gbc, gbc_gba)
5541 \end_layout
5543 \end_deeper
5544 \begin_layout Itemize
5545 ROM images are loaded as: 
5546 \begin_inset Quotes eld
5547 \end_inset
5549 rom <type> <file>
5550 \begin_inset Quotes erd
5551 \end_inset
5554  The following types are valid:
5555 \end_layout
5557 \begin_deeper
5558 \begin_layout Itemize
5559 rom (Cartridge ROM in snes, dmg, gbc, gbc_gba.
5560  BIOS in bsx, bsxslotted, sufamiturbo)
5561 \end_layout
5563 \begin_layout Itemize
5564 bsx (Cartridge ROM in bsx, bsxslotted)
5565 \end_layout
5567 \begin_layout Itemize
5568 slot-a (Cartridge ROM in sufamiturbo)
5569 \end_layout
5571 \begin_layout Itemize
5572 slot-b (Cartridge ROM in sufamiturbo)
5573 \end_layout
5575 \end_deeper
5576 \begin_layout Itemize
5577 ROM markup can be loaded as: 
5578 \begin_inset Quotes eld
5579 \end_inset
5581 xml <type> <file>
5582 \begin_inset Quotes erd
5583 \end_inset
5586  The types valid are the same as for ROMs.
5587 \end_layout
5589 \begin_layout Itemize
5590 Patches can be loaded as 
5591 \begin_inset Quotes eld
5592 \end_inset
5594 patch[<offset>] <type> <file>
5595 \begin_inset Quotes erd
5596 \end_inset
5599  The types are the same as for ROMs.
5600 \end_layout
5602 \begin_deeper
5603 \begin_layout Itemize
5604 Offset is given in form [+-]<number>.
5605  Usually offset is either +0 or -512.
5606 \end_layout
5608 \begin_layout Itemize
5609 Default offset is +0.
5610 \end_layout
5612 \end_deeper
5613 \begin_layout Subsection
5614 Example:
5615 \end_layout
5617 \begin_layout LyX-Code
5618 [GAMEPACK FILE]
5619 \end_layout
5621 \begin_layout LyX-Code
5622 type snes
5623 \end_layout
5625 \begin_layout LyX-Code
5626 rom rom speedygonzales.sfc
5627 \end_layout
5629 \begin_layout LyX-Code
5630 patch-512 rom sonicthehedgehog.ips
5631 \end_layout
5633 \begin_layout Subsection
5634 Example 2:
5635 \end_layout
5637 \begin_layout LyX-Code
5638 [GAMEPACK FILE]
5639 \end_layout
5641 \begin_layout LyX-Code
5642 type sgb
5643 \end_layout
5645 \begin_layout LyX-Code
5646 rom rom supergameboy.sfc
5647 \end_layout
5649 \begin_layout LyX-Code
5650 rom dmg megamanV.dmg
5651 \end_layout
5653 \begin_layout Section
5654 Quick'n'dirty encode guide
5655 \end_layout
5657 \begin_layout Enumerate
5658 Start the emulator and load the ROM and movie file.
5659 \end_layout
5661 \begin_layout Enumerate
5662 Set large AVI option 'set-setting avi-large on'
5663 \end_layout
5665 \begin_layout Enumerate
5666 Enable dumping 'dump-avi tmpdump' 
5667 \end_layout
5669 \begin_layout Enumerate
5670 Unpause and let it run until you want to end dumping.
5671 \end_layout
5673 \begin_layout Enumerate
5674 Close the emulator (closing the window is the easiest way).
5675  Or use 'end-avi'.
5676 \end_layout
5678 \begin_layout Enumerate
5679 For each tmpdump*.avi file created, on command prompt, do 'x264 --crf 10
5680  -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
5681 \end_layout
5683 \begin_layout Enumerate
5684 Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
5685 \end_layout
5687 \begin_layout Enumerate
5688 Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv + tmpdump_0000001.mkv
5689  + tmpdump_0000002.mkv' (list every tmpdump_<numbers>.mkv, with + in between).
5690 \end_layout
5692 \begin_layout Enumerate
5693 Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'.
5694  Now final.mkv contains quick'n'dirty encode.
5695 \end_layout
5697 \begin_layout Section
5698 Axis configurations for some gamepad types:
5699 \end_layout
5701 \begin_layout Subsection
5702 XBox360 controller:
5703 \end_layout
5705 \begin_layout Standard
5706 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be set to pressure-+.
5707 \end_layout
5709 \begin_layout LyX-Code
5710 set-axis joystick0axis2 pressure-+
5711 \end_layout
5713 \begin_layout LyX-Code
5714 set-axis joystick0axis5 pressure-+
5715 \end_layout
5717 \begin_layout Itemize
5718 This is needed for SDL only.
5719  EVDEV sets those types correctly.
5720 \end_layout
5722 \begin_layout Subsection
5723 PS3 
5724 \begin_inset Quotes eld
5725 \end_inset
5727 sixaxis
5728 \begin_inset Quotes erd
5729 \end_inset
5731  controller:
5732 \end_layout
5734 \begin_layout Standard
5735 Axes 8-19 should be disabled.
5736 \end_layout
5738 \begin_layout LyX-Code
5739 set-axis joystick0axis8 disabled
5740 \end_layout
5742 \begin_layout LyX-Code
5743 set-axis joystick0axis9 disabled
5744 \end_layout
5746 \begin_layout LyX-Code
5747 set-axis joystick0axis10 disabled
5748 \end_layout
5750 \begin_layout LyX-Code
5751 set-axis joystick0axis11 disabled
5752 \end_layout
5754 \begin_layout LyX-Code
5755 set-axis joystick0axis12 disabled
5756 \end_layout
5758 \begin_layout LyX-Code
5759 set-axis joystick0axis13 disabled
5760 \end_layout
5762 \begin_layout LyX-Code
5763 set-axis joystick0axis14 disabled
5764 \end_layout
5766 \begin_layout LyX-Code
5767 set-axis joystick0axis15 disabled
5768 \end_layout
5770 \begin_layout LyX-Code
5771 set-axis joystick0axis16 disabled
5772 \end_layout
5774 \begin_layout LyX-Code
5775 set-axis joystick0axis17 disabled
5776 \end_layout
5778 \begin_layout LyX-Code
5779 set-axis joystick0axis18 disabled
5780 \end_layout
5782 \begin_layout LyX-Code
5783 set-axis joystick0axis19 disabled
5784 \end_layout
5786 \begin_layout Section
5787 Errata:
5788 \end_layout
5790 \begin_layout Subsection
5791 Problems from BSNES core:
5792 \end_layout
5794 \begin_layout Itemize
5795 The whole pending save stuff.
5796 \end_layout
5798 \begin_layout Itemize
5799 Lack of layer hiding.
5800 \end_layout
5802 \begin_layout Itemize
5803 It is slow (especially accuracy).
5804 \end_layout
5806 \begin_layout Itemize
5807 Firmwares can't be loaded from ZIP archives.
5808 \end_layout
5810 \begin_layout Subsection
5811 Other problems:
5812 \end_layout
5814 \begin_layout Itemize
5815 Modifiers don't work with pseudo-keys (SDL, EVDEV).
5816 \end_layout
5818 \begin_layout Itemize
5819 Audio for last dumped frame is not itself dumped.
5820 \end_layout
5822 \begin_layout Itemize
5823 Audio in UI is pretty bad in quality if game doesn't run at full speed.
5824 \end_layout
5826 \begin_layout Itemize
5827 No menus, command based interface (SDL).
5828 \end_layout
5830 \begin_layout Itemize
5831 Long commands don't scroll.
5832 \end_layout
5834 \begin_layout Section
5835 Changelog:
5836 \end_layout
5838 \begin_layout Subsection
5839 rr0-beta1
5840 \end_layout
5842 \begin_layout Itemize
5843 Fix -Wall warnings
5844 \end_layout
5846 \begin_layout Itemize
5847 Fix dumper video corruption with levels 10-18.
5848 \end_layout
5850 \begin_layout Subsection
5851 rr0-beta2
5852 \end_layout
5854 \begin_layout Itemize
5855 Autofire
5856 \end_layout
5858 \begin_layout Itemize
5859 Lots of code cleanups
5860 \end_layout
5862 \begin_layout Itemize
5863 Lua interface to settings
5864 \end_layout
5866 \begin_layout Itemize
5867 Allow specifying AVI borders without Lua
5868 \end_layout
5870 \begin_layout Itemize
5871 Fix scaling if vscale > 1 and originx > 0 (left border exists)
5872 \end_layout
5874 \begin_layout Itemize
5875 on_snoop lua callback
5876 \end_layout
5878 \begin_layout Itemize
5879 Faster movie loading and saving.
5880 \end_layout
5882 \begin_layout Subsection
5883 rr0-beta3
5884 \end_layout
5886 \begin_layout Itemize
5887 Joystick support
5888 \end_layout
5890 \begin_layout Subsection
5891 rr0-beta4
5892 \end_layout
5894 \begin_layout Itemize
5895 Fix multi-buttons
5896 \end_layout
5898 \begin_layout Itemize
5899 Save jukebox functionality.
5900 \end_layout
5902 \begin_layout Subsection
5903 rr0-beta5
5904 \end_layout
5906 \begin_layout Itemize
5907 Try to fix some nasty failing movie load edge cases
5908 \end_layout
5910 \begin_layout Itemize
5911 Allow specifying scripts to run on command line.
5912 \end_layout
5914 \begin_layout Subsection
5915 rr0-beta6
5916 \end_layout
5918 \begin_layout Itemize
5919 Major source code reorganization.
5920 \end_layout
5922 \begin_layout Itemize
5923 Backup savestates before overwriting.
5924 \end_layout
5926 \begin_layout Itemize
5927 Don't crash if loading initial state fails.
5928 \end_layout
5930 \begin_layout Subsection
5931 rr0-beta7
5932 \end_layout
5934 \begin_layout Itemize
5935 Fix firmware lookup
5936 \end_layout
5938 \begin_layout Itemize
5939 Fix author name parsing
5940 \end_layout
5942 \begin_layout Itemize
5943 Fix rerecord counting
5944 \end_layout
5946 \begin_layout Itemize
5947 (SDL) Print messages to console if SDL is uninitialized
5948 \end_layout
5950 \begin_layout Itemize
5951 Add movieinfo program
5952 \end_layout
5954 \begin_layout Itemize
5955 Fix loading movies starting from SRAM.
5956 \end_layout
5958 \begin_layout Subsection
5959 rr0-beta8
5960 \end_layout
5962 \begin_layout Itemize
5963 Add support for unattended dumping
5964 \end_layout
5966 \begin_layout Itemize
5967 Fix compiling for Win32
5968 \end_layout
5970 \begin_layout Itemize
5971 Don't lock up if sound can't be initialized
5972 \end_layout
5974 \begin_layout Itemize
5975 Strip trailing CR from commands
5976 \end_layout
5978 \begin_layout Itemize
5979 Don't try to do dubious things in global ctors (fix crash on startup)
5980 \end_layout
5982 \begin_layout Subsection
5983 rr0-beta9
5984 \end_layout
5986 \begin_layout Itemize
5987 Small documentation tweaking
5988 \end_layout
5990 \begin_layout Itemize
5991 Fix make clean
5992 \end_layout
5994 \begin_layout Itemize
5995 Fix major bug in modifier matching
5996 \end_layout
5998 \begin_layout Subsection
5999 rr0-beta10
6000 \end_layout
6002 \begin_layout Itemize
6003 Lots of documentation fixes
6004 \end_layout
6006 \begin_layout Itemize
6007 Use dedicated callbacks for event backcomm., not commands.
6008 \end_layout
6010 \begin_layout Itemize
6011 Ensure that the watchdog is not hit when executing delayed reset.
6012 \end_layout
6014 \begin_layout Itemize
6015 Remove errant tab from joystick message.
6016 \end_layout
6018 \begin_layout Subsection
6019 rr0-beta11
6020 \end_layout
6022 \begin_layout Itemize
6023 Make autofire operate in absolute time, not linear time
6024 \end_layout
6026 \begin_layout Itemize
6027 Reinitialize controls when resuming from loadstate
6028 \end_layout
6030 \begin_layout Itemize
6031 Some more code cleanups
6032 \end_layout
6034 \begin_layout Itemize
6035 If Lua allocator fails, call OOM_panic()
6036 \end_layout
6038 \begin_layout Itemize
6039 Byte/word/dword/qword sized host memory write/read functions.
6040 \end_layout
6042 \begin_layout Itemize
6043 Dump at correct framerate if dumping interlaced NTSC (height=448).
6044 \end_layout
6046 \begin_layout Subsection
6047 rr0-beta12
6048 \end_layout
6050 \begin_layout Itemize
6051 Actually include the complete source code
6052 \end_layout
6054 \begin_layout Itemize
6055 Keep track of RTC
6056 \end_layout
6058 \begin_layout Subsection
6059 rr0-beta13
6060 \end_layout
6062 \begin_layout Itemize
6063 Document {save,start}time.{,sub}second.
6064 \end_layout
6066 \begin_layout Itemize
6067 Intercept time() from bsnes core.
6068 \end_layout
6070 \begin_layout Subsection
6071 rr0-beta14
6072 \end_layout
6074 \begin_layout Itemize
6075 Allow disabling time() interception (allow build on Mac OS X)
6076 \end_layout
6078 \begin_layout Itemize
6079 Use SDLMain on Mac OS X (make SDL not crash)
6080 \end_layout
6082 \begin_layout Itemize
6083 Disable delayed resets (just plain too buggy for now).
6084 \end_layout
6086 \begin_layout Itemize
6087 Code cleanups
6088 \end_layout
6090 \begin_layout Itemize
6091 Use 16-bit for graphics/video instead of 32-bit.
6092 \end_layout
6094 \begin_layout Itemize
6095 gui.rectangle/gui.pixel
6096 \end_layout
6098 \begin_layout Itemize
6099 gui.crosshair
6100 \end_layout
6102 \begin_layout Itemize
6103 New CSCD writer implementation.
6104 \end_layout
6106 \begin_layout Subsection
6107 rr0-beta15
6108 \end_layout
6110 \begin_layout Itemize
6111 Fix interaction of * and +.
6112 \end_layout
6114 \begin_layout Itemize
6115 Manual improvements
6116 \end_layout
6118 \begin_layout Itemize
6119 Use gettimeofday()/usleep(), these seem portable enough.
6120 \end_layout
6122 \begin_layout Itemize
6123 Move joystick axis manipulation to keymapper code.
6124 \end_layout
6126 \begin_layout Itemize
6127 Changes to how read-only works.
6128 \end_layout
6130 \begin_layout Itemize
6131 Refactor controller input code.
6132 \end_layout
6134 \begin_layout Subsection
6135 rr0-beta16
6136 \end_layout
6138 \begin_layout Itemize
6139 Fix mouseclick scale compensation.
6140 \end_layout
6142 \begin_layout Itemize
6143 Draw area boundaries correctly in SDL code.
6144 \end_layout
6146 \begin_layout Itemize
6147 gui.screenshot.
6148 \end_layout
6150 \begin_layout Itemize
6151 Fix CSCD output (buffer overrun and race condition).
6152 \end_layout
6154 \begin_layout Subsection
6155 rr0-beta17
6156 \end_layout
6158 \begin_layout Itemize
6159 JMD dumping support.
6160 \end_layout
6162 \begin_layout Itemize
6163 Allow unattended dumping to JMD.
6164 \end_layout
6166 \begin_layout Itemize
6167 Move to BSNES v083.
6168 \end_layout
6170 \begin_layout Itemize
6171 Switch back to 32-bit colors.
6172 \end_layout
6174 \begin_layout Itemize
6175 Add Lua function gui.color.
6176 \end_layout
6178 \begin_layout Itemize
6179 Use some new C++11 features in GCC 4.6.
6180 \end_layout
6182 \begin_layout Itemize
6183 Be prepared for core frequency changes.
6184 \end_layout
6186 \begin_layout Itemize
6187 Pass colors in one chunk from Lua.
6188 \end_layout
6190 \begin_layout Subsection
6191 rr0-beta18
6192 \end_layout
6194 \begin_layout Itemize
6195 New lua functions gui.line(), gui.status() and gui.circle(), memory.vma_count(),
6196  memory.read_vma() and memory.find_vma().
6197 \end_layout
6199 \begin_layout Itemize
6200 Numerious documentation fixups
6201 \end_layout
6203 \begin_layout Itemize
6204 RTC time format changed
6205 \end_layout
6207 \begin_layout Itemize
6208 Reformat flags display
6209 \end_layout
6211 \begin_layout Itemize
6212 Allow lua package name to be overridden
6213 \end_layout
6215 \begin_layout Itemize
6216 SDUMP (high-quality dumping).
6217 \end_layout
6219 \begin_layout Itemize
6220 Split platform support to plugins.
6221 \end_layout
6223 \begin_layout Itemize
6224 Make all sound plugins support basic sound commands
6225 \end_layout
6227 \begin_layout Itemize
6228 Support portaudio for sound.
6229 \end_layout
6231 \begin_layout Itemize
6232 Allow disable Lua/SDL searching.
6233 \end_layout
6235 \begin_layout Itemize
6236 Upconvert colors when copying lcscreen to screen.
6237 \end_layout
6239 \begin_layout Itemize
6240 Reorganize source tree.
6241 \end_layout
6243 \begin_layout Itemize
6244 Evdev joystick support.
6245 \end_layout
6247 \begin_layout Itemize
6248 Refactor more code into generic window code.
6249 \end_layout
6251 \begin_layout Subsection
6252 rr0-beta19
6253 \end_layout
6255 \begin_layout Itemize
6256 Refactor message handling.
6257 \end_layout
6259 \begin_layout Itemize
6260 Rework makefile
6261 \end_layout
6263 \begin_layout Itemize
6264 Documentation fixes
6265 \end_layout
6267 \begin_layout Itemize
6268 Finish pending saves before load/quit.
6269 \end_layout
6271 \begin_layout Itemize
6272 Wxwidgets graphics plugin.
6273 \end_layout
6275 \begin_layout Subsection
6276 rr0-beta20
6277 \end_layout
6279 \begin_layout Itemize
6280 Get rid of win32-crap.[ch]pp.
6281 \end_layout
6283 \begin_layout Itemize
6284 Move files around a lot.
6285 \end_layout
6287 \begin_layout Itemize
6288 Get rid of need for host C++ compiler.
6289 \end_layout
6291 \begin_layout Itemize
6292 Bsnes v084 core.
6293 \end_layout
6295 \begin_layout Itemize
6296 Refactor inter-component communication.
6297 \end_layout
6299 \begin_layout Itemize
6300 Fix zero luma.
6301 \end_layout
6303 \begin_layout Itemize
6304 Fix crash on multiline aliases.
6305 \end_layout
6307 \begin_layout Itemize
6308 Load/Save settings in wxwidgets gui.
6309 \end_layout
6311 \begin_layout Subsection
6312 rr0-beta21
6313 \end_layout
6315 \begin_layout Itemize
6316 Patch problems in bsnes core
6317 \end_layout
6319 \begin_layout Itemize
6320 SNES is little-endian, not big-endian!
6321 \end_layout
6323 \begin_layout Itemize
6324 Fix memory corruption in lcscreen::load()
6325 \end_layout
6327 \begin_layout Subsection
6328 rr0-beta22
6329 \end_layout
6331 \begin_layout Itemize
6332 Fix interpretting repeat counts in rrdata loading.
6333 \end_layout
6335 \begin_layout Itemize
6336 New lua callback: on_frame()
6337 \end_layout
6339 \begin_layout Itemize
6340 Remove calls to runtosave() that aren't supposed to be there
6341 \end_layout
6343 \begin_layout Itemize
6344 Lua function: movie.read_rtc()
6345 \end_layout
6347 \begin_layout Itemize
6348 Ignore src/fonts/font.cpp
6349 \end_layout
6351 \begin_layout Itemize
6352 Fix more bsnes core problems
6353 \end_layout
6355 \begin_layout Itemize
6356 Control bsnes random seeding
6357 \end_layout
6359 \begin_layout Itemize
6360 Pause-on-end
6361 \end_layout
6363 \begin_layout Itemize
6364 Some bsnes core debugging features (state dump and state hash)
6365 \end_layout
6367 \begin_layout Itemize
6368 Fix titlebar version number (no, the last version wasn't 'lsnes-0-beta21',
6369  it was 'lsnes rr0-beta21').
6370 \end_layout
6372 \begin_layout Subsection
6373 rr0-beta23
6374 \end_layout
6376 \begin_layout Itemize
6377 Fix memory corruption due to macro/field mixup
6378 \end_layout
6380 \begin_layout Itemize
6381 search-memory update
6382 \end_layout
6384 \begin_layout Itemize
6385 Allow direct-mapped framebuffer
6386 \end_layout
6388 \begin_layout Itemize
6389 SDL: Use SDL_ANYFORMAT if possible
6390 \end_layout
6392 \begin_layout Itemize
6393 SDMP2SOX: 2s delay modes.
6394 \end_layout
6396 \begin_layout Itemize
6397 Wxwidgets: Cleanups
6398 \end_layout
6400 \begin_layout Itemize
6401 Use sed -E, not sed -r.
6402  Fixes building on Mac OS X.
6403 \end_layout
6405 \begin_layout Itemize
6406 Wxwidgets: Save jukebox on exit
6407 \end_layout
6409 \begin_layout Itemize
6410 Fix RTC if using load-movie on savestate.
6411 \end_layout
6413 \begin_layout Itemize
6414 Fix crash related to full console mode.
6415 \end_layout
6417 \begin_layout Subsection
6418 rr0-beta24
6419 \end_layout
6421 \begin_layout Itemize
6422 Wxwidgets: Allow bringing application to foreground on Mac OS X.
6423 \end_layout
6425 \begin_layout Itemize
6426 Wxwidgets: Allow compiling on Mac OS X.
6427 \end_layout
6429 \begin_layout Itemize
6430 Use movie compare instead of movie hashing (faster save/load).
6431 \end_layout
6433 \begin_layout Itemize
6434 Lua: _SYSTEM table.
6435 \end_layout
6437 \begin_layout Subsection
6438 rr0-beta25
6439 \end_layout
6441 \begin_layout Itemize
6442 sdmp2sox: Pad soundtrack if using -l or -L.
6443 \end_layout
6445 \begin_layout Itemize
6446 sdmp2sox: Fix NTSC overscan.
6447 \end_layout
6449 \begin_layout Itemize
6450 sdmp2sox: Add AR correction mode.
6451 \end_layout
6453 \begin_layout Itemize
6454 call lua_close() when exiting.
6455 \end_layout
6457 \begin_layout Itemize
6458 Fix zip_writer bug causing warnings from info-zip and error from advzip.
6459 \end_layout
6461 \begin_layout Subsection
6462 rr0-beta26
6463 \end_layout
6465 \begin_layout Itemize
6466 Fix IPS patching code (use bsnes core IPS patcher).
6467 \end_layout
6469 \begin_layout Itemize
6470 Implement BPS patching (using bsnes core IPS patcher).
6471 \end_layout
6473 \begin_layout Itemize
6474 Add feature to load headered ROMs.
6475 \end_layout
6477 \begin_layout Subsection
6478 rr0-beta27
6479 \end_layout
6481 \begin_layout Itemize
6482 Show command names when showing keybindings
6483 \end_layout
6485 \begin_layout Subsection
6487 \end_layout
6489 \begin_layout Itemize
6490 Fix pause-on-end to be actually controllable
6491 \end_layout
6493 \begin_layout Itemize
6494 SDL: Poll all events in queue, not just first one (fixes slowness in command
6495  typing)
6496 \end_layout
6498 \begin_layout Itemize
6499 Wxwidgets: Fix ROM loading.
6500 \end_layout
6502 \begin_layout Subsection
6503 rr1-beta0
6504 \end_layout
6506 \begin_layout Itemize
6507 Lua: Add gui.textH, gui.textV, gui.textHV
6508 \end_layout
6510 \begin_layout Itemize
6511 Fix text colors on SDL on Mac OS X
6512 \end_layout
6514 \begin_layout Itemize
6515 Mode 'F' for finished in readonly mode.
6516 \end_layout
6518 \begin_layout Itemize
6519 Fix some WS errors.
6520 \end_layout
6522 \begin_layout Itemize
6523 Reliably pause after skip poll
6524 \end_layout
6526 \begin_layout Itemize
6527 Split UI and core into their own threads
6528 \end_layout
6530 \begin_layout Subsection
6531 rr1-beta1
6532 \end_layout
6534 \begin_layout Itemize
6535 Remove leftover dummy SRAM slot
6536 \end_layout
6538 \begin_layout Itemize
6539 Fix controller numbers.
6540 \end_layout
6542 \begin_layout Subsection
6543 rr1-beta2
6544 \end_layout
6546 \begin_layout Itemize
6547 Fix lsnes-dumpavi after interface change.
6548 \end_layout
6550 \begin_layout Itemize
6551 Also give BSNES patches for v085.
6552 \end_layout
6554 \begin_layout Itemize
6555 Pack movie data in memory.
6556 \end_layout
6558 \begin_layout Subsection
6559 rr1-beta3
6560 \end_layout
6562 \begin_layout Itemize
6563 Fix framecount/length given when loading movies.
6564 \end_layout
6566 \begin_layout Itemize
6567 Controller command memory leak fixes.
6568 \end_layout
6570 \begin_layout Itemize
6571 Don't leak palette if freeing screen object.
6572 \end_layout
6574 \begin_layout Subsection
6575 rr1-beta4
6576 \end_layout
6578 \begin_layout Itemize
6579 Detect revisions.
6580 \end_layout
6582 \begin_layout Itemize
6583 Wxwidgets: Allow controlling dumper from the menu.
6584 \end_layout
6586 \begin_layout Subsection
6587 rr1-beta5
6588 \end_layout
6590 \begin_layout Itemize
6591 Rewrite parts of manual
6592 \end_layout
6594 \begin_layout Itemize
6595 Lua: Make it work with Lua 5.2.
6596 \end_layout
6598 \begin_layout Subsection
6599 rr1-beta6
6600 \end_layout
6602 \begin_layout Itemize
6603 Win32: Fix compile errors.
6604 \end_layout
6606 \begin_layout Subsection
6607 rr1-beta7
6608 \end_layout
6610 \begin_layout Itemize
6611 Refactor controller input code.
6612 \end_layout
6614 \begin_layout Itemize
6615 Fix crash when using command line on SDL / Mac OS X.
6616 \end_layout
6618 \begin_layout Subsection
6619 rr1-beta8
6620 \end_layout
6622 \begin_layout Itemize
6623 Delete core/coroutine (obsolete)
6624 \end_layout
6626 \begin_layout Itemize
6627 Lag input display by one frame.
6628 \end_layout
6630 \begin_layout Itemize
6631 Rewind movie to beginning function.
6632 \end_layout
6634 \begin_layout Itemize
6635 Fix wrong frame number reported to Lua when repainting after loadstate
6636 \end_layout
6638 \begin_layout Itemize
6639 Support UI editing of jukebox
6640 \end_layout
6642 \begin_layout Itemize
6643 Wxwidgets: Save settings on exit.
6644 \end_layout
6646 \begin_layout Itemize
6647 Support ${project} for filenames
6648 \end_layout
6650 \begin_layout Itemize
6651 SDL: Fix command history
6652 \end_layout
6654 \begin_layout Subsection
6655 rr1-beta9
6656 \end_layout
6658 \begin_layout Itemize
6659 Fix some order-of-global-ctor bugs.
6660 \end_layout
6662 \begin_layout Subsection
6663 rr1-beta10
6664 \end_layout
6666 \begin_layout Itemize
6667 Fix crashes when quitting on Win32.
6668 \end_layout
6670 \begin_layout Subsection
6671 rr1-beta11
6672 \end_layout
6674 \begin_layout Itemize
6675 EVDEV: Queue keypresses from joystick, don't send directly
6676 \end_layout
6678 \begin_layout Itemize
6679 Wxwidgets: Load-Preserve that actually works.
6680 \end_layout
6682 \begin_layout Subsection
6683 rr1-beta12
6684 \end_layout
6686 \begin_layout Itemize
6687 Wxwidgets: GUI for memory search.
6688 \end_layout
6690 \begin_layout Itemize
6691 Warn about using synchronous queue in UI callback.
6692 \end_layout
6694 \begin_layout Subsection
6695 rr1-beta13
6696 \end_layout
6698 \begin_layout Itemize
6699 Remember last saved file for each ROM
6700 \end_layout
6702 \begin_layout Itemize
6703 Support MT dumping via boost.
6704 \end_layout
6706 \begin_layout Itemize
6707 Lua: input.raw
6708 \end_layout
6710 \begin_layout Itemize
6711 Lua: input.keyhook
6712 \end_layout
6714 \begin_layout Itemize
6715 Make mouse be ordinary input instead of special-casing
6716 \end_layout
6718 \begin_layout Itemize
6719 SDL: Don't screw up commands with NUL codepoints.
6720 \end_layout
6722 \begin_layout Subsection
6723 rr1-beta14
6724 \end_layout
6726 \begin_layout Itemize
6727 Merge status panel and main window
6728 \end_layout
6730 \begin_layout Itemize
6731 True movie slot support (the rest of it)
6732 \end_layout
6734 \begin_layout Itemize
6735 SDL: Fix compilation error
6736 \end_layout
6738 \begin_layout Itemize
6739 Elminate cross calls in dump menu code.
6740 \end_layout
6742 \begin_layout Subsection
6743 rr1-beta15
6744 \end_layout
6746 \begin_layout Itemize
6747 Cancel pending saves command
6748 \end_layout
6750 \begin_layout Itemize
6751 Wxwidgets: Code refactoring
6752 \end_layout
6754 \begin_layout Itemize
6755 Wxwidgets: Fix system -> reset
6756 \end_layout
6758 \begin_layout Itemize
6759 Wxwidgets: Read watch expressions in the right thread
6760 \end_layout
6762 \begin_layout Subsection
6763 rr1-beta16
6764 \end_layout
6766 \begin_layout Itemize
6767 Wxwidgets: Don't prompt for member when running Lua script (Lua doesn't
6768  support that).
6769 \end_layout
6771 \begin_layout Itemize
6772 Wxwidgets: 128 -> 1024 Autohold slots (in case more are needed).
6773 \end_layout
6775 \begin_layout Itemize
6776 Don't append trailing '-' to prefix when saving movie.
6777 \end_layout
6779 \begin_layout Itemize
6780 Fix ROM/savestate handling (don't let user mismatch ROM and savestates).
6781 \end_layout
6783 \begin_layout Subsection
6785 \end_layout
6787 \begin_layout Itemize
6788 Document memory watch syntax.
6789 \end_layout
6791 \begin_layout Subsection
6792 rr1-delta1
6793 \end_layout
6795 \begin_layout Itemize
6796 Fix unattended dumping (lsnes-dumpavi)
6797 \end_layout
6799 \begin_layout Itemize
6800 Support RAW dumping
6801 \end_layout
6803 \begin_layout Itemize
6804 Use adv_dumper instead of the old interface in lsnes-dumpavi (changes syntax)
6805 \end_layout
6807 \begin_layout Itemize
6808 Add option to control sample rate preturbation in AVI dumper
6809 \end_layout
6811 \begin_layout Subsection
6812 rr1-delta2
6813 \end_layout
6815 \begin_layout Itemize
6816 Wxwidgets: Fix dumper submodes
6817 \end_layout
6819 \begin_layout Itemize
6820 Set core controller types before loadstate
6821 \end_layout
6823 \begin_layout Subsection
6824 rr1-delta2epsilon1
6825 \end_layout
6827 \begin_layout Itemize
6828 Fix compiling with bsnes v086.
6829 \end_layout
6831 \begin_layout Subsection
6832 rr1-delta3
6833 \end_layout
6835 \begin_layout Itemize
6836 Don't prompt before quitting
6837 \end_layout
6839 \begin_layout Itemize
6840 Start unpaused, preserve pause/unpause over load.
6841 \end_layout
6843 \begin_layout Itemize
6844 Try to autodetect if ROM is headered.
6845 \end_layout
6847 \begin_layout Itemize
6848 Wxwidgets: Only bring up ROM patching screen if specifically requested.
6849 \end_layout
6851 \begin_layout Itemize
6852 Allow configuring some hotkeys.
6853 \end_layout
6855 \begin_layout Subsection
6856 rr1-delta4
6857 \end_layout
6859 \begin_layout Itemize
6860 Lots of code cleanups
6861 \end_layout
6863 \begin_layout Itemize
6864 Fix JMD compression (JMD dumping was broken)
6865 \end_layout
6867 \begin_layout Itemize
6868 Don't crash if Lua C function throws an exception.
6869 \end_layout
6871 \begin_layout Itemize
6872 Support bitmap drawing in Lua.
6873 \end_layout
6875 \begin_layout Itemize
6876 Fix bsnes v085/v086 patches.
6877 \end_layout
6879 \begin_layout Itemize
6880 Improve stability on win32.
6881 \end_layout
6883 \begin_layout Subsection
6884 rr1-delta4epsilon1
6885 \end_layout
6887 \begin_layout Itemize
6888 Don't corrupt movie if movie length is integer multiple of frames per page.
6889 \end_layout
6891 \begin_layout Subsection
6892 rr1-delta5
6893 \end_layout
6895 \begin_layout Itemize
6896 New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
6897 \end_layout
6899 \begin_layout Itemize
6900 New Lua functions: emulator_ready(), utime(), set_idle_timeout(), set_timer_time
6901 out(), bit.extract(), bit.value(), input.geta(), input.seta() and input.controllertyp
6903 \end_layout
6905 \begin_layout Itemize
6906 Wxwidgets: Fix internal focus lost (hotkeys stop working)
6907 \end_layout
6909 \begin_layout Itemize
6910 Wxwidgets: Fix broken modifiers
6911 \end_layout
6913 \begin_layout Itemize
6914 on_paint has parameter now.
6915 \end_layout
6917 \begin_layout Itemize
6918 Optional initital fill for bitmaps
6919 \end_layout
6921 \begin_layout Itemize
6922 Fix palette changing.
6923 \end_layout
6925 \begin_layout Itemize
6926 Optimize rendering a bit.
6927 \end_layout
6929 \begin_layout Itemize
6930 Bsnes v087 support.
6931 \end_layout
6933 \begin_layout Subsection
6934 rr1-delta5epsilon1
6935 \end_layout
6937 \begin_layout Itemize
6938 Movieinfo: Fix display of port #2 type.
6939 \end_layout
6941 \begin_layout Itemize
6942 Call on_input() after loadstate.
6943 \end_layout
6945 \begin_layout Subsection
6946 rr1-delta5epsilon2
6947 \end_layout
6949 \begin_layout Itemize
6950 Fix writing port2 data to movie.
6951 \end_layout
6953 \begin_layout Itemize
6954 Fix SRAM handling with Bsnes v087.
6955 \end_layout
6957 \begin_layout Subsection
6958 rr1-delta6
6959 \end_layout
6961 \begin_layout Itemize
6962 Library loading support
6963 \end_layout
6965 \begin_layout Itemize
6966 Built-in TSCC encoder
6967 \end_layout
6969 \begin_layout Itemize
6970 Hi-color (256T colors) dumping.
6971 \end_layout
6973 \begin_layout Itemize
6974 Dump over TCP/IP(v6)
6975 \end_layout
6977 \begin_layout Itemize
6978 Hidable status panel
6979 \end_layout
6981 \begin_layout Itemize
6982 Turbo toggle/hold
6983 \end_layout
6985 \begin_layout Itemize
6986 Adjustable sound volume
6987 \end_layout
6989 \begin_layout Itemize
6990 Screen scaling
6991 \end_layout
6993 \begin_layout Itemize
6994 Allow DnD into filename boxes
6995 \end_layout
6997 \begin_layout Itemize
6998 Configurable paths
6999 \end_layout
7001 \begin_layout Itemize
7002 Portaudio: Fix speaker popping at start
7003 \end_layout
7005 \begin_layout Itemize
7006 Lots of UI changes
7007 \end_layout
7009 \begin_layout Itemize
7010 Speed adjustment menu
7011 \end_layout
7013 \begin_layout Itemize
7014 Win32 joystick support
7015 \end_layout
7017 \begin_layout Itemize
7018 Lua: gui.rainbow and gui.box
7019 \end_layout
7021 \begin_layout Itemize
7022 Split key lists into classes (the key list was large!)
7023 \end_layout
7025 \begin_layout Itemize
7026 More save slots support
7027 \end_layout
7029 \begin_layout Itemize
7030 Wxwidgets (wxJoystick) joystick support
7031 \end_layout
7033 \begin_layout Subsection
7034 rr1-delta7
7035 \end_layout
7037 \begin_layout Itemize
7038 Lots of internal joystick refactoring
7039 \end_layout
7041 \begin_layout Itemize
7042 Evdev: Add mapping for BTN_TOOL_QUINTTAP
7043 \end_layout
7045 \begin_layout Itemize
7046 Wxwidgets: Settings mode (open settings without ROM)
7047 \end_layout
7049 \begin_layout Itemize
7050 Wxwidgets: Prompt key to use option
7051 \end_layout
7053 \begin_layout Itemize
7054 Wxwidgets: Fix crash if key goes away underneath
7055 \end_layout
7057 \begin_layout Itemize
7058 Wxwidgets: Fix mouse position in presence of scaling
7059 \end_layout
7061 \begin_layout Itemize
7062 AVI dumper: Mode 4 (high-quality resampling to common rate using SRC)
7063 \end_layout
7065 \begin_layout Itemize
7066 Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree control doesn't
7067  seem to work well on WinXP)
7068 \end_layout
7070 \begin_layout Itemize
7071 Start paused option.
7072 \end_layout
7074 \begin_layout Subsection
7075 rr1-delta7epsilon1
7076 \end_layout
7078 \begin_layout Itemize
7079 AVI: ZMBV support
7080 \end_layout
7082 \begin_layout Itemize
7083 lsnes-dumpavi: Start Lua before starting dumper
7084 \end_layout
7086 \begin_layout Itemize
7087 AVI: Fix secondary audio in mode 4.
7088 \end_layout
7090 \begin_layout Subsection
7091 rr1-delta7epsilon2
7092 \end_layout
7094 \begin_layout Itemize
7095 AVI: Refactor ZMBV a bit.
7096 \end_layout
7098 \begin_layout Itemize
7099 Fix error reading analog values from movie file
7100 \end_layout
7102 \begin_layout Subsection
7103 rr1-delta8
7104 \end_layout
7106 \begin_layout Itemize
7107 Delayed reset support
7108 \end_layout
7110 \begin_layout Itemize
7111 Lua: memory.hash_region
7112 \end_layout
7114 \begin_layout Subsection
7115 rr1-delta8epsilon1
7116 \end_layout
7118 \begin_layout Itemize
7119 Rework the build system
7120 \end_layout
7122 \begin_layout Itemize
7123 Typing input support
7124 \end_layout
7126 \begin_layout Itemize
7127 Fix building with bsnes v086 and v087.
7128 \end_layout
7130 \begin_layout Itemize
7131 SDL: Save settings on exit
7132 \end_layout
7134 \begin_layout Itemize
7135 SDL: Command to enter command line mode with given command.
7136 \end_layout
7138 \begin_layout Itemize
7139 SDL: More advanced command editing.
7140 \end_layout
7142 \begin_layout Subsection
7143 rr1-delta9
7144 \end_layout
7146 \begin_layout Itemize
7147 wxMSW: Fix the 
7148 \begin_inset Quotes eld
7149 \end_inset
7151 arrow keys and enter don't work
7152 \begin_inset Quotes erd
7153 \end_inset
7155  problem
7156 \end_layout
7158 \begin_layout Itemize
7159 MSU-1 support
7160 \end_layout
7162 \begin_layout Itemize
7163 Show mode changes due to rewinding.
7164 \end_layout
7166 \begin_layout Itemize
7167 Unsafe rewind support
7168 \end_layout
7170 \begin_layout Itemize
7171 Fix directory transversal.
7172 \end_layout
7174 \begin_layout Subsection
7175 rr1-delta10
7176 \end_layout
7178 \begin_layout Itemize
7179 AVI: Sound mode 5 (48kHz high-quality)
7180 \end_layout
7182 \begin_layout Itemize
7183 Lua: Reset Lua VM
7184 \end_layout
7186 \begin_layout Itemize
7187 Map the SNES bus into address space
7188 \end_layout
7190 \begin_layout Itemize
7191 Fix loading memory watch files with CRLF line endings
7192 \end_layout
7194 \begin_layout Subsection
7195 rr1-delta10epsilon1
7196 \end_layout
7198 \begin_layout Itemize
7199 Map bsnes internal state into memory space
7200 \end_layout
7202 \begin_layout Itemize
7203 Fix the 
7204 \begin_inset Quotes eld
7205 \end_inset
7207 click on panel wedges the emulator
7208 \begin_inset Quotes erd
7209 \end_inset
7211  for real.
7212 \end_layout
7214 \begin_layout Itemize
7215 DnD movies/saves on the main window.
7216 \end_layout
7218 \begin_layout Subsection
7219 rr1-delta11
7220 \end_layout
7222 \begin_layout Itemize
7223 Split core bindings into own module.
7224 \end_layout
7226 \begin_layout Itemize
7227 Remember invalid settings
7228 \end_layout
7230 \begin_layout Itemize
7231 Support for modified Gambatte core for GB/GBC emulation.
7232 \end_layout
7234 \begin_layout Itemize
7235 Reload/swap ROM function
7236 \end_layout
7238 \begin_layout Subsection
7239 rr1-delta11epsilon1
7240 \end_layout
7242 \begin_layout Itemize
7243 Fix step poll function
7244 \end_layout
7246 \begin_layout Subsection
7247 rr1-delta12
7248 \end_layout
7250 \begin_layout Itemize
7251 Non-insane savestate anchoring
7252 \end_layout
7254 \begin_layout Subsection
7255 rr1-delta13
7256 \end_layout
7258 \begin_layout Itemize
7259 More Memory search methods
7260 \end_layout
7262 \begin_layout Itemize
7263 Preserve movie if loading in RO mode.
7264 \end_layout
7266 \begin_layout Itemize
7267 Fix a obscure case in timeline check
7268 \end_layout
7270 \begin_layout Itemize
7271 Revamp the entiere ROM loading code
7272 \end_layout
7274 \begin_layout Itemize
7275 Support DnD on ROMs
7276 \end_layout
7278 \begin_layout Itemize
7279 Revamp menu layout
7280 \end_layout
7282 \begin_layout Itemize
7283 Standalone hotkey config dialog
7284 \end_layout
7286 \begin_layout Itemize
7287 Show bindings in more user-friendly format
7288 \end_layout
7290 \begin_layout Subsection
7291 rr1-delta13epsilon1
7292 \end_layout
7294 \begin_layout Itemize
7295 Pipedec support
7296 \end_layout
7298 \begin_layout Itemize
7299 Fix uninitialized variables in bsnes v085
7300 \end_layout
7302 \begin_layout Subsection
7303 rr1-delta14
7304 \end_layout
7306 \begin_layout Itemize
7307 Merge gambatte core into mainline (from its own branch)
7308 \end_layout
7310 \begin_layout Itemize
7311 Wxwidgets: Show expected dump file formats
7312 \end_layout
7314 \begin_layout Itemize
7315 Memory watch: Data typing
7316 \end_layout
7318 \begin_layout Itemize
7319 lsnes internal MMIO area.
7320 \end_layout
7322 \begin_layout Itemize
7323 Wxwidgets: New memory watch editor
7324 \end_layout
7326 \begin_layout Itemize
7327 Hexadecimal memory watches
7328 \end_layout
7330 \begin_layout Itemize
7331 Wxwidgets: Monospaced panel
7332 \end_layout
7334 \begin_layout Itemize
7335 Wxwidgets: Split memory watches in panel
7336 \end_layout
7338 \begin_layout Itemize
7339 Wxwidgets: Disable VMAs in memory search
7340 \end_layout
7342 \begin_layout Itemize
7343 lsnes-dumpavi: Fix speed bug
7344 \end_layout
7346 \begin_layout Itemize
7347 Movie subtitle support
7348 \end_layout
7350 \begin_layout Itemize
7351 Fix rerecord count reporting
7352 \end_layout
7354 \begin_layout Itemize
7355 Don't trash movie when loading in readonly mode.
7356 \end_layout
7358 \begin_layout Subsection
7359 rr1-delta14epsilon1
7360 \end_layout
7362 \begin_layout Itemize
7363 Wxwidgets: Fix crashes on closing settings dialogs on Mac OS X.
7364 \end_layout
7366 \begin_layout Itemize
7367 Fix build on Mac OS X.
7368 \end_layout
7370 \begin_layout Itemize
7371 Lua: loopwrapper
7372 \end_layout
7374 \begin_layout Itemize
7375 Wxwidgets: Hidable messages window
7376 \end_layout
7378 \begin_layout Itemize
7379 Lua: input.joyset
7380 \end_layout
7382 \begin_layout Itemize
7383 Bsnes: Support inconsistent saves
7384 \end_layout
7386 \begin_layout Itemize
7387 Bsnes: Allow simulating saving every frame
7388 \end_layout
7390 \begin_layout Itemize
7391 Fix desync if savestate is loaded in readonly mode in certain conditions.
7392 \end_layout
7394 \begin_layout Itemize
7395 Wxwidgets: Fix save dialogs on Mac OS X.
7396 \end_layout
7398 \begin_layout Itemize
7399 Wxwidgets: Fix insane status width on Win32.
7400 \end_layout
7402 \begin_layout Itemize
7403 Wxwidgets: Fix autohold processing to be faster.
7404 \end_layout
7406 \begin_layout Itemize
7407 Wxwidgets: Allow loading ROMs and movies from commandline.
7408 \end_layout
7410 \begin_layout Subsection
7411 rr1-delta15
7412 \end_layout
7414 \begin_layout Itemize
7415 Be a bit smarter with --load
7416 \end_layout
7418 \begin_layout Itemize
7419 Rewrote higher-level parts of audio system
7420 \end_layout
7422 \begin_layout Itemize
7423 Tool to build commentary tracks
7424 \end_layout
7426 \begin_layout Itemize
7427 Lua: input.joyget
7428 \end_layout
7430 \begin_layout Itemize
7431 Gambatte: Add support for SVN358
7432 \end_layout
7434 \begin_layout Itemize
7435 Use builtin font when rendering status panel.
7436 \end_layout
7438 \begin_layout Itemize
7439 Option to detach memory watch to its own window.
7440 \end_layout
7442 \begin_layout Itemize
7443 Recent ROMs/Movies menu
7444 \end_layout
7446 \begin_layout Itemize
7447 Libao support
7448 \end_layout
7450 \begin_layout Itemize
7451 Useful lag counter for SNES games that autopoll
7452 \end_layout
7454 \begin_layout Itemize
7455 Fix buffer overflow in gambatte sound output
7456 \end_layout
7458 \begin_layout Subsection
7459 rr1-delta15epsilon1
7460 \end_layout
7462 \begin_layout Itemize
7463 Don't blow up on wxGTK if the window is hidden somehow
7464 \end_layout
7466 \begin_layout Itemize
7467 Support simultaneous drop of ROM and movie.
7468 \end_layout
7470 \begin_layout Itemize
7471 Gambatte: Don't save spurious SRAMs.
7472 \end_layout
7474 \begin_layout Itemize
7475 Make SGB ROMs actually usable.
7476 \end_layout
7478 \begin_layout Itemize
7479 Fix so that saved movies appear in recent movies.
7480 \end_layout
7482 \begin_layout Itemize
7483 Don't open multiple commentary editors at once.
7484 \end_layout
7486 \begin_layout Subsection
7487 rr1-delta15epsilon2
7488 \end_layout
7490 \begin_layout Itemize
7491 Lua: memory.readregion/memory.writeregion
7492 \end_layout
7494 \begin_layout Itemize
7495 Lua: memory.map{,s}{byte,word,dword,qword}
7496 \end_layout
7498 \begin_layout Itemize
7499 Lua: memory.map_structure
7500 \end_layout
7502 \begin_layout Itemize
7503 Lua: Fix bus_address for gambatte
7504 \end_layout
7506 \begin_layout Itemize
7507 Fix features dependent of bsnes debugger
7508 \end_layout
7510 \begin_layout Itemize
7511 Cleanup bsnes debugger logic
7512 \end_layout
7514 \begin_layout Itemize
7515 Fix resets in presence of save every frame
7516 \end_layout
7518 \begin_layout Subsection
7519 rr1-delta15epsilon3
7520 \end_layout
7522 \begin_layout Itemize
7523 Lua: input.lcid_to_pcid
7524 \end_layout
7526 \begin_layout Itemize
7527 Fix off-by-one bug with slot hashes
7528 \end_layout
7530 \begin_layout Itemize
7531 Fix crashes on certain memory watch expressions
7532 \end_layout
7534 \begin_layout Itemize
7535 Lua: memory.read_expr
7536 \end_layout
7538 \begin_layout Itemize
7539 Lua: Fix memory.read_expr on nil argument
7540 \end_layout
7542 \begin_layout Itemize
7543 Fix the code to compile on G++ 4.7
7544 \end_layout
7546 \begin_layout Itemize
7547 Change button_id to be a function pointer field, not a virtual method
7548 \end_layout
7550 \begin_layout Itemize
7551 Add bsnes patches to fix libsnes to compile on GCC 4.7
7552 \end_layout
7554 \begin_layout Itemize
7555 Gambatte: Always use legacy lag counting
7556 \end_layout
7558 \begin_layout Itemize
7559 Memory commands: Memory addresses are up to 16 hex digits, not up to 8
7560 \end_layout
7562 \begin_layout Itemize
7563 Fix analog controllers
7564 \end_layout
7566 \begin_layout Itemize
7567 Fix autohold menus
7568 \end_layout
7570 \begin_layout Itemize
7571 Fix button symbols in input display
7572 \end_layout
7574 \begin_layout Itemize
7575 Compensate for nuts bsnes superscope/justifier handling
7576 \end_layout
7578 \begin_layout Itemize
7579 Lua: Fix bit.extract boolean handling
7580 \end_layout
7582 \begin_layout Subsection
7583 rr1-delta16
7584 \end_layout
7586 \begin_layout Itemize
7587 Stop at movie end: Don't off-by-one
7588 \end_layout
7590 \begin_layout Itemize
7591 Fix crash closing lsnes with voice playback active.
7592 \end_layout
7594 \begin_layout Itemize
7595 Import/Export OggOpus for commentary tracks
7596 \end_layout
7598 \begin_layout Itemize
7599 16-button controllers.
7600 \end_layout
7602 \begin_layout Itemize
7603 Don't show nonexistent controllers in input display
7604 \end_layout
7606 \begin_layout Itemize
7607 Set voice record/playback volume from UI
7608 \end_layout
7610 \begin_layout Itemize
7611 Patches for gambatte SVN364.
7612 \end_layout
7614 \begin_layout Itemize
7615 Load markup (if exists) even without gamepack file.
7616 \end_layout
7618 \begin_layout Itemize
7619 Screen rotation & flipping
7620 \end_layout
7622 \begin_layout Itemize
7623 Lua: Some new bit functions
7624 \end_layout
7626 \begin_layout Itemize
7627 Auto-refresh voice streams on change.
7628 \end_layout
7630 \begin_layout Itemize
7631 Auto-refresh subtitles on change & new subtitle editor.
7632 \end_layout
7634 \begin_layout Itemize
7635 Fix music volume adjustment.
7636 \end_layout
7638 \begin_layout Subsection
7639 rr1-delta16epsilon1
7640 \end_layout
7642 \begin_layout Itemize
7643 Wxwidgets: Fix memory watch rendering.
7644 \end_layout
7646 \begin_layout Itemize
7647 Wxwidgets: Allow setting voice stream gain.
7648 \end_layout
7650 \begin_layout Itemize
7651 Wxwidgets: VU meters and volume adjustment.
7652 \end_layout
7654 \begin_layout Itemize
7655 Lua: Custom fonts support.
7656 \end_layout
7658 \begin_layout Itemize
7659 Lua: Fix methods stopping working when resetting Lua.
7660 \end_layout
7662 \begin_layout Itemize
7663 Fix loading standard-format movies in preserve (readonly) mode.
7664 \end_layout
7666 \begin_layout Subsection
7667 rr1-delta17
7668 \end_layout
7670 \begin_layout Itemize
7671 Primitive movie editor
7672 \end_layout
7674 \begin_layout Itemize
7675 Fix VU meter with no sound device.
7676 \end_layout
7678 \begin_layout Itemize
7679 Fix various undefined return values.
7680 \end_layout
7682 \begin_layout Itemize
7683 Show rates in VU meter window.
7684 \end_layout
7686 \end_body
7687 \end_document