Lua: Add gui.textH, gui.textV, gui.textHV
[lsnes.git] / manual.lyx
blob155f99bce182a39a63e9c832c47f3653fd601568
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 Command line options
72 \end_layout
74 \begin_layout Itemize
75 Syntax: lsnes.exe <rom-options> <misc-options> (<new-session-options>|<filename>)
76 \end_layout
78 \begin_layout Itemize
79 Syntax: lsnes-avidump <dump-options> <misc-options> <rom-options> <filename>
80 \end_layout
82 \begin_layout Itemize
83 Syntax: movieinfo.exe <filename>
84 \end_layout
86 \begin_layout Subsection
87 ROM options
88 \end_layout
90 \begin_layout Standard
91 These options control loading the ROM.
92 \end_layout
94 \begin_layout Subsubsection
95 --rom=<file>
96 \end_layout
98 \begin_layout Standard
99 Load <file> (SFC file format) as main SNES cartridge ROM.
100  This is the game ROM for SNES and cartridge BIOS for other types.
101  Required option.
102 \end_layout
104 \begin_layout Subsubsection
105 --headered-rom=<file>
106 \end_layout
108 \begin_layout Standard
109 Same as --rom, but strips first 512 bytes off the file as copier header.
110  Handy for loading .smc and .fig (also some others) files.
111 \end_layout
113 \begin_layout Subsubsection
114 --rom-xml=<file>
115 \end_layout
117 \begin_layout Standard
118 Set the mapping XML file for main cartridge ROM.
119  If not specified, defaults are used.
120 \end_layout
122 \begin_layout Subsubsection
123 --bsx=<file>
124 \end_layout
126 \begin_layout Standard
127 Load <file> (BS file format) as BS-X non-slotted flash memory.
128  Also sets system type to BS-X non-slotted (not compatible with --bsxslotted=<fi
129 le>, --dmg=<file>, --slot-a=<file> nor --slot-b=<file>).
130 \end_layout
132 \begin_layout Subsubsection
133 --headered-bsx=<file>
134 \end_layout
136 \begin_layout Standard
137 Same as --bsx but strips first 512 bytes off the file as copier header.
138  Handy for loading .smc and .fig (also some others) files.
139 \end_layout
141 \begin_layout Subsubsection
142 --bsx-xml=<file>
143 \end_layout
145 \begin_layout Standard
146 Set mapping XML file for BS-X non-slotted flash memory.
147  If not specified, defaults are used.
148  Only can be used together with --bsx=<file>.
149 \end_layout
151 \begin_layout Subsubsection
152 --bsxslotted=<file>
153 \end_layout
155 \begin_layout Standard
156 Load <file> (BS file format) as BS-X slotted flash memory.
157  Also sets system type to BS-X slotted (not compatible with --bsx=<file>,
158  --dmg=<file>, --slot-a=<file> nor --slot-b=<file>).
159 \end_layout
161 \begin_layout Subsubsection
162 --headered-bsxslotted=<file>
163 \end_layout
165 \begin_layout Standard
166 Same as --bsxslotted but strips first 512 bytes off the file as copier header.
167  Handy for loading .smc and .fig (also some others) files.
168 \end_layout
170 \begin_layout Subsubsection
171 --bsxslotted-xml=<file>
172 \end_layout
174 \begin_layout Standard
175 Set mapping XML file for BS-X slotted flash memory.
176  If not specified, defaults are used.
177  Only can be used together with --bsxslotted=<file>.
178 \end_layout
180 \begin_layout Subsubsection
181 --dmg=<file>
182 \end_layout
184 \begin_layout Standard
185 Load <file> (GB file format) as Game Boy ROM.
186  Also sets system type to SGB (not compatible with --bsx=<file>, --bsxslotted=<f
187 ile>, --slot-a=<file> nor --slot-b=<file>).
188 \end_layout
190 \begin_layout Subsubsection
191 --headered-dmg=<file>
192 \end_layout
194 \begin_layout Standard
195 Same as --dmg but strips first 512 bytes off the file as copier header.
196  Handy for loading .smc and .fig (also some others) files.
197 \end_layout
199 \begin_layout Subsubsection
200 --dmg-xml=<file>
201 \end_layout
203 \begin_layout Standard
204 Set mapping XML file for Game Boy ROM.
205  If not specified, defaults are used.
206  Only can be used together with --dmg=<file>.
207 \end_layout
209 \begin_layout Subsubsection
210 --slot-a=<file>
211 \end_layout
213 \begin_layout Standard
214 Load <file> (ST file format) as Sufami turbo cartridge A ROM.
215  Also sets system type to Sufami Turbo (not compatible with --bsx=<file>,
216  --bsxslotted=<file> nor --dmg=<file>).
217 \end_layout
219 \begin_layout Subsubsection
220 --headered-slot-a=<file>
221 \end_layout
223 \begin_layout Standard
224 Same as --slot-a but strips first 512 bytes off the file as copier header.
225  Handy for loading .smc and .fig (also some others) files.
226 \end_layout
228 \begin_layout Subsubsection
229 --slot-a-xml=<file>
230 \end_layout
232 \begin_layout Standard
233 Set mapping XML file for Sufami turbo cartridge A ROM.
234  If not specified, defaults are used.
235  Only can be used together with --slot-a=<file>.
236 \end_layout
238 \begin_layout Subsubsection
239 --slot-b=<file>
240 \end_layout
242 \begin_layout Standard
243 Load <file> (ST file format) as Sufami turbo cartridge B ROM.
244  Also sets system type to Sufami Turbo (not compatible with --bsx=<file>,
245  --bsxslotted=<file> nor --dmg=<file>).
246 \end_layout
248 \begin_layout Subsubsection
249 --headered-slot-b=<file>
250 \end_layout
252 \begin_layout Standard
253 Same as --slot-b but strips first 512 bytes off the file as copier header.
254  Handy for loading .smc and .fig (also some others) files.
255 \end_layout
257 \begin_layout Subsubsection
258 --slot-b-xml=<file>
259 \end_layout
261 \begin_layout Standard
262 Set mapping XML file for Sufami turbo cartridge B ROM.
263  If not specified, defaults are used.
264  Only can be used together with --slot-b=<file>.
265 \end_layout
267 \begin_layout Subsubsection
268 --ips-rom=<file>
269 \end_layout
271 \begin_layout Standard
272 Apply IPS patch <file> to main cartridge ROM.
273  Requires --rom=<file>.
274 \end_layout
276 \begin_layout Subsubsection
277 --ips-rom-xml=<file>
278 \end_layout
280 \begin_layout Standard
281 Apply IPS patch <file> to main cartridge ROM mapping XML.
282  Requires --rom-xml=<file>.
283 \end_layout
285 \begin_layout Subsubsection
286 --ips-bsx=<file>
287 \end_layout
289 \begin_layout Standard
290 Apply IPS patch <file> to BS-X non-slotted flash.
291  Requires --bsx=<file>.
292 \end_layout
294 \begin_layout Subsubsection
295 --ips-bsx-xml=<file>
296 \end_layout
298 \begin_layout Standard
299 Apply IPS patch <file> to BS-X non-slotted flash mapping XML.
300  Requires --bsx-xml=<file>.
301 \end_layout
303 \begin_layout Subsubsection
304 --ips-bsxslotted=<file>
305 \end_layout
307 \begin_layout Standard
308 Apply IPS patch <file> to BS-X slotted flash.
309  Requires --bsxslotted=<file>.
310 \end_layout
312 \begin_layout Subsubsection
313 --ips-bsxslotted-xml=<file>
314 \end_layout
316 \begin_layout Standard
317 Apply IPS patch <file> to BS-X slotted flash mapping XML.
318  Requires --bsxslotted-xml=<file>.
319 \end_layout
321 \begin_layout Subsubsection
322 --ips-dmg=<file>
323 \end_layout
325 \begin_layout Standard
326 Apply IPS patch <file> to Game Boy ROM.
327  Requires --dmg=<file>.
328 \end_layout
330 \begin_layout Subsubsection
331 --ips-dmg-xml=<file>
332 \end_layout
334 \begin_layout Standard
335 Apply IPS patch <file> to Game Boy ROM mapping XML.
336  Requires --dmg-xml=<file>.
337 \end_layout
339 \begin_layout Subsubsection
340 --ips-slot-a=<file>
341 \end_layout
343 \begin_layout Standard
344 Apply IPS patch <file> to Sufami turbo cartridge A ROM.
345  Requires --slot-a=<file>.
346 \end_layout
348 \begin_layout Subsubsection
349 --ips-slot-a-xml=<file>
350 \end_layout
352 \begin_layout Standard
353 Apply IPS patch <file> to Sufami turbo cartridge A ROM mapping XML.
354  Requires --slot-a-xml=<file>.
355 \end_layout
357 \begin_layout Subsubsection
358 --ips-slot-b=<file>
359 \end_layout
361 \begin_layout Standard
362 Apply IPS patch <file> to Sufami turbo cartridge B ROM.
363  Requires --slot-b=<file>.
364 \end_layout
366 \begin_layout Subsubsection
367 --ips-slot-b-xml=<file>
368 \end_layout
370 \begin_layout Standard
371 Apply IPS patch <file> to Sufami turbo cartridge B ROM mapping XML.
372  Requires --slot-b-xml=<file>.
373 \end_layout
375 \begin_layout Subsubsection
376 --ips-offset=<offset>
377 \end_layout
379 \begin_layout Standard
380 Set IPS apply offset to <offset> (can be negative).
381  IPS apply offset is added to all addresses inside IPS file before applying.
382  If the resulting address is negative, write is ignored (with a warning).
383  If resulting address exceeds ROM size, the ROM is extended.
384 \end_layout
386 \begin_layout Standard
387 Using offset of -512 is handy for applying IPS patches meant for SMC/FIG
388  or such files.
389 \end_layout
391 \begin_layout Subsubsection
392 --pal
393 \end_layout
395 \begin_layout Standard
396 Force ROM to be considered PAL-only (warning: Will cause error if used on
397  anything except SNES and SGB).
398 \end_layout
400 \begin_layout Subsubsection
401 --ntsc
402 \end_layout
404 \begin_layout Standard
405 Force ROM to be considered NTSC-only (default for everything except SNES
406  and SGB).
407 \end_layout
409 \begin_layout Subsection
410 New session options (lsnes.exe only)
411 \end_layout
413 \begin_layout Standard
414 If filename is not specified, new session is started.
415  These options control the properties of new session:
416 \end_layout
418 \begin_layout Subsubsection
419 --port1=<type>
420 \end_layout
422 \begin_layout Standard
423 Set type of port1.
424  Valid values are:
425 \end_layout
427 \begin_layout Itemize
428 none: No device connected
429 \end_layout
431 \begin_layout Itemize
432 gamepad: One gamepad (the default)
433 \end_layout
435 \begin_layout Itemize
436 multitap: Four gamepads (warning: makes most games refuse to start)
437 \end_layout
439 \begin_layout Itemize
440 mouse: Mouse.
441 \end_layout
443 \begin_layout Subsubsection
444 --port2=<type>
445 \end_layout
447 \begin_layout Standard
448 Set type of port2.
449  Valid values are:
450 \end_layout
452 \begin_layout Itemize
453 none: No device connected (the default)
454 \end_layout
456 \begin_layout Itemize
457 gamepad: One gamepad
458 \end_layout
460 \begin_layout Itemize
461 multitap: Four gamepads.
462 \end_layout
464 \begin_layout Itemize
465 mouse: Mouse
466 \end_layout
468 \begin_layout Itemize
469 superscope: Super Scope
470 \end_layout
472 \begin_layout Itemize
473 justifier: One justifier
474 \end_layout
476 \begin_layout Itemize
477 justifiers: Two justifiers
478 \end_layout
480 \begin_layout Subsubsection
481 --gamename=<name>
482 \end_layout
484 \begin_layout Standard
485 Set the name of game to <name>
486 \end_layout
488 \begin_layout Subsubsection
489 --author=<name>
490 \end_layout
492 \begin_layout Standard
493 Add author with full name of <name> (no nickname).
494 \end_layout
496 \begin_layout Subsubsection
497 --author=|<name>
498 \end_layout
500 \begin_layout Standard
501 Add author with nickname of <name> (no full name).
502 \end_layout
504 \begin_layout Subsubsection
505 --author=<fullname>|<nickname>
506 \end_layout
508 \begin_layout Standard
509 Add author with full name of <fullname> and nickname of <nickname>.
510 \end_layout
512 \begin_layout Subsubsection
513 --rtc-second=<value>
514 \end_layout
516 \begin_layout Standard
517 Set RTC second (0 is 1st January 1970 00:00:00Z).
518 \end_layout
520 \begin_layout Subsubsection
521 --rtc-subsecond=<value>
522 \end_layout
524 \begin_layout Standard
525 Set RTC subsecond.
526  Range is 0-.
527  Unit is CPU cycle.
528 \end_layout
530 \begin_layout Subsection
531 <filename>
532 \end_layout
534 \begin_layout Standard
535 If filename is specified on command line, it is loaded as initial state
536  (instead of constructing one).
537  Mandatory for lsnes-avidump.exe and movieinfo.exe.
538 \end_layout
540 \begin_layout Subsection
541 Misc.
542  options
543 \end_layout
545 \begin_layout Subsubsection
546 --run=<file> (lsnes.exe only)
547 \end_layout
549 \begin_layout Standard
550 After running main RC file, run this file.
551  If multiple are specified, these execute in order specified.
552 \end_layout
554 \begin_layout Subsection
555 dump options (lsnes-avidump.exe only)
556 \end_layout
558 \begin_layout Subsubsection
559 --prefix=<prefix>
560 \end_layout
562 \begin_layout Standard
563 Set dump prefix.
564  Default is 
565 \begin_inset Quotes eld
566 \end_inset
568 avidump
569 \begin_inset Quotes erd
570 \end_inset
573 \end_layout
575 \begin_layout Subsubsection
576 --level=<level>
577 \end_layout
579 \begin_layout Standard
580 Set compression level (0-18).
581  Default is 7.
582 \end_layout
584 \begin_layout Subsubsection
585 --length=<length>
586 \end_layout
588 \begin_layout Standard
589 Set number of frames to dump.
590  Mandatory.
591 \end_layout
593 \begin_layout Subsubsection
594 --lua=<script>
595 \end_layout
597 \begin_layout Standard
598 Run specified lua script (lsnes-avidump.exe does not have initialization
599  files).
600 \end_layout
602 \begin_layout Subsubsection
603 --jmd
604 \end_layout
606 \begin_layout Standard
607 Use JMD dumping instead of AVI dumping.
608 \end_layout
610 \begin_layout Section
611 Startup file lsnes.rc
612 \end_layout
614 \begin_layout Standard
615 Upon startup, lsnes (lsnes.exe only) executes file lsnes.rc as commands.
616  This file is located in:
617 \end_layout
619 \begin_layout Itemize
620 Windows: %APPDATA%
621 \backslash
622 lsnes
623 \backslash
624 lsnes.rc (if %APPDATA% exists)
625 \end_layout
627 \begin_layout Itemize
628 Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME exists)
629 \end_layout
631 \begin_layout Itemize
632 Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
633 \end_layout
635 \begin_layout Itemize
636 All: ./lsnes.rc (fallback default).
637 \end_layout
639 \begin_layout Standard
640 If leading directories do not exist, attempt to create them is made.
641 \end_layout
643 \begin_layout Section
644 Game internal commands
645 \end_layout
647 \begin_layout Itemize
648 Commands beginning with '*' invoke the corresponding command without alias
649  expansion.
650 \end_layout
652 \begin_layout Itemize
653 If command starts with '+' (after possible '*'), the command is executed
654  as-is when button is pressed, and when button is released, it is executed
655  with '+' replaced by '-'.
656 \end_layout
658 \begin_layout Subsection
659 Settings:
660 \end_layout
662 \begin_layout Standard
663 Settings control various aspects of emulator behaviour.
664 \end_layout
666 \begin_layout Subsubsection
667 set-setting <setting> <value>
668 \end_layout
670 \begin_layout Standard
671 Sets setting <setting> to value <value> (may be empty).
672 \end_layout
674 \begin_layout Subsubsection
675 unset-setting <setting>
676 \end_layout
678 \begin_layout Standard
679 Try to unset setting <setting> (not all settings can be unset).
680 \end_layout
682 \begin_layout Subsubsection
683 get-setting <setting>
684 \end_layout
686 \begin_layout Standard
687 Read value of setting <setting>
688 \end_layout
690 \begin_layout Subsubsection
691 show-settings
692 \end_layout
694 \begin_layout Standard
695 Print names and values of all settings.
696 \end_layout
698 \begin_layout Subsection
699 Keybindings
700 \end_layout
702 \begin_layout Standard
703 Keybindings bind commands or aliases to keys (or pseudo-keys).
705 \end_layout
707 \begin_layout Standard
708 Notes:
709 \end_layout
711 \begin_layout Itemize
712 Do not bind edge active (+/-) commands to keys with modifiers, that won't
713  work right!
714 \end_layout
716 \begin_layout Itemize
717 Names of keys and modifiers are platform-dependent.
718 \end_layout
720 \begin_layout Itemize
721 Be careful before binding pseudo-keys (such as joystick axes, buttons or
722  hats) with modifiers.
723  That may or may not work right.
724 \end_layout
726 \begin_layout Subsubsection
727 bind-key [<mod>/<modmask>] <key> <command>
728 \end_layout
730 \begin_layout Standard
731 Bind <command> to key <key> (activating if modifiers in <modmask> (comma-seperat
732 ed list) are set as <mod> (comma-seperated list).
733 \end_layout
735 \begin_layout Standard
736 The names of keys and modifiers are platform-dependent.
737 \end_layout
739 \begin_layout Subsubsection
740 unbind-key [<mod>/<modmask>] <key>
741 \end_layout
743 \begin_layout Standard
744 Unbind command from <key> (with specified <mod> and <modmask>).
745 \end_layout
747 \begin_layout Subsubsection
748 set-axis <axis> [disabled | axis | axis-inverse | pressure0- | pressure0+
749  | pressure-0 | pressure-+ | pressure+0 | pressure+-] [minus=<val>] [zero=<val>]
750  [plus=<val>] [tolerance=<val>]
751 \end_layout
753 \begin_layout Standard
754 Set axis parameters for axis <axis>.
755 \end_layout
757 \begin_layout Itemize
758 disabled: Disable axis
759 \end_layout
761 \begin_layout Itemize
762 axis: Normal axis
763 \end_layout
765 \begin_layout Itemize
766 axis-inverse: Inverse axis
767 \end_layout
769 \begin_layout Itemize
770 pressure0-: Pressure sensitive.
771  Released at 0, pressed at -.
772 \end_layout
774 \begin_layout Itemize
775 pressure0+: Pressure sensitive.
776  Released at 0, pressed at +.
777 \end_layout
779 \begin_layout Itemize
780 pressure-0: Pressure sensitive.
781  Released at -, pressed at 0.
782 \end_layout
784 \begin_layout Itemize
785 pressure-+: Pressure sensitive.
786  Released at -, pressed at +.
787 \end_layout
789 \begin_layout Itemize
790 pressure+0: Pressure sensitive.
791  Released at +, pressed at 0.
792 \end_layout
794 \begin_layout Itemize
795 pressure+-: Pressure sensitive.
796  Released at +, pressed at -.
797 \end_layout
799 \begin_layout Itemize
800 minus=<val>: Calibration at extreme minus position (-32768-32767)
801 \end_layout
803 \begin_layout Itemize
804 zero=<val>: Calibration at neutral position (-32768-32767)
805 \end_layout
807 \begin_layout Itemize
808 plus=<val>: Calibration at extreme plus position (-32768-32767)
809 \end_layout
811 \begin_layout Itemize
812 tolerance=<value>: Center band tolerance (0<x<1).
813  The smaller the value, the more sensitive the control is.
814 \end_layout
816 \begin_layout Subsubsection
817 show-bindings
818 \end_layout
820 \begin_layout Standard
821 Print all key bindings in effect.
822 \end_layout
824 \begin_layout Subsection
825 Aliases
826 \end_layout
828 \begin_layout Standard
829 Aliases bind command to sequence of commands.
830  After alias has been defined, it replaces the command it shadows.
831 \end_layout
833 \begin_layout Standard
834 Notes:
835 \end_layout
837 \begin_layout Itemize
838 You can't alias command to itself.
839 \end_layout
841 \begin_layout Itemize
842 Aliases starting with +/- are edge active just like ordinary commands starting
843  with +/-.
844 \end_layout
846 \begin_layout Itemize
847 One command can be aliased to multiple commands.
848 \end_layout
850 \begin_layout Subsubsection
851 alias-command <command> <expansion>
852 \end_layout
854 \begin_layout Standard
855 Append <expansion> to alias <command>.
856  If alias does not already exist, it is created.
857 \end_layout
859 \begin_layout Subsubsection
860 unalias-command <command>
861 \end_layout
863 \begin_layout Standard
864 Clear alias expansion for <command>.
865 \end_layout
867 \begin_layout Subsubsection
868 show-aliases
869 \end_layout
871 \begin_layout Standard
872 Print all aliases and their expansions in effect.
873 \end_layout
875 \begin_layout Subsection
876 run-script <script> (implemented for wxwidgets)
877 \end_layout
879 \begin_layout Standard
880 Run <script> as if commands were entered on the command line.
881 \end_layout
883 \begin_layout Subsection
884 AVI Video dumping
885 \end_layout
887 \begin_layout Standard
888 Following commands control AVI video dumping:
889 \end_layout
891 \begin_layout Subsubsection
892 dump-avi <level> <prefix>
893 \end_layout
895 \begin_layout Standard
896 Dump AVI video to prefix <prefix> at level <level> (0-18).
897  Notes:
898 \end_layout
900 \begin_layout Itemize
901 The codec is Camstudio Codec in gzip mode.
902 \end_layout
904 \begin_layout Itemize
905 Encoder and muxer are internal, available on all platforms.
906 \end_layout
908 \begin_layout Itemize
909 Audio enable/disable and framerate has no effect.
910 \end_layout
912 \begin_layout Itemize
913 Levels 10-18 are not compatible with AVISource.
914 \end_layout
916 \begin_layout Itemize
917 Recomended level is 7 if decoded by AVISource.
918 \end_layout
920 \begin_layout Itemize
921 Recomended level is 16 if decoded by ffmpeg, mencoder or FFMpegSource.
922 \end_layout
924 \begin_layout Itemize
925 Dumps of low-res PAL games are 256x239 (with all the consequences odd height
926  carries).
927 \end_layout
929 \begin_layout Itemize
930 The audio dumped to .avi is low-quality version.
931  The high-quality version is dumped to .sox file.
932 \end_layout
934 \begin_layout Subsubsection
935 end-avi
936 \end_layout
938 \begin_layout Standard
939 End current AVI video dump (closing the emulator also closes the dump).
940 \end_layout
942 \begin_layout Subsection
943 JMD video dumping
944 \end_layout
946 \begin_layout Standard
947 Following commands control JMD video dumping:
948 \end_layout
950 \begin_layout Subsubsection
951 dump-jmd <level> <file>
952 \end_layout
954 \begin_layout Standard
955 Dump JMD video to file <file> at level <level> (0-9).
956 \end_layout
958 \begin_layout Subsubsection
959 end-jmd
960 \end_layout
962 \begin_layout Standard
963 End the current JMD dump in progress.
964 \end_layout
966 \begin_layout Subsection
967 Memory manipulation
968 \end_layout
970 \begin_layout Standard
971 <address> may be decimal or hexadecimal (prefixed with '0x').
972  <value> can be hexadecimal (prefixed with '0x'), unsigned or signed (prefixed
973  with '-') decimal.
974 \end_layout
976 \begin_layout Standard
977 The available element <sizes> are:
978 \end_layout
980 \begin_layout Itemize
981 byte: 1 byte
982 \end_layout
984 \begin_layout Itemize
985 word: 2 bytes
986 \end_layout
988 \begin_layout Itemize
989 dword: 4 bytes
990 \end_layout
992 \begin_layout Itemize
993 qword: 8 bytes
994 \end_layout
996 \begin_layout Standard
997 When reading RAM and ROM, multi-byte reads/writes are big-endian.
998  When dealing with DSP memory, multi-byte reads/writes are native-endian
999  (do not use operand sizes exceeding DSP bitness, except dword is OK for
1000  24-bit memory).
1001 \end_layout
1003 \begin_layout Subsubsection
1004 read-<size> <address>
1005 \end_layout
1007 \begin_layout Standard
1008 Read the value of byte in <address>.
1009 \end_layout
1011 \begin_layout Subsubsection
1012 read-s<size> <address>
1013 \end_layout
1015 \begin_layout Standard
1016 Read the value of signed byte in <address>.
1017 \end_layout
1019 \begin_layout Subsubsection
1020 write-<size> <address> <value>
1021 \end_layout
1023 \begin_layout Standard
1024 Write <value> to byte in address <address>.
1025 \end_layout
1027 \begin_layout Subsubsection
1028 search-memory reset
1029 \end_layout
1031 \begin_layout Standard
1032 Reset the memory search
1033 \end_layout
1035 \begin_layout Subsubsection
1036 search-memory count
1037 \end_layout
1039 \begin_layout Standard
1040 Print number of candidates remaining
1041 \end_layout
1043 \begin_layout Subsubsection
1044 search-memory print
1045 \end_layout
1047 \begin_layout Standard
1048 Print all candidates remaining
1049 \end_layout
1051 \begin_layout Subsubsection
1052 search-memory <usflag><sizeflag><op>
1053 \end_layout
1055 \begin_layout Standard
1056 Searches memory for addresses satisfying criteria.
1057 \end_layout
1059 \begin_layout Standard
1060 <usflag> can be:
1061 \end_layout
1063 \begin_layout Itemize
1064 u: unsigned
1065 \end_layout
1067 \begin_layout Itemize
1068 s: signed
1069 \end_layout
1071 \begin_layout Standard
1072 <sizeflag> can be:
1073 \end_layout
1075 \begin_layout Itemize
1076 b: byte
1077 \end_layout
1079 \begin_layout Itemize
1080 w: word
1081 \end_layout
1083 \begin_layout Itemize
1084 d: dword
1085 \end_layout
1087 \begin_layout Itemize
1088 q: qword
1089 \end_layout
1091 \begin_layout Standard
1092 <op> can be:
1093 \end_layout
1095 \begin_layout Itemize
1096 lt: < previous value.
1097 \end_layout
1099 \begin_layout Itemize
1100 le: <= previous value.
1101 \end_layout
1103 \begin_layout Itemize
1104 eq: = previous value.
1105 \end_layout
1107 \begin_layout Itemize
1108 ne: != previous value.
1109 \end_layout
1111 \begin_layout Itemize
1112 ge: >= previous value.
1113 \end_layout
1115 \begin_layout Itemize
1116 gt: > previous value.
1117 \end_layout
1119 \begin_layout Subsubsection
1120 search-memory <sizeflag> <value>
1121 \end_layout
1123 \begin_layout Standard
1124 Searches for addresses that currently have value <value>.
1125  <sizeflag> is as in previous command.
1126 \end_layout
1128 \begin_layout Subsection
1129 Main commands
1130 \end_layout
1132 \begin_layout Standard
1133 These commands are not available in lsnesrc, but are available after ROM
1134  has been loaded.
1135 \end_layout
1137 \begin_layout Subsubsection
1138 quit-emulator [/y] (implemented for wxwidgets)
1139 \end_layout
1141 \begin_layout Standard
1142 Quits the emulator (asking for confirmation).
1143  If /y is given, no confirmation is asked.
1144 \end_layout
1146 \begin_layout Subsubsection
1147 pause-emulator (implemented for wxwidgets)
1148 \end_layout
1150 \begin_layout Standard
1151 Toggle paused/unpaused
1152 \end_layout
1154 \begin_layout Subsubsection
1155 +advance-frame (implemented for wxwidgets)
1156 \end_layout
1158 \begin_layout Standard
1159 Advance frame.
1160  If the button is still held after configurable timeout expires, game unpauses
1161  for the duration frame advance is held.
1162 \end_layout
1164 \begin_layout Subsubsection
1165 +advance-poll (implemented for wxwidgets)
1166 \end_layout
1168 \begin_layout Standard
1169 Advance subframe.
1170  If the button is still held after configurable timeout expires, game unpauses
1171  for the duration frame advance is held.
1172 \end_layout
1174 \begin_layout Subsubsection
1175 advance-skiplag (implemented for wxwidgets)
1176 \end_layout
1178 \begin_layout Standard
1179 Skip to first poll in frame after current.
1180 \end_layout
1182 \begin_layout Subsubsection
1183 reset (implemented for wxwidgets)
1184 \end_layout
1186 \begin_layout Standard
1187 Reset the SNES after this frame.
1188 \end_layout
1190 \begin_layout Subsubsection
1191 load <filename> (implemented for wxwidgets)
1192 \end_layout
1194 \begin_layout Standard
1195 Load savestate <filename> in current mode.
1196 \end_layout
1198 \begin_layout Subsubsection
1199 load-state <filename> (implemented for wxwidgets)
1200 \end_layout
1202 \begin_layout Standard
1203 Load savestate <filename> in readwrite mode.
1204 \end_layout
1206 \begin_layout Subsubsection
1207 load-readonly <filename> (implemented for wxwidgets)
1208 \end_layout
1210 \begin_layout Standard
1211 Load savestate <filename> in readonly mode.
1212 \end_layout
1214 \begin_layout Subsubsection
1215 load-preserve <filename> (implemented for wxwidgets)
1216 \end_layout
1218 \begin_layout Standard
1219 Load savestate <filename> in readonly mode, preserving current events.
1220 \end_layout
1222 \begin_layout Subsubsection
1223 load-movie <filename> (implemented for wxwidgets)
1224 \end_layout
1226 \begin_layout Standard
1227 Load savestate <filename>, ignoring save part in readonly mode.
1228 \end_layout
1230 \begin_layout Subsubsection
1231 save-state <filename> (implemented for wxwidgets)
1232 \end_layout
1234 \begin_layout Standard
1235 Save system state to <filename> as soon as possible.
1236 \end_layout
1238 \begin_layout Subsubsection
1239 save-movie <filename> (implemented for wxwidgets)
1240 \end_layout
1242 \begin_layout Standard
1243 Save movie to <filename>.
1244 \end_layout
1246 \begin_layout Subsubsection
1247 set-rwmode (implemented for wxwidgets)
1248 \end_layout
1250 \begin_layout Standard
1251 Set read-write mode.
1252 \end_layout
1254 \begin_layout Subsubsection
1255 set-romode (implemented for wxwidgets)
1256 \end_layout
1258 \begin_layout Standard
1259 Set read-only mode
1260 \end_layout
1262 \begin_layout Subsubsection
1263 toggle-rwmode (implemented for wxwidgets)
1264 \end_layout
1266 \begin_layout Standard
1267 Toggle between read-only and read-write modes.
1268 \end_layout
1270 \begin_layout Subsubsection
1271 set-gamename <name> (implemented for wxwidgets)
1272 \end_layout
1274 \begin_layout Standard
1275 Set name of the game to <name>
1276 \end_layout
1278 \begin_layout Subsubsection
1279 get-gamename (implemented for wxwidgets)
1280 \end_layout
1282 \begin_layout Standard
1283 Print the name of the game.
1284 \end_layout
1286 \begin_layout Subsubsection
1287 add-author <author> (implemented for wxwidgets)
1288 \end_layout
1290 \begin_layout Standard
1291 Adds new author <author>.
1292  If <author> does not contain '|' it is full name.
1293  If it contains '|', '|' splits the full name and nickname.
1294 \end_layout
1296 \begin_layout Subsubsection
1297 edit-author <num> <author> (implemented for wxwidgets)
1298 \end_layout
1300 \begin_layout Standard
1301 Edit the author in slot <num> (0-based) to be <author> (see add-author for
1302  format)
1303 \end_layout
1305 \begin_layout Subsubsection
1306 remove-author <num> (implemented for wxwidgets)
1307 \end_layout
1309 \begin_layout Standard
1310 Remove author in slot <num>
1311 \end_layout
1313 \begin_layout Subsubsection
1314 print-authors (implemented for wxwidgets)
1315 \end_layout
1317 \begin_layout Standard
1318 Print authors.
1319 \end_layout
1321 \begin_layout Subsubsection
1322 test-1, test-2, test-3 (N/A for wxwidgets)
1323 \end_layout
1325 \begin_layout Standard
1326 Internal test commands.
1327  Don't use.
1328 \end_layout
1330 \begin_layout Subsubsection
1331 take-screenshot <filename> (implemented for wxwidgets)
1332 \end_layout
1334 \begin_layout Standard
1335 Save screenshot to <filename>.
1336 \end_layout
1338 \begin_layout Subsubsection
1339 +controller<num><button> (N/A for wxwidgets)
1340 \end_layout
1342 \begin_layout Standard
1343 Press button <button> on controller <num> (1-8).
1344  The following button names are known:
1345 \end_layout
1347 \begin_layout Itemize
1348 left
1349 \end_layout
1351 \begin_layout Itemize
1352 right
1353 \end_layout
1355 \begin_layout Itemize
1357 \end_layout
1359 \begin_layout Itemize
1360 down
1361 \end_layout
1363 \begin_layout Itemize
1365 \end_layout
1367 \begin_layout Itemize
1369 \end_layout
1371 \begin_layout Itemize
1373 \end_layout
1375 \begin_layout Itemize
1377 \end_layout
1379 \begin_layout Itemize
1381 \end_layout
1383 \begin_layout Itemize
1385 \end_layout
1387 \begin_layout Itemize
1388 select
1389 \end_layout
1391 \begin_layout Itemize
1392 start
1393 \end_layout
1395 \begin_layout Itemize
1396 trigger
1397 \end_layout
1399 \begin_layout Itemize
1400 cursor
1401 \end_layout
1403 \begin_layout Itemize
1404 pause
1405 \end_layout
1407 \begin_layout Itemize
1408 turbo
1409 \end_layout
1411 \begin_layout Subsubsection
1412 controllerh<num><button>
1413 \end_layout
1415 \begin_layout Standard
1416 Hold/unhold button <button> on controller <num> (1-8).
1417  See +controller for button names.
1418 \end_layout
1420 \begin_layout Subsubsection
1421 autofire (<pattern>|-)...
1422  (N/A for wxwidgets)
1423 \end_layout
1425 \begin_layout Standard
1426 Set autofire pattern.
1427  Each parameter is comma-separated list of button names (in form of 1start,
1428  1A, 2B, etc..) to hold on that frame.
1429  After reaching the end of pattern, the pattern restarts from the beginning.
1430 \end_layout
1432 \begin_layout Subsubsection
1433 repaint (N/A for wxwidgets)
1434 \end_layout
1436 \begin_layout Standard
1437 Force a repaint.
1438 \end_layout
1440 \begin_layout Subsection
1441 Save jukebox (implemented for wxwidgets)
1442 \end_layout
1444 \begin_layout Subsubsection
1445 cycle-jukebox-backward (N/A for wxwidgets)
1446 \end_layout
1448 \begin_layout Standard
1449 Cycle save jukebox backwards.
1450 \end_layout
1452 \begin_layout Subsubsection
1453 cycle-jukebox-forward (N/A for wxwidgets)
1454 \end_layout
1456 \begin_layout Standard
1457 Cycle save jukebox forwards
1458 \end_layout
1460 \begin_layout Subsubsection
1461 add-jukebox-save <filename> (N/A for wxwidgets)
1462 \end_layout
1464 \begin_layout Standard
1465 Add <filename> to jukebox saves.
1466 \end_layout
1468 \begin_layout Subsubsection
1469 load-jukebox (N/A for wxwidgets)
1470 \end_layout
1472 \begin_layout Standard
1473 Do load from jukebox (current mode).
1474 \end_layout
1476 \begin_layout Subsubsection
1477 save-jukebox (N/A for wxwidgets)
1478 \end_layout
1480 \begin_layout Standard
1481 Do state save to jukebox.
1482 \end_layout
1484 \begin_layout Subsection
1485 Lua (implemented for wxwidgets)
1486 \end_layout
1488 \begin_layout Standard
1489 Only available if lua support is compiled in.
1490 \end_layout
1492 \begin_layout Subsubsection
1493 <<<<<<< HEADevaluate-lua <luacode>=======eval-lua <luacode> (implemented
1494  for wxwidgets)>>>>>>> Wxwidgets Graphics plugin WIP
1495 \end_layout
1497 \begin_layout Standard
1498 Run Lua code <luacode> using built-in Lua interpretter.
1499 \end_layout
1501 \begin_layout Subsubsection
1502 run-lua <script> (implemented for wxwidgets)
1503 \end_layout
1505 \begin_layout Standard
1506 Run specified lua file using built-in Lua interpretter.
1507 \end_layout
1509 \begin_layout Subsection
1510 Memory watch
1511 \end_layout
1513 \begin_layout Subsubsection
1514 add-watch <name> <expression>
1515 \end_layout
1517 \begin_layout Standard
1518 Adds new watch (or modifies old one).
1519 \end_layout
1521 \begin_layout Subsubsection
1522 remove-watch <name>
1523 \end_layout
1525 \begin_layout Standard
1526 Remove a watch.
1527 \end_layout
1529 \begin_layout Subsection
1530 Sound (implemented for wxwidgets)
1531 \end_layout
1533 \begin_layout Subsubsection
1534 enable-sound <on/off> (implemented for wxwidgets)
1535 \end_layout
1537 \begin_layout Standard
1538 Enable/Disable sound.
1539 \end_layout
1541 \begin_layout Subsubsection
1542 set-sound-device <device> (implemented for wxwidgets)
1543 \end_layout
1545 \begin_layout Standard
1546 Set sound device to <device>
1547 \end_layout
1549 \begin_layout Subsubsection
1550 show-sound-status (implemented for wxwidgets)
1551 \end_layout
1553 \begin_layout Standard
1554 Show status of sound system.
1555 \end_layout
1557 \begin_layout Subsubsection
1558 show-sound-devices (N/A for wxwidgets)
1559 \end_layout
1561 \begin_layout Standard
1562 Show all available devices.
1563 \end_layout
1565 \begin_layout Subsection
1566 SDL Platform commands (implemented for wxwidgets)
1567 \end_layout
1569 \begin_layout Standard
1570 The following are valid on SDL platform.
1571 \end_layout
1573 \begin_layout Subsubsection
1574 identify-key (N/A for wxwidgets)
1575 \end_layout
1577 \begin_layout Standard
1578 Asks to press a key and then identifies that (pseudo-)key.
1579 \end_layout
1581 \begin_layout Subsubsection
1582 toggle-console (N/A for wxwidgets)
1583 \end_layout
1585 \begin_layout Standard
1586 Toggle between windowed/fullscreen console.
1587 \end_layout
1589 \begin_layout Subsubsection
1590 scroll-fullup (N/A for wxwidgets)
1591 \end_layout
1593 \begin_layout Standard
1594 Scroll messages window as far back as it goes.
1595 \end_layout
1597 \begin_layout Subsubsection
1598 scroll-fulldown (N/A for wxwidgets)
1599 \end_layout
1601 \begin_layout Standard
1602 Scroll messages window as far forward as it goes.
1603 \end_layout
1605 \begin_layout Subsubsection
1606 scroll-up (N/A for wxwidgets)
1607 \end_layout
1609 \begin_layout Standard
1610 Scroll messages window back one screenful.
1611 \end_layout
1613 \begin_layout Subsubsection
1614 scroll-down (N/A for wxwidgets)
1615 \end_layout
1617 \begin_layout Standard
1618 Scroll messages window forward one screenful.
1619 \end_layout
1621 \begin_layout Section
1622 Settings
1623 \end_layout
1625 \begin_layout Subsection
1626 Core settings
1627 \end_layout
1629 \begin_layout Subsubsection
1630 firmwarepath
1631 \end_layout
1633 \begin_layout Standard
1634 Set where bsnes looks for firmware files.
1635  Default is 
1636 \begin_inset Quotes eld
1637 \end_inset
1640 \begin_inset Quotes erd
1641 \end_inset
1644 \end_layout
1646 \begin_layout Subsubsection
1647 targetfps
1648 \end_layout
1650 \begin_layout Standard
1651 Set the target fps.
1652  Numeric, range is 0.001 to 
1653 \begin_inset Quotes eld
1654 \end_inset
1656 infinite
1657 \begin_inset Quotes erd
1658 \end_inset
1661  Default is native framerate.
1662 \end_layout
1664 \begin_layout Subsubsection
1665 savecompression
1666 \end_layout
1668 \begin_layout Standard
1669 Set save compression level (integer 0-9).
1670  Default is 7 (0 is no compression).
1671 \end_layout
1673 \begin_layout Subsubsection
1674 advance-timeout
1675 \end_layout
1677 \begin_layout Standard
1678 Set the frame advance timeout in milliseconds.
1679  Numeric integer, range is 0-999999999.
1680  Default is 500.
1681 \end_layout
1683 \begin_layout Subsection
1684 AVI dumper settings
1685 \end_layout
1687 \begin_layout Subsubsection
1688 avi-large
1689 \end_layout
1691 \begin_layout Standard
1692 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1693  outputs.
1694 \end_layout
1696 \begin_layout Subsubsection
1697 avi-left-border
1698 \end_layout
1700 \begin_layout Standard
1701 AVI dumper: Set the default left border thickness (unless lua overrides)
1702  for dumps.
1703  Range 0-8191.
1704  Default is 0.
1705 \end_layout
1707 \begin_layout Subsubsection
1708 avi-right-border
1709 \end_layout
1711 \begin_layout Standard
1712 AVI dumper: Set the default right border thickness (unless lua overrides)
1713  for dumps.
1714  Range 0-8191.
1715  Default is 0.
1716 \end_layout
1718 \begin_layout Subsubsection
1719 avi-top-border
1720 \end_layout
1722 \begin_layout Standard
1723 AVI dumper: Set the default top border thickness (unless lua overrides)
1724  for dumps.
1725  Range 0-8191.
1726  Default is 0.
1727 \end_layout
1729 \begin_layout Subsubsection
1730 avi-bottom-border
1731 \end_layout
1733 \begin_layout Standard
1734 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1735  for dumps.
1736  Range 0-8191.
1737  Default is 0.
1738 \end_layout
1740 \begin_layout Subsubsection
1741 avi-maxframes
1742 \end_layout
1744 \begin_layout Standard
1745 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1746  Range 0-999999999.
1747  Default is 0.
1748 \end_layout
1750 \begin_layout Subsection
1751 SDL platform settings
1752 \end_layout
1754 \begin_layout Subsubsection
1755 autorepeat-first-delay
1756 \end_layout
1758 \begin_layout Standard
1759 Sets the delay for first character in typematic autorepeat.
1760 \end_layout
1762 \begin_layout Subsubsection
1763 autorepeat-subsequent-delay
1764 \end_layout
1766 \begin_layout Standard
1767 Sets the delay for subsequent characters in typematic autorepeat.
1768 \end_layout
1770 \begin_layout Section
1771 Lua functions
1772 \end_layout
1774 \begin_layout Subsection
1775 Core (in main table)
1776 \end_layout
1778 \begin_layout Subsubsection
1779 print
1780 \end_layout
1782 \begin_layout Standard
1783 Print line to message console.
1784 \end_layout
1786 \begin_layout Subsubsection
1787 exec(string command)
1788 \end_layout
1790 \begin_layout Standard
1791 Run command as it was entered on the command line
1792 \end_layout
1794 \begin_layout Subsection
1795 Table bit:
1796 \end_layout
1798 \begin_layout Standard
1799 Bitwise logical functions and related.
1800 \end_layout
1802 \begin_layout Subsubsection
1803 bit.none(number...) / bit.bnot(number...)
1804 \end_layout
1806 \begin_layout Standard
1807 48-bit bitwise NOT / NONE function (set bits that are set in none of the
1808  arguments).
1809 \end_layout
1811 \begin_layout Subsubsection
1812 bit.any(number...) / bit.bor(number...)
1813 \end_layout
1815 \begin_layout Standard
1816 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
1817 \end_layout
1819 \begin_layout Subsubsection
1820 bit.all(number...) / bit.band(number...)
1821 \end_layout
1823 \begin_layout Standard
1824 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
1826 \end_layout
1828 \begin_layout Subsubsection
1829 bit.parity(number...) / bit.bxor(number...)
1830 \end_layout
1832 \begin_layout Standard
1833 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
1834  of the arguments).
1835 \end_layout
1837 \begin_layout Subsubsection
1838 bit.lrotate(number base[, number amount[, number bits]])
1839 \end_layout
1841 \begin_layout Standard
1842 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
1843 \end_layout
1845 \begin_layout Subsubsection
1846 bit.rrotate(number base[, number amount[, number bits]])
1847 \end_layout
1849 \begin_layout Standard
1850 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
1851  places.
1852 \end_layout
1854 \begin_layout Subsubsection
1855 bit.lshift(number base[, number amount[, number bits]])
1856 \end_layout
1858 \begin_layout Standard
1859 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
1860  The new bits are filled with zeroes.
1861 \end_layout
1863 \begin_layout Subsubsection
1864 bit.lrshift(number base[, number amount[, number bits]])
1865 \end_layout
1867 \begin_layout Standard
1868 Shift bits-bit (max 48, default 48) number logically right by amount (default
1869  1) places.
1870  The new bits are filled with zeroes.
1871 \end_layout
1873 \begin_layout Subsubsection
1874 bit.arshift(number base[, number amount[, number bits]])
1875 \end_layout
1877 \begin_layout Standard
1878 Shift bits-bit (max 48, default 48) number arithmetically right by amount
1879  (default 1) places.
1880  The new bits are shifted in with copy of the high bit.
1881 \end_layout
1883 \begin_layout Subsection
1884 Table gui:
1885 \end_layout
1887 \begin_layout Standard
1888 Most of these functions can only be called in on_paint and on_video callbacks.
1889  Exceptions are noted.
1890 \end_layout
1892 \begin_layout Standard
1893 Colors are 32-bit.
1894  Bits 0-7 are the blue component, bits 8-15 are the green component, bits
1895  16-23 are the red component, bits 24-31 are alpha component (0 is fully
1896  opaque, 255 is almost transparent).
1897  -1 is the fully transparent color.
1898  Alpha values greater than 127 do work.
1899 \end_layout
1901 \begin_layout Standard
1902 Origin of coordinates is at top left corner of game display area.
1903  Left and top gaps correspond to negative coordinates.
1904 \end_layout
1906 \begin_layout Subsubsection
1907 gui.resolution()
1908 \end_layout
1910 \begin_layout Standard
1911 Returns 2-tuple (hresolution, vresolution).
1912 \end_layout
1914 \begin_layout Subsubsection
1915 gui.<class>_gap(number gap)
1916 \end_layout
1918 \begin_layout Standard
1919 Set the <class> (left, right, top, bottom) gap to specified value (max gap
1920  is 8191).
1921 \end_layout
1923 \begin_layout Subsubsection
1924 gui.text(number x, number y, string text[, number fgc[, number bgc]])
1925 \end_layout
1927 \begin_layout Standard
1928 Draw specified text on the GUI (each character cell is 8 or 16 wide and
1929  16 high).
1930  Parameters:
1931 \end_layout
1933 \begin_layout Itemize
1934 x: X-coordinate to start the drawing from (and x-coordinate at begining
1935  of the lines).
1936 \end_layout
1938 \begin_layout Itemize
1939 y: Y-coordinate to start the drawing from.
1940 \end_layout
1942 \begin_layout Itemize
1943 text: The text to draw.
1944 \end_layout
1946 \begin_layout Itemize
1947 fgc: Text color (default is 0xFFFFFF (white))
1948 \end_layout
1950 \begin_layout Itemize
1951 bgc: Background color (default is -1 (transparent))
1952 \end_layout
1954 \begin_layout Subsubsection
1955 gui.rectangle(number x, number y, number width, number height[, number thickness[
1956 , number outline[, number fill]]])
1957 \end_layout
1959 \begin_layout Standard
1960 Draw rectangle on the GUI.
1961  Parameters:
1962 \end_layout
1964 \begin_layout Itemize
1965 x: X-coordinate of left edge.
1966 \end_layout
1968 \begin_layout Itemize
1969 y: Y-coordinate of upper edge.
1970 \end_layout
1972 \begin_layout Itemize
1973 width: Width of rectangle.
1974 \end_layout
1976 \begin_layout Itemize
1977 height: Height of rectangle.
1978 \end_layout
1980 \begin_layout Itemize
1981 thickness: Thickness of outline (default is 1).
1982 \end_layout
1984 \begin_layout Itemize
1985 outline: Color of outline (default is 0xFFFFFF (white))
1986 \end_layout
1988 \begin_layout Itemize
1989 fill: Color of fil (default is -1 (transparent))
1990 \end_layout
1992 \begin_layout Subsubsection
1993 gui.pixel(number x, number y[, number color])
1994 \end_layout
1996 \begin_layout Standard
1997 Draw one pixel on the GUI.
1998  Parameters:
1999 \end_layout
2001 \begin_layout Itemize
2002 x: X-coordinate of the pixel
2003 \end_layout
2005 \begin_layout Itemize
2006 y: Y-coordinate of the pixel
2007 \end_layout
2009 \begin_layout Itemize
2010 color: Color of the pixel (default is 0xFFFFFF (white))
2011 \end_layout
2013 \begin_layout Subsubsection
2014 gui.crosshair(number x, number y[, number length[, number color]])
2015 \end_layout
2017 \begin_layout Standard
2018 Draw a crosshair.
2019  Parameters:
2020 \end_layout
2022 \begin_layout Itemize
2023 x: X-coordinate of the crosshair
2024 \end_layout
2026 \begin_layout Itemize
2027 y: Y-coordinate of the crosshair
2028 \end_layout
2030 \begin_layout Itemize
2031 length: Length of the crosshair lines (default 10).
2032 \end_layout
2034 \begin_layout Itemize
2035 color: Color of the crosshair (default is 0xFFFFFF (white))
2036 \end_layout
2038 \begin_layout Subsubsection
2039 gui.line(number x1, number y1, number x2, number y2[, number color])
2040 \end_layout
2042 \begin_layout Standard
2043 Draw a thin line.
2044  Parameters:
2045 \end_layout
2047 \begin_layout Itemize
2048 x1: X-coordinate of one end.
2049 \end_layout
2051 \begin_layout Itemize
2052 y1: Y-coordinate of one end.
2053 \end_layout
2055 \begin_layout Itemize
2056 x2: X-coordinate of the other end.
2057 \end_layout
2059 \begin_layout Itemize
2060 y2: Y-coordinate of the other end.
2061 \end_layout
2063 \begin_layout Itemize
2064 color: Color of the line (default is 0xFFFFFF (white)).
2065 \end_layout
2067 \begin_layout Subsubsection
2068 gui.circle(number x, number y, number r[, number thick[, number border[,
2069  number fil]]])
2070 \end_layout
2072 \begin_layout Standard
2073 Draw a circle.
2074  Parameters.
2075 \end_layout
2077 \begin_layout Itemize
2078 x: X-coordinate of the center
2079 \end_layout
2081 \begin_layout Itemize
2082 y: Y-coordinate of the center
2083 \end_layout
2085 \begin_layout Itemize
2086 r: The radius of the circle
2087 \end_layout
2089 \begin_layout Itemize
2090 thick: Border thickness
2091 \end_layout
2093 \begin_layout Itemize
2094 border: Border color (default is 0xFFFFFF (white))
2095 \end_layout
2097 \begin_layout Itemize
2098 fill: Fill color (default is -1 (transparent)).
2099 \end_layout
2101 \begin_layout Subsubsection
2102 gui.repaint()
2103 \end_layout
2105 \begin_layout Standard
2106 Request on_repaint() to happen as soon as possible.
2107  Can be used anywhere.
2108 \end_layout
2110 \begin_layout Subsubsection
2111 gui.subframe_update(boolean on)
2112 \end_layout
2114 \begin_layout Standard
2115 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
2116  or not happen (on=false).
2117  Can be used anywhere.
2118 \end_layout
2120 \begin_layout Subsubsection
2121 gui.screenshot(string filename)
2122 \end_layout
2124 \begin_layout Standard
2125 Write PNG screenshot of the current frame (no drawings) to specified file.
2126  Can be used anywhere.
2127 \end_layout
2129 \begin_layout Subsubsection
2130 gui.color(number r, number g, number b[, number a])
2131 \end_layout
2133 \begin_layout Standard
2134 Returns color (in notation Lua scripts use) corresponding to color (r,g,b),
2135  each component in scale 0-255.
2136  If a is specified, that is alpha (0 is fully transparent, 256(sic) is fully
2137  opaque).
2138  The default alpha is 256.
2139 \end_layout
2141 \begin_layout Subsubsection
2142 gui.status(string name, string value)
2143 \end_layout
2145 \begin_layout Standard
2146 Set status field 
2147 \begin_inset Quotes eld
2148 \end_inset
2150 L[<name>]
2151 \begin_inset Quotes erd
2152 \end_inset
2154  to <value> in status area.
2155  Can be used anywhere.
2156 \end_layout
2158 \begin_layout Subsection
2159 table input
2160 \end_layout
2162 \begin_layout Standard
2163 Input handling.
2164  Only available in on_input callback.
2165 \end_layout
2167 \begin_layout Subsubsection
2168 input.get(number controller, number index)
2169 \end_layout
2171 \begin_layout Standard
2172 Read the specified index (0-11) from specified controller (0-7).
2173  Notes:
2174 \end_layout
2176 \begin_layout Itemize
2177 Uses physical controller numbering.
2178  Gamepad in port 2 is controller 4, not 1!
2179 \end_layout
2181 \begin_layout Subsubsection
2182 input.set(number controller, number index, number value)
2183 \end_layout
2185 \begin_layout Standard
2186 Write the specified index (0-11) from specified controller (0-7), storing
2187  value.
2188  Notes:
2189 \end_layout
2191 \begin_layout Itemize
2192 Uses physical controller numbering.
2193  Gamepad in port 2 is controller 4, not 1!
2194 \end_layout
2196 \begin_layout Subsubsection
2197 input.reset([number cycles])
2198 \end_layout
2200 \begin_layout Standard
2201 Execute reset.
2202  If cycles is greater than zero, do delayed reset.
2203  0 (or no value) causes immediate reset.
2204 \end_layout
2206 \begin_layout Itemize
2207 Only available with subframe flag false.
2208 \end_layout
2210 \begin_layout Subsection
2211 Table hostmemory
2212 \end_layout
2214 \begin_layout Standard
2215 Host memory handling (extra memory saved to savestates).
2216  Host memory starts empty.
2217 \end_layout
2219 \begin_layout Subsubsection
2220 hostmemory.read(number address)
2221 \end_layout
2223 \begin_layout Standard
2224 Reads hostmemory slot address.
2225  Slot numbers out of range return false instead of numeric.
2226 \end_layout
2228 \begin_layout Subsubsection
2229 hostmemory.write(number address, number value)
2230 \end_layout
2232 \begin_layout Standard
2233 Writes hostmemory slot with 0-255.
2234  Slot numbers out of range cause extension of host memory slot space.
2235 \end_layout
2237 \begin_layout Subsubsection
2238 hostmemory.readbyte(number address)
2239 \end_layout
2241 \begin_layout Standard
2242 Read unsigned byte (1 element) from given address.
2243  Slots out of range return false.
2244 \end_layout
2246 \begin_layout Subsubsection
2247 hostmemory.writebyte(number address, number value)
2248 \end_layout
2250 \begin_layout Standard
2251 Write unsigned byte (1 element) to given slot.
2252  Slot numbers out of range cause extension.
2253 \end_layout
2255 \begin_layout Subsubsection
2256 hostmemory.readsbyte(number address)
2257 \end_layout
2259 \begin_layout Standard
2260 Read signed byte (1 element) from given address.
2261  Slots out of range return false.
2262 \end_layout
2264 \begin_layout Subsubsection
2265 hostmemory.writesbyte(number address, number value)
2266 \end_layout
2268 \begin_layout Standard
2269 Write signed byte (1 element) to given slot.
2270  Slot numbers out of range cause extension.
2271 \end_layout
2273 \begin_layout Subsubsection
2274 hostmemory.readword(number address)
2275 \end_layout
2277 \begin_layout Standard
2278 Read unsigned word (2 elements) from given address.
2279  Slots out of range return false.
2280 \end_layout
2282 \begin_layout Subsubsection
2283 hostmemory.writeword(number address, number value)
2284 \end_layout
2286 \begin_layout Standard
2287 Write unsigned word (2 elements) to given slot.
2288  Slot numbers out of range cause extension.
2289 \end_layout
2291 \begin_layout Subsubsection
2292 hostmemory.readsword(number address)
2293 \end_layout
2295 \begin_layout Standard
2296 Read signed word (2 elements) from given address.
2297  Slots out of range return false.
2298 \end_layout
2300 \begin_layout Subsubsection
2301 hostmemory.writesword(number address, number value)
2302 \end_layout
2304 \begin_layout Standard
2305 Write signed word (2 elements) to given slot.
2306  Slot numbers out of range cause extension.
2307 \end_layout
2309 \begin_layout Subsubsection
2310 hostmemory.readdword(number address)
2311 \end_layout
2313 \begin_layout Standard
2314 Read unsigned doubleword (4 elements) from given address.
2315  Slots out of range return false.
2316 \end_layout
2318 \begin_layout Subsubsection
2319 hostmemory.writedword(number address, number value)
2320 \end_layout
2322 \begin_layout Standard
2323 Write unsigned doubleword (4 elements) to given slot.
2324  Slot numbers out of range cause extension.
2325 \end_layout
2327 \begin_layout Subsubsection
2328 hostmemory.readsdword(number address)
2329 \end_layout
2331 \begin_layout Standard
2332 Read signed doubleword (4 elements) from given address.
2333  Slots out of range return false.
2334 \end_layout
2336 \begin_layout Subsubsection
2337 hostmemory.writesdword(number address, number value)
2338 \end_layout
2340 \begin_layout Standard
2341 Write signed doubleword (4 elements) to given slot.
2342  Slot numbers out of range cause extension.
2343 \end_layout
2345 \begin_layout Subsubsection
2346 hostmemory.readqword(number address)
2347 \end_layout
2349 \begin_layout Standard
2350 Read unsigned quadword (8 elements) from given address.
2351  Slots out of range return false.
2352 \end_layout
2354 \begin_layout Subsubsection
2355 hostmemory.writeqword(number address, number value)
2356 \end_layout
2358 \begin_layout Standard
2359 Write unsigned quadword (4 elements) to given slot.
2360  Slot numbers out of range cause extension.
2361 \end_layout
2363 \begin_layout Subsubsection
2364 hostmemory.readsqword(number address)
2365 \end_layout
2367 \begin_layout Standard
2368 Read signed quadword (8 elements) from given address.
2369  Slots out of range return false.
2370 \end_layout
2372 \begin_layout Subsubsection
2373 hostmemory.writesqword(number address, number value)
2374 \end_layout
2376 \begin_layout Standard
2377 Write signed quadword (8 elements) to given slot.
2378  Slot numbers out of range cause extension.
2379 \end_layout
2381 \begin_layout Subsection
2382 Table movie
2383 \end_layout
2385 \begin_layout Standard
2386 Movie handling
2387 \end_layout
2389 \begin_layout Subsubsection
2390 movie.currentframe()
2391 \end_layout
2393 \begin_layout Standard
2394 Return number of current frame.
2395 \end_layout
2397 \begin_layout Subsubsection
2398 movie.framecount()
2399 \end_layout
2401 \begin_layout Standard
2402 Return number of frames in movie.
2403 \end_layout
2405 \begin_layout Subsubsection
2406 movie.readonly()
2407 \end_layout
2409 \begin_layout Standard
2410 Return true if in readonly mode, false if in readwrite.
2411 \end_layout
2413 \begin_layout Subsubsection
2414 movie.set_readwrite()
2415 \end_layout
2417 \begin_layout Standard
2418 Set readwrite mode (does not cause on_readwrite callback).
2419 \end_layout
2421 \begin_layout Subsubsection
2422 movie.frame_subframes(number frame)
2423 \end_layout
2425 \begin_layout Standard
2426 Count number of subframes in specified frame (frame numbers are 1-based)
2427  and return that.
2428 \end_layout
2430 \begin_layout Subsubsection
2431 movie.read_subframe(number frame, number subframe)
2432 \end_layout
2434 \begin_layout Standard
2435 Read specifed subframe in specified frame and return data as array (100
2436  elements, numbered 0-99 currently).
2437 \end_layout
2439 \begin_layout Subsection
2440 Table settings
2441 \end_layout
2443 \begin_layout Standard
2444 Routines for settings manipulation
2445 \end_layout
2447 \begin_layout Subsubsection
2448 settings.get(string name)
2449 \end_layout
2451 \begin_layout Standard
2452 Get value of setting.
2453  If setting is blank, returns false.
2454  If setting value can't be obtained, returns (nil, error message).
2455 \end_layout
2457 \begin_layout Subsubsection
2458 settings.set(string name, string value)
2459 \end_layout
2461 \begin_layout Standard
2462 Set value of setting.
2463  If setting can't be set, returns (nil, error message).
2464 \end_layout
2466 \begin_layout Subsubsection
2467 settings.is_set(string name)
2468 \end_layout
2470 \begin_layout Standard
2471 Returns if setting is set.
2472  If setting does not exist, returns (nil, error message).
2473 \end_layout
2475 \begin_layout Subsubsection
2476 settings.blank(string name)
2477 \end_layout
2479 \begin_layout Standard
2480 Blanks a setting and returns true.
2481  If setting can't be blanked, returns (nil, error message).
2482 \end_layout
2484 \begin_layout Subsection
2485 Table memory
2486 \end_layout
2488 \begin_layout Standard
2489 Contains various functions for managing memory
2490 \end_layout
2492 \begin_layout Subsubsection
2493 memory.vma_count()
2494 \end_layout
2496 \begin_layout Standard
2497 Returns the number of VMAs
2498 \end_layout
2500 \begin_layout Subsubsection
2501 memory.read_vma(number index)
2502 \end_layout
2504 \begin_layout Standard
2505 Reads the specified VMA (indices start from zero).
2506  Trying to read invalid VMA gives nil.
2507  The read VMA is table with the following fields:
2508 \end_layout
2510 \begin_layout Itemize
2511 region_name (string): The readable name of the VMA
2512 \end_layout
2514 \begin_layout Itemize
2515 baseaddr (number): Base address of the VMA
2516 \end_layout
2518 \begin_layout Itemize
2519 lastaddr (number): Last address in the VMA.
2520 \end_layout
2522 \begin_layout Itemize
2523 size (number): The size of VMA in bytes.
2524 \end_layout
2526 \begin_layout Itemize
2527 readonly (boolean): True of the VMA corresponds to ROM.
2528 \end_layout
2530 \begin_layout Itemize
2531 native_endian (boolean): True if the VMA has native endian as opposed to
2532  little endian.
2533 \end_layout
2535 \begin_layout Subsubsection
2536 memory.find_vma(number address)
2537 \end_layout
2539 \begin_layout Standard
2540 Finds the VMA containing specified address.
2541  Returns table in the same format as read_vma or nil if not found.
2542 \end_layout
2544 \begin_layout Subsubsection
2545 memory.readbyte(number address)
2546 \end_layout
2548 \begin_layout Standard
2549 Reads the specified address as unsigned byte and returns the result.
2550 \end_layout
2552 \begin_layout Subsubsection
2553 memory.readsbyte(number address)
2554 \end_layout
2556 \begin_layout Standard
2557 Reads the specified address as signed byte and returns the result.
2558 \end_layout
2560 \begin_layout Subsubsection
2561 memory.writebyte(number address, number value)
2562 \end_layout
2564 \begin_layout Standard
2565 Writes the specified value (negative values undergo 2's complement) to specified
2566  address (as a byte).
2567 \end_layout
2569 \begin_layout Subsubsection
2570 memory.readword(number address)
2571 \end_layout
2573 \begin_layout Standard
2574 Reads the specified address as unsigned word and returns the result.
2575 \end_layout
2577 \begin_layout Subsubsection
2578 memory.readsword(number address)
2579 \end_layout
2581 \begin_layout Standard
2582 Reads the specified address as signed word and returns the result.
2583 \end_layout
2585 \begin_layout Subsubsection
2586 memory.writeword(number address, number value)
2587 \end_layout
2589 \begin_layout Standard
2590 Writes the specified value (negative values undergo 2's complement) to specified
2591  address (as a word).
2592 \end_layout
2594 \begin_layout Subsubsection
2595 memory.readdword(number address)
2596 \end_layout
2598 \begin_layout Standard
2599 Reads the specified address as unsigned doubleword and returns the result.
2600 \end_layout
2602 \begin_layout Subsubsection
2603 memory.readsdword(number address)
2604 \end_layout
2606 \begin_layout Standard
2607 Reads the specified address as signed doubleword and returns the result.
2608 \end_layout
2610 \begin_layout Subsubsection
2611 memory.writedword(number address, number value)
2612 \end_layout
2614 \begin_layout Standard
2615 Writes the specified value (negative values undergo 2's complement) to specified
2616  address (as a doubleword).
2617 \end_layout
2619 \begin_layout Subsubsection
2620 memory.readqword(number address)
2621 \end_layout
2623 \begin_layout Standard
2624 Reads the specified address as unsigned quadword and returns the result.
2625 \end_layout
2627 \begin_layout Subsubsection
2628 memory.readsqword(number address)
2629 \end_layout
2631 \begin_layout Standard
2632 Reads the specified address as signed quadword and returns the result.
2633 \end_layout
2635 \begin_layout Subsubsection
2636 memory.writeqword(number address, number value)
2637 \end_layout
2639 \begin_layout Standard
2640 Writes the specified value (negative values undergo 2's complement) to specified
2641  address (as a quadword).
2642 \end_layout
2644 \begin_layout Subsection
2645 Table _SYSTEM
2646 \end_layout
2648 \begin_layout Standard
2649 Contains copy of global variables from time of Lua initialization.
2650  Non-writeable.
2651 \end_layout
2653 \begin_layout Subsection
2654 Callbacks
2655 \end_layout
2657 \begin_layout Standard
2658 Various callbacks to Lua that can occur.
2659 \end_layout
2661 \begin_layout Subsubsection
2662 Callback: on_paint()
2663 \end_layout
2665 \begin_layout Standard
2666 Called when screen is being painted.
2667  Any gui.* calls requiring graphic context draw on the screen.
2668 \end_layout
2670 \begin_layout Subsubsection
2671 Callback: on_video()
2672 \end_layout
2674 \begin_layout Standard
2675 Called when video dump frame is being painted.
2676  Any gui.* calls requiring graphic context draw on the video.
2677 \end_layout
2679 \begin_layout Subsubsection
2680 Callback: on_frame()
2681 \end_layout
2683 \begin_layout Standard
2684 Called on each starting whole frame.
2685 \end_layout
2687 \begin_layout Subsubsection
2688 Callback: on_startup()
2689 \end_layout
2691 \begin_layout Standard
2692 Called when the emulator is starting (lsnes.rc and --run files has been run).
2693 \end_layout
2695 \begin_layout Subsubsection
2696 Callback: on_pre_load(string name)
2697 \end_layout
2699 \begin_layout Standard
2700 Called just before savestate/movie load occurs (note: loads are always delayed,
2701  so this occurs even when load was initiated by lua).
2702 \end_layout
2704 \begin_layout Subsubsection
2705 Callback: on_err_load(string name)
2706 \end_layout
2708 \begin_layout Standard
2709 Called if loadstate goes wrong.
2710 \end_layout
2712 \begin_layout Subsubsection
2713 Callback: on_post_load(string name, boolean was_savestate)
2714 \end_layout
2716 \begin_layout Standard
2717 Called on successful loadstate.
2718  was_savestate gives if this was a savestate or a movie.
2719 \end_layout
2721 \begin_layout Subsubsection
2722 Callback: on_pre_save(string name, boolean is_savestate)
2723 \end_layout
2725 \begin_layout Standard
2726 Called just before savestate save occurs (note: movie saves are synchronous
2727  and won't trigger these callbacks if called from Lua).
2728 \end_layout
2730 \begin_layout Subsubsection
2731 Callback: on_err_save(string name)
2732 \end_layout
2734 \begin_layout Standard
2735 Called if savestate goes wrong.
2736 \end_layout
2738 \begin_layout Subsubsection
2739 Callback: on_post_save(string name, boolean is_savestate)
2740 \end_layout
2742 \begin_layout Standard
2743 Called on successful savaestate.
2744  is_savestate gives if this was a savestate or a movie.
2745 \end_layout
2747 \begin_layout Subsubsection
2748 Callback: on_quit()
2749 \end_layout
2751 \begin_layout Standard
2752 Called when emulator is shutting down.
2753 \end_layout
2755 \begin_layout Subsubsection
2756 Callback: on_input(boolean subframe)
2757 \end_layout
2759 \begin_layout Standard
2760 Called when emulator is just sending input to bsnes core.
2761  Warning: This is called even in readonly mode, but the results are ignored.
2762 \end_layout
2764 \begin_layout Subsubsection
2765 Callback: on_reset()
2766 \end_layout
2768 \begin_layout Standard
2769 Called when SNES is reset.
2770 \end_layout
2772 \begin_layout Subsubsection
2773 Callback: on_readwrite()
2774 \end_layout
2776 \begin_layout Standard
2777 Called when moving into readwrite mode as result of 
2778 \begin_inset Quotes eld
2779 \end_inset
2781 set-rwmode
2782 \begin_inset Quotes erd
2783 \end_inset
2785  command (note: moving to rwmode by Lua won't trigger this, as per recursive
2786  entry protection).
2787 \end_layout
2789 \begin_layout Subsubsection
2790 Callback: on_snoop(number port, number controller, number index, number
2791  value)
2792 \end_layout
2794 \begin_layout Standard
2795 Called each time bsnes asks for input.
2796  The value is the final value to be sent to bsnes core (readonly mode, autohold
2797  and autofire have been taken into account).
2798  Might be useful when translating movies to format suitable for console
2799  verification.
2800  Note: There is no way to modify the value to be sent.
2801 \end_layout
2803 \begin_layout Section
2804 Modifier and key names:
2805 \end_layout
2807 \begin_layout Subsection
2808 SDL Platform
2809 \end_layout
2811 \begin_layout Subsubsection
2812 Modifier names
2813 \end_layout
2815 \begin_layout Standard
2816 Following modifier names are known:
2817 \end_layout
2819 \begin_layout Itemize
2820 ctrl, lctrl, rctrl: Control keys
2821 \end_layout
2823 \begin_layout Itemize
2824 alt, lalt, ralt: ALT keys.
2825 \end_layout
2827 \begin_layout Itemize
2828 shift, lshift, rshift: Shift keys.
2829 \end_layout
2831 \begin_layout Itemize
2832 meta, lmeta, rmeta: Meta keys.
2833 \end_layout
2835 \begin_layout Itemize
2836 num, caps: Numlock/Capslock (these are sticky!)
2837 \end_layout
2839 \begin_layout Itemize
2840 mode: Mode select.
2841 \end_layout
2843 \begin_layout Subsubsection
2844 Key names
2845 \end_layout
2847 \begin_layout Standard
2848 Following key names are known:
2849 \end_layout
2851 \begin_layout Itemize
2852 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
2853  hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
2854  comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
2855  less, equals, greater, question, at, leftbracket, backslash, rightbracket,
2856  caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
2857  o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
2858  world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
2859  world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
2860  world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
2861  world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
2862  world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
2863  world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
2864  world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
2865  world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
2866  world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
2867  world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
2868  world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
2869  world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
2870  kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
2871  kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
2872  pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
2873  f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
2874  lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
2875  break, menu, power, euro, undo
2876 \end_layout
2878 \begin_layout Itemize
2879 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
2880  hardware-dependent scan code of <n> (useful to bind those keys that don't
2881  have symbolic names).
2882 \end_layout
2884 \begin_layout Standard
2885 In addition, following pseudo-keys are known (note: these do not work in
2886  conjunction with modifers):
2887 \end_layout
2889 \begin_layout Itemize
2890 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
2891 \end_layout
2893 \begin_layout Itemize
2894 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
2895 \end_layout
2897 \begin_layout Itemize
2898 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
2899 \end_layout
2901 \begin_layout Itemize
2902 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
2903 \end_layout
2905 \begin_layout Itemize
2906 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
2907 \end_layout
2909 \begin_layout Itemize
2910 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
2911  position (axis modes axis and axis_inverse).
2912 \end_layout
2914 \begin_layout Itemize
2915 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
2916  position (axis modes axis and axis_inverse).
2917 \end_layout
2919 \begin_layout Itemize
2920 joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis> pressure (axis
2921  modes pressure_*).
2922 \end_layout
2924 \begin_layout Subsubsection
2925 Special buttons:
2926 \end_layout
2928 \begin_layout Itemize
2929 Escape: Enter/Exit Command mode, cancel modal dialogs.
2930 \end_layout
2932 \begin_layout Itemize
2933 Return (also KPEnter): Execute command, ok modal dialog.
2934 \end_layout
2936 \begin_layout Itemize
2937 Pgup/Up (also KP8/9 if no num lock; command mode): Previous command in command
2938  history
2939 \end_layout
2941 \begin_layout Itemize
2942 Pgdn/Down(also KP2/3 if no num lock; command mode): Next command in command
2943  history
2944 \end_layout
2946 \begin_layout Itemize
2947 Home (also KP7 if no num lock; command mode): Beginning of command.
2948 \end_layout
2950 \begin_layout Itemize
2951 End (also KP1 if no num lock; command mode): End of command.
2952 \end_layout
2954 \begin_layout Itemize
2955 Left (also KP4 if no num lock; command mode): Move cursor left.
2956 \end_layout
2958 \begin_layout Itemize
2959 Right (also KP6 if no num lock; command mode): Move cursor right.
2960 \end_layout
2962 \begin_layout Itemize
2963 Delete (also KP.
2964  if no num lock; command mode): Delete character to right of cursor.
2965 \end_layout
2967 \begin_layout Itemize
2968 Insert (also KP0 if no num lock; command mode): Toggle between insert /
2969  overwrite modes.
2970 \end_layout
2972 \begin_layout Itemize
2973 Backspace (command mode): Delete character to left of cursor.
2974 \end_layout
2976 \begin_layout Itemize
2977 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
2978 \end_layout
2980 \begin_layout Subsubsection
2981 Watchdog timer:
2982 \end_layout
2984 \begin_layout Standard
2985 If emulator does not reach internal polling loop in 15 seconds after leaving
2986  it or 15 seconds after starting, the emulator instantly bombs out.
2987 \end_layout
2989 \begin_layout Section
2990 Movie file format
2991 \end_layout
2993 \begin_layout Standard
2994 Movie file is .zip archive in itself, normal ZIP archive tools work on it
2995  (note: If you recompress it, do not use compression methods other than
2996  store and deflate and especially do not use encryption of any kind).
2997 \end_layout
2999 \begin_layout Subsection
3000 Detecting clean start/SRAM/Savestate
3001 \end_layout
3003 \begin_layout Itemize
3004 If file has member 
3005 \begin_inset Quotes eld
3006 \end_inset
3008 savestate
3009 \begin_inset Quotes erd
3010 \end_inset
3012  it is savestate, otherwise:
3013 \end_layout
3015 \begin_layout Itemize
3016 If file has members with names starting 
3017 \begin_inset Quotes eld
3018 \end_inset
3020 moviesram.
3021 \begin_inset Quotes erd
3022 \end_inset
3024  it is movie starting from SRAM, otherwise:
3025 \end_layout
3027 \begin_layout Itemize
3028 It is movie starting from clear state.
3029 \end_layout
3031 \begin_layout Subsection
3032 Member: gametype
3033 \end_layout
3035 \begin_layout Standard
3036 Type of game ROM and region (as one line).
3037  Valid values are:
3038 \end_layout
3040 \begin_layout Standard
3041 \begin_inset Tabular
3042 <lyxtabular version="3" rows="8" columns="3">
3043 <features tabularvalignment="middle">
3044 <column alignment="center" valignment="top" width="0">
3045 <column alignment="center" valignment="top" width="0">
3046 <column alignment="center" valignment="top" width="0">
3047 <row>
3048 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3049 \begin_inset Text
3051 \begin_layout Plain Layout
3052 Value
3053 \end_layout
3055 \end_inset
3056 </cell>
3057 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3058 \begin_inset Text
3060 \begin_layout Plain Layout
3061 System
3062 \end_layout
3064 \end_inset
3065 </cell>
3066 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3067 \begin_inset Text
3069 \begin_layout Plain Layout
3070 Region
3071 \end_layout
3073 \end_inset
3074 </cell>
3075 </row>
3076 <row>
3077 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3078 \begin_inset Text
3080 \begin_layout Plain Layout
3081 snes_pal
3082 \end_layout
3084 \end_inset
3085 </cell>
3086 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3087 \begin_inset Text
3089 \begin_layout Plain Layout
3090 Super NES
3091 \end_layout
3093 \end_inset
3094 </cell>
3095 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3096 \begin_inset Text
3098 \begin_layout Plain Layout
3100 \end_layout
3102 \end_inset
3103 </cell>
3104 </row>
3105 <row>
3106 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3107 \begin_inset Text
3109 \begin_layout Plain Layout
3110 sgb_pal
3111 \end_layout
3113 \end_inset
3114 </cell>
3115 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3116 \begin_inset Text
3118 \begin_layout Plain Layout
3119 Super Game Boy
3120 \end_layout
3122 \end_inset
3123 </cell>
3124 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3125 \begin_inset Text
3127 \begin_layout Plain Layout
3129 \end_layout
3131 \end_inset
3132 </cell>
3133 </row>
3134 <row>
3135 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3136 \begin_inset Text
3138 \begin_layout Plain Layout
3139 snes_ntsc
3140 \end_layout
3142 \end_inset
3143 </cell>
3144 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3145 \begin_inset Text
3147 \begin_layout Plain Layout
3148 Super NES
3149 \end_layout
3151 \end_inset
3152 </cell>
3153 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3154 \begin_inset Text
3156 \begin_layout Plain Layout
3157 NTSC
3158 \end_layout
3160 \end_inset
3161 </cell>
3162 </row>
3163 <row>
3164 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3165 \begin_inset Text
3167 \begin_layout Plain Layout
3168 sgb_ntsc
3169 \end_layout
3171 \end_inset
3172 </cell>
3173 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3174 \begin_inset Text
3176 \begin_layout Plain Layout
3177 Super Game Boy
3178 \end_layout
3180 \end_inset
3181 </cell>
3182 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3183 \begin_inset Text
3185 \begin_layout Plain Layout
3186 NTSC
3187 \end_layout
3189 \end_inset
3190 </cell>
3191 </row>
3192 <row>
3193 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3194 \begin_inset Text
3196 \begin_layout Plain Layout
3198 \end_layout
3200 \end_inset
3201 </cell>
3202 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3203 \begin_inset Text
3205 \begin_layout Plain Layout
3206 BS-X (non-slotted)
3207 \end_layout
3209 \end_inset
3210 </cell>
3211 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3212 \begin_inset Text
3214 \begin_layout Plain Layout
3215 NTSC
3216 \end_layout
3218 \end_inset
3219 </cell>
3220 </row>
3221 <row>
3222 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3223 \begin_inset Text
3225 \begin_layout Plain Layout
3226 bsxslotted
3227 \end_layout
3229 \end_inset
3230 </cell>
3231 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3232 \begin_inset Text
3234 \begin_layout Plain Layout
3235 BS-X (slotted)
3236 \end_layout
3238 \end_inset
3239 </cell>
3240 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3241 \begin_inset Text
3243 \begin_layout Plain Layout
3244 NTSC
3245 \end_layout
3247 \end_inset
3248 </cell>
3249 </row>
3250 <row>
3251 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3252 \begin_inset Text
3254 \begin_layout Plain Layout
3255 sufamiturbo
3256 \end_layout
3258 \end_inset
3259 </cell>
3260 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3261 \begin_inset Text
3263 \begin_layout Plain Layout
3264 Sufami Turbo
3265 \end_layout
3267 \end_inset
3268 </cell>
3269 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3270 \begin_inset Text
3272 \begin_layout Plain Layout
3273 NTSC
3274 \end_layout
3276 \end_inset
3277 </cell>
3278 </row>
3279 </lyxtabular>
3281 \end_inset
3284 \end_layout
3286 \begin_layout Standard
3287 Frame rates are:
3288 \end_layout
3290 \begin_layout Standard
3291 \begin_inset Tabular
3292 <lyxtabular version="3" rows="3" columns="2">
3293 <features tabularvalignment="middle">
3294 <column alignment="center" valignment="top" width="0">
3295 <column alignment="center" valignment="top" width="0">
3296 <row>
3297 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3298 \begin_inset Text
3300 \begin_layout Plain Layout
3301 Region
3302 \end_layout
3304 \end_inset
3305 </cell>
3306 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3307 \begin_inset Text
3309 \begin_layout Plain Layout
3310 Framerate (fps)
3311 \end_layout
3313 \end_inset
3314 </cell>
3315 </row>
3316 <row>
3317 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3318 \begin_inset Text
3320 \begin_layout Plain Layout
3322 \end_layout
3324 \end_inset
3325 </cell>
3326 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3327 \begin_inset Text
3329 \begin_layout Plain Layout
3330 322445/6448
3331 \end_layout
3333 \end_inset
3334 </cell>
3335 </row>
3336 <row>
3337 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3338 \begin_inset Text
3340 \begin_layout Plain Layout
3341 NTSC
3342 \end_layout
3344 \end_inset
3345 </cell>
3346 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3347 \begin_inset Text
3349 \begin_layout Plain Layout
3350 10738636/178683
3351 \end_layout
3353 \end_inset
3354 </cell>
3355 </row>
3356 </lyxtabular>
3358 \end_inset
3361 \end_layout
3363 \begin_layout Subsection
3364 Member: port1
3365 \end_layout
3367 \begin_layout Standard
3368 Contains type of port #1 (as one line).
3369  Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
3370  If not present, defaults to 'gamepad'.
3371 \end_layout
3373 \begin_layout Subsection
3374 Member: port2
3375 \end_layout
3377 \begin_layout Standard
3378 Contains type of port #2 (as one line).
3379  Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
3380  'justifier' and 'justifiers'.
3381  If not present, defaults to 'none'.
3382 \end_layout
3384 \begin_layout Subsection
3385 Member: gamename
3386 \end_layout
3388 \begin_layout Standard
3389 Contains name of the game (as one line).
3390 \end_layout
3392 \begin_layout Subsection
3393 Member: authors
3394 \end_layout
3396 \begin_layout Standard
3397 Contains authors, one per line.
3398  Part before '|' is the full name, part after is the nickname.
3399 \end_layout
3401 \begin_layout Subsection
3402 Member: systemid
3403 \end_layout
3405 \begin_layout Standard
3406 Always 
3407 \begin_inset Quotes eld
3408 \end_inset
3410 lsnes-rr1
3411 \begin_inset Quotes erd
3412 \end_inset
3414  (one line).
3415  Used to reject other saves.
3416 \end_layout
3418 \begin_layout Subsection
3419 Member: controlsversion
3420 \end_layout
3422 \begin_layout Standard
3423 Always 
3424 \begin_inset Quotes eld
3425 \end_inset
3428 \begin_inset Quotes erd
3429 \end_inset
3431  (one line).
3432  Used to identify what controls are there.
3433 \end_layout
3435 \begin_layout Subsection
3436 Member: 
3437 \begin_inset Quotes eld
3438 \end_inset
3440 coreversion
3441 \begin_inset Quotes erd
3442 \end_inset
3445 \end_layout
3447 \begin_layout Standard
3448 Contains bsnes core version number (as one line).
3449 \end_layout
3451 \begin_layout Subsection
3452 Member: projectid
3453 \end_layout
3455 \begin_layout Standard
3456 Contains project ID (as one line).
3457  Used to identify if two movies are part of the same project.
3458 \end_layout
3460 \begin_layout Subsection
3461 Member: {rom,slota,slotb}{,xml}.sha256
3462 \end_layout
3464 \begin_layout Standard
3465 Contains SHA-256 of said ROM or ROM mapping file (as one line).
3466  Absent if corresponding file is absent.
3467 \end_layout
3469 \begin_layout Subsection
3470 Member: moviesram.<name>
3471 \end_layout
3473 \begin_layout Standard
3474 Raw binary startup SRAM of kind <name>.
3475  Only present in savestates and movies starting from SRAM.
3476 \end_layout
3478 \begin_layout Subsection
3479 Member: saveframe
3480 \end_layout
3482 \begin_layout Standard
3483 Contains frame number (as one line) of frame movie was saved on.
3484  Only present in savestates.
3485 \end_layout
3487 \begin_layout Subsection
3488 Member: lagcounter
3489 \end_layout
3491 \begin_layout Standard
3492 Current value of lag counter (as one line).
3493  Only present in savestates.
3494 \end_layout
3496 \begin_layout Subsection
3497 Member: pollcounters
3498 \end_layout
3500 \begin_layout Standard
3501 Contains poll counters (currently 100 of them), one per line.
3502  Each line is raw poll count if DRDY is set for it.
3503  Otherwise it is negative poll count minus one.
3504  Only present in savestates.
3505 \end_layout
3507 \begin_layout Subsection
3508 Member: hostmemory
3509 \end_layout
3511 \begin_layout Standard
3512 Raw binary dump of host memory.
3513  Only present in savestates.
3514 \end_layout
3516 \begin_layout Subsection
3517 Member: savestate
3518 \end_layout
3520 \begin_layout Standard
3521 The raw binary savestate itself.
3522  Savestate detection uses this file, only present in savestates.
3523 \end_layout
3525 \begin_layout Subsection
3526 Member: screenshot
3527 \end_layout
3529 \begin_layout Standard
3530 Screenshot of current frame.
3531  Only present in savestates.
3532  First 2 bytes are big-endian width of image, rest are 24-bit RGB image
3533  data.
3534  Height of image is inferred from the width and size of data.
3535 \end_layout
3537 \begin_layout Subsection
3538 Member: sram.<name>
3539 \end_layout
3541 \begin_layout Standard
3542 Raw binary SRAM of kind <name> at time of savestate.
3543  Only present in savestates.
3544 \end_layout
3546 \begin_layout Subsection
3547 Member: input
3548 \end_layout
3550 \begin_layout Standard
3551 The actual input track, one line per subframe (blank lines are skipped).
3552 \end_layout
3554 \begin_layout Itemize
3555 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
3556  part of same frame as previous, otherwise it starts a new frame.
3557 \end_layout
3559 \begin_layout Itemize
3560 First subframe must start a new frame.
3561 \end_layout
3563 \begin_layout Standard
3564 Length of movie in frames is number of lines in input file that start a
3565  new frame.
3566 \end_layout
3568 \begin_layout Subsection
3569 Member: rerecords
3570 \end_layout
3572 \begin_layout Standard
3573 Contains textual base-10 rerecord count (as one line; emulator just writes
3574  this, it doesn't read it) + 1.
3575 \end_layout
3577 \begin_layout Subsection
3578 Member: rrdata
3579 \end_layout
3581 \begin_layout Standard
3582 This member stores set of load IDs.
3583  There is one load ID per rerecord (plus one corresponding to start of project).
3584 \end_layout
3586 \begin_layout Itemize
3587 This member constists of concatenation of records
3588 \end_layout
3590 \begin_layout Itemize
3591 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
3592  IDs.
3593 \end_layout
3595 \begin_layout Itemize
3596 IDs are interpretted as 256-bit big-endian integers with warparound.
3597 \end_layout
3599 \begin_layout Itemize
3600 Initial predicted ID is all zeroes.
3601 \end_layout
3603 \begin_layout Standard
3604 Format of each record is:
3605 \end_layout
3607 \begin_layout Itemize
3608 1 byte: Opcode byte.
3609  Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
3610  Bit 7 is unused.
3611 \end_layout
3613 \begin_layout Itemize
3614 32-prefixlen bytes of ID.
3615 \end_layout
3617 \begin_layout Itemize
3618 countlen bytes of big-endian count (count).
3619 \end_layout
3621 \begin_layout Standard
3622 Records are processed as follows:
3623 \end_layout
3625 \begin_layout Itemize
3626 To form the first ID encoded by record, take the first prefixlen bytes predicted
3627  ID and append the read ID value to it.
3628  The result is the first ID encoded.
3629 \end_layout
3631 \begin_layout Itemize
3632 If countlen is 0, record encodes 1 ID.
3633 \end_layout
3635 \begin_layout Itemize
3636 If countlen is 1, record encodes 2+count IDs.
3637 \end_layout
3639 \begin_layout Itemize
3640 If countlen is 2, record encodes 258+count IDs.
3641 \end_layout
3643 \begin_layout Itemize
3644 If countlen is 3, record encodes 65794+count IDs.
3645 \end_layout
3647 \begin_layout Itemize
3648 The new predicted ID is the next ID after last one encoded by the record.
3649 \end_layout
3651 \begin_layout Standard
3652 The number of rerecords + 1 is equal to the sum of number of IDs encoded
3653  by all records.
3654 \end_layout
3656 \begin_layout Subsection
3657 Member: starttime.second
3658 \end_layout
3660 \begin_layout Standard
3661 Movie starting time, second part.
3662  Epoch is Unix epoch.
3663  Default is 1,000,000,000.
3664 \end_layout
3666 \begin_layout Subsection
3667 Member: starttime.subsecond
3668 \end_layout
3670 \begin_layout Standard
3671 Movie starting time, subsecond part.
3672  Unit is CPU clocks.
3673  Default is 0.
3674 \end_layout
3676 \begin_layout Subsection
3677 Member: savetime.second
3678 \end_layout
3680 \begin_layout Standard
3681 Movie saving time, second part.
3682  Default is starttime.second.
3683  Only present in savestates.
3684 \end_layout
3686 \begin_layout Subsection
3687 Member: savetime.subsecond
3688 \end_layout
3690 \begin_layout Standard
3691 Movie saving time, subsecond part.
3692  Default is starttime.subsecond.
3693  Only present in savestates.
3694 \end_layout
3696 \begin_layout Section
3697 Compiling:
3698 \end_layout
3700 \begin_layout Subsection
3701 Building BSNES
3702 \end_layout
3704 \begin_layout Standard
3705 make ui=ui-libsnes profile=accuracy
3706 \end_layout
3708 \begin_layout Standard
3709 For Bsnes v084 You need to apply the six patches in bsnes-patches/.
3710  These fix the following:
3711 \end_layout
3713 \begin_layout Enumerate
3714 Make libsnes actually compile (it won't compile without!)
3715 \end_layout
3717 \begin_layout Enumerate
3718 Bump the version number to be correct (nice to have)
3719 \end_layout
3721 \begin_layout Enumerate
3722 Make RTC emulation time cleanly overridable (needed by games using RTC)
3723 \end_layout
3725 \begin_layout Enumerate
3726 Save/Load controller state on savestate/loadstate (many games screw up without)
3727 \end_layout
3729 \begin_layout Enumerate
3730 Fix unserialization of 64-bit integers (needed)
3731 \end_layout
3733 \begin_layout Enumerate
3734 Allow frontend to control random number seed (just nice to have)
3735 \end_layout
3737 \begin_layout Subsection
3738 Prerequisite libraries:
3739 \end_layout
3741 \begin_layout Itemize
3742 zlib
3743 \end_layout
3745 \begin_layout Itemize
3746 SDL (SDL platform)
3747 \end_layout
3749 \begin_layout Itemize
3750 SDLmain (Windows/Mac OS X only; Note you may have to extract the object
3751  out of archive)
3752 \end_layout
3754 \begin_layout Itemize
3755 boost_iostreams
3756 \end_layout
3758 \begin_layout Itemize
3759 boost_filesystem
3760 \end_layout
3762 \begin_layout Itemize
3763 boost conversion (header only)
3764 \end_layout
3766 \begin_layout Subsection
3767 Compile options to make:
3768 \end_layout
3770 \begin_layout Subsubsection
3771 BSNES_PATH=<path>
3772 \end_layout
3774 \begin_layout Standard
3775 Set path to BSNES bsnes directory to <path>.
3776 \end_layout
3778 \begin_layout Subsubsection
3779 THREADS=NO
3780 \end_layout
3782 \begin_layout Standard
3783 Don't use threads on Linux.
3784 \end_layout
3786 \begin_layout Subsubsection
3787 THREADS=YES
3788 \end_layout
3790 \begin_layout Standard
3791 Try to use threads even on non-Linux systems.
3792 \end_layout
3794 \begin_layout Subsubsection
3795 CROSS_PREFIX=<prefix>
3796 \end_layout
3798 \begin_layout Standard
3799 Prepend this to all commands refering to cross-compiling environment with
3800  this.
3801 \end_layout
3803 \begin_layout Subsubsection
3804 CC=<compiler>
3805 \end_layout
3807 \begin_layout Standard
3808 Target C++ compiler to use.
3809  Defaults to g++
3810 \end_layout
3812 \begin_layout Standard
3813 Note: If crosscompiling, this has to be crosscompiler, and CROSS_PREFIX
3814  is prepended.
3815 \end_layout
3817 \begin_layout Subsubsection
3818 BSNES_IS_COMPAT=1
3819 \end_layout
3821 \begin_layout Standard
3822 Assume BSNES uses compatiblity core instead of accuracy core.
3823 \end_layout
3825 \begin_layout Subsubsection
3826 LUA=<package>
3827 \end_layout
3829 \begin_layout Standard
3830 Compile lua support, using package <package>
3831 \end_layout
3833 \begin_layout Subsubsection
3834 GRAPHICS=<plat>
3835 \end_layout
3837 \begin_layout Standard
3838 Set graphics platform.
3839  Currently available choices are 
3840 \begin_inset Quotes eld
3841 \end_inset
3844 \begin_inset Quotes erd
3845 \end_inset
3847  and 
3848 \begin_inset Quotes eld
3849 \end_inset
3851 WXWIDGETS
3852 \begin_inset Quotes erd
3853 \end_inset
3856 \end_layout
3858 \begin_layout Subsubsection
3859 SOUND=<plat>
3860 \end_layout
3862 \begin_layout Standard
3863 Set sound platform.
3864  Currently available choices are 
3865 \begin_inset Quotes eld
3866 \end_inset
3869 \begin_inset Quotes erd
3870 \end_inset
3872  (requires SDL graphics), 
3873 \begin_inset Quotes eld
3874 \end_inset
3876 PORTAUDIO
3877 \begin_inset Quotes erd
3878 \end_inset
3880  and 
3881 \begin_inset Quotes eld
3882 \end_inset
3884 DUMMY
3885 \begin_inset Quotes erd
3886 \end_inset
3889 \end_layout
3891 \begin_layout Subsubsection
3892 JOYSTICK=<plat>
3893 \end_layout
3895 \begin_layout Standard
3896 Set joystick platform.
3897  Currently available choices are 
3898 \begin_inset Quotes eld
3899 \end_inset
3902 \begin_inset Quotes erd
3903 \end_inset
3905  (requires SDL graphics), 
3906 \begin_inset Quotes eld
3907 \end_inset
3909 EVDEV
3910 \begin_inset Quotes erd
3911 \end_inset
3913  and 
3914 \begin_inset Quotes eld
3915 \end_inset
3917 DUMMY
3918 \begin_inset Quotes erd
3919 \end_inset
3922 \end_layout
3924 \begin_layout Section
3925 Quick'n'dirty encode guide
3926 \end_layout
3928 \begin_layout Enumerate
3929 Start the emulator and load the movie file.
3930 \end_layout
3932 \begin_layout Enumerate
3933 Set large AVI option 'set-setting avi-large on'
3934 \end_layout
3936 \begin_layout Enumerate
3937 Enable dumping 'dump-avi 12 tmpdump' (note: Normally 10 and above are 
3938 \begin_inset Quotes eld
3939 \end_inset
3941 use only if you know what you are doing.
3942 \begin_inset Quotes erd
3943 \end_inset
3946  In this case, these can be safely used because of how x264 internally works).
3947 \end_layout
3949 \begin_layout Enumerate
3950 Unpause and let it run until you want to end dumping.
3951 \end_layout
3953 \begin_layout Enumerate
3954 Close the emulator (closing the window is the easiest way).
3955  Or use 'end-avi'.
3956 \end_layout
3958 \begin_layout Enumerate
3959 For each tmpdump*.avi file created, on command prompt, do 'x264 --crf 10
3960  -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
3961 \end_layout
3963 \begin_layout Enumerate
3964 Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
3965 \end_layout
3967 \begin_layout Enumerate
3968 Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv + tmpdump_0000001.mkv
3969  + tmpdump_0000002.mkv' (list every tmpdump_<numbers>.mkv, with + in between).
3970 \end_layout
3972 \begin_layout Enumerate
3973 Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'.
3974  Now final.mkv contains quick'n'dirty encode.
3975 \end_layout
3977 \begin_layout Section
3978 Axis configurations for some gamepad types:
3979 \end_layout
3981 \begin_layout Subsection
3982 XBox360 controller:
3983 \end_layout
3985 \begin_layout Standard
3986 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be set to pressure-+.
3987 \end_layout
3989 \begin_layout LyX-Code
3990 set-axis joystick0axis2 pressure-+
3991 \end_layout
3993 \begin_layout LyX-Code
3994 set-axis joystick0axis5 pressure-+
3995 \end_layout
3997 \begin_layout Subsection
3998 PS3 
3999 \begin_inset Quotes eld
4000 \end_inset
4002 sixaxis
4003 \begin_inset Quotes erd
4004 \end_inset
4006  controller:
4007 \end_layout
4009 \begin_layout Standard
4010 Axes 8-19 should be disabled.
4011 \end_layout
4013 \begin_layout LyX-Code
4014 set-axis joystick0axis8 disabled
4015 \end_layout
4017 \begin_layout LyX-Code
4018 set-axis joystick0axis9 disabled
4019 \end_layout
4021 \begin_layout LyX-Code
4022 set-axis joystick0axis10 disabled
4023 \end_layout
4025 \begin_layout LyX-Code
4026 set-axis joystick0axis11 disabled
4027 \end_layout
4029 \begin_layout LyX-Code
4030 set-axis joystick0axis12 disabled
4031 \end_layout
4033 \begin_layout LyX-Code
4034 set-axis joystick0axis13 disabled
4035 \end_layout
4037 \begin_layout LyX-Code
4038 set-axis joystick0axis14 disabled
4039 \end_layout
4041 \begin_layout LyX-Code
4042 set-axis joystick0axis15 disabled
4043 \end_layout
4045 \begin_layout LyX-Code
4046 set-axis joystick0axis16 disabled
4047 \end_layout
4049 \begin_layout LyX-Code
4050 set-axis joystick0axis17 disabled
4051 \end_layout
4053 \begin_layout LyX-Code
4054 set-axis joystick0axis18 disabled
4055 \end_layout
4057 \begin_layout LyX-Code
4058 set-axis joystick0axis19 disabled
4059 \end_layout
4061 \begin_layout Section
4062 Errata:
4063 \end_layout
4065 \begin_layout Subsection
4066 Problems from BSNES core:
4067 \end_layout
4069 \begin_layout Itemize
4070 The whole pending save stuff.
4071 \end_layout
4073 \begin_layout Itemize
4074 Lack of layer hiding.
4075 \end_layout
4077 \begin_layout Itemize
4078 It is slow.
4079 \end_layout
4081 \begin_layout Itemize
4082 Firmwares can't be loaded from ZIP archives.
4083 \end_layout
4085 \begin_layout Subsection
4086 Other problems:
4087 \end_layout
4089 \begin_layout Itemize
4090 Modifiers don't work with pseudo-keys (SDL, EVDEV).
4091 \end_layout
4093 \begin_layout Itemize
4094 Audio for last dumped frame is not itself dumped.
4095 \end_layout
4097 \begin_layout Itemize
4098 Audio in UI is pretty bad in quality.
4099 \end_layout
4101 \begin_layout Itemize
4102 UI itself is 30fps max (SDL).
4103 \end_layout
4105 \begin_layout Itemize
4106 AVI compression levels 10-18 are not compatible with AVISynth AVISource.
4107 \end_layout
4109 \begin_layout Itemize
4110 No menus, command based interface (SDL).
4111 \end_layout
4113 \begin_layout Itemize
4114 Long commands don't scroll.
4115 \end_layout
4117 \begin_layout Itemize
4118 The SDL screen drawing is slow.
4119 \end_layout
4121 \begin_layout Itemize
4122 Wxwidgets UI slows down with time.
4123 \end_layout
4125 \begin_layout Itemize
4126 Movies use way too much (like at least 10x what would be needed) memory.
4127 \end_layout
4129 \begin_layout Section
4130 Changelog:
4131 \end_layout
4133 \begin_layout Subsection
4134 rr0-beta1
4135 \end_layout
4137 \begin_layout Itemize
4138 Fix -Wall warnings
4139 \end_layout
4141 \begin_layout Itemize
4142 Fix dumper video corruption with levels 10-18.
4143 \end_layout
4145 \begin_layout Subsection
4146 rr0-beta2
4147 \end_layout
4149 \begin_layout Itemize
4150 Autofire
4151 \end_layout
4153 \begin_layout Itemize
4154 Lots of code cleanups
4155 \end_layout
4157 \begin_layout Itemize
4158 Lua interface to settings
4159 \end_layout
4161 \begin_layout Itemize
4162 Allow specifying AVI borders without Lua
4163 \end_layout
4165 \begin_layout Itemize
4166 Fix scaling if vscale > 1 and originx > 0 (left border exists)
4167 \end_layout
4169 \begin_layout Itemize
4170 on_snoop lua callback
4171 \end_layout
4173 \begin_layout Itemize
4174 Faster movie loading and saving.
4175 \end_layout
4177 \begin_layout Subsection
4178 rr0-beta3
4179 \end_layout
4181 \begin_layout Itemize
4182 Joystick support
4183 \end_layout
4185 \begin_layout Subsection
4186 rr0-beta4
4187 \end_layout
4189 \begin_layout Itemize
4190 Fix multi-buttons
4191 \end_layout
4193 \begin_layout Itemize
4194 Save jukebox functionality.
4195 \end_layout
4197 \begin_layout Subsection
4198 rr0-beta5
4199 \end_layout
4201 \begin_layout Itemize
4202 Try to fix some nasty failing movie load edge cases
4203 \end_layout
4205 \begin_layout Itemize
4206 Allow specifying scripts to run on command line.
4207 \end_layout
4209 \begin_layout Subsection
4210 rr0-beta6
4211 \end_layout
4213 \begin_layout Itemize
4214 Major source code reorganization.
4215 \end_layout
4217 \begin_layout Itemize
4218 Backup savestates before overwriting.
4219 \end_layout
4221 \begin_layout Itemize
4222 Don't crash if loading initial state fails.
4223 \end_layout
4225 \begin_layout Subsection
4226 rr0-beta7
4227 \end_layout
4229 \begin_layout Itemize
4230 Fix firmware lookup
4231 \end_layout
4233 \begin_layout Itemize
4234 Fix author name parsing
4235 \end_layout
4237 \begin_layout Itemize
4238 Fix rerecord counting
4239 \end_layout
4241 \begin_layout Itemize
4242 (SDL) Print messages to console if SDL is uninitialized
4243 \end_layout
4245 \begin_layout Itemize
4246 Add movieinfo program
4247 \end_layout
4249 \begin_layout Itemize
4250 Fix loading movies starting from SRAM.
4251 \end_layout
4253 \begin_layout Subsection
4254 rr0-beta8
4255 \end_layout
4257 \begin_layout Itemize
4258 Add support for unattended dumping
4259 \end_layout
4261 \begin_layout Itemize
4262 Fix compiling for Win32
4263 \end_layout
4265 \begin_layout Itemize
4266 Don't lock up if sound can't be initialized
4267 \end_layout
4269 \begin_layout Itemize
4270 Strip trailing CR from commands
4271 \end_layout
4273 \begin_layout Itemize
4274 Don't try to do dubious things in global ctors (fix crash on startup)
4275 \end_layout
4277 \begin_layout Subsection
4278 rr0-beta9
4279 \end_layout
4281 \begin_layout Itemize
4282 Small documentation tweaking
4283 \end_layout
4285 \begin_layout Itemize
4286 Fix make clean
4287 \end_layout
4289 \begin_layout Itemize
4290 Fix major bug in modifier matching
4291 \end_layout
4293 \begin_layout Subsection
4294 rr0-beta10
4295 \end_layout
4297 \begin_layout Itemize
4298 Lots of documentation fixes
4299 \end_layout
4301 \begin_layout Itemize
4302 Use dedicated callbacks for event backcomm., not commands.
4303 \end_layout
4305 \begin_layout Itemize
4306 Ensure that the watchdog is not hit when executing delayed reset.
4307 \end_layout
4309 \begin_layout Itemize
4310 Remove errant tab from joystick message.
4311 \end_layout
4313 \begin_layout Subsection
4314 rr0-beta11
4315 \end_layout
4317 \begin_layout Itemize
4318 Make autofire operate in absolute time, not linear time
4319 \end_layout
4321 \begin_layout Itemize
4322 Reinitialize controls when resuming from loadstate
4323 \end_layout
4325 \begin_layout Itemize
4326 Some more code cleanups
4327 \end_layout
4329 \begin_layout Itemize
4330 If Lua allocator fails, call OOM_panic()
4331 \end_layout
4333 \begin_layout Itemize
4334 Byte/word/dword/qword sized host memory write/read functions.
4335 \end_layout
4337 \begin_layout Itemize
4338 Dump at correct framerate if dumping interlaced NTSC (height=448).
4339 \end_layout
4341 \begin_layout Subsection
4342 rr0-beta12
4343 \end_layout
4345 \begin_layout Itemize
4346 Actually include the complete source code
4347 \end_layout
4349 \begin_layout Itemize
4350 Keep track of RTC
4351 \end_layout
4353 \begin_layout Subsection
4354 rr0-beta13
4355 \end_layout
4357 \begin_layout Itemize
4358 Document {save,start}time.{,sub}second.
4359 \end_layout
4361 \begin_layout Itemize
4362 Intercept time() from bsnes core.
4363 \end_layout
4365 \begin_layout Subsection
4366 rr0-beta14
4367 \end_layout
4369 \begin_layout Itemize
4370 Allow disabling time() interception (allow build on Mac OS X)
4371 \end_layout
4373 \begin_layout Itemize
4374 Use SDLMain on Mac OS X (make SDL not crash)
4375 \end_layout
4377 \begin_layout Itemize
4378 Disable delayed resets (just plain too buggy for now).
4379 \end_layout
4381 \begin_layout Itemize
4382 Code cleanups
4383 \end_layout
4385 \begin_layout Itemize
4386 Use 16-bit for graphics/video instead of 32-bit.
4387 \end_layout
4389 \begin_layout Itemize
4390 gui.rectangle/gui.pixel
4391 \end_layout
4393 \begin_layout Itemize
4394 gui.crosshair
4395 \end_layout
4397 \begin_layout Itemize
4398 New CSCD writer implementation.
4399 \end_layout
4401 \begin_layout Subsection
4402 rr0-beta15
4403 \end_layout
4405 \begin_layout Itemize
4406 Fix interaction of * and +.
4407 \end_layout
4409 \begin_layout Itemize
4410 Manual improvements
4411 \end_layout
4413 \begin_layout Itemize
4414 Use gettimeofday()/usleep(), these seem portable enough.
4415 \end_layout
4417 \begin_layout Itemize
4418 Move joystick axis manipulation to keymapper code.
4419 \end_layout
4421 \begin_layout Itemize
4422 Changes to how read-only works.
4423 \end_layout
4425 \begin_layout Itemize
4426 Refactor controller input code.
4427 \end_layout
4429 \begin_layout Subsection
4430 rr0-beta16
4431 \end_layout
4433 \begin_layout Itemize
4434 Fix mouseclick scale compensation.
4435 \end_layout
4437 \begin_layout Itemize
4438 Draw area boundaries correctly in SDL code.
4439 \end_layout
4441 \begin_layout Itemize
4442 gui.screenshot.
4443 \end_layout
4445 \begin_layout Itemize
4446 Fix CSCD output (buffer overrun and race condition).
4447 \end_layout
4449 \begin_layout Subsection
4450 rr0-beta17
4451 \end_layout
4453 \begin_layout Itemize
4454 JMD dumping support.
4455 \end_layout
4457 \begin_layout Itemize
4458 Allow unattended dumping to JMD.
4459 \end_layout
4461 \begin_layout Itemize
4462 Move to BSNES v083.
4463 \end_layout
4465 \begin_layout Itemize
4466 Switch back to 32-bit colors.
4467 \end_layout
4469 \begin_layout Itemize
4470 Add Lua function gui.color.
4471 \end_layout
4473 \begin_layout Itemize
4474 Use some new C++11 features in GCC 4.6.
4475 \end_layout
4477 \begin_layout Itemize
4478 Be prepared for core frequency changes.
4479 \end_layout
4481 \begin_layout Itemize
4482 Pass colors in one chunk from Lua.
4483 \end_layout
4485 \begin_layout Subsection
4486 rr0-beta18
4487 \end_layout
4489 \begin_layout Itemize
4490 New lua functions gui.line(), gui.status() and gui.circle(), memory.vma_count(),
4491  memory.read_vma() and memory.find_vma().
4492 \end_layout
4494 \begin_layout Itemize
4495 Numerious documentation fixups
4496 \end_layout
4498 \begin_layout Itemize
4499 RTC time format changed
4500 \end_layout
4502 \begin_layout Itemize
4503 Reformat flags display
4504 \end_layout
4506 \begin_layout Itemize
4507 Allow lua package name to be overridden
4508 \end_layout
4510 \begin_layout Itemize
4511 SDUMP (high-quality dumping).
4512 \end_layout
4514 \begin_layout Itemize
4515 Split platform support to plugins.
4516 \end_layout
4518 \begin_layout Itemize
4519 Make all sound plugins support basic sound commands
4520 \end_layout
4522 \begin_layout Itemize
4523 Support portaudio for sound.
4524 \end_layout
4526 \begin_layout Itemize
4527 Allow disable Lua/SDL searching.
4528 \end_layout
4530 \begin_layout Itemize
4531 Upconvert colors when copying lcscreen to screen.
4532 \end_layout
4534 \begin_layout Itemize
4535 Reorganize source tree.
4536 \end_layout
4538 \begin_layout Itemize
4539 Evdev joystick support.
4540 \end_layout
4542 \begin_layout Itemize
4543 Refactor more code into generic window code.
4544 \end_layout
4546 \begin_layout Subsection
4547 rr0-beta19
4548 \end_layout
4550 \begin_layout Itemize
4551 Refactor message handling.
4552 \end_layout
4554 \begin_layout Itemize
4555 Rework makefile
4556 \end_layout
4558 \begin_layout Itemize
4559 Documentation fixes
4560 \end_layout
4562 \begin_layout Itemize
4563 Finish pending saves before load/quit.
4564 \end_layout
4566 \begin_layout Itemize
4567 Wxwidgets graphics plugin.
4568 \end_layout
4570 \begin_layout Subsection
4571 rr0-beta20
4572 \end_layout
4574 \begin_layout Itemize
4575 Get rid of win32-crap.[ch]pp.
4576 \end_layout
4578 \begin_layout Itemize
4579 Move files around a lot.
4580 \end_layout
4582 \begin_layout Itemize
4583 Get rid of need for host C++ compiler.
4584 \end_layout
4586 \begin_layout Itemize
4587 Bsnes v084 core.
4588 \end_layout
4590 \begin_layout Itemize
4591 Refactor inter-component communication.
4592 \end_layout
4594 \begin_layout Itemize
4595 Fix zero luma.
4596 \end_layout
4598 \begin_layout Itemize
4599 Fix crash on multiline aliases.
4600 \end_layout
4602 \begin_layout Itemize
4603 Load/Save settings in wxwidgets gui.
4604 \end_layout
4606 \begin_layout Subsection
4607 rr0-beta21
4608 \end_layout
4610 \begin_layout Itemize
4611 Patch problems in bsnes core
4612 \end_layout
4614 \begin_layout Itemize
4615 SNES is little-endian, not big-endian!
4616 \end_layout
4618 \begin_layout Itemize
4619 Fix memory corruption in lcscreen::load()
4620 \end_layout
4622 \begin_layout Subsection
4623 rr0-beta22
4624 \end_layout
4626 \begin_layout Itemize
4627 Fix interpretting repeat counts in rrdata loading.
4628 \end_layout
4630 \begin_layout Itemize
4631 New lua callback: on_frame()
4632 \end_layout
4634 \begin_layout Itemize
4635 Remove calls to runtosave() that aren't supposed to be there
4636 \end_layout
4638 \begin_layout Itemize
4639 Lua function: movie.read_rtc()
4640 \end_layout
4642 \begin_layout Itemize
4643 Ignore src/fonts/font.cpp
4644 \end_layout
4646 \begin_layout Itemize
4647 Fix more bsnes core problems
4648 \end_layout
4650 \begin_layout Itemize
4651 Control bsnes random seeding
4652 \end_layout
4654 \begin_layout Itemize
4655 Pause-on-end
4656 \end_layout
4658 \begin_layout Itemize
4659 Some bsnes core debugging features (state dump and state hash)
4660 \end_layout
4662 \begin_layout Itemize
4663 Fix titlebar version number (no, the last version wasn't 'lsnes-0-beta21',
4664  it was 'lsnes rr0-beta21').
4665 \end_layout
4667 \begin_layout Subsection
4668 rr0-beta23
4669 \end_layout
4671 \begin_layout Itemize
4672 Fix memory corruption due to macro/field mixup
4673 \end_layout
4675 \begin_layout Itemize
4676 search-memory update
4677 \end_layout
4679 \begin_layout Itemize
4680 Allow direct-mapped framebuffer
4681 \end_layout
4683 \begin_layout Itemize
4684 SDL: Use SDL_ANYFORMAT if possible
4685 \end_layout
4687 \begin_layout Itemize
4688 SDMP2SOX: 2s delay modes.
4689 \end_layout
4691 \begin_layout Itemize
4692 Wxwidgets: Cleanups
4693 \end_layout
4695 \begin_layout Itemize
4696 Use sed -E, not sed -r.
4697  Fixes building on Mac OS X.
4698 \end_layout
4700 \begin_layout Itemize
4701 Wxwidgets: Save jukebox on exit
4702 \end_layout
4704 \begin_layout Itemize
4705 Fix RTC if using load-movie on savestate.
4706 \end_layout
4708 \begin_layout Itemize
4709 Fix crash related to full console mode.
4710 \end_layout
4712 \begin_layout Subsection
4713 rr0-beta24
4714 \end_layout
4716 \begin_layout Itemize
4717 Wxwidgets: Allow bringing application to foreground on Mac OS X.
4718 \end_layout
4720 \begin_layout Itemize
4721 Wxwidgets: Allow compiling on Mac OS X.
4722 \end_layout
4724 \begin_layout Itemize
4725 Use movie compare instead of movie hashing (faster save/load).
4726 \end_layout
4728 \begin_layout Itemize
4729 Lua: _SYSTEM table.
4730 \end_layout
4732 \begin_layout Subsection
4733 rr0-beta25
4734 \end_layout
4736 \begin_layout Itemize
4737 sdmp2sox: Pad soundtrack if using -l or -L.
4738 \end_layout
4740 \begin_layout Itemize
4741 sdmp2sox: Fix NTSC overscan.
4742 \end_layout
4744 \begin_layout Itemize
4745 sdmp2sox: Add AR correction mode.
4746 \end_layout
4748 \begin_layout Itemize
4749 call lua_close() when exiting.
4750 \end_layout
4752 \begin_layout Itemize
4753 Fix zip_writer bug causing warnings from info-zip and error from advzip.
4754 \end_layout
4756 \begin_layout Subsection
4757 rr0-beta26
4758 \end_layout
4760 \begin_layout Itemize
4761 Fix IPS patching code (use bsnes core IPS patcher).
4762 \end_layout
4764 \begin_layout Itemize
4765 Implement BPS patching (using bsnes core IPS patcher).
4766 \end_layout
4768 \begin_layout Itemize
4769 Add feature to load headered ROMs.
4770 \end_layout
4772 \begin_layout Subsection
4773 rr0-beta27
4774 \end_layout
4776 \begin_layout Itemize
4777 Show command names when showing keybindings
4778 \end_layout
4780 \begin_layout Subsection
4782 \end_layout
4784 \begin_layout Itemize
4785 Fix pause-on-end to be actually controllable
4786 \end_layout
4788 \begin_layout Itemize
4789 SDL: Poll all events in queue, not just first one (fixes slowness in command
4790  typing)
4791 \end_layout
4793 \begin_layout Itemize
4794 Wxwidgets: Fix ROM loading.
4795 \end_layout
4797 \end_body
4798 \end_document