Small documentation fixups regarding joysticks/gamepads
[lsnes.git] / manual.lyx
blob42ed2f3fa9609c78cb4ba324881d41c03f67fa95
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 Command line options
64 \end_layout
66 \begin_layout Subsection
67 ROM options
68 \end_layout
70 \begin_layout Standard
71 These options control loading the ROM.
72  <kind> can be one of following:
73 \end_layout
75 \begin_layout Itemize
76 rom: main cart ROM.
77 \end_layout
79 \begin_layout Itemize
80 bsx: BS-X flash ROM in non-slotted mode.
81 \end_layout
83 \begin_layout Itemize
84 bsxslotted: BS-X flash ROM in slotted mode.
85 \end_layout
87 \begin_layout Itemize
88 dmg: Game Boy ROM
89 \end_layout
91 \begin_layout Itemize
92 slot-a: Sufami Turbo Slot A.
93 \end_layout
95 \begin_layout Itemize
96 slot-b: Sufami Turbo Slot B.
97 \end_layout
99 \begin_layout Subsubsection
100 --<kind>=<file>
101 \end_layout
103 \begin_layout Standard
104 Set the <file> to use as ROM of <kind>.
105 \end_layout
107 \begin_layout Subsubsection
108 --ips-<kind>=<file>
109 \end_layout
111 \begin_layout Standard
112 Apply IPS patch <file> to ROM of <kind>
113 \end_layout
115 \begin_layout Subsubsection
116 --<kind>-xml=<file>
117 \end_layout
119 \begin_layout Standard
120 Set the <file> to use as ROM mapping for <kind>.
121  If no mapping file is specified, defaults are used.
122 \end_layout
124 \begin_layout Subsubsection
125 --ips-<kind>-xml=<file>
126 \end_layout
128 \begin_layout Standard
129 Apply IPS patch <file> to ROM mapping for <kind>.
130 \end_layout
132 \begin_layout Subsubsection
133 --ips-offset=<offset>
134 \end_layout
136 \begin_layout Standard
137 Set IPS apply offset to <offset> (can be negative).
138  In practicular, <offset> of -512 might be handy for applying headered IPS
139  patches.
140 \end_layout
142 \begin_layout Subsubsection
143 --pal
144 \end_layout
146 \begin_layout Standard
147 Force ROM to be considered PAL-only (warning: Will cause error if used on
148  anything except SNES and SGB).
149 \end_layout
151 \begin_layout Subsubsection
152 --ntsc
153 \end_layout
155 \begin_layout Standard
156 Force ROM to be considered NTSC-only (default for everything except SNES
157  and SGB).
158 \end_layout
160 \begin_layout Subsection
161 New session options (not for lsnes-avidump.exe)
162 \end_layout
164 \begin_layout Standard
165 If filename is not specified, new session is started.
166  These options control properties of that:
167 \end_layout
169 \begin_layout Subsubsection
170 --port1=<type>
171 \end_layout
173 \begin_layout Standard
174 Set type of port1 (default is 'gamepad').
175  Valid values are 'none', 'gamepad', 'multitap' (warning: makes most games
176  refuse to start) and 'mouse'.
177 \end_layout
179 \begin_layout Subsubsection
180 --port2=<type>
181 \end_layout
183 \begin_layout Standard
184 Set type of port2 (default is 'none').
185  Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
186  'justifier' and 'justifiers'.
187 \end_layout
189 \begin_layout Subsubsection
190 --gamename=<name>
191 \end_layout
193 \begin_layout Standard
194 Set the name of game to <name>
195 \end_layout
197 \begin_layout Subsubsection
198 --author=<name>
199 \end_layout
201 \begin_layout Standard
202 Add author with full name of <name> (no nickname).
203 \end_layout
205 \begin_layout Subsubsection
206 --author=|<name>
207 \end_layout
209 \begin_layout Standard
210 Add author with nickname of <name> (no full name).
211 \end_layout
213 \begin_layout Subsubsection
214 --author=<fullname>|<nickname>
215 \end_layout
217 \begin_layout Standard
218 Add author with full name of <fullname> and nickname of <nickname>.
219 \end_layout
221 \begin_layout Subsection
222 <filename>
223 \end_layout
225 \begin_layout Standard
226 If filename is specified on command line, it is loaded as initial state
227  (instead of constructing one).
228 \end_layout
230 \begin_layout Standard
231 Mandatory for lsnes-avidump.exe
232 \end_layout
234 \begin_layout Subsection
235 lsnes-avidump.exe options
236 \end_layout
238 \begin_layout Subsubsection
239 --prefix=<prefix>
240 \end_layout
242 \begin_layout Standard
243 Set dump prefix.
244  Default is 
245 \begin_inset Quotes eld
246 \end_inset
248 avidump
249 \begin_inset Quotes erd
250 \end_inset
253 \end_layout
255 \begin_layout Subsubsection
256 --level=<level>
257 \end_layout
259 \begin_layout Standard
260 Set compression level (0-18).
261  Default is 7.
262 \end_layout
264 \begin_layout Subsubsection
265 --length=<length>
266 \end_layout
268 \begin_layout Standard
269 Set number of frames to dump.
270  Mandatory.
271 \end_layout
273 \begin_layout Subsubsection
274 --lua=<script>
275 \end_layout
277 \begin_layout Standard
278 Run specified lua script.
279 \end_layout
281 \begin_layout Section
282 Movieinfo.exe
283 \end_layout
285 \begin_layout Itemize
286 Syntax: Movieinfo.exe <file>
287 \end_layout
289 \begin_layout Standard
290 Opens <file> and parses it as a movie, giving all sorts of information about
291  it.
292 \end_layout
294 \begin_layout Section
295 Startup file lsnes.rc
296 \end_layout
298 \begin_layout Standard
299 Upon startup, lsnes executes file lsnes.rc as commands.
300  This file is located in:
301 \end_layout
303 \begin_layout Itemize
304 Windows: %APPDATA%
305 \backslash
306 lsnes
307 \backslash
308 lsnes.rc (if %APPDATA% exists)
309 \end_layout
311 \begin_layout Itemize
312 Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME exists)
313 \end_layout
315 \begin_layout Itemize
316 Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
317 \end_layout
319 \begin_layout Itemize
320 All: ./lsnes.rc (fallback default).
321 \end_layout
323 \begin_layout Standard
324 If leading directories do not exist, attempt to create them is made.
325 \end_layout
327 \begin_layout Subsection
328 --run=<file>
329 \end_layout
331 \begin_layout Standard
332 If command line parameter --run=<file> is specified, that file is run after
333  lsnes.rc has executed.
334  If multiple such options are present, the files are run in order specified.
335 \end_layout
337 \begin_layout Section
338 Game internal commands
339 \end_layout
341 \begin_layout Itemize
342 Commands beginning with '*' invoke the corresponding command without alias
343  expansion.
344 \end_layout
346 \begin_layout Itemize
347 If command starts with '+', the command is executed as-is when button is
348  pressed, and when button is released, it is executed with '+' replaced
349  by '-'.
350 \end_layout
352 \begin_layout Subsection
353 Settings:
354 \end_layout
356 \begin_layout Standard
357 Settings control various aspects of emulator behaviour.
358 \end_layout
360 \begin_layout Subsubsection
361 set-setting <setting> <value>
362 \end_layout
364 \begin_layout Standard
365 Sets setting <setting> to value <value> (may be empty).
366 \end_layout
368 \begin_layout Subsubsection
369 unset-setting <setting>
370 \end_layout
372 \begin_layout Standard
373 Try to unset setting <setting> (not all settings can be unset).
374 \end_layout
376 \begin_layout Subsubsection
377 get-setting <setting>
378 \end_layout
380 \begin_layout Standard
381 Read value of setting <setting>
382 \end_layout
384 \begin_layout Subsubsection
385 print-settings
386 \end_layout
388 \begin_layout Standard
389 Print names and values of all settings.
390 \end_layout
392 \begin_layout Subsection
393 Keybindings
394 \end_layout
396 \begin_layout Standard
397 Keybindings bind commands or aliases to keys (or pseudo-keys).
399 \end_layout
401 \begin_layout Standard
402 Notes:
403 \end_layout
405 \begin_layout Itemize
406 Do not bind edge active (+/-) commands to keys with modifiers, that won't
407  work right!
408 \end_layout
410 \begin_layout Itemize
411 Names of keys and modifiers are platform-dependent.
412 \end_layout
414 \begin_layout Subsubsection
415 bind-key [<mod>/<modmask>] <key> <command>
416 \end_layout
418 \begin_layout Standard
419 Bind <command> to key <key> (activating if modifiers in <modmask> (comma-seperat
420 ed list) are set as <mod> (comma-seperated list).
422 \end_layout
424 \begin_layout Subsubsection
425 unbind-key [<mod>/<modmask>] <key>
426 \end_layout
428 \begin_layout Standard
429 Unbind command from <key> (with specified <mod> and <modmask>).
430 \end_layout
432 \begin_layout Subsubsection
433 print-keybindings
434 \end_layout
436 \begin_layout Standard
437 Print all key bindings in effect.
438 \end_layout
440 \begin_layout Subsection
441 Aliases
442 \end_layout
444 \begin_layout Standard
445 Aliases bind command to sequence of commands.
446  After alias has been defined, it replaces the command it shadows.
447 \end_layout
449 \begin_layout Standard
450 Notes:
451 \end_layout
453 \begin_layout Itemize
454 You can't alias command to itself.
455 \end_layout
457 \begin_layout Itemize
458 Aliases starting with +/- are edge active just like ordinary commands starting
459  with +/-.
460 \end_layout
462 \begin_layout Itemize
463 One command can be aliased to multiple commands.
464 \end_layout
466 \begin_layout Subsubsection
467 alias-command <command> <expansion>
468 \end_layout
470 \begin_layout Standard
471 Append <expansion> to alias <command>.
472 \end_layout
474 \begin_layout Subsubsection
475 unalias-command <command>
476 \end_layout
478 \begin_layout Standard
479 Clear alias expansion for <command>.
480 \end_layout
482 \begin_layout Subsubsection
483 print-aliases
484 \end_layout
486 \begin_layout Standard
487 Print all aliases and their expansions in effect.
488 \end_layout
490 \begin_layout Subsection
491 run-script <script>
492 \end_layout
494 \begin_layout Standard
495 Run <script> as if commands were entered on command line.
496 \end_layout
498 \begin_layout Subsection
499 Video dumping
500 \end_layout
502 \begin_layout Standard
503 Following commands control video dumping:
504 \end_layout
506 \begin_layout Subsubsection
507 dump-avi <level> <prefix>
508 \end_layout
510 \begin_layout Standard
511 Dump AVI video to prefix <prefix> at level <level> (0-18).
512 \end_layout
514 \begin_layout Itemize
515 The codec is Camstudio Codec in gzip mode.
516 \end_layout
518 \begin_layout Itemize
519 Encoder and muxer are internal, available on all platforms.
520 \end_layout
522 \begin_layout Itemize
523 Audio enable/disable and framerate has no effect.
524 \end_layout
526 \begin_layout Itemize
527 Warning: Levels 10-18 are not compatible with AVISource.
528 \end_layout
530 \begin_layout Itemize
531 Recomended level is 7 if decoded by AVISource.
532 \end_layout
534 \begin_layout Itemize
535 Recomended level is 16 if decoded by ffmpeg, mencoder or FFMpegSource.
536 \end_layout
538 \begin_layout Standard
539 Note: The audio dumped to .avi is low-quality version.
540  The high-quality version is dumped to .sox file.
541 \end_layout
543 \begin_layout Subsubsection
544 end-avi
545 \end_layout
547 \begin_layout Standard
548 End current AVI video dump.
549 \end_layout
551 \begin_layout Subsection
552 Memory manipulation
553 \end_layout
555 \begin_layout Standard
556 <address> may be decimal or hexadecimal (prefixed with '0x').
557  <value> can be hexadecimal (prefixed with '0x'), unsigned or signed (prefixed
558  with '-') decimal.
559 \end_layout
561 \begin_layout Standard
562 The available element <sizes> are:
563 \end_layout
565 \begin_layout Itemize
566 byte: 1 byte
567 \end_layout
569 \begin_layout Itemize
570 word: 2 bytes
571 \end_layout
573 \begin_layout Itemize
574 dword: 4 bytes
575 \end_layout
577 \begin_layout Itemize
578 qword: 8 bytes
579 \end_layout
581 \begin_layout Standard
582 When reading RAM and ROM, multi-byte reads/writes are big-endian.
583  When dealing with DSP memory, multi-byte reads/writes are native-endian
584  (do not use operand sizes exceeding DSP bitness, except dword is OK for
585  24-bit memory).
586 \end_layout
588 \begin_layout Subsubsection
589 read-<size> <address>
590 \end_layout
592 \begin_layout Standard
593 Read the value of byte in <address>.
594 \end_layout
596 \begin_layout Subsubsection
597 read-s<size> <address>
598 \end_layout
600 \begin_layout Standard
601 Read the value of signed byte in <address>.
602 \end_layout
604 \begin_layout Subsubsection
605 write-<size> <address> <value>
606 \end_layout
608 \begin_layout Standard
609 Write <value> to byte in address <address>.
610 \end_layout
612 \begin_layout Subsubsection
613 search-memory reset
614 \end_layout
616 \begin_layout Standard
617 Reset the memory search
618 \end_layout
620 \begin_layout Subsubsection
621 search-memory count
622 \end_layout
624 \begin_layout Standard
625 Print number of candidates remaining
626 \end_layout
628 \begin_layout Subsubsection
629 search-memory print
630 \end_layout
632 \begin_layout Standard
633 Print all candidates remaining
634 \end_layout
636 \begin_layout Subsubsection
637 search-memory <usflag><sizeflag><op>
638 \end_layout
640 \begin_layout Standard
641 Searches memory for addresses satisfying criteria.
642 \end_layout
644 \begin_layout Standard
645 <usflag> can be:
646 \end_layout
648 \begin_layout Itemize
649 u: unsigned
650 \end_layout
652 \begin_layout Itemize
653 s: signed
654 \end_layout
656 \begin_layout Standard
657 <sizeflag> can be:
658 \end_layout
660 \begin_layout Itemize
661 b: byte
662 \end_layout
664 \begin_layout Itemize
665 w: word
666 \end_layout
668 \begin_layout Itemize
669 d: dword
670 \end_layout
672 \begin_layout Itemize
673 q: qword
674 \end_layout
676 \begin_layout Standard
677 <op> can be:
678 \end_layout
680 \begin_layout Itemize
681 lt: < previous value.
682 \end_layout
684 \begin_layout Itemize
685 le: <= previous value.
686 \end_layout
688 \begin_layout Itemize
689 eq: = previous value.
690 \end_layout
692 \begin_layout Itemize
693 ne: != previous value.
694 \end_layout
696 \begin_layout Itemize
697 ge: >= previous value.
698 \end_layout
700 \begin_layout Itemize
701 gt: > previous value.
702 \end_layout
704 \begin_layout Subsubsection
705 search-memory <sizeflag> <value>
706 \end_layout
708 \begin_layout Standard
709 Searches for addresses that currently have value <value>.
710  <sizeflag> is as in previous command.
711 \end_layout
713 \begin_layout Subsection
714 Main commands
715 \end_layout
717 \begin_layout Standard
718 These commands are not available in lsnesrc, but are available after ROM
719  has been loaded.
720 \end_layout
722 \begin_layout Subsubsection
723 quit-emulator [/y]
724 \end_layout
726 \begin_layout Standard
727 Quits the emulator (asking for confirmation).
728  If /y is given, no confirmation is asked.
729 \end_layout
731 \begin_layout Subsubsection
732 pause-emulator
733 \end_layout
735 \begin_layout Standard
736 Toggle paused/unpaused
737 \end_layout
739 \begin_layout Subsubsection
740 +advance-frame
741 \end_layout
743 \begin_layout Standard
744 Advance frame.
745  If the button is still held after configurable timeout expires, game unpauses
746  for the duration frame advance is held.
747 \end_layout
749 \begin_layout Subsubsection
750 +advance-poll
751 \end_layout
753 \begin_layout Standard
754 Advance subframe.
755  If the button is still held after configurable timeout expires, game unpauses
756  for the duration frame advance is held.
757 \end_layout
759 \begin_layout Subsubsection
760 advance-skiplag
761 \end_layout
763 \begin_layout Standard
764 Skip to first poll in frame after current.
765 \end_layout
767 \begin_layout Subsubsection
768 reset
769 \end_layout
771 \begin_layout Standard
772 Reset the SNES after this frame.
773 \end_layout
775 \begin_layout Subsubsection
776 load-state <filename>
777 \end_layout
779 \begin_layout Standard
780 Load savestate <filename> in readwrite mode.
781 \end_layout
783 \begin_layout Subsubsection
784 load-readonly <filename>
785 \end_layout
787 \begin_layout Standard
788 Load savestate <filename> in readonly mode.
789 \end_layout
791 \begin_layout Subsubsection
792 load-preserve <filename>
793 \end_layout
795 \begin_layout Standard
796 Load savestate <filename> in readonly mode, preserving current events.
797 \end_layout
799 \begin_layout Subsubsection
800 load-movie <filename>
801 \end_layout
803 \begin_layout Standard
804 Load savestate <filename>, ignoring save part in readonly mode.
805 \end_layout
807 \begin_layout Subsubsection
808 save-state <filename>
809 \end_layout
811 \begin_layout Standard
812 Save system state to <filename> as soon as possible.
813 \end_layout
815 \begin_layout Subsubsection
816 save-movie <filename>
817 \end_layout
819 \begin_layout Standard
820 Save movie to <filename>.
821 \end_layout
823 \begin_layout Subsubsection
824 set-rwmode
825 \end_layout
827 \begin_layout Standard
828 Set read-write mode.
829 \end_layout
831 \begin_layout Subsubsection
832 set-gamename <name>
833 \end_layout
835 \begin_layout Standard
836 Set name of the game to <name>
837 \end_layout
839 \begin_layout Subsubsection
840 get-gamename
841 \end_layout
843 \begin_layout Standard
844 Print the name of the game.
845 \end_layout
847 \begin_layout Subsubsection
848 add-author <author>
849 \end_layout
851 \begin_layout Standard
852 Adds new author <author>.
853  If <author> does not contain '|' it is full name.
854  If it contains '|', '|' splits the full name and nickname.
855 \end_layout
857 \begin_layout Subsubsection
858 edit-author <num> <author>
859 \end_layout
861 \begin_layout Standard
862 Edit the author in slot <num> (0-based) to be <author> (see add-author for
863  format)
864 \end_layout
866 \begin_layout Subsubsection
867 remove-author <num>
868 \end_layout
870 \begin_layout Standard
871 Remove author in slot <num>
872 \end_layout
874 \begin_layout Subsubsection
875 print-authors
876 \end_layout
878 \begin_layout Standard
879 Print authors.
880 \end_layout
882 \begin_layout Subsubsection
883 test-1, test-2, test-3
884 \end_layout
886 \begin_layout Standard
887 Internal test commands
888 \end_layout
890 \begin_layout Subsubsection
891 take-screenshot <filename>
892 \end_layout
894 \begin_layout Standard
895 Save screenshot to <filename>.
896 \end_layout
898 \begin_layout Subsubsection
899 +controller<num><button>
900 \end_layout
902 \begin_layout Standard
903 Press button <button> on controller <num> (1-8).
904  The following button names are known:
905 \end_layout
907 \begin_layout Itemize
908 left
909 \end_layout
911 \begin_layout Itemize
912 right
913 \end_layout
915 \begin_layout Itemize
917 \end_layout
919 \begin_layout Itemize
920 down
921 \end_layout
923 \begin_layout Itemize
925 \end_layout
927 \begin_layout Itemize
929 \end_layout
931 \begin_layout Itemize
933 \end_layout
935 \begin_layout Itemize
937 \end_layout
939 \begin_layout Itemize
941 \end_layout
943 \begin_layout Itemize
945 \end_layout
947 \begin_layout Itemize
948 select
949 \end_layout
951 \begin_layout Itemize
952 start
953 \end_layout
955 \begin_layout Itemize
956 trigger
957 \end_layout
959 \begin_layout Itemize
960 cursor
961 \end_layout
963 \begin_layout Itemize
964 pause
965 \end_layout
967 \begin_layout Itemize
968 turbo
969 \end_layout
971 \begin_layout Subsubsection
972 controllerh<num><button>
973 \end_layout
975 \begin_layout Standard
976 Hold/unhold button <button> on controller <num> (1-8).
977  See +controller for button names.
978 \end_layout
980 \begin_layout Subsubsection
981 autofire (<pattern>|-)...
982 \end_layout
984 \begin_layout Standard
985 Set autofire pattern.
986  Each parameter is comma-separated list of button names (in form of 1start,
987  1A, 2B, etc..) to hold on that frame.
988  After reaching the end of pattern, the pattern restarts from the beginning.
989 \end_layout
991 \begin_layout Subsubsection
992 repaint
993 \end_layout
995 \begin_layout Standard
996 Force a repaint.
997 \end_layout
999 \begin_layout Subsection
1000 Save jukebox
1001 \end_layout
1003 \begin_layout Subsubsection
1004 cycle-jukebox-backward
1005 \end_layout
1007 \begin_layout Standard
1008 Cycle save jukebox backwards.
1009 \end_layout
1011 \begin_layout Subsubsection
1012 cycle-jukebox-forward
1013 \end_layout
1015 \begin_layout Standard
1016 Cycle save jukebox forwards
1017 \end_layout
1019 \begin_layout Subsubsection
1020 add-jukebox-save <filename>
1021 \end_layout
1023 \begin_layout Standard
1024 Add <filename> to jukebox saves.
1025 \end_layout
1027 \begin_layout Subsubsection
1028 load-jukebox
1029 \end_layout
1031 \begin_layout Standard
1032 Do R/W load from jukebox.
1033 \end_layout
1035 \begin_layout Subsubsection
1036 save-jukebox
1037 \end_layout
1039 \begin_layout Standard
1040 Do state save to jukebox.
1041 \end_layout
1043 \begin_layout Subsection
1045 \end_layout
1047 \begin_layout Standard
1048 Only available if lua support is compiled in.
1049 \end_layout
1051 \begin_layout Subsubsection
1052 eval-lua <luacode>
1053 \end_layout
1055 \begin_layout Standard
1056 Run Lua code <luacode> using built-in Lua interpretter.
1057 \end_layout
1059 \begin_layout Subsubsection
1060 run-lua <script>
1061 \end_layout
1063 \begin_layout Standard
1064 Run specified lua file using built-in Lua interpretter.
1065 \end_layout
1067 \begin_layout Subsection
1068 Memory watch
1069 \end_layout
1071 \begin_layout Subsubsection
1072 add-watch <name> <expression>
1073 \end_layout
1075 \begin_layout Standard
1076 Adds new watch (or modifies old one).
1077 \end_layout
1079 \begin_layout Subsubsection
1080 remove-watch <name>
1081 \end_layout
1083 \begin_layout Standard
1084 Remove a watch.
1085 \end_layout
1087 \begin_layout Section
1088 Settings
1089 \end_layout
1091 \begin_layout Subsection
1092 firmwarepath
1093 \end_layout
1095 \begin_layout Standard
1096 Set where bsnes looks for firmware files.
1097  Default is 
1098 \begin_inset Quotes eld
1099 \end_inset
1102 \begin_inset Quotes erd
1103 \end_inset
1106 \end_layout
1108 \begin_layout Subsection
1109 targetfps
1110 \end_layout
1112 \begin_layout Standard
1113 Set the target fps.
1114  Numeric, range is 0.001 to 
1115 \begin_inset Quotes eld
1116 \end_inset
1118 infinite
1119 \begin_inset Quotes erd
1120 \end_inset
1123  Default is native framerate.
1124 \end_layout
1126 \begin_layout Subsection
1127 savecompression
1128 \end_layout
1130 \begin_layout Standard
1131 Set save compression level (integer 0-9).
1132  Default is 7 (0 is no compression).
1133 \end_layout
1135 \begin_layout Subsection
1136 advance-timeout
1137 \end_layout
1139 \begin_layout Standard
1140 Set the frame advance timeout in milliseconds.
1141  Numeric integer, range is 0-999999999.
1142  Default is 500.
1143 \end_layout
1145 \begin_layout Subsection
1146 avi-large
1147 \end_layout
1149 \begin_layout Standard
1150 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1151  outputs.
1152 \end_layout
1154 \begin_layout Subsection
1155 avi-left-border
1156 \end_layout
1158 \begin_layout Standard
1159 AVI dumper: Set the default left border thickness (unless lua overrides)
1160  for dumps.
1161  Range 0-8191.
1162  Default is 0.
1163 \end_layout
1165 \begin_layout Subsection
1166 avi-right-border
1167 \end_layout
1169 \begin_layout Standard
1170 AVI dumper: Set the default right border thickness (unless lua overrides)
1171  for dumps.
1172  Range 0-8191.
1173  Default is 0.
1174 \end_layout
1176 \begin_layout Subsection
1177 avi-top-border
1178 \end_layout
1180 \begin_layout Standard
1181 AVI dumper: Set the default top border thickness (unless lua overrides)
1182  for dumps.
1183  Range 0-8191.
1184  Default is 0.
1185 \end_layout
1187 \begin_layout Subsection
1188 avi-bottom-border
1189 \end_layout
1191 \begin_layout Standard
1192 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1193  for dumps.
1194  Range 0-8191.
1195  Default is 0.
1196 \end_layout
1198 \begin_layout Subsection
1199 avi-maxframes
1200 \end_layout
1202 \begin_layout Standard
1203 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1204  Range 0-999999999.
1205  Default is 0.
1206 \end_layout
1208 \begin_layout Section
1209 Lua functions
1210 \end_layout
1212 \begin_layout Subsection
1213 Core (in main table)
1214 \end_layout
1216 \begin_layout Subsubsection
1217 print
1218 \end_layout
1220 \begin_layout Standard
1221 Print line to message console.
1222 \end_layout
1224 \begin_layout Subsubsection
1225 exec(string command)
1226 \end_layout
1228 \begin_layout Standard
1229 Run command as it was entered on the command line
1230 \end_layout
1232 \begin_layout Subsection
1233 Table bit:
1234 \end_layout
1236 \begin_layout Standard
1237 Bitwise logical functions and related.
1238 \end_layout
1240 \begin_layout Subsubsection
1241 none(number...) / bnot(number...)
1242 \end_layout
1244 \begin_layout Standard
1245 48-bit bitwise NOT / NONE function (set bits that are set in none of the
1246  arguments).
1247 \end_layout
1249 \begin_layout Subsubsection
1250 any(number...) / bor(number...)
1251 \end_layout
1253 \begin_layout Standard
1254 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
1255 \end_layout
1257 \begin_layout Subsubsection
1258 all(number...) / band(number...)
1259 \end_layout
1261 \begin_layout Standard
1262 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
1264 \end_layout
1266 \begin_layout Subsubsection
1267 parity(number...) / bxor(number...)
1268 \end_layout
1270 \begin_layout Standard
1271 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
1272  of the arguments).
1273 \end_layout
1275 \begin_layout Subsubsection
1276 lrotate(number base[, number amount[, number bits]])
1277 \end_layout
1279 \begin_layout Standard
1280 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
1281 \end_layout
1283 \begin_layout Subsubsection
1284 rrotate(number base[, number amount[, number bits]])
1285 \end_layout
1287 \begin_layout Standard
1288 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
1289  places.
1290 \end_layout
1292 \begin_layout Subsubsection
1293 lshift(number base[, number amount[, number bits]])
1294 \end_layout
1296 \begin_layout Standard
1297 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
1298  The new bits are filled with zeroes.
1299 \end_layout
1301 \begin_layout Subsubsection
1302 lrshift(number base[, number amount[, number bits]])
1303 \end_layout
1305 \begin_layout Standard
1306 Shift bits-bit (max 48, default 48) number logically right by amount (default
1307  1) places.
1308  The new bits are filled with zeroes.
1309 \end_layout
1311 \begin_layout Subsubsection
1312 arshift(number base[, number amount[, number bits]])
1313 \end_layout
1315 \begin_layout Standard
1316 Shift bits-bit (max 48, default 48) number arithmetically right by amount
1317  (default 1) places.
1318  The new bits are shifted in with copy of the high bit.
1319 \end_layout
1321 \begin_layout Subsection
1322 Table gui:
1323 \end_layout
1325 \begin_layout Standard
1326 Most of these functions can only be called in on_paint and on_video callbacks.
1327  Exceptions are noted.
1328 \end_layout
1330 \begin_layout Subsubsection
1331 gui.resolution()
1332 \end_layout
1334 \begin_layout Standard
1335 Returns 5-tuple (hresolution, vresolution, rshift, gshift, bshift).
1336 \end_layout
1338 \begin_layout Subsubsection
1339 gui.<class>_gap(number gap)
1340 \end_layout
1342 \begin_layout Standard
1343 Set the <class> (left, right, top, bottom) gap to specified value (max gap
1344  is 8191).
1345 \end_layout
1347 \begin_layout Subsubsection
1348 gui.text(number x, number y, string text[, number fgc[, number fga[, number
1349  bgc[, number bga]]]])
1350 \end_layout
1352 \begin_layout Standard
1353 Draw text on the GUI.
1354  Font size is 8(or 16) by 16.
1355  Notes:
1356 \end_layout
1358 \begin_layout Itemize
1359 Coordinate origin is at top-left of the game area.
1360  Left and top gaps have negative coordinates.
1361 \end_layout
1363 \begin_layout Itemize
1364 Use gui.resolution() to discover how to layout colors.
1365 \end_layout
1367 \begin_layout Itemize
1368 Alpha range is 0(transparent)-256(opaque).
1369 \end_layout
1371 \begin_layout Itemize
1372 Only available in on_paint() and on_video() callbacks.
1373 \end_layout
1375 \begin_layout Subsubsection
1376 gui.repaint()
1377 \end_layout
1379 \begin_layout Standard
1380 Request on_repaint() to happen as soon as possible.
1381  Can be used anywhere.
1382 \end_layout
1384 \begin_layout Subsubsection
1385 gui.subframe_update(boolean on)
1386 \end_layout
1388 \begin_layout Standard
1389 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
1390  or not happen (on=false).
1391  Can be used anywhere.
1392 \end_layout
1394 \begin_layout Subsection
1395 table input
1396 \end_layout
1398 \begin_layout Standard
1399 Input handling.
1400  Only available in on_input callback.
1401 \end_layout
1403 \begin_layout Subsection
1404 get(number controller, number index)
1405 \end_layout
1407 \begin_layout Standard
1408 Read the specified index (0-11) from specified controller (0-7).
1409  Notes:
1410 \end_layout
1412 \begin_layout Itemize
1413 Uses physical controller numbering.
1414  Gamepad in port 2 is controller 4, not 1!
1415 \end_layout
1417 \begin_layout Subsection
1418 set(number controller, number index, number value)
1419 \end_layout
1421 \begin_layout Standard
1422 Write the specified index (0-11) from specified controller (0-7), storing
1423  value.
1424  Notes:
1425 \end_layout
1427 \begin_layout Itemize
1428 Uses physical controller numbering.
1429  Gamepad in port 2 is controller 4, not 1!
1430 \end_layout
1432 \begin_layout Subsection
1433 reset([number cycles])
1434 \end_layout
1436 \begin_layout Standard
1437 Execute reset.
1438  If cycles is greater than zero, do delayed reset.
1439 \end_layout
1441 \begin_layout Itemize
1442 Only available with subframe flag false.
1443 \end_layout
1445 \begin_layout Subsection
1446 Table hostmemory
1447 \end_layout
1449 \begin_layout Standard
1450 Host memory handling (extra memory saved to savestates).
1451  Host memory starts empty.
1452 \end_layout
1454 \begin_layout Subsubsection
1455 read(number address)
1456 \end_layout
1458 \begin_layout Standard
1459 Reads hostmemory slot address.
1460  Slot numbers out of range return false instead of numeric.
1461 \end_layout
1463 \begin_layout Subsubsection
1464 write(number address, number value)
1465 \end_layout
1467 \begin_layout Standard
1468 Writes hostmemory slot with 0-255.
1469  Slot numbers out of range cause extension of host memory slot space.
1470 \end_layout
1472 \begin_layout Subsection
1473 Table movie
1474 \end_layout
1476 \begin_layout Standard
1477 Movie handling
1478 \end_layout
1480 \begin_layout Subsubsection
1481 movie.currentframe()
1482 \end_layout
1484 \begin_layout Standard
1485 Return number of current frame.
1486 \end_layout
1488 \begin_layout Subsubsection
1489 movie.framecount()
1490 \end_layout
1492 \begin_layout Standard
1493 Return number of frames in movie.
1494 \end_layout
1496 \begin_layout Subsubsection
1497 movie.readonly()
1498 \end_layout
1500 \begin_layout Standard
1501 Return true if in readonly mode, false if in readwrite.
1502 \end_layout
1504 \begin_layout Subsubsection
1505 movie.set_readwrite()
1506 \end_layout
1508 \begin_layout Standard
1509 Set readwrite mode (does not cause on_readwrite callback).
1510 \end_layout
1512 \begin_layout Subsubsection
1513 movie.frame_subframes(number frame)
1514 \end_layout
1516 \begin_layout Standard
1517 Count number of subframes in specified frame (frame numbers are 1-based)
1518  and return that.
1519 \end_layout
1521 \begin_layout Subsubsection
1522 movie.read_subframe(number frame, number subframe)
1523 \end_layout
1525 \begin_layout Standard
1526 Read specifed subframe in specified frame and return data as array (100
1527  elements, numbered 0-99 currently).
1528 \end_layout
1530 \begin_layout Subsection
1531 Table settings
1532 \end_layout
1534 \begin_layout Standard
1535 Routines for settings manipulation
1536 \end_layout
1538 \begin_layout Subsubsection
1539 get(string name)
1540 \end_layout
1542 \begin_layout Standard
1543 Get value of setting.
1544  If setting is blank, returns false.
1545  If setting value can't be obtained, returns (nil, error message).
1546 \end_layout
1548 \begin_layout Subsubsection
1549 set(string name, string value)
1550 \end_layout
1552 \begin_layout Standard
1553 Set value of setting.
1554  If setting can't be set, returns (nil, error message).
1555 \end_layout
1557 \begin_layout Subsubsection
1558 is_set(string name)
1559 \end_layout
1561 \begin_layout Standard
1562 Returns if setting is set.
1563  If setting does not exist, returns (nil, error message).
1564 \end_layout
1566 \begin_layout Subsubsection
1567 blank(string name)
1568 \end_layout
1570 \begin_layout Standard
1571 Blanks a setting and returns true.
1572  If setting can't be blanked, returns (nil, error message).
1573 \end_layout
1575 \begin_layout Subsection
1576 Callbacks
1577 \end_layout
1579 \begin_layout Standard
1580 Various callbacks to Lua that can occur.
1581 \end_layout
1583 \begin_layout Subsubsection
1584 Callback: on_paint()
1585 \end_layout
1587 \begin_layout Standard
1588 Called when screen is being painted.
1589  Any gui.* calls requiring graphic context draw on the screen.
1590 \end_layout
1592 \begin_layout Subsubsection
1593 Callback: on_video()
1594 \end_layout
1596 \begin_layout Standard
1597 Called when video dump frame is being painted.
1598  Any gui.* calls requiring graphic context draw on the video.
1599 \end_layout
1601 \begin_layout Subsubsection
1602 Callback: on_startup()
1603 \end_layout
1605 \begin_layout Standard
1606 Called when the emulator is starting (lsnes.rc has been run).
1607 \end_layout
1609 \begin_layout Subsubsection
1610 Callback: on_pre_load(string name)
1611 \end_layout
1613 \begin_layout Standard
1614 Called just before savestate/movie load occurs (note: loads are always delayed,
1615  so this occurs even when load was initiated by lua).
1616 \end_layout
1618 \begin_layout Subsubsection
1619 Callback: on_err_load(string name)
1620 \end_layout
1622 \begin_layout Standard
1623 Called if loadstate goes wrong.
1624 \end_layout
1626 \begin_layout Subsubsection
1627 Callback: on_post_load(string name, boolean was_savestate)
1628 \end_layout
1630 \begin_layout Standard
1631 Called on successful loadstate.
1632  was_savestate gives if this was a savestate or a movie.
1633 \end_layout
1635 \begin_layout Subsubsection
1636 Callback: on_pre_save(string name, boolean is_savestate)
1637 \end_layout
1639 \begin_layout Standard
1640 Called just before savestate save occurs (note: movie saves are synchronous
1641  and won't trigger these callbacks if called from Lua).
1642 \end_layout
1644 \begin_layout Subsubsection
1645 Callback: on_err_save(string name)
1646 \end_layout
1648 \begin_layout Standard
1649 Called if savestate goes wrong.
1650 \end_layout
1652 \begin_layout Subsubsection
1653 Callback: on_post_save(string name, boolean is_savestate)
1654 \end_layout
1656 \begin_layout Standard
1657 Called on successful savaestate.
1658  is_savestate gives if this was a savestate or a movie.
1659 \end_layout
1661 \begin_layout Subsubsection
1662 Callback: on_quit()
1663 \end_layout
1665 \begin_layout Standard
1666 Called when emulator is shutting down.
1667 \end_layout
1669 \begin_layout Subsubsection
1670 Callback: on_input(boolean subframe)
1671 \end_layout
1673 \begin_layout Standard
1674 Called when emulator is just sending input to bsnes core.
1675  Warning: This is called even in readonly mode, but the results are ignored.
1676 \end_layout
1678 \begin_layout Subsubsection
1679 Callback: on_reset()
1680 \end_layout
1682 \begin_layout Standard
1683 Called when SNES is reset.
1684 \end_layout
1686 \begin_layout Subsubsection
1687 Callback: on_readwrite()
1688 \end_layout
1690 \begin_layout Standard
1691 Called when moving into readwrite mode as result of 
1692 \begin_inset Quotes eld
1693 \end_inset
1695 set-rwmode
1696 \begin_inset Quotes erd
1697 \end_inset
1699  command (note: moving to rwmode by Lua won't trigger this, as per recursive
1700  entry protection).
1701 \end_layout
1703 \begin_layout Subsubsection
1704 Callback: on_snoop(number port, number controller, number index, number
1705  value)
1706 \end_layout
1708 \begin_layout Standard
1709 Called each time bsnes asks for input.
1710  The value is the final value to be sent to bsnes core.
1711  Might be useful when translating movies to format suitable for console
1712  verification.
1713 \end_layout
1715 \begin_layout Section
1716 SDL platform:
1717 \end_layout
1719 \begin_layout Subsection
1720 Platform-specific commands:
1721 \end_layout
1723 \begin_layout Subsubsection
1724 enable-sound on
1725 \end_layout
1727 \begin_layout Standard
1728 Enable sounds in GUI (has no effect on video dumping).
1729 \end_layout
1731 \begin_layout Subsubsection
1732 enable-sound off
1733 \end_layout
1735 \begin_layout Standard
1736 Disable sounds in GUI (has no effect on video dumping).
1737 \end_layout
1739 \begin_layout Subsubsection
1740 identify-key
1741 \end_layout
1743 \begin_layout Standard
1744 Asks to press a key and then identifies that key.
1745 \end_layout
1747 \begin_layout Subsubsection
1748 toggle-console
1749 \end_layout
1751 \begin_layout Standard
1752 Toggle between windowed/fullscreen console.
1753 \end_layout
1755 \begin_layout Subsubsection
1756 scroll-fullup
1757 \end_layout
1759 \begin_layout Standard
1760 Scroll messages window as far back as it goes.
1761 \end_layout
1763 \begin_layout Subsubsection
1764 scroll-fulldown
1765 \end_layout
1767 \begin_layout Standard
1768 Scroll messages window as far forward as it goes.
1769 \end_layout
1771 \begin_layout Subsubsection
1772 scroll-up
1773 \end_layout
1775 \begin_layout Standard
1776 Scroll messages window back one screenful.
1777 \end_layout
1779 \begin_layout Subsubsection
1780 scroll-down
1781 \end_layout
1783 \begin_layout Standard
1784 Scroll messages window forward one screenful.
1785 \end_layout
1787 \begin_layout Subsubsection
1788 axismode <axis> <mode>
1789 \end_layout
1791 \begin_layout Standard
1792 Set joystick axis mode.
1793  <axis> is of form 
1794 \begin_inset Quotes eld
1795 \end_inset
1797 joystick<num>axis<axis>
1798 \begin_inset Quotes erd
1799 \end_inset
1801 , e.g.
1803 \begin_inset Quotes eld
1804 \end_inset
1806 joystick0axis5
1807 \begin_inset Quotes erd
1808 \end_inset
1811  Mode is one of:
1812 \end_layout
1814 \begin_layout Itemize
1815 axis: Normal axis mode
1816 \end_layout
1818 \begin_layout Itemize
1819 axis_inverse: Inverse axis mode.
1820 \end_layout
1822 \begin_layout Itemize
1823 pressure_0m: Pressure sensitive.
1824  Released at 0, pressed at full negative.
1825 \end_layout
1827 \begin_layout Itemize
1828 pressure_0p: Pressure sensitive.
1829  Released at 0, pressed at full positive.
1830 \end_layout
1832 \begin_layout Itemize
1833 pressure_m0: Pressure sensitive.
1834  Released at full negative, pressed at 0.
1835 \end_layout
1837 \begin_layout Itemize
1838 pressure_mp: Pressure sensitive.
1839  Released at full negative, pressed at full positive.
1840 \end_layout
1842 \begin_layout Itemize
1843 pressure_p0: Pressure sensitive.
1844  Released at full positive, pressed at 0.
1845 \end_layout
1847 \begin_layout Itemize
1848 pressure_pm: Pressure sensitive.
1849  Released at full positive, pressed at full negative.
1850 \end_layout
1852 \begin_layout Standard
1853 Note that if you have Wired Microsoft XBox 360 controller (works great in
1854  Linux, BTW), you might want to do the following:
1855 \end_layout
1857 \begin_layout Itemize
1858 axismode joystick0axis2 pressure_mp
1859 \end_layout
1861 \begin_layout Itemize
1862 axismode joystick0axis5 pressure_mp
1863 \end_layout
1865 \begin_layout Standard
1866 Since axes 2 and 5 are LT/RT, which are pressure sensitive.
1867 \end_layout
1869 \begin_layout Standard
1870 For PS3 
1871 \begin_inset Quotes eld
1872 \end_inset
1874 sixaxis
1875 \begin_inset Quotes erd
1876 \end_inset
1878  controller, disable (axismode joystick0axis<n> disabled) joystick axes
1879  8-19, since otherwise the pressure sensors generate weird events (those
1880  buttons have digital component as well).
1881 \end_layout
1883 \begin_layout Subsection
1884 Settings
1885 \end_layout
1887 \begin_layout Subsubsection
1888 autorepeat-first-delay
1889 \end_layout
1891 \begin_layout Standard
1892 Sets the delay for first character in typematic autorepeat.
1893 \end_layout
1895 \begin_layout Subsubsection
1896 autorepeat-subsequent-delay
1897 \end_layout
1899 \begin_layout Standard
1900 Sets the delay for subsequent characters in typematic autorepeat.
1901 \end_layout
1903 \begin_layout Subsection
1904 Modifier names
1905 \end_layout
1907 \begin_layout Standard
1908 Following modifier names are known:
1909 \end_layout
1911 \begin_layout Itemize
1912 ctrl, lctrl, rctrl: Control keys
1913 \end_layout
1915 \begin_layout Itemize
1916 alt, lalt, ralt: ALT keys.
1917 \end_layout
1919 \begin_layout Itemize
1920 shift, lshift, rshift: Shift keys.
1921 \end_layout
1923 \begin_layout Itemize
1924 meta, lmeta, rmeta: Meta keys.
1925 \end_layout
1927 \begin_layout Itemize
1928 num, caps: Numlock/Capslock (these are sticky!)
1929 \end_layout
1931 \begin_layout Itemize
1932 mode: Mode select.
1933 \end_layout
1935 \begin_layout Subsection
1936 Key names
1937 \end_layout
1939 \begin_layout Standard
1940 Following key names are known:
1941 \end_layout
1943 \begin_layout Itemize
1944 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
1945  hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
1946  comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
1947  less, equals, greater, question, at, leftbracket, backslash, rightbracket,
1948  caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
1949  o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
1950  world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
1951  world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
1952  world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
1953  world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
1954  world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
1955  world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
1956  world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
1957  world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
1958  world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
1959  world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
1960  world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
1961  world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
1962  kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
1963  kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
1964  pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
1965  f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
1966  lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
1967  break, menu, power, euro, undo
1968 \end_layout
1970 \begin_layout Itemize
1971 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
1972  hardware-dependent scan code of <n> (useful to bind those keys that don't
1973  have symbolic names).
1974 \end_layout
1976 \begin_layout Standard
1977 In addition, following pseudo-keys are known (note: these do not work in
1978  conjunction with modifers):
1979 \end_layout
1981 \begin_layout Itemize
1982 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
1983 \end_layout
1985 \begin_layout Itemize
1986 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
1987 \end_layout
1989 \begin_layout Itemize
1990 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
1991 \end_layout
1993 \begin_layout Itemize
1994 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
1995 \end_layout
1997 \begin_layout Itemize
1998 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
1999 \end_layout
2001 \begin_layout Itemize
2002 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
2003  position.
2004 \end_layout
2006 \begin_layout Itemize
2007 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
2008  position.
2009 \end_layout
2011 \begin_layout Subsection
2012 Special buttons:
2013 \end_layout
2015 \begin_layout Itemize
2016 Escape: Enter/Exit Command mode, cancel modal dialogs.
2017 \end_layout
2019 \begin_layout Itemize
2020 Return (also KPEnter): Execute command, ok modal dialog.
2021 \end_layout
2023 \begin_layout Itemize
2024 Pgup/Up (also KP8/9 if no num lock; command mode): Previous command in command
2025  history
2026 \end_layout
2028 \begin_layout Itemize
2029 Pgdn/Down(also KP2/3 if no num lock; command mode): Next command in command
2030  history
2031 \end_layout
2033 \begin_layout Itemize
2034 Home (also KP7 if no num lock; command mode): Beginning of command.
2035 \end_layout
2037 \begin_layout Itemize
2038 End (also KP1 if no num lock; command mode): End of command.
2039 \end_layout
2041 \begin_layout Itemize
2042 Left (also KP4 if no num lock; command mode): Move cursor left.
2043 \end_layout
2045 \begin_layout Itemize
2046 Right (also KP6 if no num lock; command mode): Move cursor right.
2047 \end_layout
2049 \begin_layout Itemize
2050 Delete (also KP.
2051  if no num lock; command mode): Delete character to right of cursor.
2052 \end_layout
2054 \begin_layout Itemize
2055 Insert (also KP0 if no num lock; command mode): Toggle between insert /
2056  overwrite modes.
2057 \end_layout
2059 \begin_layout Itemize
2060 Backspace (command mode): Delete character to left of cursor.
2061 \end_layout
2063 \begin_layout Itemize
2064 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
2065 \end_layout
2067 \begin_layout Subsection
2068 Watchdog timer:
2069 \end_layout
2071 \begin_layout Standard
2072 If emulator does not reach internal polling loop in 15 seconds after leaving
2073  it or 15 seconds after starting, the emulator instantly bombs out.
2074 \end_layout
2076 \begin_layout Section
2077 Movie file format
2078 \end_layout
2080 \begin_layout Standard
2081 Movie file is .zip archive in itself, normal ZIP archive tools work on it
2082  (note: If you recompress it, do not use compression methods other than
2083  store and deflate and especially do not use encryption of any kind).
2084 \end_layout
2086 \begin_layout Subsection
2087 Detecting clean start/SRAM/Savestate
2088 \end_layout
2090 \begin_layout Itemize
2091 If file has member 
2092 \begin_inset Quotes eld
2093 \end_inset
2095 savestate
2096 \begin_inset Quotes erd
2097 \end_inset
2099  it is savestate, otherwise:
2100 \end_layout
2102 \begin_layout Itemize
2103 If file has members with names starting 
2104 \begin_inset Quotes eld
2105 \end_inset
2107 moviesram.
2108 \begin_inset Quotes erd
2109 \end_inset
2111  it is movie starting from SRAM, otherwise:
2112 \end_layout
2114 \begin_layout Itemize
2115 It is movie starting from clear state.
2116 \end_layout
2118 \begin_layout Subsection
2119 Member: gametype
2120 \end_layout
2122 \begin_layout Standard
2123 Type of game ROM and region (as one line).
2124  Valid values are:
2125 \end_layout
2127 \begin_layout Standard
2128 \begin_inset Tabular
2129 <lyxtabular version="3" rows="8" columns="3">
2130 <features tabularvalignment="middle">
2131 <column alignment="center" valignment="top" width="0">
2132 <column alignment="center" valignment="top" width="0">
2133 <column alignment="center" valignment="top" width="0">
2134 <row>
2135 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2136 \begin_inset Text
2138 \begin_layout Plain Layout
2139 Value
2140 \end_layout
2142 \end_inset
2143 </cell>
2144 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2145 \begin_inset Text
2147 \begin_layout Plain Layout
2148 System
2149 \end_layout
2151 \end_inset
2152 </cell>
2153 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2154 \begin_inset Text
2156 \begin_layout Plain Layout
2157 Region
2158 \end_layout
2160 \end_inset
2161 </cell>
2162 </row>
2163 <row>
2164 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2165 \begin_inset Text
2167 \begin_layout Plain Layout
2168 snes_pal
2169 \end_layout
2171 \end_inset
2172 </cell>
2173 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2174 \begin_inset Text
2176 \begin_layout Plain Layout
2177 Super NES
2178 \end_layout
2180 \end_inset
2181 </cell>
2182 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2183 \begin_inset Text
2185 \begin_layout Plain Layout
2187 \end_layout
2189 \end_inset
2190 </cell>
2191 </row>
2192 <row>
2193 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2194 \begin_inset Text
2196 \begin_layout Plain Layout
2197 sgb_pal
2198 \end_layout
2200 \end_inset
2201 </cell>
2202 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2203 \begin_inset Text
2205 \begin_layout Plain Layout
2206 Super Game Boy
2207 \end_layout
2209 \end_inset
2210 </cell>
2211 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2212 \begin_inset Text
2214 \begin_layout Plain Layout
2216 \end_layout
2218 \end_inset
2219 </cell>
2220 </row>
2221 <row>
2222 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2223 \begin_inset Text
2225 \begin_layout Plain Layout
2226 snes_ntsc
2227 \end_layout
2229 \end_inset
2230 </cell>
2231 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2232 \begin_inset Text
2234 \begin_layout Plain Layout
2235 Super NES
2236 \end_layout
2238 \end_inset
2239 </cell>
2240 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2241 \begin_inset Text
2243 \begin_layout Plain Layout
2244 NTSC
2245 \end_layout
2247 \end_inset
2248 </cell>
2249 </row>
2250 <row>
2251 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2252 \begin_inset Text
2254 \begin_layout Plain Layout
2255 sgb_ntsc
2256 \end_layout
2258 \end_inset
2259 </cell>
2260 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2261 \begin_inset Text
2263 \begin_layout Plain Layout
2264 Super Game Boy
2265 \end_layout
2267 \end_inset
2268 </cell>
2269 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2270 \begin_inset Text
2272 \begin_layout Plain Layout
2273 NTSC
2274 \end_layout
2276 \end_inset
2277 </cell>
2278 </row>
2279 <row>
2280 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2281 \begin_inset Text
2283 \begin_layout Plain Layout
2285 \end_layout
2287 \end_inset
2288 </cell>
2289 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2290 \begin_inset Text
2292 \begin_layout Plain Layout
2293 BS-X (non-slotted)
2294 \end_layout
2296 \end_inset
2297 </cell>
2298 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2299 \begin_inset Text
2301 \begin_layout Plain Layout
2302 NTSC
2303 \end_layout
2305 \end_inset
2306 </cell>
2307 </row>
2308 <row>
2309 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2310 \begin_inset Text
2312 \begin_layout Plain Layout
2313 bsxslotted
2314 \end_layout
2316 \end_inset
2317 </cell>
2318 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2319 \begin_inset Text
2321 \begin_layout Plain Layout
2322 BS-X (slotted)
2323 \end_layout
2325 \end_inset
2326 </cell>
2327 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2328 \begin_inset Text
2330 \begin_layout Plain Layout
2331 NTSC
2332 \end_layout
2334 \end_inset
2335 </cell>
2336 </row>
2337 <row>
2338 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2339 \begin_inset Text
2341 \begin_layout Plain Layout
2342 sufamiturbo
2343 \end_layout
2345 \end_inset
2346 </cell>
2347 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2348 \begin_inset Text
2350 \begin_layout Plain Layout
2351 Sufami Turbo
2352 \end_layout
2354 \end_inset
2355 </cell>
2356 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2357 \begin_inset Text
2359 \begin_layout Plain Layout
2360 NTSC
2361 \end_layout
2363 \end_inset
2364 </cell>
2365 </row>
2366 </lyxtabular>
2368 \end_inset
2371 \end_layout
2373 \begin_layout Standard
2374 Frame rates are:
2375 \end_layout
2377 \begin_layout Standard
2378 \begin_inset Tabular
2379 <lyxtabular version="3" rows="3" columns="2">
2380 <features tabularvalignment="middle">
2381 <column alignment="center" valignment="top" width="0">
2382 <column alignment="center" valignment="top" width="0">
2383 <row>
2384 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2385 \begin_inset Text
2387 \begin_layout Plain Layout
2388 Region
2389 \end_layout
2391 \end_inset
2392 </cell>
2393 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2394 \begin_inset Text
2396 \begin_layout Plain Layout
2397 Framerate (fps)
2398 \end_layout
2400 \end_inset
2401 </cell>
2402 </row>
2403 <row>
2404 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2405 \begin_inset Text
2407 \begin_layout Plain Layout
2409 \end_layout
2411 \end_inset
2412 </cell>
2413 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2414 \begin_inset Text
2416 \begin_layout Plain Layout
2417 322445/6448
2418 \end_layout
2420 \end_inset
2421 </cell>
2422 </row>
2423 <row>
2424 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
2425 \begin_inset Text
2427 \begin_layout Plain Layout
2428 NTSC
2429 \end_layout
2431 \end_inset
2432 </cell>
2433 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2434 \begin_inset Text
2436 \begin_layout Plain Layout
2437 10738636/178683
2438 \end_layout
2440 \end_inset
2441 </cell>
2442 </row>
2443 </lyxtabular>
2445 \end_inset
2448 \end_layout
2450 \begin_layout Subsection
2451 Member: port1
2452 \end_layout
2454 \begin_layout Standard
2455 Contains type of port #1 (as one line).
2456  Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
2457  If not present, defaults to 'gamepad'.
2458 \end_layout
2460 \begin_layout Subsection
2461 Member: port2
2462 \end_layout
2464 \begin_layout Standard
2465 Contains type of port #2 (as one line).
2466  Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
2467  'justifier' and 'justifiers'.
2468  If not present, defaults to 'none'.
2469 \end_layout
2471 \begin_layout Subsection
2472 Member: gamename
2473 \end_layout
2475 \begin_layout Standard
2476 Contains name of the game (as one line).
2477 \end_layout
2479 \begin_layout Subsection
2480 Member: authors
2481 \end_layout
2483 \begin_layout Standard
2484 Contains authors, one per line.
2485  Part before '|' is the full name, part after is the nickname.
2486 \end_layout
2488 \begin_layout Subsection
2489 Member: systemid
2490 \end_layout
2492 \begin_layout Standard
2493 Always 
2494 \begin_inset Quotes eld
2495 \end_inset
2497 lsnes-rr1
2498 \begin_inset Quotes erd
2499 \end_inset
2501  (one line).
2502  Used to reject other saves.
2503 \end_layout
2505 \begin_layout Subsection
2506 Member: controlsversion
2507 \end_layout
2509 \begin_layout Standard
2510 Always 
2511 \begin_inset Quotes eld
2512 \end_inset
2515 \begin_inset Quotes erd
2516 \end_inset
2518  (one line).
2519  Used to identify what controls are there.
2520 \end_layout
2522 \begin_layout Subsection
2523 Member: 
2524 \begin_inset Quotes eld
2525 \end_inset
2527 coreversion
2528 \begin_inset Quotes erd
2529 \end_inset
2532 \end_layout
2534 \begin_layout Standard
2535 Contains bsnes core version number (as one line).
2536 \end_layout
2538 \begin_layout Subsection
2539 Member: projectid
2540 \end_layout
2542 \begin_layout Standard
2543 Contains project ID (as one line).
2544  Used to identify if two movies are part of the same project.
2545 \end_layout
2547 \begin_layout Subsection
2548 Member: {rom,slota,slotb}{,xml}.sha256
2549 \end_layout
2551 \begin_layout Standard
2552 Contains SHA-256 of said ROM or ROM mapping file (as one line).
2553  Absent if corresponding file is absent.
2554 \end_layout
2556 \begin_layout Subsection
2557 Member: moviesram.<name>
2558 \end_layout
2560 \begin_layout Standard
2561 Raw binary startup SRAM of kind <name>.
2562  Only present in savestates and movies starting from SRAM.
2563 \end_layout
2565 \begin_layout Subsection
2566 Member: moviestate
2567 \end_layout
2569 \begin_layout Standard
2570 Raw binary movie state data.
2571  Only present in savestates.
2572 \end_layout
2574 \begin_layout Standard
2575 for version 0:
2576 \end_layout
2578 \begin_layout Itemize
2579 32 bytes: SHA-256 of project ID.
2580 \end_layout
2582 \begin_layout Itemize
2583 8 bytes: Big-endian current frame.
2584 \end_layout
2586 \begin_layout Itemize
2587 100x4 bytes: Poll counters for each control (bit31 of each is 
2588 \begin_inset Quotes eld
2589 \end_inset
2591 data ready
2592 \begin_inset Quotes erd
2593 \end_inset
2595  bit), big-endian.
2596 \end_layout
2598 \begin_layout Itemize
2599 8 bytes: Big-endian lag frame count.
2600 \end_layout
2602 \begin_layout Itemize
2603 32 bytes: SHA-256 of past input
2604 \end_layout
2606 \begin_layout Itemize
2607 32 bytes: SHA-256 of previous.
2608 \end_layout
2610 \begin_layout Itemize
2611 (total of 512 bytes)
2612 \end_layout
2614 \begin_layout Subsection
2615 Member: hostmemory
2616 \end_layout
2618 \begin_layout Standard
2619 Raw binary dump of host memory.
2620  Only present in savestates.
2621 \end_layout
2623 \begin_layout Subsection
2624 Member: savestate
2625 \end_layout
2627 \begin_layout Standard
2628 The raw binary savestate itself.
2629  Savestate detection uses this file, only present in savestates.
2630 \end_layout
2632 \begin_layout Subsection
2633 Member: screenshot
2634 \end_layout
2636 \begin_layout Standard
2637 Screenshot of current frame.
2638  Only present in savestates.
2639  First 2 bytes are big-endian width of image, rest are big-endian 15-bit
2640  image data (5 bits per channel*pixel, the MSB is unused).
2641  Height of image is inferred from the width and size of data.
2642 \end_layout
2644 \begin_layout Subsection
2645 Member: sram.<name>
2646 \end_layout
2648 \begin_layout Standard
2649 Raw binary SRAM of kind <name> at time of savestate.
2650  Only present in savestates.
2651 \end_layout
2653 \begin_layout Subsection
2654 Member: input
2655 \end_layout
2657 \begin_layout Standard
2658 The actual input track, one line per subframe (blank lines are skipped).
2659 \end_layout
2661 \begin_layout Itemize
2662 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
2663  part of same frame as previous, otherwise it starts a new frame.
2664 \end_layout
2666 \begin_layout Itemize
2667 First subframe must start a new frame.
2668 \end_layout
2670 \begin_layout Standard
2671 Length of movie in frames is number of lines in input file that start a
2672  new frame.
2673 \end_layout
2675 \begin_layout Subsection
2676 Member: rerecords
2677 \end_layout
2679 \begin_layout Standard
2680 Contains textual base-10 rerecord count (as one line; emulator just writes
2681  this, it doesn't read it) + 1.
2682 \end_layout
2684 \begin_layout Subsection
2685 Member: rrdata
2686 \end_layout
2688 \begin_layout Standard
2689 This member stores set of load IDs.
2690  There is one load ID per rerecord (plus one corresponding to start of project).
2691 \end_layout
2693 \begin_layout Itemize
2694 This member constists of concatenation of records
2695 \end_layout
2697 \begin_layout Itemize
2698 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
2699  IDs.
2700 \end_layout
2702 \begin_layout Itemize
2703 IDs are interpretted as 256-bit big-endian integers with warparound.
2704 \end_layout
2706 \begin_layout Itemize
2707 Initial predicted ID is all zeroes.
2708 \end_layout
2710 \begin_layout Standard
2711 Format of each record is:
2712 \end_layout
2714 \begin_layout Itemize
2715 1 byte: Opcode byte.
2716  Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
2717  Bit 7 is unused.
2718 \end_layout
2720 \begin_layout Itemize
2721 32-prefixlen bytes of ID.
2722 \end_layout
2724 \begin_layout Itemize
2725 countlen bytes of big-endian count (count).
2726 \end_layout
2728 \begin_layout Standard
2729 Records are processed as follows:
2730 \end_layout
2732 \begin_layout Itemize
2733 To form the first ID encoded by record, take the first prefixlen bytes predicted
2734  ID and append the read ID value to it.
2735  The result is the first ID encoded.
2736 \end_layout
2738 \begin_layout Itemize
2739 If countlen is 0, record encodes 1 ID.
2740 \end_layout
2742 \begin_layout Itemize
2743 If countlen is 1, record encodes 2+count IDs.
2744 \end_layout
2746 \begin_layout Itemize
2747 If countlen is 2, record encodes 258+count IDs.
2748 \end_layout
2750 \begin_layout Itemize
2751 If countlen is 3, record encodes 65794+count IDs.
2752 \end_layout
2754 \begin_layout Itemize
2755 The new predicted ID is the next ID after last one encoded by the record.
2756 \end_layout
2758 \begin_layout Standard
2759 The number of rerecords + 1 is equal to the sum of number of IDs encoded
2760  by all records.
2761 \end_layout
2763 \begin_layout Section
2764 Compiling:
2765 \end_layout
2767 \begin_layout Subsection
2768 Building BSNES
2769 \end_layout
2771 \begin_layout Standard
2772 make ui=ui-libsnes options=debugger profile=accuracy
2773 \end_layout
2775 \begin_layout Itemize
2776 Yes, debugger is needed.
2777 \end_layout
2779 \begin_layout Subsection
2780 Prerequisite libraries:
2781 \end_layout
2783 \begin_layout Itemize
2784 zlib
2785 \end_layout
2787 \begin_layout Itemize
2788 SDL (SDL platform)
2789 \end_layout
2791 \begin_layout Itemize
2792 SDLmain (Windows only)
2793 \end_layout
2795 \begin_layout Itemize
2796 boost_iostreams
2797 \end_layout
2799 \begin_layout Itemize
2800 boost_filesystem
2801 \end_layout
2803 \begin_layout Itemize
2804 boost (conversion, header only)
2805 \end_layout
2807 \begin_layout Subsection
2808 Compile options to make:
2809 \end_layout
2811 \begin_layout Subsubsection
2812 BSNES_PATH=<path>
2813 \end_layout
2815 \begin_layout Standard
2816 Set path to BSNES bsnes directory to <path>.
2817 \end_layout
2819 \begin_layout Subsubsection
2820 NO_THREADS=1
2821 \end_layout
2823 \begin_layout Standard
2824 Don't use threads on Linux.
2825 \end_layout
2827 \begin_layout Subsubsection
2828 USE_THREADS=1
2829 \end_layout
2831 \begin_layout Standard
2832 Try to use threads even on non-Linux systems.
2833 \end_layout
2835 \begin_layout Subsubsection
2836 CC=<compiler>
2837 \end_layout
2839 \begin_layout Standard
2840 Target C++ compiler to use.
2841  Defaults to g++-4.5.
2842 \end_layout
2844 \begin_layout Standard
2845 Note: If crosscompiling, this has to be crosscompiler.
2846 \end_layout
2848 \begin_layout Subsubsection
2849 HOSTCC=<compiler>
2850 \end_layout
2852 \begin_layout Standard
2853 Host C++ compiler to use.
2854  Defaults to the same as CC.
2855 \end_layout
2857 \begin_layout Standard
2858 Note: If crosscompiling, that has to be host compiler (the files produced
2859  will be run in the build process!)
2860 \end_layout
2862 \begin_layout Subsubsection
2863 BSNES_IS_COMPAT=1
2864 \end_layout
2866 \begin_layout Standard
2867 Assume BSNES uses compatiblity core instead of accuracy core.
2868 \end_layout
2870 \begin_layout Subsubsection
2871 NO_LUA=1
2872 \end_layout
2874 \begin_layout Standard
2875 Don't compile in Lua support.
2876 \end_layout
2878 \begin_layout Section
2879 Errata:
2880 \end_layout
2882 \begin_layout Subsection
2883 Problems from BSNES core:
2884 \end_layout
2886 \begin_layout Itemize
2887 The whole pending save stuff.
2888 \end_layout
2890 \begin_layout Itemize
2891 Delay resets are slow.
2892 \end_layout
2894 \begin_layout Itemize
2895 RTC is not emulated in sync-stable manner.
2896 \end_layout
2898 \begin_layout Itemize
2899 Lack of layer hiding.
2900 \end_layout
2902 \begin_layout Itemize
2903 It is slow.
2904 \end_layout
2906 \begin_layout Itemize
2907 Firmwares can't be loaded from ZIP archives.
2908 \end_layout
2910 \begin_layout Itemize
2911 Manual polls can be corrupted if savestate occurs during those.
2912 \end_layout
2914 \begin_layout Subsection
2915 Other problems:
2916 \end_layout
2918 \begin_layout Itemize
2919 Audio for last dumped frame is not itself dumped.
2920 \end_layout
2922 \begin_layout Itemize
2923 Audio in UI is pretty bad in quality.
2924 \end_layout
2926 \begin_layout Itemize
2927 UI itself is 30fps max.
2928 \end_layout
2930 \begin_layout Itemize
2931 AVI compression levels 10-18 are not compatible with AVISynth AVISource.
2932 \end_layout
2934 \begin_layout Itemize
2935 No menus, command based interface (SDL).
2936 \end_layout
2938 \begin_layout Itemize
2939 Long commands don't scroll.
2940 \end_layout
2942 \begin_layout Section
2943 Changelog:
2944 \end_layout
2946 \begin_layout Subsection
2947 rr0-β1
2948 \end_layout
2950 \begin_layout Itemize
2951 Fix -Wall warnings
2952 \end_layout
2954 \begin_layout Itemize
2955 Fix dumper video corruption with levels 10-18.
2956 \end_layout
2958 \begin_layout Subsection
2959 rr0-β2
2960 \end_layout
2962 \begin_layout Itemize
2963 Autofire
2964 \end_layout
2966 \begin_layout Itemize
2967 Lots of code cleanups
2968 \end_layout
2970 \begin_layout Itemize
2971 Lua interface to settings
2972 \end_layout
2974 \begin_layout Itemize
2975 Allow specifying AVI borders without Lua
2976 \end_layout
2978 \begin_layout Itemize
2979 Fix scaling if vscale > 1 and originx > 0 (left border exists)
2980 \end_layout
2982 \begin_layout Itemize
2983 on_snoop lua callback
2984 \end_layout
2986 \begin_layout Itemize
2987 Faster movie loading and saving.
2988 \end_layout
2990 \begin_layout Subsection
2991 rr0-β3
2992 \end_layout
2994 \begin_layout Itemize
2995 Joystick support
2996 \end_layout
2998 \begin_layout Subsection
2999 rr0-β4
3000 \end_layout
3002 \begin_layout Itemize
3003 Fix multi-buttons
3004 \end_layout
3006 \begin_layout Itemize
3007 Save jukebox functionality.
3008 \end_layout
3010 \begin_layout Subsection
3011 rr0-β5
3012 \end_layout
3014 \begin_layout Itemize
3015 Try to fix some nasty failing movie load edge cases
3016 \end_layout
3018 \begin_layout Itemize
3019 Allow specifying scripts to run on command line.
3020 \end_layout
3022 \begin_layout Subsection
3023 rr0-β6
3024 \end_layout
3026 \begin_layout Itemize
3027 Major source code reorganization.
3028 \end_layout
3030 \begin_layout Itemize
3031 Backup savestates before overwriting.
3032 \end_layout
3034 \begin_layout Itemize
3035 Don't crash if loading initial state fails.
3036 \end_layout
3038 \begin_layout Subsection
3039 rr0-β7
3040 \end_layout
3042 \begin_layout Itemize
3043 Fix firmware lookup
3044 \end_layout
3046 \begin_layout Itemize
3047 Fix author name parsing
3048 \end_layout
3050 \begin_layout Itemize
3051 Fix rerecord counting
3052 \end_layout
3054 \begin_layout Itemize
3055 (SDL) Print messages to console if SDL is uninitialized
3056 \end_layout
3058 \begin_layout Itemize
3059 Add movieinfo program
3060 \end_layout
3062 \begin_layout Itemize
3063 Fix loading movies starting from SRAM.
3064 \end_layout
3066 \begin_layout Subsection
3067 rr0-β8
3068 \end_layout
3070 \begin_layout Itemize
3071 Add support for unattended dumping
3072 \end_layout
3074 \begin_layout Itemize
3075 Fix compiling for Win32
3076 \end_layout
3078 \begin_layout Itemize
3079 Don't lock up if sound can't be initialized
3080 \end_layout
3082 \begin_layout Itemize
3083 Strip trailing CR from commands
3084 \end_layout
3086 \begin_layout Itemize
3087 Don't try to do dubious things in global ctors (fix crash on startup)
3088 \end_layout
3090 \begin_layout Subsection
3091 rr0-β9
3092 \end_layout
3094 \begin_layout Itemize
3095 Small documentation tweaking
3096 \end_layout
3098 \begin_layout Itemize
3099 Fix make clean
3100 \end_layout
3102 \begin_layout Itemize
3103 Fix major bug in modifier matching
3104 \end_layout
3106 \end_body
3107 \end_document