2011-12-12 16:08:22 +02:00
|
|
|
|
1 Introduction
|
|
|
|
|
|
|
|
|
|
lsnes is SNES rerecording emulator based on bsnes core.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
2 Dependencies
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
1. bsnes libsnes (for bsnes SNES core)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-12 23:20:43 +03:00
|
|
|
|
(a) v084-v087 (v084 or v085 for delayreset support)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-11 19:36:13 +03:00
|
|
|
|
(b) accuracy or compatiblity core with debugger enabled.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-12 23:10:00 +03:00
|
|
|
|
(c) Patched version (using included 7 patches)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
2. gambatte (for gambatte core)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
(a) SVN r320, r358 or r364
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
(b) Patched with included patches
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
3. Zlib
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
4. boost_iostreams
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
5. boost_filesystem
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
6. boost_thread (if native std::thread is not available)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
7. libsdl (SDL only)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
8. sdlmain (SDL only, part of SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
9. boost_conversion (this is header-only library)
|
|
|
|
|
|
|
|
|
|
10. libswscale (wxwidgets graphics only)
|
|
|
|
|
|
|
|
|
|
11. Portaudio (portaudio sound only)
|
|
|
|
|
|
2012-09-26 00:24:12 +03:00
|
|
|
|
12. libao (libao sound only)
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
13. Lua version 5.1.X or 5.2.X
|
2012-01-17 01:01:52 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
14. G++ 4.6 or 4.7
|
2012-01-11 16:41:23 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
15. libopus (optional, for commentary track tool)
|
2012-01-11 16:41:23 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
3 Building
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-12 14:04:15 +03:00
|
|
|
|
• Copy bsnes sources (the bsnes subdirectory) to subdirectory
|
2012-07-15 13:45:38 +03:00
|
|
|
|
'bsnes' (for bsnes core).
|
|
|
|
|
|
|
|
|
|
• Copy gambatte sources to subdirectory 'gambatte' (for gambatte
|
|
|
|
|
core).
|
2012-05-12 13:16:27 +03:00
|
|
|
|
|
|
|
|
|
• Patch the bsnes sources with included patches (directory
|
2012-07-15 13:45:38 +03:00
|
|
|
|
'bsnes-patches/<version>', bsnes core)
|
|
|
|
|
|
|
|
|
|
• Patch the gambatte sources with included patches (directory
|
|
|
|
|
'gambatte-patches/<version>', gambatte core)
|
2012-05-12 13:16:27 +03:00
|
|
|
|
|
2012-05-11 19:36:13 +03:00
|
|
|
|
• Edit options.build (or copy of that file)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-11 19:36:13 +03:00
|
|
|
|
• Run make (passing 'OPTIONS=<filename>' if using something else
|
|
|
|
|
than options.build).
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
|
|
|
|
4 Command line options
|
|
|
|
|
|
|
|
|
|
4.1 ROM options
|
|
|
|
|
|
2012-09-21 05:50:00 +03:00
|
|
|
|
4.1.1 --rom=<file> (lsnes/SDL, lsnes/wxwidgets, lsnes-avidump)
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
2012-08-24 21:39:58 +03:00
|
|
|
|
Load <file> as ROM.
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
|
|
|
|
4.2 Session options
|
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.1 --pause
|
|
|
|
|
|
|
|
|
|
Start paused
|
|
|
|
|
|
|
|
|
|
4.2.2 <filename> (lsnes/SDL, lsnes-avidump, movieinfo)
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
|
|
|
|
Load <filename> as movie or savestate file. All other session
|
|
|
|
|
options are ignored.
|
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
4.2.3 --port1=<device> (lsnes/SDL, bsnes core only)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set type of port1. Valid values are:
|
|
|
|
|
|
|
|
|
|
• none: No device connected
|
|
|
|
|
|
|
|
|
|
• gamepad: One gamepad (the default)
|
|
|
|
|
|
|
|
|
|
• multitap: Four gamepads (warning: makes most games refuse to
|
|
|
|
|
start)
|
|
|
|
|
|
|
|
|
|
• mouse: Mouse.
|
|
|
|
|
|
2012-07-15 13:45:38 +03:00
|
|
|
|
4.2.4 --port2=<type> (lsnes/SDL, bsnes core only)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set type of port2. Valid values are:
|
|
|
|
|
|
|
|
|
|
• none: No device connected (the default)
|
|
|
|
|
|
|
|
|
|
• gamepad: One gamepad
|
|
|
|
|
|
|
|
|
|
• multitap: Four gamepads.
|
|
|
|
|
|
|
|
|
|
• mouse: Mouse
|
|
|
|
|
|
|
|
|
|
• superscope: Super Scope
|
|
|
|
|
|
|
|
|
|
• justifier: One justifier
|
|
|
|
|
|
|
|
|
|
• justifiers: Two justifiers
|
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.5 --gamename=<name> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
Set the name of game to <name>. Default is blank.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.6 --author=<name> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Add author with full name of <name> (no nickname).
|
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.7 --author=|<name> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Add author with nickname of <name> (no full name).
|
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.8 --author=<fullname>|<nickname> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Add author with full name of <fullname> and nickname of
|
|
|
|
|
<nickname>.
|
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.9 --rtc-second=<value> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
Set RTC second (0 is 1st January 1970 00:00:00Z). Default is
|
|
|
|
|
1,000,000,000.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-04-21 10:48:59 +03:00
|
|
|
|
4.2.10 --rtc-subsecond=<value> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
Set RTC subsecond. Range is 0-. Unit is CPU cycle. Default is 0.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-07-20 00:23:40 +03:00
|
|
|
|
4.2.11 --anchor-savestate=<file> (lsnes/SDL)
|
|
|
|
|
|
|
|
|
|
Set the anchor savestate file.
|
|
|
|
|
|
2012-09-21 05:50:00 +03:00
|
|
|
|
4.2.12 --load=<file> (lsnes/wxwidgets)
|
|
|
|
|
|
|
|
|
|
After loading the ROM, load <file> as savestate/movie.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
4.3 Misc. options:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
4.3.1 --run=<file> (lsnes/SDL)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
After running main RC file, run this file. If multiple are
|
|
|
|
|
specified, these execute in order specified.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
4.4 dump options (lsnes-dumpavi only)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.1 --dumper=<dumper>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Set the dumper to use (required). Use 'list' for listing of known
|
|
|
|
|
dumpers.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.2 --mode=<mode>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Set the mode to use (required for dumpers with multiple modes,
|
|
|
|
|
forbidden otherwise). Use 'list' for known modes.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.3 --prefix=<prefix>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Set dump prefix. Default is “avidump”.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.4 --option=<name>=<value>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Set option <name> to value <value>.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.5 --length=<length>
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Set number of frames to dump. Mandatory.
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
4.4.6 --lua=<script>
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
2012-01-23 11:26:32 +02:00
|
|
|
|
Run specified lua script (lsnes-dumpavi does not have
|
|
|
|
|
initialization files).
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-02-13 09:57:26 +02:00
|
|
|
|
4.4.7 --load-library=<library>
|
|
|
|
|
|
|
|
|
|
Load the specified shared object / dynamic library / dynamic link
|
|
|
|
|
library.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
5 Startup file lsnes.rc
|
|
|
|
|
|
|
|
|
|
Upon startup, lsnes (lsnes/SDL only) executes file lsnes.rc as
|
2011-12-12 16:08:22 +02:00
|
|
|
|
commands. This file is located in:
|
|
|
|
|
|
|
|
|
|
• Windows: %APPDATA%\lsnes\lsnes.rc (if %APPDATA% exists)
|
|
|
|
|
|
|
|
|
|
• Unix: $XDG_CONFIG_HOME/lsnes/lsnes.rc (if $XDG_CONFIG_HOME
|
|
|
|
|
exists)
|
|
|
|
|
|
|
|
|
|
• Unix: $HOME/.config/lsnes/lsnes.rc (if $HOME exists)
|
|
|
|
|
|
|
|
|
|
• All: ./lsnes.rc (fallback default).
|
|
|
|
|
|
|
|
|
|
If leading directories do not exist, attempt to create them is
|
|
|
|
|
made.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
6 Internal commands
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Commands beginning with '*' invoke the corresponding command
|
|
|
|
|
without alias expansion.
|
|
|
|
|
|
|
|
|
|
• If command starts with '+' (after possible '*'), the command is
|
|
|
|
|
executed as-is when button is pressed, and when button is
|
|
|
|
|
released, it is executed with '+' replaced by '-'.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
• Commands without '+' execute only on negative edge (release).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.1 run-script <script>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Run <script> as if commands were entered on the command line.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.2 Memory manipulation
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
<address> may be decimal or hexadecimal (prefixed with '0x').
|
|
|
|
|
<value> can be hexadecimal (prefixed with '0x'), unsigned or
|
|
|
|
|
signed (prefixed with '-') decimal.
|
|
|
|
|
|
|
|
|
|
The available element <sizes> are:
|
|
|
|
|
|
|
|
|
|
• byte: 1 byte
|
|
|
|
|
|
|
|
|
|
• word: 2 bytes
|
|
|
|
|
|
|
|
|
|
• dword: 4 bytes
|
|
|
|
|
|
|
|
|
|
• qword: 8 bytes
|
|
|
|
|
|
|
|
|
|
When reading RAM and ROM, multi-byte reads/writes are big-endian.
|
|
|
|
|
When dealing with DSP memory, multi-byte reads/writes are
|
|
|
|
|
native-endian (do not use operand sizes exceeding DSP bitness,
|
|
|
|
|
except dword is OK for 24-bit memory).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.2.1 read-<size> <address>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read the value of byte in <address>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.2.2 read-s<size> <address>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read the value of signed byte in <address>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.2.3 write-<size> <address> <value>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write <value> to byte in address <address>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3 Main commands
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
These commands are not available in lsnesrc, but are available
|
|
|
|
|
after ROM has been loaded.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.1 quit-emulator [/y]
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Quits the emulator (asking for confirmation). If /y is given, no
|
|
|
|
|
confirmation is asked.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.2 pause-emulator
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Toggle paused/unpaused
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.3 +advance-frame
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Advance frame. If the button is still held after configurable
|
|
|
|
|
timeout expires, game unpauses for the duration frame advance is
|
|
|
|
|
held.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.4 +advance-poll
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Advance subframe. If the button is still held after configurable
|
|
|
|
|
timeout expires, game unpauses for the duration frame advance is
|
|
|
|
|
held.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.5 advance-skiplag
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Skip to first poll in frame after current.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.6 reset
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reset the SNES after this frame.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.7 load <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Load savestate <filename> in current mode.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.8 load-state <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Load savestate <filename> in readwrite mode.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.9 load-readonly <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Load savestate <filename> in readonly mode.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.10 load-preserve <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Load savestate <filename> in readonly mode, preserving current
|
|
|
|
|
events.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.11 load-movie <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Load savestate <filename>, ignoring save part in readonly mode.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.12 save-state <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Save system state to <filename> as soon as possible.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.13 save-movie <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Save movie to <filename>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.14 set-rwmode
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set read-write mode.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.15 set-romode
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set read-only mode
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.16 toggle-rwmode
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Toggle between read-only and read-write modes.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.17 test-1, test-2, test-3
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Internal test commands. Don't use.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.18 take-screenshot <filename>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Save screenshot to <filename>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.19 +controller <class>-<#>-<button>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Press button <button> on controller <num> of class <class>.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• Class 'gamepad': A, B, X, Y, L, R, select, start, up, down,
|
|
|
|
|
left, right, ext0, ext1, ext2, ext3
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• Class 'mouse': L, R
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• Class 'superscope': trigger, cursor, turbo, pause
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• Class 'justifier': trigger, start
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• Class 'gb': A, B, select, start, up, down, left, right
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.20 hold-controller <class>-<#>-<button>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Hold/unhold button <button> on controller <num> of class <class>.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.21 type-controller <class>-<#>-<button>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Hold/unhold button <button> on controller <num> of class <class>
|
|
|
|
|
for the next frame. See +controller for button names.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Cauntion: Does not work properly if outside frame advance.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.22 designate-position <class>-<#>-analog<n>
|
2012-05-11 19:37:06 +03:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Designate position for analog pair. <n> is only there if there
|
|
|
|
|
are multiple axis pairs.
|
2012-05-11 19:37:06 +03:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.23 autofire (<pattern>|-)...
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set autofire pattern. Each parameter is comma-separated list of
|
2013-02-03 17:41:09 +02:00
|
|
|
|
button names to hold on that frame. After reaching the end of
|
|
|
|
|
pattern, the pattern restarts from the beginning.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.3.24 repaint
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Force a repaint.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.4 Save jukebox
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.4.1 cycle-jukebox-backward
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Cycle save jukebox backwards.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.4.2 cycle-jukebox-forward
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Cycle save jukebox forwards
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.4.3 load-jukebox
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Do load from jukebox (current mode).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.4.4 save-jukebox
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Do state save to jukebox.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.5 Lua
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Only available if lua support is compiled in.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.5.1 evaluate-lua <luacode>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Run Lua code <luacode> using built-in Lua interpretter.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.5.2 run-lua <script>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Run specified lua file using built-in Lua interpretter.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.5.3 reset-lua
|
2012-06-06 22:59:08 +03:00
|
|
|
|
|
|
|
|
|
Clear the Lua VM state and restore to factory defaults.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.6 Memory watch
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.6.1 add-watch <name> <expression>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Adds new watch (or modifies old one).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.6.2 remove-watch <name>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Remove a watch.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.7 Sound
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.7.1 enable-sound <on/off>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Enable/Disable sound.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.7.2 set-volume <multiplier>
|
2012-03-26 22:01:12 +03:00
|
|
|
|
|
|
|
|
|
Set the volume multiplier to <multiplier>. 1 is normal volume,
|
|
|
|
|
and higher numbers are louder.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.7.3 set-volume <multiplier>%
|
2012-03-26 22:01:12 +03:00
|
|
|
|
|
|
|
|
|
Set the volume multiplier to <multiplier> percent. 100 is normal
|
|
|
|
|
volume, and higher numbers are louder.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.7.4 set-volume <multiplier>dB
|
2012-03-26 22:01:12 +03:00
|
|
|
|
|
|
|
|
|
Set the volume multiplier to <multiplier> dB. 0 is normal volume,
|
|
|
|
|
and higher numbers are louder. The value may be negative.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.8 Misc.
|
2012-07-09 01:08:08 +03:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.8.1 reload-rom [<file>]
|
2012-07-09 01:08:08 +03:00
|
|
|
|
|
|
|
|
|
Reloads the main ROM image from <file>.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
6.8.2 +tangent
|
2012-09-23 23:02:53 +03:00
|
|
|
|
|
|
|
|
|
Tangent for recording voice for commentary track. While pressed,
|
|
|
|
|
record a stream.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7 Settings
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.1 Core settings
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.1.1 firmwarepath
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set where bsnes looks for firmware files. Default is “.”.
|
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
7.1.2 target
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
Set the target . Numeric, range is 0.001 to “infinite”. Default
|
|
|
|
|
is native framerate.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.1.3 savecompression
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set save compression level (integer 0-9). Default is 7 (0 is no
|
|
|
|
|
compression).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.1.4 advance-timeout
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set the frame advance timeout in milliseconds. Numeric integer,
|
|
|
|
|
range is 0-999999999. Default is 500.
|
|
|
|
|
|
2012-09-21 05:50:00 +03:00
|
|
|
|
7.1.5 allow-inconsistent-saves (bsnes only)
|
|
|
|
|
|
|
|
|
|
If true, save without synchronization. Makes games seriously
|
|
|
|
|
unstable.
|
|
|
|
|
|
|
|
|
|
7.1.6 save-every-frame (bsnes only)
|
|
|
|
|
|
|
|
|
|
If true, simulate saving on each frame. Trades off emulation
|
|
|
|
|
accuracy for sync stability. Also needed if the movie assumes
|
|
|
|
|
saving on each frame for rewind.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2 AVI dumper settings
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.1 avi-large
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Always dump at 512x448 or 512x478 regardless of what
|
|
|
|
|
the console outputs.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.2 avi-left-border
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Set the default left border thickness (unless lua
|
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.3 avi-right-border
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Set the default right border thickness (unless lua
|
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.4 avi-top-border
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Set the default top border thickness (unless lua
|
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.5 avi-bottom-border
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Set the default bottom border thickness (unless lua
|
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
7.2.6 avi-maxframes
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
AVI dumper: Maximum number of frames per dump segment (0 =>
|
|
|
|
|
unlimited). Range 0-999999999. Default is 0.
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
7.2.7 avi-compresison
|
|
|
|
|
|
|
|
|
|
AVI dumper: Compression level (0-18).
|
|
|
|
|
|
|
|
|
|
• Compression levels 10 and above are not compatible with stock
|
|
|
|
|
CSCD codec.
|
|
|
|
|
|
|
|
|
|
• Recomended level is 7.
|
|
|
|
|
|
2012-01-23 13:36:54 +02:00
|
|
|
|
7.2.8 avi-soundrate
|
|
|
|
|
|
|
|
|
|
AVI dumper: Set method of determining the sound rate.
|
|
|
|
|
|
|
|
|
|
• 0: Pick nearest of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48,
|
|
|
|
|
64, 88.2, 96, 128, 176.4 and 192 kHz.
|
|
|
|
|
|
|
|
|
|
• 1: Round down to nearest integer.
|
|
|
|
|
|
|
|
|
|
• 2: Round up to nearest ingeter.
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
7.3 JMD options
|
|
|
|
|
|
|
|
|
|
7.3.1 jmd-copression
|
|
|
|
|
|
|
|
|
|
JMD dumper: Compression level (0-9).
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
7.4 SDL platform settings
|
|
|
|
|
|
|
|
|
|
7.4.1 autorepeat-first-delay
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Sets the delay for first character in typematic autorepeat.
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
7.4.2 autorepeat-subsequent-delay
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Sets the delay for subsequent characters in typematic autorepeat.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8 Lua functions
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.1 Core (in main table)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.1.1 print
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Print line to message console.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.1.2 exec(string command)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Run command as it was entered on the command line
|
|
|
|
|
|
2012-03-06 08:43:21 +02:00
|
|
|
|
8.1.3 utime()
|
|
|
|
|
|
|
|
|
|
Returns two values. First is time since some epoch in seconds,
|
|
|
|
|
the second is microseconds mod 10^6 since that epoch.
|
|
|
|
|
|
|
|
|
|
8.1.4 emulator_ready()
|
|
|
|
|
|
|
|
|
|
Returns true if emulator has finished booting, false if not
|
|
|
|
|
(on_startup() will be issued later).
|
|
|
|
|
|
2012-03-06 18:21:17 +02:00
|
|
|
|
8.1.5 set_idle_timeout(number timeout)
|
|
|
|
|
|
|
|
|
|
Set number of microseconds to block idle for. After this timeout
|
|
|
|
|
has expired, on_idle() will be called once.
|
|
|
|
|
|
|
|
|
|
8.1.6 set_timer_timeout(number timeout)
|
|
|
|
|
|
|
|
|
|
Set number of microseconds to block timer for. After this timeout
|
|
|
|
|
has expired, on_timer() will be called once.
|
|
|
|
|
|
2012-06-06 22:59:08 +03:00
|
|
|
|
8.1.7 bus_address(number snesaddr)
|
|
|
|
|
|
|
|
|
|
Returns virtual address corresponding to specified address on
|
|
|
|
|
SNES bus.
|
|
|
|
|
|
2012-09-17 22:36:10 +03:00
|
|
|
|
8.1.8 loopwrapper(function fun, ...)
|
|
|
|
|
|
|
|
|
|
Calls function fun with function and specified arguments. The
|
|
|
|
|
function passed suspends execution until the function returned is
|
|
|
|
|
called. Handy for linear flow control among multiple invocations
|
|
|
|
|
of a hook. Example code:
|
|
|
|
|
|
|
|
|
|
on_paint = loopwrapper(function(wait)
|
|
|
|
|
|
|
|
|
|
while true do
|
|
|
|
|
|
|
|
|
|
gui.text(0, 0, “Test!”);
|
|
|
|
|
|
|
|
|
|
wait();
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end);
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2 Table bit:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Bitwise logical functions and related.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.1 bit.none(number...) / bit.bnot(number...)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
48-bit bitwise NOT / NONE function (set bits that are set in none
|
|
|
|
|
of the arguments).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.2 bit.any(number...) / bit.bor(number...)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
48-bit bitwise OR / ANY function (set bits that are set in any of
|
|
|
|
|
the arguments).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.3 bit.all(number...) / bit.band(number...)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
48-bit bitwise AND / ALL function (set bits that are set in all
|
|
|
|
|
of the arguments).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.4 bit.parity(number...) / bit.bxor(number...)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
48-bit bitwise XOR / PARITY function (set bits that are set in
|
|
|
|
|
odd number of the arguments).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.5 bit.lrotate(number base[, number amount[, number bits]])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Rotate bits-bit (max 48, default 48) number left by amount
|
|
|
|
|
(default 1) places.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.6 bit.rrotate(number base[, number amount[, number bits]])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Rotate bits-bit (max 48, default 48) number right by amount
|
|
|
|
|
(default 1) places.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.7 bit.lshift(number base[, number amount[, number bits]])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Shift bits-bit (max 48, default 48) number left by amount
|
|
|
|
|
(default 1) places. The new bits are filled with zeroes.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.8 bit.lrshift(number base[, number amount[, number bits]])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Shift bits-bit (max 48, default 48) number logically right by
|
|
|
|
|
amount (default 1) places. The new bits are filled with zeroes.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.2.9 bit.arshift(number base[, number amount[, number bits]])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Shift bits-bit (max 48, default 48) number arithmetically right
|
|
|
|
|
by amount (default 1) places. The new bits are shifted in with
|
|
|
|
|
copy of the high bit.
|
|
|
|
|
|
2012-03-07 12:35:46 +02:00
|
|
|
|
8.2.10 bit.extract(number base[, number bit0[, number bit1,...]])
|
|
|
|
|
|
|
|
|
|
Returns number that has bit0-th bit as bit 0, bit1-th bit as 1
|
|
|
|
|
and so on.
|
|
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
|
|
• Bit numbers up to 51 should work reliably (then things start
|
|
|
|
|
falling apart due to double precision issues).
|
|
|
|
|
|
|
|
|
|
• There are two special bit positions, true and false, standing
|
|
|
|
|
for always set bit and always clear bit.
|
|
|
|
|
|
2012-03-08 08:00:19 +02:00
|
|
|
|
8.2.11 bit.value([number bit1[, number bit2,...]])
|
|
|
|
|
|
|
|
|
|
Returns bitwise OR of 1 left shifted by bit1 places, 1 left
|
|
|
|
|
shifted by bit2 places and so on. As special value, nil argument
|
|
|
|
|
is no-op.
|
|
|
|
|
|
2013-01-21 20:43:06 +02:00
|
|
|
|
8.2.12 bit.test_any(number a, number b)
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Returns true if bitwise and of a and b is nonzero, otherwise
|
|
|
|
|
false.
|
2013-01-21 20:43:06 +02:00
|
|
|
|
|
|
|
|
|
8.2.13 bit.test_all(number a, number b)
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Returns true if bitwise and of a and b is equals b, otherwise
|
|
|
|
|
false.
|
2013-01-21 20:43:06 +02:00
|
|
|
|
|
|
|
|
|
8.2.14 bit.popcount(number a)
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
Returns number of set bits in a.
|
2013-01-21 20:43:06 +02:00
|
|
|
|
|
2013-01-23 08:43:31 +02:00
|
|
|
|
8.2.15 bit.clshift(number a, number b, [number amount,[number
|
|
|
|
|
bits]])
|
|
|
|
|
|
|
|
|
|
Does chained left shift on a, b by amount positions, assuming
|
|
|
|
|
numbers to be of specified number of bits.
|
|
|
|
|
|
|
|
|
|
8.2.16 bit.crshift(number a, number b, [number amount,[number
|
|
|
|
|
bits]])
|
|
|
|
|
|
|
|
|
|
Does chained right shift on a, b by amount positions, assuming
|
|
|
|
|
numbers to be of specified number of bits.
|
|
|
|
|
|
|
|
|
|
8.2.17 bit.flagdecode(number a, number bits, [string on, [string
|
|
|
|
|
off]])
|
|
|
|
|
|
|
|
|
|
Return string of length bits where ith character is ith character
|
|
|
|
|
of on if bit i is on, otherwise ith character of off. Out of
|
|
|
|
|
range reads give last character, or '*'/'-' if empty.
|
|
|
|
|
|
|
|
|
|
8.2.18 bit.rflagdecode(number a, number bits, [string on, [string
|
|
|
|
|
off]])
|
|
|
|
|
|
|
|
|
|
Like bit.flagdecode, but outputs the string in the opposite order
|
|
|
|
|
(most significant bit first).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3 Table gui:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Most of these functions can only be called in on_paint and
|
|
|
|
|
on_video callbacks. Exceptions are noted.
|
|
|
|
|
|
|
|
|
|
Colors are 32-bit. Bits 0-7 are the blue component, bits 8-15 are
|
|
|
|
|
the green component, bits 16-23 are the red component, bits 24-31
|
|
|
|
|
are alpha component (0 is fully opaque, 255 is almost
|
|
|
|
|
transparent). -1 is the fully transparent color. Alpha values
|
|
|
|
|
greater than 127 do work.
|
|
|
|
|
|
|
|
|
|
Origin of coordinates is at top left corner of game display area.
|
|
|
|
|
Left and top gaps correspond to negative coordinates.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.1 gui.resolution()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Returns 2-tuple (hresolution, vresolution).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.2 gui.<class>_gap(number gap)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set the <class> (left, right, top, bottom) gap to specified value
|
|
|
|
|
(max gap is 8191).
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.3 gui.text(number x, number y, string text[, number fgc[,
|
2011-12-12 16:08:22 +02:00
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
|
|
Draw specified text on the GUI (each character cell is 8 or 16
|
|
|
|
|
wide and 16 high). Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate to start the drawing from (and x-coordinate at
|
|
|
|
|
begining of the lines).
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate to start the drawing from.
|
|
|
|
|
|
|
|
|
|
• text: The text to draw.
|
|
|
|
|
|
|
|
|
|
• fgc: Text color (default is 0xFFFFFF (white))
|
|
|
|
|
|
|
|
|
|
• bgc: Background color (default is -1 (transparent))
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.4 gui.textH(number x, number y, string text[, number fgc[,
|
2011-12-25 08:48:54 +02:00
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-width.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.5 gui.textV(number x, number y, string text[, number fgc[,
|
2011-12-25 08:48:54 +02:00
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-height.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.6 gui.textHV(number x, number y, string text[, number fgc[,
|
2011-12-25 08:48:54 +02:00
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-width/double-height.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.3.7 gui.rectangle(number x, number y, number width, number
|
2011-12-12 16:08:22 +02:00
|
|
|
|
height[, number thickness[, number outline[, number fill]]])
|
|
|
|
|
|
|
|
|
|
Draw rectangle on the GUI. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of left edge.
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of upper edge.
|
|
|
|
|
|
|
|
|
|
• width: Width of rectangle.
|
|
|
|
|
|
|
|
|
|
• height: Height of rectangle.
|
|
|
|
|
|
|
|
|
|
• thickness: Thickness of outline (default is 1).
|
|
|
|
|
|
|
|
|
|
• outline: Color of outline (default is 0xFFFFFF (white))
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
• fill: Color of fill (default is -1 (transparent))
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.8 gui.box(number x, number y, number width, number height[,
|
|
|
|
|
number thickness[, number outline1[,number outline2[, number
|
|
|
|
|
fill]]]])
|
|
|
|
|
|
|
|
|
|
Draw rectangle with 3D effect on the GUI. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of left edge.
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of upper edge.
|
|
|
|
|
|
|
|
|
|
• width: Width of rectangle.
|
|
|
|
|
|
|
|
|
|
• height: Height of rectangle.
|
|
|
|
|
|
|
|
|
|
• thickness: Thickness of outline (default is 1).
|
|
|
|
|
|
|
|
|
|
• outline1: First color of outline (default is 0xFFFFFF (white))
|
|
|
|
|
|
|
|
|
|
• outline2: First color of outline (default is 0x808080 (dark
|
|
|
|
|
gray))
|
|
|
|
|
|
|
|
|
|
• fill: Color of fill (default is 0xC0C0C0 (light grayy))
|
|
|
|
|
|
|
|
|
|
8.3.9 gui.pixel(number x, number y[, number color])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Draw one pixel on the GUI. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of the pixel
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of the pixel
|
|
|
|
|
|
|
|
|
|
• color: Color of the pixel (default is 0xFFFFFF (white))
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.10 gui.crosshair(number x, number y[, number length[, number
|
2011-12-12 16:08:22 +02:00
|
|
|
|
color]])
|
|
|
|
|
|
|
|
|
|
Draw a crosshair. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of the crosshair
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of the crosshair
|
|
|
|
|
|
|
|
|
|
• length: Length of the crosshair lines (default 10).
|
|
|
|
|
|
|
|
|
|
• color: Color of the crosshair (default is 0xFFFFFF (white))
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.11 gui.line(number x1, number y1, number x2, number y2[,
|
2011-12-12 16:08:22 +02:00
|
|
|
|
number color])
|
|
|
|
|
|
|
|
|
|
Draw a thin line. Parameters:
|
|
|
|
|
|
|
|
|
|
• x1: X-coordinate of one end.
|
|
|
|
|
|
|
|
|
|
• y1: Y-coordinate of one end.
|
|
|
|
|
|
|
|
|
|
• x2: X-coordinate of the other end.
|
|
|
|
|
|
|
|
|
|
• y2: Y-coordinate of the other end.
|
|
|
|
|
|
|
|
|
|
• color: Color of the line (default is 0xFFFFFF (white)).
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.12 gui.circle(number x, number y, number r[, number thick[,
|
2011-12-12 16:08:22 +02:00
|
|
|
|
number border[, number fil]]])
|
|
|
|
|
|
|
|
|
|
Draw a circle. Parameters.
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of the center
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of the center
|
|
|
|
|
|
|
|
|
|
• r: The radius of the circle
|
|
|
|
|
|
|
|
|
|
• thick: Border thickness
|
|
|
|
|
|
|
|
|
|
• border: Border color (default is 0xFFFFFF (white))
|
|
|
|
|
|
|
|
|
|
• fill: Fill color (default is -1 (transparent)).
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.13 gui.bitmap_draw(number x, number y, bitmap bitmap, palette
|
2012-03-03 11:27:26 +02:00
|
|
|
|
palette)
|
|
|
|
|
|
|
|
|
|
Draw a bitmap on screen with specified palette. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of left edge.
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of top edge.
|
|
|
|
|
|
|
|
|
|
• bitmap: The bitmap to draw
|
|
|
|
|
|
|
|
|
|
• palette: The palette to draw the bitmap using.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.14 gui.bitmap_draw(number x, number y, dbitmap bitmap)
|
2012-03-03 11:27:26 +02:00
|
|
|
|
|
|
|
|
|
Draw a bitmap on screen. Parameters:
|
|
|
|
|
|
|
|
|
|
• x: X-coordinate of left edge.
|
|
|
|
|
|
|
|
|
|
• y: Y-coordinate of top edge.
|
|
|
|
|
|
|
|
|
|
• bitmap: The bitmap to draw
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.15 gui.palette_new()
|
2012-03-03 11:27:26 +02:00
|
|
|
|
|
|
|
|
|
Returns a new palette (initially all transparent). Can be used
|
|
|
|
|
anywhere.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.16 gui.bitmap_new(number w, number h, boolean direct[, bool
|
2012-03-08 08:00:19 +02:00
|
|
|
|
icolor])
|
2012-03-03 11:27:26 +02:00
|
|
|
|
|
|
|
|
|
Returns a new bitmap/dbitmap. Can be used anywhere. Parameters:
|
|
|
|
|
|
|
|
|
|
• w: The width of new bitmap
|
|
|
|
|
|
|
|
|
|
• h: The height of new bitmap
|
|
|
|
|
|
|
|
|
|
• direct: If true, the returned bitmap is dbitmap, otherwise
|
|
|
|
|
bitmap.
|
|
|
|
|
|
2012-03-08 08:00:19 +02:00
|
|
|
|
• icolor: Initital fill color (defaults to 0 on BITMAP, -1 on
|
|
|
|
|
DBITMAP)
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.17 gui.bitmap_load(string file)
|
2012-03-03 11:27:26 +02:00
|
|
|
|
|
|
|
|
|
Returns loaded bitmap/dbitmap (if bitmap, the second return value
|
|
|
|
|
is palette for bitmap). Can be used anywhere. Parameters:
|
|
|
|
|
|
|
|
|
|
• file: The name of file to load.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.18 gui.palette_set(palette palette, number index, number
|
2012-03-03 11:27:26 +02:00
|
|
|
|
color)
|
|
|
|
|
|
|
|
|
|
Sets color in palette. Can be used anywhere. Parameters:
|
|
|
|
|
|
|
|
|
|
• palette: The palette to manipulate
|
|
|
|
|
|
|
|
|
|
• index: Index of color (0-65535).
|
|
|
|
|
|
|
|
|
|
• color: The color value.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.19 gui.bitmap_pset(bitmap/dbitmap bitmap, number x, number y,
|
2012-03-03 11:27:26 +02:00
|
|
|
|
number color)
|
|
|
|
|
|
|
|
|
|
Sets specified pixel in bitmap. Can be used anywhere. Parameters:
|
|
|
|
|
|
|
|
|
|
• bitmap: The bitmap to manipulate
|
|
|
|
|
|
|
|
|
|
• x: The x-coordinate of the pixel.
|
|
|
|
|
|
|
|
|
|
• y: The y-coordinate of the pixel.
|
|
|
|
|
|
|
|
|
|
• color: If bitmap is a bitmap, color index (0-65535). Otherwise
|
|
|
|
|
color value.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.20 gui.bitmap_size(bitmap/dbitmap bitmap)
|
2012-03-03 11:27:26 +02:00
|
|
|
|
|
|
|
|
|
Get size of bitmap. Can be used anywhere. Parameters:
|
|
|
|
|
|
|
|
|
|
• bitmap: The bitmap to query.
|
|
|
|
|
|
|
|
|
|
The first return is the width, the second is the height.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.21 gui.bitmap_blit(bitmap/dbitmap dest, number dx, number dy,
|
2012-03-03 11:27:26 +02:00
|
|
|
|
bitmap/dbitmap src, number sx, number sy, number w, number h[,
|
|
|
|
|
number ck])
|
|
|
|
|
|
|
|
|
|
Blit a part of bitmap to another. Can be used anywhere.
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
|
|
• dest: Destination to blit to.
|
|
|
|
|
|
|
|
|
|
• dx: left edge of target
|
|
|
|
|
|
|
|
|
|
• dy: Top edge of target
|
|
|
|
|
|
|
|
|
|
• src: The source to blit from. Must be of the same type as
|
|
|
|
|
destination.
|
|
|
|
|
|
|
|
|
|
• sx: left edge of source
|
|
|
|
|
|
|
|
|
|
• sy: Top edge of source
|
|
|
|
|
|
|
|
|
|
• w: Width of region
|
|
|
|
|
|
|
|
|
|
• h: Height of region.
|
|
|
|
|
|
|
|
|
|
• ck: Color key. Pixels of this color are not blitted.
|
|
|
|
|
|
|
|
|
|
– If bitmaps are bitmaps, this is color index of colorkey.
|
|
|
|
|
Values outside range 0-65535 cause no key to be used as
|
|
|
|
|
colorkey.
|
|
|
|
|
|
|
|
|
|
– If bitmaps are dbitmaps, this color value of colorkey.
|
|
|
|
|
|
|
|
|
|
– May be absent or nil for no colorkey blit.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.22 gui.repaint()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Request on_repaint() to happen as soon as possible. Can be used
|
|
|
|
|
anywhere.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.23 gui.subframe_update(boolean on)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Request subframe updates (calling on_paint() on subframes) to
|
|
|
|
|
happen (on=true) or not happen (on=false). Can be used anywhere.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.24 gui.screenshot(string filename)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write PNG screenshot of the current frame (no drawings) to
|
|
|
|
|
specified file. Can be used anywhere.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.25 gui.color(number r, number g, number b[, number a])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Returns color (in notation Lua scripts use) corresponding to
|
|
|
|
|
color (r,g,b), each component in scale 0-255. If a is specified,
|
|
|
|
|
that is alpha (0 is fully transparent, 256(sic) is fully opaque).
|
|
|
|
|
The default alpha is 256.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.26 gui.status(string name, string value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set status field “L[<name>]” to <value> in status area. Can be
|
|
|
|
|
used anywhere.
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
8.3.27 gui.rainbow(number step, number steps[, number color])
|
2012-04-02 18:05:46 +03:00
|
|
|
|
|
|
|
|
|
Perform hue rotation of color <color> (default bright red), by
|
|
|
|
|
<step> steps. The number of steps per full rotation is given by
|
|
|
|
|
absolute value of <steps>.
|
|
|
|
|
|
|
|
|
|
If <steps> is negative, the rotation will be counterclockwise.
|
|
|
|
|
|
2012-09-29 08:08:40 +03:00
|
|
|
|
8.3.28 gui.screenshot(string filename)
|
|
|
|
|
|
|
|
|
|
Saves a screenshot into specified file.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.3.29 gui.renderq_new(number width, number height)
|
|
|
|
|
|
|
|
|
|
Create render queue with specified reported size and return it.
|
|
|
|
|
|
|
|
|
|
8.3.30 gui.renderq_clear(RENDERQUEUE queue)
|
|
|
|
|
|
|
|
|
|
Clear specified render queue.
|
|
|
|
|
|
|
|
|
|
8.3.31 gui.renderq_set(RENDERQUEUE queue)
|
|
|
|
|
|
|
|
|
|
Switch to specified render queue. Use nil as queue to switch to
|
|
|
|
|
default queue.
|
|
|
|
|
|
|
|
|
|
• When switched to another queue, all drawing functions work and
|
|
|
|
|
draw there, even outside on_video/on_paint.
|
|
|
|
|
|
|
|
|
|
8.3.32 gui.renderq_run(RENDERQUEUE queue)
|
|
|
|
|
|
|
|
|
|
Run specified render queue, copying the objects to current render
|
|
|
|
|
queue.
|
|
|
|
|
|
|
|
|
|
• Warning: Don't try to run the current render queue.
|
|
|
|
|
|
|
|
|
|
8.3.33 gui.loadfont(string filename)
|
2013-02-01 21:52:27 +02:00
|
|
|
|
|
|
|
|
|
Loads font from specified file (CUSTOMFONT object).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.3.34 CUSTOMFONT(number x, number y, string text[, number fgc[,
|
2013-02-01 21:52:27 +02:00
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
|
|
Draw string with custom font to screen. The parameters are the
|
|
|
|
|
same as in gui.text.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.4 table input
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Input handling. Only available in on_input callback.
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.4.1 input.get(number controller, number index)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read the specified index (0-11) from specified controller (0-7).
|
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
|
|
• Uses physical controller numbering. Gamepad in port 2 is
|
|
|
|
|
controller 4, not 1!
|
|
|
|
|
|
2012-01-11 15:05:01 +02:00
|
|
|
|
8.4.2 input.set(number controller, number index, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write the specified index (0-11) from specified controller (0-7),
|
|
|
|
|
storing value. Notes:
|
|
|
|
|
|
|
|
|
|
• Uses physical controller numbering. Gamepad in port 2 is
|
|
|
|
|
controller 4, not 1!
|
|
|
|
|
|
2012-03-06 18:21:17 +02:00
|
|
|
|
8.4.3 input.geta(number controller)
|
|
|
|
|
|
|
|
|
|
Get input state for entiere controller. Returns 13 return values.
|
|
|
|
|
|
|
|
|
|
• 1st return value: Bitmask: bit i is set if i:th index is
|
|
|
|
|
nonzero
|
|
|
|
|
|
|
|
|
|
• 2nd-13th return value: value of i:th index.
|
|
|
|
|
|
|
|
|
|
8.4.4 input.seta(number controller, number bitmask, number
|
|
|
|
|
args...)
|
|
|
|
|
|
|
|
|
|
Set state for entiere controller. args is up to 12 values for
|
|
|
|
|
indices (overriding values in bitmask if specified).
|
|
|
|
|
|
2012-03-10 18:20:03 +02:00
|
|
|
|
8.4.5 input.controllertype(number controller)
|
|
|
|
|
|
|
|
|
|
Get the type of controller as string. Valid values are:
|
|
|
|
|
|
|
|
|
|
• gamepad
|
|
|
|
|
|
|
|
|
|
• mouse
|
|
|
|
|
|
|
|
|
|
• justifier
|
|
|
|
|
|
|
|
|
|
• superscope
|
|
|
|
|
|
|
|
|
|
8.4.6 input.reset([number cycles])
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Execute reset. If cycles is greater than zero, do delayed reset.
|
|
|
|
|
0 (or no value) causes immediate reset.
|
|
|
|
|
|
|
|
|
|
• Only available with subframe flag false.
|
|
|
|
|
|
2012-03-10 18:20:03 +02:00
|
|
|
|
8.4.7 input.raw()
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
|
|
|
|
Returns table of tables of all available keys and axes. The first
|
|
|
|
|
table is indexed by key name (platform-dependent!), and the inner
|
|
|
|
|
table has the following fields:
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• value: Last reported value for control
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
– For keys: 1 for pressed, 0 for released.
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
– For axes: -32767...32767.
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
– For presure-sensitive buttons: 0...32767.
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
– For hats: Bitmask: 1=>Up, 2=>Right, 4=>Down, 8=>Left.
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
– For mouse: Coordinates relative to game area.
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
• ktype: Type of key (disabled, key, mouse, axis, axis-inverse,
|
|
|
|
|
hat, pressure-m0, pressure-mp, pressure-0m, pressure-0p,
|
|
|
|
|
pressure-pm, pressure-p0).
|
2012-01-17 16:24:50 +02:00
|
|
|
|
|
2012-09-29 08:08:40 +03:00
|
|
|
|
8.4.8 input.keyhook(string key, boolean state)
|
2012-01-17 21:35:49 +02:00
|
|
|
|
|
|
|
|
|
Requests that keyhook events to be sent for key (state=true) or
|
|
|
|
|
not sent (state=false).
|
|
|
|
|
|
2012-09-29 08:08:40 +03:00
|
|
|
|
8.4.9 input.joyget(number controller)
|
|
|
|
|
|
|
|
|
|
Returns table for current controls for specified controller. The
|
|
|
|
|
names of fields vary by controller type.
|
|
|
|
|
|
|
|
|
|
• The buttons have the same name as those are referred to in
|
|
|
|
|
other contexts in the emulator
|
|
|
|
|
|
|
|
|
|
• The analog axes are “xaxis” and “yaxis”.
|
|
|
|
|
|
|
|
|
|
8.4.10 input.joyset(number controller, table controls)
|
|
|
|
|
|
|
|
|
|
Set the the state of specified controller to values specified in
|
|
|
|
|
specified table.
|
|
|
|
|
|
2012-10-01 23:23:08 +03:00
|
|
|
|
8.4.11 input.lcid_to_pcid(number controller)
|
|
|
|
|
|
|
|
|
|
Return the physical index, physical port and controller number in
|
|
|
|
|
port for specified (1-based) logical controller.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.5 Table keyboard
|
|
|
|
|
|
|
|
|
|
Various keybinding-related functions
|
|
|
|
|
|
|
|
|
|
8.5.1 keyboard.bind(string mod, string mask, string key, string
|
|
|
|
|
cmd)
|
|
|
|
|
|
|
|
|
|
Bind specified key with specified modifers to specified command.
|
|
|
|
|
|
|
|
|
|
8.5.2 keyboard.unbind(string mod, string mask, string key)
|
|
|
|
|
|
|
|
|
|
Unbind specified key with specified modifers.
|
|
|
|
|
|
|
|
|
|
8.5.3 keyboard.alias(string alias, string expansion)
|
|
|
|
|
|
|
|
|
|
Set expansion of given command.
|
|
|
|
|
|
|
|
|
|
8.6 Table subtitle
|
2012-09-08 21:02:27 +03:00
|
|
|
|
|
|
|
|
|
Subtitle handling
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.6.1 subtitle.byindex(number i)
|
2012-09-08 21:02:27 +03:00
|
|
|
|
|
|
|
|
|
Read the frame and length of ith subtitle. Returns nothing if not
|
|
|
|
|
present.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.6.2 subtitle.set(number f, number l, string txt)
|
2012-09-08 21:02:27 +03:00
|
|
|
|
|
|
|
|
|
Set the text of subtitle.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.6.3 subtitle.get(number f, number l)
|
2012-09-08 21:02:27 +03:00
|
|
|
|
|
|
|
|
|
Get the text of subtitle.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.6.4 subtitle.delete(number f, number l)
|
2012-09-08 21:02:27 +03:00
|
|
|
|
|
|
|
|
|
Delete specified subtitle.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7 Table hostmemory
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Host memory handling (extra memory saved to savestates). Host
|
|
|
|
|
memory starts empty.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.1 hostmemory.read(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads hostmemory slot address. Slot numbers out of range return
|
|
|
|
|
false instead of numeric.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.2 hostmemory.write(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Writes hostmemory slot with 0-255. Slot numbers out of range
|
|
|
|
|
cause extension of host memory slot space.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.3 hostmemory.readbyte(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read unsigned byte (1 element) from given address. Slots out of
|
|
|
|
|
range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.4 hostmemory.writebyte(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write unsigned byte (1 element) to given slot. Slot numbers out
|
|
|
|
|
of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.5 hostmemory.readsbyte(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read signed byte (1 element) from given address. Slots out of
|
|
|
|
|
range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.6 hostmemory.writesbyte(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write signed byte (1 element) to given slot. Slot numbers out of
|
|
|
|
|
range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.7 hostmemory.readword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read unsigned word (2 elements) from given address. Slots out of
|
|
|
|
|
range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.8 hostmemory.writeword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write unsigned word (2 elements) to given slot. Slot numbers out
|
|
|
|
|
of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.9 hostmemory.readsword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read signed word (2 elements) from given address. Slots out of
|
|
|
|
|
range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.10 hostmemory.writesword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write signed word (2 elements) to given slot. Slot numbers out of
|
|
|
|
|
range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.11 hostmemory.readdword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read unsigned doubleword (4 elements) from given address. Slots
|
|
|
|
|
out of range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.12 hostmemory.writedword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write unsigned doubleword (4 elements) to given slot. Slot
|
|
|
|
|
numbers out of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.13 hostmemory.readsdword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read signed doubleword (4 elements) from given address. Slots out
|
|
|
|
|
of range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.14 hostmemory.writesdword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write signed doubleword (4 elements) to given slot. Slot numbers
|
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.15 hostmemory.readqword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read unsigned quadword (8 elements) from given address. Slots out
|
|
|
|
|
of range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.16 hostmemory.writeqword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write unsigned quadword (4 elements) to given slot. Slot numbers
|
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.17 hostmemory.readsqword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read signed quadword (8 elements) from given address. Slots out
|
|
|
|
|
of range return false.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.7.18 hostmemory.writesqword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Write signed quadword (8 elements) to given slot. Slot numbers
|
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8 Table movie
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie handling
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.1 movie.currentframe()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Return number of current frame.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.2 movie.framecount()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Return number of frames in movie.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.3 movie.readonly()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Return true if in readonly mode, false if in readwrite.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.4 movie.rerecords()
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Returns the current value of rerecord count.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.5 movie.set_readwrite()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set readwrite mode (does not cause on_readwrite callback).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.6 movie.frame_subframes(number frame)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Count number of subframes in specified frame (frame numbers are
|
|
|
|
|
1-based) and return that.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.7 movie.read_subframe(number frame, number subframe)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Read specifed subframe in specified frame and return data as
|
|
|
|
|
array (100 elements, numbered 0-99 currently).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.8 movie.read_rtc()
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Returns the current value of the RTC as a pair (second,
|
|
|
|
|
subsecond).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.8.9 movie.unsafe_rewind([UNSAFEREWIND state])
|
2012-05-19 14:37:49 +03:00
|
|
|
|
|
|
|
|
|
Start setting point for unsafe rewind or jump to point of unsafe
|
|
|
|
|
rewind.
|
|
|
|
|
|
|
|
|
|
• If called without argument, causes emulator to start process of
|
|
|
|
|
setting unsafe rewind point. When this has finished, callback
|
|
|
|
|
on_set_rewind occurs, passing the rewind state to lua script.
|
|
|
|
|
|
|
|
|
|
• If called with argument, causes emulator rewind to passed
|
|
|
|
|
rewind point as soon as possible. Readwrite mode is implicitly
|
|
|
|
|
activated.
|
|
|
|
|
|
|
|
|
|
The following warnings apply to unsafe rewinding:
|
|
|
|
|
|
|
|
|
|
• There are no safety checks against misuse (that's what “unsafe”
|
|
|
|
|
comes from)!
|
|
|
|
|
|
|
|
|
|
• Only call rewind from timeline rewind point was set from.
|
|
|
|
|
|
|
|
|
|
• Only call rewind from after the rewind point was set.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.9 Table settings
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Routines for settings manipulation
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.9.1 settings.get(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Get value of setting. If setting is blank, returns false. If
|
|
|
|
|
setting value can't be obtained, returns (nil, error message).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.9.2 settings.set(string name, string value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Set value of setting. If setting can't be set, returns (nil,
|
|
|
|
|
error message).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.9.3 settings.is_set(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Returns if setting is set. If setting does not exist, returns
|
|
|
|
|
(nil, error message).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.9.4 settings.blank(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Blanks a setting and returns true. If setting can't be blanked,
|
|
|
|
|
returns (nil, error message).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10 Table memory
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains various functions for managing memory
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.1 memory.vma_count()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Returns the number of VMAs
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.2 memory.read_vma(number index)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified VMA (indices start from zero). Trying to read
|
|
|
|
|
invalid VMA gives nil. The read VMA is table with the following
|
|
|
|
|
fields:
|
|
|
|
|
|
|
|
|
|
• region_name (string): The readable name of the VMA
|
|
|
|
|
|
|
|
|
|
• baseaddr (number): Base address of the VMA
|
|
|
|
|
|
|
|
|
|
• lastaddr (number): Last address in the VMA.
|
|
|
|
|
|
|
|
|
|
• size (number): The size of VMA in bytes.
|
|
|
|
|
|
|
|
|
|
• readonly (boolean): True of the VMA corresponds to ROM.
|
|
|
|
|
|
2012-06-06 22:59:08 +03:00
|
|
|
|
• iospace (boolean): True if the VMA is I/O space.
|
|
|
|
|
|
2011-12-12 16:08:22 +02:00
|
|
|
|
• native_endian (boolean): True if the VMA has native endian as
|
|
|
|
|
opposed to little endian.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.3 memory.find_vma(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Finds the VMA containing specified address. Returns table in the
|
|
|
|
|
same format as read_vma or nil if not found.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.4 memory.readbyte(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as unsigned byte and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.5 memory.readsbyte(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as signed byte and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.6 memory.writebyte(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
|
complement) to specified address (as a byte).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.7 memory.readword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as unsigned word and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.8 memory.readsword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as signed word and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.9 memory.writeword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
|
complement) to specified address (as a word).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.10 memory.readdword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as unsigned doubleword and returns
|
|
|
|
|
the result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.11 memory.readsdword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as signed doubleword and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.12 memory.writedword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
|
complement) to specified address (as a doubleword).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.13 memory.readqword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as unsigned quadword and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.14 memory.readsqword(number address)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Reads the specified address as signed quadword and returns the
|
|
|
|
|
result.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.15 memory.writeqword(number address, number value)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
|
complement) to specified address (as a quadword).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.16 memory.hash_region(number base, number size)
|
2012-05-10 15:28:54 +03:00
|
|
|
|
|
|
|
|
|
Hash specified number of bytes starting from specified address
|
|
|
|
|
and return the SHA-256.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.17 memory.hash_state()
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Hash the current system state. Mainly useful for debugging
|
|
|
|
|
savestates.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.18 memory.readregion(number base, number size)
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Read a region of memory.
|
|
|
|
|
|
|
|
|
|
• Warning: If the region crosses VMA boundary, the results are
|
|
|
|
|
undefined.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.19 memory.map<type>([number base, number size])
|
2012-09-29 09:14:09 +03:00
|
|
|
|
|
|
|
|
|
Returns a table mapping specified memory aperture for read/write.
|
|
|
|
|
If parameters are omitted, entiere map space is the aperture.
|
|
|
|
|
|
|
|
|
|
• Type may be one of: byte, sbyte, word, sword, dword, sdword,
|
|
|
|
|
qword or sqword.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.20 memory.writeregion(number base, number size, table data)
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Write a region of memory.
|
|
|
|
|
|
|
|
|
|
• Warning: If the region crosses VMA boundary, the results are
|
|
|
|
|
undefined.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.21 memory.map_structure()
|
2012-09-29 11:56:18 +03:00
|
|
|
|
|
|
|
|
|
Returns a new mapping structure (MMAP_STRUCT)
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.22 MMAP_STRUCT(string key, number address, string type)
|
2012-09-29 11:56:18 +03:00
|
|
|
|
|
|
|
|
|
Bind key in mmap structure to specified address with specified
|
|
|
|
|
type.
|
|
|
|
|
|
|
|
|
|
• Type may be one of: byte, sbyte, word, sword, dword, sdword,
|
|
|
|
|
qword or sqword.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.10.23 memory.read_expr(string expr)
|
2012-10-07 15:12:46 +03:00
|
|
|
|
|
|
|
|
|
Evaluate specified watch expression and return result
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.11 Table subtitle
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Contains functions for manipulating subtitles.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.11.1 subtitle.byindex(number index)
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Get (basetime, length) pair of specified subtitle index or
|
|
|
|
|
nothing if index isn't valid.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.11.2 subtitle.get(number basetime, number length)
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Read the specified subtitle. Returns “” if the subtitle does not
|
|
|
|
|
exist.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.11.3 subtitle.set(number basetime, number length, string
|
2012-09-29 08:08:40 +03:00
|
|
|
|
content)
|
|
|
|
|
|
|
|
|
|
Set the specified subtitle.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.11.4 subtitle.deltete(number basetime, number length)
|
2012-09-29 08:08:40 +03:00
|
|
|
|
|
|
|
|
|
Delete the specified subtitle.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.12 Table _SYSTEM
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains copy of global variables from time of Lua
|
|
|
|
|
initialization. Non-writeable.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13 Callbacks
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Various callbacks to Lua that can occur.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.1 Callback: on_paint(bool not_synth)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when screen is being painted. Any gui.* calls requiring
|
|
|
|
|
graphic context draw on the screen.
|
|
|
|
|
|
2012-03-06 08:43:21 +02:00
|
|
|
|
not_synth is true if this hook is being called in response to
|
|
|
|
|
received frame, false otherwise.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.2 Callback: on_video()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when video dump frame is being painted. Any gui.* calls
|
|
|
|
|
requiring graphic context draw on the video.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.3 Callback: on_frame_emulated()
|
2012-03-06 08:43:21 +02:00
|
|
|
|
|
|
|
|
|
Called when emulating frame has completed and
|
|
|
|
|
on_paint()/on_video() calls are about to be issued.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.4 Callback: on_frame()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called on each starting whole frame.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.5 Callback: on_startup()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when the emulator is starting (lsnes.rc and --run files
|
|
|
|
|
has been run).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.6 Callback: on_rewind()
|
2012-03-06 08:43:21 +02:00
|
|
|
|
|
|
|
|
|
Called when rewind movie to beginning has completed.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.7 Callback: on_pre_load(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called just before savestate/movie load occurs (note: loads are
|
|
|
|
|
always delayed, so this occurs even when load was initiated by
|
|
|
|
|
lua).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.8 Callback: on_err_load(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called if loadstate goes wrong.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.9 Callback: on_post_load(string name, boolean was_savestate)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called on successful loadstate. was_savestate gives if this was a
|
|
|
|
|
savestate or a movie.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.10 Callback: on_pre_save(string name, boolean is_savestate)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called just before savestate save occurs (note: movie saves are
|
|
|
|
|
synchronous and won't trigger these callbacks if called from
|
|
|
|
|
Lua).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.11 Callback: on_err_save(string name)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called if savestate goes wrong.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.12 Callback: on_post_save(string name, boolean is_savestate)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called on successful savaestate. is_savestate gives if this was a
|
2012-04-07 16:03:32 +03:00
|
|
|
|
savestate or a movie.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.13 Callback: on_quit()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when emulator is shutting down.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.14 Callback: on_input(boolean subframe)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when emulator is just sending input to bsnes core.
|
|
|
|
|
Warning: This is called even in readonly mode, but the results
|
|
|
|
|
are ignored.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.15 Callback: on_reset()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when SNES is reset.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.16 Callback: on_readwrite()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Called when moving into readwrite mode as result of “set-rwmode”
|
|
|
|
|
command (note: moving to rwmode by Lua won't trigger this, as per
|
|
|
|
|
recursive entry protection).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.17 Callback: on_snoop(number port, number controller, number
|
2011-12-12 16:08:22 +02:00
|
|
|
|
index, number value)
|
|
|
|
|
|
|
|
|
|
Called each time bsnes asks for input. The value is the final
|
|
|
|
|
value to be sent to bsnes core (readonly mode, autohold and
|
|
|
|
|
autofire have been taken into account). Might be useful when
|
|
|
|
|
translating movies to format suitable for console verification.
|
|
|
|
|
Note: There is no way to modify the value to be sent.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.18 Callback: on_keyhook(string keyname, table state)
|
2012-01-17 21:35:49 +02:00
|
|
|
|
|
|
|
|
|
Sent when key that has keyhook events requested changes state.
|
|
|
|
|
Keyname is name of the key (group) and state is the state (same
|
|
|
|
|
kind as table values in input.raw).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.19 Callback: on_idle()
|
2012-03-06 18:21:17 +02:00
|
|
|
|
|
|
|
|
|
Called when requested by set_idle_timeout(), the timeout has
|
|
|
|
|
expired and emulator is waiting.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.20 Callback: on_timer()
|
2012-03-06 18:21:17 +02:00
|
|
|
|
|
|
|
|
|
Called when requested by set_idle_timeout() and the timeout has
|
|
|
|
|
expired (regardless if emulator is waiting).
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.21 Callback: on_set_rewind(UNSAFEREWIND r)
|
2012-05-19 14:37:49 +03:00
|
|
|
|
|
|
|
|
|
Called when unsafe rewind object has been constructed.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.22 Callback: on_pre_rewind()
|
2012-05-19 14:37:49 +03:00
|
|
|
|
|
|
|
|
|
Called just before unsafe rewind is about to occur.
|
|
|
|
|
|
2013-02-03 17:41:09 +02:00
|
|
|
|
8.13.23 Callback: on_post_rewind()
|
2012-05-19 14:37:49 +03:00
|
|
|
|
|
|
|
|
|
Called just after unsafe rewind has occured.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
9 Movie editor
|
|
|
|
|
|
|
|
|
|
• The editor edits in-memory movie.
|
|
|
|
|
|
|
|
|
|
• Because past can't be edited and readwrite mode doesn't allow
|
|
|
|
|
future, editing only works in read only mode.
|
|
|
|
|
|
|
|
|
|
• Keyboard triggers the normal hotkeys and bindings.
|
|
|
|
|
|
|
|
|
|
9.1 Left button actions
|
|
|
|
|
|
|
|
|
|
• Clicking on cell in future (indicated by lack of redish
|
|
|
|
|
background) toggles it (if it is a button) or prompts for a
|
|
|
|
|
value (if it is an axis)
|
|
|
|
|
|
2013-02-09 12:55:07 +02:00
|
|
|
|
• Dragging vertically toggles sequence of buttons or changes a
|
|
|
|
|
sequence of axis values.
|
2013-02-09 12:39:25 +02:00
|
|
|
|
|
|
|
|
|
9.2 Right button actions
|
|
|
|
|
|
|
|
|
|
The right mouse button pops up a context-sensitive menu:
|
|
|
|
|
|
|
|
|
|
• Toggle <something>: Toggle this button
|
|
|
|
|
|
|
|
|
|
• Change <something>: Change this axis value
|
|
|
|
|
|
|
|
|
|
• Insert frame after: Insert a frame after this frame
|
|
|
|
|
|
|
|
|
|
• Append frame: Append a frame to movie
|
|
|
|
|
|
|
|
|
|
• Append frames: Append specified number of frames to movie
|
|
|
|
|
|
|
|
|
|
• Delete frame: Delete this frame
|
|
|
|
|
|
|
|
|
|
• Delete subframe: Delete this subframe
|
|
|
|
|
|
|
|
|
|
• Truncate movie: Delete this subframe and everything after it.
|
|
|
|
|
|
|
|
|
|
• Scroll to frame: Prompt for a frame and scroll the display to
|
|
|
|
|
that frame.
|
|
|
|
|
|
|
|
|
|
• Scroll to current frame: Scroll the display to current position
|
|
|
|
|
|
|
|
|
|
• Run to frame: Prompts for frame and runs the emulation to that
|
|
|
|
|
frame.
|
|
|
|
|
|
|
|
|
|
• Change number of lines visible: Change the height of the movie
|
|
|
|
|
display (1 to 255).
|
|
|
|
|
|
|
|
|
|
• Lock scroll to playback: While playing back or rewinding
|
|
|
|
|
movies, the display will follow if enabled.
|
|
|
|
|
|
|
|
|
|
10 Memory watch expression syntax
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-21 16:48:46 +02:00
|
|
|
|
Memory watch expressions are in RPN (Reverse Polish Notation). At
|
|
|
|
|
the end of expression, the top entry on stack is taken as the
|
|
|
|
|
final result.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-01-21 16:48:46 +02:00
|
|
|
|
Notations:
|
|
|
|
|
|
|
|
|
|
• Evaluation order is strictly left to right.
|
|
|
|
|
|
|
|
|
|
• a is the entry on top of stack
|
|
|
|
|
|
|
|
|
|
• b is the entry immediately below top of stack
|
|
|
|
|
|
|
|
|
|
• ; separates values to be pushed (no intermediate pop).
|
|
|
|
|
|
|
|
|
|
• After end of element, all used stack slots are popped and all
|
|
|
|
|
results are pushed.
|
|
|
|
|
|
|
|
|
|
• When pushing multiple values, the pushes occur in order shown.
|
|
|
|
|
|
|
|
|
|
The following operators are available:
|
|
|
|
|
|
|
|
|
|
• + : a + b
|
|
|
|
|
|
|
|
|
|
• - : a - b
|
|
|
|
|
|
|
|
|
|
• * : a * b
|
|
|
|
|
|
|
|
|
|
• / : a / b
|
|
|
|
|
|
|
|
|
|
• % : a % b
|
|
|
|
|
|
|
|
|
|
• a : atan(a)
|
|
|
|
|
|
|
|
|
|
• b : read_signed_byte(a)
|
|
|
|
|
|
|
|
|
|
• c : cos(a)
|
|
|
|
|
|
|
|
|
|
• d : read_signed_dword(a)
|
|
|
|
|
|
|
|
|
|
• i : quotent(a / b)
|
|
|
|
|
|
|
|
|
|
• p :\pi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• q : read_signed_qword(a)
|
|
|
|
|
|
|
|
|
|
• r : sqrt(a)
|
|
|
|
|
|
|
|
|
|
• s : sin(a)
|
|
|
|
|
|
|
|
|
|
• t : tan(a)
|
|
|
|
|
|
|
|
|
|
• u : a; a
|
|
|
|
|
|
|
|
|
|
• w : read_signed_word(a)
|
|
|
|
|
|
|
|
|
|
• A : atan2(a, b)
|
|
|
|
|
|
|
|
|
|
• B : read_unsigned_byte(a)
|
|
|
|
|
|
|
|
|
|
• C<number>z : Push number <number> to stack.
|
|
|
|
|
|
|
|
|
|
• D : read_unsigned_dword(a)
|
|
|
|
|
|
|
|
|
|
• C0x<number>z : Push number <number> (hexadecimal) to stack.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
• H<digit> : Set hexadecimal mode with specified number of digits
|
|
|
|
|
(use A-G for 10-16 digits).
|
|
|
|
|
|
2012-01-21 16:48:46 +02:00
|
|
|
|
• Q : read_unsigned_qword(a)
|
|
|
|
|
|
|
|
|
|
• R<digit> : round a to <digit> digits.
|
|
|
|
|
|
|
|
|
|
• W : read_unsigned_word(a)
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
10.1 Example:
|
2012-01-21 16:48:46 +02:00
|
|
|
|
|
|
|
|
|
C0x007e0878zWC0x007e002czW-
|
|
|
|
|
|
|
|
|
|
1. Push value 0x7e0878 on top of stack (C0x007e0878z).
|
|
|
|
|
|
|
|
|
|
2. Pop the value on top of stack (0x7e0878), read word value at
|
|
|
|
|
that address and push the result,call it x1 (W).
|
|
|
|
|
|
|
|
|
|
3. Push value 0x7e002c on top of stack (C0x007e002cz).
|
|
|
|
|
|
|
|
|
|
4. Pop the value on top of stack (0x7e002c), read word value at
|
|
|
|
|
that address and push the result,call it x2 (W).
|
|
|
|
|
|
|
|
|
|
5. Pop the two top numbers on stack, x1 and x2, substract x1 from
|
|
|
|
|
x2 and push x2 - x1 (-).
|
|
|
|
|
|
|
|
|
|
6. Since the expression ends, the final memory watch result is
|
|
|
|
|
the top one on stack, which is x2 - x1.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11 Modifier and key names:
|
2012-01-21 16:48:46 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.1 SDL Platform
|
2012-01-21 16:48:46 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.1.1 Modifier names
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Following modifier names are known:
|
|
|
|
|
|
|
|
|
|
• ctrl, lctrl, rctrl: Control keys
|
|
|
|
|
|
|
|
|
|
• alt, lalt, ralt: ALT keys.
|
|
|
|
|
|
|
|
|
|
• shift, lshift, rshift: Shift keys.
|
|
|
|
|
|
|
|
|
|
• meta, lmeta, rmeta: Meta keys.
|
|
|
|
|
|
|
|
|
|
• num, caps: Numlock/Capslock (these are sticky!)
|
|
|
|
|
|
|
|
|
|
• mode: Mode select.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.1.2 Key names
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Following key names are known:
|
|
|
|
|
|
|
|
|
|
• backspace, tab, clear, return, pause, escape, space, exclaim,
|
|
|
|
|
quotedbl, hash, dollar, ampersand, quote, leftparen,
|
|
|
|
|
rightparen, asterisk, plus, comma, minus, period, slash, 0, 1,
|
|
|
|
|
2, 3, 4, 5, 6, 7, 8, 9, colon, semicolon, less, equals,
|
|
|
|
|
greater, question, at, leftbracket, backslash, rightbracket,
|
|
|
|
|
caret, underscore, backquote, a, b, c, d, e, f, g, h, i, j, k,
|
|
|
|
|
l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, delete, world_0,
|
|
|
|
|
world_1, world_2, world_3, world_4, world_5, world_6, world_7,
|
|
|
|
|
world_8, world_9, world_10, world_11, world_12, world_13,
|
|
|
|
|
world_14, world_15, world_16, world_17, world_18, world_19,
|
|
|
|
|
world_20, world_21, world_22, world_23, world_24, world_25,
|
|
|
|
|
world_26, world_27, world_28, world_29, world_30, world_31,
|
|
|
|
|
world_32, world_33, world_34, world_35, world_36, world_37,
|
|
|
|
|
world_38, world_39, world_40, world_41, world_42, world_43,
|
|
|
|
|
world_44, world_45, world_46, world_47, world_48, world_49,
|
|
|
|
|
world_50, world_51, world_52, world_53, world_54, world_55,
|
|
|
|
|
world_56, world_57, world_58, world_59, world_60, world_61,
|
|
|
|
|
world_62, world_63, world_64, world_65, world_66, world_67,
|
|
|
|
|
world_68, world_69, world_70, world_71, world_72, world_73,
|
|
|
|
|
world_74, world_75, world_76, world_77, world_78, world_79,
|
|
|
|
|
world_80, world_81, world_82, world_83, world_84, world_85,
|
|
|
|
|
world_86, world_87, world_88, world_89, world_90, world_91,
|
|
|
|
|
world_92, world_93, world_94, world_95, kp0, kp1, kp2, kp3,
|
|
|
|
|
kp4, kp5, kp6, kp7, kp8, kp9, kp_period, kp_divide,
|
|
|
|
|
kp_multiply, kp_minus, kp_plus, kp_enter, kp_equals, up, down,
|
|
|
|
|
right, left, insert, home, end, pageup, pagedown, f1, f2, f3,
|
|
|
|
|
f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, numlock,
|
|
|
|
|
capslock, scrollock, rshift, lshift, rctrl, lctrl, ralt, lalt,
|
|
|
|
|
rmeta, lmeta, lsuper, rsuper, mode, compose, help, print,
|
|
|
|
|
sysreq, break, menu, power, euro, undo
|
|
|
|
|
|
|
|
|
|
• Names of form 'key<n>' where <n> is 0-255 are interpretted as
|
|
|
|
|
key having hardware-dependent scan code of <n> (useful to bind
|
|
|
|
|
those keys that don't have symbolic names).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.1.3 Joystick pseudo-keys:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• joystick<num>button<button>: Joystick <num> (0-based) button
|
|
|
|
|
<button> (0-based).
|
|
|
|
|
|
|
|
|
|
• joystick<num>hat<hat>n: Joystick <num> (0-based) hat <hat>
|
|
|
|
|
(0-based) up.
|
|
|
|
|
|
|
|
|
|
• joystick<num>hat<hat>w: Joystick <num> (0-based) hat <hat>
|
|
|
|
|
(0-based) left.
|
|
|
|
|
|
|
|
|
|
• joystick<num>hat<hat>s: Joystick <num> (0-based) hat <hat>
|
|
|
|
|
(0-based) down.
|
|
|
|
|
|
|
|
|
|
• joystick<num>hat<hat>e: Joystick <num> (0-based) hat <hat>
|
|
|
|
|
(0-based) right.
|
|
|
|
|
|
|
|
|
|
• joystick<num>axis<axis>-: Joystick <num> (0-based) axis <axis>
|
|
|
|
|
negative position (axis modes axis and axis_inverse).
|
|
|
|
|
|
|
|
|
|
• joystick<num>axis<axis>+: Joystick <num> (0-based) axis <axis>
|
|
|
|
|
positive position (axis modes axis and axis_inverse).
|
|
|
|
|
|
|
|
|
|
• joystick<num>axis<axis>: Joystick <num> (0-based) axis <axis>
|
|
|
|
|
pressure (axis modes pressure_*).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.1.4 Special buttons:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Escape: Enter/Exit Command mode, cancel modal dialogs.
|
|
|
|
|
|
|
|
|
|
• Return (also KPEnter): Execute command, ok modal dialog.
|
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• Pgup/Up (also KP8/9 if no num lock, CTRL+P; command mode):
|
|
|
|
|
Previous command in command history
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• Pgdn/Down(also KP2/3 if no num lock, CTRL+N; command mode):
|
|
|
|
|
Next command in command history
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• Home (also KP7 if no num lock, CTRL+A; command mode): Beginning
|
|
|
|
|
of command.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• End (also KP1 if no num lock, CTRL+E; command mode): End of
|
|
|
|
|
command.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• Left (also KP4 if no num lock, CTRL+B; command mode): Move
|
|
|
|
|
cursor left.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• Right (also KP6 if no num lock, CTRL+F; command mode): Move
|
|
|
|
|
cursor right.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Delete (also KP. if no num lock; command mode): Delete
|
|
|
|
|
character to right of cursor.
|
|
|
|
|
|
|
|
|
|
• Insert (also KP0 if no num lock; command mode): Toggle between
|
|
|
|
|
insert / overwrite modes.
|
|
|
|
|
|
|
|
|
|
• Backspace (command mode): Delete character to left of cursor.
|
|
|
|
|
|
2012-05-16 23:33:54 +03:00
|
|
|
|
• CTRL+LEFT (also ALT+B; command mode): Previous word.
|
|
|
|
|
|
|
|
|
|
• CTRL+RIGHT (also ALT+F; command mode): Next word.
|
|
|
|
|
|
|
|
|
|
• ALT+D (also CTRL+W; command mode): Delete word.
|
|
|
|
|
|
2011-12-12 16:08:22 +02:00
|
|
|
|
• LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump
|
|
|
|
|
corrupted!).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.2 wxWidgets platform
|
2012-01-11 15:24:36 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.2.1 Modifier names:
|
2012-01-11 15:24:36 +02:00
|
|
|
|
|
|
|
|
|
Following modifier names are known:
|
|
|
|
|
|
|
|
|
|
• alt
|
|
|
|
|
|
|
|
|
|
• ctrl
|
|
|
|
|
|
|
|
|
|
• shift
|
|
|
|
|
|
|
|
|
|
• meta
|
|
|
|
|
|
|
|
|
|
• cmd (Mac OS X only)
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
11.2.2 Key names:
|
2012-01-11 15:24:36 +02:00
|
|
|
|
|
|
|
|
|
Following key names are known:
|
|
|
|
|
|
|
|
|
|
• back, tab, return, escape, space, exclaim, quotedbl, hash,
|
|
|
|
|
dollar, percent, ampersand, quote, leftparen, rightparen,
|
|
|
|
|
asterisk, plus, comma, minus, period, slash, 0, 1, 2, 3, 4, 5,
|
|
|
|
|
6, 7, 8, 9, colon, semicolon, less, equals, greater, question,
|
|
|
|
|
at, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t,
|
|
|
|
|
u, v, w, x, y, z, leftbracket, backslash, rightbracket, caret,
|
|
|
|
|
underscore, backquote, a, b, c, d, e, f, g, h, i, j, k, l, m,
|
|
|
|
|
n, o, p, q, r, s, t, u, v, w, x, y, z, leftcurly, pipe,
|
|
|
|
|
rightcurly, tilde, delete, start, lbutton, rbutton, cancel,
|
|
|
|
|
mbutton, clear, shift, alt, control, menu, pause, capital, end,
|
|
|
|
|
home, lefT, up, right, down, select, print, execute, snapshot,
|
|
|
|
|
insert, help, numpad0, numpad1, numpad2, numpad3, numpad4,
|
|
|
|
|
numpad5, numpad6, numpad7, numpad8, numpad9, multiply, add,
|
|
|
|
|
separator, subtract, decimal, divide, f1, f2, f3, f4, f5, f6,
|
|
|
|
|
f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
|
|
|
|
|
f20, f21, f22, f23, f24, numlock, scroll, pageup, pagedown,
|
|
|
|
|
numpad_space, numpad_tab, numpad_enter, numpad_f1, numpad_f2,
|
|
|
|
|
numpad_f3, numpad_f4, numpad_home, numpad_left, numpad_up,
|
|
|
|
|
numpad_right, numpad_down, numpad_pageup, numpad_pagedown,
|
|
|
|
|
numpad_end, numpad_begin, numpad_insert, numpad_delete,
|
|
|
|
|
numpad_equal, numpad_multiply, numpad_add, numpad_separator,
|
|
|
|
|
numpad_subtract, numpad_decimal, numpad_divide, windows_left,
|
|
|
|
|
windows_right, windows_menu, command, special1, special2,
|
|
|
|
|
special3, special4, special5, special6, special7, special8,
|
|
|
|
|
special9, special10, special11, special12, special13,
|
|
|
|
|
special14, special15, special16, special17, special18,
|
|
|
|
|
special19, special20
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12 Movie file format
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie file is .zip archive in itself, normal ZIP archive tools
|
|
|
|
|
work on it (note: If you recompress it, do not use compression
|
|
|
|
|
methods other than store and deflate and especially do not use
|
|
|
|
|
encryption of any kind).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.1 Detecting clean start/SRAM/Savestate
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• If file has member “savestate” it is savestate, otherwise:
|
|
|
|
|
|
|
|
|
|
• If file has members with names starting “moviesram.” it is
|
|
|
|
|
movie starting from SRAM, otherwise:
|
|
|
|
|
|
|
|
|
|
• It is movie starting from clear state.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.2 Member: gametype
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Type of game ROM and region (as one line). Valid values are:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| Value | System | Region |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| snes_pal | Super NES | PAL |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| sgb_pal | Super Game Boy | PAL |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| snes_ntsc | Super NES | NTSC |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| sgb_ntsc | Super Game Boy | NTSC |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| bsx | BS-X (non-slotted) | NTSC |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| bsxslotted | BS-X (slotted) | NTSC |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
| sufamiturbo | Sufami Turbo | NTSC |
|
|
|
|
|
+--------------+---------------------+--------+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Frame rates are:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+---------+-----------------+
|
|
|
|
|
| Region | Framerate (fps) |
|
|
|
|
|
+---------+-----------------+
|
|
|
|
|
+---------+-----------------+
|
|
|
|
|
| PAL | 322445/6448 |
|
|
|
|
|
+---------+-----------------+
|
|
|
|
|
| NTSC | 10738636/178683 |
|
|
|
|
|
+---------+-----------------+
|
|
|
|
|
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.3 Member: port1
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains type of port #1 (as one line). Valid values are 'none',
|
|
|
|
|
'gamepad', 'multitap' and 'mouse'. If not present, defaults to
|
|
|
|
|
'gamepad'.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.4 Member: port2
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains type of port #2 (as one line). Valid values are 'none',
|
|
|
|
|
'gamepad', 'multitap', 'mouse', 'superscope', 'justifier' and
|
|
|
|
|
'justifiers'. If not present, defaults to 'none'.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.5 Member: gamename
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains name of the game (as one line).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.6 Member: authors
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains authors, one per line. Part before '|' is the full name,
|
|
|
|
|
part after is the nickname.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.7 Member: systemid
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Always “lsnes-rr1” (one line). Used to reject other saves.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.8 Member: controlsversion
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Always “0” (one line). Used to identify what controls are there.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.9 Member: “coreversion”
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains bsnes core version number (as one line).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.10 Member: projectid
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains project ID (as one line). Used to identify if two movies
|
|
|
|
|
are part of the same project.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.11 Member: {rom,slota,slotb}{,xml}.sha256
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains SHA-256 of said ROM or ROM mapping file (as one line).
|
|
|
|
|
Absent if corresponding file is absent.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.12 Member: moviesram.<name>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Raw binary startup SRAM of kind <name>. Only present in
|
|
|
|
|
savestates and movies starting from SRAM.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.13 Member: saveframe
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains frame number (as one line) of frame movie was saved on.
|
|
|
|
|
Only present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.14 Member: lagcounter
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Current value of lag counter (as one line). Only present in
|
|
|
|
|
savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.15 Member: pollcounters
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains poll counters (currently 100 of them), one per line.
|
|
|
|
|
Each line is raw poll count if DRDY is set for it. Otherwise it
|
|
|
|
|
is negative poll count minus one. Only present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.16 Member: hostmemory
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Raw binary dump of host memory. Only present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.17 Member: savestate
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
The raw binary savestate itself. Savestate detection uses this
|
|
|
|
|
file, only present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.18 Member: screenshot
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Screenshot of current frame. Only present in savestates. First 2
|
|
|
|
|
bytes are big-endian width of image, rest are 24-bit RGB image
|
|
|
|
|
data. Height of image is inferred from the width and size of
|
|
|
|
|
data.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.19 Member: sram.<name>
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Raw binary SRAM of kind <name> at time of savestate. Only present
|
|
|
|
|
in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.20 Member: input
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
The actual input track, one line per subframe (blank lines are
|
|
|
|
|
skipped).
|
|
|
|
|
|
|
|
|
|
• If the first byte of each line is '.', ' ', <tab> or '|', then
|
|
|
|
|
the line is part of same frame as previous, otherwise it starts
|
|
|
|
|
a new frame.
|
|
|
|
|
|
|
|
|
|
• First subframe must start a new frame.
|
|
|
|
|
|
|
|
|
|
Length of movie in frames is number of lines in input file that
|
|
|
|
|
start a new frame.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.21 Member: subtitles
|
2012-09-08 20:51:38 +03:00
|
|
|
|
|
|
|
|
|
Subtitle track. Optional.
|
|
|
|
|
|
|
|
|
|
• Each line is in form <firstframe> <numframes> <text>.
|
|
|
|
|
|
|
|
|
|
• Linefeed is encoded as \n, backslash is encoded as \\.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.22 Member: rerecords
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Contains textual base-10 rerecord count (as one line; emulator
|
|
|
|
|
just writes this, it doesn't read it) + 1.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.23 Member: rrdata
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
This member stores set of load IDs. There is one load ID per
|
|
|
|
|
rerecord (plus one corresponding to start of project).
|
|
|
|
|
|
|
|
|
|
• This member constists of concatenation of records
|
|
|
|
|
|
|
|
|
|
• Each record is 2-36 bytes long and can represent 1-16,843,009
|
|
|
|
|
consequtive IDs.
|
|
|
|
|
|
|
|
|
|
• IDs are interpretted as 256-bit big-endian integers with
|
|
|
|
|
warparound.
|
|
|
|
|
|
|
|
|
|
• Initial predicted ID is all zeroes.
|
|
|
|
|
|
|
|
|
|
Format of each record is:
|
|
|
|
|
|
|
|
|
|
• 1 byte: Opcode byte. Bits 0-4 are prefix length (prefixlen),
|
|
|
|
|
bits 5-6 are count length (countlen). Bit 7 is unused.
|
|
|
|
|
|
|
|
|
|
• 32-prefixlen bytes of ID.
|
|
|
|
|
|
|
|
|
|
• countlen bytes of big-endian count (count).
|
|
|
|
|
|
|
|
|
|
Records are processed as follows:
|
|
|
|
|
|
|
|
|
|
• To form the first ID encoded by record, take the first
|
|
|
|
|
prefixlen bytes predicted ID and append the read ID value to
|
|
|
|
|
it. The result is the first ID encoded.
|
|
|
|
|
|
|
|
|
|
• If countlen is 0, record encodes 1 ID.
|
|
|
|
|
|
|
|
|
|
• If countlen is 1, record encodes 2+count IDs.
|
|
|
|
|
|
|
|
|
|
• If countlen is 2, record encodes 258+count IDs.
|
|
|
|
|
|
|
|
|
|
• If countlen is 3, record encodes 65794+count IDs.
|
|
|
|
|
|
|
|
|
|
• The new predicted ID is the next ID after last one encoded by
|
|
|
|
|
the record.
|
|
|
|
|
|
|
|
|
|
The number of rerecords + 1 is equal to the sum of number of IDs
|
|
|
|
|
encoded by all records.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.24 Member: starttime.second
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie starting time, second part. Epoch is Unix epoch. Default is
|
|
|
|
|
1,000,000,000.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.25 Member: starttime.subsecond
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie starting time, subsecond part. Unit is CPU clocks. Default
|
|
|
|
|
is 0.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.26 Member: savetime.second
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie saving time, second part. Default is starttime.second. Only
|
|
|
|
|
present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
12.27 Member: savetime.subsecond
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Movie saving time, subsecond part. Default is
|
|
|
|
|
starttime.subsecond. Only present in savestates.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13 lsvs file format (commentary tracks)
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.1 Clusters
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• Each cluster is 8kB (8192 bytes) in size.
|
|
|
|
|
|
|
|
|
|
• Cluster n starts at offset 8192*n in file.
|
|
|
|
|
|
|
|
|
|
• The following clusters are system special:
|
|
|
|
|
|
|
|
|
|
– Cluster 0 and all clusters with number multiple of 2048
|
|
|
|
|
(cluster tables)
|
|
|
|
|
|
|
|
|
|
– Cluster 1 (superblock)
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.2 Cluster tables
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• The cluster table describing cluster n is stored in cluster n &
|
|
|
|
|
~0x7FF (zero last 11 bits of n).
|
|
|
|
|
|
|
|
|
|
• This cluster table consists of 2048 4-byte big-endian integers.
|
|
|
|
|
|
|
|
|
|
• Each entry describes a cluster in 16MB supercluster, in order.
|
|
|
|
|
|
|
|
|
|
• The valid values for entries are:
|
|
|
|
|
|
|
|
|
|
– 0x00000000: Free cluster
|
|
|
|
|
|
|
|
|
|
– 0x00000001: Last cluster in chain.
|
|
|
|
|
|
|
|
|
|
– 0xFFFFFFFF: System cluster (cluster tables and superblock)
|
|
|
|
|
|
|
|
|
|
– (anything else): Number of next cluster in chain. Must not be
|
|
|
|
|
multiple of 2048.
|
|
|
|
|
|
|
|
|
|
• Due to limitations of the format, there can be at most 2097052
|
|
|
|
|
superclusters, giving maximum file size of 16TB.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.3 Stream table
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• The stream table chain always starts in cluster 2.
|
|
|
|
|
|
|
|
|
|
• Otherwise, it follows normal chaining.
|
|
|
|
|
|
|
|
|
|
• The stream table consists of 16-byte entries:
|
|
|
|
|
|
|
|
|
|
– The first 8 bytes of entry give big-endian beginning position
|
|
|
|
|
of stream in units of 1/48000 s.
|
|
|
|
|
|
|
|
|
|
– The next 4 bytes of entry give big-endian beginning cluster
|
|
|
|
|
for control data. 0 here marks the entry as not present.
|
|
|
|
|
|
|
|
|
|
– The last 4 bytes of entry give big-endian beginning cluster
|
|
|
|
|
for codec data.
|
|
|
|
|
|
|
|
|
|
• Stream table clusters are normal clusters, following normal
|
|
|
|
|
chaining.
|
|
|
|
|
|
|
|
|
|
• The stream begnning position is not guarenteed unique. There
|
|
|
|
|
can be multiple streams with the same starting position in the
|
|
|
|
|
file.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.4 Stream control data
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• The stream control data consists of entries 4 bytes each:
|
|
|
|
|
|
|
|
|
|
– The first 2 bytes of entry gives big-endian length of packet
|
|
|
|
|
|
|
|
|
|
– The next byte of entry gives audio length of packet in units
|
|
|
|
|
of 1/400 s.
|
|
|
|
|
|
|
|
|
|
– The last byte is control byte.
|
|
|
|
|
|
|
|
|
|
∗ 0 means this entry is not present and the control data
|
|
|
|
|
ends.
|
|
|
|
|
|
|
|
|
|
∗ 1 is valid control entry.
|
|
|
|
|
|
|
|
|
|
• The stream control data can also end by running into end of the
|
|
|
|
|
readable chain.
|
|
|
|
|
|
|
|
|
|
– This happens if there happens to be exact multiple of 2048
|
|
|
|
|
packets in stream and number of packets is nonzero.
|
|
|
|
|
|
|
|
|
|
• These clusters follow normal chaining.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.5 Stream codec data
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• Stream codec data consists of raw Opus data packets packed back
|
|
|
|
|
to back with nothing in between.
|
|
|
|
|
|
|
|
|
|
• Warning: Due to internal limitations, this data must reside in
|
|
|
|
|
the first 65536 superclusters (that is, the first 1TB of the
|
|
|
|
|
file).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
13.6 Superblock
|
2012-09-23 19:16:30 +03:00
|
|
|
|
|
|
|
|
|
• The superblock is stored in cluster 1.
|
|
|
|
|
|
|
|
|
|
• The first 11 bytes are “sefs-magic”<NUL>.
|
|
|
|
|
|
|
|
|
|
• The rest are unused.
|
|
|
|
|
|
|
|
|
|
• This cluster 1 is marked as system special.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
14 Known ROM extensions
|
2012-08-25 11:00:01 +03:00
|
|
|
|
|
|
|
|
|
• SNES cartridge ROMs: sfc, smc, swc, fig, ufo, sf2, gd3, gd7,
|
|
|
|
|
dx2, mgd, mgh.
|
|
|
|
|
|
|
|
|
|
• DMG cartridge ROMs: dmg, gb.
|
|
|
|
|
|
|
|
|
|
• GBC cartridge ROMs: cgb, gbc.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
15 Gamepack files
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
|
|
|
|
• The first line must be: “[GAMEPACK FILE]”.
|
|
|
|
|
|
|
|
|
|
• There is one needed line: “type <systype>”. This sets system
|
2012-08-25 11:00:01 +03:00
|
|
|
|
type to <systype>. The following system types are valid:
|
|
|
|
|
|
|
|
|
|
– snes (SNES)
|
|
|
|
|
|
|
|
|
|
– bsx (BS-X non-slotted)
|
|
|
|
|
|
|
|
|
|
– bsxslotted (BS-X slotted)
|
|
|
|
|
|
|
|
|
|
– sufamiturbo (Sufami Turbo)
|
|
|
|
|
|
|
|
|
|
– sgb (Super Game Boy)
|
|
|
|
|
|
|
|
|
|
– dmg (Game Boy)
|
|
|
|
|
|
|
|
|
|
– gbc (Game Boy Color)
|
|
|
|
|
|
|
|
|
|
– gbc_gba (Game Boy Color with GBA initial register values)
|
|
|
|
|
|
|
|
|
|
• Optionally a region can be specified: “region <region>”. The
|
|
|
|
|
following values are valid:
|
|
|
|
|
|
|
|
|
|
– autodetect (Autodetect region: snes and sgb only)
|
|
|
|
|
|
|
|
|
|
– ntsc (NTSC: snes, bsx, bsxslotted, sufamiturbo, sgb)
|
|
|
|
|
|
|
|
|
|
– pal (PAL: snes, sgb)
|
|
|
|
|
|
|
|
|
|
– world (World: dmg, gbc, gbc_gba)
|
|
|
|
|
|
|
|
|
|
• ROM images are loaded as: “rom <type> <file>”. The following
|
|
|
|
|
types are valid:
|
|
|
|
|
|
|
|
|
|
– rom (Cartridge ROM in snes, dmg, gbc, gbc_gba. BIOS in bsx,
|
|
|
|
|
bsxslotted, sufamiturbo)
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
– bsx (Cartridge ROM in bsx, bsxslotted)
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
– slot-a (Cartridge ROM in sufamiturbo)
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
– slot-b (Cartridge ROM in sufamiturbo)
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
• ROM markup can be loaded as: “xml <type> <file>”. The types
|
|
|
|
|
valid are the same as for ROMs.
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
• Patches can be loaded as “patch[<offset>] <type> <file>”. The
|
|
|
|
|
types are the same as for ROMs.
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
– Offset is given in form [+-]<number>. Usually offset is
|
|
|
|
|
either +0 or -512.
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
– Default offset is +0.
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
15.1 Example:
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
|
|
|
|
[GAMEPACK FILE]
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2012-08-24 21:39:58 +03:00
|
|
|
|
type snes
|
|
|
|
|
|
|
|
|
|
rom rom speedygonzales.sfc
|
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
patch-512 rom sonicthehedgehog.ips
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
15.2 Example 2:
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
|
|
|
|
[GAMEPACK FILE]
|
|
|
|
|
|
|
|
|
|
type sgb
|
|
|
|
|
|
|
|
|
|
rom rom supergameboy.sfc
|
|
|
|
|
|
2012-08-25 11:00:01 +03:00
|
|
|
|
rom dmg megamanV.dmg
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
16 Quick'n'dirty encode guide
|
2012-08-24 21:39:58 +03:00
|
|
|
|
|
|
|
|
|
1. Start the emulator and load the ROM and movie file.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
2. Set large AVI option 'set-setting avi-large on'
|
|
|
|
|
|
2012-01-06 18:31:18 +02:00
|
|
|
|
3. Enable dumping 'dump-avi tmpdump'
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
4. Unpause and let it run until you want to end dumping.
|
|
|
|
|
|
|
|
|
|
5. Close the emulator (closing the window is the easiest way). Or
|
|
|
|
|
use 'end-avi'.
|
|
|
|
|
|
|
|
|
|
6. For each tmpdump*.avi file created, on command prompt, do
|
|
|
|
|
'x264 --crf 10 -o tmpdump_<numbers>.mkv tmpdump_<numbers>.avi'.
|
|
|
|
|
|
|
|
|
|
7. Do 'sox tmpdump.sox tmpdump.ogg rate -v 32000'
|
|
|
|
|
|
|
|
|
|
8. Do 'mkvmerge -o tmpdump_video.mkv tmpdump_0000000.mkv +
|
|
|
|
|
tmpdump_0000001.mkv + tmpdump_0000002.mkv' (list every
|
|
|
|
|
tmpdump_<numbers>.mkv, with + in between).
|
|
|
|
|
|
|
|
|
|
9. Do 'mkvmerge -o final.mkv tmpdump_video.mkv tmpdump.ogg'. Now
|
|
|
|
|
final.mkv contains quick'n'dirty encode.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
17 Axis configurations for some gamepad types:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
17.1 XBox360 controller:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be
|
|
|
|
|
set to pressure-+.
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis2 pressure-+
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis5 pressure-+
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
• This is needed for SDL only. EVDEV sets those types correctly.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
17.2 PS3 “sixaxis” controller:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
Axes 8-19 should be disabled.
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis8 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis9 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis10 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis11 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis12 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis13 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis14 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis15 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis16 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis17 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis18 disabled
|
|
|
|
|
|
|
|
|
|
set-axis joystick0axis19 disabled
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
18 Errata:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
18.1 Problems from BSNES core:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• The whole pending save stuff.
|
|
|
|
|
|
|
|
|
|
• Lack of layer hiding.
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
• It is slow (especially accuracy).
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Firmwares can't be loaded from ZIP archives.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
18.2 Other problems:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2011-12-18 18:18:08 +02:00
|
|
|
|
• Modifiers don't work with pseudo-keys (SDL, EVDEV).
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Audio for last dumped frame is not itself dumped.
|
|
|
|
|
|
2012-01-11 15:24:36 +02:00
|
|
|
|
• Audio in UI is pretty bad in quality if game doesn't run at
|
|
|
|
|
full speed.
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• No menus, command based interface (SDL).
|
|
|
|
|
|
|
|
|
|
• Long commands don't scroll.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19 Changelog:
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.1 rr0-beta1
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix -Wall warnings
|
|
|
|
|
|
|
|
|
|
• Fix dumper video corruption with levels 10-18.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.2 rr0-beta2
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Autofire
|
|
|
|
|
|
|
|
|
|
• Lots of code cleanups
|
|
|
|
|
|
|
|
|
|
• Lua interface to settings
|
|
|
|
|
|
|
|
|
|
• Allow specifying AVI borders without Lua
|
|
|
|
|
|
|
|
|
|
• Fix scaling if vscale > 1 and originx > 0 (left border exists)
|
|
|
|
|
|
|
|
|
|
• on_snoop lua callback
|
|
|
|
|
|
|
|
|
|
• Faster movie loading and saving.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.3 rr0-beta3
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Joystick support
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.4 rr0-beta4
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix multi-buttons
|
|
|
|
|
|
|
|
|
|
• Save jukebox functionality.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.5 rr0-beta5
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Try to fix some nasty failing movie load edge cases
|
|
|
|
|
|
|
|
|
|
• Allow specifying scripts to run on command line.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.6 rr0-beta6
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Major source code reorganization.
|
|
|
|
|
|
|
|
|
|
• Backup savestates before overwriting.
|
|
|
|
|
|
|
|
|
|
• Don't crash if loading initial state fails.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.7 rr0-beta7
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix firmware lookup
|
|
|
|
|
|
|
|
|
|
• Fix author name parsing
|
|
|
|
|
|
|
|
|
|
• Fix rerecord counting
|
|
|
|
|
|
|
|
|
|
• (SDL) Print messages to console if SDL is uninitialized
|
|
|
|
|
|
|
|
|
|
• Add movieinfo program
|
|
|
|
|
|
|
|
|
|
• Fix loading movies starting from SRAM.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.8 rr0-beta8
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Add support for unattended dumping
|
|
|
|
|
|
|
|
|
|
• Fix compiling for Win32
|
|
|
|
|
|
|
|
|
|
• Don't lock up if sound can't be initialized
|
|
|
|
|
|
|
|
|
|
• Strip trailing CR from commands
|
|
|
|
|
|
|
|
|
|
• Don't try to do dubious things in global ctors (fix crash on
|
|
|
|
|
startup)
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.9 rr0-beta9
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Small documentation tweaking
|
|
|
|
|
|
|
|
|
|
• Fix make clean
|
|
|
|
|
|
|
|
|
|
• Fix major bug in modifier matching
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.10 rr0-beta10
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Lots of documentation fixes
|
|
|
|
|
|
|
|
|
|
• Use dedicated callbacks for event backcomm., not commands.
|
|
|
|
|
|
|
|
|
|
• Ensure that the watchdog is not hit when executing delayed
|
|
|
|
|
reset.
|
|
|
|
|
|
|
|
|
|
• Remove errant tab from joystick message.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.11 rr0-beta11
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Make autofire operate in absolute time, not linear time
|
|
|
|
|
|
|
|
|
|
• Reinitialize controls when resuming from loadstate
|
|
|
|
|
|
|
|
|
|
• Some more code cleanups
|
|
|
|
|
|
|
|
|
|
• If Lua allocator fails, call OOM_panic()
|
|
|
|
|
|
|
|
|
|
• Byte/word/dword/qword sized host memory write/read functions.
|
|
|
|
|
|
|
|
|
|
• Dump at correct framerate if dumping interlaced NTSC
|
|
|
|
|
(height=448).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.12 rr0-beta12
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Actually include the complete source code
|
|
|
|
|
|
|
|
|
|
• Keep track of RTC
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.13 rr0-beta13
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Document {save,start}time.{,sub}second.
|
|
|
|
|
|
|
|
|
|
• Intercept time() from bsnes core.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.14 rr0-beta14
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Allow disabling time() interception (allow build on Mac OS X)
|
|
|
|
|
|
|
|
|
|
• Use SDLMain on Mac OS X (make SDL not crash)
|
|
|
|
|
|
|
|
|
|
• Disable delayed resets (just plain too buggy for now).
|
|
|
|
|
|
|
|
|
|
• Code cleanups
|
|
|
|
|
|
|
|
|
|
• Use 16-bit for graphics/video instead of 32-bit.
|
|
|
|
|
|
|
|
|
|
• gui.rectangle/gui.pixel
|
|
|
|
|
|
|
|
|
|
• gui.crosshair
|
|
|
|
|
|
|
|
|
|
• New CSCD writer implementation.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.15 rr0-beta15
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix interaction of * and +.
|
|
|
|
|
|
|
|
|
|
• Manual improvements
|
|
|
|
|
|
|
|
|
|
• Use gettimeofday()/usleep(), these seem portable enough.
|
|
|
|
|
|
|
|
|
|
• Move joystick axis manipulation to keymapper code.
|
|
|
|
|
|
|
|
|
|
• Changes to how read-only works.
|
|
|
|
|
|
|
|
|
|
• Refactor controller input code.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.16 rr0-beta16
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix mouseclick scale compensation.
|
|
|
|
|
|
|
|
|
|
• Draw area boundaries correctly in SDL code.
|
|
|
|
|
|
|
|
|
|
• gui.screenshot.
|
|
|
|
|
|
|
|
|
|
• Fix CSCD output (buffer overrun and race condition).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.17 rr0-beta17
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• JMD dumping support.
|
|
|
|
|
|
|
|
|
|
• Allow unattended dumping to JMD.
|
|
|
|
|
|
|
|
|
|
• Move to BSNES v083.
|
|
|
|
|
|
|
|
|
|
• Switch back to 32-bit colors.
|
|
|
|
|
|
|
|
|
|
• Add Lua function gui.color.
|
|
|
|
|
|
|
|
|
|
• Use some new C++11 features in GCC 4.6.
|
|
|
|
|
|
|
|
|
|
• Be prepared for core frequency changes.
|
|
|
|
|
|
|
|
|
|
• Pass colors in one chunk from Lua.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.18 rr0-beta18
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• New lua functions gui.line(), gui.status() and gui.circle(),
|
|
|
|
|
memory.vma_count(), memory.read_vma() and memory.find_vma().
|
|
|
|
|
|
|
|
|
|
• Numerious documentation fixups
|
|
|
|
|
|
|
|
|
|
• RTC time format changed
|
|
|
|
|
|
|
|
|
|
• Reformat flags display
|
|
|
|
|
|
|
|
|
|
• Allow lua package name to be overridden
|
|
|
|
|
|
|
|
|
|
• SDUMP (high-quality dumping).
|
|
|
|
|
|
|
|
|
|
• Split platform support to plugins.
|
|
|
|
|
|
|
|
|
|
• Make all sound plugins support basic sound commands
|
|
|
|
|
|
|
|
|
|
• Support portaudio for sound.
|
|
|
|
|
|
|
|
|
|
• Allow disable Lua/SDL searching.
|
|
|
|
|
|
|
|
|
|
• Upconvert colors when copying lcscreen to screen.
|
|
|
|
|
|
|
|
|
|
• Reorganize source tree.
|
|
|
|
|
|
|
|
|
|
• Evdev joystick support.
|
|
|
|
|
|
|
|
|
|
• Refactor more code into generic window code.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.19 rr0-beta19
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Refactor message handling.
|
|
|
|
|
|
|
|
|
|
• Rework makefile
|
|
|
|
|
|
|
|
|
|
• Documentation fixes
|
|
|
|
|
|
|
|
|
|
• Finish pending saves before load/quit.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets graphics plugin.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.20 rr0-beta20
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Get rid of win32-crap.[ch]pp.
|
|
|
|
|
|
|
|
|
|
• Move files around a lot.
|
|
|
|
|
|
|
|
|
|
• Get rid of need for host C++ compiler.
|
|
|
|
|
|
|
|
|
|
• Bsnes v084 core.
|
|
|
|
|
|
|
|
|
|
• Refactor inter-component communication.
|
|
|
|
|
|
|
|
|
|
• Fix zero luma.
|
|
|
|
|
|
|
|
|
|
• Fix crash on multiline aliases.
|
|
|
|
|
|
|
|
|
|
• Load/Save settings in wxwidgets gui.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.21 rr0-beta21
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Patch problems in bsnes core
|
|
|
|
|
|
|
|
|
|
• SNES is little-endian, not big-endian!
|
|
|
|
|
|
|
|
|
|
• Fix memory corruption in lcscreen::load()
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.22 rr0-beta22
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix interpretting repeat counts in rrdata loading.
|
|
|
|
|
|
|
|
|
|
• New lua callback: on_frame()
|
|
|
|
|
|
|
|
|
|
• Remove calls to runtosave() that aren't supposed to be there
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
• Lua function: movie.read_rtc()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Ignore src/fonts/font.cpp
|
|
|
|
|
|
|
|
|
|
• Fix more bsnes core problems
|
|
|
|
|
|
|
|
|
|
• Control bsnes random seeding
|
|
|
|
|
|
|
|
|
|
• Pause-on-end
|
|
|
|
|
|
|
|
|
|
• Some bsnes core debugging features (state dump and state hash)
|
|
|
|
|
|
|
|
|
|
• Fix titlebar version number (no, the last version wasn't
|
|
|
|
|
'lsnes-0-beta21', it was 'lsnes rr0-beta21').
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.23 rr0-beta23
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Fix memory corruption due to macro/field mixup
|
|
|
|
|
|
|
|
|
|
• search-memory update
|
|
|
|
|
|
|
|
|
|
• Allow direct-mapped framebuffer
|
|
|
|
|
|
|
|
|
|
• SDL: Use SDL_ANYFORMAT if possible
|
|
|
|
|
|
|
|
|
|
• SDMP2SOX: 2s delay modes.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Cleanups
|
|
|
|
|
|
|
|
|
|
• Use sed -E, not sed -r. Fixes building on Mac OS X.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Save jukebox on exit
|
|
|
|
|
|
|
|
|
|
• Fix RTC if using load-movie on savestate.
|
|
|
|
|
|
|
|
|
|
• Fix crash related to full console mode.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.24 rr0-beta24
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Allow bringing application to foreground on Mac OS
|
|
|
|
|
X.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Allow compiling on Mac OS X.
|
|
|
|
|
|
|
|
|
|
• Use movie compare instead of movie hashing (faster save/load).
|
|
|
|
|
|
|
|
|
|
• Lua: _SYSTEM table.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.25 rr0-beta25
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
|
|
• sdmp2sox: Pad soundtrack if using -l or -L.
|
|
|
|
|
|
|
|
|
|
• sdmp2sox: Fix NTSC overscan.
|
|
|
|
|
|
|
|
|
|
• sdmp2sox: Add AR correction mode.
|
|
|
|
|
|
|
|
|
|
• call lua_close() when exiting.
|
|
|
|
|
|
|
|
|
|
• Fix zip_writer bug causing warnings from info-zip and error
|
|
|
|
|
from advzip.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.26 rr0-beta26
|
2011-12-12 19:17:40 +02:00
|
|
|
|
|
|
|
|
|
• Fix IPS patching code (use bsnes core IPS patcher).
|
|
|
|
|
|
|
|
|
|
• Implement BPS patching (using bsnes core IPS patcher).
|
|
|
|
|
|
|
|
|
|
• Add feature to load headered ROMs.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.27 rr0-beta27
|
2011-12-14 00:11:16 +02:00
|
|
|
|
|
|
|
|
|
• Show command names when showing keybindings
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.28 rr0
|
2011-12-18 18:18:08 +02:00
|
|
|
|
|
|
|
|
|
• Fix pause-on-end to be actually controllable
|
|
|
|
|
|
|
|
|
|
• SDL: Poll all events in queue, not just first one (fixes
|
|
|
|
|
slowness in command typing)
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix ROM loading.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.29 rr1-beta0
|
2012-01-06 18:31:18 +02:00
|
|
|
|
|
|
|
|
|
• Lua: Add gui.textH, gui.textV, gui.textHV
|
|
|
|
|
|
|
|
|
|
• Fix text colors on SDL on Mac OS X
|
|
|
|
|
|
|
|
|
|
• Mode 'F' for finished in readonly mode.
|
|
|
|
|
|
|
|
|
|
• Fix some WS errors.
|
|
|
|
|
|
|
|
|
|
• Reliably pause after skip poll
|
|
|
|
|
|
|
|
|
|
• Split UI and core into their own threads
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.30 rr1-beta1
|
2012-01-06 18:31:18 +02:00
|
|
|
|
|
|
|
|
|
• Remove leftover dummy SRAM slot
|
|
|
|
|
|
|
|
|
|
• Fix controller numbers.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.31 rr1-beta2
|
2012-01-09 21:55:55 +02:00
|
|
|
|
|
|
|
|
|
• Fix lsnes-dumpavi after interface change.
|
|
|
|
|
|
|
|
|
|
• Also give BSNES patches for v085.
|
|
|
|
|
|
|
|
|
|
• Pack movie data in memory.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.32 rr1-beta3
|
2012-01-10 01:15:50 +02:00
|
|
|
|
|
|
|
|
|
• Fix framecount/length given when loading movies.
|
|
|
|
|
|
|
|
|
|
• Controller command memory leak fixes.
|
|
|
|
|
|
|
|
|
|
• Don't leak palette if freeing screen object.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.33 rr1-beta4
|
2012-01-11 15:05:01 +02:00
|
|
|
|
|
|
|
|
|
• Detect revisions.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Allow controlling dumper from the menu.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.34 rr1-beta5
|
2012-01-11 16:41:23 +02:00
|
|
|
|
|
|
|
|
|
• Rewrite parts of manual
|
|
|
|
|
|
|
|
|
|
• Lua: Make it work with Lua 5.2.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.35 rr1-beta6
|
2012-01-11 17:31:25 +02:00
|
|
|
|
|
|
|
|
|
• Win32: Fix compile errors.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.36 rr1-beta7
|
2012-01-12 19:24:27 +02:00
|
|
|
|
|
|
|
|
|
• Refactor controller input code.
|
|
|
|
|
|
|
|
|
|
• Fix crash when using command line on SDL / Mac OS X.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.37 rr1-beta8
|
2012-01-14 01:06:14 +02:00
|
|
|
|
|
|
|
|
|
• Delete core/coroutine (obsolete)
|
|
|
|
|
|
|
|
|
|
• Lag input display by one frame.
|
|
|
|
|
|
|
|
|
|
• Rewind movie to beginning function.
|
|
|
|
|
|
|
|
|
|
• Fix wrong frame number reported to Lua when repainting after
|
|
|
|
|
loadstate
|
|
|
|
|
|
|
|
|
|
• Support UI editing of jukebox
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Save settings on exit.
|
|
|
|
|
|
|
|
|
|
• Support ${project} for filenames
|
|
|
|
|
|
|
|
|
|
• SDL: Fix command history
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.38 rr1-beta9
|
2012-01-14 01:06:14 +02:00
|
|
|
|
|
|
|
|
|
• Fix some order-of-global-ctor bugs.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.39 rr1-beta10
|
2012-01-14 11:44:27 +02:00
|
|
|
|
|
|
|
|
|
• Fix crashes when quitting on Win32.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.40 rr1-beta11
|
2012-01-15 01:56:37 +02:00
|
|
|
|
|
|
|
|
|
• EVDEV: Queue keypresses from joystick, don't send directly
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Load-Preserve that actually works.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.41 rr1-beta12
|
2012-01-15 20:50:42 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: GUI for memory search.
|
|
|
|
|
|
|
|
|
|
• Warn about using synchronous queue in UI callback.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.42 rr1-beta13
|
2012-01-18 00:59:20 +02:00
|
|
|
|
|
|
|
|
|
• Remember last saved file for each ROM
|
|
|
|
|
|
|
|
|
|
• Support MT dumping via boost.
|
|
|
|
|
|
|
|
|
|
• Lua: input.raw
|
|
|
|
|
|
|
|
|
|
• Lua: input.keyhook
|
|
|
|
|
|
|
|
|
|
• Make mouse be ordinary input instead of special-casing
|
|
|
|
|
|
|
|
|
|
• SDL: Don't screw up commands with NUL codepoints.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.43 rr1-beta14
|
2012-01-19 19:04:15 +02:00
|
|
|
|
|
|
|
|
|
• Merge status panel and main window
|
|
|
|
|
|
|
|
|
|
• True movie slot support (the rest of it)
|
|
|
|
|
|
|
|
|
|
• SDL: Fix compilation error
|
|
|
|
|
|
|
|
|
|
• Elminate cross calls in dump menu code.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.44 rr1-beta15
|
2012-01-20 19:39:16 +02:00
|
|
|
|
|
|
|
|
|
• Cancel pending saves command
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Code refactoring
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix system -> reset
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Read watch expressions in the right thread
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.45 rr1-beta16
|
2012-01-21 15:30:33 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Don't prompt for member when running Lua script (Lua
|
|
|
|
|
doesn't support that).
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: 128 -> 1024 Autohold slots (in case more are
|
|
|
|
|
needed).
|
|
|
|
|
|
2012-04-07 16:03:32 +03:00
|
|
|
|
• Don't append trailing '-' to prefix when saving movie.
|
2012-01-21 15:30:33 +02:00
|
|
|
|
|
|
|
|
|
• Fix ROM/savestate handling (don't let user mismatch ROM and
|
|
|
|
|
savestates).
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.46 rr1
|
2012-01-21 21:05:37 +02:00
|
|
|
|
|
|
|
|
|
• Document memory watch syntax.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.47 rr1-delta1
|
2012-01-23 13:39:26 +02:00
|
|
|
|
|
|
|
|
|
• Fix unattended dumping (lsnes-dumpavi)
|
|
|
|
|
|
|
|
|
|
• Support RAW dumping
|
|
|
|
|
|
|
|
|
|
• Use adv_dumper instead of the old interface in lsnes-dumpavi
|
|
|
|
|
(changes syntax)
|
|
|
|
|
|
|
|
|
|
• Add option to control sample rate preturbation in AVI dumper
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.48 rr1-delta2
|
2012-02-06 22:02:06 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix dumper submodes
|
|
|
|
|
|
|
|
|
|
• Set core controller types before loadstate
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.49 rr1-delta2epsilon1
|
2012-02-13 19:09:28 +02:00
|
|
|
|
|
|
|
|
|
• Fix compiling with bsnes v086.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.50 rr1-delta3
|
2012-02-21 15:39:52 +02:00
|
|
|
|
|
|
|
|
|
• Don't prompt before quitting
|
|
|
|
|
|
|
|
|
|
• Start unpaused, preserve pause/unpause over load.
|
|
|
|
|
|
|
|
|
|
• Try to autodetect if ROM is headered.
|
|
|
|
|
|
2012-03-03 11:27:26 +02:00
|
|
|
|
• Wxwidgets: Only bring up ROM patching screen if specifically
|
|
|
|
|
requested.
|
2012-02-21 15:39:52 +02:00
|
|
|
|
|
2012-03-03 11:27:26 +02:00
|
|
|
|
• Allow configuring some hotkeys.
|
2012-02-21 15:39:52 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.51 rr1-delta4
|
2012-03-04 15:46:02 +02:00
|
|
|
|
|
|
|
|
|
• Lots of code cleanups
|
|
|
|
|
|
|
|
|
|
• Fix JMD compression (JMD dumping was broken)
|
|
|
|
|
|
|
|
|
|
• Don't crash if Lua C function throws an exception.
|
|
|
|
|
|
|
|
|
|
• Support bitmap drawing in Lua.
|
|
|
|
|
|
|
|
|
|
• Fix bsnes v085/v086 patches.
|
|
|
|
|
|
|
|
|
|
• Improve stability on win32.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.52 rr1-delta4epsilon1
|
2012-03-06 08:43:21 +02:00
|
|
|
|
|
|
|
|
|
• Don't corrupt movie if movie length is integer multiple of
|
|
|
|
|
frames per page.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.53 rr1-delta5
|
2012-03-08 15:28:42 +02:00
|
|
|
|
|
|
|
|
|
• New Lua hooks: on_rewind, on_frame_emulated, on_idle, on_timer
|
|
|
|
|
|
|
|
|
|
• New Lua functions: emulator_ready(), utime(),
|
|
|
|
|
set_idle_timeout(), set_timer_timeout(), bit.extract(),
|
2012-03-10 18:20:03 +02:00
|
|
|
|
bit.value(), input.geta(), input.seta() and
|
|
|
|
|
input.controllertype()
|
2012-03-08 15:28:42 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix internal focus lost (hotkeys stop working)
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix broken modifiers
|
|
|
|
|
|
|
|
|
|
• on_paint has parameter now.
|
|
|
|
|
|
|
|
|
|
• Optional initital fill for bitmaps
|
|
|
|
|
|
|
|
|
|
• Fix palette changing.
|
|
|
|
|
|
|
|
|
|
• Optimize rendering a bit.
|
|
|
|
|
|
|
|
|
|
• Bsnes v087 support.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.54 rr1-delta5epsilon1
|
2012-03-10 18:20:03 +02:00
|
|
|
|
|
|
|
|
|
• Movieinfo: Fix display of port #2 type.
|
|
|
|
|
|
|
|
|
|
• Call on_input() after loadstate.
|
2012-03-08 15:28:42 +02:00
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.55 rr1-delta5epsilon2
|
2012-03-13 08:52:10 +02:00
|
|
|
|
|
|
|
|
|
• Fix writing port2 data to movie.
|
|
|
|
|
|
2012-03-26 22:01:12 +03:00
|
|
|
|
• Fix SRAM handling with Bsnes v087.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.56 rr1-delta6
|
2012-04-11 22:45:06 +03:00
|
|
|
|
|
|
|
|
|
• Library loading support
|
|
|
|
|
|
|
|
|
|
• Built-in TSCC encoder
|
|
|
|
|
|
|
|
|
|
• Hi-color (256T colors) dumping.
|
|
|
|
|
|
|
|
|
|
• Dump over TCP/IP(v6)
|
|
|
|
|
|
|
|
|
|
• Hidable status panel
|
|
|
|
|
|
|
|
|
|
• Turbo toggle/hold
|
|
|
|
|
|
|
|
|
|
• Adjustable sound volume
|
|
|
|
|
|
|
|
|
|
• Screen scaling
|
|
|
|
|
|
|
|
|
|
• Allow DnD into filename boxes
|
|
|
|
|
|
|
|
|
|
• Configurable paths
|
|
|
|
|
|
|
|
|
|
• Portaudio: Fix speaker popping at start
|
|
|
|
|
|
|
|
|
|
• Lots of UI changes
|
|
|
|
|
|
|
|
|
|
• Speed adjustment menu
|
|
|
|
|
|
|
|
|
|
• Win32 joystick support
|
|
|
|
|
|
|
|
|
|
• Lua: gui.rainbow and gui.box
|
|
|
|
|
|
|
|
|
|
• Split key lists into classes (the key list was large!)
|
|
|
|
|
|
|
|
|
|
• More save slots support
|
|
|
|
|
|
|
|
|
|
• Wxwidgets (wxJoystick) joystick support
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.57 rr1-delta7
|
2012-04-21 20:29:42 +03:00
|
|
|
|
|
|
|
|
|
• Lots of internal joystick refactoring
|
|
|
|
|
|
|
|
|
|
• Evdev: Add mapping for BTN_TOOL_QUINTTAP
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Settings mode (open settings without ROM)
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Prompt key to use option
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix crash if key goes away underneath
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix mouse position in presence of scaling
|
|
|
|
|
|
|
|
|
|
• AVI dumper: Mode 4 (high-quality resampling to common rate
|
|
|
|
|
using SRC)
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Redesign hotkeys dialog to avoid tree control (tree
|
|
|
|
|
control doesn't seem to work well on WinXP)
|
|
|
|
|
|
|
|
|
|
• Start paused option.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.58 rr1-delta7epsilon1
|
2012-04-25 17:15:07 +03:00
|
|
|
|
|
|
|
|
|
• AVI: ZMBV support
|
|
|
|
|
|
|
|
|
|
• lsnes-dumpavi: Start Lua before starting dumper
|
|
|
|
|
|
|
|
|
|
• AVI: Fix secondary audio in mode 4.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.59 rr1-delta7epsilon2
|
2012-05-07 20:52:23 +03:00
|
|
|
|
|
|
|
|
|
• AVI: Refactor ZMBV a bit.
|
|
|
|
|
|
|
|
|
|
• Fix error reading analog values from movie file
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.60 rr1-delta8
|
2012-05-10 15:46:43 +03:00
|
|
|
|
|
|
|
|
|
• Delayed reset support
|
|
|
|
|
|
|
|
|
|
• Lua: memory.hash_region
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.61 rr1-delta8epsilon1
|
2012-05-16 23:33:54 +03:00
|
|
|
|
|
|
|
|
|
• Rework the build system
|
|
|
|
|
|
|
|
|
|
• Typing input support
|
|
|
|
|
|
|
|
|
|
• Fix building with bsnes v086 and v087.
|
|
|
|
|
|
|
|
|
|
• SDL: Save settings on exit
|
|
|
|
|
|
|
|
|
|
• SDL: Command to enter command line mode with given command.
|
|
|
|
|
|
|
|
|
|
• SDL: More advanced command editing.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.62 rr1-delta9
|
2012-05-22 10:37:12 +03:00
|
|
|
|
|
|
|
|
|
• wxMSW: Fix the “arrow keys and enter don't work” problem
|
|
|
|
|
|
|
|
|
|
• MSU-1 support
|
|
|
|
|
|
|
|
|
|
• Show mode changes due to rewinding.
|
|
|
|
|
|
|
|
|
|
• Unsafe rewind support
|
|
|
|
|
|
|
|
|
|
• Fix directory transversal.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.63 rr1-delta10
|
2012-06-07 00:47:52 +03:00
|
|
|
|
|
|
|
|
|
• AVI: Sound mode 5 (48kHz high-quality)
|
|
|
|
|
|
|
|
|
|
• Lua: Reset Lua VM
|
|
|
|
|
|
|
|
|
|
• Map the SNES bus into address space
|
|
|
|
|
|
|
|
|
|
• Fix loading memory watch files with CRLF line endings
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.64 rr1-delta10epsilon1
|
2012-07-06 18:52:48 +03:00
|
|
|
|
|
|
|
|
|
• Map bsnes internal state into memory space
|
|
|
|
|
|
|
|
|
|
• Fix the “click on panel wedges the emulator” for real.
|
|
|
|
|
|
|
|
|
|
• DnD movies/saves on the main window.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.65 rr1-delta11
|
2012-07-15 22:33:00 +03:00
|
|
|
|
|
|
|
|
|
• Split core bindings into own module.
|
|
|
|
|
|
|
|
|
|
• Remember invalid settings
|
|
|
|
|
|
|
|
|
|
• Support for modified Gambatte core for GB/GBC emulation.
|
|
|
|
|
|
|
|
|
|
• Reload/swap ROM function
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.66 rr1-delta11epsilon1
|
2012-07-18 17:30:42 +03:00
|
|
|
|
|
|
|
|
|
• Fix step poll function
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.67 rr1-delta12
|
2012-07-20 00:23:40 +03:00
|
|
|
|
|
|
|
|
|
• Non-insane savestate anchoring
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.68 rr1-delta13
|
2012-08-30 01:01:27 +03:00
|
|
|
|
|
|
|
|
|
• More Memory search methods
|
|
|
|
|
|
|
|
|
|
• Preserve movie if loading in RO mode.
|
|
|
|
|
|
|
|
|
|
• Fix a obscure case in timeline check
|
|
|
|
|
|
|
|
|
|
• Revamp the entiere ROM loading code
|
|
|
|
|
|
|
|
|
|
• Support DnD on ROMs
|
|
|
|
|
|
|
|
|
|
• Revamp menu layout
|
|
|
|
|
|
|
|
|
|
• Standalone hotkey config dialog
|
|
|
|
|
|
|
|
|
|
• Show bindings in more user-friendly format
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.69 rr1-delta13epsilon1
|
2012-09-01 11:44:09 +03:00
|
|
|
|
|
|
|
|
|
• Pipedec support
|
|
|
|
|
|
|
|
|
|
• Fix uninitialized variables in bsnes v085
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.70 rr1-delta14
|
2012-09-09 19:18:11 +03:00
|
|
|
|
|
|
|
|
|
• Merge gambatte core into mainline (from its own branch)
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Show expected dump file formats
|
|
|
|
|
|
|
|
|
|
• Memory watch: Data typing
|
|
|
|
|
|
|
|
|
|
• lsnes internal MMIO area.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: New memory watch editor
|
|
|
|
|
|
|
|
|
|
• Hexadecimal memory watches
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Monospaced panel
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Split memory watches in panel
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Disable VMAs in memory search
|
|
|
|
|
|
|
|
|
|
• lsnes-dumpavi: Fix speed bug
|
|
|
|
|
|
|
|
|
|
• Movie subtitle support
|
|
|
|
|
|
|
|
|
|
• Fix rerecord count reporting
|
|
|
|
|
|
|
|
|
|
• Don't trash movie when loading in readonly mode.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.71 rr1-delta14epsilon1
|
2012-09-21 08:20:26 +03:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix crashes on closing settings dialogs on Mac OS X.
|
|
|
|
|
|
|
|
|
|
• Fix build on Mac OS X.
|
|
|
|
|
|
|
|
|
|
• Lua: loopwrapper
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Hidable messages window
|
|
|
|
|
|
|
|
|
|
• Lua: input.joyset
|
|
|
|
|
|
|
|
|
|
• Bsnes: Support inconsistent saves
|
|
|
|
|
|
|
|
|
|
• Bsnes: Allow simulating saving every frame
|
|
|
|
|
|
|
|
|
|
• Fix desync if savestate is loaded in readonly mode in certain
|
|
|
|
|
conditions.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix save dialogs on Mac OS X.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix insane status width on Win32.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix autohold processing to be faster.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Allow loading ROMs and movies from commandline.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.72 rr1-delta15
|
2012-09-26 08:59:58 +03:00
|
|
|
|
|
|
|
|
|
• Be a bit smarter with --load
|
|
|
|
|
|
|
|
|
|
• Rewrote higher-level parts of audio system
|
|
|
|
|
|
|
|
|
|
• Tool to build commentary tracks
|
|
|
|
|
|
|
|
|
|
• Lua: input.joyget
|
|
|
|
|
|
|
|
|
|
• Gambatte: Add support for SVN358
|
|
|
|
|
|
|
|
|
|
• Use builtin font when rendering status panel.
|
|
|
|
|
|
|
|
|
|
• Option to detach memory watch to its own window.
|
|
|
|
|
|
|
|
|
|
• Recent ROMs/Movies menu
|
|
|
|
|
|
|
|
|
|
• Libao support
|
|
|
|
|
|
|
|
|
|
• Useful lag counter for SNES games that autopoll
|
|
|
|
|
|
|
|
|
|
• Fix buffer overflow in gambatte sound output
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.73 rr1-delta15epsilon1
|
2012-09-27 23:07:06 +03:00
|
|
|
|
|
|
|
|
|
• Don't blow up on wxGTK if the window is hidden somehow
|
|
|
|
|
|
|
|
|
|
• Support simultaneous drop of ROM and movie.
|
|
|
|
|
|
|
|
|
|
• Gambatte: Don't save spurious SRAMs.
|
|
|
|
|
|
|
|
|
|
• Make SGB ROMs actually usable.
|
|
|
|
|
|
|
|
|
|
• Fix so that saved movies appear in recent movies.
|
|
|
|
|
|
|
|
|
|
• Don't open multiple commentary editors at once.
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.74 rr1-delta15epsilon2
|
2012-09-29 23:00:23 +03:00
|
|
|
|
|
|
|
|
|
• Lua: memory.readregion/memory.writeregion
|
|
|
|
|
|
|
|
|
|
• Lua: memory.map{,s}{byte,word,dword,qword}
|
|
|
|
|
|
|
|
|
|
• Lua: memory.map_structure
|
|
|
|
|
|
|
|
|
|
• Lua: Fix bus_address for gambatte
|
|
|
|
|
|
|
|
|
|
• Fix features dependent of bsnes debugger
|
|
|
|
|
|
|
|
|
|
• Cleanup bsnes debugger logic
|
|
|
|
|
|
|
|
|
|
• Fix resets in presence of save every frame
|
|
|
|
|
|
2013-02-09 12:39:25 +02:00
|
|
|
|
19.75 rr1-delta15epsilon3
|
2012-10-27 11:17:53 +03:00
|
|
|
|
|
|
|
|
|
• Lua: input.lcid_to_pcid
|
|
|
|
|
|
|
|
|
|
• Fix off-by-one bug with slot hashes
|
|
|
|
|
|
|
|
|
|
• Fix crashes on certain memory watch expressions
|
|
|
|
|
|
|
|
|
|
• Lua: memory.read_expr
|
|
|
|
|
|
|
|
|
|
• Lua: Fix memory.read_expr on nil argument
|
|
|
|
|
|
|
|
|
|
• Fix the code to compile on G++ 4.7
|
|
|
|
|
|
|
|
|
|
• Change button_id to be a function pointer field, not a virtual
|
|
|
|
|
method
|
|
|
|
|
|
|
|
|
|
• Add bsnes patches to fix libsnes to compile on GCC 4.7
|
|
|
|
|
|
|
|
|
|
• Gambatte: Always use legacy lag counting
|
|
|
|
|
|
|
|
|
|
• Memory commands: Memory addresses are up to 16 hex digits, not
|
|
|
|
|
up to 8
|
|
|
|
|
|
|
|
|
|
• Fix analog controllers
|
|
|
|
|
|
|
|
|
|
• Fix autohold menus
|
|
|
|
|
|
|
|
|
|
• Fix button symbols in input display
|
|
|
|
|
|
|
|
|
|
• Compensate for nuts bsnes superscope/justifier handling
|
|
|
|
|
|
|
|
|
|
• Lua: Fix bit.extract boolean handling
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
19.76 rr2-beta0
|
2013-02-03 17:41:09 +02:00
|
|
|
|
|
|
|
|
|
• Split emulation cores more from the rest
|
|
|
|
|
|
|
|
|
|
• Support having multiple emulation cores compiled at once
|
|
|
|
|
|
|
|
|
|
• Support arbitrary number of ports (well, up to 31 anyway).
|
|
|
|
|
|
|
|
|
|
• SNES debugger support
|
|
|
|
|
|
|
|
|
|
• Support 16-button controllers
|
|
|
|
|
|
|
|
|
|
• Remove old SDL front end
|
|
|
|
|
|
|
|
|
|
• Data-driven controller buttons
|
|
|
|
|
|
|
|
|
|
• Generate the port code from defines
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
19.77 rr2-beta1
|
2013-02-03 17:41:09 +02:00
|
|
|
|
|
|
|
|
|
• Update libgambatte to SVN364
|
|
|
|
|
|
|
|
|
|
• Get rid of partial linking (building with MXE works)
|
|
|
|
|
|
|
|
|
|
• Load XML even without gamepack files
|
|
|
|
|
|
|
|
|
|
• Support screen rotate & flip
|
|
|
|
|
|
|
|
|
|
• Fix bug when changing controller key to another subkey of the
|
|
|
|
|
same key
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
19.78 rr1-delta16
|
2013-01-24 18:35:13 +02:00
|
|
|
|
|
|
|
|
|
• Stop at movie end: Don't off-by-one
|
|
|
|
|
|
|
|
|
|
• Fix crash closing lsnes with voice playback active.
|
|
|
|
|
|
|
|
|
|
• Import/Export OggOpus for commentary tracks
|
|
|
|
|
|
|
|
|
|
• 16-button controllers.
|
|
|
|
|
|
|
|
|
|
• Don't show nonexistent controllers in input display
|
|
|
|
|
|
|
|
|
|
• Set voice record/playback volume from UI
|
|
|
|
|
|
|
|
|
|
• Patches for gambatte SVN364.
|
|
|
|
|
|
|
|
|
|
• Load markup (if exists) even without gamepack file.
|
|
|
|
|
|
|
|
|
|
• Screen rotation & flipping
|
|
|
|
|
|
|
|
|
|
• Lua: Some new bit functions
|
|
|
|
|
|
|
|
|
|
• Auto-refresh voice streams on change.
|
|
|
|
|
|
|
|
|
|
• Auto-refresh subtitles on change & new subtitle editor.
|
|
|
|
|
|
|
|
|
|
• Fix music volume adjustment.
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
19.79 rr2-beta2
|
2013-02-03 17:41:09 +02:00
|
|
|
|
|
|
|
|
|
• Use system threads instead of platform threads
|
|
|
|
|
|
|
|
|
|
• Cleanup build by allowing dummy and real drivers to link
|
|
|
|
|
together.
|
|
|
|
|
|
|
|
|
|
• Split duplex support
|
|
|
|
|
|
2013-02-09 13:02:04 +02:00
|
|
|
|
19.80 rr1-delta16epsilon1
|
2013-02-03 11:53:50 +02:00
|
|
|
|
|
|
|
|
|
• Wxwidgets: Fix memory watch rendering.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: Allow setting voice stream gain.
|
|
|
|
|
|
|
|
|
|
• Wxwidgets: VU meters and volume adjustment.
|
|
|
|
|
|
|
|
|
|
• Lua: Custom fonts support.
|
|
|
|
|
|
|
|
|
|
• Lua: Fix methods stopping working when resetting Lua.
|
|
|
|
|
|
|
|
|
|
• Fix loading standard-format movies in preserve (readonly) mode.
|
|
|
|
|
|