1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
6 \use_default_options true
7 \maintain_unincluded_children false
9 \language_package default
14 \font_typewriter default
15 \font_default_family default
16 \use_non_tex_fonts false
23 \default_output_format default
25 \bibtex_command default
26 \index_command default
27 \paperfontsize default
38 \paperorientation portrait
47 \paragraph_separation indent
48 \paragraph_indentation default
49 \quotes_language english
52 \paperpagestyle default
53 \tracking_changes false
66 \begin_layout Standard
67 lsnes is SNES rerecording emulator based on bsnes core.
74 \begin_layout Enumerate
79 \begin_layout Enumerate
80 v084-v087 (v084 or v085 for delayreset support)
83 \begin_layout Enumerate
84 accuracy or compatiblity core with debugger enabled.
87 \begin_layout Enumerate
88 Patched version (using included 7 patches)
92 \begin_layout Enumerate
96 \begin_layout Enumerate
100 \begin_layout Enumerate
104 \begin_layout Enumerate
105 boost_thread (if native std::thread is not available)
108 \begin_layout Enumerate
112 \begin_layout Enumerate
113 sdlmain (SDL only, part of SDL)
116 \begin_layout Enumerate
117 boost_conversion (this is header-only library)
120 \begin_layout Enumerate
121 libswscale (wxwidgets graphics only)
124 \begin_layout Enumerate
125 Portaudio (portaudio sound only)
128 \begin_layout Enumerate
129 Lua (if Lua support is needed).
133 \begin_layout Itemize
134 Version 5.1.X or 5.2X.
138 \begin_layout Enumerate
139 G++ 4.6 (bsnes doesn't seem to like 4.7).
142 \begin_layout Section
146 \begin_layout Itemize
147 Copy bsnes sources (the bsnes subdirectory) to subdirectory 'bsnes'.
150 \begin_layout Itemize
151 Patch the bsnes sources with included patches (directory 'bsnes-patches/<version
155 \begin_layout Itemize
156 Edit options.build (or copy of that file)
159 \begin_layout Itemize
160 Run make (passing 'OPTIONS=<filename>' if using something else than options.build
164 \begin_layout Section
168 \begin_layout Subsection
172 \begin_layout Standard
173 <kind> in the following can be one of:
176 \begin_layout Itemize
177 rom: Cartridge ROM (BIOS for special carts).
181 \begin_layout Itemize
182 bsx: BS-X (non-slotted) Game flash ROM.
185 \begin_layout Itemize
186 bsxslotted: BS-X (slotted) Game flash ROM.
189 \begin_layout Itemize
193 \begin_layout Itemize
194 slot-a: Sufami Turbo Slot A ROM
197 \begin_layout Itemize
198 slot-b: Sufami Turbo Slot B ROM
201 \begin_layout Subsubsection
202 --<kind>=<file> (lsnes/SDL, lsnes-avidump)
205 \begin_layout Standard
206 Load <file> as specified ROM (SFC/BS/DMG/ST file format).
209 \begin_layout Subsubsection
210 --<kind>-xml=<file> (lsnes/SDL, lsnes-avidump)
213 \begin_layout Standard
214 Override hardware detection for ROM, reading the values from <file> (BSNES
218 \begin_layout Subsubsection
219 --ips-<kind>=<file> (lsnes/SDL, lsnes-avidump)
222 \begin_layout Standard
223 Apply BPS/IPS patch <file> to ROM <kind>.
224 If specified multiple times, the patches are applied in order.
227 \begin_layout Subsubsection
228 --ips-<kind>-xml=<file> (lsnes/SDL, lsnes-avidump)
231 \begin_layout Standard
232 Apply BPS/IPS patch <file> to XML of ROM <kind>.
233 If specified multiple times, the patches are applied in order.
236 \begin_layout Subsubsection
237 --ips-offset=<offset> (lsnes/SDL, lsnes-avidump)
240 \begin_layout Standard
241 Set offset to apply to IPS patches.
243 Handy for applying headered IPS patches (use offset of -512 for this).
244 The offset must be 0 for BPS patches.
247 \begin_layout Subsubsection
251 \begin_layout Standard
252 Force ROM to be considered PAL-only.
255 \begin_layout Itemize
256 Only works on SNES and SGB ROMs (not BS-X or Sufami Turbo).
259 \begin_layout Itemize
260 Attempting to load NTSC movie file will error out.
263 \begin_layout Subsubsection
267 \begin_layout Standard
268 Force ROM to be considered NTSC-only.
271 \begin_layout Itemize
272 Attempting to load PAL movie file will error out.
275 \begin_layout Subsection
279 \begin_layout Subsubsection
283 \begin_layout Standard
287 \begin_layout Subsubsection
288 <filename> (lsnes/SDL, lsnes-avidump, movieinfo)
291 \begin_layout Standard
292 Load <filename> as movie or savestate file.
293 All other session options are ignored.
296 \begin_layout Subsubsection
297 --port1=<device> (lsnes/SDL)
300 \begin_layout Standard
305 \begin_layout Itemize
306 none: No device connected
309 \begin_layout Itemize
310 gamepad: One gamepad (the default)
313 \begin_layout Itemize
314 multitap: Four gamepads (warning: makes most games refuse to start)
317 \begin_layout Itemize
321 \begin_layout Subsubsection
322 --port2=<type> (lsnes/SDL)
325 \begin_layout Standard
330 \begin_layout Itemize
331 none: No device connected (the default)
334 \begin_layout Itemize
338 \begin_layout Itemize
339 multitap: Four gamepads.
342 \begin_layout Itemize
346 \begin_layout Itemize
347 superscope: Super Scope
350 \begin_layout Itemize
351 justifier: One justifier
354 \begin_layout Itemize
355 justifiers: Two justifiers
358 \begin_layout Subsubsection
359 --gamename=<name> (lsnes/SDL)
362 \begin_layout Standard
363 Set the name of game to <name>.
367 \begin_layout Subsubsection
368 --author=<name> (lsnes/SDL)
371 \begin_layout Standard
372 Add author with full name of <name> (no nickname).
375 \begin_layout Subsubsection
376 --author=|<name> (lsnes/SDL)
379 \begin_layout Standard
380 Add author with nickname of <name> (no full name).
383 \begin_layout Subsubsection
384 --author=<fullname>|<nickname> (lsnes/SDL)
387 \begin_layout Standard
388 Add author with full name of <fullname> and nickname of <nickname>.
391 \begin_layout Subsubsection
392 --rtc-second=<value> (lsnes/SDL)
395 \begin_layout Standard
396 Set RTC second (0 is 1st January 1970 00:00:00Z).
397 Default is 1,000,000,000.
400 \begin_layout Subsubsection
401 --rtc-subsecond=<value> (lsnes/SDL)
404 \begin_layout Standard
411 \begin_layout Subsection
416 \begin_layout Subsubsection
417 --run=<file> (lsnes/SDL)
420 \begin_layout Standard
421 After running main RC file, run this file.
422 If multiple are specified, these execute in order specified.
425 \begin_layout Subsection
426 dump options (lsnes-dumpavi only)
429 \begin_layout Subsubsection
433 \begin_layout Standard
434 Set the dumper to use (required).
435 Use 'list' for listing of known dumpers.
438 \begin_layout Subsubsection
442 \begin_layout Standard
443 Set the mode to use (required for dumpers with multiple modes, forbidden
445 Use 'list' for known modes.
448 \begin_layout Subsubsection
452 \begin_layout Standard
455 \begin_inset Quotes eld
459 \begin_inset Quotes erd
465 \begin_layout Subsubsection
466 --option=<name>=<value>
469 \begin_layout Standard
470 Set option <name> to value <value>.
473 \begin_layout Subsubsection
477 \begin_layout Standard
478 Set number of frames to dump.
482 \begin_layout Subsubsection
486 \begin_layout Standard
487 Run specified lua script (lsnes-dumpavi does not have initialization files).
490 \begin_layout Subsubsection
491 --load-library=<library>
494 \begin_layout Standard
495 Load the specified shared object / dynamic library / dynamic link library.
498 \begin_layout Section
499 Startup file lsnes.rc
502 \begin_layout Standard
503 Upon startup, lsnes (lsnes/SDL only) executes file lsnes.rc as commands.
504 This file is located in:
507 \begin_layout Itemize
512 lsnes.rc (if %APPDATA% exists)
515 \begin_layout Itemize
516 Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME exists)
519 \begin_layout Itemize
520 Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
523 \begin_layout Itemize
524 All: ./lsnes.rc (fallback default).
527 \begin_layout Standard
528 If leading directories do not exist, attempt to create them is made.
531 \begin_layout Section
535 \begin_layout Itemize
536 Commands beginning with '*' invoke the corresponding command without alias
540 \begin_layout Itemize
541 If command starts with '+' (after possible '*'), the command is executed
542 as-is when button is pressed, and when button is released, it is executed
543 with '+' replaced by '-'.
546 \begin_layout Itemize
547 Commands without '+' execute only on negative edge (release).
550 \begin_layout Subsection
554 \begin_layout Standard
555 Settings control various aspects of emulator behaviour.
558 \begin_layout Subsubsection
559 set-setting <setting> <value>
562 \begin_layout Standard
563 Sets setting <setting> to value <value> (may be empty).
566 \begin_layout Subsubsection
567 unset-setting <setting>
570 \begin_layout Standard
571 Try to unset setting <setting> (not all settings can be unset).
574 \begin_layout Subsubsection
575 get-setting <setting>
578 \begin_layout Standard
579 Read value of setting <setting>
582 \begin_layout Subsubsection
586 \begin_layout Standard
587 Print names and values of all settings.
590 \begin_layout Subsection
594 \begin_layout Standard
595 Keybindings bind commands or aliases to keys (or pseudo-keys).
599 \begin_layout Standard
603 \begin_layout Itemize
604 Do not bind edge active (+/-) commands to keys with modifiers, that won't
608 \begin_layout Itemize
609 Names of keys and modifiers are platform-dependent.
612 \begin_layout Itemize
613 Be careful before binding pseudo-keys (such as joystick axes, buttons or
614 hats) with modifiers.
615 That may or may not work right.
618 \begin_layout Subsubsection
619 bind-key [<mod>/<modmask>] <key> <command>
622 \begin_layout Standard
623 Bind <command> to key <key> (activating if modifiers in <modmask> (comma-seperat
624 ed list) are set as <mod> (comma-seperated list).
627 \begin_layout Standard
628 The names of keys and modifiers are platform-dependent.
631 \begin_layout Subsubsection
632 unbind-key [<mod>/<modmask>] <key>
635 \begin_layout Standard
636 Unbind command from <key> (with specified <mod> and <modmask>).
639 \begin_layout Subsubsection
640 set-axis <axis> [disabled | axis | axis-inverse | pressure0- | pressure0+
641 | pressure-0 | pressure-+ | pressure+0 | pressure+-] [minus=<val>] [zero=<val>]
642 [plus=<val>] [tolerance=<val>]
645 \begin_layout Standard
646 Set axis parameters for axis <axis>.
649 \begin_layout Itemize
650 disabled: Disable axis
653 \begin_layout Itemize
657 \begin_layout Itemize
658 axis-inverse: Inverse axis
661 \begin_layout Itemize
662 pressure0-: Pressure sensitive.
663 Released at 0, pressed at -.
666 \begin_layout Itemize
667 pressure0+: Pressure sensitive.
668 Released at 0, pressed at +.
671 \begin_layout Itemize
672 pressure-0: Pressure sensitive.
673 Released at -, pressed at 0.
676 \begin_layout Itemize
677 pressure-+: Pressure sensitive.
678 Released at -, pressed at +.
681 \begin_layout Itemize
682 pressure+0: Pressure sensitive.
683 Released at +, pressed at 0.
686 \begin_layout Itemize
687 pressure+-: Pressure sensitive.
688 Released at +, pressed at -.
691 \begin_layout Itemize
692 minus=<val>: Calibration at extreme minus position (-32768-32767)
695 \begin_layout Itemize
696 zero=<val>: Calibration at neutral position (-32768-32767)
699 \begin_layout Itemize
700 plus=<val>: Calibration at extreme plus position (-32768-32767)
703 \begin_layout Itemize
704 tolerance=<value>: Center band tolerance (0<x<1).
705 The smaller the value, the more sensitive the control is.
708 \begin_layout Subsubsection
712 \begin_layout Standard
713 Print all key bindings in effect.
716 \begin_layout Subsection
720 \begin_layout Standard
721 Aliases bind command to sequence of commands.
722 After alias has been defined, it replaces the command it shadows.
725 \begin_layout Standard
729 \begin_layout Itemize
730 You can't alias command to itself.
733 \begin_layout Itemize
734 Aliases starting with +/- are edge active just like ordinary commands starting
738 \begin_layout Itemize
739 One command can be aliased to multiple commands.
742 \begin_layout Subsubsection
743 alias-command <command> <expansion>
746 \begin_layout Standard
747 Append <expansion> to alias <command>.
748 If alias does not already exist, it is created.
751 \begin_layout Subsubsection
752 unalias-command <command>
755 \begin_layout Standard
756 Clear alias expansion for <command>.
759 \begin_layout Subsubsection
763 \begin_layout Standard
764 Print all aliases and their expansions in effect.
767 \begin_layout Subsection
771 \begin_layout Standard
772 Run <script> as if commands were entered on the command line.
775 \begin_layout Subsection
779 \begin_layout Standard
780 Following commands control video dumping:
783 \begin_layout Subsubsection
784 start-dump <dumper> [<mode>] <prefix/filename>
787 \begin_layout Standard
788 Start dumping using dumper <dumper>.
789 If mode is present or not and if prefix or filename is present depends
790 on the dumper and dumper mode.
793 \begin_layout Standard
794 The following dumpers are available:
797 \begin_layout Itemize
798 INTERNAL-AVI-CSCD: Internal CSCD in .avi dumper.
802 \begin_layout Itemize
803 Mode: uncompressed/pcm: Uncompressed video, PCM audio.
807 \begin_layout Itemize
808 Mode: cscd/pcm: CSCD video, PCM audio.
813 \begin_layout Itemize
814 INTERNAL-JMD: Internal .jmd dumper.
818 \begin_layout Itemize
822 \begin_layout Itemize
827 \begin_layout Itemize
828 INTERNAL-RAW: Internal RAW dumper.
832 \begin_layout Itemize
836 \begin_layout Itemize
840 \begin_layout Itemize
841 Sound is big-endian signed 16-bit, usually at 32040.5Hz.
844 \begin_layout Itemize
845 Video is always upscaled to double resolution (512x448 / 512 x 478).
848 \begin_layout Itemize
849 Video framerate is usually 322445/6448 fps for PAL and 10738636/178683 fps
854 \begin_layout Itemize
855 INTERNAL-SDMP: Internal SDMP dumper.
859 \begin_layout Itemize
860 Mode 'ms': Multi-segment.
864 \begin_layout Itemize
865 Mode 'ss': Single-segment.
870 \begin_layout Subsubsection
874 \begin_layout Standard
875 End dumping using <dumper>
878 \begin_layout Subsubsection
879 show-dumpers [<dumper>]
882 \begin_layout Standard
883 Show the list of dumpers or list of modes for <dumper>
886 \begin_layout Subsection
890 \begin_layout Standard
891 <address> may be decimal or hexadecimal (prefixed with '0x').
892 <value> can be hexadecimal (prefixed with '0x'), unsigned or signed (prefixed
896 \begin_layout Standard
897 The available element <sizes> are:
900 \begin_layout Itemize
904 \begin_layout Itemize
908 \begin_layout Itemize
912 \begin_layout Itemize
916 \begin_layout Standard
917 When reading RAM and ROM, multi-byte reads/writes are big-endian.
918 When dealing with DSP memory, multi-byte reads/writes are native-endian
919 (do not use operand sizes exceeding DSP bitness, except dword is OK for
923 \begin_layout Subsubsection
924 read-<size> <address>
927 \begin_layout Standard
928 Read the value of byte in <address>.
931 \begin_layout Subsubsection
932 read-s<size> <address>
935 \begin_layout Standard
936 Read the value of signed byte in <address>.
939 \begin_layout Subsubsection
940 write-<size> <address> <value>
943 \begin_layout Standard
944 Write <value> to byte in address <address>.
947 \begin_layout Subsubsection
951 \begin_layout Standard
952 Reset the memory search
955 \begin_layout Subsubsection
959 \begin_layout Standard
960 Print number of candidates remaining
963 \begin_layout Subsubsection
967 \begin_layout Standard
968 Print all candidates remaining
971 \begin_layout Subsubsection
972 search-memory <usflag><sizeflag><op>
975 \begin_layout Standard
976 Searches memory for addresses satisfying criteria.
979 \begin_layout Standard
983 \begin_layout Itemize
987 \begin_layout Itemize
991 \begin_layout Standard
995 \begin_layout Itemize
999 \begin_layout Itemize
1003 \begin_layout Itemize
1007 \begin_layout Itemize
1011 \begin_layout Standard
1015 \begin_layout Itemize
1016 lt: < previous value.
1019 \begin_layout Itemize
1020 le: <= previous value.
1023 \begin_layout Itemize
1024 eq: = previous value.
1027 \begin_layout Itemize
1028 ne: != previous value.
1031 \begin_layout Itemize
1032 ge: >= previous value.
1035 \begin_layout Itemize
1036 gt: > previous value.
1039 \begin_layout Subsubsection
1040 search-memory <sizeflag> <value>
1043 \begin_layout Standard
1044 Searches for addresses that currently have value <value>.
1045 <sizeflag> is as in previous command.
1048 \begin_layout Subsection
1052 \begin_layout Standard
1053 These commands are not available in lsnesrc, but are available after ROM
1057 \begin_layout Subsubsection
1061 \begin_layout Standard
1062 Quits the emulator (asking for confirmation).
1063 If /y is given, no confirmation is asked.
1066 \begin_layout Subsubsection
1070 \begin_layout Standard
1071 Toggle paused/unpaused
1074 \begin_layout Subsubsection
1078 \begin_layout Standard
1080 If the button is still held after configurable timeout expires, game unpauses
1081 for the duration frame advance is held.
1084 \begin_layout Subsubsection
1088 \begin_layout Standard
1090 If the button is still held after configurable timeout expires, game unpauses
1091 for the duration frame advance is held.
1094 \begin_layout Subsubsection
1098 \begin_layout Standard
1099 Skip to first poll in frame after current.
1102 \begin_layout Subsubsection
1106 \begin_layout Standard
1107 Reset the SNES after this frame.
1110 \begin_layout Subsubsection
1114 \begin_layout Standard
1115 Load savestate <filename> in current mode.
1118 \begin_layout Subsubsection
1119 load-state <filename>
1122 \begin_layout Standard
1123 Load savestate <filename> in readwrite mode.
1126 \begin_layout Subsubsection
1127 load-readonly <filename>
1130 \begin_layout Standard
1131 Load savestate <filename> in readonly mode.
1134 \begin_layout Subsubsection
1135 load-preserve <filename>
1138 \begin_layout Standard
1139 Load savestate <filename> in readonly mode, preserving current events.
1142 \begin_layout Subsubsection
1143 load-movie <filename>
1146 \begin_layout Standard
1147 Load savestate <filename>, ignoring save part in readonly mode.
1150 \begin_layout Subsubsection
1151 save-state <filename>
1154 \begin_layout Standard
1155 Save system state to <filename> as soon as possible.
1158 \begin_layout Subsubsection
1159 save-movie <filename>
1162 \begin_layout Standard
1163 Save movie to <filename>.
1166 \begin_layout Subsubsection
1170 \begin_layout Standard
1171 Set read-write mode.
1174 \begin_layout Subsubsection
1178 \begin_layout Standard
1182 \begin_layout Subsubsection
1186 \begin_layout Standard
1187 Toggle between read-only and read-write modes.
1190 \begin_layout Subsubsection
1194 \begin_layout Standard
1195 Set name of the game to <name>
1198 \begin_layout Subsubsection
1202 \begin_layout Standard
1203 Print the name of the game.
1206 \begin_layout Subsubsection
1210 \begin_layout Standard
1211 Adds new author <author>.
1212 If <author> does not contain '|' it is full name.
1213 If it contains '|', '|' splits the full name and nickname.
1216 \begin_layout Subsubsection
1217 edit-author <num> <author>
1220 \begin_layout Standard
1221 Edit the author in slot <num> (0-based) to be <author> (see add-author for
1225 \begin_layout Subsubsection
1229 \begin_layout Standard
1230 Remove author in slot <num>
1233 \begin_layout Subsubsection
1237 \begin_layout Standard
1241 \begin_layout Subsubsection
1242 test-1, test-2, test-3
1245 \begin_layout Standard
1246 Internal test commands.
1250 \begin_layout Subsubsection
1251 take-screenshot <filename>
1254 \begin_layout Standard
1255 Save screenshot to <filename>.
1258 \begin_layout Subsubsection
1259 +controller<num><button>
1262 \begin_layout Standard
1263 Press button <button> on controller <num> (1-8).
1264 The following button names are known:
1267 \begin_layout Itemize
1271 \begin_layout Itemize
1275 \begin_layout Itemize
1279 \begin_layout Itemize
1283 \begin_layout Itemize
1287 \begin_layout Itemize
1291 \begin_layout Itemize
1295 \begin_layout Itemize
1299 \begin_layout Itemize
1303 \begin_layout Itemize
1307 \begin_layout Itemize
1311 \begin_layout Itemize
1315 \begin_layout Itemize
1319 \begin_layout Itemize
1323 \begin_layout Itemize
1327 \begin_layout Itemize
1331 \begin_layout Subsubsection
1332 controllerh<num><button>
1335 \begin_layout Standard
1336 Hold/unhold button <button> on controller <num> (1-8).
1337 See +controller for button names.
1340 \begin_layout Subsubsection
1341 controllerf<num><button>
1344 \begin_layout Standard
1345 Hold/unhold button <button> on controller <num> (1-8) for the next frame.
1346 See +controller for button names.
1349 \begin_layout Standard
1350 Cauntion: Does not work properly if outside frame advance.
1353 \begin_layout Subsubsection
1354 autofire (<pattern>|-)...
1357 \begin_layout Standard
1358 Set autofire pattern.
1359 Each parameter is comma-separated list of button names (in form of 1start,
1360 1A, 2B, etc..) to hold on that frame.
1361 After reaching the end of pattern, the pattern restarts from the beginning.
1364 \begin_layout Subsubsection
1368 \begin_layout Standard
1372 \begin_layout Subsection
1376 \begin_layout Subsubsection
1377 cycle-jukebox-backward
1380 \begin_layout Standard
1381 Cycle save jukebox backwards.
1384 \begin_layout Subsubsection
1385 cycle-jukebox-forward
1388 \begin_layout Standard
1389 Cycle save jukebox forwards
1392 \begin_layout Subsubsection
1396 \begin_layout Standard
1397 Do load from jukebox (current mode).
1400 \begin_layout Subsubsection
1404 \begin_layout Standard
1405 Do state save to jukebox.
1408 \begin_layout Subsection
1412 \begin_layout Standard
1413 Only available if lua support is compiled in.
1416 \begin_layout Subsubsection
1417 evaluate-lua <luacode>
1420 \begin_layout Standard
1421 Run Lua code <luacode> using built-in Lua interpretter.
1424 \begin_layout Subsubsection
1428 \begin_layout Standard
1429 Run specified lua file using built-in Lua interpretter.
1432 \begin_layout Subsection
1436 \begin_layout Subsubsection
1437 add-watch <name> <expression>
1440 \begin_layout Standard
1441 Adds new watch (or modifies old one).
1444 \begin_layout Subsubsection
1448 \begin_layout Standard
1452 \begin_layout Subsection
1456 \begin_layout Subsubsection
1457 enable-sound <on/off>
1460 \begin_layout Standard
1461 Enable/Disable sound.
1464 \begin_layout Subsubsection
1465 set-sound-device <device>
1468 \begin_layout Standard
1469 Set sound device to <device>
1472 \begin_layout Subsubsection
1476 \begin_layout Standard
1477 Show status of sound system.
1480 \begin_layout Subsubsection
1484 \begin_layout Standard
1485 Show all available devices.
1488 \begin_layout Subsubsection
1489 set-volume <multiplier>
1492 \begin_layout Standard
1493 Set the volume multiplier to <multiplier>.
1494 1 is normal volume, and higher numbers are louder.
1497 \begin_layout Subsubsection
1498 set-volume <multiplier>%
1501 \begin_layout Standard
1502 Set the volume multiplier to <multiplier> percent.
1503 100 is normal volume, and higher numbers are louder.
1506 \begin_layout Subsubsection
1507 set-volume <multiplier>dB
1510 \begin_layout Standard
1511 Set the volume multiplier to <multiplier> dB.
1512 0 is normal volume, and higher numbers are louder.
1513 The value may be negative.
1516 \begin_layout Subsection
1517 SDL Platform commands
1520 \begin_layout Standard
1521 The following are valid on SDL platform.
1524 \begin_layout Subsubsection
1528 \begin_layout Standard
1529 Asks to press a key and then identifies that (pseudo-)key.
1532 \begin_layout Subsubsection
1536 \begin_layout Standard
1537 Toggle between windowed/fullscreen console.
1540 \begin_layout Subsubsection
1544 \begin_layout Standard
1545 Scroll messages window as far back as it goes.
1548 \begin_layout Subsubsection
1552 \begin_layout Standard
1553 Scroll messages window as far forward as it goes.
1556 \begin_layout Subsubsection
1560 \begin_layout Standard
1561 Scroll messages window back one screenful.
1564 \begin_layout Subsubsection
1568 \begin_layout Standard
1569 Scroll messages window forward one screenful.
1572 \begin_layout Subsubsection
1573 prompt-command <command>
1576 \begin_layout Standard
1577 Enter command prompt, with prompt prepopulated with specified command.
1580 \begin_layout Section
1584 \begin_layout Subsection
1588 \begin_layout Subsubsection
1592 \begin_layout Standard
1593 Set where bsnes looks for firmware files.
1595 \begin_inset Quotes eld
1599 \begin_inset Quotes erd
1605 \begin_layout Subsubsection
1609 \begin_layout Standard
1611 Numeric, range is 0.001 to
1612 \begin_inset Quotes eld
1616 \begin_inset Quotes erd
1620 Default is native framerate.
1623 \begin_layout Subsubsection
1627 \begin_layout Standard
1628 Set save compression level (integer 0-9).
1629 Default is 7 (0 is no compression).
1632 \begin_layout Subsubsection
1636 \begin_layout Standard
1637 Set the frame advance timeout in milliseconds.
1638 Numeric integer, range is 0-999999999.
1642 \begin_layout Subsection
1646 \begin_layout Subsubsection
1650 \begin_layout Standard
1651 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1655 \begin_layout Subsubsection
1659 \begin_layout Standard
1660 AVI dumper: Set the default left border thickness (unless lua overrides)
1666 \begin_layout Subsubsection
1670 \begin_layout Standard
1671 AVI dumper: Set the default right border thickness (unless lua overrides)
1677 \begin_layout Subsubsection
1681 \begin_layout Standard
1682 AVI dumper: Set the default top border thickness (unless lua overrides)
1688 \begin_layout Subsubsection
1692 \begin_layout Standard
1693 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1699 \begin_layout Subsubsection
1703 \begin_layout Standard
1704 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1709 \begin_layout Subsubsection
1713 \begin_layout Standard
1714 AVI dumper: Compression level (0-18).
1717 \begin_layout Itemize
1718 Compression levels 10 and above are not compatible with stock CSCD codec.
1721 \begin_layout Itemize
1722 Recomended level is 7.
1725 \begin_layout Subsubsection
1729 \begin_layout Standard
1730 AVI dumper: Set method of determining the sound rate.
1733 \begin_layout Itemize
1734 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48, 64, 88.2, 96,
1735 128, 176.4 and 192 kHz.
1738 \begin_layout Itemize
1739 1: Round down to nearest integer.
1742 \begin_layout Itemize
1743 2: Round up to nearest ingeter.
1746 \begin_layout Subsection
1750 \begin_layout Subsubsection
1754 \begin_layout Standard
1755 JMD dumper: Compression level (0-9).
1758 \begin_layout Subsection
1759 SDL platform settings
1762 \begin_layout Subsubsection
1763 autorepeat-first-delay
1766 \begin_layout Standard
1767 Sets the delay for first character in typematic autorepeat.
1770 \begin_layout Subsubsection
1771 autorepeat-subsequent-delay
1774 \begin_layout Standard
1775 Sets the delay for subsequent characters in typematic autorepeat.
1778 \begin_layout Section
1782 \begin_layout Subsection
1783 Core (in main table)
1786 \begin_layout Subsubsection
1790 \begin_layout Standard
1791 Print line to message console.
1794 \begin_layout Subsubsection
1795 exec(string command)
1798 \begin_layout Standard
1799 Run command as it was entered on the command line
1802 \begin_layout Subsubsection
1806 \begin_layout Standard
1808 First is time since some epoch in seconds, the second is microseconds mod
1809 10^6 since that epoch.
1812 \begin_layout Subsubsection
1816 \begin_layout Standard
1817 Returns true if emulator has finished booting, false if not (on_startup()
1818 will be issued later).
1821 \begin_layout Subsubsection
1822 set_idle_timeout(number timeout)
1825 \begin_layout Standard
1826 Set number of microseconds to block idle for.
1827 After this timeout has expired, on_idle() will be called once.
1830 \begin_layout Subsubsection
1831 set_timer_timeout(number timeout)
1834 \begin_layout Standard
1835 Set number of microseconds to block timer for.
1836 After this timeout has expired, on_timer() will be called once.
1839 \begin_layout Subsection
1843 \begin_layout Standard
1844 Bitwise logical functions and related.
1847 \begin_layout Subsubsection
1848 bit.none(number...) / bit.bnot(number...)
1851 \begin_layout Standard
1852 48-bit bitwise NOT / NONE function (set bits that are set in none of the
1856 \begin_layout Subsubsection
1857 bit.any(number...) / bit.bor(number...)
1860 \begin_layout Standard
1861 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
1864 \begin_layout Subsubsection
1865 bit.all(number...) / bit.band(number...)
1868 \begin_layout Standard
1869 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
1873 \begin_layout Subsubsection
1874 bit.parity(number...) / bit.bxor(number...)
1877 \begin_layout Standard
1878 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
1882 \begin_layout Subsubsection
1883 bit.lrotate(number base[, number amount[, number bits]])
1886 \begin_layout Standard
1887 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
1890 \begin_layout Subsubsection
1891 bit.rrotate(number base[, number amount[, number bits]])
1894 \begin_layout Standard
1895 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
1899 \begin_layout Subsubsection
1900 bit.lshift(number base[, number amount[, number bits]])
1903 \begin_layout Standard
1904 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
1905 The new bits are filled with zeroes.
1908 \begin_layout Subsubsection
1909 bit.lrshift(number base[, number amount[, number bits]])
1912 \begin_layout Standard
1913 Shift bits-bit (max 48, default 48) number logically right by amount (default
1915 The new bits are filled with zeroes.
1918 \begin_layout Subsubsection
1919 bit.arshift(number base[, number amount[, number bits]])
1922 \begin_layout Standard
1923 Shift bits-bit (max 48, default 48) number arithmetically right by amount
1925 The new bits are shifted in with copy of the high bit.
1928 \begin_layout Subsubsection
1929 bit.extract(number base[, number bit0[, number bit1,...]])
1932 \begin_layout Standard
1933 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
1936 \begin_layout Standard
1940 \begin_layout Itemize
1941 Bit numbers up to 51 should work reliably (then things start falling apart
1942 due to double precision issues).
1945 \begin_layout Itemize
1946 There are two special bit positions, true and false, standing for always
1947 set bit and always clear bit.
1950 \begin_layout Subsubsection
1951 bit.value([number bit1[, number bit2,...]])
1954 \begin_layout Standard
1955 Returns bitwise OR of 1 left shifted by bit1 places, 1 left shifted by bit2
1957 As special value, nil argument is no-op.
1960 \begin_layout Subsection
1964 \begin_layout Standard
1965 Most of these functions can only be called in on_paint and on_video callbacks.
1966 Exceptions are noted.
1969 \begin_layout Standard
1971 Bits 0-7 are the blue component, bits 8-15 are the green component, bits
1972 16-23 are the red component, bits 24-31 are alpha component (0 is fully
1973 opaque, 255 is almost transparent).
1974 -1 is the fully transparent color.
1975 Alpha values greater than 127 do work.
1978 \begin_layout Standard
1979 Origin of coordinates is at top left corner of game display area.
1980 Left and top gaps correspond to negative coordinates.
1983 \begin_layout Subsubsection
1987 \begin_layout Standard
1988 Returns 2-tuple (hresolution, vresolution).
1991 \begin_layout Subsubsection
1992 gui.<class>_gap(number gap)
1995 \begin_layout Standard
1996 Set the <class> (left, right, top, bottom) gap to specified value (max gap
2000 \begin_layout Subsubsection
2001 gui.text(number x, number y, string text[, number fgc[, number bgc]])
2004 \begin_layout Standard
2005 Draw specified text on the GUI (each character cell is 8 or 16 wide and
2010 \begin_layout Itemize
2011 x: X-coordinate to start the drawing from (and x-coordinate at begining
2015 \begin_layout Itemize
2016 y: Y-coordinate to start the drawing from.
2019 \begin_layout Itemize
2020 text: The text to draw.
2023 \begin_layout Itemize
2024 fgc: Text color (default is 0xFFFFFF (white))
2027 \begin_layout Itemize
2028 bgc: Background color (default is -1 (transparent))
2031 \begin_layout Subsubsection
2032 gui.textH(number x, number y, string text[, number fgc[, number bgc]])
2035 \begin_layout Standard
2036 Like gui.text, but draw using double-width.
2039 \begin_layout Subsubsection
2040 gui.textV(number x, number y, string text[, number fgc[, number bgc]])
2043 \begin_layout Standard
2044 Like gui.text, but draw using double-height.
2047 \begin_layout Subsubsection
2048 gui.textHV(number x, number y, string text[, number fgc[, number bgc]])
2051 \begin_layout Standard
2052 Like gui.text, but draw using double-width/double-height.
2055 \begin_layout Subsubsection
2056 gui.rectangle(number x, number y, number width, number height[, number thickness[
2057 , number outline[, number fill]]])
2060 \begin_layout Standard
2061 Draw rectangle on the GUI.
2065 \begin_layout Itemize
2066 x: X-coordinate of left edge.
2069 \begin_layout Itemize
2070 y: Y-coordinate of upper edge.
2073 \begin_layout Itemize
2074 width: Width of rectangle.
2077 \begin_layout Itemize
2078 height: Height of rectangle.
2081 \begin_layout Itemize
2082 thickness: Thickness of outline (default is 1).
2085 \begin_layout Itemize
2086 outline: Color of outline (default is 0xFFFFFF (white))
2089 \begin_layout Itemize
2090 fill: Color of fill (default is -1 (transparent))
2093 \begin_layout Subsubsection
2094 gui.box(number x, number y, number width, number height[, number thickness[,
2095 number outline1[,number outline2[, number fill]]]])
2098 \begin_layout Standard
2099 Draw rectangle with 3D effect on the GUI.
2103 \begin_layout Itemize
2104 x: X-coordinate of left edge.
2107 \begin_layout Itemize
2108 y: Y-coordinate of upper edge.
2111 \begin_layout Itemize
2112 width: Width of rectangle.
2115 \begin_layout Itemize
2116 height: Height of rectangle.
2119 \begin_layout Itemize
2120 thickness: Thickness of outline (default is 1).
2123 \begin_layout Itemize
2124 outline1: First color of outline (default is 0xFFFFFF (white))
2127 \begin_layout Itemize
2128 outline2: First color of outline (default is 0x808080 (dark gray))
2131 \begin_layout Itemize
2132 fill: Color of fill (default is 0xC0C0C0 (light grayy))
2135 \begin_layout Subsubsection
2136 gui.pixel(number x, number y[, number color])
2139 \begin_layout Standard
2140 Draw one pixel on the GUI.
2144 \begin_layout Itemize
2145 x: X-coordinate of the pixel
2148 \begin_layout Itemize
2149 y: Y-coordinate of the pixel
2152 \begin_layout Itemize
2153 color: Color of the pixel (default is 0xFFFFFF (white))
2156 \begin_layout Subsubsection
2157 gui.crosshair(number x, number y[, number length[, number color]])
2160 \begin_layout Standard
2165 \begin_layout Itemize
2166 x: X-coordinate of the crosshair
2169 \begin_layout Itemize
2170 y: Y-coordinate of the crosshair
2173 \begin_layout Itemize
2174 length: Length of the crosshair lines (default 10).
2177 \begin_layout Itemize
2178 color: Color of the crosshair (default is 0xFFFFFF (white))
2181 \begin_layout Subsubsection
2182 gui.line(number x1, number y1, number x2, number y2[, number color])
2185 \begin_layout Standard
2190 \begin_layout Itemize
2191 x1: X-coordinate of one end.
2194 \begin_layout Itemize
2195 y1: Y-coordinate of one end.
2198 \begin_layout Itemize
2199 x2: X-coordinate of the other end.
2202 \begin_layout Itemize
2203 y2: Y-coordinate of the other end.
2206 \begin_layout Itemize
2207 color: Color of the line (default is 0xFFFFFF (white)).
2210 \begin_layout Subsubsection
2211 gui.circle(number x, number y, number r[, number thick[, number border[,
2215 \begin_layout Standard
2220 \begin_layout Itemize
2221 x: X-coordinate of the center
2224 \begin_layout Itemize
2225 y: Y-coordinate of the center
2228 \begin_layout Itemize
2229 r: The radius of the circle
2232 \begin_layout Itemize
2233 thick: Border thickness
2236 \begin_layout Itemize
2237 border: Border color (default is 0xFFFFFF (white))
2240 \begin_layout Itemize
2241 fill: Fill color (default is -1 (transparent)).
2244 \begin_layout Subsubsection
2245 gui.bitmap_draw(number x, number y, bitmap bitmap, palette palette)
2248 \begin_layout Standard
2249 Draw a bitmap on screen with specified palette.
2253 \begin_layout Itemize
2254 x: X-coordinate of left edge.
2257 \begin_layout Itemize
2258 y: Y-coordinate of top edge.
2261 \begin_layout Itemize
2262 bitmap: The bitmap to draw
2265 \begin_layout Itemize
2266 palette: The palette to draw the bitmap using.
2269 \begin_layout Subsubsection
2270 gui.bitmap_draw(number x, number y, dbitmap bitmap)
2273 \begin_layout Standard
2274 Draw a bitmap on screen.
2278 \begin_layout Itemize
2279 x: X-coordinate of left edge.
2282 \begin_layout Itemize
2283 y: Y-coordinate of top edge.
2286 \begin_layout Itemize
2287 bitmap: The bitmap to draw
2290 \begin_layout Subsubsection
2294 \begin_layout Standard
2295 Returns a new palette (initially all transparent).
2296 Can be used anywhere.
2299 \begin_layout Subsubsection
2300 gui.bitmap_new(number w, number h, boolean direct[, bool icolor])
2303 \begin_layout Standard
2304 Returns a new bitmap/dbitmap.
2305 Can be used anywhere.
2309 \begin_layout Itemize
2310 w: The width of new bitmap
2313 \begin_layout Itemize
2314 h: The height of new bitmap
2317 \begin_layout Itemize
2318 direct: If true, the returned bitmap is dbitmap, otherwise bitmap.
2321 \begin_layout Itemize
2322 icolor: Initital fill color (defaults to 0 on BITMAP, -1 on DBITMAP)
2325 \begin_layout Subsubsection
2326 gui.bitmap_load(string file)
2329 \begin_layout Standard
2330 Returns loaded bitmap/dbitmap (if bitmap, the second return value is palette
2332 Can be used anywhere.
2336 \begin_layout Itemize
2337 file: The name of file to load.
2340 \begin_layout Subsubsection
2341 gui.palette_set(palette palette, number index, number color)
2344 \begin_layout Standard
2345 Sets color in palette.
2346 Can be used anywhere.
2350 \begin_layout Itemize
2351 palette: The palette to manipulate
2354 \begin_layout Itemize
2355 index: Index of color (0-65535).
2358 \begin_layout Itemize
2359 color: The color value.
2362 \begin_layout Subsubsection
2363 gui.bitmap_pset(bitmap/dbitmap bitmap, number x, number y, number color)
2366 \begin_layout Standard
2367 Sets specified pixel in bitmap.
2368 Can be used anywhere.
2372 \begin_layout Itemize
2373 bitmap: The bitmap to manipulate
2376 \begin_layout Itemize
2377 x: The x-coordinate of the pixel.
2380 \begin_layout Itemize
2381 y: The y-coordinate of the pixel.
2384 \begin_layout Itemize
2385 color: If bitmap is a bitmap, color index (0-65535).
2386 Otherwise color value.
2389 \begin_layout Subsubsection
2390 gui.bitmap_size(bitmap/dbitmap bitmap)
2393 \begin_layout Standard
2395 Can be used anywhere.
2399 \begin_layout Itemize
2400 bitmap: The bitmap to query.
2403 \begin_layout Standard
2404 The first return is the width, the second is the height.
2407 \begin_layout Subsubsection
2408 gui.bitmap_blit(bitmap/dbitmap dest, number dx, number dy, bitmap/dbitmap
2409 src, number sx, number sy, number w, number h[, number ck])
2412 \begin_layout Standard
2413 Blit a part of bitmap to another.
2414 Can be used anywhere.
2418 \begin_layout Itemize
2419 dest: Destination to blit to.
2422 \begin_layout Itemize
2423 dx: left edge of target
2426 \begin_layout Itemize
2427 dy: Top edge of target
2430 \begin_layout Itemize
2431 src: The source to blit from.
2432 Must be of the same type as destination.
2435 \begin_layout Itemize
2436 sx: left edge of source
2439 \begin_layout Itemize
2440 sy: Top edge of source
2443 \begin_layout Itemize
2447 \begin_layout Itemize
2448 h: Height of region.
2451 \begin_layout Itemize
2453 Pixels of this color are not blitted.
2457 \begin_layout Itemize
2458 If bitmaps are bitmaps, this is color index of colorkey.
2459 Values outside range 0-65535 cause no key to be used as colorkey.
2462 \begin_layout Itemize
2463 If bitmaps are dbitmaps, this color value of colorkey.
2466 \begin_layout Itemize
2467 May be absent or nil for no colorkey blit.
2471 \begin_layout Subsubsection
2475 \begin_layout Standard
2476 Request on_repaint() to happen as soon as possible.
2477 Can be used anywhere.
2480 \begin_layout Subsubsection
2481 gui.subframe_update(boolean on)
2484 \begin_layout Standard
2485 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
2486 or not happen (on=false).
2487 Can be used anywhere.
2490 \begin_layout Subsubsection
2491 gui.screenshot(string filename)
2494 \begin_layout Standard
2495 Write PNG screenshot of the current frame (no drawings) to specified file.
2496 Can be used anywhere.
2499 \begin_layout Subsubsection
2500 gui.color(number r, number g, number b[, number a])
2503 \begin_layout Standard
2504 Returns color (in notation Lua scripts use) corresponding to color (r,g,b),
2505 each component in scale 0-255.
2506 If a is specified, that is alpha (0 is fully transparent, 256(sic) is fully
2508 The default alpha is 256.
2511 \begin_layout Subsubsection
2512 gui.status(string name, string value)
2515 \begin_layout Standard
2517 \begin_inset Quotes eld
2521 \begin_inset Quotes erd
2524 to <value> in status area.
2525 Can be used anywhere.
2528 \begin_layout Subsubsection
2529 gui.rainbow(number step, number steps[, number color])
2532 \begin_layout Standard
2533 Perform hue rotation of color <color> (default bright red), by <step> steps.
2534 The number of steps per full rotation is given by absolute value of <steps>.
2537 \begin_layout Standard
2538 If <steps> is negative, the rotation will be counterclockwise.
2541 \begin_layout Subsection
2545 \begin_layout Standard
2547 Only available in on_input callback.
2550 \begin_layout Subsubsection
2551 input.get(number controller, number index)
2554 \begin_layout Standard
2555 Read the specified index (0-11) from specified controller (0-7).
2559 \begin_layout Itemize
2560 Uses physical controller numbering.
2561 Gamepad in port 2 is controller 4, not 1!
2564 \begin_layout Subsubsection
2565 input.set(number controller, number index, number value)
2568 \begin_layout Standard
2569 Write the specified index (0-11) from specified controller (0-7), storing
2574 \begin_layout Itemize
2575 Uses physical controller numbering.
2576 Gamepad in port 2 is controller 4, not 1!
2579 \begin_layout Subsubsection
2580 input.geta(number controller)
2583 \begin_layout Standard
2584 Get input state for entiere controller.
2585 Returns 13 return values.
2588 \begin_layout Itemize
2589 1st return value: Bitmask: bit i is set if i:th index is nonzero
2592 \begin_layout Itemize
2593 2nd-13th return value: value of i:th index.
2596 \begin_layout Subsubsection
2597 input.seta(number controller, number bitmask, number args...)
2600 \begin_layout Standard
2601 Set state for entiere controller.
2602 args is up to 12 values for indices (overriding values in bitmask if specified).
2605 \begin_layout Subsubsection
2606 input.controllertype(number controller)
2609 \begin_layout Standard
2610 Get the type of controller as string.
2614 \begin_layout Itemize
2618 \begin_layout Itemize
2622 \begin_layout Itemize
2626 \begin_layout Itemize
2630 \begin_layout Subsubsection
2631 input.reset([number cycles])
2634 \begin_layout Standard
2636 If cycles is greater than zero, do delayed reset.
2637 0 (or no value) causes immediate reset.
2640 \begin_layout Itemize
2641 Only available with subframe flag false.
2644 \begin_layout Subsubsection
2648 \begin_layout Standard
2649 Returns table of tables of all available keys and axes.
2650 The first table is indexed by key name (platform-dependent!), and the inner
2651 table has the following fields:
2654 \begin_layout Itemize
2655 last_rawval: Last reported raw value for control.
2658 \begin_layout Itemize
2659 ktype: Type of key (disabled, key, mouse, axis, axis-inverse, hat, pressure-m0,
2660 pressure-mp, pressure-0m, pressure-0p, pressure-pm, pressure-p0).
2663 \begin_layout Itemize
2664 cal_left: Minimum calibration value.
2665 Only meaningful with axis and pressure types.
2668 \begin_layout Itemize
2669 cal_center: Center calibration value.
2670 Only meaningful with axis and pressure types.
2673 \begin_layout Itemize
2674 cal_right: Maximum calibration value.
2675 Only meaningful with axis and pressure types.
2678 \begin_layout Itemize
2679 cal_tolerance: Dead zone tolerance.
2680 Only meaningful with axis and pressure types.
2683 \begin_layout Subsubsection
2684 input.keyhook(key, state)
2687 \begin_layout Standard
2688 Requests that keyhook events to be sent for key (state=true) or not sent
2692 \begin_layout Subsection
2696 \begin_layout Standard
2697 Host memory handling (extra memory saved to savestates).
2698 Host memory starts empty.
2701 \begin_layout Subsubsection
2702 hostmemory.read(number address)
2705 \begin_layout Standard
2706 Reads hostmemory slot address.
2707 Slot numbers out of range return false instead of numeric.
2710 \begin_layout Subsubsection
2711 hostmemory.write(number address, number value)
2714 \begin_layout Standard
2715 Writes hostmemory slot with 0-255.
2716 Slot numbers out of range cause extension of host memory slot space.
2719 \begin_layout Subsubsection
2720 hostmemory.readbyte(number address)
2723 \begin_layout Standard
2724 Read unsigned byte (1 element) from given address.
2725 Slots out of range return false.
2728 \begin_layout Subsubsection
2729 hostmemory.writebyte(number address, number value)
2732 \begin_layout Standard
2733 Write unsigned byte (1 element) to given slot.
2734 Slot numbers out of range cause extension.
2737 \begin_layout Subsubsection
2738 hostmemory.readsbyte(number address)
2741 \begin_layout Standard
2742 Read signed byte (1 element) from given address.
2743 Slots out of range return false.
2746 \begin_layout Subsubsection
2747 hostmemory.writesbyte(number address, number value)
2750 \begin_layout Standard
2751 Write signed byte (1 element) to given slot.
2752 Slot numbers out of range cause extension.
2755 \begin_layout Subsubsection
2756 hostmemory.readword(number address)
2759 \begin_layout Standard
2760 Read unsigned word (2 elements) from given address.
2761 Slots out of range return false.
2764 \begin_layout Subsubsection
2765 hostmemory.writeword(number address, number value)
2768 \begin_layout Standard
2769 Write unsigned word (2 elements) to given slot.
2770 Slot numbers out of range cause extension.
2773 \begin_layout Subsubsection
2774 hostmemory.readsword(number address)
2777 \begin_layout Standard
2778 Read signed word (2 elements) from given address.
2779 Slots out of range return false.
2782 \begin_layout Subsubsection
2783 hostmemory.writesword(number address, number value)
2786 \begin_layout Standard
2787 Write signed word (2 elements) to given slot.
2788 Slot numbers out of range cause extension.
2791 \begin_layout Subsubsection
2792 hostmemory.readdword(number address)
2795 \begin_layout Standard
2796 Read unsigned doubleword (4 elements) from given address.
2797 Slots out of range return false.
2800 \begin_layout Subsubsection
2801 hostmemory.writedword(number address, number value)
2804 \begin_layout Standard
2805 Write unsigned doubleword (4 elements) to given slot.
2806 Slot numbers out of range cause extension.
2809 \begin_layout Subsubsection
2810 hostmemory.readsdword(number address)
2813 \begin_layout Standard
2814 Read signed doubleword (4 elements) from given address.
2815 Slots out of range return false.
2818 \begin_layout Subsubsection
2819 hostmemory.writesdword(number address, number value)
2822 \begin_layout Standard
2823 Write signed doubleword (4 elements) to given slot.
2824 Slot numbers out of range cause extension.
2827 \begin_layout Subsubsection
2828 hostmemory.readqword(number address)
2831 \begin_layout Standard
2832 Read unsigned quadword (8 elements) from given address.
2833 Slots out of range return false.
2836 \begin_layout Subsubsection
2837 hostmemory.writeqword(number address, number value)
2840 \begin_layout Standard
2841 Write unsigned quadword (4 elements) to given slot.
2842 Slot numbers out of range cause extension.
2845 \begin_layout Subsubsection
2846 hostmemory.readsqword(number address)
2849 \begin_layout Standard
2850 Read signed quadword (8 elements) from given address.
2851 Slots out of range return false.
2854 \begin_layout Subsubsection
2855 hostmemory.writesqword(number address, number value)
2858 \begin_layout Standard
2859 Write signed quadword (8 elements) to given slot.
2860 Slot numbers out of range cause extension.
2863 \begin_layout Subsection
2867 \begin_layout Standard
2871 \begin_layout Subsubsection
2872 movie.currentframe()
2875 \begin_layout Standard
2876 Return number of current frame.
2879 \begin_layout Subsubsection
2883 \begin_layout Standard
2884 Return number of frames in movie.
2887 \begin_layout Subsubsection
2891 \begin_layout Standard
2892 Return true if in readonly mode, false if in readwrite.
2895 \begin_layout Subsubsection
2896 movie.set_readwrite()
2899 \begin_layout Standard
2900 Set readwrite mode (does not cause on_readwrite callback).
2903 \begin_layout Subsubsection
2904 movie.frame_subframes(number frame)
2907 \begin_layout Standard
2908 Count number of subframes in specified frame (frame numbers are 1-based)
2912 \begin_layout Subsubsection
2913 movie.read_subframe(number frame, number subframe)
2916 \begin_layout Standard
2917 Read specifed subframe in specified frame and return data as array (100
2918 elements, numbered 0-99 currently).
2921 \begin_layout Subsection
2925 \begin_layout Standard
2926 Routines for settings manipulation
2929 \begin_layout Subsubsection
2930 settings.get(string name)
2933 \begin_layout Standard
2934 Get value of setting.
2935 If setting is blank, returns false.
2936 If setting value can't be obtained, returns (nil, error message).
2939 \begin_layout Subsubsection
2940 settings.set(string name, string value)
2943 \begin_layout Standard
2944 Set value of setting.
2945 If setting can't be set, returns (nil, error message).
2948 \begin_layout Subsubsection
2949 settings.is_set(string name)
2952 \begin_layout Standard
2953 Returns if setting is set.
2954 If setting does not exist, returns (nil, error message).
2957 \begin_layout Subsubsection
2958 settings.blank(string name)
2961 \begin_layout Standard
2962 Blanks a setting and returns true.
2963 If setting can't be blanked, returns (nil, error message).
2966 \begin_layout Subsection
2970 \begin_layout Standard
2971 Contains various functions for managing memory
2974 \begin_layout Subsubsection
2978 \begin_layout Standard
2979 Returns the number of VMAs
2982 \begin_layout Subsubsection
2983 memory.read_vma(number index)
2986 \begin_layout Standard
2987 Reads the specified VMA (indices start from zero).
2988 Trying to read invalid VMA gives nil.
2989 The read VMA is table with the following fields:
2992 \begin_layout Itemize
2993 region_name (string): The readable name of the VMA
2996 \begin_layout Itemize
2997 baseaddr (number): Base address of the VMA
3000 \begin_layout Itemize
3001 lastaddr (number): Last address in the VMA.
3004 \begin_layout Itemize
3005 size (number): The size of VMA in bytes.
3008 \begin_layout Itemize
3009 readonly (boolean): True of the VMA corresponds to ROM.
3012 \begin_layout Itemize
3013 native_endian (boolean): True if the VMA has native endian as opposed to
3017 \begin_layout Subsubsection
3018 memory.find_vma(number address)
3021 \begin_layout Standard
3022 Finds the VMA containing specified address.
3023 Returns table in the same format as read_vma or nil if not found.
3026 \begin_layout Subsubsection
3027 memory.readbyte(number address)
3030 \begin_layout Standard
3031 Reads the specified address as unsigned byte and returns the result.
3034 \begin_layout Subsubsection
3035 memory.readsbyte(number address)
3038 \begin_layout Standard
3039 Reads the specified address as signed byte and returns the result.
3042 \begin_layout Subsubsection
3043 memory.writebyte(number address, number value)
3046 \begin_layout Standard
3047 Writes the specified value (negative values undergo 2's complement) to specified
3048 address (as a byte).
3051 \begin_layout Subsubsection
3052 memory.readword(number address)
3055 \begin_layout Standard
3056 Reads the specified address as unsigned word and returns the result.
3059 \begin_layout Subsubsection
3060 memory.readsword(number address)
3063 \begin_layout Standard
3064 Reads the specified address as signed word and returns the result.
3067 \begin_layout Subsubsection
3068 memory.writeword(number address, number value)
3071 \begin_layout Standard
3072 Writes the specified value (negative values undergo 2's complement) to specified
3073 address (as a word).
3076 \begin_layout Subsubsection
3077 memory.readdword(number address)
3080 \begin_layout Standard
3081 Reads the specified address as unsigned doubleword and returns the result.
3084 \begin_layout Subsubsection
3085 memory.readsdword(number address)
3088 \begin_layout Standard
3089 Reads the specified address as signed doubleword and returns the result.
3092 \begin_layout Subsubsection
3093 memory.writedword(number address, number value)
3096 \begin_layout Standard
3097 Writes the specified value (negative values undergo 2's complement) to specified
3098 address (as a doubleword).
3101 \begin_layout Subsubsection
3102 memory.readqword(number address)
3105 \begin_layout Standard
3106 Reads the specified address as unsigned quadword and returns the result.
3109 \begin_layout Subsubsection
3110 memory.readsqword(number address)
3113 \begin_layout Standard
3114 Reads the specified address as signed quadword and returns the result.
3117 \begin_layout Subsubsection
3118 memory.writeqword(number address, number value)
3121 \begin_layout Standard
3122 Writes the specified value (negative values undergo 2's complement) to specified
3123 address (as a quadword).
3126 \begin_layout Subsubsection
3127 memory.hash_region(number base, number size)
3130 \begin_layout Standard
3131 Hash specified number of bytes starting from specified address and return
3135 \begin_layout Subsection
3139 \begin_layout Standard
3140 Contains copy of global variables from time of Lua initialization.
3144 \begin_layout Subsection
3148 \begin_layout Standard
3149 Various callbacks to Lua that can occur.
3152 \begin_layout Subsubsection
3153 Callback: on_paint(bool not_synth)
3156 \begin_layout Standard
3157 Called when screen is being painted.
3158 Any gui.* calls requiring graphic context draw on the screen.
3161 \begin_layout Standard
3162 not_synth is true if this hook is being called in response to received frame,
3166 \begin_layout Subsubsection
3167 Callback: on_video()
3170 \begin_layout Standard
3171 Called when video dump frame is being painted.
3172 Any gui.* calls requiring graphic context draw on the video.
3175 \begin_layout Subsubsection
3176 Callback: on_frame_emulated()
3179 \begin_layout Standard
3180 Called when emulating frame has completed and on_paint()/on_video() calls
3181 are about to be issued.
3184 \begin_layout Subsubsection
3185 Callback: on_frame()
3188 \begin_layout Standard
3189 Called on each starting whole frame.
3192 \begin_layout Subsubsection
3193 Callback: on_startup()
3196 \begin_layout Standard
3197 Called when the emulator is starting (lsnes.rc and --run files has been run).
3200 \begin_layout Subsubsection
3201 Callback: on_rewind()
3204 \begin_layout Standard
3205 Called when rewind movie to beginning has completed.
3208 \begin_layout Subsubsection
3209 Callback: on_pre_load(string name)
3212 \begin_layout Standard
3213 Called just before savestate/movie load occurs (note: loads are always delayed,
3214 so this occurs even when load was initiated by lua).
3217 \begin_layout Subsubsection
3218 Callback: on_err_load(string name)
3221 \begin_layout Standard
3222 Called if loadstate goes wrong.
3225 \begin_layout Subsubsection
3226 Callback: on_post_load(string name, boolean was_savestate)
3229 \begin_layout Standard
3230 Called on successful loadstate.
3231 was_savestate gives if this was a savestate or a movie.
3234 \begin_layout Subsubsection
3235 Callback: on_pre_save(string name, boolean is_savestate)
3238 \begin_layout Standard
3239 Called just before savestate save occurs (note: movie saves are synchronous
3240 and won't trigger these callbacks if called from Lua).
3243 \begin_layout Subsubsection
3244 Callback: on_err_save(string name)
3247 \begin_layout Standard
3248 Called if savestate goes wrong.
3251 \begin_layout Subsubsection
3252 Callback: on_post_save(string name, boolean is_savestate)
3255 \begin_layout Standard
3256 Called on successful savaestate.
3257 is_savestate gives if this was a savestate or a movie.
3260 \begin_layout Subsubsection
3264 \begin_layout Standard
3265 Called when emulator is shutting down.
3268 \begin_layout Subsubsection
3269 Callback: on_input(boolean subframe)
3272 \begin_layout Standard
3273 Called when emulator is just sending input to bsnes core.
3274 Warning: This is called even in readonly mode, but the results are ignored.
3277 \begin_layout Subsubsection
3278 Callback: on_reset()
3281 \begin_layout Standard
3282 Called when SNES is reset.
3285 \begin_layout Subsubsection
3286 Callback: on_readwrite()
3289 \begin_layout Standard
3290 Called when moving into readwrite mode as result of
3291 \begin_inset Quotes eld
3295 \begin_inset Quotes erd
3298 command (note: moving to rwmode by Lua won't trigger this, as per recursive
3302 \begin_layout Subsubsection
3303 Callback: on_snoop(number port, number controller, number index, number
3307 \begin_layout Standard
3308 Called each time bsnes asks for input.
3309 The value is the final value to be sent to bsnes core (readonly mode, autohold
3310 and autofire have been taken into account).
3311 Might be useful when translating movies to format suitable for console
3313 Note: There is no way to modify the value to be sent.
3316 \begin_layout Subsubsection
3317 Callback: on_keyhook(string keyname, table state)
3320 \begin_layout Standard
3321 Sent when key that has keyhook events requested changes state.
3322 Keyname is name of the key (group) and state is the state (same kind as
3323 table values in input.raw).
3326 \begin_layout Subsubsection
3330 \begin_layout Standard
3331 Called when requested by set_idle_timeout(), the timeout has expired and
3332 emulator is waiting.
3335 \begin_layout Subsubsection
3336 Callback: on_timer()
3339 \begin_layout Standard
3340 Called when requested by set_idle_timeout() and the timeout has expired
3341 (regardless if emulator is waiting).
3344 \begin_layout Section
3345 Memory watch expression syntax
3348 \begin_layout Standard
3349 Memory watch expressions are in RPN (Reverse Polish Notation).
3350 At the end of expression, the top entry on stack is taken as the final
3354 \begin_layout Standard
3358 \begin_layout Itemize
3359 Evaluation order is strictly left to right.
3362 \begin_layout Itemize
3363 a is the entry on top of stack
3366 \begin_layout Itemize
3367 b is the entry immediately below top of stack
3370 \begin_layout Itemize
3371 ; separates values to be pushed (no intermediate pop).
3374 \begin_layout Itemize
3375 After end of element, all used stack slots are popped and all results are
3379 \begin_layout Itemize
3380 When pushing multiple values, the pushes occur in order shown.
3383 \begin_layout Standard
3384 The following operators are available:
3387 \begin_layout Itemize
3391 \begin_layout Itemize
3395 \begin_layout Itemize
3399 \begin_layout Itemize
3403 \begin_layout Itemize
3407 \begin_layout Itemize
3411 \begin_layout Itemize
3412 b : read_signed_byte(a)
3415 \begin_layout Itemize
3419 \begin_layout Itemize
3420 d : read_signed_dword(a)
3423 \begin_layout Itemize
3427 \begin_layout Itemize
3429 \begin_inset Formula $\pi$
3435 \begin_layout Itemize
3436 q : read_signed_qword(a)
3439 \begin_layout Itemize
3443 \begin_layout Itemize
3447 \begin_layout Itemize
3451 \begin_layout Itemize
3455 \begin_layout Itemize
3456 w : read_signed_word(a)
3459 \begin_layout Itemize
3463 \begin_layout Itemize
3464 B : read_unsigned_byte(a)
3467 \begin_layout Itemize
3468 C<number>z : Push number <number> to stack.
3471 \begin_layout Itemize
3472 D : read_unsigned_dword(a)
3475 \begin_layout Itemize
3476 C0x<number>z : Push number <number> (hexadecimal) to stack.
3479 \begin_layout Itemize
3480 Q : read_unsigned_qword(a)
3483 \begin_layout Itemize
3484 R<digit> : round a to <digit> digits.
3487 \begin_layout Itemize
3488 W : read_unsigned_word(a)
3491 \begin_layout Subsection
3495 \begin_layout Standard
3496 C0x007e0878zWC0x007e002czW-
3499 \begin_layout Enumerate
3500 Push value 0x7e0878 on top of stack (C0x007e0878z).
3503 \begin_layout Enumerate
3504 Pop the value on top of stack (0x7e0878), read word value at that address
3505 and push the result,call it x1 (W).
3508 \begin_layout Enumerate
3509 Push value 0x7e002c on top of stack (C0x007e002cz).
3512 \begin_layout Enumerate
3513 Pop the value on top of stack (0x7e002c), read word value at that address
3514 and push the result,call it x2 (W).
3517 \begin_layout Enumerate
3518 Pop the two top numbers on stack, x1 and x2, substract x1 from x2 and push
3522 \begin_layout Enumerate
3523 Since the expression ends, the final memory watch result is the top one
3524 on stack, which is x2 - x1.
3527 \begin_layout Section
3528 Modifier and key names:
3531 \begin_layout Subsection
3535 \begin_layout Subsubsection
3539 \begin_layout Standard
3540 Following modifier names are known:
3543 \begin_layout Itemize
3544 ctrl, lctrl, rctrl: Control keys
3547 \begin_layout Itemize
3548 alt, lalt, ralt: ALT keys.
3551 \begin_layout Itemize
3552 shift, lshift, rshift: Shift keys.
3555 \begin_layout Itemize
3556 meta, lmeta, rmeta: Meta keys.
3559 \begin_layout Itemize
3560 num, caps: Numlock/Capslock (these are sticky!)
3563 \begin_layout Itemize
3567 \begin_layout Subsubsection
3571 \begin_layout Standard
3572 Following key names are known:
3575 \begin_layout Itemize
3576 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
3577 hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
3578 comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
3579 less, equals, greater, question, at, leftbracket, backslash, rightbracket,
3580 caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
3581 o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
3582 world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
3583 world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
3584 world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
3585 world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
3586 world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
3587 world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
3588 world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
3589 world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
3590 world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
3591 world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
3592 world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
3593 world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
3594 kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
3595 kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
3596 pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
3597 f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
3598 lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
3599 break, menu, power, euro, undo
3602 \begin_layout Itemize
3603 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
3604 hardware-dependent scan code of <n> (useful to bind those keys that don't
3605 have symbolic names).
3608 \begin_layout Subsubsection
3609 Joystick pseudo-keys:
3612 \begin_layout Itemize
3613 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
3616 \begin_layout Itemize
3617 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
3620 \begin_layout Itemize
3621 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
3624 \begin_layout Itemize
3625 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
3628 \begin_layout Itemize
3629 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
3632 \begin_layout Itemize
3633 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
3634 position (axis modes axis and axis_inverse).
3637 \begin_layout Itemize
3638 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
3639 position (axis modes axis and axis_inverse).
3642 \begin_layout Itemize
3643 joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis> pressure (axis
3647 \begin_layout Subsubsection
3651 \begin_layout Itemize
3652 Escape: Enter/Exit Command mode, cancel modal dialogs.
3655 \begin_layout Itemize
3656 Return (also KPEnter): Execute command, ok modal dialog.
3659 \begin_layout Itemize
3660 Pgup/Up (also KP8/9 if no num lock, CTRL+P; command mode): Previous command
3664 \begin_layout Itemize
3665 Pgdn/Down(also KP2/3 if no num lock, CTRL+N; command mode): Next command
3669 \begin_layout Itemize
3670 Home (also KP7 if no num lock, CTRL+A; command mode): Beginning of command.
3673 \begin_layout Itemize
3674 End (also KP1 if no num lock, CTRL+E; command mode): End of command.
3677 \begin_layout Itemize
3678 Left (also KP4 if no num lock, CTRL+B; command mode): Move cursor left.
3681 \begin_layout Itemize
3682 Right (also KP6 if no num lock, CTRL+F; command mode): Move cursor right.
3685 \begin_layout Itemize
3687 if no num lock; command mode): Delete character to right of cursor.
3690 \begin_layout Itemize
3691 Insert (also KP0 if no num lock; command mode): Toggle between insert /
3695 \begin_layout Itemize
3696 Backspace (command mode): Delete character to left of cursor.
3699 \begin_layout Itemize
3700 CTRL+LEFT (also ALT+B; command mode): Previous word.
3703 \begin_layout Itemize
3704 CTRL+RIGHT (also ALT+F; command mode): Next word.
3707 \begin_layout Itemize
3708 ALT+D (also CTRL+W; command mode): Delete word.
3711 \begin_layout Itemize
3712 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
3715 \begin_layout Subsection
3719 \begin_layout Subsubsection
3723 \begin_layout Standard
3724 Following modifier names are known:
3727 \begin_layout Itemize
3731 \begin_layout Itemize
3735 \begin_layout Itemize
3739 \begin_layout Itemize
3743 \begin_layout Itemize
3747 \begin_layout Subsubsection
3751 \begin_layout Standard
3752 Following key names are known:
3755 \begin_layout Itemize
3756 back, tab, return, escape, space, exclaim, quotedbl, hash, dollar, percent,
3757 ampersand, quote, leftparen, rightparen, asterisk, plus, comma, minus,
3758 period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon, less, equals,
3759 greater, question, at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
3760 q, r, s, t, u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
3761 underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
3762 q, r, s, t, u, v, w, x, y, z, leftcurly, pipe, rightcurly, tilde, delete,
3763 start, lbutton, rbutton, cancel, mbutton, clear, shift, alt, control, menu,
3764 pause, capital, end, home, lefT, up, right, down, select, print, execute,
3765 snapshot, insert, help, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5,
3766 numpad6, numpad7, numpad8, numpad9, multiply, add, separator, subtract,
3767 decimal, divide, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13,
3768 f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, numlock, scroll,
3769 pageup, pagedown, numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
3770 numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up, numpad_right,
3771 numpad_down, numpad_pageup, numpad_pagedown, numpad_end, numpad_begin,
3772 numpad_insert, numpad_delete, numpad_equal, numpad_multiply, numpad_add,
3773 numpad_separator, numpad_subtract, numpad_decimal, numpad_divide, windows_left,
3774 windows_right, windows_menu, command, special1, special2, special3, special4,
3775 special5, special6, special7, special8, special9, special10, special11,
3776 special12, special13, special14, special15, special16, special17, special18,
3777 special19, special20
3780 \begin_layout Section
3784 \begin_layout Standard
3785 Movie file is .zip archive in itself, normal ZIP archive tools work on it
3786 (note: If you recompress it, do not use compression methods other than
3787 store and deflate and especially do not use encryption of any kind).
3790 \begin_layout Subsection
3791 Detecting clean start/SRAM/Savestate
3794 \begin_layout Itemize
3796 \begin_inset Quotes eld
3800 \begin_inset Quotes erd
3803 it is savestate, otherwise:
3806 \begin_layout Itemize
3807 If file has members with names starting
3808 \begin_inset Quotes eld
3812 \begin_inset Quotes erd
3815 it is movie starting from SRAM, otherwise:
3818 \begin_layout Itemize
3819 It is movie starting from clear state.
3822 \begin_layout Subsection
3826 \begin_layout Standard
3827 Type of game ROM and region (as one line).
3831 \begin_layout Standard
3832 \begin_inset Tabular
3833 <lyxtabular version="3" rows="8" columns="3">
3834 <features tabularvalignment="middle">
3835 <column alignment="center" valignment="top" width="0">
3836 <column alignment="center" valignment="top" width="0">
3837 <column alignment="center" valignment="top" width="0">
3839 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3842 \begin_layout Plain Layout
3848 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3851 \begin_layout Plain Layout
3857 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3860 \begin_layout Plain Layout
3868 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3871 \begin_layout Plain Layout
3877 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3880 \begin_layout Plain Layout
3886 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3889 \begin_layout Plain Layout
3897 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3900 \begin_layout Plain Layout
3906 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3909 \begin_layout Plain Layout
3915 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3918 \begin_layout Plain Layout
3926 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3929 \begin_layout Plain Layout
3935 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3938 \begin_layout Plain Layout
3944 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3947 \begin_layout Plain Layout
3955 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3958 \begin_layout Plain Layout
3964 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3967 \begin_layout Plain Layout
3973 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3976 \begin_layout Plain Layout
3984 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3987 \begin_layout Plain Layout
3993 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3996 \begin_layout Plain Layout
4002 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4005 \begin_layout Plain Layout
4013 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4016 \begin_layout Plain Layout
4022 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4025 \begin_layout Plain Layout
4031 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4034 \begin_layout Plain Layout
4042 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4045 \begin_layout Plain Layout
4051 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4054 \begin_layout Plain Layout
4060 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4063 \begin_layout Plain Layout
4077 \begin_layout Standard
4081 \begin_layout Standard
4082 \begin_inset Tabular
4083 <lyxtabular version="3" rows="3" columns="2">
4084 <features tabularvalignment="middle">
4085 <column alignment="center" valignment="top" width="0">
4086 <column alignment="center" valignment="top" width="0">
4088 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4091 \begin_layout Plain Layout
4097 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4100 \begin_layout Plain Layout
4108 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4111 \begin_layout Plain Layout
4117 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4120 \begin_layout Plain Layout
4128 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
4131 \begin_layout Plain Layout
4137 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
4140 \begin_layout Plain Layout
4154 \begin_layout Subsection
4158 \begin_layout Standard
4159 Contains type of port #1 (as one line).
4160 Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
4161 If not present, defaults to 'gamepad'.
4164 \begin_layout Subsection
4168 \begin_layout Standard
4169 Contains type of port #2 (as one line).
4170 Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
4171 'justifier' and 'justifiers'.
4172 If not present, defaults to 'none'.
4175 \begin_layout Subsection
4179 \begin_layout Standard
4180 Contains name of the game (as one line).
4183 \begin_layout Subsection
4187 \begin_layout Standard
4188 Contains authors, one per line.
4189 Part before '|' is the full name, part after is the nickname.
4192 \begin_layout Subsection
4196 \begin_layout Standard
4198 \begin_inset Quotes eld
4202 \begin_inset Quotes erd
4206 Used to reject other saves.
4209 \begin_layout Subsection
4210 Member: controlsversion
4213 \begin_layout Standard
4215 \begin_inset Quotes eld
4219 \begin_inset Quotes erd
4223 Used to identify what controls are there.
4226 \begin_layout Subsection
4228 \begin_inset Quotes eld
4232 \begin_inset Quotes erd
4238 \begin_layout Standard
4239 Contains bsnes core version number (as one line).
4242 \begin_layout Subsection
4246 \begin_layout Standard
4247 Contains project ID (as one line).
4248 Used to identify if two movies are part of the same project.
4251 \begin_layout Subsection
4252 Member: {rom,slota,slotb}{,xml}.sha256
4255 \begin_layout Standard
4256 Contains SHA-256 of said ROM or ROM mapping file (as one line).
4257 Absent if corresponding file is absent.
4260 \begin_layout Subsection
4261 Member: moviesram.<name>
4264 \begin_layout Standard
4265 Raw binary startup SRAM of kind <name>.
4266 Only present in savestates and movies starting from SRAM.
4269 \begin_layout Subsection
4273 \begin_layout Standard
4274 Contains frame number (as one line) of frame movie was saved on.
4275 Only present in savestates.
4278 \begin_layout Subsection
4282 \begin_layout Standard
4283 Current value of lag counter (as one line).
4284 Only present in savestates.
4287 \begin_layout Subsection
4288 Member: pollcounters
4291 \begin_layout Standard
4292 Contains poll counters (currently 100 of them), one per line.
4293 Each line is raw poll count if DRDY is set for it.
4294 Otherwise it is negative poll count minus one.
4295 Only present in savestates.
4298 \begin_layout Subsection
4302 \begin_layout Standard
4303 Raw binary dump of host memory.
4304 Only present in savestates.
4307 \begin_layout Subsection
4311 \begin_layout Standard
4312 The raw binary savestate itself.
4313 Savestate detection uses this file, only present in savestates.
4316 \begin_layout Subsection
4320 \begin_layout Standard
4321 Screenshot of current frame.
4322 Only present in savestates.
4323 First 2 bytes are big-endian width of image, rest are 24-bit RGB image
4325 Height of image is inferred from the width and size of data.
4328 \begin_layout Subsection
4332 \begin_layout Standard
4333 Raw binary SRAM of kind <name> at time of savestate.
4334 Only present in savestates.
4337 \begin_layout Subsection
4341 \begin_layout Standard
4342 The actual input track, one line per subframe (blank lines are skipped).
4345 \begin_layout Itemize
4346 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
4347 part of same frame as previous, otherwise it starts a new frame.
4350 \begin_layout Itemize
4351 First subframe must start a new frame.
4354 \begin_layout Standard
4355 Length of movie in frames is number of lines in input file that start a
4359 \begin_layout Subsection
4363 \begin_layout Standard
4364 Contains textual base-10 rerecord count (as one line; emulator just writes
4365 this, it doesn't read it) + 1.
4368 \begin_layout Subsection
4372 \begin_layout Standard
4373 This member stores set of load IDs.
4374 There is one load ID per rerecord (plus one corresponding to start of project).
4377 \begin_layout Itemize
4378 This member constists of concatenation of records
4381 \begin_layout Itemize
4382 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
4386 \begin_layout Itemize
4387 IDs are interpretted as 256-bit big-endian integers with warparound.
4390 \begin_layout Itemize
4391 Initial predicted ID is all zeroes.
4394 \begin_layout Standard
4395 Format of each record is:
4398 \begin_layout Itemize
4399 1 byte: Opcode byte.
4400 Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
4404 \begin_layout Itemize
4405 32-prefixlen bytes of ID.
4408 \begin_layout Itemize
4409 countlen bytes of big-endian count (count).
4412 \begin_layout Standard
4413 Records are processed as follows:
4416 \begin_layout Itemize
4417 To form the first ID encoded by record, take the first prefixlen bytes predicted
4418 ID and append the read ID value to it.
4419 The result is the first ID encoded.
4422 \begin_layout Itemize
4423 If countlen is 0, record encodes 1 ID.
4426 \begin_layout Itemize
4427 If countlen is 1, record encodes 2+count IDs.
4430 \begin_layout Itemize
4431 If countlen is 2, record encodes 258+count IDs.
4434 \begin_layout Itemize
4435 If countlen is 3, record encodes 65794+count IDs.
4438 \begin_layout Itemize
4439 The new predicted ID is the next ID after last one encoded by the record.
4442 \begin_layout Standard
4443 The number of rerecords + 1 is equal to the sum of number of IDs encoded
4447 \begin_layout Subsection
4448 Member: starttime.second
4451 \begin_layout Standard
4452 Movie starting time, second part.
4453 Epoch is Unix epoch.
4454 Default is 1,000,000,000.
4457 \begin_layout Subsection
4458 Member: starttime.subsecond
4461 \begin_layout Standard
4462 Movie starting time, subsecond part.
4467 \begin_layout Subsection
4468 Member: savetime.second
4471 \begin_layout Standard
4472 Movie saving time, second part.
4473 Default is starttime.second.
4474 Only present in savestates.
4477 \begin_layout Subsection
4478 Member: savetime.subsecond
4481 \begin_layout Standard
4482 Movie saving time, subsecond part.
4483 Default is starttime.subsecond.
4484 Only present in savestates.
4487 \begin_layout Section
4488 Quick'n'dirty encode guide
4491 \begin_layout Enumerate
4492 Start the emulator and load the movie file.
4495 \begin_layout Enumerate
4496 Set large AVI option 'set-setting avi-large on'
4499 \begin_layout Enumerate
4500 Enable dumping 'dump-avi tmpdump'
4503 \begin_layout Enumerate
4504 Unpause and let it run until you want to end dumping.
4507 \begin_layout Enumerate
4508 Close the emulator (closing the window is the easiest way).
4512 \begin_layout Enumerate
4513 For each tmpdump*.avi file created, on command prompt, do 'x264 --crf 10
4514 -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
4517 \begin_layout Enumerate
4518 Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
4521 \begin_layout Enumerate
4522 Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv + tmpdump_0000001.mkv
4523 + tmpdump_0000002.mkv' (list every tmpdump_<numbers>.mkv, with + in between).
4526 \begin_layout Enumerate
4527 Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'.
4528 Now final.mkv contains quick'n'dirty encode.
4531 \begin_layout Section
4532 Axis configurations for some gamepad types:
4535 \begin_layout Subsection
4539 \begin_layout Standard
4540 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be set to pressure-+.
4543 \begin_layout LyX-Code
4544 set-axis joystick0axis2 pressure-+
4547 \begin_layout LyX-Code
4548 set-axis joystick0axis5 pressure-+
4551 \begin_layout Itemize
4552 This is needed for SDL only.
4553 EVDEV sets those types correctly.
4556 \begin_layout Subsection
4558 \begin_inset Quotes eld
4562 \begin_inset Quotes erd
4568 \begin_layout Standard
4569 Axes 8-19 should be disabled.
4572 \begin_layout LyX-Code
4573 set-axis joystick0axis8 disabled
4576 \begin_layout LyX-Code
4577 set-axis joystick0axis9 disabled
4580 \begin_layout LyX-Code
4581 set-axis joystick0axis10 disabled
4584 \begin_layout LyX-Code
4585 set-axis joystick0axis11 disabled
4588 \begin_layout LyX-Code
4589 set-axis joystick0axis12 disabled
4592 \begin_layout LyX-Code
4593 set-axis joystick0axis13 disabled
4596 \begin_layout LyX-Code
4597 set-axis joystick0axis14 disabled
4600 \begin_layout LyX-Code
4601 set-axis joystick0axis15 disabled
4604 \begin_layout LyX-Code
4605 set-axis joystick0axis16 disabled
4608 \begin_layout LyX-Code
4609 set-axis joystick0axis17 disabled
4612 \begin_layout LyX-Code
4613 set-axis joystick0axis18 disabled
4616 \begin_layout LyX-Code
4617 set-axis joystick0axis19 disabled
4620 \begin_layout Section
4624 \begin_layout Subsection
4625 Problems from BSNES core:
4628 \begin_layout Itemize
4629 The whole pending save stuff.
4632 \begin_layout Itemize
4633 Lack of layer hiding.
4636 \begin_layout Itemize
4637 It is slow (especially accuracy).
4640 \begin_layout Itemize
4641 Firmwares can't be loaded from ZIP archives.
4644 \begin_layout Subsection
4648 \begin_layout Itemize
4649 Modifiers don't work with pseudo-keys (SDL, EVDEV).
4652 \begin_layout Itemize
4653 Audio for last dumped frame is not itself dumped.
4656 \begin_layout Itemize
4657 Audio in UI is pretty bad in quality if game doesn't run at full speed.
4660 \begin_layout Itemize
4661 AVI compression levels 10-18 are not compatible with AVISynth AVISource.
4664 \begin_layout Itemize
4665 No menus, command based interface (SDL).
4668 \begin_layout Itemize
4669 Long commands don't scroll.
4672 \begin_layout Itemize
4673 Wxwidgets UI is still buggy.
4676 \begin_layout Section
4680 \begin_layout Subsection
4684 \begin_layout Itemize
4688 \begin_layout Itemize
4689 Fix dumper video corruption with levels 10-18.
4692 \begin_layout Subsection
4696 \begin_layout Itemize
4700 \begin_layout Itemize
4701 Lots of code cleanups
4704 \begin_layout Itemize
4705 Lua interface to settings
4708 \begin_layout Itemize
4709 Allow specifying AVI borders without Lua
4712 \begin_layout Itemize
4713 Fix scaling if vscale > 1 and originx > 0 (left border exists)
4716 \begin_layout Itemize
4717 on_snoop lua callback
4720 \begin_layout Itemize
4721 Faster movie loading and saving.
4724 \begin_layout Subsection
4728 \begin_layout Itemize
4732 \begin_layout Subsection
4736 \begin_layout Itemize
4740 \begin_layout Itemize
4741 Save jukebox functionality.
4744 \begin_layout Subsection
4748 \begin_layout Itemize
4749 Try to fix some nasty failing movie load edge cases
4752 \begin_layout Itemize
4753 Allow specifying scripts to run on command line.
4756 \begin_layout Subsection
4760 \begin_layout Itemize
4761 Major source code reorganization.
4764 \begin_layout Itemize
4765 Backup savestates before overwriting.
4768 \begin_layout Itemize
4769 Don't crash if loading initial state fails.
4772 \begin_layout Subsection
4776 \begin_layout Itemize
4780 \begin_layout Itemize
4781 Fix author name parsing
4784 \begin_layout Itemize
4785 Fix rerecord counting
4788 \begin_layout Itemize
4789 (SDL) Print messages to console if SDL is uninitialized
4792 \begin_layout Itemize
4793 Add movieinfo program
4796 \begin_layout Itemize
4797 Fix loading movies starting from SRAM.
4800 \begin_layout Subsection
4804 \begin_layout Itemize
4805 Add support for unattended dumping
4808 \begin_layout Itemize
4809 Fix compiling for Win32
4812 \begin_layout Itemize
4813 Don't lock up if sound can't be initialized
4816 \begin_layout Itemize
4817 Strip trailing CR from commands
4820 \begin_layout Itemize
4821 Don't try to do dubious things in global ctors (fix crash on startup)
4824 \begin_layout Subsection
4828 \begin_layout Itemize
4829 Small documentation tweaking
4832 \begin_layout Itemize
4836 \begin_layout Itemize
4837 Fix major bug in modifier matching
4840 \begin_layout Subsection
4844 \begin_layout Itemize
4845 Lots of documentation fixes
4848 \begin_layout Itemize
4849 Use dedicated callbacks for event backcomm., not commands.
4852 \begin_layout Itemize
4853 Ensure that the watchdog is not hit when executing delayed reset.
4856 \begin_layout Itemize
4857 Remove errant tab from joystick message.
4860 \begin_layout Subsection
4864 \begin_layout Itemize
4865 Make autofire operate in absolute time, not linear time
4868 \begin_layout Itemize
4869 Reinitialize controls when resuming from loadstate
4872 \begin_layout Itemize
4873 Some more code cleanups
4876 \begin_layout Itemize
4877 If Lua allocator fails, call OOM_panic()
4880 \begin_layout Itemize
4881 Byte/word/dword/qword sized host memory write/read functions.
4884 \begin_layout Itemize
4885 Dump at correct framerate if dumping interlaced NTSC (height=448).
4888 \begin_layout Subsection
4892 \begin_layout Itemize
4893 Actually include the complete source code
4896 \begin_layout Itemize
4900 \begin_layout Subsection
4904 \begin_layout Itemize
4905 Document {save,start}time.{,sub}second.
4908 \begin_layout Itemize
4909 Intercept time() from bsnes core.
4912 \begin_layout Subsection
4916 \begin_layout Itemize
4917 Allow disabling time() interception (allow build on Mac OS X)
4920 \begin_layout Itemize
4921 Use SDLMain on Mac OS X (make SDL not crash)
4924 \begin_layout Itemize
4925 Disable delayed resets (just plain too buggy for now).
4928 \begin_layout Itemize
4932 \begin_layout Itemize
4933 Use 16-bit for graphics/video instead of 32-bit.
4936 \begin_layout Itemize
4937 gui.rectangle/gui.pixel
4940 \begin_layout Itemize
4944 \begin_layout Itemize
4945 New CSCD writer implementation.
4948 \begin_layout Subsection
4952 \begin_layout Itemize
4953 Fix interaction of * and +.
4956 \begin_layout Itemize
4960 \begin_layout Itemize
4961 Use gettimeofday()/usleep(), these seem portable enough.
4964 \begin_layout Itemize
4965 Move joystick axis manipulation to keymapper code.
4968 \begin_layout Itemize
4969 Changes to how read-only works.
4972 \begin_layout Itemize
4973 Refactor controller input code.
4976 \begin_layout Subsection
4980 \begin_layout Itemize
4981 Fix mouseclick scale compensation.
4984 \begin_layout Itemize
4985 Draw area boundaries correctly in SDL code.
4988 \begin_layout Itemize
4992 \begin_layout Itemize
4993 Fix CSCD output (buffer overrun and race condition).
4996 \begin_layout Subsection
5000 \begin_layout Itemize
5001 JMD dumping support.
5004 \begin_layout Itemize
5005 Allow unattended dumping to JMD.
5008 \begin_layout Itemize
5012 \begin_layout Itemize
5013 Switch back to 32-bit colors.
5016 \begin_layout Itemize
5017 Add Lua function gui.color.
5020 \begin_layout Itemize
5021 Use some new C++11 features in GCC 4.6.
5024 \begin_layout Itemize
5025 Be prepared for core frequency changes.
5028 \begin_layout Itemize
5029 Pass colors in one chunk from Lua.
5032 \begin_layout Subsection
5036 \begin_layout Itemize
5037 New lua functions gui.line(), gui.status() and gui.circle(), memory.vma_count(),
5038 memory.read_vma() and memory.find_vma().
5041 \begin_layout Itemize
5042 Numerious documentation fixups
5045 \begin_layout Itemize
5046 RTC time format changed
5049 \begin_layout Itemize
5050 Reformat flags display
5053 \begin_layout Itemize
5054 Allow lua package name to be overridden
5057 \begin_layout Itemize
5058 SDUMP (high-quality dumping).
5061 \begin_layout Itemize
5062 Split platform support to plugins.
5065 \begin_layout Itemize
5066 Make all sound plugins support basic sound commands
5069 \begin_layout Itemize
5070 Support portaudio for sound.
5073 \begin_layout Itemize
5074 Allow disable Lua/SDL searching.
5077 \begin_layout Itemize
5078 Upconvert colors when copying lcscreen to screen.
5081 \begin_layout Itemize
5082 Reorganize source tree.
5085 \begin_layout Itemize
5086 Evdev joystick support.
5089 \begin_layout Itemize
5090 Refactor more code into generic window code.
5093 \begin_layout Subsection
5097 \begin_layout Itemize
5098 Refactor message handling.
5101 \begin_layout Itemize
5105 \begin_layout Itemize
5109 \begin_layout Itemize
5110 Finish pending saves before load/quit.
5113 \begin_layout Itemize
5114 Wxwidgets graphics plugin.
5117 \begin_layout Subsection
5121 \begin_layout Itemize
5122 Get rid of win32-crap.[ch]pp.
5125 \begin_layout Itemize
5126 Move files around a lot.
5129 \begin_layout Itemize
5130 Get rid of need for host C++ compiler.
5133 \begin_layout Itemize
5137 \begin_layout Itemize
5138 Refactor inter-component communication.
5141 \begin_layout Itemize
5145 \begin_layout Itemize
5146 Fix crash on multiline aliases.
5149 \begin_layout Itemize
5150 Load/Save settings in wxwidgets gui.
5153 \begin_layout Subsection
5157 \begin_layout Itemize
5158 Patch problems in bsnes core
5161 \begin_layout Itemize
5162 SNES is little-endian, not big-endian!
5165 \begin_layout Itemize
5166 Fix memory corruption in lcscreen::load()
5169 \begin_layout Subsection
5173 \begin_layout Itemize
5174 Fix interpretting repeat counts in rrdata loading.
5177 \begin_layout Itemize
5178 New lua callback: on_frame()
5181 \begin_layout Itemize
5182 Remove calls to runtosave() that aren't supposed to be there
5185 \begin_layout Itemize
5186 Lua function: movie.read_rtc()
5189 \begin_layout Itemize
5190 Ignore src/fonts/font.cpp
5193 \begin_layout Itemize
5194 Fix more bsnes core problems
5197 \begin_layout Itemize
5198 Control bsnes random seeding
5201 \begin_layout Itemize
5205 \begin_layout Itemize
5206 Some bsnes core debugging features (state dump and state hash)
5209 \begin_layout Itemize
5210 Fix titlebar version number (no, the last version wasn't 'lsnes-0-beta21',
5211 it was 'lsnes rr0-beta21').
5214 \begin_layout Subsection
5218 \begin_layout Itemize
5219 Fix memory corruption due to macro/field mixup
5222 \begin_layout Itemize
5223 search-memory update
5226 \begin_layout Itemize
5227 Allow direct-mapped framebuffer
5230 \begin_layout Itemize
5231 SDL: Use SDL_ANYFORMAT if possible
5234 \begin_layout Itemize
5235 SDMP2SOX: 2s delay modes.
5238 \begin_layout Itemize
5242 \begin_layout Itemize
5243 Use sed -E, not sed -r.
5244 Fixes building on Mac OS X.
5247 \begin_layout Itemize
5248 Wxwidgets: Save jukebox on exit
5251 \begin_layout Itemize
5252 Fix RTC if using load-movie on savestate.
5255 \begin_layout Itemize
5256 Fix crash related to full console mode.
5259 \begin_layout Subsection
5263 \begin_layout Itemize
5264 Wxwidgets: Allow bringing application to foreground on Mac OS X.
5267 \begin_layout Itemize
5268 Wxwidgets: Allow compiling on Mac OS X.
5271 \begin_layout Itemize
5272 Use movie compare instead of movie hashing (faster save/load).
5275 \begin_layout Itemize
5279 \begin_layout Subsection
5283 \begin_layout Itemize
5284 sdmp2sox: Pad soundtrack if using -l or -L.
5287 \begin_layout Itemize
5288 sdmp2sox: Fix NTSC overscan.
5291 \begin_layout Itemize
5292 sdmp2sox: Add AR correction mode.
5295 \begin_layout Itemize
5296 call lua_close() when exiting.
5299 \begin_layout Itemize
5300 Fix zip_writer bug causing warnings from info-zip and error from advzip.
5303 \begin_layout Subsection
5307 \begin_layout Itemize
5308 Fix IPS patching code (use bsnes core IPS patcher).
5311 \begin_layout Itemize
5312 Implement BPS patching (using bsnes core IPS patcher).
5315 \begin_layout Itemize
5316 Add feature to load headered ROMs.
5319 \begin_layout Subsection
5323 \begin_layout Itemize
5324 Show command names when showing keybindings
5327 \begin_layout Subsection
5331 \begin_layout Itemize
5332 Fix pause-on-end to be actually controllable
5335 \begin_layout Itemize
5336 SDL: Poll all events in queue, not just first one (fixes slowness in command
5340 \begin_layout Itemize
5341 Wxwidgets: Fix ROM loading.
5344 \begin_layout Subsection
5348 \begin_layout Itemize
5349 Lua: Add gui.textH, gui.textV, gui.textHV
5352 \begin_layout Itemize
5353 Fix text colors on SDL on Mac OS X
5356 \begin_layout Itemize
5357 Mode 'F' for finished in readonly mode.
5360 \begin_layout Itemize
5364 \begin_layout Itemize
5365 Reliably pause after skip poll
5368 \begin_layout Itemize
5369 Split UI and core into their own threads
5372 \begin_layout Subsection
5376 \begin_layout Itemize
5377 Remove leftover dummy SRAM slot
5380 \begin_layout Itemize
5381 Fix controller numbers.
5384 \begin_layout Subsection
5388 \begin_layout Itemize
5389 Fix lsnes-dumpavi after interface change.
5392 \begin_layout Itemize
5393 Also give BSNES patches for v085.
5396 \begin_layout Itemize
5397 Pack movie data in memory.
5400 \begin_layout Subsection
5404 \begin_layout Itemize
5405 Fix framecount/length given when loading movies.
5408 \begin_layout Itemize
5409 Controller command memory leak fixes.
5412 \begin_layout Itemize
5413 Don't leak palette if freeing screen object.
5416 \begin_layout Subsection
5420 \begin_layout Itemize
5424 \begin_layout Itemize
5425 Wxwidgets: Allow controlling dumper from the menu.
5428 \begin_layout Subsection
5432 \begin_layout Itemize
5433 Rewrite parts of manual
5436 \begin_layout Itemize
5437 Lua: Make it work with Lua 5.2.
5440 \begin_layout Subsection
5444 \begin_layout Itemize
5445 Win32: Fix compile errors.
5448 \begin_layout Subsection
5452 \begin_layout Itemize
5453 Refactor controller input code.
5456 \begin_layout Itemize
5457 Fix crash when using command line on SDL / Mac OS X.
5460 \begin_layout Subsection
5464 \begin_layout Itemize
5465 Delete core/coroutine (obsolete)
5468 \begin_layout Itemize
5469 Lag input display by one frame.
5472 \begin_layout Itemize
5473 Rewind movie to beginning function.
5476 \begin_layout Itemize
5477 Fix wrong frame number reported to Lua when repainting after loadstate
5480 \begin_layout Itemize
5481 Support UI editing of jukebox
5484 \begin_layout Itemize
5485 Wxwidgets: Save settings on exit.
5488 \begin_layout Itemize
5489 Support ${project} for filenames
5492 \begin_layout Itemize
5493 SDL: Fix command history
5496 \begin_layout Subsection
5500 \begin_layout Itemize
5501 Fix some order-of-global-ctor bugs.
5504 \begin_layout Subsection
5508 \begin_layout Itemize
5509 Fix crashes when quitting on Win32.
5512 \begin_layout Subsection
5516 \begin_layout Itemize
5517 EVDEV: Queue keypresses from joystick, don't send directly
5520 \begin_layout Itemize
5521 Wxwidgets: Load-Preserve that actually works.
5524 \begin_layout Subsection
5528 \begin_layout Itemize
5529 Wxwidgets: GUI for memory search.
5532 \begin_layout Itemize
5533 Warn about using synchronous queue in UI callback.
5536 \begin_layout Subsection
5540 \begin_layout Itemize
5541 Remember last saved file for each ROM
5544 \begin_layout Itemize
5545 Support MT dumping via boost.
5548 \begin_layout Itemize
5552 \begin_layout Itemize
5556 \begin_layout Itemize
5557 Make mouse be ordinary input instead of special-casing
5560 \begin_layout Itemize
5561 SDL: Don't screw up commands with NUL codepoints.
5564 \begin_layout Subsection
5568 \begin_layout Itemize
5569 Merge status panel and main window
5572 \begin_layout Itemize
5573 True movie slot support (the rest of it)
5576 \begin_layout Itemize
5577 SDL: Fix compilation error
5580 \begin_layout Itemize
5581 Elminate cross calls in dump menu code.
5584 \begin_layout Subsection
5588 \begin_layout Itemize
5589 Cancel pending saves command
5592 \begin_layout Itemize
5593 Wxwidgets: Code refactoring
5596 \begin_layout Itemize
5597 Wxwidgets: Fix system -> reset
5600 \begin_layout Itemize
5601 Wxwidgets: Read watch expressions in the right thread
5604 \begin_layout Subsection
5608 \begin_layout Itemize
5609 Wxwidgets: Don't prompt for member when running Lua script (Lua doesn't
5613 \begin_layout Itemize
5614 Wxwidgets: 128 -> 1024 Autohold slots (in case more are needed).
5617 \begin_layout Itemize
5618 Don't append trailing '-' to prefix when saving movie.
5621 \begin_layout Itemize
5622 Fix ROM/savestate handling (don't let user mismatch ROM and savestates).
5625 \begin_layout Subsection
5629 \begin_layout Itemize
5630 Document memory watch syntax.
5633 \begin_layout Subsection
5637 \begin_layout Itemize
5638 Fix unattended dumping (lsnes-dumpavi)
5641 \begin_layout Itemize
5645 \begin_layout Itemize
5646 Use adv_dumper instead of the old interface in lsnes-dumpavi (changes syntax)
5649 \begin_layout Itemize
5650 Add option to control sample rate preturbation in AVI dumper
5653 \begin_layout Subsection
5657 \begin_layout Itemize
5658 Wxwidgets: Fix dumper submodes
5661 \begin_layout Itemize
5662 Set core controller types before loadstate
5665 \begin_layout Subsection
5669 \begin_layout Itemize
5670 Fix compiling with bsnes v086.
5673 \begin_layout Subsection
5677 \begin_layout Itemize
5678 Don't prompt before quitting
5681 \begin_layout Itemize
5682 Start unpaused, preserve pause/unpause over load.
5685 \begin_layout Itemize
5686 Try to autodetect if ROM is headered.
5689 \begin_layout Itemize
5690 Wxwidgets: Only bring up ROM patching screen if specifically requested.
5693 \begin_layout Itemize
5694 Allow configuring some hotkeys.
5697 \begin_layout Subsection
5701 \begin_layout Itemize
5702 Lots of code cleanups
5705 \begin_layout Itemize
5706 Fix JMD compression (JMD dumping was broken)
5709 \begin_layout Itemize
5710 Don't crash if Lua C function throws an exception.
5713 \begin_layout Itemize
5714 Support bitmap drawing in Lua.
5717 \begin_layout Itemize
5718 Fix bsnes v085/v086 patches.
5721 \begin_layout Itemize
5722 Improve stability on win32.
5725 \begin_layout Subsection
5729 \begin_layout Itemize
5730 Don't corrupt movie if movie length is integer multiple of frames per page.
5733 \begin_layout Subsection
5737 \begin_layout Itemize
5738 New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
5741 \begin_layout Itemize
5742 New Lua functions: emulator_ready(), utime(), set_idle_timeout(), set_timer_time
5743 out(), bit.extract(), bit.value(), input.geta(), input.seta() and input.controllertyp
5747 \begin_layout Itemize
5748 Wxwidgets: Fix internal focus lost (hotkeys stop working)
5751 \begin_layout Itemize
5752 Wxwidgets: Fix broken modifiers
5755 \begin_layout Itemize
5756 on_paint has parameter now.
5759 \begin_layout Itemize
5760 Optional initital fill for bitmaps
5763 \begin_layout Itemize
5764 Fix palette changing.
5767 \begin_layout Itemize
5768 Optimize rendering a bit.
5771 \begin_layout Itemize
5775 \begin_layout Subsection
5779 \begin_layout Itemize
5780 Movieinfo: Fix display of port #2 type.
5783 \begin_layout Itemize
5784 Call on_input() after loadstate.
5787 \begin_layout Subsection
5791 \begin_layout Itemize
5792 Fix writing port2 data to movie.
5795 \begin_layout Itemize
5796 Fix SRAM handling with Bsnes v087.
5799 \begin_layout Subsection
5803 \begin_layout Itemize
5804 Library loading support
5807 \begin_layout Itemize
5808 Built-in TSCC encoder
5811 \begin_layout Itemize
5812 Hi-color (256T colors) dumping.
5815 \begin_layout Itemize
5816 Dump over TCP/IP(v6)
5819 \begin_layout Itemize
5820 Hidable status panel
5823 \begin_layout Itemize
5827 \begin_layout Itemize
5828 Adjustable sound volume
5831 \begin_layout Itemize
5835 \begin_layout Itemize
5836 Allow DnD into filename boxes
5839 \begin_layout Itemize
5843 \begin_layout Itemize
5844 Portaudio: Fix speaker popping at start
5847 \begin_layout Itemize
5851 \begin_layout Itemize
5852 Speed adjustment menu
5855 \begin_layout Itemize
5856 Win32 joystick support
5859 \begin_layout Itemize
5860 Lua: gui.rainbow and gui.box
5863 \begin_layout Itemize
5864 Split key lists into classes (the key list was large!)
5867 \begin_layout Itemize
5868 More save slots support
5871 \begin_layout Itemize
5872 Wxwidgets (wxJoystick) joystick support
5875 \begin_layout Subsection
5879 \begin_layout Itemize
5880 Lots of internal joystick refactoring
5883 \begin_layout Itemize
5884 Evdev: Add mapping for BTN_TOOL_QUINTTAP
5887 \begin_layout Itemize
5888 Wxwidgets: Settings mode (open settings without ROM)
5891 \begin_layout Itemize
5892 Wxwidgets: Prompt key to use option
5895 \begin_layout Itemize
5896 Wxwidgets: Fix crash if key goes away underneath
5899 \begin_layout Itemize
5900 Wxwidgets: Fix mouse position in presence of scaling
5903 \begin_layout Itemize
5904 AVI dumper: Mode 4 (high-quality resampling to common rate using SRC)
5907 \begin_layout Itemize
5908 Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree control doesn't
5909 seem to work well on WinXP)
5912 \begin_layout Itemize
5913 Start paused option.
5916 \begin_layout Subsection
5920 \begin_layout Itemize
5924 \begin_layout Itemize
5925 lsnes-dumpavi: Start Lua before starting dumper
5928 \begin_layout Itemize
5929 AVI: Fix secondary audio in mode 4.
5932 \begin_layout Subsection
5936 \begin_layout Itemize
5937 AVI: Refactor ZMBV a bit.
5940 \begin_layout Itemize
5941 Fix error reading analog values from movie file
5944 \begin_layout Subsection
5948 \begin_layout Itemize
5949 Delayed reset support
5952 \begin_layout Itemize
5953 Lua: memory.hash_region
5956 \begin_layout Subsection
5960 \begin_layout Itemize
5961 Rework the build system
5964 \begin_layout Itemize
5965 Typing input support
5968 \begin_layout Itemize
5969 Fix building with bsnes v086 and v087.
5972 \begin_layout Itemize
5973 SDL: Save settings on exit
5976 \begin_layout Itemize
5977 SDL: Command to enter command line mode with given command.
5980 \begin_layout Itemize
5981 SDL: More advanced command editing.