3 lsnes is SNES rerecording emulator based on bsnes core.
7 1. bsnes libsnes (for bsnes SNES core)
9 (a) v084-v087 (v084 or v085 for delayreset support)
11 (b) accuracy or compatiblity core with debugger enabled.
13 (c) Patched version (using included 7 patches)
15 2. gambatte (for gambatte core)
17 (a) SVN r320, r358 or r364
19 (b) Patched with included patches
27 6. boost_thread (if native std::thread is not available)
31 8. sdlmain (SDL only, part of SDL)
33 9. boost_conversion (this is header-only library)
35 10. libswscale (wxwidgets graphics only)
37 11. Portaudio (portaudio sound only)
39 12. libao (libao sound only)
41 13. Lua version 5.1.X or 5.2.X
45 15. libopus (optional, for commentary track tool)
49 • Copy bsnes sources (the bsnes subdirectory) to subdirectory
50 'bsnes' (for bsnes core).
52 • Copy gambatte sources to subdirectory 'gambatte' (for gambatte
55 • Patch the bsnes sources with included patches (directory
56 'bsnes-patches/<version>', bsnes core)
58 • Patch the gambatte sources with included patches (directory
59 'gambatte-patches/<version>', gambatte core)
61 • Edit options.build (or copy of that file)
63 • Run make (passing 'OPTIONS=<filename>' if using something else
66 4 Command line options
80 Load <file> as movie or savestate file on startup.
84 Instead of starting the emulator, only display the settings.
88 Run this Lua file on startup
90 4.2 dump options (lsnes-dumpavi only)
94 Load <file> as ROM. Required.
98 Load <filename> as movie or savestate file on startup. Required.
100 4.2.3 --dumper=<dumper>
102 Set the dumper to use (required). Use 'list' for listing of known
105 4.2.4 --firmware-path=<path>
107 Set path to look for firmware.
111 Set the mode to use (required for dumpers with multiple modes,
112 forbidden otherwise). Use 'list' for known modes.
114 4.2.6 --prefix=<prefix>
116 Set dump prefix. Default is “avidump”.
118 4.2.7 --option=<name>=<value>
120 Set option <name> to value <value>.
122 4.2.8 --length=<length>
124 Set number of frames to dump. Mandatory.
128 Run specified lua script (lsnes-dumpavi does not have
129 initialization files).
131 4.2.10 --load-library=<library>
133 Load the specified shared object / dynamic library / dynamic link
136 4.3 lsnes settings directory
138 The lsnes settings directory is (in order of decreasing
141 • Windows: %APPDATA%\lsnes (if %APPDATA% exists)
143 • Unix: $XDG_CONFIG_HOME/lsnes (if $XDG_CONFIG_HOME exists)
145 • Unix: $HOME/.config/lsnes (if $HOME exists)
147 • All: . (fallback default).
149 If leading directories do not exist, attempt to create them is
154 • Commands beginning with '*' invoke the corresponding command
155 without alias expansion.
157 • If command starts with '+' (after possible '*'), the command is
158 executed as-is when button is pressed, and when button is
159 released, it is executed with '+' replaced by '-'.
161 • Commands without '+' execute only on negative edge (release).
163 5.1 run-script <script>
165 Run <script> as if commands were entered on the command line.
167 5.2 Memory manipulation
169 <address> may be decimal or hexadecimal (prefixed with '0x').
170 <value> can be hexadecimal (prefixed with '0x'), unsigned or
171 signed (prefixed with '-') decimal.
173 The available element <sizes> are:
183 When reading RAM and ROM, multi-byte reads/writes are big-endian.
184 When dealing with DSP memory, multi-byte reads/writes are
185 native-endian (do not use operand sizes exceeding DSP bitness,
186 except dword is OK for 24-bit memory).
188 5.2.1 read-<size> <address>
190 Read the value of byte in <address>.
192 5.2.2 read-s<size> <address>
194 Read the value of signed byte in <address>.
196 5.2.3 write-<size> <address> <value>
198 Write <value> to byte in address <address>.
202 These commands are not available in lsnesrc, but are available
203 after ROM has been loaded.
211 Toggle paused/unpaused
215 Advance frame. If the button is still held after configurable
216 timeout expires, game unpauses for the duration frame advance is
221 Advance subframe. If the button is still held after configurable
222 timeout expires, game unpauses for the duration frame advance is
225 5.3.5 advance-skiplag
227 Skip to first poll in frame after current.
231 Reset the SNES after this frame.
233 5.3.7 load <filename>
235 Load savestate <filename> in current mode.
237 5.3.8 load-state <filename>
239 Load savestate <filename> in readwrite mode.
241 5.3.9 load-readonly <filename>
243 Load savestate <filename> in readonly mode.
245 5.3.10 load-preserve <filename>
247 Load savestate <filename> in readonly mode, preserving current
250 5.3.11 load-movie <filename>
252 Load savestate <filename>, ignoring save part in readonly mode.
254 5.3.12 save-state <filename>
256 Save system state to <filename> as soon as possible.
258 5.3.13 save-movie <filename>
260 Save movie to <filename>.
272 Toggle between read-only and read-write modes.
274 5.3.17 test-1, test-2, test-3
276 Internal test commands. Don't use.
278 5.3.18 take-screenshot <filename>
280 Save screenshot to <filename>.
282 5.3.19 +controller <class>-<#>-<button>
284 Press button <button> on controller <num> of class <class>.
286 • Class 'gamepad': A, B, X, Y, L, R, select, start, up, down,
287 left, right, ext0, ext1, ext2, ext3
289 • Class 'mouse': L, R
291 • Class 'superscope': trigger, cursor, turbo, pause
293 • Class 'justifier': trigger, start
295 • Class 'gb': A, B, select, start, up, down, left, right
297 5.3.20 hold-controller <class>-<#>-<button>
299 Hold/unhold button <button> on controller <num> of class <class>.
301 5.3.21 type-controller <class>-<#>-<button>
303 Hold/unhold button <button> on controller <num> of class <class>
304 for the next frame. See +controller for button names.
306 Cauntion: Does not work properly if outside frame advance.
308 5.3.22 +autofire-controller <class>-<#>-<button> [[<duty>]
311 Start autofire. If duty is not specified, defaults to 1. If
312 <cyclelen> is not specified, defaults to 2.
314 5.3.23 -autofire-controller <class>-<#>-<button> [[<duty>]
319 5.3.24 autofire-controller <class>-<#>-<button> [[<duty>]
322 Toggle autofire. If autofire is turned on, specified cycle is
325 5.3.25 designate-position <class>-<#>-analog<n>
327 Designate position for analog pair. <n> is only there if there
328 are multiple axis pairs.
334 5.3.27 toggle-pause-on-end
336 Toggle pause on end flag.
338 5.3.28 set-pause-on-end
340 Set pause on end flag.
342 5.3.29 clear-pause-on-end
344 Clear pause on end flag.
346 5.3.30 action <action> [<parameters>]
348 Run specified core action.
352 5.4.1 cycle-jukebox-backward
354 Cycle save jukebox backwards.
356 5.4.2 cycle-jukebox-forward
358 Cycle save jukebox forwards
362 Do load from jukebox (current mode).
366 Do state save to jukebox.
370 5.5.1 evaluate-lua <luacode>
372 Run Lua code <luacode> using built-in Lua interpretter.
376 Synonym for evaluate-lua.
378 5.5.3 run-lua <script>
380 Run specified lua file using built-in Lua interpretter.
384 Clear the Lua VM state and restore to factory defaults.
388 5.6.1 add-watch <name> <expression>
390 Adds new watch (or modifies old one).
392 5.6.2 remove-watch <name>
398 5.7.1 enable-sound <on/off>
400 Enable/Disable sound.
404 5.8.1 reload-rom [<file>]
406 Reloads the main ROM image from <file>.
410 Tangent for recording voice for commentary track. While pressed,
413 5.8.3 advance-subframe-timeout
415 Subframe advance timeout in milliseconds. Default is 100.
421 6.2 AVI dumper settings
425 AVI dumper: Always dump at 512x448 or 512x478 regardless of what
428 6.2.2 avi-left-border
430 AVI dumper: Set the default left border thickness (unless lua
431 overrides) for dumps. Range 0-8191. Default is 0.
433 6.2.3 avi-right-border
435 AVI dumper: Set the default right border thickness (unless lua
436 overrides) for dumps. Range 0-8191. Default is 0.
440 AVI dumper: Set the default top border thickness (unless lua
441 overrides) for dumps. Range 0-8191. Default is 0.
443 6.2.5 avi-bottom-border
445 AVI dumper: Set the default bottom border thickness (unless lua
446 overrides) for dumps. Range 0-8191. Default is 0.
450 AVI dumper: Maximum number of frames per dump segment (0 =>
451 unlimited). Range 0-999999999. Default is 0.
453 6.2.7 avi-compresison
455 AVI dumper: Compression level (0-18).
457 • Compression levels 10 and above are not compatible with stock
460 • Recomended level is 7.
464 AVI dumper: Set method of determining the sound rate.
466 • 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48,
467 64, 88.2, 96, 128, 176.4 and 192 kHz.
469 • 1: Round down to nearest integer.
471 • 2: Round up to nearest ingeter.
473 • 3: Multiply by denominator.
475 • 4: High quality 44.1kHz (SRC needed).
477 • 5: High quality 48kHz (SRC needed).
481 6.3.1 jmd-compression
483 JMD dumper: Compression level (0-9).
487 • The editor edits in-memory movie.
489 • Because past can't be edited and readwrite mode doesn't allow
490 future, editing only works in read only mode.
492 • Keyboard triggers the normal hotkeys and bindings.
494 7.1 Left button actions
496 • Clicking on cell in future (indicated by lack of redish
497 background) toggles it (if it is a button) or prompts for a
498 value (if it is an axis)
500 • Dragging vertically toggles sequence of buttons or changes a
501 sequence of axis values.
503 7.2 Right button actions
505 The right mouse button pops up a context-sensitive menu:
507 • Toggle <something>: Toggle this button
509 • Change <something>: Change this axis value
511 • Insert frame after: Insert a frame after this frame
513 • Append frame: Append a frame to movie
515 • Append frames: Append specified number of frames to movie
517 • Delete frame: Delete this frame
519 • Delete subframe: Delete this subframe
521 • Truncate movie: Delete this subframe and everything after it.
523 • Scroll to frame: Prompt for a frame and scroll the display to
526 • Scroll to current frame: Scroll the display to current position
528 • Run to frame: Prompts for frame and runs the emulation to that
531 • Change number of lines visible: Change the height of the movie
534 • Lock scroll to playback: While playing back or rewinding
535 movies, the display will follow if enabled.
537 8 Memory watch expression syntax
539 Memory watch expressions are in RPN (Reverse Polish Notation). At
540 the end of expression, the top entry on stack is taken as the
545 • Evaluation order is strictly left to right.
547 • a is the entry on top of stack
549 • b is the entry immediately below top of stack
551 • ; separates values to be pushed (no intermediate pop).
553 • After end of element, all used stack slots are popped and all
556 • When pushing multiple values, the pushes occur in order shown.
558 The following operators are available:
572 • b : read_signed_byte(a)
576 • d : read_signed_dword(a)
583 • q : read_signed_qword(a)
593 • w : read_signed_word(a)
597 • B : read_unsigned_byte(a)
599 • C<number>z : Push number <number> to stack.
601 • D : read_unsigned_dword(a)
603 • C0x<number>z : Push number <number> (hexadecimal) to stack.
605 • H<digit> : Set hexadecimal mode with specified number of digits
606 (use A-G for 10-16 digits).
608 • Q : read_unsigned_qword(a)
610 • R<digit> : round a to <digit> digits.
612 • W : read_unsigned_word(a)
616 C0x007e0878zWC0x007e002czW-
618 1. Push value 0x7e0878 on top of stack (C0x007e0878z).
620 2. Pop the value on top of stack (0x7e0878), read word value at
621 that address and push the result,call it x1 (W).
623 3. Push value 0x7e002c on top of stack (C0x007e002cz).
625 4. Pop the value on top of stack (0x7e002c), read word value at
626 that address and push the result,call it x2 (W).
628 5. Pop the two top numbers on stack, x1 and x2, substract x1 from
629 x2 and push x2 - x1 (-).
631 6. Since the expression ends, the final memory watch result is
632 the top one on stack, which is x2 - x1.
634 9 Modifier and key names:
636 9.1 wxWidgets platform
638 9.1.1 Modifier names:
640 Following modifier names are known:
650 • cmd (Mac OS X only)
654 Following key names are known:
656 • back, tab, return, escape, space, exclaim, quotedbl, hash,
657 dollar, percent, ampersand, quote, leftparen, rightparen,
658 asterisk, plus, comma, minus, period, slash, 0, 1, 2, 3, 4, 5,
659 6, 7, 8, 9, colon, semicolon, less, equals, greater, question,
660 at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t,
661 u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
662 underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m,
663 n, o, p, q, r, s, t, u, v, w, x, y, z, leftcurly, pipe,
664 rightcurly, tilde, delete, start, lbutton, rbutton, cancel,
665 mbutton, clear, shift, alt, control, menu, pause, capital, end,
666 home, lefT, up, right, down, select, print, execute, snapshot,
667 insert, help, numpad0, numpad1, numpad2, numpad3, numpad4,
668 numpad5, numpad6, numpad7, numpad8, numpad9, multiply, add,
669 separator, subtract, decimal, divide, f1, f2, f3, f4, f5, f6,
670 f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
671 f20, f21, f22, f23, f24, numlock, scroll, pageup, pagedown,
672 numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
673 numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up,
674 numpad_right, numpad_down, numpad_pageup, numpad_pagedown,
675 numpad_end, numpad_begin, numpad_insert, numpad_delete,
676 numpad_equal, numpad_multiply, numpad_add, numpad_separator,
677 numpad_subtract, numpad_decimal, numpad_divide, windows_left,
678 windows_right, windows_menu, command, special1, special2,
679 special3, special4, special5, special6, special7, special8,
680 special9, special10, special11, special12, special13,
681 special14, special15, special16, special17, special18,
686 Movie file is .zip archive in itself, normal ZIP archive tools
687 work on it (note: If you recompress it, do not use compression
688 methods other than store and deflate and especially do not use
689 encryption of any kind).
691 10.1 Detecting clean start/SRAM/Savestate
693 • If file has member “savestate” it is savestate, otherwise:
695 • If file has members with names starting “moviesram.” it is
696 movie starting from SRAM, otherwise:
698 • It is movie starting from clear state.
700 10.2 Member: gametype
702 Type of game ROM and region (as one line). Valid values are:
705 +--------------+---------------------+--------+
706 | Value | System | Region |
707 +--------------+---------------------+--------+
708 +--------------+---------------------+--------+
709 | snes_pal | Super NES | PAL |
710 +--------------+---------------------+--------+
711 | sgb_pal | Super Game Boy | PAL |
712 +--------------+---------------------+--------+
713 | snes_ntsc | Super NES | NTSC |
714 +--------------+---------------------+--------+
715 | sgb_ntsc | Super Game Boy | NTSC |
716 +--------------+---------------------+--------+
717 | bsx | BS-X (non-slotted) | NTSC |
718 +--------------+---------------------+--------+
719 | bsxslotted | BS-X (slotted) | NTSC |
720 +--------------+---------------------+--------+
721 | sufamiturbo | Sufami Turbo | NTSC |
722 +--------------+---------------------+--------+
728 +---------+-----------------+
729 | Region | Framerate (fps) |
730 +---------+-----------------+
731 +---------+-----------------+
732 | PAL | 322445/6448 |
733 +---------+-----------------+
734 | NTSC | 10738636/178683 |
735 +---------+-----------------+
740 Contains type of port #1 (as one line). Valid values are 'none',
741 'gamepad', 'multitap' and 'mouse'. If not present, defaults to
746 Contains type of port #2 (as one line). Valid values are 'none',
747 'gamepad', 'multitap', 'mouse', 'superscope', 'justifier' and
748 'justifiers'. If not present, defaults to 'none'.
750 10.5 Member: gamename
752 Contains name of the game (as one line).
756 Contains authors, one per line. Part before '|' is the full name,
757 part after is the nickname.
759 10.7 Member: systemid
761 Always “lsnes-rr1” (one line). Used to reject other saves.
763 10.8 Member: controlsversion
765 Always “0” (one line). Used to identify what controls are there.
767 10.9 Member: “coreversion”
769 Contains bsnes core version number (as one line).
771 10.10 Member: projectid
773 Contains project ID (as one line). Used to identify if two movies
774 are part of the same project.
776 10.11 Member: {rom,slota,slotb}{,xml}.sha256
778 Contains SHA-256 of said ROM or ROM mapping file (as one line).
779 Absent if corresponding file is absent.
781 10.12 Member: moviesram.<name>
783 Raw binary startup SRAM of kind <name>. Only present in
784 savestates and movies starting from SRAM.
786 10.13 Member: saveframe
788 Contains frame number (as one line) of frame movie was saved on.
789 Only present in savestates.
791 10.14 Member: lagcounter
793 Current value of lag counter (as one line). Only present in
796 10.15 Member: pollcounters
798 Contains poll counters (currently 100 of them), one per line.
799 Each line is raw poll count if DRDY is set for it. Otherwise it
800 is negative poll count minus one. Only present in savestates.
802 10.16 Member: hostmemory
804 Raw binary dump of host memory. Only present in savestates.
806 10.17 Member: savestate
808 The raw binary savestate itself. Savestate detection uses this
809 file, only present in savestates.
811 10.18 Member: screenshot
813 Screenshot of current frame. Only present in savestates. First 2
814 bytes are big-endian width of image, rest are 24-bit RGB image
815 data. Height of image is inferred from the width and size of
818 10.19 Member: sram.<name>
820 Raw binary SRAM of kind <name> at time of savestate. Only present
825 The actual input track, one line per subframe (blank lines are
828 • If the first byte of each line is '.', ' ', <tab> or '|', then
829 the line is part of same frame as previous, otherwise it starts
832 • First subframe must start a new frame.
834 Length of movie in frames is number of lines in input file that
837 10.21 Member: subtitles
839 Subtitle track. Optional.
841 • Each line is in form <firstframe> <numframes> <text>.
843 • Linefeed is encoded as \n, backslash is encoded as \\.
845 10.22 Member: rerecords
847 Contains textual base-10 rerecord count (as one line; emulator
848 just writes this, it doesn't read it) + 1.
852 This member stores set of load IDs. There is one load ID per
853 rerecord (plus one corresponding to start of project).
855 • This member constists of concatenation of records
857 • Each record is 2-36 bytes long and can represent 1-16,843,009
860 • IDs are interpretted as 256-bit big-endian integers with
863 • Initial predicted ID is all zeroes.
865 Format of each record is:
867 • 1 byte: Opcode byte. Bits 0-4 are prefix length (prefixlen),
868 bits 5-6 are count length (countlen). Bit 7 is unused.
870 • 32-prefixlen bytes of ID.
872 • countlen bytes of big-endian count (count).
874 Records are processed as follows:
876 • To form the first ID encoded by record, take the first
877 prefixlen bytes predicted ID and append the read ID value to
878 it. The result is the first ID encoded.
880 • If countlen is 0, record encodes 1 ID.
882 • If countlen is 1, record encodes 2+count IDs.
884 • If countlen is 2, record encodes 258+count IDs.
886 • If countlen is 3, record encodes 65794+count IDs.
888 • The new predicted ID is the next ID after last one encoded by
891 The number of rerecords + 1 is equal to the sum of number of IDs
892 encoded by all records.
894 10.24 Member: starttime.second
896 Movie starting time, second part. Epoch is Unix epoch. Default is
899 10.25 Member: starttime.subsecond
901 Movie starting time, subsecond part. Unit is CPU clocks. Default
904 10.26 Member: savetime.second
906 Movie saving time, second part. Default is starttime.second. Only
907 present in savestates.
909 10.27 Member: savetime.subsecond
911 Movie saving time, subsecond part. Default is
912 starttime.subsecond. Only present in savestates.
914 11 lsvs file format (commentary tracks)
918 • Each cluster is 8kB (8192 bytes) in size.
920 • Cluster n starts at offset 8192*n in file.
922 • The following clusters are system special:
924 – Cluster 0 and all clusters with number multiple of 2048
927 – Cluster 1 (superblock)
931 • The cluster table describing cluster n is stored in cluster n &
932 ~0x7FF (zero last 11 bits of n).
934 • This cluster table consists of 2048 4-byte big-endian integers.
936 • Each entry describes a cluster in 16MB supercluster, in order.
938 • The valid values for entries are:
940 – 0x00000000: Free cluster
942 – 0x00000001: Last cluster in chain.
944 – 0xFFFFFFFF: System cluster (cluster tables and superblock)
946 – (anything else): Number of next cluster in chain. Must not be
949 • Due to limitations of the format, there can be at most 2097052
950 superclusters, giving maximum file size of 16TB.
954 • The stream table chain always starts in cluster 2.
956 • Otherwise, it follows normal chaining.
958 • The stream table consists of 16-byte entries:
960 – The first 8 bytes of entry give big-endian beginning position
961 of stream in units of 1/48000 s.
963 – The next 4 bytes of entry give big-endian beginning cluster
964 for control data. 0 here marks the entry as not present.
966 – The last 4 bytes of entry give big-endian beginning cluster
969 • Stream table clusters are normal clusters, following normal
972 • The stream begnning position is not guarenteed unique. There
973 can be multiple streams with the same starting position in the
976 11.4 Stream control data
978 • The stream control data consists of entries 4 bytes each:
980 – The first 2 bytes of entry gives big-endian length of packet
982 – The next byte of entry gives audio length of packet in units
985 – The last byte is control byte.
987 ∗ 0 means this entry is not present and the control data
990 ∗ 1 is valid control entry.
992 • The stream control data can also end by running into end of the
995 – This happens if there happens to be exact multiple of 2048
996 packets in stream and number of packets is nonzero.
998 • These clusters follow normal chaining.
1000 11.5 Stream codec data
1002 • Stream codec data consists of raw Opus data packets packed back
1003 to back with nothing in between.
1005 • Warning: Due to internal limitations, this data must reside in
1006 the first 65536 superclusters (that is, the first 1TB of the
1011 • The superblock is stored in cluster 1.
1013 • The first 11 bytes are “sefs-magic”<NUL>.
1015 • The rest are unused.
1017 • This cluster 1 is marked as system special.
1019 12 Known ROM extensions
1021 • SNES cartridge ROMs: sfc, smc, swc, fig, ufo, sf2, gd3, gd7,
1024 • DMG cartridge ROMs: dmg, gb.
1026 • GBC cartridge ROMs: cgb, gbc.
1030 • The first line must be: “[GAMEPACK FILE]”.
1032 • There is one needed line: “type <systype>”. This sets system
1033 type to <systype>. The following system types are valid:
1037 – bsx (BS-X non-slotted)
1039 – bsxslotted (BS-X slotted)
1041 – sufamiturbo (Sufami Turbo)
1043 – sgb (Super Game Boy)
1047 – gbc (Game Boy Color)
1049 – gbc_gba (Game Boy Color with GBA initial register values)
1051 • Optionally a region can be specified: “region <region>”. The
1052 following values are valid:
1054 – autodetect (Autodetect region: snes and sgb only)
1056 – ntsc (NTSC: snes, bsx, bsxslotted, sufamiturbo, sgb)
1058 – pal (PAL: snes, sgb)
1060 – world (World: dmg, gbc, gbc_gba)
1062 • ROM images are loaded as: “rom <type> <file>”. The following
1065 – rom (Cartridge ROM in snes, dmg, gbc, gbc_gba. BIOS in bsx,
1066 bsxslotted, sufamiturbo)
1068 – bsx (Cartridge ROM in bsx, bsxslotted)
1070 – slot-a (Cartridge ROM in sufamiturbo)
1072 – slot-b (Cartridge ROM in sufamiturbo)
1074 • ROM markup can be loaded as: “xml <type> <file>”. The types
1075 valid are the same as for ROMs.
1077 • Patches can be loaded as “patch[<offset>] <type> <file>”. The
1078 types are the same as for ROMs.
1080 – Offset is given in form [+-]<number>. Usually offset is
1083 – Default offset is +0.
1091 rom rom speedygonzales.sfc
1093 patch-512 rom sonicthehedgehog.ips
1101 rom rom supergameboy.sfc
1103 rom dmg megamanV.dmg
1105 14 Quick'n'dirty encode guide
1107 1. Start the emulator and load the ROM and movie file.
1109 2. Set large AVI option 'set-setting avi-large on'
1111 3. Enable dumping 'dump-avi tmpdump'
1113 4. Unpause and let it run until you want to end dumping.
1115 5. Close the emulator (closing the window is the easiest way). Or
1118 6. For each tmpdump*.avi file created, on command prompt, do
1119 'x264 --crf 10 -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
1121 7. Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
1123 8. Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv +
1124 tmpdump_0000001.mkv + tmpdump_0000002.mkv' (list every
1125 tmpdump_<numbers>.mkv, with + in between).
1127 9. Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'. Now
1128 final.mkv contains quick'n'dirty encode.
1130 15 Axis configurations for some gamepad types:
1132 15.1 XBox360 controller:
1134 Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be
1137 set-axis joystick0axis2 pressure-+
1139 set-axis joystick0axis5 pressure-+
1141 • This is needed for SDL only. EVDEV sets those types correctly.
1143 15.2 PS3 “sixaxis” controller:
1145 Axes 8-19 should be disabled.
1147 set-axis joystick0axis8 disabled
1149 set-axis joystick0axis9 disabled
1151 set-axis joystick0axis10 disabled
1153 set-axis joystick0axis11 disabled
1155 set-axis joystick0axis12 disabled
1157 set-axis joystick0axis13 disabled
1159 set-axis joystick0axis14 disabled
1161 set-axis joystick0axis15 disabled
1163 set-axis joystick0axis16 disabled
1165 set-axis joystick0axis17 disabled
1167 set-axis joystick0axis18 disabled
1169 set-axis joystick0axis19 disabled
1173 16.1 Problems from BSNES core:
1175 • The whole pending save stuff.
1177 • Lack of layer hiding.
1179 • It is slow (especially accuracy).
1181 • Firmwares can't be loaded from ZIP archives.
1183 16.2 Other problems:
1185 • Modifiers don't work with pseudo-keys (SDL, EVDEV).
1187 • Audio for last dumped frame is not itself dumped.
1189 • Audio in UI is pretty bad in quality if game doesn't run at
1192 • No menus, command based interface (SDL).
1194 • Long commands don't scroll.
1200 • Fix -Wall warnings
1202 • Fix dumper video corruption with levels 10-18.
1208 • Lots of code cleanups
1210 • Lua interface to settings
1212 • Allow specifying AVI borders without Lua
1214 • Fix scaling if vscale > 1 and originx > 0 (left border exists)
1216 • on_snoop lua callback
1218 • Faster movie loading and saving.
1228 • Save jukebox functionality.
1232 • Try to fix some nasty failing movie load edge cases
1234 • Allow specifying scripts to run on command line.
1238 • Major source code reorganization.
1240 • Backup savestates before overwriting.
1242 • Don't crash if loading initial state fails.
1246 • Fix firmware lookup
1248 • Fix author name parsing
1250 • Fix rerecord counting
1252 • (SDL) Print messages to console if SDL is uninitialized
1254 • Add movieinfo program
1256 • Fix loading movies starting from SRAM.
1260 • Add support for unattended dumping
1262 • Fix compiling for Win32
1264 • Don't lock up if sound can't be initialized
1266 • Strip trailing CR from commands
1268 • Don't try to do dubious things in global ctors (fix crash on
1273 • Small documentation tweaking
1277 • Fix major bug in modifier matching
1281 • Lots of documentation fixes
1283 • Use dedicated callbacks for event backcomm., not commands.
1285 • Ensure that the watchdog is not hit when executing delayed
1288 • Remove errant tab from joystick message.
1292 • Make autofire operate in absolute time, not linear time
1294 • Reinitialize controls when resuming from loadstate
1296 • Some more code cleanups
1298 • If Lua allocator fails, call OOM_panic()
1300 • Byte/word/dword/qword sized host memory write/read functions.
1302 • Dump at correct framerate if dumping interlaced NTSC
1307 • Actually include the complete source code
1313 • Document {save,start}time.{,sub}second.
1315 • Intercept time() from bsnes core.
1319 • Allow disabling time() interception (allow build on Mac OS X)
1321 • Use SDLMain on Mac OS X (make SDL not crash)
1323 • Disable delayed resets (just plain too buggy for now).
1327 • Use 16-bit for graphics/video instead of 32-bit.
1329 • gui.rectangle/gui.pixel
1333 • New CSCD writer implementation.
1337 • Fix interaction of * and +.
1339 • Manual improvements
1341 • Use gettimeofday()/usleep(), these seem portable enough.
1343 • Move joystick axis manipulation to keymapper code.
1345 • Changes to how read-only works.
1347 • Refactor controller input code.
1351 • Fix mouseclick scale compensation.
1353 • Draw area boundaries correctly in SDL code.
1357 • Fix CSCD output (buffer overrun and race condition).
1361 • JMD dumping support.
1363 • Allow unattended dumping to JMD.
1365 • Move to BSNES v083.
1367 • Switch back to 32-bit colors.
1369 • Add Lua function gui.color.
1371 • Use some new C++11 features in GCC 4.6.
1373 • Be prepared for core frequency changes.
1375 • Pass colors in one chunk from Lua.
1379 • New lua functions gui.line(), gui.status() and gui.circle(),
1380 memory.vma_count(), memory.read_vma() and memory.find_vma().
1382 • Numerious documentation fixups
1384 • RTC time format changed
1386 • Reformat flags display
1388 • Allow lua package name to be overridden
1390 • SDUMP (high-quality dumping).
1392 • Split platform support to plugins.
1394 • Make all sound plugins support basic sound commands
1396 • Support portaudio for sound.
1398 • Allow disable Lua/SDL searching.
1400 • Upconvert colors when copying lcscreen to screen.
1402 • Reorganize source tree.
1404 • Evdev joystick support.
1406 • Refactor more code into generic window code.
1410 • Refactor message handling.
1414 • Documentation fixes
1416 • Finish pending saves before load/quit.
1418 • Wxwidgets graphics plugin.
1422 • Get rid of win32-crap.[ch]pp.
1424 • Move files around a lot.
1426 • Get rid of need for host C++ compiler.
1430 • Refactor inter-component communication.
1434 • Fix crash on multiline aliases.
1436 • Load/Save settings in wxwidgets gui.
1440 • Patch problems in bsnes core
1442 • SNES is little-endian, not big-endian!
1444 • Fix memory corruption in lcscreen::load()
1448 • Fix interpretting repeat counts in rrdata loading.
1450 • New lua callback: on_frame()
1452 • Remove calls to runtosave() that aren't supposed to be there
1454 • Lua function: movie.read_rtc()
1456 • Ignore src/fonts/font.cpp
1458 • Fix more bsnes core problems
1460 • Control bsnes random seeding
1464 • Some bsnes core debugging features (state dump and state hash)
1466 • Fix titlebar version number (no, the last version wasn't
1467 'lsnes-0-beta21', it was 'lsnes rr0-beta21').
1471 • Fix memory corruption due to macro/field mixup
1473 • search-memory update
1475 • Allow direct-mapped framebuffer
1477 • SDL: Use SDL_ANYFORMAT if possible
1479 • SDMP2SOX: 2s delay modes.
1481 • Wxwidgets: Cleanups
1483 • Use sed -E, not sed -r. Fixes building on Mac OS X.
1485 • Wxwidgets: Save jukebox on exit
1487 • Fix RTC if using load-movie on savestate.
1489 • Fix crash related to full console mode.
1493 • Wxwidgets: Allow bringing application to foreground on Mac OS
1496 • Wxwidgets: Allow compiling on Mac OS X.
1498 • Use movie compare instead of movie hashing (faster save/load).
1500 • Lua: _SYSTEM table.
1504 • sdmp2sox: Pad soundtrack if using -l or -L.
1506 • sdmp2sox: Fix NTSC overscan.
1508 • sdmp2sox: Add AR correction mode.
1510 • call lua_close() when exiting.
1512 • Fix zip_writer bug causing warnings from info-zip and error
1517 • Fix IPS patching code (use bsnes core IPS patcher).
1519 • Implement BPS patching (using bsnes core IPS patcher).
1521 • Add feature to load headered ROMs.
1525 • Show command names when showing keybindings
1529 • Fix pause-on-end to be actually controllable
1531 • SDL: Poll all events in queue, not just first one (fixes
1532 slowness in command typing)
1534 • Wxwidgets: Fix ROM loading.
1538 • Lua: Add gui.textH, gui.textV, gui.textHV
1540 • Fix text colors on SDL on Mac OS X
1542 • Mode 'F' for finished in readonly mode.
1544 • Fix some WS errors.
1546 • Reliably pause after skip poll
1548 • Split UI and core into their own threads
1552 • Remove leftover dummy SRAM slot
1554 • Fix controller numbers.
1558 • Fix lsnes-dumpavi after interface change.
1560 • Also give BSNES patches for v085.
1562 • Pack movie data in memory.
1566 • Fix framecount/length given when loading movies.
1568 • Controller command memory leak fixes.
1570 • Don't leak palette if freeing screen object.
1576 • Wxwidgets: Allow controlling dumper from the menu.
1580 • Rewrite parts of manual
1582 • Lua: Make it work with Lua 5.2.
1586 • Win32: Fix compile errors.
1590 • Refactor controller input code.
1592 • Fix crash when using command line on SDL / Mac OS X.
1596 • Delete core/coroutine (obsolete)
1598 • Lag input display by one frame.
1600 • Rewind movie to beginning function.
1602 • Fix wrong frame number reported to Lua when repainting after
1605 • Support UI editing of jukebox
1607 • Wxwidgets: Save settings on exit.
1609 • Support ${project} for filenames
1611 • SDL: Fix command history
1615 • Fix some order-of-global-ctor bugs.
1619 • Fix crashes when quitting on Win32.
1623 • EVDEV: Queue keypresses from joystick, don't send directly
1625 • Wxwidgets: Load-Preserve that actually works.
1629 • Wxwidgets: GUI for memory search.
1631 • Warn about using synchronous queue in UI callback.
1635 • Remember last saved file for each ROM
1637 • Support MT dumping via boost.
1641 • Lua: input.keyhook
1643 • Make mouse be ordinary input instead of special-casing
1645 • SDL: Don't screw up commands with NUL codepoints.
1649 • Merge status panel and main window
1651 • True movie slot support (the rest of it)
1653 • SDL: Fix compilation error
1655 • Elminate cross calls in dump menu code.
1659 • Cancel pending saves command
1661 • Wxwidgets: Code refactoring
1663 • Wxwidgets: Fix system -> reset
1665 • Wxwidgets: Read watch expressions in the right thread
1669 • Wxwidgets: Don't prompt for member when running Lua script (Lua
1670 doesn't support that).
1672 • Wxwidgets: 128 -> 1024 Autohold slots (in case more are
1675 • Don't append trailing '-' to prefix when saving movie.
1677 • Fix ROM/savestate handling (don't let user mismatch ROM and
1682 • Document memory watch syntax.
1686 • Fix unattended dumping (lsnes-dumpavi)
1688 • Support RAW dumping
1690 • Use adv_dumper instead of the old interface in lsnes-dumpavi
1693 • Add option to control sample rate preturbation in AVI dumper
1697 • Wxwidgets: Fix dumper submodes
1699 • Set core controller types before loadstate
1701 17.49 rr1-delta2epsilon1
1703 • Fix compiling with bsnes v086.
1707 • Don't prompt before quitting
1709 • Start unpaused, preserve pause/unpause over load.
1711 • Try to autodetect if ROM is headered.
1713 • Wxwidgets: Only bring up ROM patching screen if specifically
1716 • Allow configuring some hotkeys.
1720 • Lots of code cleanups
1722 • Fix JMD compression (JMD dumping was broken)
1724 • Don't crash if Lua C function throws an exception.
1726 • Support bitmap drawing in Lua.
1728 • Fix bsnes v085/v086 patches.
1730 • Improve stability on win32.
1732 17.52 rr1-delta4epsilon1
1734 • Don't corrupt movie if movie length is integer multiple of
1739 • New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
1741 • New Lua functions: emulator_ready(), utime(),
1742 set_idle_timeout(), set_timer_timeout(), bit.extract(),
1743 bit.value(), input.geta(), input.seta() and
1744 input.controllertype()
1746 • Wxwidgets: Fix internal focus lost (hotkeys stop working)
1748 • Wxwidgets: Fix broken modifiers
1750 • on_paint has parameter now.
1752 • Optional initital fill for bitmaps
1754 • Fix palette changing.
1756 • Optimize rendering a bit.
1758 • Bsnes v087 support.
1760 17.54 rr1-delta5epsilon1
1762 • Movieinfo: Fix display of port #2 type.
1764 • Call on_input() after loadstate.
1766 17.55 rr1-delta5epsilon2
1768 • Fix writing port2 data to movie.
1770 • Fix SRAM handling with Bsnes v087.
1774 • Library loading support
1776 • Built-in TSCC encoder
1778 • Hi-color (256T colors) dumping.
1780 • Dump over TCP/IP(v6)
1782 • Hidable status panel
1786 • Adjustable sound volume
1790 • Allow DnD into filename boxes
1792 • Configurable paths
1794 • Portaudio: Fix speaker popping at start
1796 • Lots of UI changes
1798 • Speed adjustment menu
1800 • Win32 joystick support
1802 • Lua: gui.rainbow and gui.box
1804 • Split key lists into classes (the key list was large!)
1806 • More save slots support
1808 • Wxwidgets (wxJoystick) joystick support
1812 • Lots of internal joystick refactoring
1814 • Evdev: Add mapping for BTN_TOOL_QUINTTAP
1816 • Wxwidgets: Settings mode (open settings without ROM)
1818 • Wxwidgets: Prompt key to use option
1820 • Wxwidgets: Fix crash if key goes away underneath
1822 • Wxwidgets: Fix mouse position in presence of scaling
1824 • AVI dumper: Mode 4 (high-quality resampling to common rate
1827 • Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree
1828 control doesn't seem to work well on WinXP)
1830 • Start paused option.
1832 17.58 rr1-delta7epsilon1
1836 • lsnes-dumpavi: Start Lua before starting dumper
1838 • AVI: Fix secondary audio in mode 4.
1840 17.59 rr1-delta7epsilon2
1842 • AVI: Refactor ZMBV a bit.
1844 • Fix error reading analog values from movie file
1848 • Delayed reset support
1850 • Lua: memory.hash_region
1852 17.61 rr1-delta8epsilon1
1854 • Rework the build system
1856 • Typing input support
1858 • Fix building with bsnes v086 and v087.
1860 • SDL: Save settings on exit
1862 • SDL: Command to enter command line mode with given command.
1864 • SDL: More advanced command editing.
1868 • wxMSW: Fix the “arrow keys and enter don't work” problem
1872 • Show mode changes due to rewinding.
1874 • Unsafe rewind support
1876 • Fix directory transversal.
1880 • AVI: Sound mode 5 (48kHz high-quality)
1884 • Map the SNES bus into address space
1886 • Fix loading memory watch files with CRLF line endings
1888 17.64 rr1-delta10epsilon1
1890 • Map bsnes internal state into memory space
1892 • Fix the “click on panel wedges the emulator” for real.
1894 • DnD movies/saves on the main window.
1898 • Split core bindings into own module.
1900 • Remember invalid settings
1902 • Support for modified Gambatte core for GB/GBC emulation.
1904 • Reload/swap ROM function
1906 17.66 rr1-delta11epsilon1
1908 • Fix step poll function
1912 • Non-insane savestate anchoring
1916 • More Memory search methods
1918 • Preserve movie if loading in RO mode.
1920 • Fix a obscure case in timeline check
1922 • Revamp the entiere ROM loading code
1924 • Support DnD on ROMs
1926 • Revamp menu layout
1928 • Standalone hotkey config dialog
1930 • Show bindings in more user-friendly format
1932 17.69 rr1-delta13epsilon1
1936 • Fix uninitialized variables in bsnes v085
1940 • Merge gambatte core into mainline (from its own branch)
1942 • Wxwidgets: Show expected dump file formats
1944 • Memory watch: Data typing
1946 • lsnes internal MMIO area.
1948 • Wxwidgets: New memory watch editor
1950 • Hexadecimal memory watches
1952 • Wxwidgets: Monospaced panel
1954 • Wxwidgets: Split memory watches in panel
1956 • Wxwidgets: Disable VMAs in memory search
1958 • lsnes-dumpavi: Fix speed bug
1960 • Movie subtitle support
1962 • Fix rerecord count reporting
1964 • Don't trash movie when loading in readonly mode.
1966 17.71 rr1-delta14epsilon1
1968 • Wxwidgets: Fix crashes on closing settings dialogs on Mac OS X.
1970 • Fix build on Mac OS X.
1974 • Wxwidgets: Hidable messages window
1978 • Bsnes: Support inconsistent saves
1980 • Bsnes: Allow simulating saving every frame
1982 • Fix desync if savestate is loaded in readonly mode in certain
1985 • Wxwidgets: Fix save dialogs on Mac OS X.
1987 • Wxwidgets: Fix insane status width on Win32.
1989 • Wxwidgets: Fix autohold processing to be faster.
1991 • Wxwidgets: Allow loading ROMs and movies from commandline.
1995 • Be a bit smarter with --load
1997 • Rewrote higher-level parts of audio system
1999 • Tool to build commentary tracks
2003 • Gambatte: Add support for SVN358
2005 • Use builtin font when rendering status panel.
2007 • Option to detach memory watch to its own window.
2009 • Recent ROMs/Movies menu
2013 • Useful lag counter for SNES games that autopoll
2015 • Fix buffer overflow in gambatte sound output
2017 17.73 rr1-delta15epsilon1
2019 • Don't blow up on wxGTK if the window is hidden somehow
2021 • Support simultaneous drop of ROM and movie.
2023 • Gambatte: Don't save spurious SRAMs.
2025 • Make SGB ROMs actually usable.
2027 • Fix so that saved movies appear in recent movies.
2029 • Don't open multiple commentary editors at once.
2031 17.74 rr1-delta15epsilon2
2033 • Lua: memory.readregion/memory.writeregion
2035 • Lua: memory.map{,s}{byte,word,dword,qword}
2037 • Lua: memory.map_structure
2039 • Lua: Fix bus_address for gambatte
2041 • Fix features dependent of bsnes debugger
2043 • Cleanup bsnes debugger logic
2045 • Fix resets in presence of save every frame
2047 17.75 rr1-delta15epsilon3
2049 • Lua: input.lcid_to_pcid
2051 • Fix off-by-one bug with slot hashes
2053 • Fix crashes on certain memory watch expressions
2055 • Lua: memory.read_expr
2057 • Lua: Fix memory.read_expr on nil argument
2059 • Fix the code to compile on G++ 4.7
2061 • Change button_id to be a function pointer field, not a virtual
2064 • Add bsnes patches to fix libsnes to compile on GCC 4.7
2066 • Gambatte: Always use legacy lag counting
2068 • Memory commands: Memory addresses are up to 16 hex digits, not
2071 • Fix analog controllers
2073 • Fix autohold menus
2075 • Fix button symbols in input display
2077 • Compensate for nuts bsnes superscope/justifier handling
2079 • Lua: Fix bit.extract boolean handling
2083 • Split emulation cores more from the rest
2085 • Support having multiple emulation cores compiled at once
2087 • Support arbitrary number of ports (well, up to 31 anyway).
2089 • SNES debugger support
2091 • Support 16-button controllers
2093 • Remove old SDL front end
2095 • Data-driven controller buttons
2097 • Generate the port code from defines
2101 • Update libgambatte to SVN364
2103 • Get rid of partial linking (building with MXE works)
2105 • Load XML even without gamepack files
2107 • Support screen rotate & flip
2109 • Fix bug when changing controller key to another subkey of the
2114 • Stop at movie end: Don't off-by-one
2116 • Fix crash closing lsnes with voice playback active.
2118 • Import/Export OggOpus for commentary tracks
2120 • 16-button controllers.
2122 • Don't show nonexistent controllers in input display
2124 • Set voice record/playback volume from UI
2126 • Patches for gambatte SVN364.
2128 • Load markup (if exists) even without gamepack file.
2130 • Screen rotation & flipping
2132 • Lua: Some new bit functions
2134 • Auto-refresh voice streams on change.
2136 • Auto-refresh subtitles on change & new subtitle editor.
2138 • Fix music volume adjustment.
2142 • Use system threads instead of platform threads
2144 • Cleanup build by allowing dummy and real drivers to link
2147 • Split duplex support
2149 17.80 rr1-delta16epsilon1
2151 • Wxwidgets: Fix memory watch rendering.
2153 • Wxwidgets: Allow setting voice stream gain.
2155 • Wxwidgets: VU meters and volume adjustment.
2157 • Lua: Custom fonts support.
2159 • Lua: Fix methods stopping working when resetting Lua.
2161 • Fix loading standard-format movies in preserve (readonly) mode.
2165 • Primitive movie editor
2167 • Fix VU meter with no sound device.
2169 • Fix various undefined return values.
2171 • Show rates in VU meter window.
2175 • Lua: Render queues as objects
2177 • Bsnes: support hard resets
2179 • Dedicated sound devices dialog
2181 • Change the default AVI sound mode to 2 or 5.
2183 • Fix totally borked movie saving.
2185 • Portaudio: Use split duplex with different devices.
2187 • Fix controls with gambatte core.
2189 • Modify save slot set handling.
2191 • lsnes-dumpavi: --firmware-path.
2193 • Fix lots of compiler warnings.
2195 17.83 rr1-delta17epsilon1
2197 • Commentary tool: Set nominal bit rate and limit max bit rate.
2199 • Lua: Unconditionally reload host memory on loadstate
2201 • Lua: Query bindings, manipulate aliases, create inverse
2204 • Lua: Fix crashes with resetting VM while some types of paint
2205 requests are in flight.
2207 • Lua: gui.text: Clip the text properly instead of corrupting
2208 memory in some cases.
2210 • Save screenshot header reliably
2212 • Lua: Backport input.get2 and input.set2
2214 • Lua: New controller info functions.
2216 • Movie editor: Fix reset delay counters to be the right way
2221 • Lua: on_button and input.veto_button.
2225 • Revert memory leak fix breaking input
2227 • Refactor Opus handling
2229 • Restrict member picking only to .zip files
2231 • Fix reading of host-endian VMAs.
2233 • Fix rlow and rhigh to be the right way around.
2235 • Lua: Don't wedge VM if callback fails with an exception
2237 • Refactor Ogg handling.
2239 17.85 rr1-delta17epsilon2
2241 • Fix saving PNG screenshots on Win32.
2243 • Movie editor: Sweep axis.
2245 • Load selected slot in ro/rw/preserve/movie mode.
2247 • input.joyset: Preserve and invert user input.
2249 • Allow immediate saving at point of save (transfer saves).
2251 • Wxwidgets: Filter filenames in dialogs, autoappend extensions.
2253 • data/verysmall.font: Add missing glyph 70 (“F”).
2255 • Lua: Allow painting custom fonts with halo.
2257 • Fix memory value search to work on byte types.
2261 • Reject oggopus files with incomplete pregap
2263 • Fix multistream and ogg demuxing
2265 • Workaround bug with screen >1024 pixels wide.
2267 • Allow on_input to force/veto system controls.
2269 • Dedicated autohold/autofire window.
2271 • Support per-button autofire.
2273 • Fix crash on trying to frameadvance/exit with no ROM loaded.
2275 • Fix nonexistent controller key warnings.
2277 • Movie editor: Fix mouse editing (TYPE_RAXIS)
2281 • Analog passthrough.
2283 • Add throttle axes (TYPE_TAXIS).
2285 • Fix movie reading with first port having multiple controllers.
2287 • Move some info from status panel to statusbar.
2289 17.87 rr1-delta17epsilon3
2291 • Fix status panel (and movie editor) flicker
2293 • Show effects of Lua in input display
2295 • Offer lsmv.backup as file filter too for load lsmv
2297 • Allow slowing down subframe advance
2299 • Display current save slot information
2303 • Fix hotkeys stopping working after X-ing settings dialog
2305 • Movie editor: Fix bug if extending finished movie
2307 • Cap current_frame_first_subframe to movie size when recounting
2310 • Movie editor: Interpret ctrl+click as right click
2314 • Autofire: Fix false status indications
2316 • Fix subframe counter
2318 • Fix print() after Lua reset
2320 • New settings framework
2322 • Remove some unused leftover stuff
2324 • Fix race condition causing possible crash on startup
2326 • Fix compiling if uint64_t and size_t are not compatible
2328 • Lua: Don't crash if input.[gs]et{,a} is called outside on_input
2332 • Fix bug causing crash if triple has invalid button