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
75 bsnes libsnes (for bsnes SNES core)
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
93 gambatte (for gambatte core)
97 \begin_layout Enumerate
98 SVN r320, r358 or r364
101 \begin_layout Enumerate
102 Patched with included patches
106 \begin_layout Enumerate
110 \begin_layout Enumerate
114 \begin_layout Enumerate
118 \begin_layout Enumerate
119 boost_thread (if native std::thread is not available)
122 \begin_layout Enumerate
126 \begin_layout Enumerate
127 sdlmain (SDL only, part of SDL)
130 \begin_layout Enumerate
131 boost_conversion (this is header-only library)
134 \begin_layout Enumerate
135 libswscale (wxwidgets graphics only)
138 \begin_layout Enumerate
139 Portaudio (portaudio sound only)
142 \begin_layout Enumerate
143 libao (libao sound only)
146 \begin_layout Enumerate
147 Lua (if Lua support is needed) version 5.1.X or 5.2.X
150 \begin_layout Enumerate
154 \begin_layout Enumerate
155 libopus (optional, for commentary track tool)
158 \begin_layout Section
162 \begin_layout Itemize
163 Copy bsnes sources (the bsnes subdirectory) to subdirectory 'bsnes' (for
167 \begin_layout Itemize
168 Copy gambatte sources to subdirectory 'gambatte' (for gambatte core).
171 \begin_layout Itemize
172 Patch the bsnes sources with included patches (directory 'bsnes-patches/<version
176 \begin_layout Itemize
177 Patch the gambatte sources with included patches (directory 'gambatte-patches/<v
178 ersion>', gambatte core)
181 \begin_layout Itemize
182 Edit options.build (or copy of that file)
185 \begin_layout Itemize
186 Run make (passing 'OPTIONS=<filename>' if using something else than options.build
190 \begin_layout Section
194 \begin_layout Subsection
198 \begin_layout Subsubsection
199 --rom=<file> (lsnes/SDL, lsnes/wxwidgets, lsnes-avidump)
202 \begin_layout Standard
206 \begin_layout Subsubsection
207 <file> (lsnes/wxwidgets)
210 \begin_layout Standard
214 \begin_layout Subsection
218 \begin_layout Subsubsection
222 \begin_layout Standard
226 \begin_layout Subsubsection
227 <filename> (lsnes/SDL, lsnes-avidump, movieinfo)
230 \begin_layout Standard
231 Load <filename> as movie or savestate file.
232 All other session options are ignored.
235 \begin_layout Subsubsection
236 --port1=<device> (lsnes/SDL, bsnes core only)
239 \begin_layout Standard
244 \begin_layout Itemize
245 none: No device connected
248 \begin_layout Itemize
249 gamepad: One gamepad (the default)
252 \begin_layout Itemize
253 multitap: Four gamepads (warning: makes most games refuse to start)
256 \begin_layout Itemize
260 \begin_layout Subsubsection
261 --port2=<type> (lsnes/SDL, bsnes core only)
264 \begin_layout Standard
269 \begin_layout Itemize
270 none: No device connected (the default)
273 \begin_layout Itemize
277 \begin_layout Itemize
278 multitap: Four gamepads.
281 \begin_layout Itemize
285 \begin_layout Itemize
286 superscope: Super Scope
289 \begin_layout Itemize
290 justifier: One justifier
293 \begin_layout Itemize
294 justifiers: Two justifiers
297 \begin_layout Subsubsection
298 --gamename=<name> (lsnes/SDL)
301 \begin_layout Standard
302 Set the name of game to <name>.
306 \begin_layout Subsubsection
307 --author=<name> (lsnes/SDL)
310 \begin_layout Standard
311 Add author with full name of <name> (no nickname).
314 \begin_layout Subsubsection
315 --author=|<name> (lsnes/SDL)
318 \begin_layout Standard
319 Add author with nickname of <name> (no full name).
322 \begin_layout Subsubsection
323 --author=<fullname>|<nickname> (lsnes/SDL)
326 \begin_layout Standard
327 Add author with full name of <fullname> and nickname of <nickname>.
330 \begin_layout Subsubsection
331 --rtc-second=<value> (lsnes/SDL)
334 \begin_layout Standard
335 Set RTC second (0 is 1st January 1970 00:00:00Z).
336 Default is 1,000,000,000.
339 \begin_layout Subsubsection
340 --rtc-subsecond=<value> (lsnes/SDL)
343 \begin_layout Standard
350 \begin_layout Subsubsection
351 --anchor-savestate=<file> (lsnes/SDL)
354 \begin_layout Standard
355 Set the anchor savestate file.
358 \begin_layout Subsubsection
359 --load=<file> (lsnes/wxwidgets)
362 \begin_layout Standard
363 After loading the ROM, load <file> as savestate/movie.
366 \begin_layout Subsection
371 \begin_layout Subsubsection
372 --run=<file> (lsnes/SDL)
375 \begin_layout Standard
376 After running main RC file, run this file.
377 If multiple are specified, these execute in order specified.
380 \begin_layout Subsubsection
381 --lua=<file> (lsnes/wxwidgets)
384 \begin_layout Standard
385 Run this Lua file on startup
388 \begin_layout Subsection
389 dump options (lsnes-dumpavi only)
392 \begin_layout Subsubsection
396 \begin_layout Standard
397 Set the dumper to use (required).
398 Use 'list' for listing of known dumpers.
401 \begin_layout Subsubsection
405 \begin_layout Standard
406 Set the mode to use (required for dumpers with multiple modes, forbidden
408 Use 'list' for known modes.
411 \begin_layout Subsubsection
415 \begin_layout Standard
418 \begin_inset Quotes eld
422 \begin_inset Quotes erd
428 \begin_layout Subsubsection
429 --option=<name>=<value>
432 \begin_layout Standard
433 Set option <name> to value <value>.
436 \begin_layout Subsubsection
440 \begin_layout Standard
441 Set number of frames to dump.
445 \begin_layout Subsubsection
449 \begin_layout Standard
450 Run specified lua script (lsnes-dumpavi does not have initialization files).
453 \begin_layout Subsubsection
454 --load-library=<library>
457 \begin_layout Standard
458 Load the specified shared object / dynamic library / dynamic link library.
461 \begin_layout Section
462 Startup file lsnes.rc
465 \begin_layout Standard
466 Upon startup, lsnes (lsnes/SDL only) executes file lsnes.rc as commands.
467 This file is located in:
470 \begin_layout Itemize
475 lsnes.rc (if %APPDATA% exists)
478 \begin_layout Itemize
479 Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME exists)
482 \begin_layout Itemize
483 Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
486 \begin_layout Itemize
487 All: ./lsnes.rc (fallback default).
490 \begin_layout Standard
491 If leading directories do not exist, attempt to create them is made.
494 \begin_layout Section
498 \begin_layout Itemize
499 Commands beginning with '*' invoke the corresponding command without alias
503 \begin_layout Itemize
504 If command starts with '+' (after possible '*'), the command is executed
505 as-is when button is pressed, and when button is released, it is executed
506 with '+' replaced by '-'.
509 \begin_layout Itemize
510 Commands without '+' execute only on negative edge (release).
513 \begin_layout Subsection
517 \begin_layout Standard
518 Settings control various aspects of emulator behaviour.
521 \begin_layout Subsubsection
522 set-setting <setting> <value>
525 \begin_layout Standard
526 Sets setting <setting> to value <value> (may be empty).
529 \begin_layout Subsubsection
530 unset-setting <setting>
533 \begin_layout Standard
534 Try to unset setting <setting> (not all settings can be unset).
537 \begin_layout Subsubsection
538 get-setting <setting>
541 \begin_layout Standard
542 Read value of setting <setting>
545 \begin_layout Subsubsection
549 \begin_layout Standard
550 Print names and values of all settings.
553 \begin_layout Subsection
557 \begin_layout Standard
558 Keybindings bind commands or aliases to keys (or pseudo-keys).
562 \begin_layout Standard
566 \begin_layout Itemize
567 Do not bind edge active (+/-) commands to keys with modifiers, that won't
571 \begin_layout Itemize
572 Names of keys and modifiers are platform-dependent.
575 \begin_layout Itemize
576 Be careful before binding pseudo-keys (such as joystick axes, buttons or
577 hats) with modifiers.
578 That may or may not work right.
581 \begin_layout Subsubsection
582 bind-key [<mod>/<modmask>] <key> <command>
585 \begin_layout Standard
586 Bind <command> to key <key> (activating if modifiers in <modmask> (comma-seperat
587 ed list) are set as <mod> (comma-seperated list).
590 \begin_layout Standard
591 The names of keys and modifiers are platform-dependent.
594 \begin_layout Subsubsection
595 unbind-key [<mod>/<modmask>] <key>
598 \begin_layout Standard
599 Unbind command from <key> (with specified <mod> and <modmask>).
602 \begin_layout Subsubsection
603 set-axis <axis> [disabled | axis | axis-inverse | pressure0- | pressure0+
604 | pressure-0 | pressure-+ | pressure+0 | pressure+-] [minus=<val>] [zero=<val>]
605 [plus=<val>] [tolerance=<val>]
608 \begin_layout Standard
609 Set axis parameters for axis <axis>.
612 \begin_layout Itemize
613 disabled: Disable axis
616 \begin_layout Itemize
620 \begin_layout Itemize
621 axis-inverse: Inverse axis
624 \begin_layout Itemize
625 pressure0-: Pressure sensitive.
626 Released at 0, pressed at -.
629 \begin_layout Itemize
630 pressure0+: Pressure sensitive.
631 Released at 0, pressed at +.
634 \begin_layout Itemize
635 pressure-0: Pressure sensitive.
636 Released at -, pressed at 0.
639 \begin_layout Itemize
640 pressure-+: Pressure sensitive.
641 Released at -, pressed at +.
644 \begin_layout Itemize
645 pressure+0: Pressure sensitive.
646 Released at +, pressed at 0.
649 \begin_layout Itemize
650 pressure+-: Pressure sensitive.
651 Released at +, pressed at -.
654 \begin_layout Itemize
655 minus=<val>: Calibration at extreme minus position (-32768-32767)
658 \begin_layout Itemize
659 zero=<val>: Calibration at neutral position (-32768-32767)
662 \begin_layout Itemize
663 plus=<val>: Calibration at extreme plus position (-32768-32767)
666 \begin_layout Itemize
667 tolerance=<value>: Center band tolerance (0<x<1).
668 The smaller the value, the more sensitive the control is.
671 \begin_layout Subsubsection
675 \begin_layout Standard
676 Print all key bindings in effect.
679 \begin_layout Subsection
683 \begin_layout Standard
684 Aliases bind command to sequence of commands.
685 After alias has been defined, it replaces the command it shadows.
688 \begin_layout Standard
692 \begin_layout Itemize
693 You can't alias command to itself.
696 \begin_layout Itemize
697 Aliases starting with +/- are edge active just like ordinary commands starting
701 \begin_layout Itemize
702 One command can be aliased to multiple commands.
705 \begin_layout Subsubsection
706 alias-command <command> <expansion>
709 \begin_layout Standard
710 Append <expansion> to alias <command>.
711 If alias does not already exist, it is created.
714 \begin_layout Subsubsection
715 unalias-command <command>
718 \begin_layout Standard
719 Clear alias expansion for <command>.
722 \begin_layout Subsubsection
726 \begin_layout Standard
727 Print all aliases and their expansions in effect.
730 \begin_layout Subsection
734 \begin_layout Standard
735 Run <script> as if commands were entered on the command line.
738 \begin_layout Subsection
742 \begin_layout Standard
743 Following commands control video dumping:
746 \begin_layout Subsubsection
747 start-dump <dumper> [<mode>] <prefix/filename>
750 \begin_layout Standard
751 Start dumping using dumper <dumper>.
752 If mode is present or not and if prefix or filename is present depends
753 on the dumper and dumper mode.
756 \begin_layout Standard
757 The following dumpers are available:
760 \begin_layout Itemize
761 INTERNAL-AVI-CSCD: Internal CSCD in .avi dumper.
765 \begin_layout Itemize
766 Mode: uncompressed/pcm: Uncompressed video, PCM audio.
770 \begin_layout Itemize
771 Mode: cscd/pcm: CSCD video, PCM audio.
776 \begin_layout Itemize
777 INTERNAL-JMD: Internal .jmd dumper.
781 \begin_layout Itemize
785 \begin_layout Itemize
790 \begin_layout Itemize
791 INTERNAL-RAW: Internal RAW dumper.
795 \begin_layout Itemize
799 \begin_layout Itemize
803 \begin_layout Itemize
804 Sound is big-endian signed 16-bit, usually at 32040.5Hz.
807 \begin_layout Itemize
808 Video is always upscaled to double resolution (512x448 / 512 x 478).
811 \begin_layout Itemize
812 Video framerate is usually 322445/6448 fps for PAL and 10738636/178683 fps
817 \begin_layout Itemize
818 INTERNAL-SDMP: Internal SDMP dumper.
822 \begin_layout Itemize
823 Mode 'ms': Multi-segment.
827 \begin_layout Itemize
828 Mode 'ss': Single-segment.
833 \begin_layout Subsubsection
837 \begin_layout Standard
838 End dumping using <dumper>
841 \begin_layout Subsubsection
842 show-dumpers [<dumper>]
845 \begin_layout Standard
846 Show the list of dumpers or list of modes for <dumper>
849 \begin_layout Subsection
853 \begin_layout Standard
854 <address> may be decimal or hexadecimal (prefixed with '0x').
855 <value> can be hexadecimal (prefixed with '0x'), unsigned or signed (prefixed
859 \begin_layout Standard
860 The available element <sizes> are:
863 \begin_layout Itemize
867 \begin_layout Itemize
871 \begin_layout Itemize
875 \begin_layout Itemize
879 \begin_layout Standard
880 When reading RAM and ROM, multi-byte reads/writes are big-endian.
881 When dealing with DSP memory, multi-byte reads/writes are native-endian
882 (do not use operand sizes exceeding DSP bitness, except dword is OK for
886 \begin_layout Subsubsection
887 read-<size> <address>
890 \begin_layout Standard
891 Read the value of byte in <address>.
894 \begin_layout Subsubsection
895 read-s<size> <address>
898 \begin_layout Standard
899 Read the value of signed byte in <address>.
902 \begin_layout Subsubsection
903 write-<size> <address> <value>
906 \begin_layout Standard
907 Write <value> to byte in address <address>.
910 \begin_layout Subsubsection
914 \begin_layout Standard
915 Reset the memory search
918 \begin_layout Subsubsection
922 \begin_layout Standard
923 Print number of candidates remaining
926 \begin_layout Subsubsection
930 \begin_layout Standard
931 Print all candidates remaining
934 \begin_layout Subsubsection
935 search-memory <usflag><sizeflag><op>
938 \begin_layout Standard
939 Searches memory for addresses satisfying criteria.
942 \begin_layout Standard
946 \begin_layout Itemize
950 \begin_layout Itemize
954 \begin_layout Standard
958 \begin_layout Itemize
962 \begin_layout Itemize
966 \begin_layout Itemize
970 \begin_layout Itemize
974 \begin_layout Standard
978 \begin_layout Itemize
979 lt: < previous value.
982 \begin_layout Itemize
983 le: <= previous value.
986 \begin_layout Itemize
987 eq: = previous value.
990 \begin_layout Itemize
991 ne: != previous value.
994 \begin_layout Itemize
995 ge: >= previous value.
998 \begin_layout Itemize
999 gt: > previous value.
1002 \begin_layout Subsubsection
1003 search-memory <sizeflag> <value>
1006 \begin_layout Standard
1007 Searches for addresses that currently have value <value>.
1008 <sizeflag> is as in previous command.
1011 \begin_layout Subsection
1015 \begin_layout Standard
1016 These commands are not available in lsnesrc, but are available after ROM
1020 \begin_layout Subsubsection
1024 \begin_layout Standard
1025 Quits the emulator (asking for confirmation).
1026 If /y is given, no confirmation is asked.
1029 \begin_layout Subsubsection
1033 \begin_layout Standard
1034 Toggle paused/unpaused
1037 \begin_layout Subsubsection
1041 \begin_layout Standard
1043 If the button is still held after configurable timeout expires, game unpauses
1044 for the duration frame advance is held.
1047 \begin_layout Subsubsection
1051 \begin_layout Standard
1053 If the button is still held after configurable timeout expires, game unpauses
1054 for the duration frame advance is held.
1057 \begin_layout Subsubsection
1061 \begin_layout Standard
1062 Skip to first poll in frame after current.
1065 \begin_layout Subsubsection
1069 \begin_layout Standard
1070 Reset the SNES after this frame.
1073 \begin_layout Subsubsection
1077 \begin_layout Standard
1078 Load savestate <filename> in current mode.
1081 \begin_layout Subsubsection
1082 load-state <filename>
1085 \begin_layout Standard
1086 Load savestate <filename> in readwrite mode.
1089 \begin_layout Subsubsection
1090 load-readonly <filename>
1093 \begin_layout Standard
1094 Load savestate <filename> in readonly mode.
1097 \begin_layout Subsubsection
1098 load-preserve <filename>
1101 \begin_layout Standard
1102 Load savestate <filename> in readonly mode, preserving current events.
1105 \begin_layout Subsubsection
1106 load-movie <filename>
1109 \begin_layout Standard
1110 Load savestate <filename>, ignoring save part in readonly mode.
1113 \begin_layout Subsubsection
1114 save-state <filename>
1117 \begin_layout Standard
1118 Save system state to <filename> as soon as possible.
1121 \begin_layout Subsubsection
1122 save-movie <filename>
1125 \begin_layout Standard
1126 Save movie to <filename>.
1129 \begin_layout Subsubsection
1133 \begin_layout Standard
1134 Set read-write mode.
1137 \begin_layout Subsubsection
1141 \begin_layout Standard
1145 \begin_layout Subsubsection
1149 \begin_layout Standard
1150 Toggle between read-only and read-write modes.
1153 \begin_layout Subsubsection
1157 \begin_layout Standard
1158 Set name of the game to <name>
1161 \begin_layout Subsubsection
1165 \begin_layout Standard
1166 Print the name of the game.
1169 \begin_layout Subsubsection
1173 \begin_layout Standard
1174 Adds new author <author>.
1175 If <author> does not contain '|' it is full name.
1176 If it contains '|', '|' splits the full name and nickname.
1179 \begin_layout Subsubsection
1180 edit-author <num> <author>
1183 \begin_layout Standard
1184 Edit the author in slot <num> (0-based) to be <author> (see add-author for
1188 \begin_layout Subsubsection
1192 \begin_layout Standard
1193 Remove author in slot <num>
1196 \begin_layout Subsubsection
1200 \begin_layout Standard
1204 \begin_layout Subsubsection
1205 test-1, test-2, test-3
1208 \begin_layout Standard
1209 Internal test commands.
1213 \begin_layout Subsubsection
1214 take-screenshot <filename>
1217 \begin_layout Standard
1218 Save screenshot to <filename>.
1221 \begin_layout Subsubsection
1222 +controller<num><button>
1225 \begin_layout Standard
1226 Press button <button> on controller <num> (1-8).
1227 The following button names are known:
1230 \begin_layout Itemize
1234 \begin_layout Itemize
1238 \begin_layout Itemize
1242 \begin_layout Itemize
1246 \begin_layout Itemize
1250 \begin_layout Itemize
1254 \begin_layout Itemize
1258 \begin_layout Itemize
1262 \begin_layout Itemize
1266 \begin_layout Itemize
1270 \begin_layout Itemize
1274 \begin_layout Itemize
1278 \begin_layout Itemize
1282 \begin_layout Itemize
1286 \begin_layout Itemize
1290 \begin_layout Itemize
1294 \begin_layout Subsubsection
1295 controllerh<num><button>
1298 \begin_layout Standard
1299 Hold/unhold button <button> on controller <num> (1-8).
1300 See +controller for button names.
1303 \begin_layout Subsubsection
1304 controllerf<num><button>
1307 \begin_layout Standard
1308 Hold/unhold button <button> on controller <num> (1-8) for the next frame.
1309 See +controller for button names.
1312 \begin_layout Standard
1313 Cauntion: Does not work properly if outside frame advance.
1316 \begin_layout Subsubsection
1317 autofire (<pattern>|-)...
1320 \begin_layout Standard
1321 Set autofire pattern.
1322 Each parameter is comma-separated list of button names (in form of 1start,
1323 1A, 2B, etc..) to hold on that frame.
1324 After reaching the end of pattern, the pattern restarts from the beginning.
1327 \begin_layout Subsubsection
1331 \begin_layout Standard
1335 \begin_layout Subsection
1339 \begin_layout Subsubsection
1340 cycle-jukebox-backward
1343 \begin_layout Standard
1344 Cycle save jukebox backwards.
1347 \begin_layout Subsubsection
1348 cycle-jukebox-forward
1351 \begin_layout Standard
1352 Cycle save jukebox forwards
1355 \begin_layout Subsubsection
1359 \begin_layout Standard
1360 Do load from jukebox (current mode).
1363 \begin_layout Subsubsection
1367 \begin_layout Standard
1368 Do state save to jukebox.
1371 \begin_layout Subsection
1375 \begin_layout Standard
1376 Only available if lua support is compiled in.
1379 \begin_layout Subsubsection
1380 evaluate-lua <luacode>
1383 \begin_layout Standard
1384 Run Lua code <luacode> using built-in Lua interpretter.
1387 \begin_layout Subsubsection
1391 \begin_layout Standard
1392 Synonym for evaluate-lua.
1395 \begin_layout Subsubsection
1399 \begin_layout Standard
1400 Run specified lua file using built-in Lua interpretter.
1403 \begin_layout Subsubsection
1407 \begin_layout Standard
1408 Clear the Lua VM state and restore to factory defaults.
1411 \begin_layout Subsection
1415 \begin_layout Subsubsection
1416 add-watch <name> <expression>
1419 \begin_layout Standard
1420 Adds new watch (or modifies old one).
1423 \begin_layout Subsubsection
1427 \begin_layout Standard
1431 \begin_layout Subsection
1435 \begin_layout Subsubsection
1436 enable-sound <on/off>
1439 \begin_layout Standard
1440 Enable/Disable sound.
1443 \begin_layout Subsubsection
1444 set-sound-device <device>
1447 \begin_layout Standard
1448 Set sound device to <device>
1451 \begin_layout Subsubsection
1455 \begin_layout Standard
1456 Show status of sound system.
1459 \begin_layout Subsubsection
1463 \begin_layout Standard
1464 Show all available devices.
1467 \begin_layout Subsubsection
1468 set-volume <multiplier>
1471 \begin_layout Standard
1472 Set the volume multiplier to <multiplier>.
1473 1 is normal volume, and higher numbers are louder.
1476 \begin_layout Subsubsection
1477 set-volume <multiplier>%
1480 \begin_layout Standard
1481 Set the volume multiplier to <multiplier> percent.
1482 100 is normal volume, and higher numbers are louder.
1485 \begin_layout Subsubsection
1486 set-volume <multiplier>dB
1489 \begin_layout Standard
1490 Set the volume multiplier to <multiplier> dB.
1491 0 is normal volume, and higher numbers are louder.
1492 The value may be negative.
1495 \begin_layout Subsection
1499 \begin_layout Subsubsection
1503 \begin_layout Standard
1504 Reloads the main ROM image from <file>.
1507 \begin_layout Subsubsection
1508 edit-subtitle <firstframe> <length> [<text>]
1511 \begin_layout Standard
1512 Edit or delete a subtitle.
1515 \begin_layout Subsubsection
1519 \begin_layout Standard
1523 \begin_layout Subsection
1527 \begin_layout Subsubsection
1531 \begin_layout Standard
1535 \begin_layout Subsubsection
1539 \begin_layout Standard
1543 \begin_layout Subsubsection
1547 \begin_layout Standard
1551 \begin_layout Subsubsection
1552 change-timebase <id> <newbase>
1555 \begin_layout Standard
1556 Change time base of <id> to <newbase>.
1557 The time base can be given as samples (integer) or second (postfix with
1561 \begin_layout Subsubsection
1562 import-stream-opus <timebase> <file>
1565 \begin_layout Standard
1566 Import opus stream from <file>, placing it at <timebase>.
1567 This operation is lossless.
1570 \begin_layout Subsubsection
1571 import-stream-pcm <timebase> <file>
1574 \begin_layout Standard
1575 Import PCM (.sox, 1ch@48kHz) stream from <file>, placing it at <timebase>.
1578 \begin_layout Subsubsection
1579 export-stream-opus <id> <file>
1582 \begin_layout Standard
1583 Export stream <id> as opus stream to <file>.
1584 This operation is lossless.
1587 \begin_layout Subsubsection
1588 export-stream-pcm <id> <file>
1591 \begin_layout Standard
1592 Export stream <id> as PCM (.sox) stream to <file>.
1596 \begin_layout Subsubsection
1597 export-superstream <file>
1600 \begin_layout Standard
1601 Export the entiere superstream as PCM (.sox) stream to <file>.
1604 \begin_layout Subsubsection
1605 load-collection <file>
1608 \begin_layout Standard
1609 Load collection (if there is existing collection, unload it) from <file>
1612 \begin_layout Subsubsection
1616 \begin_layout Standard
1620 \begin_layout Subsubsection
1624 \begin_layout Standard
1625 Tangent for recording voice for commentary track.
1626 While pressed, record a stream.
1629 \begin_layout Subsection
1630 SDL Platform commands
1633 \begin_layout Standard
1634 The following are valid on SDL platform.
1637 \begin_layout Subsubsection
1641 \begin_layout Standard
1642 Asks to press a key and then identifies that (pseudo-)key.
1645 \begin_layout Subsubsection
1649 \begin_layout Standard
1650 Toggle between windowed/fullscreen console.
1653 \begin_layout Subsubsection
1657 \begin_layout Standard
1658 Scroll messages window as far back as it goes.
1661 \begin_layout Subsubsection
1665 \begin_layout Standard
1666 Scroll messages window as far forward as it goes.
1669 \begin_layout Subsubsection
1673 \begin_layout Standard
1674 Scroll messages window back one screenful.
1677 \begin_layout Subsubsection
1681 \begin_layout Standard
1682 Scroll messages window forward one screenful.
1685 \begin_layout Subsubsection
1686 prompt-command <command>
1689 \begin_layout Standard
1690 Enter command prompt, with prompt prepopulated with specified command.
1693 \begin_layout Section
1697 \begin_layout Subsection
1701 \begin_layout Subsubsection
1705 \begin_layout Standard
1706 Set where bsnes looks for firmware files.
1708 \begin_inset Quotes eld
1712 \begin_inset Quotes erd
1718 \begin_layout Subsubsection
1722 \begin_layout Standard
1724 Numeric, range is 0.001 to
1725 \begin_inset Quotes eld
1729 \begin_inset Quotes erd
1733 Default is native framerate.
1736 \begin_layout Subsubsection
1740 \begin_layout Standard
1741 Set save compression level (integer 0-9).
1742 Default is 7 (0 is no compression).
1745 \begin_layout Subsubsection
1749 \begin_layout Standard
1750 Set the frame advance timeout in milliseconds.
1751 Numeric integer, range is 0-999999999.
1755 \begin_layout Subsubsection
1756 advance-subframe-timeout
1759 \begin_layout Standard
1760 Subframe advance timeout in milliseconds.
1764 \begin_layout Subsubsection
1765 save-every-frame (bsnes only)
1768 \begin_layout Standard
1769 If true, simulate saving on each frame.
1770 Trades off emulation accuracy for sync stability.
1771 Also needed if the movie assumes saving on each frame for rewind.
1774 \begin_layout Subsection
1778 \begin_layout Subsubsection
1782 \begin_layout Standard
1783 AVI dumper: Always dump at 512x448 or 512x478 regardless of what the console
1787 \begin_layout Subsubsection
1791 \begin_layout Standard
1792 AVI dumper: Set the default left border thickness (unless lua overrides)
1798 \begin_layout Subsubsection
1802 \begin_layout Standard
1803 AVI dumper: Set the default right border thickness (unless lua overrides)
1809 \begin_layout Subsubsection
1813 \begin_layout Standard
1814 AVI dumper: Set the default top border thickness (unless lua overrides)
1820 \begin_layout Subsubsection
1824 \begin_layout Standard
1825 AVI dumper: Set the default bottom border thickness (unless lua overrides)
1831 \begin_layout Subsubsection
1835 \begin_layout Standard
1836 AVI dumper: Maximum number of frames per dump segment (0 => unlimited).
1841 \begin_layout Subsubsection
1845 \begin_layout Standard
1846 AVI dumper: Compression level (0-18).
1849 \begin_layout Itemize
1850 Compression levels 10 and above are not compatible with stock CSCD codec.
1853 \begin_layout Itemize
1854 Recomended level is 7.
1857 \begin_layout Subsubsection
1861 \begin_layout Standard
1862 AVI dumper: Set method of determining the sound rate.
1865 \begin_layout Itemize
1866 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48, 64, 88.2, 96,
1867 128, 176.4 and 192 kHz.
1870 \begin_layout Itemize
1871 1: Round down to nearest integer.
1874 \begin_layout Itemize
1875 2: Round up to nearest ingeter.
1878 \begin_layout Subsection
1882 \begin_layout Subsubsection
1886 \begin_layout Standard
1887 JMD dumper: Compression level (0-9).
1890 \begin_layout Subsection
1891 SDL platform settings
1894 \begin_layout Subsubsection
1895 autorepeat-first-delay
1898 \begin_layout Standard
1899 Sets the delay for first character in typematic autorepeat.
1902 \begin_layout Subsubsection
1903 autorepeat-subsequent-delay
1906 \begin_layout Standard
1907 Sets the delay for subsequent characters in typematic autorepeat.
1910 \begin_layout Section
1914 \begin_layout Subsection
1915 Core (in main table)
1918 \begin_layout Subsubsection
1922 \begin_layout Standard
1923 Print line to message console.
1926 \begin_layout Subsubsection
1930 \begin_layout Standard
1931 Convert arbitrary lua value into a string (using same conversions as print)
1932 and return the result.
1935 \begin_layout Subsubsection
1936 exec(string command)
1939 \begin_layout Standard
1940 Run command as it was entered on the command line
1943 \begin_layout Subsubsection
1947 \begin_layout Standard
1949 First is time since some epoch in seconds, the second is microseconds mod
1950 10^6 since that epoch.
1953 \begin_layout Subsubsection
1957 \begin_layout Standard
1958 Returns true if emulator has finished booting, false if not (on_startup()
1959 will be issued later).
1962 \begin_layout Subsubsection
1963 set_idle_timeout(number timeout)
1966 \begin_layout Standard
1967 Set number of microseconds to block idle for.
1968 After this timeout has expired, on_idle() will be called once.
1971 \begin_layout Subsubsection
1972 set_timer_timeout(number timeout)
1975 \begin_layout Standard
1976 Set number of microseconds to block timer for.
1977 After this timeout has expired, on_timer() will be called once.
1980 \begin_layout Subsubsection
1981 bus_address(number snesaddr)
1984 \begin_layout Standard
1985 Returns virtual address corresponding to specified address on SNES bus.
1988 \begin_layout Subsubsection
1989 loopwrapper(function fun, ...)
1992 \begin_layout Standard
1993 Calls function fun with function and specified arguments.
1994 The function passed suspends execution until the function returned is called.
1995 Handy for linear flow control among multiple invocations of a hook.
1999 \begin_layout LyX-Code
2000 on_paint = loopwrapper(function(wait)
2004 \begin_layout LyX-Code
2009 \begin_layout LyX-Code
2011 \begin_inset Quotes eld
2015 \begin_inset Quotes erd
2021 \begin_layout LyX-Code
2026 \begin_layout LyX-Code
2031 \begin_layout LyX-Code
2035 \begin_layout Subsubsection
2036 list_bindings([string cmd])
2039 \begin_layout Standard
2040 Get table of all keybindings, indexed by keyspec (modifiers|mask/key).
2041 If command is specified, the table is limited to that command.
2044 \begin_layout Subsubsection
2045 get_alias(string aname)
2048 \begin_layout Standard
2049 Get expansion of given alias.
2052 \begin_layout Subsubsection
2053 set_alias(string aname, string value)
2056 \begin_layout Standard
2057 Set expansion of given alias.
2060 \begin_layout Subsubsection
2061 create_ibind(string name, string cmd)
2064 \begin_layout Standard
2065 Return object representing inverse binding with specified name and specified
2069 \begin_layout Itemize
2070 To create press/release commands, use aliases +foo and -foo .
2073 \begin_layout Itemize
2074 Keep the returned object around.
2077 \begin_layout Subsection
2081 \begin_layout Standard
2082 Bitwise logical functions and related.
2085 \begin_layout Subsubsection
2086 bit.none(number...) / bit.bnot(number...)
2089 \begin_layout Standard
2090 48-bit bitwise NOT / NONE function (set bits that are set in none of the
2094 \begin_layout Subsubsection
2095 bit.any(number...) / bit.bor(number...)
2098 \begin_layout Standard
2099 48-bit bitwise OR / ANY function (set bits that are set in any of the arguments).
2102 \begin_layout Subsubsection
2103 bit.all(number...) / bit.band(number...)
2106 \begin_layout Standard
2107 48-bit bitwise AND / ALL function (set bits that are set in all of the arguments
2111 \begin_layout Subsubsection
2112 bit.parity(number...) / bit.bxor(number...)
2115 \begin_layout Standard
2116 48-bit bitwise XOR / PARITY function (set bits that are set in odd number
2120 \begin_layout Subsubsection
2121 bit.lrotate(number base[, number amount[, number bits]])
2124 \begin_layout Standard
2125 Rotate bits-bit (max 48, default 48) number left by amount (default 1) places.
2128 \begin_layout Subsubsection
2129 bit.rrotate(number base[, number amount[, number bits]])
2132 \begin_layout Standard
2133 Rotate bits-bit (max 48, default 48) number right by amount (default 1)
2137 \begin_layout Subsubsection
2138 bit.lshift(number base[, number amount[, number bits]])
2141 \begin_layout Standard
2142 Shift bits-bit (max 48, default 48) number left by amount (default 1) places.
2143 The new bits are filled with zeroes.
2146 \begin_layout Subsubsection
2147 bit.lrshift(number base[, number amount[, number bits]])
2150 \begin_layout Standard
2151 Shift bits-bit (max 48, default 48) number logically right by amount (default
2153 The new bits are filled with zeroes.
2156 \begin_layout Subsubsection
2157 bit.arshift(number base[, number amount[, number bits]])
2160 \begin_layout Standard
2161 Shift bits-bit (max 48, default 48) number arithmetically right by amount
2163 The new bits are shifted in with copy of the high bit.
2166 \begin_layout Subsubsection
2167 bit.extract(number base[, number bit0[, number bit1,...]])
2170 \begin_layout Standard
2171 Returns number that has bit0-th bit as bit 0, bit1-th bit as 1 and so on.
2174 \begin_layout Standard
2178 \begin_layout Itemize
2179 Bit numbers up to 51 should work reliably (then things start falling apart
2180 due to double precision issues).
2183 \begin_layout Itemize
2184 There are two special bit positions, true and false, standing for always
2185 set bit and always clear bit.
2188 \begin_layout Subsubsection
2189 bit.value([number bit1[, number bit2,...]])
2192 \begin_layout Standard
2193 Returns bitwise OR of 1 left shifted by bit1 places, 1 left shifted by bit2
2195 As special value, nil argument is no-op.
2198 \begin_layout Subsubsection
2199 bit.test_any(number a, number b)
2202 \begin_layout Standard
2203 Is there a common set bit in a and b?
2206 \begin_layout Subsubsection
2207 bit.test_all(number a, number b)
2210 \begin_layout Standard
2211 Are all set bits in b also set in a?
2214 \begin_layout Subsubsection
2215 bit.popcount(number a)
2218 \begin_layout Standard
2219 Population count of a.
2222 \begin_layout Subsubsection
2223 bit.clshift(number a, number b, [number amount,[number bits]])
2226 \begin_layout Standard
2227 Does chained left shift on a, b by amount positions, assuming numbers to
2228 be of specified number of bits.
2231 \begin_layout Subsubsection
2232 bit.crshift(number a, number b, [number amount,[number bits]])
2235 \begin_layout Standard
2236 Does chained right shift on a, b by amount positions, assuming numbers to
2237 be of specified number of bits.
2240 \begin_layout Subsubsection
2241 bit.flagdecode(number a, number bits, [string on, [string off]])
2244 \begin_layout Standard
2245 Return string of length bits where ith character is ith character of on
2246 if bit i is on, otherwise ith character of off.
2247 Out of range reads give last character, or '*'/'-' if empty.
2250 \begin_layout Subsubsection
2251 bit.rflagdecode(number a, number bits, [string on, [string off]])
2254 \begin_layout Standard
2255 Like bit.flagdecode, but outputs the string in the opposite order (most significa
2259 \begin_layout Subsection
2263 \begin_layout Standard
2264 Most of these functions can only be called in on_paint and on_video callbacks.
2265 Exceptions are noted.
2268 \begin_layout Standard
2270 Bits 0-7 are the blue component, bits 8-15 are the green component, bits
2271 16-23 are the red component, bits 24-31 are alpha component (0 is fully
2272 opaque, 255 is almost transparent).
2273 -1 is the fully transparent color.
2274 Alpha values greater than 127 do work.
2277 \begin_layout Standard
2278 Origin of coordinates is at top left corner of game display area.
2279 Left and top gaps correspond to negative coordinates.
2282 \begin_layout Subsubsection
2286 \begin_layout Standard
2287 Returns 2-tuple (hresolution, vresolution).
2290 \begin_layout Subsubsection
2291 gui.<class>_gap(number gap)
2294 \begin_layout Standard
2295 Set the <class> (left, right, top, bottom) gap to specified value (max gap
2297 If successful, old gap is returned.
2300 \begin_layout Subsubsection
2301 gui.delta_<class>_gap(number gap)
2304 \begin_layout Standard
2305 Increase the <class> (left, right, top, bottom) gap by specified value (max
2306 gap is 8191) and return the old gap (returns nothing on error).
2309 \begin_layout Subsubsection
2310 gui.text(number x, number y, string text[, number fgc[, number bgc]])
2313 \begin_layout Standard
2314 Draw specified text on the GUI (each character cell is 8 or 16 wide and
2319 \begin_layout Itemize
2320 x: X-coordinate to start the drawing from (and x-coordinate at begining
2324 \begin_layout Itemize
2325 y: Y-coordinate to start the drawing from.
2328 \begin_layout Itemize
2329 text: The text to draw.
2332 \begin_layout Itemize
2333 fgc: Text color (default is 0xFFFFFF (white))
2336 \begin_layout Itemize
2337 bgc: Background color (default is -1 (transparent))
2340 \begin_layout Subsubsection
2341 gui.textH(number x, number y, string text[, number fgc[, number bgc]])
2344 \begin_layout Standard
2345 Like gui.text, but draw using double-width.
2348 \begin_layout Subsubsection
2349 gui.textV(number x, number y, string text[, number fgc[, number bgc]])
2352 \begin_layout Standard
2353 Like gui.text, but draw using double-height.
2356 \begin_layout Subsubsection
2357 gui.textHV(number x, number y, string text[, number fgc[, number bgc]])
2360 \begin_layout Standard
2361 Like gui.text, but draw using double-width/double-height.
2364 \begin_layout Subsubsection
2365 gui.rectangle(number x, number y, number width, number height[, number thickness[
2366 , number outline[, number fill]]])
2369 \begin_layout Standard
2370 Draw rectangle on the GUI.
2374 \begin_layout Itemize
2375 x: X-coordinate of left edge.
2378 \begin_layout Itemize
2379 y: Y-coordinate of upper edge.
2382 \begin_layout Itemize
2383 width: Width of rectangle.
2386 \begin_layout Itemize
2387 height: Height of rectangle.
2390 \begin_layout Itemize
2391 thickness: Thickness of outline (default is 1).
2394 \begin_layout Itemize
2395 outline: Color of outline (default is 0xFFFFFF (white))
2398 \begin_layout Itemize
2399 fill: Color of fill (default is -1 (transparent))
2402 \begin_layout Subsubsection
2403 gui.box(number x, number y, number width, number height[, number thickness[,
2404 number outline1[,number outline2[, number fill]]]])
2407 \begin_layout Standard
2408 Draw rectangle with 3D effect on the GUI.
2412 \begin_layout Itemize
2413 x: X-coordinate of left edge.
2416 \begin_layout Itemize
2417 y: Y-coordinate of upper edge.
2420 \begin_layout Itemize
2421 width: Width of rectangle.
2424 \begin_layout Itemize
2425 height: Height of rectangle.
2428 \begin_layout Itemize
2429 thickness: Thickness of outline (default is 1).
2432 \begin_layout Itemize
2433 outline1: First color of outline (default is 0xFFFFFF (white))
2436 \begin_layout Itemize
2437 outline2: First color of outline (default is 0x808080 (dark gray))
2440 \begin_layout Itemize
2441 fill: Color of fill (default is 0xC0C0C0 (light grayy))
2444 \begin_layout Subsubsection
2445 gui.pixel(number x, number y[, number color])
2448 \begin_layout Standard
2449 Draw one pixel on the GUI.
2453 \begin_layout Itemize
2454 x: X-coordinate of the pixel
2457 \begin_layout Itemize
2458 y: Y-coordinate of the pixel
2461 \begin_layout Itemize
2462 color: Color of the pixel (default is 0xFFFFFF (white))
2465 \begin_layout Subsubsection
2466 gui.crosshair(number x, number y[, number length[, number color]])
2469 \begin_layout Standard
2474 \begin_layout Itemize
2475 x: X-coordinate of the crosshair
2478 \begin_layout Itemize
2479 y: Y-coordinate of the crosshair
2482 \begin_layout Itemize
2483 length: Length of the crosshair lines (default 10).
2486 \begin_layout Itemize
2487 color: Color of the crosshair (default is 0xFFFFFF (white))
2490 \begin_layout Subsubsection
2491 gui.line(number x1, number y1, number x2, number y2[, number color])
2494 \begin_layout Standard
2499 \begin_layout Itemize
2500 x1: X-coordinate of one end.
2503 \begin_layout Itemize
2504 y1: Y-coordinate of one end.
2507 \begin_layout Itemize
2508 x2: X-coordinate of the other end.
2511 \begin_layout Itemize
2512 y2: Y-coordinate of the other end.
2515 \begin_layout Itemize
2516 color: Color of the line (default is 0xFFFFFF (white)).
2519 \begin_layout Subsubsection
2520 gui.circle(number x, number y, number r[, number thick[, number border[,
2524 \begin_layout Standard
2529 \begin_layout Itemize
2530 x: X-coordinate of the center
2533 \begin_layout Itemize
2534 y: Y-coordinate of the center
2537 \begin_layout Itemize
2538 r: The radius of the circle
2541 \begin_layout Itemize
2542 thick: Border thickness
2545 \begin_layout Itemize
2546 border: Border color (default is 0xFFFFFF (white))
2549 \begin_layout Itemize
2550 fill: Fill color (default is -1 (transparent)).
2553 \begin_layout Subsubsection
2554 gui.bitmap_draw(number x, number y, bitmap bitmap, palette palette)
2557 \begin_layout Standard
2558 Draw a bitmap on screen with specified palette.
2562 \begin_layout Itemize
2563 x: X-coordinate of left edge.
2566 \begin_layout Itemize
2567 y: Y-coordinate of top edge.
2570 \begin_layout Itemize
2571 bitmap: The bitmap to draw
2574 \begin_layout Itemize
2575 palette: The palette to draw the bitmap using.
2578 \begin_layout Subsubsection
2579 gui.bitmap_draw(number x, number y, dbitmap bitmap)
2582 \begin_layout Standard
2583 Draw a bitmap on screen.
2587 \begin_layout Itemize
2588 x: X-coordinate of left edge.
2591 \begin_layout Itemize
2592 y: Y-coordinate of top edge.
2595 \begin_layout Itemize
2596 bitmap: The bitmap to draw
2599 \begin_layout Subsubsection
2603 \begin_layout Standard
2604 Returns a new palette (initially all transparent).
2605 Can be used anywhere.
2608 \begin_layout Subsubsection
2609 gui.bitmap_new(number w, number h, boolean direct[, bool icolor])
2612 \begin_layout Standard
2613 Returns a new bitmap/dbitmap.
2614 Can be used anywhere.
2618 \begin_layout Itemize
2619 w: The width of new bitmap
2622 \begin_layout Itemize
2623 h: The height of new bitmap
2626 \begin_layout Itemize
2627 direct: If true, the returned bitmap is dbitmap, otherwise bitmap.
2630 \begin_layout Itemize
2631 icolor: Initital fill color (defaults to 0 on BITMAP, -1 on DBITMAP)
2634 \begin_layout Subsubsection
2635 gui.bitmap_load(string file)
2638 \begin_layout Standard
2639 Returns loaded bitmap/dbitmap (if bitmap, the second return value is palette
2641 Can be used anywhere.
2645 \begin_layout Itemize
2646 file: The name of file to load.
2649 \begin_layout Subsubsection
2650 gui.palette_set(palette palette, number index, number color)
2653 \begin_layout Standard
2654 Sets color in palette.
2655 Can be used anywhere.
2659 \begin_layout Itemize
2660 palette: The palette to manipulate
2663 \begin_layout Itemize
2664 index: Index of color (0-65535).
2667 \begin_layout Itemize
2668 color: The color value.
2671 \begin_layout Subsubsection
2672 gui.bitmap_pset(bitmap/dbitmap bitmap, number x, number y, number color)
2675 \begin_layout Standard
2676 Sets specified pixel in bitmap.
2677 Can be used anywhere.
2681 \begin_layout Itemize
2682 bitmap: The bitmap to manipulate
2685 \begin_layout Itemize
2686 x: The x-coordinate of the pixel.
2689 \begin_layout Itemize
2690 y: The y-coordinate of the pixel.
2693 \begin_layout Itemize
2694 color: If bitmap is a bitmap, color index (0-65535).
2695 Otherwise color value.
2698 \begin_layout Subsubsection
2699 gui.bitmap_size(bitmap/dbitmap bitmap)
2702 \begin_layout Standard
2704 Can be used anywhere.
2708 \begin_layout Itemize
2709 bitmap: The bitmap to query.
2712 \begin_layout Standard
2713 The first return is the width, the second is the height.
2716 \begin_layout Subsubsection
2717 gui.bitmap_blit(bitmap/dbitmap dest, number dx, number dy, bitmap/dbitmap
2718 src, [palette pal, ]number sx, number sy, number w, number h[, number ck])
2721 \begin_layout Standard
2722 Blit a part of bitmap to another.
2723 Can be used anywhere.
2727 \begin_layout Itemize
2728 dest: Destination to blit to.
2731 \begin_layout Itemize
2732 dx: left edge of target
2735 \begin_layout Itemize
2736 dy: Top edge of target
2739 \begin_layout Itemize
2740 src: The source to blit from.
2741 If destination is paletted, must be paletted.
2744 \begin_layout Itemize
2748 Only present if src is paletted, but dest is not.
2751 \begin_layout Itemize
2752 sx: left edge of source
2755 \begin_layout Itemize
2756 sy: Top edge of source
2759 \begin_layout Itemize
2763 \begin_layout Itemize
2764 h: Height of region.
2767 \begin_layout Itemize
2769 Pixels of this color are not blitted.
2773 \begin_layout Itemize
2774 If bitmaps are bitmaps, this is color index of colorkey.
2775 Values outside range 0-65535 cause no key to be used as colorkey.
2778 \begin_layout Itemize
2779 If bitmaps are dbitmaps, this color value of colorkey.
2782 \begin_layout Itemize
2783 May be absent or nil for no colorkey blit.
2787 \begin_layout Subsubsection
2788 gui.bitmap_load_png(string filename)
2791 \begin_layout Standard
2792 Load a bitmap from PNG file.
2796 \begin_layout Itemize
2797 filename: The name of file to load the bitmap frame.
2800 \begin_layout Standard
2804 \begin_layout Itemize
2805 If the PNG is of color type 3 (PALETTE), returns two value.
2806 First is BITMAP containing the image data from the PNG and second is PALETTE
2807 containg the palette data from the PNG.
2810 \begin_layout Itemize
2811 For color types 0 (GRAY), 2 (RGB), 4 (GRAY_ALPHA) and 6 (RGBA), returns
2812 one DBITMAP containg the image data loaded from the PNG.
2815 \begin_layout Subsubsection
2816 gui.bitmap_load_pal(string filename)
2819 \begin_layout Standard
2820 Load a palette from file.
2824 \begin_layout Itemize
2825 filename: The name of the file.
2828 \begin_layout Standard
2829 The kinds of lines supported
2832 \begin_layout Itemize
2833 Blank or just whitespace: Ignored
2836 \begin_layout Itemize
2837 First non-whitespace is '#': Ignored
2840 \begin_layout Itemize
2841 <r> <g> <b>: Fully opaque color with specified RGB values (0-255)
2844 \begin_layout Itemize
2845 <r> <g> <b> <a>: Color with specified RGB values (0-255) and specified alpha
2846 (0-256, 0 being fully transparent and 256 fully opaque).
2849 \begin_layout Itemize
2850 transparent: Fully transparent color
2853 \begin_layout Subsubsection
2854 gui.bitmap_load_str(string content)
2857 \begin_layout Standard
2858 Like gui.bitmap_load, but reads the specified string directly as content.
2861 \begin_layout Subsubsection
2862 gui.bitmap_load_png_str(string base64content)
2865 \begin_layout Standard
2866 Like gui.bitmap_load_png, but reads the specified string (as base64-encoded)
2867 directly as content.
2870 \begin_layout Subsubsection
2871 gui.bitmap_load_pal_str(string content)
2874 \begin_layout Standard
2875 Like gui.bitmap_load_pal, but reads the specified string directly as content.
2878 \begin_layout Subsubsection
2882 \begin_layout Standard
2883 Request on_repaint() to happen as soon as possible.
2884 Can be used anywhere.
2887 \begin_layout Subsubsection
2888 gui.subframe_update(boolean on)
2891 \begin_layout Standard
2892 Request subframe updates (calling on_paint() on subframes) to happen (on=true)
2893 or not happen (on=false).
2894 Can be used anywhere.
2897 \begin_layout Subsubsection
2898 gui.screenshot(string filename)
2901 \begin_layout Standard
2902 Write PNG screenshot of the current frame (no drawings) to specified file.
2903 Can be used anywhere.
2906 \begin_layout Subsubsection
2907 gui.color(number r, number g, number b[, number a])
2910 \begin_layout Standard
2911 Returns color (in notation Lua scripts use) corresponding to color (r,g,b),
2912 each component in scale 0-255.
2913 If a is specified, that is alpha (0 is fully transparent, 256(sic) is fully
2915 The default alpha is 256.
2918 \begin_layout Subsubsection
2919 gui.status(string name, string value)
2922 \begin_layout Standard
2924 \begin_inset Quotes eld
2928 \begin_inset Quotes erd
2931 to <value> in status area.
2932 Can be used anywhere.
2935 \begin_layout Subsubsection
2936 gui.rainbow(number step, number steps[, number color])
2939 \begin_layout Standard
2940 Perform hue rotation of color <color> (default bright red), by <step> steps.
2941 The number of steps per full rotation is given by absolute value of <steps>.
2944 \begin_layout Standard
2945 If <steps> is negative, the rotation will be counterclockwise.
2948 \begin_layout Subsubsection
2949 gui.screenshot(string filename)
2952 \begin_layout Standard
2953 Saves a screenshot into specified file.
2956 \begin_layout Subsubsection
2957 gui.loadfont(string filename)
2960 \begin_layout Standard
2961 Loads font from specified file (CUSTOMFONT object).
2964 \begin_layout Subsubsection
2965 CUSTOMFONT(number x, number y, string text[, number fgc[, number bgc[, number
2969 \begin_layout Standard
2970 Draw string with custom font to screen.
2971 The parameters are the same as in gui.text, except hlc is the halo color
2972 (default is no halo).
2976 \begin_layout Subsubsection
2977 gui.arrow(number x, number y, number length, number headwidth, number direction[,
2978 boolean fill[, number color[, number width[, number hthicknes]]]]
2981 \begin_layout Standard
2986 \begin_layout Itemize
2987 x: The x-coordinate of arrow tip.
2990 \begin_layout Itemize
2991 y: The y-coordinate of arrow tip.
2994 \begin_layout Itemize
2995 length: Length of arrow tail
2998 \begin_layout Itemize
2999 headwidth: Width of arrow head.
3003 \begin_layout Itemize
3004 direction: Direction of arrow.
3006 Each unit is 45 degree rotation counterclockwise.
3009 \begin_layout Itemize
3010 fill: If true, fill the arrow head (hthickness is ignored).
3011 Default is not to fill.
3014 \begin_layout Itemize
3015 color: Color of arrow (default white).
3018 \begin_layout Itemize
3019 width: Width of arrow tail.
3024 \begin_layout Itemize
3025 hthickness: Thickness of arrow head.
3026 Default is the same as tail width.
3029 \begin_layout Subsection
3033 \begin_layout Standard
3035 Only available in on_input callback.
3038 \begin_layout Subsubsection
3039 input.get(number controller, number index)
3042 \begin_layout Standard
3043 Read the specified index (0-11) from specified controller (0-7).
3047 \begin_layout Itemize
3048 Uses physical controller numbering.
3049 Gamepad in port 2 is controller 4, not 1!
3052 \begin_layout Subsubsection
3053 input.set(number controller, number index, number value)
3056 \begin_layout Standard
3057 Write the specified index (0-11) from specified controller (0-7), storing
3062 \begin_layout Itemize
3063 Uses physical controller numbering.
3064 Gamepad in port 2 is controller 4, not 1!
3067 \begin_layout Subsubsection
3068 input.get2(number port, number controller, number index)
3071 \begin_layout Standard
3072 Read the specified input tuple.
3075 \begin_layout Itemize
3076 Port 0 is system port.
3079 \begin_layout Subsubsection
3080 input.set2(number port, number controller, number index, number value)
3083 \begin_layout Standard
3084 Write the specified input tuple.
3087 \begin_layout Itemize
3088 Port 0 is system port.
3091 \begin_layout Subsubsection
3092 input.lcid_to_pcid2(number lcid)
3095 \begin_layout Standard
3096 Look up physical pcid pair (port, controller) corresponding to specified
3097 logical controller (1-based).
3098 Returns nothing if controller does not exist.
3101 \begin_layout Subsubsection
3102 input.port_type(number port)
3105 \begin_layout Standard
3106 Return type of specified port.
3109 \begin_layout Subsubsection
3110 input.controller_info(number port, number controller)
3113 \begin_layout Standard
3114 Get controller info for specified controller.
3115 If controller does not exist, returns nil.
3116 Otherwise returns a table with following fields:
3119 \begin_layout Itemize
3120 type (string): Type of the controller.
3123 \begin_layout Itemize
3124 class (string): Class of the controller.
3127 \begin_layout Itemize
3128 classnum (number): Number of the controller within its class (1-based)
3131 \begin_layout Itemize
3132 lcid (number): Logical controller number of the controller.
3135 \begin_layout Itemize
3136 button_count (number): Number of buttons on controller
3139 \begin_layout Itemize
3140 buttons (array): Array of following info about each button:
3144 \begin_layout Itemize
3145 type (string): Type of button.
3147 \begin_inset Quotes eld
3151 \begin_inset Quotes erd
3155 \begin_inset Quotes eld
3159 \begin_inset Quotes erd
3163 \begin_inset Quotes eld
3167 \begin_inset Quotes erd
3171 \begin_inset Quotes eld
3175 \begin_inset Quotes erd
3181 \begin_layout Itemize
3182 name (string): Name of button.
3185 \begin_layout Itemize
3186 symbol (string): Symbol of button.
3187 Only present for type
3188 \begin_inset Quotes eld
3192 \begin_inset Quotes erd
3198 \begin_layout Itemize
3199 hidden (boolean): True if hidden button.
3204 \begin_layout Subsubsection
3208 \begin_layout Standard
3209 Signals that the button event should be vetoed.
3210 Only valid in on_button callback.
3213 \begin_layout Subsubsection
3214 input.geta(number controller)
3217 \begin_layout Standard
3218 Get input state for entiere controller.
3219 Returns 13 return values.
3222 \begin_layout Itemize
3223 1st return value: Bitmask: bit i is set if i:th index is nonzero
3226 \begin_layout Itemize
3227 2nd-13th return value: value of i:th index.
3230 \begin_layout Subsubsection
3231 input.seta(number controller, number bitmask, number args...)
3234 \begin_layout Standard
3235 Set state for entiere controller.
3236 args is up to 12 values for indices (overriding values in bitmask if specified).
3239 \begin_layout Subsubsection
3240 input.controllertype(number controller)
3243 \begin_layout Standard
3244 Get the type of controller as string.
3248 \begin_layout Itemize
3252 \begin_layout Itemize
3256 \begin_layout Itemize
3260 \begin_layout Itemize
3264 \begin_layout Subsubsection
3265 input.reset([number cycles])
3268 \begin_layout Standard
3270 If cycles is greater than zero, do delayed reset.
3271 0 (or no value) causes immediate reset.
3274 \begin_layout Itemize
3275 Only available with subframe flag false.
3278 \begin_layout Subsubsection
3282 \begin_layout Standard
3283 Returns table of tables of all available keys and axes.
3284 The first table is indexed by key name (platform-dependent!), and the inner
3285 table has the following fields:
3288 \begin_layout Itemize
3289 last_rawval: Last reported raw value for control.
3292 \begin_layout Itemize
3293 ktype: Type of key (disabled, key, mouse, axis, axis-inverse, hat, pressure-m0,
3294 pressure-mp, pressure-0m, pressure-0p, pressure-pm, pressure-p0).
3297 \begin_layout Itemize
3298 cal_left: Minimum calibration value.
3299 Only meaningful with axis and pressure types.
3302 \begin_layout Itemize
3303 cal_center: Center calibration value.
3304 Only meaningful with axis and pressure types.
3307 \begin_layout Itemize
3308 cal_right: Maximum calibration value.
3309 Only meaningful with axis and pressure types.
3312 \begin_layout Itemize
3313 cal_tolerance: Dead zone tolerance.
3314 Only meaningful with axis and pressure types.
3317 \begin_layout Subsubsection
3318 input.keyhook(string key, boolean state)
3321 \begin_layout Standard
3322 Requests that keyhook events to be sent for key (state=true) or not sent
3326 \begin_layout Subsubsection
3327 input.joyget(number controller)
3330 \begin_layout Standard
3331 Returns table for current controls for specified controller.
3332 The names of fields vary by controller type.
3335 \begin_layout Itemize
3336 The buttons have the same name as those are referred to in other contexts
3340 \begin_layout Itemize
3342 \begin_inset Quotes eld
3346 \begin_inset Quotes erd
3350 \begin_inset Quotes eld
3354 \begin_inset Quotes erd
3360 \begin_layout Subsubsection
3361 input.joyset(number controller, table controls)
3364 \begin_layout Standard
3365 Set the the state of specified controller to values specified in specified
3369 \begin_layout Itemize
3370 nil does not change value
3373 \begin_layout Itemize
3374 true/false (buttons) and integers (axes) force value.
3377 \begin_layout Itemize
3378 string (button) inverts the input.
3381 \begin_layout Subsubsection
3382 input.lcid_to_pcid(number controller)
3385 \begin_layout Standard
3386 Return the physical index, physical port and controller number in port for
3387 specified (1-based) logical controller.
3390 \begin_layout Subsection
3394 \begin_layout Standard
3398 \begin_layout Subsubsection
3399 subtitle.byindex(number i)
3402 \begin_layout Standard
3403 Read the frame and length of ith subtitle.
3404 Returns nothing if not present.
3407 \begin_layout Subsubsection
3408 subtitle.set(number f, number l, string txt)
3411 \begin_layout Standard
3412 Set the text of subtitle.
3415 \begin_layout Subsubsection
3416 subtitle.get(number f, number l)
3419 \begin_layout Standard
3420 Get the text of subtitle.
3423 \begin_layout Subsubsection
3424 subtitle.delete(number f, number l)
3427 \begin_layout Standard
3428 Delete specified subtitle.
3431 \begin_layout Subsection
3435 \begin_layout Standard
3436 Host memory handling (extra memory saved to savestates).
3437 Host memory starts empty.
3440 \begin_layout Subsubsection
3441 hostmemory.read(number address)
3444 \begin_layout Standard
3445 Reads hostmemory slot address.
3446 Slot numbers out of range return false instead of numeric.
3449 \begin_layout Subsubsection
3450 hostmemory.write(number address, number value)
3453 \begin_layout Standard
3454 Writes hostmemory slot with 0-255.
3455 Slot numbers out of range cause extension of host memory slot space.
3458 \begin_layout Subsubsection
3459 hostmemory.readbyte(number address)
3462 \begin_layout Standard
3463 Read unsigned byte (1 element) from given address.
3464 Slots out of range return false.
3467 \begin_layout Subsubsection
3468 hostmemory.writebyte(number address, number value)
3471 \begin_layout Standard
3472 Write unsigned byte (1 element) to given slot.
3473 Slot numbers out of range cause extension.
3476 \begin_layout Subsubsection
3477 hostmemory.readsbyte(number address)
3480 \begin_layout Standard
3481 Read signed byte (1 element) from given address.
3482 Slots out of range return false.
3485 \begin_layout Subsubsection
3486 hostmemory.writesbyte(number address, number value)
3489 \begin_layout Standard
3490 Write signed byte (1 element) to given slot.
3491 Slot numbers out of range cause extension.
3494 \begin_layout Subsubsection
3495 hostmemory.readword(number address)
3498 \begin_layout Standard
3499 Read unsigned word (2 elements) from given address.
3500 Slots out of range return false.
3503 \begin_layout Subsubsection
3504 hostmemory.writeword(number address, number value)
3507 \begin_layout Standard
3508 Write unsigned word (2 elements) to given slot.
3509 Slot numbers out of range cause extension.
3512 \begin_layout Subsubsection
3513 hostmemory.readsword(number address)
3516 \begin_layout Standard
3517 Read signed word (2 elements) from given address.
3518 Slots out of range return false.
3521 \begin_layout Subsubsection
3522 hostmemory.writesword(number address, number value)
3525 \begin_layout Standard
3526 Write signed word (2 elements) to given slot.
3527 Slot numbers out of range cause extension.
3530 \begin_layout Subsubsection
3531 hostmemory.readdword(number address)
3534 \begin_layout Standard
3535 Read unsigned doubleword (4 elements) from given address.
3536 Slots out of range return false.
3539 \begin_layout Subsubsection
3540 hostmemory.writedword(number address, number value)
3543 \begin_layout Standard
3544 Write unsigned doubleword (4 elements) to given slot.
3545 Slot numbers out of range cause extension.
3548 \begin_layout Subsubsection
3549 hostmemory.readsdword(number address)
3552 \begin_layout Standard
3553 Read signed doubleword (4 elements) from given address.
3554 Slots out of range return false.
3557 \begin_layout Subsubsection
3558 hostmemory.writesdword(number address, number value)
3561 \begin_layout Standard
3562 Write signed doubleword (4 elements) to given slot.
3563 Slot numbers out of range cause extension.
3566 \begin_layout Subsubsection
3567 hostmemory.readqword(number address)
3570 \begin_layout Standard
3571 Read unsigned quadword (8 elements) from given address.
3572 Slots out of range return false.
3575 \begin_layout Subsubsection
3576 hostmemory.writeqword(number address, number value)
3579 \begin_layout Standard
3580 Write unsigned quadword (4 elements) to given slot.
3581 Slot numbers out of range cause extension.
3584 \begin_layout Subsubsection
3585 hostmemory.readsqword(number address)
3588 \begin_layout Standard
3589 Read signed quadword (8 elements) from given address.
3590 Slots out of range return false.
3593 \begin_layout Subsubsection
3594 hostmemory.writesqword(number address, number value)
3597 \begin_layout Standard
3598 Write signed quadword (8 elements) to given slot.
3599 Slot numbers out of range cause extension.
3602 \begin_layout Subsection
3606 \begin_layout Standard
3610 \begin_layout Subsubsection
3611 movie.currentframe()
3614 \begin_layout Standard
3615 Return number of current frame.
3618 \begin_layout Subsubsection
3622 \begin_layout Standard
3623 Return number of frames in movie.
3626 \begin_layout Subsubsection
3630 \begin_layout Standard
3631 Return true if in readonly mode, false if in readwrite.
3634 \begin_layout Subsubsection
3638 \begin_layout Standard
3639 Returns the current value of rerecord count.
3642 \begin_layout Subsubsection
3643 movie.set_readwrite()
3646 \begin_layout Standard
3647 Set readwrite mode (does not cause on_readwrite callback).
3650 \begin_layout Subsubsection
3651 movie.frame_subframes(number frame)
3654 \begin_layout Standard
3655 Count number of subframes in specified frame (frame numbers are 1-based)
3659 \begin_layout Subsubsection
3660 movie.read_subframes(number frame, number subframe)
3663 \begin_layout Standard
3664 Read specifed subframe in specified frame and return data as array (100
3665 elements, numbered 0-99 currently).
3668 \begin_layout Subsubsection
3672 \begin_layout Standard
3673 Returns the current value of the RTC as a pair (second, subsecond).
3676 \begin_layout Subsubsection
3677 movie.unsafe_rewind([UNSAFEREWIND state])
3680 \begin_layout Standard
3681 Start setting point for unsafe rewind or jump to point of unsafe rewind.
3684 \begin_layout Itemize
3685 If called without argument, causes emulator to start process of setting
3686 unsafe rewind point.
3687 When this has finished, callback on_set_rewind occurs, passing the rewind
3688 state to lua script.
3691 \begin_layout Itemize
3692 If called with argument, causes emulator rewind to passed rewind point as
3694 Readwrite mode is implicitly activated.
3697 \begin_layout Standard
3698 The following warnings apply to unsafe rewinding:
3701 \begin_layout Itemize
3702 There are no safety checks against misuse (that's what
3703 \begin_inset Quotes eld
3707 \begin_inset Quotes erd
3713 \begin_layout Itemize
3714 Only call rewind from timeline rewind point was set from.
3717 \begin_layout Itemize
3718 Only call rewind from after the rewind point was set.
3721 \begin_layout Subsubsection
3722 movie.copy_movie([INPUTMOVIE movie])
3725 \begin_layout Standard
3726 Copies specified movie (if none or nil, the active movie) as new movie object
3730 \begin_layout Standard
3731 Also available as method in INPUTFRAME.
3734 \begin_layout Subsubsection
3735 movie.get_frame([INPUTMOVIE movie,] number frame)
3738 \begin_layout Standard
3739 Get INPUTFRAME object corresponding to specified frame in specified movie.
3742 \begin_layout Standard
3743 Also available as method in INPUTFRAME.
3746 \begin_layout Subsubsection
3747 movie.set_frame([INPUTMOVIE movie,] number frame, INPUTFRAME data)
3750 \begin_layout Standard
3751 Set data in specified frame.
3752 Note: Past can't be edited in active movie.
3755 \begin_layout Standard
3756 Also available as method in INPUTFRAME.
3759 \begin_layout Subsubsection
3760 movie.get_size([INPUTMOVIE movie])
3763 \begin_layout Standard
3764 Return number of subframes in specified movie.
3767 \begin_layout Standard
3768 Also available as method in INPUTFRAME.
3771 \begin_layout Subsubsection
3772 movie.count_frames([INPUTMOVIE movie])
3775 \begin_layout Standard
3776 Return number of frames in movie.
3779 \begin_layout Standard
3780 Also available as method in INPUTFRAME.
3783 \begin_layout Subsubsection
3784 movie.find_frame([INPUTMOVIE movie], number frame)
3787 \begin_layout Standard
3788 Returns starting subframe of given frame (frame numbers are 1-based).
3789 Returns -1 if frame number is bad.
3792 \begin_layout Standard
3793 Also available as method in INPUTFRAME.
3796 \begin_layout Subsubsection
3797 movie.blank_frame([INPUTMOVIE movie])
3800 \begin_layout Standard
3801 Return blank INPUTFRAME with frame type from specified movie.
3804 \begin_layout Standard
3805 Also available as method in INPUTFRAME.
3808 \begin_layout Subsubsection
3809 movie.append_frames([INPUTMOVIE movie,] number frames)
3812 \begin_layout Standard
3813 Append specified number of frames.
3816 \begin_layout Standard
3817 Also available as method in INPUTFRAME.
3820 \begin_layout Subsubsection
3821 movie.append_frame([INPUTMOVIE movie,] INPUTFRAME frame)
3824 \begin_layout Standard
3825 Append specified frame.
3826 Past of current movie can't be edited.
3829 \begin_layout Standard
3830 Also available as method in INPUTFRAME.
3833 \begin_layout Subsubsection
3834 movie.truncate([INPUTMOVIE movie,] number frames)
3837 \begin_layout Standard
3838 Truncate the specified movie to specified number of frames.
3841 \begin_layout Standard
3842 Also available as method in INPUTFRAME.
3845 \begin_layout Subsubsection
3846 movie.edit([INPUTMOVIE movie,] number frame, number port, number controller,
3847 number control, number/bool value)
3850 \begin_layout Standard
3851 Change specified control in specified frame in specified movie.
3852 Past can't be edited in active movie.
3855 \begin_layout Standard
3856 Also available as method in INPUTFRAME.
3859 \begin_layout Subsubsection
3860 movie.copy_frames2([INPUTMOVIE dstmov,] number dst, [INPUTMOVIE srcmov,]
3861 number src, number count)
3864 \begin_layout Standard
3865 Copy specified number of frames between two movies.
3866 The copy proceeeds in forward direction.
3869 \begin_layout Subsubsection
3870 movie.copy_frames([INPUTMOVIE mov,] number dst, number src, number count,
3874 \begin_layout Standard
3875 Copy specified number of frames from one point in movie to another.
3876 If backwards is true, the copy will be done backwards.
3879 \begin_layout Standard
3880 Also available as method in INPUTFRAME.
3883 \begin_layout Subsubsection
3884 movie.serialize([INPUTMOVIE movie,] string filename, bool binary)
3887 \begin_layout Standard
3888 Serialize given movie into file.
3889 If binary is true, binary format (more compact and much faster) is used.
3892 \begin_layout Standard
3893 Also available as method in INPUTFRAME.
3896 \begin_layout Subsubsection
3897 movie.unserialize(INPUTFRAME template, string filename, bool binary)
3900 \begin_layout Standard
3901 Unserialize movie from file.
3902 The given frame is used as template to decide the frame type.
3903 If binary is true, binary format is decoded (much faster).
3906 \begin_layout Standard
3907 Also available as method in INPUTFRAME.
3910 \begin_layout Subsubsection
3911 movie.current_first_subframe()
3914 \begin_layout Standard
3915 Returns first subframe in current frame.
3918 \begin_layout Subsubsection
3919 movie.pollcounter(number port, number controller, number control)
3922 \begin_layout Standard
3923 Returns number of times the specified control has been polled this frame.
3926 \begin_layout Subsubsection
3927 INPUTFRAME::get_button(number port, number controller, number control)
3930 \begin_layout Standard
3931 Returns state of given button as boolean.
3934 \begin_layout Subsubsection
3935 INPUTFRAME::get_axis(number port, number controller, number control)
3938 \begin_layout Standard
3939 Returns state of given axis as number.
3942 \begin_layout Subsubsection
3943 INPUTFRAME::set_button(number port, number controller, number control, number/bo
3947 \begin_layout Standard
3948 Set the given button/axis to given value.
3951 \begin_layout Subsubsection
3952 INPUTFRAME::set_axis(number port, number controller, number control)
3955 \begin_layout Standard
3959 \begin_layout Subsubsection
3960 INPUTFRAME::serialize()
3963 \begin_layout Standard
3964 Return string representation of frame.
3967 \begin_layout Subsubsection
3968 INPUTFRAME::unserialize(string data)
3971 \begin_layout Standard
3972 Set current frame from given data.
3975 \begin_layout Subsubsection
3976 INPUTFRAME::get_stride()
3979 \begin_layout Standard
3980 Return number of bytes needed to store the input frame.
3981 Mainly useful for some debugging.
3984 \begin_layout Subsection
3988 \begin_layout Standard
3989 Routines for settings manipulation
3992 \begin_layout Subsubsection
3993 settings.get(string name)
3996 \begin_layout Standard
3997 Get value of setting.
3998 If setting is blank, returns false.
3999 If setting value can't be obtained, returns (nil, error message).
4002 \begin_layout Subsubsection
4003 settings.set(string name, string value)
4006 \begin_layout Standard
4007 Set value of setting.
4008 If setting can't be set, returns (nil, error message).
4011 \begin_layout Subsubsection
4012 settings.is_set(string name)
4015 \begin_layout Standard
4016 Returns if setting is set.
4017 If setting does not exist, returns (nil, error message).
4020 \begin_layout Subsubsection
4021 settings.blank(string name)
4024 \begin_layout Standard
4025 Blanks a setting and returns true.
4026 If setting can't be blanked, returns (nil, error message).
4029 \begin_layout Subsection
4033 \begin_layout Standard
4034 Contains various functions for managing memory
4037 \begin_layout Subsubsection
4041 \begin_layout Standard
4042 Returns the number of VMAs
4045 \begin_layout Subsubsection
4046 memory.read_vma(number index)
4049 \begin_layout Standard
4050 Reads the specified VMA (indices start from zero).
4051 Trying to read invalid VMA gives nil.
4052 The read VMA is table with the following fields:
4055 \begin_layout Itemize
4056 region_name (string): The readable name of the VMA
4059 \begin_layout Itemize
4060 baseaddr (number): Base address of the VMA
4063 \begin_layout Itemize
4064 lastaddr (number): Last address in the VMA.
4067 \begin_layout Itemize
4068 size (number): The size of VMA in bytes.
4071 \begin_layout Itemize
4072 readonly (boolean): True of the VMA corresponds to ROM.
4075 \begin_layout Itemize
4076 iospace (boolean): True if the VMA is I/O space.
4079 \begin_layout Itemize
4080 native_endian (boolean): True if the VMA has native endian as opposed to
4084 \begin_layout Subsubsection
4085 memory.find_vma(number address)
4088 \begin_layout Standard
4089 Finds the VMA containing specified address.
4090 Returns table in the same format as read_vma or nil if not found.
4093 \begin_layout Subsubsection
4094 memory.readbyte(number address)
4097 \begin_layout Standard
4098 Reads the specified address as unsigned byte and returns the result.
4101 \begin_layout Subsubsection
4102 memory.readsbyte(number address)
4105 \begin_layout Standard
4106 Reads the specified address as signed byte and returns the result.
4109 \begin_layout Subsubsection
4110 memory.writebyte(number address, number value)
4113 \begin_layout Standard
4114 Writes the specified value (negative values undergo 2's complement) to specified
4115 address (as a byte).
4118 \begin_layout Subsubsection
4119 memory.readword(number address)
4122 \begin_layout Standard
4123 Reads the specified address as unsigned word and returns the result.
4126 \begin_layout Subsubsection
4127 memory.readsword(number address)
4130 \begin_layout Standard
4131 Reads the specified address as signed word and returns the result.
4134 \begin_layout Subsubsection
4135 memory.writeword(number address, number value)
4138 \begin_layout Standard
4139 Writes the specified value (negative values undergo 2's complement) to specified
4140 address (as a word).
4143 \begin_layout Subsubsection
4144 memory.readdword(number address)
4147 \begin_layout Standard
4148 Reads the specified address as unsigned doubleword and returns the result.
4151 \begin_layout Subsubsection
4152 memory.readsdword(number address)
4155 \begin_layout Standard
4156 Reads the specified address as signed doubleword and returns the result.
4159 \begin_layout Subsubsection
4160 memory.writedword(number address, number value)
4163 \begin_layout Standard
4164 Writes the specified value (negative values undergo 2's complement) to specified
4165 address (as a doubleword).
4168 \begin_layout Subsubsection
4169 memory.readqword(number address)
4172 \begin_layout Standard
4173 Reads the specified address as unsigned quadword and returns the result.
4176 \begin_layout Subsubsection
4177 memory.readsqword(number address)
4180 \begin_layout Standard
4181 Reads the specified address as signed quadword and returns the result.
4184 \begin_layout Subsubsection
4185 memory.writeqword(number address, number value)
4188 \begin_layout Standard
4189 Writes the specified value (negative values undergo 2's complement) to specified
4190 address (as a quadword).
4193 \begin_layout Subsubsection
4194 memory.hash_region(number base, number size)
4197 \begin_layout Standard
4198 Hash specified number of bytes starting from specified address and return
4202 \begin_layout Subsubsection
4206 \begin_layout Standard
4207 Hash the current system state.
4208 Mainly useful for debugging savestates.
4211 \begin_layout Subsubsection
4212 memory.readregion(number base, number size)
4215 \begin_layout Standard
4216 Read a region of memory.
4219 \begin_layout Itemize
4220 Warning: If the region crosses VMA boundary, the results are undefined.
4223 \begin_layout Subsubsection
4224 memory.map<type>([number base, number size])
4227 \begin_layout Standard
4228 Returns a table mapping specified memory aperture for read/write.
4229 If parameters are omitted, entiere map space is the aperture.
4232 \begin_layout Itemize
4233 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
4236 \begin_layout Subsubsection
4237 memory.writeregion(number base, number size, table data)
4240 \begin_layout Standard
4241 Write a region of memory.
4244 \begin_layout Itemize
4245 Warning: If the region crosses VMA boundary, the results are undefined.
4248 \begin_layout Subsubsection
4249 memory.map_structure()
4252 \begin_layout Standard
4253 Returns a new mapping structure (MMAP_STRUCT)
4256 \begin_layout Subsubsection
4257 MMAP_STRUCT(string key, number address, string type)
4260 \begin_layout Standard
4261 Bind key in mmap structure to specified address with specified type.
4264 \begin_layout Itemize
4265 Type may be one of: byte, sbyte, word, sword, dword, sdword, qword or sqword.
4268 \begin_layout Subsubsection
4269 memory.read_expr(string expr)
4272 \begin_layout Standard
4273 Evaluate specified watch expression and return result
4276 \begin_layout Subsection
4280 \begin_layout Standard
4281 Contains functions for manipulating subtitles.
4284 \begin_layout Subsubsection
4285 subtitle.byindex(number index)
4288 \begin_layout Standard
4289 Get (basetime, length) pair of specified subtitle index or nothing if index
4293 \begin_layout Subsubsection
4294 subtitle.get(number basetime, number length)
4297 \begin_layout Standard
4298 Read the specified subtitle.
4300 \begin_inset Quotes eld
4304 \begin_inset Quotes erd
4307 if the subtitle does not exist.
4310 \begin_layout Subsubsection
4311 subtitle.set(number basetime, number length, string content)
4314 \begin_layout Standard
4315 Set the specified subtitle.
4318 \begin_layout Subsubsection
4319 subtitle.deltete(number basetime, number length)
4322 \begin_layout Standard
4323 Delete the specified subtitle.
4326 \begin_layout Subsection
4330 \begin_layout Standard
4331 Contains copy of global variables from time of Lua initialization.
4335 \begin_layout Subsection
4339 \begin_layout Standard
4340 Various callbacks to Lua that can occur.
4343 \begin_layout Subsubsection
4344 Callback: on_paint(bool not_synth)
4347 \begin_layout Standard
4348 Called when screen is being painted.
4349 Any gui.* calls requiring graphic context draw on the screen.
4352 \begin_layout Standard
4353 not_synth is true if this hook is being called in response to received frame,
4357 \begin_layout Subsubsection
4358 Callback: on_video()
4361 \begin_layout Standard
4362 Called when video dump frame is being painted.
4363 Any gui.* calls requiring graphic context draw on the video.
4366 \begin_layout Subsubsection
4367 Callback: on_frame_emulated()
4370 \begin_layout Standard
4371 Called when emulating frame has completed and on_paint()/on_video() calls
4372 are about to be issued.
4375 \begin_layout Subsubsection
4376 Callback: on_frame()
4379 \begin_layout Standard
4380 Called on each starting whole frame.
4383 \begin_layout Subsubsection
4384 Callback: on_startup()
4387 \begin_layout Standard
4388 Called when the emulator is starting (lsnes.rc and --run files has been run).
4391 \begin_layout Subsubsection
4392 Callback: on_rewind()
4395 \begin_layout Standard
4396 Called when rewind movie to beginning has completed.
4399 \begin_layout Subsubsection
4400 Callback: on_pre_load(string name)
4403 \begin_layout Standard
4404 Called just before savestate/movie load occurs (note: loads are always delayed,
4405 so this occurs even when load was initiated by lua).
4408 \begin_layout Subsubsection
4409 Callback: on_err_load(string name)
4412 \begin_layout Standard
4413 Called if loadstate goes wrong.
4416 \begin_layout Subsubsection
4417 Callback: on_post_load(string name, boolean was_savestate)
4420 \begin_layout Standard
4421 Called on successful loadstate.
4422 was_savestate gives if this was a savestate or a movie.
4425 \begin_layout Subsubsection
4426 Callback: on_pre_save(string name, boolean is_savestate)
4429 \begin_layout Standard
4430 Called just before savestate save occurs (note: movie saves are synchronous
4431 and won't trigger these callbacks if called from Lua).
4434 \begin_layout Subsubsection
4435 Callback: on_err_save(string name)
4438 \begin_layout Standard
4439 Called if savestate goes wrong.
4442 \begin_layout Subsubsection
4443 Callback: on_post_save(string name, boolean is_savestate)
4446 \begin_layout Standard
4447 Called on successful savaestate.
4448 is_savestate gives if this was a savestate or a movie.
4451 \begin_layout Subsubsection
4455 \begin_layout Standard
4456 Called when emulator is shutting down.
4459 \begin_layout Subsubsection
4460 Callback: on_input(boolean subframe)
4463 \begin_layout Standard
4464 Called when emulator is just sending input to bsnes core.
4465 Warning: This is called even in readonly mode, but the results are ignored.
4468 \begin_layout Subsubsection
4469 Callback: on_reset()
4472 \begin_layout Standard
4473 Called when SNES is reset.
4476 \begin_layout Subsubsection
4477 Callback: on_readwrite()
4480 \begin_layout Standard
4481 Called when moving into readwrite mode as result of
4482 \begin_inset Quotes eld
4486 \begin_inset Quotes erd
4489 command (note: moving to rwmode by Lua won't trigger this, as per recursive
4493 \begin_layout Subsubsection
4494 Callback: on_snoop(number port, number controller, number index, number
4498 \begin_layout Standard
4499 Called each time bsnes asks for input.
4500 The value is the final value to be sent to bsnes core (readonly mode, autohold
4501 and autofire have been taken into account).
4502 Might be useful when translating movies to format suitable for console
4504 Note: There is no way to modify the value to be sent.
4507 \begin_layout Itemize
4508 Not called if callback on_snoop2 is defined.
4511 \begin_layout Subsubsection
4512 Callback: on_snoop2(number port, number controller, number index, number
4516 \begin_layout Standard
4517 Like on_snoop, but reserves port 0 for system, having first user port be
4521 \begin_layout Subsubsection
4522 Callback: on_keyhook(string keyname, table state)
4525 \begin_layout Standard
4526 Sent when key that has keyhook events requested changes state.
4527 Keyname is name of the key (group) and state is the state (same kind as
4528 table values in input.raw).
4531 \begin_layout Subsubsection
4535 \begin_layout Standard
4536 Called when requested by set_idle_timeout(), the timeout has expired and
4537 emulator is waiting.
4540 \begin_layout Subsubsection
4541 Callback: on_timer()
4544 \begin_layout Standard
4545 Called when requested by set_idle_timeout() and the timeout has expired
4546 (regardless if emulator is waiting).
4549 \begin_layout Subsubsection
4550 Callback: on_set_rewind(UNSAFEREWIND r)
4553 \begin_layout Standard
4554 Called when unsafe rewind object has been constructed.
4557 \begin_layout Subsubsection
4558 Callback: on_pre_rewind()
4561 \begin_layout Standard
4562 Called just before unsafe rewind is about to occur.
4565 \begin_layout Subsubsection
4566 Callback: on_post_rewind()
4569 \begin_layout Standard
4570 Called just after unsafe rewind has occured.
4573 \begin_layout Subsubsection
4574 Callback: on_button(number port, number controller, number index, string
4578 \begin_layout Standard
4579 Called on controller button press, with following parameters:
4582 \begin_layout Itemize
4583 port: Port number (0 is system)
4586 \begin_layout Itemize
4587 controller: Controller within port
4590 \begin_layout Itemize
4591 index: Index of button.
4594 \begin_layout Itemize
4595 type: Type of event, one of:
4599 \begin_layout Itemize
4600 \begin_inset Quotes eld
4604 \begin_inset Quotes erd
4607 : Button was pressed.
4610 \begin_layout Itemize
4611 \begin_inset Quotes eld
4615 \begin_inset Quotes erd
4618 : Button was released.
4621 \begin_layout Itemize
4622 \begin_inset Quotes eld
4626 \begin_inset Quotes erd
4632 \begin_layout Itemize
4633 \begin_inset Quotes eld
4637 \begin_inset Quotes erd
4640 : Released from hold.
4643 \begin_layout Itemize
4644 \begin_inset Quotes eld
4648 \begin_inset Quotes erd
4651 : Typing input on button.
4654 \begin_layout Itemize
4655 \begin_inset Quotes eld
4659 \begin_inset Quotes erd
4662 : Typing input undone.
4665 \begin_layout Itemize
4666 \begin_inset Quotes eld
4670 \begin_inset Quotes erd
4673 : Analog action on axis.
4677 \begin_layout Subsubsection
4678 Callback: on_movie_lost(STRING kind)
4681 \begin_layout Standard
4682 Called just before something would happen that could lose movie data.
4686 \begin_layout Itemize
4687 readwrite: Switching to readwrite mode.
4690 \begin_layout Itemize
4691 reload: ROM is being reloaded in readwrite mode.
4694 \begin_layout Itemize
4695 load: New movie is being loaded.
4698 \begin_layout Itemize
4699 unsaferewind: Unsafe rewind is happening.
4702 \begin_layout Section
4706 \begin_layout Itemize
4707 The editor edits in-memory movie.
4710 \begin_layout Itemize
4711 Because past can't be edited and readwrite mode doesn't allow future, editing
4719 \begin_layout Itemize
4720 Keyboard triggers the normal hotkeys and bindings.
4723 \begin_layout Subsection
4727 \begin_layout Itemize
4728 Clicking on cell in future (indicated by lack of redish background) toggles
4729 it (if it is a button) or prompts for a value (if it is an axis)
4732 \begin_layout Itemize
4733 Dragging vertically toggles sequence of buttons or changes a sequence of
4737 \begin_layout Subsection
4738 Right button actions
4741 \begin_layout Standard
4742 The right mouse button pops up a context-sensitive menu:
4745 \begin_layout Itemize
4746 Toggle <something>: Toggle this button
4749 \begin_layout Itemize
4750 Change <something>: Change this axis value
4753 \begin_layout Itemize
4754 Insert frame after: Insert a frame after this frame
4757 \begin_layout Itemize
4758 Append frame: Append a frame to movie
4761 \begin_layout Itemize
4762 Append frames: Append specified number of frames to movie
4765 \begin_layout Itemize
4766 Delete frame: Delete this frame
4769 \begin_layout Itemize
4770 Delete subframe: Delete this subframe
4773 \begin_layout Itemize
4774 Truncate movie: Delete this subframe and everything after it.
4777 \begin_layout Itemize
4778 Scroll to frame: Prompt for a frame and scroll the display to that frame.
4781 \begin_layout Itemize
4782 Scroll to current frame: Scroll the display to current position
4785 \begin_layout Itemize
4786 Run to frame: Prompts for frame and runs the emulation to that frame.
4789 \begin_layout Itemize
4790 Change number of lines visible: Change the height of the movie display (1
4794 \begin_layout Itemize
4795 Lock scroll to playback: While playing back or rewinding movies, the display
4796 will follow if enabled.
4799 \begin_layout Section
4800 Memory watch expression syntax
4803 \begin_layout Standard
4804 Memory watch expressions are in RPN (Reverse Polish Notation).
4805 At the end of expression, the top entry on stack is taken as the final
4809 \begin_layout Standard
4813 \begin_layout Itemize
4814 Evaluation order is strictly left to right.
4817 \begin_layout Itemize
4818 a is the entry on top of stack
4821 \begin_layout Itemize
4822 b is the entry immediately below top of stack
4825 \begin_layout Itemize
4826 ; separates values to be pushed (no intermediate pop).
4829 \begin_layout Itemize
4830 After end of element, all used stack slots are popped and all results are
4834 \begin_layout Itemize
4835 When pushing multiple values, the pushes occur in order shown.
4838 \begin_layout Standard
4839 The following operators are available:
4842 \begin_layout Itemize
4846 \begin_layout Itemize
4850 \begin_layout Itemize
4854 \begin_layout Itemize
4858 \begin_layout Itemize
4862 \begin_layout Itemize
4866 \begin_layout Itemize
4867 b : read_signed_byte(a)
4870 \begin_layout Itemize
4874 \begin_layout Itemize
4875 d : read_signed_dword(a)
4878 \begin_layout Itemize
4882 \begin_layout Itemize
4884 \begin_inset Formula $\pi$
4890 \begin_layout Itemize
4891 q : read_signed_qword(a)
4894 \begin_layout Itemize
4898 \begin_layout Itemize
4902 \begin_layout Itemize
4906 \begin_layout Itemize
4910 \begin_layout Itemize
4911 w : read_signed_word(a)
4914 \begin_layout Itemize
4918 \begin_layout Itemize
4919 B : read_unsigned_byte(a)
4922 \begin_layout Itemize
4923 C<number>z : Push number <number> to stack.
4926 \begin_layout Itemize
4927 D : read_unsigned_dword(a)
4930 \begin_layout Itemize
4931 C0x<number>z : Push number <number> (hexadecimal) to stack.
4934 \begin_layout Itemize
4935 H<digit> : Set hexadecimal mode with specified number of digits (use A-G
4939 \begin_layout Itemize
4940 Q : read_unsigned_qword(a)
4943 \begin_layout Itemize
4944 R<digit> : round a to <digit> digits.
4947 \begin_layout Itemize
4948 W : read_unsigned_word(a)
4951 \begin_layout Subsection
4955 \begin_layout Standard
4956 C0x007e0878zWC0x007e002czW-
4959 \begin_layout Enumerate
4960 Push value 0x7e0878 on top of stack (C0x007e0878z).
4963 \begin_layout Enumerate
4964 Pop the value on top of stack (0x7e0878), read word value at that address
4965 and push the result,call it x1 (W).
4968 \begin_layout Enumerate
4969 Push value 0x7e002c on top of stack (C0x007e002cz).
4972 \begin_layout Enumerate
4973 Pop the value on top of stack (0x7e002c), read word value at that address
4974 and push the result,call it x2 (W).
4977 \begin_layout Enumerate
4978 Pop the two top numbers on stack, x1 and x2, substract x1 from x2 and push
4982 \begin_layout Enumerate
4983 Since the expression ends, the final memory watch result is the top one
4984 on stack, which is x2 - x1.
4987 \begin_layout Section
4988 Modifier and key names:
4991 \begin_layout Subsection
4995 \begin_layout Subsubsection
4999 \begin_layout Standard
5000 Following modifier names are known:
5003 \begin_layout Itemize
5004 ctrl, lctrl, rctrl: Control keys
5007 \begin_layout Itemize
5008 alt, lalt, ralt: ALT keys.
5011 \begin_layout Itemize
5012 shift, lshift, rshift: Shift keys.
5015 \begin_layout Itemize
5016 meta, lmeta, rmeta: Meta keys.
5019 \begin_layout Itemize
5020 num, caps: Numlock/Capslock (these are sticky!)
5023 \begin_layout Itemize
5027 \begin_layout Subsubsection
5031 \begin_layout Standard
5032 Following key names are known:
5035 \begin_layout Itemize
5036 backspace, tab, clear, return, pause, escape, space, exclaim, quotedbl,
5037 hash, dollar, ampersand, quote, leftparen, rightparen, asterisk, plus,
5038 comma, minus, period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon,
5039 less, equals, greater, question, at, leftbracket, backslash, rightbracket,
5040 caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n,
5041 o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0, world_1, world_2,
5042 world_3, world_4, world_5, world_6, world_7, world_8, world_9, world_10,
5043 world_11, world_12, world_13, world_14, world_15, world_16, world_17, world_18,
5044 world_19, world_20, world_21, world_22, world_23, world_24, world_25, world_26,
5045 world_27, world_28, world_29, world_30, world_31, world_32, world_33, world_34,
5046 world_35, world_36, world_37, world_38, world_39, world_40, world_41, world_42,
5047 world_43, world_44, world_45, world_46, world_47, world_48, world_49, world_50,
5048 world_51, world_52, world_53, world_54, world_55, world_56, world_57, world_58,
5049 world_59, world_60, world_61, world_62, world_63, world_64, world_65, world_66,
5050 world_67, world_68, world_69, world_70, world_71, world_72, world_73, world_74,
5051 world_75, world_76, world_77, world_78, world_79, world_80, world_81, world_82,
5052 world_83, world_84, world_85, world_86, world_87, world_88, world_89, world_90,
5053 world_91, world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3, kp4,
5054 kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide, kp_multiply, kp_minus, kp_plus,
5055 kp_enter, kp_equals, up, down, right, left, insert, home, end, pageup,
5056 pagedown, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
5057 f15, numlock, capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt,
5058 lalt, rmeta, lmeta, lsuper, rsuper, mode, compose, help, print, sysreq,
5059 break, menu, power, euro, undo
5062 \begin_layout Itemize
5063 Names of form 'key<n>' where <n> is 0-255 are interpretted as key having
5064 hardware-dependent scan code of <n> (useful to bind those keys that don't
5065 have symbolic names).
5068 \begin_layout Subsubsection
5069 Joystick pseudo-keys:
5072 \begin_layout Itemize
5073 joystick<num>button<button>: Joystick <num> (0-based) button <button> (0-based).
5076 \begin_layout Itemize
5077 joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat> (0-based) up.
5080 \begin_layout Itemize
5081 joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat> (0-based) left.
5084 \begin_layout Itemize
5085 joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat> (0-based) down.
5088 \begin_layout Itemize
5089 joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat> (0-based) right.
5092 \begin_layout Itemize
5093 joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis> negative
5094 position (axis modes axis and axis_inverse).
5097 \begin_layout Itemize
5098 joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis> positive
5099 position (axis modes axis and axis_inverse).
5102 \begin_layout Itemize
5103 joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis> pressure (axis
5107 \begin_layout Subsubsection
5111 \begin_layout Itemize
5112 Escape: Enter/Exit Command mode, cancel modal dialogs.
5115 \begin_layout Itemize
5116 Return (also KPEnter): Execute command, ok modal dialog.
5119 \begin_layout Itemize
5120 Pgup/Up (also KP8/9 if no num lock, CTRL+P; command mode): Previous command
5124 \begin_layout Itemize
5125 Pgdn/Down(also KP2/3 if no num lock, CTRL+N; command mode): Next command
5129 \begin_layout Itemize
5130 Home (also KP7 if no num lock, CTRL+A; command mode): Beginning of command.
5133 \begin_layout Itemize
5134 End (also KP1 if no num lock, CTRL+E; command mode): End of command.
5137 \begin_layout Itemize
5138 Left (also KP4 if no num lock, CTRL+B; command mode): Move cursor left.
5141 \begin_layout Itemize
5142 Right (also KP6 if no num lock, CTRL+F; command mode): Move cursor right.
5145 \begin_layout Itemize
5147 if no num lock; command mode): Delete character to right of cursor.
5150 \begin_layout Itemize
5151 Insert (also KP0 if no num lock; command mode): Toggle between insert /
5155 \begin_layout Itemize
5156 Backspace (command mode): Delete character to left of cursor.
5159 \begin_layout Itemize
5160 CTRL+LEFT (also ALT+B; command mode): Previous word.
5163 \begin_layout Itemize
5164 CTRL+RIGHT (also ALT+F; command mode): Next word.
5167 \begin_layout Itemize
5168 ALT+D (also CTRL+W; command mode): Delete word.
5171 \begin_layout Itemize
5172 LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump corrupted!).
5175 \begin_layout Subsection
5179 \begin_layout Subsubsection
5183 \begin_layout Standard
5184 Following modifier names are known:
5187 \begin_layout Itemize
5191 \begin_layout Itemize
5195 \begin_layout Itemize
5199 \begin_layout Itemize
5203 \begin_layout Itemize
5207 \begin_layout Subsubsection
5211 \begin_layout Standard
5212 Following key names are known:
5215 \begin_layout Itemize
5216 back, tab, return, escape, space, exclaim, quotedbl, hash, dollar, percent,
5217 ampersand, quote, leftparen, rightparen, asterisk, plus, comma, minus,
5218 period, slash, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon, less, equals,
5219 greater, question, at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
5220 q, r, s, t, u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
5221 underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
5222 q, r, s, t, u, v, w, x, y, z, leftcurly, pipe, rightcurly, tilde, delete,
5223 start, lbutton, rbutton, cancel, mbutton, clear, shift, alt, control, menu,
5224 pause, capital, end, home, lefT, up, right, down, select, print, execute,
5225 snapshot, insert, help, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5,
5226 numpad6, numpad7, numpad8, numpad9, multiply, add, separator, subtract,
5227 decimal, divide, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13,
5228 f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, numlock, scroll,
5229 pageup, pagedown, numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
5230 numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up, numpad_right,
5231 numpad_down, numpad_pageup, numpad_pagedown, numpad_end, numpad_begin,
5232 numpad_insert, numpad_delete, numpad_equal, numpad_multiply, numpad_add,
5233 numpad_separator, numpad_subtract, numpad_decimal, numpad_divide, windows_left,
5234 windows_right, windows_menu, command, special1, special2, special3, special4,
5235 special5, special6, special7, special8, special9, special10, special11,
5236 special12, special13, special14, special15, special16, special17, special18,
5237 special19, special20
5240 \begin_layout Section
5244 \begin_layout Standard
5245 Movie file is .zip archive in itself, normal ZIP archive tools work on it
5246 (note: If you recompress it, do not use compression methods other than
5247 store and deflate and especially do not use encryption of any kind).
5250 \begin_layout Subsection
5251 Detecting clean start/SRAM/Savestate
5254 \begin_layout Itemize
5256 \begin_inset Quotes eld
5260 \begin_inset Quotes erd
5263 it is savestate, otherwise:
5266 \begin_layout Itemize
5267 If file has members with names starting
5268 \begin_inset Quotes eld
5272 \begin_inset Quotes erd
5275 it is movie starting from SRAM, otherwise:
5278 \begin_layout Itemize
5279 It is movie starting from clear state.
5282 \begin_layout Subsection
5286 \begin_layout Standard
5287 Type of game ROM and region (as one line).
5291 \begin_layout Standard
5292 \begin_inset Tabular
5293 <lyxtabular version="3" rows="8" columns="3">
5294 <features tabularvalignment="middle">
5295 <column alignment="center" valignment="top" width="0">
5296 <column alignment="center" valignment="top" width="0">
5297 <column alignment="center" valignment="top" width="0">
5299 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5302 \begin_layout Plain Layout
5308 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5311 \begin_layout Plain Layout
5317 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5320 \begin_layout Plain Layout
5328 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5331 \begin_layout Plain Layout
5337 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5340 \begin_layout Plain Layout
5346 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5349 \begin_layout Plain Layout
5357 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5360 \begin_layout Plain Layout
5366 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5369 \begin_layout Plain Layout
5375 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5378 \begin_layout Plain Layout
5386 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5389 \begin_layout Plain Layout
5395 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5398 \begin_layout Plain Layout
5404 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5407 \begin_layout Plain Layout
5415 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5418 \begin_layout Plain Layout
5424 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5427 \begin_layout Plain Layout
5433 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5436 \begin_layout Plain Layout
5444 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5447 \begin_layout Plain Layout
5453 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5456 \begin_layout Plain Layout
5462 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5465 \begin_layout Plain Layout
5473 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5476 \begin_layout Plain Layout
5482 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5485 \begin_layout Plain Layout
5491 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5494 \begin_layout Plain Layout
5502 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5505 \begin_layout Plain Layout
5511 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5514 \begin_layout Plain Layout
5520 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5523 \begin_layout Plain Layout
5537 \begin_layout Standard
5541 \begin_layout Standard
5542 \begin_inset Tabular
5543 <lyxtabular version="3" rows="3" columns="2">
5544 <features tabularvalignment="middle">
5545 <column alignment="center" valignment="top" width="0">
5546 <column alignment="center" valignment="top" width="0">
5548 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5551 \begin_layout Plain Layout
5557 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5560 \begin_layout Plain Layout
5568 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5571 \begin_layout Plain Layout
5577 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5580 \begin_layout Plain Layout
5588 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5591 \begin_layout Plain Layout
5597 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5600 \begin_layout Plain Layout
5614 \begin_layout Subsection
5618 \begin_layout Standard
5619 Contains type of port #1 (as one line).
5620 Valid values are 'none', 'gamepad', 'multitap' and 'mouse'.
5621 If not present, defaults to 'gamepad'.
5624 \begin_layout Subsection
5628 \begin_layout Standard
5629 Contains type of port #2 (as one line).
5630 Valid values are 'none', 'gamepad', 'multitap', 'mouse', 'superscope',
5631 'justifier' and 'justifiers'.
5632 If not present, defaults to 'none'.
5635 \begin_layout Subsection
5639 \begin_layout Standard
5640 Contains name of the game (as one line).
5643 \begin_layout Subsection
5647 \begin_layout Standard
5648 Contains authors, one per line.
5649 Part before '|' is the full name, part after is the nickname.
5652 \begin_layout Subsection
5656 \begin_layout Standard
5658 \begin_inset Quotes eld
5662 \begin_inset Quotes erd
5666 Used to reject other saves.
5669 \begin_layout Subsection
5670 Member: controlsversion
5673 \begin_layout Standard
5675 \begin_inset Quotes eld
5679 \begin_inset Quotes erd
5683 Used to identify what controls are there.
5686 \begin_layout Subsection
5688 \begin_inset Quotes eld
5692 \begin_inset Quotes erd
5698 \begin_layout Standard
5699 Contains bsnes core version number (as one line).
5702 \begin_layout Subsection
5706 \begin_layout Standard
5707 Contains project ID (as one line).
5708 Used to identify if two movies are part of the same project.
5711 \begin_layout Subsection
5712 Member: {rom,slota,slotb}{,xml}.sha256
5715 \begin_layout Standard
5716 Contains SHA-256 of said ROM or ROM mapping file (as one line).
5717 Absent if corresponding file is absent.
5720 \begin_layout Subsection
5721 Member: moviesram.<name>
5724 \begin_layout Standard
5725 Raw binary startup SRAM of kind <name>.
5726 Only present in savestates and movies starting from SRAM.
5729 \begin_layout Subsection
5733 \begin_layout Standard
5734 Contains frame number (as one line) of frame movie was saved on.
5735 Only present in savestates.
5738 \begin_layout Subsection
5742 \begin_layout Standard
5743 Current value of lag counter (as one line).
5744 Only present in savestates.
5747 \begin_layout Subsection
5748 Member: pollcounters
5751 \begin_layout Standard
5752 Contains poll counters (currently 100 of them), one per line.
5753 Each line is raw poll count if DRDY is set for it.
5754 Otherwise it is negative poll count minus one.
5755 Only present in savestates.
5758 \begin_layout Subsection
5762 \begin_layout Standard
5763 Raw binary dump of host memory.
5764 Only present in savestates.
5767 \begin_layout Subsection
5771 \begin_layout Standard
5772 The raw binary savestate itself.
5773 Savestate detection uses this file, only present in savestates.
5776 \begin_layout Subsection
5780 \begin_layout Standard
5781 Screenshot of current frame.
5782 Only present in savestates.
5783 First 2 bytes are big-endian width of image, rest are 24-bit RGB image
5785 Height of image is inferred from the width and size of data.
5788 \begin_layout Subsection
5792 \begin_layout Standard
5793 Raw binary SRAM of kind <name> at time of savestate.
5794 Only present in savestates.
5797 \begin_layout Subsection
5801 \begin_layout Standard
5802 The actual input track, one line per subframe (blank lines are skipped).
5805 \begin_layout Itemize
5806 If the first byte of each line is '.', ' ', <tab> or '|', then the line is
5807 part of same frame as previous, otherwise it starts a new frame.
5810 \begin_layout Itemize
5811 First subframe must start a new frame.
5814 \begin_layout Standard
5815 Length of movie in frames is number of lines in input file that start a
5819 \begin_layout Subsection
5823 \begin_layout Standard
5828 \begin_layout Itemize
5829 Each line is in form <firstframe> <numframes> <text>.
5832 \begin_layout Itemize
5833 Linefeed is encoded as
5835 n, backslash is encoded as
5842 \begin_layout Subsection
5846 \begin_layout Standard
5847 Contains textual base-10 rerecord count (as one line; emulator just writes
5848 this, it doesn't read it) + 1.
5851 \begin_layout Subsection
5855 \begin_layout Standard
5856 This member stores set of load IDs.
5857 There is one load ID per rerecord (plus one corresponding to start of project).
5860 \begin_layout Itemize
5861 This member constists of concatenation of records
5864 \begin_layout Itemize
5865 Each record is 2-36 bytes long and can represent 1-16,843,009 consequtive
5869 \begin_layout Itemize
5870 IDs are interpretted as 256-bit big-endian integers with warparound.
5873 \begin_layout Itemize
5874 Initial predicted ID is all zeroes.
5877 \begin_layout Standard
5878 Format of each record is:
5881 \begin_layout Itemize
5882 1 byte: Opcode byte.
5883 Bits 0-4 are prefix length (prefixlen), bits 5-6 are count length (countlen).
5887 \begin_layout Itemize
5888 32-prefixlen bytes of ID.
5891 \begin_layout Itemize
5892 countlen bytes of big-endian count (count).
5895 \begin_layout Standard
5896 Records are processed as follows:
5899 \begin_layout Itemize
5900 To form the first ID encoded by record, take the first prefixlen bytes predicted
5901 ID and append the read ID value to it.
5902 The result is the first ID encoded.
5905 \begin_layout Itemize
5906 If countlen is 0, record encodes 1 ID.
5909 \begin_layout Itemize
5910 If countlen is 1, record encodes 2+count IDs.
5913 \begin_layout Itemize
5914 If countlen is 2, record encodes 258+count IDs.
5917 \begin_layout Itemize
5918 If countlen is 3, record encodes 65794+count IDs.
5921 \begin_layout Itemize
5922 The new predicted ID is the next ID after last one encoded by the record.
5925 \begin_layout Standard
5926 The number of rerecords + 1 is equal to the sum of number of IDs encoded
5930 \begin_layout Subsection
5931 Member: starttime.second
5934 \begin_layout Standard
5935 Movie starting time, second part.
5936 Epoch is Unix epoch.
5937 Default is 1,000,000,000.
5940 \begin_layout Subsection
5941 Member: starttime.subsecond
5944 \begin_layout Standard
5945 Movie starting time, subsecond part.
5950 \begin_layout Subsection
5951 Member: savetime.second
5954 \begin_layout Standard
5955 Movie saving time, second part.
5956 Default is starttime.second.
5957 Only present in savestates.
5960 \begin_layout Subsection
5961 Member: savetime.subsecond
5964 \begin_layout Standard
5965 Movie saving time, subsecond part.
5966 Default is starttime.subsecond.
5967 Only present in savestates.
5970 \begin_layout Section
5971 lsvs file format (commentary tracks)
5974 \begin_layout Subsection
5978 \begin_layout Itemize
5979 Each cluster is 8kB (8192 bytes) in size.
5982 \begin_layout Itemize
5983 Cluster n starts at offset 8192*n in file.
5986 \begin_layout Itemize
5987 The following clusters are system special:
5991 \begin_layout Itemize
5992 Cluster 0 and all clusters with number multiple of 2048 (cluster tables)
5995 \begin_layout Itemize
5996 Cluster 1 (superblock)
6000 \begin_layout Subsection
6004 \begin_layout Itemize
6005 The cluster table describing cluster n is stored in cluster n & ~0x7FF (zero
6009 \begin_layout Itemize
6010 This cluster table consists of 2048 4-byte big-endian integers.
6013 \begin_layout Itemize
6014 Each entry describes a cluster in 16MB supercluster, in order.
6017 \begin_layout Itemize
6018 The valid values for entries are:
6022 \begin_layout Itemize
6023 0x00000000: Free cluster
6026 \begin_layout Itemize
6027 0x00000001: Last cluster in chain.
6030 \begin_layout Itemize
6031 0xFFFFFFFF: System cluster (cluster tables and superblock)
6034 \begin_layout Itemize
6035 (anything else): Number of next cluster in chain.
6036 Must not be multiple of 2048.
6040 \begin_layout Itemize
6041 Due to limitations of the format, there can be at most 2097052 superclusters,
6042 giving maximum file size of 16TB.
6045 \begin_layout Subsection
6049 \begin_layout Itemize
6050 The stream table chain always starts in cluster 2.
6053 \begin_layout Itemize
6054 Otherwise, it follows normal chaining.
6057 \begin_layout Itemize
6058 The stream table consists of 16-byte entries:
6062 \begin_layout Itemize
6063 The first 8 bytes of entry give big-endian beginning position of stream
6064 in units of 1/48000 s.
6067 \begin_layout Itemize
6068 The next 4 bytes of entry give big-endian beginning cluster for control
6070 0 here marks the entry as not present.
6073 \begin_layout Itemize
6074 The last 4 bytes of entry give big-endian beginning cluster for codec data.
6078 \begin_layout Itemize
6079 Stream table clusters are normal clusters, following normal chaining.
6082 \begin_layout Itemize
6083 The stream begnning position is not guarenteed unique.
6084 There can be multiple streams with the same starting position in the file.
6087 \begin_layout Subsection
6091 \begin_layout Itemize
6092 The stream control data consists of entries 4 bytes each:
6096 \begin_layout Itemize
6097 The first 2 bytes of entry gives big-endian length of packet
6100 \begin_layout Itemize
6101 The next byte of entry gives audio length of packet in units of 1/400 s.
6104 \begin_layout Itemize
6105 The last byte is control byte.
6109 \begin_layout Itemize
6110 0 means this entry is not present and the control data ends.
6113 \begin_layout Itemize
6114 1 is valid control entry.
6119 \begin_layout Itemize
6120 The stream control data can also end by running into end of the readable
6125 \begin_layout Itemize
6126 This happens if there happens to be exact multiple of 2048 packets in stream
6127 and number of packets is nonzero.
6131 \begin_layout Itemize
6132 These clusters follow normal chaining.
6135 \begin_layout Subsection
6139 \begin_layout Itemize
6140 Stream codec data consists of raw Opus data packets packed back to back
6141 with nothing in between.
6144 \begin_layout Itemize
6145 Warning: Due to internal limitations, this data must reside in the first
6146 65536 superclusters (that is, the first 1TB of the file).
6149 \begin_layout Subsection
6153 \begin_layout Itemize
6154 The superblock is stored in cluster 1.
6158 \begin_layout Itemize
6159 The first 11 bytes are
6160 \begin_inset Quotes eld
6164 \begin_inset Quotes erd
6170 \begin_layout Itemize
6171 The rest are unused.
6174 \begin_layout Itemize
6175 This cluster 1 is marked as system special.
6178 \begin_layout Section
6179 Known ROM extensions
6182 \begin_layout Itemize
6183 SNES cartridge ROMs: sfc, smc, swc, fig, ufo, sf2, gd3, gd7, dx2, mgd, mgh.
6186 \begin_layout Itemize
6187 DMG cartridge ROMs: dmg, gb.
6190 \begin_layout Itemize
6191 GBC cartridge ROMs: cgb, gbc.
6194 \begin_layout Section
6198 \begin_layout Itemize
6199 The first line must be:
6200 \begin_inset Quotes eld
6204 \begin_inset Quotes erd
6210 \begin_layout Itemize
6211 There is one needed line:
6212 \begin_inset Quotes eld
6216 \begin_inset Quotes erd
6220 This sets system type to <systype>.
6221 The following system types are valid:
6225 \begin_layout Itemize
6229 \begin_layout Itemize
6230 bsx (BS-X non-slotted)
6233 \begin_layout Itemize
6234 bsxslotted (BS-X slotted)
6237 \begin_layout Itemize
6238 sufamiturbo (Sufami Turbo)
6241 \begin_layout Itemize
6242 sgb (Super Game Boy)
6245 \begin_layout Itemize
6249 \begin_layout Itemize
6250 gbc (Game Boy Color)
6253 \begin_layout Itemize
6254 gbc_gba (Game Boy Color with GBA initial register values)
6258 \begin_layout Itemize
6259 Optionally a region can be specified:
6260 \begin_inset Quotes eld
6264 \begin_inset Quotes erd
6268 The following values are valid:
6272 \begin_layout Itemize
6273 autodetect (Autodetect region: snes and sgb only)
6276 \begin_layout Itemize
6277 ntsc (NTSC: snes, bsx, bsxslotted, sufamiturbo, sgb)
6280 \begin_layout Itemize
6281 pal (PAL: snes, sgb)
6284 \begin_layout Itemize
6285 world (World: dmg, gbc, gbc_gba)
6289 \begin_layout Itemize
6290 ROM images are loaded as:
6291 \begin_inset Quotes eld
6295 \begin_inset Quotes erd
6299 The following types are valid:
6303 \begin_layout Itemize
6304 rom (Cartridge ROM in snes, dmg, gbc, gbc_gba.
6305 BIOS in bsx, bsxslotted, sufamiturbo)
6308 \begin_layout Itemize
6309 bsx (Cartridge ROM in bsx, bsxslotted)
6312 \begin_layout Itemize
6313 slot-a (Cartridge ROM in sufamiturbo)
6316 \begin_layout Itemize
6317 slot-b (Cartridge ROM in sufamiturbo)
6321 \begin_layout Itemize
6322 ROM markup can be loaded as:
6323 \begin_inset Quotes eld
6327 \begin_inset Quotes erd
6331 The types valid are the same as for ROMs.
6334 \begin_layout Itemize
6335 Patches can be loaded as
6336 \begin_inset Quotes eld
6339 patch[<offset>] <type> <file>
6340 \begin_inset Quotes erd
6344 The types are the same as for ROMs.
6348 \begin_layout Itemize
6349 Offset is given in form [+-]<number>.
6350 Usually offset is either +0 or -512.
6353 \begin_layout Itemize
6354 Default offset is +0.
6358 \begin_layout Subsection
6362 \begin_layout LyX-Code
6366 \begin_layout LyX-Code
6370 \begin_layout LyX-Code
6371 rom rom speedygonzales.sfc
6374 \begin_layout LyX-Code
6375 patch-512 rom sonicthehedgehog.ips
6378 \begin_layout Subsection
6382 \begin_layout LyX-Code
6386 \begin_layout LyX-Code
6390 \begin_layout LyX-Code
6391 rom rom supergameboy.sfc
6394 \begin_layout LyX-Code
6395 rom dmg megamanV.dmg
6398 \begin_layout Section
6399 Quick'n'dirty encode guide
6402 \begin_layout Enumerate
6403 Start the emulator and load the ROM and movie file.
6406 \begin_layout Enumerate
6407 Set large AVI option 'set-setting avi-large on'
6410 \begin_layout Enumerate
6411 Enable dumping 'dump-avi tmpdump'
6414 \begin_layout Enumerate
6415 Unpause and let it run until you want to end dumping.
6418 \begin_layout Enumerate
6419 Close the emulator (closing the window is the easiest way).
6423 \begin_layout Enumerate
6424 For each tmpdump*.avi file created, on command prompt, do 'x264 --crf 10
6425 -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
6428 \begin_layout Enumerate
6429 Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
6432 \begin_layout Enumerate
6433 Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv + tmpdump_0000001.mkv
6434 + tmpdump_0000002.mkv' (list every tmpdump_<numbers>.mkv, with + in between).
6437 \begin_layout Enumerate
6438 Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'.
6439 Now final.mkv contains quick'n'dirty encode.
6442 \begin_layout Section
6443 Axis configurations for some gamepad types:
6446 \begin_layout Subsection
6450 \begin_layout Standard
6451 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be set to pressure-+.
6454 \begin_layout LyX-Code
6455 set-axis joystick0axis2 pressure-+
6458 \begin_layout LyX-Code
6459 set-axis joystick0axis5 pressure-+
6462 \begin_layout Itemize
6463 This is needed for SDL only.
6464 EVDEV sets those types correctly.
6467 \begin_layout Subsection
6469 \begin_inset Quotes eld
6473 \begin_inset Quotes erd
6479 \begin_layout Standard
6480 Axes 8-19 should be disabled.
6483 \begin_layout LyX-Code
6484 set-axis joystick0axis8 disabled
6487 \begin_layout LyX-Code
6488 set-axis joystick0axis9 disabled
6491 \begin_layout LyX-Code
6492 set-axis joystick0axis10 disabled
6495 \begin_layout LyX-Code
6496 set-axis joystick0axis11 disabled
6499 \begin_layout LyX-Code
6500 set-axis joystick0axis12 disabled
6503 \begin_layout LyX-Code
6504 set-axis joystick0axis13 disabled
6507 \begin_layout LyX-Code
6508 set-axis joystick0axis14 disabled
6511 \begin_layout LyX-Code
6512 set-axis joystick0axis15 disabled
6515 \begin_layout LyX-Code
6516 set-axis joystick0axis16 disabled
6519 \begin_layout LyX-Code
6520 set-axis joystick0axis17 disabled
6523 \begin_layout LyX-Code
6524 set-axis joystick0axis18 disabled
6527 \begin_layout LyX-Code
6528 set-axis joystick0axis19 disabled
6531 \begin_layout Section
6535 \begin_layout Subsection
6536 Problems from BSNES core:
6539 \begin_layout Itemize
6540 The whole pending save stuff.
6543 \begin_layout Itemize
6544 Lack of layer hiding.
6547 \begin_layout Itemize
6548 It is slow (especially accuracy).
6551 \begin_layout Itemize
6552 Firmwares can't be loaded from ZIP archives.
6555 \begin_layout Subsection
6559 \begin_layout Itemize
6560 Modifiers don't work with pseudo-keys (SDL, EVDEV).
6563 \begin_layout Itemize
6564 Audio for last dumped frame is not itself dumped.
6567 \begin_layout Itemize
6568 Audio in UI is pretty bad in quality if game doesn't run at full speed.
6571 \begin_layout Itemize
6572 No menus, command based interface (SDL).
6575 \begin_layout Itemize
6576 Long commands don't scroll.
6579 \begin_layout Section
6583 \begin_layout Subsection
6587 \begin_layout Itemize
6591 \begin_layout Itemize
6592 Fix dumper video corruption with levels 10-18.
6595 \begin_layout Subsection
6599 \begin_layout Itemize
6603 \begin_layout Itemize
6604 Lots of code cleanups
6607 \begin_layout Itemize
6608 Lua interface to settings
6611 \begin_layout Itemize
6612 Allow specifying AVI borders without Lua
6615 \begin_layout Itemize
6616 Fix scaling if vscale > 1 and originx > 0 (left border exists)
6619 \begin_layout Itemize
6620 on_snoop lua callback
6623 \begin_layout Itemize
6624 Faster movie loading and saving.
6627 \begin_layout Subsection
6631 \begin_layout Itemize
6635 \begin_layout Subsection
6639 \begin_layout Itemize
6643 \begin_layout Itemize
6644 Save jukebox functionality.
6647 \begin_layout Subsection
6651 \begin_layout Itemize
6652 Try to fix some nasty failing movie load edge cases
6655 \begin_layout Itemize
6656 Allow specifying scripts to run on command line.
6659 \begin_layout Subsection
6663 \begin_layout Itemize
6664 Major source code reorganization.
6667 \begin_layout Itemize
6668 Backup savestates before overwriting.
6671 \begin_layout Itemize
6672 Don't crash if loading initial state fails.
6675 \begin_layout Subsection
6679 \begin_layout Itemize
6683 \begin_layout Itemize
6684 Fix author name parsing
6687 \begin_layout Itemize
6688 Fix rerecord counting
6691 \begin_layout Itemize
6692 (SDL) Print messages to console if SDL is uninitialized
6695 \begin_layout Itemize
6696 Add movieinfo program
6699 \begin_layout Itemize
6700 Fix loading movies starting from SRAM.
6703 \begin_layout Subsection
6707 \begin_layout Itemize
6708 Add support for unattended dumping
6711 \begin_layout Itemize
6712 Fix compiling for Win32
6715 \begin_layout Itemize
6716 Don't lock up if sound can't be initialized
6719 \begin_layout Itemize
6720 Strip trailing CR from commands
6723 \begin_layout Itemize
6724 Don't try to do dubious things in global ctors (fix crash on startup)
6727 \begin_layout Subsection
6731 \begin_layout Itemize
6732 Small documentation tweaking
6735 \begin_layout Itemize
6739 \begin_layout Itemize
6740 Fix major bug in modifier matching
6743 \begin_layout Subsection
6747 \begin_layout Itemize
6748 Lots of documentation fixes
6751 \begin_layout Itemize
6752 Use dedicated callbacks for event backcomm., not commands.
6755 \begin_layout Itemize
6756 Ensure that the watchdog is not hit when executing delayed reset.
6759 \begin_layout Itemize
6760 Remove errant tab from joystick message.
6763 \begin_layout Subsection
6767 \begin_layout Itemize
6768 Make autofire operate in absolute time, not linear time
6771 \begin_layout Itemize
6772 Reinitialize controls when resuming from loadstate
6775 \begin_layout Itemize
6776 Some more code cleanups
6779 \begin_layout Itemize
6780 If Lua allocator fails, call OOM_panic()
6783 \begin_layout Itemize
6784 Byte/word/dword/qword sized host memory write/read functions.
6787 \begin_layout Itemize
6788 Dump at correct framerate if dumping interlaced NTSC (height=448).
6791 \begin_layout Subsection
6795 \begin_layout Itemize
6796 Actually include the complete source code
6799 \begin_layout Itemize
6803 \begin_layout Subsection
6807 \begin_layout Itemize
6808 Document {save,start}time.{,sub}second.
6811 \begin_layout Itemize
6812 Intercept time() from bsnes core.
6815 \begin_layout Subsection
6819 \begin_layout Itemize
6820 Allow disabling time() interception (allow build on Mac OS X)
6823 \begin_layout Itemize
6824 Use SDLMain on Mac OS X (make SDL not crash)
6827 \begin_layout Itemize
6828 Disable delayed resets (just plain too buggy for now).
6831 \begin_layout Itemize
6835 \begin_layout Itemize
6836 Use 16-bit for graphics/video instead of 32-bit.
6839 \begin_layout Itemize
6840 gui.rectangle/gui.pixel
6843 \begin_layout Itemize
6847 \begin_layout Itemize
6848 New CSCD writer implementation.
6851 \begin_layout Subsection
6855 \begin_layout Itemize
6856 Fix interaction of * and +.
6859 \begin_layout Itemize
6863 \begin_layout Itemize
6864 Use gettimeofday()/usleep(), these seem portable enough.
6867 \begin_layout Itemize
6868 Move joystick axis manipulation to keymapper code.
6871 \begin_layout Itemize
6872 Changes to how read-only works.
6875 \begin_layout Itemize
6876 Refactor controller input code.
6879 \begin_layout Subsection
6883 \begin_layout Itemize
6884 Fix mouseclick scale compensation.
6887 \begin_layout Itemize
6888 Draw area boundaries correctly in SDL code.
6891 \begin_layout Itemize
6895 \begin_layout Itemize
6896 Fix CSCD output (buffer overrun and race condition).
6899 \begin_layout Subsection
6903 \begin_layout Itemize
6904 JMD dumping support.
6907 \begin_layout Itemize
6908 Allow unattended dumping to JMD.
6911 \begin_layout Itemize
6915 \begin_layout Itemize
6916 Switch back to 32-bit colors.
6919 \begin_layout Itemize
6920 Add Lua function gui.color.
6923 \begin_layout Itemize
6924 Use some new C++11 features in GCC 4.6.
6927 \begin_layout Itemize
6928 Be prepared for core frequency changes.
6931 \begin_layout Itemize
6932 Pass colors in one chunk from Lua.
6935 \begin_layout Subsection
6939 \begin_layout Itemize
6940 New lua functions gui.line(), gui.status() and gui.circle(), memory.vma_count(),
6941 memory.read_vma() and memory.find_vma().
6944 \begin_layout Itemize
6945 Numerious documentation fixups
6948 \begin_layout Itemize
6949 RTC time format changed
6952 \begin_layout Itemize
6953 Reformat flags display
6956 \begin_layout Itemize
6957 Allow lua package name to be overridden
6960 \begin_layout Itemize
6961 SDUMP (high-quality dumping).
6964 \begin_layout Itemize
6965 Split platform support to plugins.
6968 \begin_layout Itemize
6969 Make all sound plugins support basic sound commands
6972 \begin_layout Itemize
6973 Support portaudio for sound.
6976 \begin_layout Itemize
6977 Allow disable Lua/SDL searching.
6980 \begin_layout Itemize
6981 Upconvert colors when copying lcscreen to screen.
6984 \begin_layout Itemize
6985 Reorganize source tree.
6988 \begin_layout Itemize
6989 Evdev joystick support.
6992 \begin_layout Itemize
6993 Refactor more code into generic window code.
6996 \begin_layout Subsection
7000 \begin_layout Itemize
7001 Refactor message handling.
7004 \begin_layout Itemize
7008 \begin_layout Itemize
7012 \begin_layout Itemize
7013 Finish pending saves before load/quit.
7016 \begin_layout Itemize
7017 Wxwidgets graphics plugin.
7020 \begin_layout Subsection
7024 \begin_layout Itemize
7025 Get rid of win32-crap.[ch]pp.
7028 \begin_layout Itemize
7029 Move files around a lot.
7032 \begin_layout Itemize
7033 Get rid of need for host C++ compiler.
7036 \begin_layout Itemize
7040 \begin_layout Itemize
7041 Refactor inter-component communication.
7044 \begin_layout Itemize
7048 \begin_layout Itemize
7049 Fix crash on multiline aliases.
7052 \begin_layout Itemize
7053 Load/Save settings in wxwidgets gui.
7056 \begin_layout Subsection
7060 \begin_layout Itemize
7061 Patch problems in bsnes core
7064 \begin_layout Itemize
7065 SNES is little-endian, not big-endian!
7068 \begin_layout Itemize
7069 Fix memory corruption in lcscreen::load()
7072 \begin_layout Subsection
7076 \begin_layout Itemize
7077 Fix interpretting repeat counts in rrdata loading.
7080 \begin_layout Itemize
7081 New lua callback: on_frame()
7084 \begin_layout Itemize
7085 Remove calls to runtosave() that aren't supposed to be there
7088 \begin_layout Itemize
7089 Lua function: movie.read_rtc()
7092 \begin_layout Itemize
7093 Ignore src/fonts/font.cpp
7096 \begin_layout Itemize
7097 Fix more bsnes core problems
7100 \begin_layout Itemize
7101 Control bsnes random seeding
7104 \begin_layout Itemize
7108 \begin_layout Itemize
7109 Some bsnes core debugging features (state dump and state hash)
7112 \begin_layout Itemize
7113 Fix titlebar version number (no, the last version wasn't 'lsnes-0-beta21',
7114 it was 'lsnes rr0-beta21').
7117 \begin_layout Subsection
7121 \begin_layout Itemize
7122 Fix memory corruption due to macro/field mixup
7125 \begin_layout Itemize
7126 search-memory update
7129 \begin_layout Itemize
7130 Allow direct-mapped framebuffer
7133 \begin_layout Itemize
7134 SDL: Use SDL_ANYFORMAT if possible
7137 \begin_layout Itemize
7138 SDMP2SOX: 2s delay modes.
7141 \begin_layout Itemize
7145 \begin_layout Itemize
7146 Use sed -E, not sed -r.
7147 Fixes building on Mac OS X.
7150 \begin_layout Itemize
7151 Wxwidgets: Save jukebox on exit
7154 \begin_layout Itemize
7155 Fix RTC if using load-movie on savestate.
7158 \begin_layout Itemize
7159 Fix crash related to full console mode.
7162 \begin_layout Subsection
7166 \begin_layout Itemize
7167 Wxwidgets: Allow bringing application to foreground on Mac OS X.
7170 \begin_layout Itemize
7171 Wxwidgets: Allow compiling on Mac OS X.
7174 \begin_layout Itemize
7175 Use movie compare instead of movie hashing (faster save/load).
7178 \begin_layout Itemize
7182 \begin_layout Subsection
7186 \begin_layout Itemize
7187 sdmp2sox: Pad soundtrack if using -l or -L.
7190 \begin_layout Itemize
7191 sdmp2sox: Fix NTSC overscan.
7194 \begin_layout Itemize
7195 sdmp2sox: Add AR correction mode.
7198 \begin_layout Itemize
7199 call lua_close() when exiting.
7202 \begin_layout Itemize
7203 Fix zip_writer bug causing warnings from info-zip and error from advzip.
7206 \begin_layout Subsection
7210 \begin_layout Itemize
7211 Fix IPS patching code (use bsnes core IPS patcher).
7214 \begin_layout Itemize
7215 Implement BPS patching (using bsnes core IPS patcher).
7218 \begin_layout Itemize
7219 Add feature to load headered ROMs.
7222 \begin_layout Subsection
7226 \begin_layout Itemize
7227 Show command names when showing keybindings
7230 \begin_layout Subsection
7234 \begin_layout Itemize
7235 Fix pause-on-end to be actually controllable
7238 \begin_layout Itemize
7239 SDL: Poll all events in queue, not just first one (fixes slowness in command
7243 \begin_layout Itemize
7244 Wxwidgets: Fix ROM loading.
7247 \begin_layout Subsection
7251 \begin_layout Itemize
7252 Lua: Add gui.textH, gui.textV, gui.textHV
7255 \begin_layout Itemize
7256 Fix text colors on SDL on Mac OS X
7259 \begin_layout Itemize
7260 Mode 'F' for finished in readonly mode.
7263 \begin_layout Itemize
7267 \begin_layout Itemize
7268 Reliably pause after skip poll
7271 \begin_layout Itemize
7272 Split UI and core into their own threads
7275 \begin_layout Subsection
7279 \begin_layout Itemize
7280 Remove leftover dummy SRAM slot
7283 \begin_layout Itemize
7284 Fix controller numbers.
7287 \begin_layout Subsection
7291 \begin_layout Itemize
7292 Fix lsnes-dumpavi after interface change.
7295 \begin_layout Itemize
7296 Also give BSNES patches for v085.
7299 \begin_layout Itemize
7300 Pack movie data in memory.
7303 \begin_layout Subsection
7307 \begin_layout Itemize
7308 Fix framecount/length given when loading movies.
7311 \begin_layout Itemize
7312 Controller command memory leak fixes.
7315 \begin_layout Itemize
7316 Don't leak palette if freeing screen object.
7319 \begin_layout Subsection
7323 \begin_layout Itemize
7327 \begin_layout Itemize
7328 Wxwidgets: Allow controlling dumper from the menu.
7331 \begin_layout Subsection
7335 \begin_layout Itemize
7336 Rewrite parts of manual
7339 \begin_layout Itemize
7340 Lua: Make it work with Lua 5.2.
7343 \begin_layout Subsection
7347 \begin_layout Itemize
7348 Win32: Fix compile errors.
7351 \begin_layout Subsection
7355 \begin_layout Itemize
7356 Refactor controller input code.
7359 \begin_layout Itemize
7360 Fix crash when using command line on SDL / Mac OS X.
7363 \begin_layout Subsection
7367 \begin_layout Itemize
7368 Delete core/coroutine (obsolete)
7371 \begin_layout Itemize
7372 Lag input display by one frame.
7375 \begin_layout Itemize
7376 Rewind movie to beginning function.
7379 \begin_layout Itemize
7380 Fix wrong frame number reported to Lua when repainting after loadstate
7383 \begin_layout Itemize
7384 Support UI editing of jukebox
7387 \begin_layout Itemize
7388 Wxwidgets: Save settings on exit.
7391 \begin_layout Itemize
7392 Support ${project} for filenames
7395 \begin_layout Itemize
7396 SDL: Fix command history
7399 \begin_layout Subsection
7403 \begin_layout Itemize
7404 Fix some order-of-global-ctor bugs.
7407 \begin_layout Subsection
7411 \begin_layout Itemize
7412 Fix crashes when quitting on Win32.
7415 \begin_layout Subsection
7419 \begin_layout Itemize
7420 EVDEV: Queue keypresses from joystick, don't send directly
7423 \begin_layout Itemize
7424 Wxwidgets: Load-Preserve that actually works.
7427 \begin_layout Subsection
7431 \begin_layout Itemize
7432 Wxwidgets: GUI for memory search.
7435 \begin_layout Itemize
7436 Warn about using synchronous queue in UI callback.
7439 \begin_layout Subsection
7443 \begin_layout Itemize
7444 Remember last saved file for each ROM
7447 \begin_layout Itemize
7448 Support MT dumping via boost.
7451 \begin_layout Itemize
7455 \begin_layout Itemize
7459 \begin_layout Itemize
7460 Make mouse be ordinary input instead of special-casing
7463 \begin_layout Itemize
7464 SDL: Don't screw up commands with NUL codepoints.
7467 \begin_layout Subsection
7471 \begin_layout Itemize
7472 Merge status panel and main window
7475 \begin_layout Itemize
7476 True movie slot support (the rest of it)
7479 \begin_layout Itemize
7480 SDL: Fix compilation error
7483 \begin_layout Itemize
7484 Elminate cross calls in dump menu code.
7487 \begin_layout Subsection
7491 \begin_layout Itemize
7492 Cancel pending saves command
7495 \begin_layout Itemize
7496 Wxwidgets: Code refactoring
7499 \begin_layout Itemize
7500 Wxwidgets: Fix system -> reset
7503 \begin_layout Itemize
7504 Wxwidgets: Read watch expressions in the right thread
7507 \begin_layout Subsection
7511 \begin_layout Itemize
7512 Wxwidgets: Don't prompt for member when running Lua script (Lua doesn't
7516 \begin_layout Itemize
7517 Wxwidgets: 128 -> 1024 Autohold slots (in case more are needed).
7520 \begin_layout Itemize
7521 Don't append trailing '-' to prefix when saving movie.
7524 \begin_layout Itemize
7525 Fix ROM/savestate handling (don't let user mismatch ROM and savestates).
7528 \begin_layout Subsection
7532 \begin_layout Itemize
7533 Document memory watch syntax.
7536 \begin_layout Subsection
7540 \begin_layout Itemize
7541 Fix unattended dumping (lsnes-dumpavi)
7544 \begin_layout Itemize
7548 \begin_layout Itemize
7549 Use adv_dumper instead of the old interface in lsnes-dumpavi (changes syntax)
7552 \begin_layout Itemize
7553 Add option to control sample rate preturbation in AVI dumper
7556 \begin_layout Subsection
7560 \begin_layout Itemize
7561 Wxwidgets: Fix dumper submodes
7564 \begin_layout Itemize
7565 Set core controller types before loadstate
7568 \begin_layout Subsection
7572 \begin_layout Itemize
7573 Fix compiling with bsnes v086.
7576 \begin_layout Subsection
7580 \begin_layout Itemize
7581 Don't prompt before quitting
7584 \begin_layout Itemize
7585 Start unpaused, preserve pause/unpause over load.
7588 \begin_layout Itemize
7589 Try to autodetect if ROM is headered.
7592 \begin_layout Itemize
7593 Wxwidgets: Only bring up ROM patching screen if specifically requested.
7596 \begin_layout Itemize
7597 Allow configuring some hotkeys.
7600 \begin_layout Subsection
7604 \begin_layout Itemize
7605 Lots of code cleanups
7608 \begin_layout Itemize
7609 Fix JMD compression (JMD dumping was broken)
7612 \begin_layout Itemize
7613 Don't crash if Lua C function throws an exception.
7616 \begin_layout Itemize
7617 Support bitmap drawing in Lua.
7620 \begin_layout Itemize
7621 Fix bsnes v085/v086 patches.
7624 \begin_layout Itemize
7625 Improve stability on win32.
7628 \begin_layout Subsection
7632 \begin_layout Itemize
7633 Don't corrupt movie if movie length is integer multiple of frames per page.
7636 \begin_layout Subsection
7640 \begin_layout Itemize
7641 New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
7644 \begin_layout Itemize
7645 New Lua functions: emulator_ready(), utime(), set_idle_timeout(), set_timer_time
7646 out(), bit.extract(), bit.value(), input.geta(), input.seta() and input.controllertyp
7650 \begin_layout Itemize
7651 Wxwidgets: Fix internal focus lost (hotkeys stop working)
7654 \begin_layout Itemize
7655 Wxwidgets: Fix broken modifiers
7658 \begin_layout Itemize
7659 on_paint has parameter now.
7662 \begin_layout Itemize
7663 Optional initital fill for bitmaps
7666 \begin_layout Itemize
7667 Fix palette changing.
7670 \begin_layout Itemize
7671 Optimize rendering a bit.
7674 \begin_layout Itemize
7678 \begin_layout Subsection
7682 \begin_layout Itemize
7683 Movieinfo: Fix display of port #2 type.
7686 \begin_layout Itemize
7687 Call on_input() after loadstate.
7690 \begin_layout Subsection
7694 \begin_layout Itemize
7695 Fix writing port2 data to movie.
7698 \begin_layout Itemize
7699 Fix SRAM handling with Bsnes v087.
7702 \begin_layout Subsection
7706 \begin_layout Itemize
7707 Library loading support
7710 \begin_layout Itemize
7711 Built-in TSCC encoder
7714 \begin_layout Itemize
7715 Hi-color (256T colors) dumping.
7718 \begin_layout Itemize
7719 Dump over TCP/IP(v6)
7722 \begin_layout Itemize
7723 Hidable status panel
7726 \begin_layout Itemize
7730 \begin_layout Itemize
7731 Adjustable sound volume
7734 \begin_layout Itemize
7738 \begin_layout Itemize
7739 Allow DnD into filename boxes
7742 \begin_layout Itemize
7746 \begin_layout Itemize
7747 Portaudio: Fix speaker popping at start
7750 \begin_layout Itemize
7754 \begin_layout Itemize
7755 Speed adjustment menu
7758 \begin_layout Itemize
7759 Win32 joystick support
7762 \begin_layout Itemize
7763 Lua: gui.rainbow and gui.box
7766 \begin_layout Itemize
7767 Split key lists into classes (the key list was large!)
7770 \begin_layout Itemize
7771 More save slots support
7774 \begin_layout Itemize
7775 Wxwidgets (wxJoystick) joystick support
7778 \begin_layout Subsection
7782 \begin_layout Itemize
7783 Lots of internal joystick refactoring
7786 \begin_layout Itemize
7787 Evdev: Add mapping for BTN_TOOL_QUINTTAP
7790 \begin_layout Itemize
7791 Wxwidgets: Settings mode (open settings without ROM)
7794 \begin_layout Itemize
7795 Wxwidgets: Prompt key to use option
7798 \begin_layout Itemize
7799 Wxwidgets: Fix crash if key goes away underneath
7802 \begin_layout Itemize
7803 Wxwidgets: Fix mouse position in presence of scaling
7806 \begin_layout Itemize
7807 AVI dumper: Mode 4 (high-quality resampling to common rate using SRC)
7810 \begin_layout Itemize
7811 Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree control doesn't
7812 seem to work well on WinXP)
7815 \begin_layout Itemize
7816 Start paused option.
7819 \begin_layout Subsection
7823 \begin_layout Itemize
7827 \begin_layout Itemize
7828 lsnes-dumpavi: Start Lua before starting dumper
7831 \begin_layout Itemize
7832 AVI: Fix secondary audio in mode 4.
7835 \begin_layout Subsection
7839 \begin_layout Itemize
7840 AVI: Refactor ZMBV a bit.
7843 \begin_layout Itemize
7844 Fix error reading analog values from movie file
7847 \begin_layout Subsection
7851 \begin_layout Itemize
7852 Delayed reset support
7855 \begin_layout Itemize
7856 Lua: memory.hash_region
7859 \begin_layout Subsection
7863 \begin_layout Itemize
7864 Rework the build system
7867 \begin_layout Itemize
7868 Typing input support
7871 \begin_layout Itemize
7872 Fix building with bsnes v086 and v087.
7875 \begin_layout Itemize
7876 SDL: Save settings on exit
7879 \begin_layout Itemize
7880 SDL: Command to enter command line mode with given command.
7883 \begin_layout Itemize
7884 SDL: More advanced command editing.
7887 \begin_layout Subsection
7891 \begin_layout Itemize
7893 \begin_inset Quotes eld
7896 arrow keys and enter don't work
7897 \begin_inset Quotes erd
7903 \begin_layout Itemize
7907 \begin_layout Itemize
7908 Show mode changes due to rewinding.
7911 \begin_layout Itemize
7912 Unsafe rewind support
7915 \begin_layout Itemize
7916 Fix directory transversal.
7919 \begin_layout Subsection
7923 \begin_layout Itemize
7924 AVI: Sound mode 5 (48kHz high-quality)
7927 \begin_layout Itemize
7931 \begin_layout Itemize
7932 Map the SNES bus into address space
7935 \begin_layout Itemize
7936 Fix loading memory watch files with CRLF line endings
7939 \begin_layout Subsection
7943 \begin_layout Itemize
7944 Map bsnes internal state into memory space
7947 \begin_layout Itemize
7949 \begin_inset Quotes eld
7952 click on panel wedges the emulator
7953 \begin_inset Quotes erd
7959 \begin_layout Itemize
7960 DnD movies/saves on the main window.
7963 \begin_layout Subsection
7967 \begin_layout Itemize
7968 Split core bindings into own module.
7971 \begin_layout Itemize
7972 Remember invalid settings
7975 \begin_layout Itemize
7976 Support for modified Gambatte core for GB/GBC emulation.
7979 \begin_layout Itemize
7980 Reload/swap ROM function
7983 \begin_layout Subsection
7987 \begin_layout Itemize
7988 Fix step poll function
7991 \begin_layout Subsection
7995 \begin_layout Itemize
7996 Non-insane savestate anchoring
7999 \begin_layout Subsection
8003 \begin_layout Itemize
8004 More Memory search methods
8007 \begin_layout Itemize
8008 Preserve movie if loading in RO mode.
8011 \begin_layout Itemize
8012 Fix a obscure case in timeline check
8015 \begin_layout Itemize
8016 Revamp the entiere ROM loading code
8019 \begin_layout Itemize
8023 \begin_layout Itemize
8027 \begin_layout Itemize
8028 Standalone hotkey config dialog
8031 \begin_layout Itemize
8032 Show bindings in more user-friendly format
8035 \begin_layout Subsection
8039 \begin_layout Itemize
8043 \begin_layout Itemize
8044 Fix uninitialized variables in bsnes v085
8047 \begin_layout Subsection
8051 \begin_layout Itemize
8052 Merge gambatte core into mainline (from its own branch)
8055 \begin_layout Itemize
8056 Wxwidgets: Show expected dump file formats
8059 \begin_layout Itemize
8060 Memory watch: Data typing
8063 \begin_layout Itemize
8064 lsnes internal MMIO area.
8067 \begin_layout Itemize
8068 Wxwidgets: New memory watch editor
8071 \begin_layout Itemize
8072 Hexadecimal memory watches
8075 \begin_layout Itemize
8076 Wxwidgets: Monospaced panel
8079 \begin_layout Itemize
8080 Wxwidgets: Split memory watches in panel
8083 \begin_layout Itemize
8084 Wxwidgets: Disable VMAs in memory search
8087 \begin_layout Itemize
8088 lsnes-dumpavi: Fix speed bug
8091 \begin_layout Itemize
8092 Movie subtitle support
8095 \begin_layout Itemize
8096 Fix rerecord count reporting
8099 \begin_layout Itemize
8100 Don't trash movie when loading in readonly mode.
8103 \begin_layout Subsection
8107 \begin_layout Itemize
8108 Wxwidgets: Fix crashes on closing settings dialogs on Mac OS X.
8111 \begin_layout Itemize
8112 Fix build on Mac OS X.
8115 \begin_layout Itemize
8119 \begin_layout Itemize
8120 Wxwidgets: Hidable messages window
8123 \begin_layout Itemize
8127 \begin_layout Itemize
8128 Bsnes: Support inconsistent saves
8131 \begin_layout Itemize
8132 Bsnes: Allow simulating saving every frame
8135 \begin_layout Itemize
8136 Fix desync if savestate is loaded in readonly mode in certain conditions.
8139 \begin_layout Itemize
8140 Wxwidgets: Fix save dialogs on Mac OS X.
8143 \begin_layout Itemize
8144 Wxwidgets: Fix insane status width on Win32.
8147 \begin_layout Itemize
8148 Wxwidgets: Fix autohold processing to be faster.
8151 \begin_layout Itemize
8152 Wxwidgets: Allow loading ROMs and movies from commandline.
8155 \begin_layout Subsection
8159 \begin_layout Itemize
8160 Be a bit smarter with --load
8163 \begin_layout Itemize
8164 Rewrote higher-level parts of audio system
8167 \begin_layout Itemize
8168 Tool to build commentary tracks
8171 \begin_layout Itemize
8175 \begin_layout Itemize
8176 Gambatte: Add support for SVN358
8179 \begin_layout Itemize
8180 Use builtin font when rendering status panel.
8183 \begin_layout Itemize
8184 Option to detach memory watch to its own window.
8187 \begin_layout Itemize
8188 Recent ROMs/Movies menu
8191 \begin_layout Itemize
8195 \begin_layout Itemize
8196 Useful lag counter for SNES games that autopoll
8199 \begin_layout Itemize
8200 Fix buffer overflow in gambatte sound output
8203 \begin_layout Subsection
8207 \begin_layout Itemize
8208 Don't blow up on wxGTK if the window is hidden somehow
8211 \begin_layout Itemize
8212 Support simultaneous drop of ROM and movie.
8215 \begin_layout Itemize
8216 Gambatte: Don't save spurious SRAMs.
8219 \begin_layout Itemize
8220 Make SGB ROMs actually usable.
8223 \begin_layout Itemize
8224 Fix so that saved movies appear in recent movies.
8227 \begin_layout Itemize
8228 Don't open multiple commentary editors at once.
8231 \begin_layout Subsection
8235 \begin_layout Itemize
8236 Lua: memory.readregion/memory.writeregion
8239 \begin_layout Itemize
8240 Lua: memory.map{,s}{byte,word,dword,qword}
8243 \begin_layout Itemize
8244 Lua: memory.map_structure
8247 \begin_layout Itemize
8248 Lua: Fix bus_address for gambatte
8251 \begin_layout Itemize
8252 Fix features dependent of bsnes debugger
8255 \begin_layout Itemize
8256 Cleanup bsnes debugger logic
8259 \begin_layout Itemize
8260 Fix resets in presence of save every frame
8263 \begin_layout Subsection
8267 \begin_layout Itemize
8268 Lua: input.lcid_to_pcid
8271 \begin_layout Itemize
8272 Fix off-by-one bug with slot hashes
8275 \begin_layout Itemize
8276 Fix crashes on certain memory watch expressions
8279 \begin_layout Itemize
8280 Lua: memory.read_expr
8283 \begin_layout Itemize
8284 Lua: Fix memory.read_expr on nil argument
8287 \begin_layout Itemize
8288 Fix the code to compile on G++ 4.7
8291 \begin_layout Itemize
8292 Change button_id to be a function pointer field, not a virtual method
8295 \begin_layout Itemize
8296 Add bsnes patches to fix libsnes to compile on GCC 4.7
8299 \begin_layout Itemize
8300 Gambatte: Always use legacy lag counting
8303 \begin_layout Itemize
8304 Memory commands: Memory addresses are up to 16 hex digits, not up to 8
8307 \begin_layout Itemize
8308 Fix analog controllers
8311 \begin_layout Itemize
8315 \begin_layout Itemize
8316 Fix button symbols in input display
8319 \begin_layout Itemize
8320 Compensate for nuts bsnes superscope/justifier handling
8323 \begin_layout Itemize
8324 Lua: Fix bit.extract boolean handling
8327 \begin_layout Subsection
8331 \begin_layout Itemize
8332 Stop at movie end: Don't off-by-one
8335 \begin_layout Itemize
8336 Fix crash closing lsnes with voice playback active.
8339 \begin_layout Itemize
8340 Import/Export OggOpus for commentary tracks
8343 \begin_layout Itemize
8344 16-button controllers.
8347 \begin_layout Itemize
8348 Don't show nonexistent controllers in input display
8351 \begin_layout Itemize
8352 Set voice record/playback volume from UI
8355 \begin_layout Itemize
8356 Patches for gambatte SVN364.
8359 \begin_layout Itemize
8360 Load markup (if exists) even without gamepack file.
8363 \begin_layout Itemize
8364 Screen rotation & flipping
8367 \begin_layout Itemize
8368 Lua: Some new bit functions
8371 \begin_layout Itemize
8372 Auto-refresh voice streams on change.
8375 \begin_layout Itemize
8376 Auto-refresh subtitles on change & new subtitle editor.
8379 \begin_layout Itemize
8380 Fix music volume adjustment.
8383 \begin_layout Subsection
8387 \begin_layout Itemize
8388 Wxwidgets: Fix memory watch rendering.
8391 \begin_layout Itemize
8392 Wxwidgets: Allow setting voice stream gain.
8395 \begin_layout Itemize
8396 Wxwidgets: VU meters and volume adjustment.
8399 \begin_layout Itemize
8400 Lua: Custom fonts support.
8403 \begin_layout Itemize
8404 Lua: Fix methods stopping working when resetting Lua.
8407 \begin_layout Itemize
8408 Fix loading standard-format movies in preserve (readonly) mode.
8411 \begin_layout Subsection
8415 \begin_layout Itemize
8416 Primitive movie editor
8419 \begin_layout Itemize
8420 Fix VU meter with no sound device.
8423 \begin_layout Itemize
8424 Fix various undefined return values.
8427 \begin_layout Itemize
8428 Show rates in VU meter window.
8431 \begin_layout Subsection
8435 \begin_layout Itemize
8436 Commentary tool: Set nominal bit rate and limit max bit rate.
8439 \begin_layout Itemize
8440 Lua: Unconditionally reload host memory on loadstate
8443 \begin_layout Itemize
8444 Lua: Query bindings, manipulate aliases, create inverse bindings
8447 \begin_layout Itemize
8448 Lua: Fix crashes with resetting VM while some types of paint requests are
8452 \begin_layout Itemize
8453 Lua: gui.text: Clip the text properly instead of corrupting memory in some
8457 \begin_layout Itemize
8458 Save screenshot header reliably
8461 \begin_layout Itemize
8462 Lua: Backport input.get2 and input.set2
8465 \begin_layout Itemize
8466 Lua: New controller info functions.
8469 \begin_layout Itemize
8470 Movie editor: Fix reset delay counters to be the right way around.
8473 \begin_layout Itemize
8477 \begin_layout Itemize
8478 Lua: on_button and input.veto_button.
8481 \begin_layout Subsection
8485 \begin_layout Itemize
8486 Fix saving PNG screenshots on Win32.
8489 \begin_layout Itemize
8490 Movie editor: Sweep axis.
8493 \begin_layout Itemize
8494 Load selected slot in ro/rw/preserve/movie mode.
8497 \begin_layout Itemize
8498 input.joyset: Preserve and invert user input.
8501 \begin_layout Itemize
8502 Allow immediate saving at point of save (transfer saves).
8505 \begin_layout Itemize
8506 Wxwidgets: Filter filenames in dialogs, autoappend extensions.
8509 \begin_layout Itemize
8510 data/verysmall.font: Add missing glyph 70 (
8511 \begin_inset Quotes eld
8515 \begin_inset Quotes erd
8521 \begin_layout Itemize
8522 Lua: Allow painting custom fonts with halo.
8525 \begin_layout Itemize
8526 Fix memory value search to work on byte types.
8529 \begin_layout Subsection
8533 \begin_layout Itemize
8534 Fix status panel (and movie editor) flicker
8537 \begin_layout Itemize
8538 Show effects of Lua in input display
8541 \begin_layout Itemize
8542 Offer lsmv.backup as file filter too for load lsmv
8545 \begin_layout Itemize
8546 Allow slowing down subframe advance
8549 \begin_layout Itemize
8550 Display current save slot information
8553 \begin_layout Itemize
8557 \begin_layout Itemize
8558 Fix hotkeys stopping working after X-ing settings dialog
8561 \begin_layout Itemize
8562 Movie editor: Fix bug if extending finished movie
8565 \begin_layout Itemize
8566 Cap current_frame_first_subframe to movie size when recounting movie
8569 \begin_layout Itemize
8570 Movie editor: Interpret ctrl+click as right click