2011-12-12 16:08:22 +02:00
|
|
|
1 Introduction
|
|
|
|
|
|
|
|
lsnes is SNES rerecording emulator based on bsnes core.
|
|
|
|
|
|
|
|
2 Command line options
|
|
|
|
|
|
|
|
• Syntax: lsnes.exe <rom-options> <misc-options>
|
|
|
|
(<new-session-options>|<filename>)
|
|
|
|
|
|
|
|
• Syntax: lsnes-avidump <dump-options> <misc-options>
|
|
|
|
<rom-options> <filename>
|
|
|
|
|
|
|
|
• Syntax: movieinfo.exe <filename>
|
|
|
|
|
|
|
|
2.1 ROM options
|
|
|
|
|
|
|
|
These options control loading the ROM.
|
|
|
|
|
|
|
|
2.1.1 --rom=<file>
|
|
|
|
|
|
|
|
Load <file> (SFC file format) as main SNES cartridge ROM. This is
|
|
|
|
the game ROM for SNES and cartridge BIOS for other types.
|
|
|
|
Required option.
|
|
|
|
|
|
|
|
2.1.2 --headered-rom=<file>
|
|
|
|
|
|
|
|
Same as --rom, but strips first 512 bytes off the file as copier
|
|
|
|
header. Handy for loading .smc and .fig (also some others) files.
|
|
|
|
|
|
|
|
2.1.3 --rom-xml=<file>
|
|
|
|
|
|
|
|
Set the mapping XML file for main cartridge ROM. If not
|
|
|
|
specified, defaults are used.
|
|
|
|
|
|
|
|
2.1.4 --bsx=<file>
|
|
|
|
|
|
|
|
Load <file> (BS file format) as BS-X non-slotted flash memory.
|
|
|
|
Also sets system type to BS-X non-slotted (not compatible with
|
|
|
|
--bsxslotted=<file>, --dmg=<file>, --slot-a=<file> nor
|
|
|
|
--slot-b=<file>).
|
|
|
|
|
|
|
|
2.1.5 --headered-bsx=<file>
|
|
|
|
|
|
|
|
Same as --bsx but strips first 512 bytes off the file as copier
|
|
|
|
header. Handy for loading .smc and .fig (also some others) files.
|
|
|
|
|
|
|
|
2.1.6 --bsx-xml=<file>
|
|
|
|
|
|
|
|
Set mapping XML file for BS-X non-slotted flash memory. If not
|
|
|
|
specified, defaults are used. Only can be used together with
|
|
|
|
--bsx=<file>.
|
|
|
|
|
|
|
|
2.1.7 --bsxslotted=<file>
|
|
|
|
|
|
|
|
Load <file> (BS file format) as BS-X slotted flash memory. Also
|
|
|
|
sets system type to BS-X slotted (not compatible with
|
|
|
|
--bsx=<file>, --dmg=<file>, --slot-a=<file> nor --slot-b=<file>).
|
|
|
|
|
|
|
|
2.1.8 --headered-bsxslotted=<file>
|
|
|
|
|
|
|
|
Same as --bsxslotted but strips first 512 bytes off the file as
|
|
|
|
copier header. Handy for loading .smc and .fig (also some others)
|
|
|
|
files.
|
|
|
|
|
|
|
|
2.1.9 --bsxslotted-xml=<file>
|
|
|
|
|
|
|
|
Set mapping XML file for BS-X slotted flash memory. If not
|
|
|
|
specified, defaults are used. Only can be used together with
|
|
|
|
--bsxslotted=<file>.
|
|
|
|
|
|
|
|
2.1.10 --dmg=<file>
|
|
|
|
|
|
|
|
Load <file> (GB file format) as Game Boy ROM. Also sets system
|
|
|
|
type to SGB (not compatible with --bsx=<file>,
|
|
|
|
--bsxslotted=<file>, --slot-a=<file> nor --slot-b=<file>).
|
|
|
|
|
|
|
|
2.1.11 --headered-dmg=<file>
|
|
|
|
|
|
|
|
Same as --dmg but strips first 512 bytes off the file as copier
|
|
|
|
header. Handy for loading .smc and .fig (also some others) files.
|
|
|
|
|
|
|
|
2.1.12 --dmg-xml=<file>
|
|
|
|
|
|
|
|
Set mapping XML file for Game Boy ROM. If not specified, defaults
|
|
|
|
are used. Only can be used together with --dmg=<file>.
|
|
|
|
|
|
|
|
2.1.13 --slot-a=<file>
|
|
|
|
|
|
|
|
Load <file> (ST file format) as Sufami turbo cartridge A ROM.
|
|
|
|
Also sets system type to Sufami Turbo (not compatible with
|
|
|
|
--bsx=<file>, --bsxslotted=<file> nor --dmg=<file>).
|
|
|
|
|
|
|
|
2.1.14 --headered-slot-a=<file>
|
|
|
|
|
|
|
|
Same as --slot-a but strips first 512 bytes off the file as
|
|
|
|
copier header. Handy for loading .smc and .fig (also some others)
|
|
|
|
files.
|
|
|
|
|
|
|
|
2.1.15 --slot-a-xml=<file>
|
|
|
|
|
|
|
|
Set mapping XML file for Sufami turbo cartridge A ROM. If not
|
|
|
|
specified, defaults are used. Only can be used together with
|
|
|
|
--slot-a=<file>.
|
|
|
|
|
|
|
|
2.1.16 --slot-b=<file>
|
|
|
|
|
|
|
|
Load <file> (ST file format) as Sufami turbo cartridge B ROM.
|
|
|
|
Also sets system type to Sufami Turbo (not compatible with
|
|
|
|
--bsx=<file>, --bsxslotted=<file> nor --dmg=<file>).
|
|
|
|
|
|
|
|
2.1.17 --headered-slot-b=<file>
|
|
|
|
|
|
|
|
Same as --slot-b but strips first 512 bytes off the file as
|
|
|
|
copier header. Handy for loading .smc and .fig (also some others)
|
|
|
|
files.
|
|
|
|
|
|
|
|
2.1.18 --slot-b-xml=<file>
|
|
|
|
|
|
|
|
Set mapping XML file for Sufami turbo cartridge B ROM. If not
|
|
|
|
specified, defaults are used. Only can be used together with
|
|
|
|
--slot-b=<file>.
|
|
|
|
|
|
|
|
2.1.19 --ips-rom=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to main cartridge ROM. Requires
|
|
|
|
--rom=<file>.
|
|
|
|
|
|
|
|
2.1.20 --ips-rom-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to main cartridge ROM mapping XML.
|
|
|
|
Requires --rom-xml=<file>.
|
|
|
|
|
|
|
|
2.1.21 --ips-bsx=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to BS-X non-slotted flash. Requires
|
|
|
|
--bsx=<file>.
|
|
|
|
|
|
|
|
2.1.22 --ips-bsx-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to BS-X non-slotted flash mapping XML.
|
|
|
|
Requires --bsx-xml=<file>.
|
|
|
|
|
|
|
|
2.1.23 --ips-bsxslotted=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to BS-X slotted flash. Requires
|
|
|
|
--bsxslotted=<file>.
|
|
|
|
|
|
|
|
2.1.24 --ips-bsxslotted-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to BS-X slotted flash mapping XML.
|
|
|
|
Requires --bsxslotted-xml=<file>.
|
|
|
|
|
|
|
|
2.1.25 --ips-dmg=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Game Boy ROM. Requires --dmg=<file>.
|
|
|
|
|
|
|
|
2.1.26 --ips-dmg-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Game Boy ROM mapping XML. Requires
|
|
|
|
--dmg-xml=<file>.
|
|
|
|
|
|
|
|
2.1.27 --ips-slot-a=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Sufami turbo cartridge A ROM. Requires
|
|
|
|
--slot-a=<file>.
|
|
|
|
|
|
|
|
2.1.28 --ips-slot-a-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Sufami turbo cartridge A ROM mapping
|
|
|
|
XML. Requires --slot-a-xml=<file>.
|
|
|
|
|
|
|
|
2.1.29 --ips-slot-b=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Sufami turbo cartridge B ROM. Requires
|
|
|
|
--slot-b=<file>.
|
|
|
|
|
|
|
|
2.1.30 --ips-slot-b-xml=<file>
|
|
|
|
|
|
|
|
Apply IPS patch <file> to Sufami turbo cartridge B ROM mapping
|
|
|
|
XML. Requires --slot-b-xml=<file>.
|
|
|
|
|
|
|
|
2.1.31 --ips-offset=<offset>
|
|
|
|
|
|
|
|
Set IPS apply offset to <offset> (can be negative). IPS apply
|
|
|
|
offset is added to all addresses inside IPS file before applying.
|
|
|
|
If the resulting address is negative, write is ignored (with a
|
|
|
|
warning). If resulting address exceeds ROM size, the ROM is
|
|
|
|
extended.
|
|
|
|
|
|
|
|
Using offset of -512 is handy for applying IPS patches meant for
|
|
|
|
SMC/FIG or such files.
|
|
|
|
|
|
|
|
2.1.32 --pal
|
|
|
|
|
|
|
|
Force ROM to be considered PAL-only (warning: Will cause error if
|
|
|
|
used on anything except SNES and SGB).
|
|
|
|
|
|
|
|
2.1.33 --ntsc
|
|
|
|
|
|
|
|
Force ROM to be considered NTSC-only (default for everything
|
|
|
|
except SNES and SGB).
|
|
|
|
|
|
|
|
2.2 New session options (lsnes.exe only)
|
|
|
|
|
|
|
|
If filename is not specified, new session is started. These
|
|
|
|
options control the properties of new session:
|
|
|
|
|
|
|
|
2.2.1 --port1=<type>
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
2.2.2 --port2=<type>
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
2.2.3 --gamename=<name>
|
|
|
|
|
|
|
|
Set the name of game to <name>
|
|
|
|
|
|
|
|
2.2.4 --author=<name>
|
|
|
|
|
|
|
|
Add author with full name of <name> (no nickname).
|
|
|
|
|
|
|
|
2.2.5 --author=|<name>
|
|
|
|
|
|
|
|
Add author with nickname of <name> (no full name).
|
|
|
|
|
|
|
|
2.2.6 --author=<fullname>|<nickname>
|
|
|
|
|
|
|
|
Add author with full name of <fullname> and nickname of
|
|
|
|
<nickname>.
|
|
|
|
|
|
|
|
2.2.7 --rtc-second=<value>
|
|
|
|
|
|
|
|
Set RTC second (0 is 1st January 1970 00:00:00Z).
|
|
|
|
|
|
|
|
2.2.8 --rtc-subsecond=<value>
|
|
|
|
|
|
|
|
Set RTC subsecond. Range is 0-. Unit is CPU cycle.
|
|
|
|
|
|
|
|
2.3 <filename>
|
|
|
|
|
|
|
|
If filename is specified on command line, it is loaded as initial
|
|
|
|
state (instead of constructing one). Mandatory for
|
|
|
|
lsnes-avidump.exe and movieinfo.exe.
|
|
|
|
|
|
|
|
2.4 Misc. options
|
|
|
|
|
|
|
|
2.4.1 --run=<file> (lsnes.exe only)
|
|
|
|
|
|
|
|
After running main RC file, run this file. If multiple are
|
|
|
|
specified, these execute in order specified.
|
|
|
|
|
|
|
|
2.5 dump options (lsnes-avidump.exe only)
|
|
|
|
|
|
|
|
2.5.1 --prefix=<prefix>
|
|
|
|
|
|
|
|
Set dump prefix. Default is “avidump”.
|
|
|
|
|
|
|
|
2.5.2 --level=<level>
|
|
|
|
|
|
|
|
Set compression level (0-18). Default is 7.
|
|
|
|
|
|
|
|
2.5.3 --length=<length>
|
|
|
|
|
|
|
|
Set number of frames to dump. Mandatory.
|
|
|
|
|
|
|
|
2.5.4 --lua=<script>
|
|
|
|
|
|
|
|
Run specified lua script (lsnes-avidump.exe does not have
|
|
|
|
initialization files).
|
|
|
|
|
|
|
|
2.5.5 --jmd
|
|
|
|
|
|
|
|
Use JMD dumping instead of AVI dumping.
|
|
|
|
|
|
|
|
3 Startup file lsnes.rc
|
|
|
|
|
|
|
|
Upon startup, lsnes (lsnes.exe only) executes file lsnes.rc as
|
|
|
|
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.
|
|
|
|
|
|
|
|
4 Game internal commands
|
|
|
|
|
|
|
|
• 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 '-'.
|
|
|
|
|
|
|
|
4.1 Settings:
|
|
|
|
|
|
|
|
Settings control various aspects of emulator behaviour.
|
|
|
|
|
|
|
|
4.1.1 set-setting <setting> <value>
|
|
|
|
|
|
|
|
Sets setting <setting> to value <value> (may be empty).
|
|
|
|
|
|
|
|
4.1.2 unset-setting <setting>
|
|
|
|
|
|
|
|
Try to unset setting <setting> (not all settings can be unset).
|
|
|
|
|
|
|
|
4.1.3 get-setting <setting>
|
|
|
|
|
|
|
|
Read value of setting <setting>
|
|
|
|
|
|
|
|
4.1.4 show-settings
|
|
|
|
|
|
|
|
Print names and values of all settings.
|
|
|
|
|
|
|
|
4.2 Keybindings
|
|
|
|
|
|
|
|
Keybindings bind commands or aliases to keys (or pseudo-keys).
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
• Do not bind edge active (+/-) commands to keys with modifiers,
|
|
|
|
that won't work right!
|
|
|
|
|
|
|
|
• Names of keys and modifiers are platform-dependent.
|
|
|
|
|
|
|
|
• Be careful before binding pseudo-keys (such as joystick axes,
|
|
|
|
buttons or hats) with modifiers. That may or may not work
|
|
|
|
right.
|
|
|
|
|
|
|
|
4.2.1 bind-key [<mod>/<modmask>] <key> <command>
|
|
|
|
|
|
|
|
Bind <command> to key <key> (activating if modifiers in <modmask>
|
|
|
|
(comma-seperated list) are set as <mod> (comma-seperated list).
|
|
|
|
|
|
|
|
The names of keys and modifiers are platform-dependent.
|
|
|
|
|
|
|
|
4.2.2 unbind-key [<mod>/<modmask>] <key>
|
|
|
|
|
|
|
|
Unbind command from <key> (with specified <mod> and <modmask>).
|
|
|
|
|
|
|
|
4.2.3 set-axis <axis> [disabled | axis | axis-inverse |
|
|
|
|
pressure0- | pressure0+ | pressure-0 | pressure-+ | pressure+0
|
|
|
|
| pressure+-] [minus=<val>] [zero=<val>] [plus=<val>]
|
|
|
|
[tolerance=<val>]
|
|
|
|
|
|
|
|
Set axis parameters for axis <axis>.
|
|
|
|
|
|
|
|
• disabled: Disable axis
|
|
|
|
|
|
|
|
• axis: Normal axis
|
|
|
|
|
|
|
|
• axis-inverse: Inverse axis
|
|
|
|
|
|
|
|
• pressure0-: Pressure sensitive. Released at 0, pressed at -.
|
|
|
|
|
|
|
|
• pressure0+: Pressure sensitive. Released at 0, pressed at +.
|
|
|
|
|
|
|
|
• pressure-0: Pressure sensitive. Released at -, pressed at 0.
|
|
|
|
|
|
|
|
• pressure-+: Pressure sensitive. Released at -, pressed at +.
|
|
|
|
|
|
|
|
• pressure+0: Pressure sensitive. Released at +, pressed at 0.
|
|
|
|
|
|
|
|
• pressure+-: Pressure sensitive. Released at +, pressed at -.
|
|
|
|
|
|
|
|
• minus=<val>: Calibration at extreme minus position
|
|
|
|
(-32768-32767)
|
|
|
|
|
|
|
|
• zero=<val>: Calibration at neutral position (-32768-32767)
|
|
|
|
|
|
|
|
• plus=<val>: Calibration at extreme plus position (-32768-32767)
|
|
|
|
|
|
|
|
• tolerance=<value>: Center band tolerance (0<x<1). The smaller
|
|
|
|
the value, the more sensitive the control is.
|
|
|
|
|
|
|
|
4.2.4 show-bindings
|
|
|
|
|
|
|
|
Print all key bindings in effect.
|
|
|
|
|
|
|
|
4.3 Aliases
|
|
|
|
|
|
|
|
Aliases bind command to sequence of commands. After alias has
|
|
|
|
been defined, it replaces the command it shadows.
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
• You can't alias command to itself.
|
|
|
|
|
|
|
|
• Aliases starting with +/- are edge active just like ordinary
|
|
|
|
commands starting with +/-.
|
|
|
|
|
|
|
|
• One command can be aliased to multiple commands.
|
|
|
|
|
|
|
|
4.3.1 alias-command <command> <expansion>
|
|
|
|
|
|
|
|
Append <expansion> to alias <command>. If alias does not already
|
|
|
|
exist, it is created.
|
|
|
|
|
|
|
|
4.3.2 unalias-command <command>
|
|
|
|
|
|
|
|
Clear alias expansion for <command>.
|
|
|
|
|
|
|
|
4.3.3 show-aliases
|
|
|
|
|
|
|
|
Print all aliases and their expansions in effect.
|
|
|
|
|
|
|
|
4.4 run-script <script> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Run <script> as if commands were entered on the command line.
|
|
|
|
|
|
|
|
4.5 AVI Video dumping
|
|
|
|
|
|
|
|
Following commands control AVI video dumping:
|
|
|
|
|
|
|
|
4.5.1 dump-avi <level> <prefix>
|
|
|
|
|
|
|
|
Dump AVI video to prefix <prefix> at level <level> (0-18). Notes:
|
|
|
|
|
|
|
|
• The codec is Camstudio Codec in gzip mode.
|
|
|
|
|
|
|
|
• Encoder and muxer are internal, available on all platforms.
|
|
|
|
|
|
|
|
• Audio enable/disable and framerate has no effect.
|
|
|
|
|
|
|
|
• Levels 10-18 are not compatible with AVISource.
|
|
|
|
|
|
|
|
• Recomended level is 7 if decoded by AVISource.
|
|
|
|
|
|
|
|
• Recomended level is 16 if decoded by ffmpeg, mencoder or
|
|
|
|
FFMpegSource.
|
|
|
|
|
|
|
|
• Dumps of low-res PAL games are 256x239 (with all the
|
|
|
|
consequences odd height carries).
|
|
|
|
|
|
|
|
• The audio dumped to .avi is low-quality version. The
|
|
|
|
high-quality version is dumped to .sox file.
|
|
|
|
|
|
|
|
4.5.2 end-avi
|
|
|
|
|
|
|
|
End current AVI video dump (closing the emulator also closes the
|
|
|
|
dump).
|
|
|
|
|
|
|
|
4.6 JMD video dumping
|
|
|
|
|
|
|
|
Following commands control JMD video dumping:
|
|
|
|
|
|
|
|
4.6.1 dump-jmd <level> <file>
|
|
|
|
|
|
|
|
Dump JMD video to file <file> at level <level> (0-9).
|
|
|
|
|
|
|
|
4.6.2 end-jmd
|
|
|
|
|
|
|
|
End the current JMD dump in progress.
|
|
|
|
|
|
|
|
4.7 Memory manipulation
|
|
|
|
|
|
|
|
<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).
|
|
|
|
|
|
|
|
4.7.1 read-<size> <address>
|
|
|
|
|
|
|
|
Read the value of byte in <address>.
|
|
|
|
|
|
|
|
4.7.2 read-s<size> <address>
|
|
|
|
|
|
|
|
Read the value of signed byte in <address>.
|
|
|
|
|
|
|
|
4.7.3 write-<size> <address> <value>
|
|
|
|
|
|
|
|
Write <value> to byte in address <address>.
|
|
|
|
|
|
|
|
4.7.4 search-memory reset
|
|
|
|
|
|
|
|
Reset the memory search
|
|
|
|
|
|
|
|
4.7.5 search-memory count
|
|
|
|
|
|
|
|
Print number of candidates remaining
|
|
|
|
|
|
|
|
4.7.6 search-memory print
|
|
|
|
|
|
|
|
Print all candidates remaining
|
|
|
|
|
|
|
|
4.7.7 search-memory <usflag><sizeflag><op>
|
|
|
|
|
|
|
|
Searches memory for addresses satisfying criteria.
|
|
|
|
|
|
|
|
<usflag> can be:
|
|
|
|
|
|
|
|
• u: unsigned
|
|
|
|
|
|
|
|
• s: signed
|
|
|
|
|
|
|
|
<sizeflag> can be:
|
|
|
|
|
|
|
|
• b: byte
|
|
|
|
|
|
|
|
• w: word
|
|
|
|
|
|
|
|
• d: dword
|
|
|
|
|
|
|
|
• q: qword
|
|
|
|
|
|
|
|
<op> can be:
|
|
|
|
|
|
|
|
• lt: < previous value.
|
|
|
|
|
|
|
|
• le: <= previous value.
|
|
|
|
|
|
|
|
• eq: = previous value.
|
|
|
|
|
|
|
|
• ne: != previous value.
|
|
|
|
|
|
|
|
• ge: >= previous value.
|
|
|
|
|
|
|
|
• gt: > previous value.
|
|
|
|
|
|
|
|
4.7.8 search-memory <sizeflag> <value>
|
|
|
|
|
|
|
|
Searches for addresses that currently have value <value>.
|
|
|
|
<sizeflag> is as in previous command.
|
|
|
|
|
|
|
|
4.8 Main commands
|
|
|
|
|
|
|
|
These commands are not available in lsnesrc, but are available
|
|
|
|
after ROM has been loaded.
|
|
|
|
|
|
|
|
4.8.1 quit-emulator [/y] (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Quits the emulator (asking for confirmation). If /y is given, no
|
|
|
|
confirmation is asked.
|
|
|
|
|
|
|
|
4.8.2 pause-emulator (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Toggle paused/unpaused
|
|
|
|
|
|
|
|
4.8.3 +advance-frame (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Advance frame. If the button is still held after configurable
|
|
|
|
timeout expires, game unpauses for the duration frame advance is
|
|
|
|
held.
|
|
|
|
|
|
|
|
4.8.4 +advance-poll (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Advance subframe. If the button is still held after configurable
|
|
|
|
timeout expires, game unpauses for the duration frame advance is
|
|
|
|
held.
|
|
|
|
|
|
|
|
4.8.5 advance-skiplag (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Skip to first poll in frame after current.
|
|
|
|
|
|
|
|
4.8.6 reset (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Reset the SNES after this frame.
|
|
|
|
|
|
|
|
4.8.7 load <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Load savestate <filename> in current mode.
|
|
|
|
|
|
|
|
4.8.8 load-state <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Load savestate <filename> in readwrite mode.
|
|
|
|
|
|
|
|
4.8.9 load-readonly <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Load savestate <filename> in readonly mode.
|
|
|
|
|
|
|
|
4.8.10 load-preserve <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Load savestate <filename> in readonly mode, preserving current
|
|
|
|
events.
|
|
|
|
|
|
|
|
4.8.11 load-movie <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Load savestate <filename>, ignoring save part in readonly mode.
|
|
|
|
|
|
|
|
4.8.12 save-state <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Save system state to <filename> as soon as possible.
|
|
|
|
|
|
|
|
4.8.13 save-movie <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Save movie to <filename>.
|
|
|
|
|
|
|
|
4.8.14 set-rwmode (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Set read-write mode.
|
|
|
|
|
|
|
|
4.8.15 set-romode (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Set read-only mode
|
|
|
|
|
|
|
|
4.8.16 toggle-rwmode (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Toggle between read-only and read-write modes.
|
|
|
|
|
|
|
|
4.8.17 set-gamename <name> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Set name of the game to <name>
|
|
|
|
|
|
|
|
4.8.18 get-gamename (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Print the name of the game.
|
|
|
|
|
|
|
|
4.8.19 add-author <author> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Adds new author <author>. If <author> does not contain '|' it is
|
|
|
|
full name. If it contains '|', '|' splits the full name and
|
|
|
|
nickname.
|
|
|
|
|
|
|
|
4.8.20 edit-author <num> <author> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Edit the author in slot <num> (0-based) to be <author> (see
|
|
|
|
add-author for format)
|
|
|
|
|
|
|
|
4.8.21 remove-author <num> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Remove author in slot <num>
|
|
|
|
|
|
|
|
4.8.22 print-authors (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Print authors.
|
|
|
|
|
|
|
|
4.8.23 test-1, test-2, test-3 (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Internal test commands. Don't use.
|
|
|
|
|
|
|
|
4.8.24 take-screenshot <filename> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Save screenshot to <filename>.
|
|
|
|
|
|
|
|
4.8.25 +controller<num><button> (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Press button <button> on controller <num> (1-8). The following
|
|
|
|
button names are known:
|
|
|
|
|
|
|
|
• left
|
|
|
|
|
|
|
|
• right
|
|
|
|
|
|
|
|
• up
|
|
|
|
|
|
|
|
• down
|
|
|
|
|
|
|
|
• A
|
|
|
|
|
|
|
|
• B
|
|
|
|
|
|
|
|
• X
|
|
|
|
|
|
|
|
• Y
|
|
|
|
|
|
|
|
• L
|
|
|
|
|
|
|
|
• R
|
|
|
|
|
|
|
|
• select
|
|
|
|
|
|
|
|
• start
|
|
|
|
|
|
|
|
• trigger
|
|
|
|
|
|
|
|
• cursor
|
|
|
|
|
|
|
|
• pause
|
|
|
|
|
|
|
|
• turbo
|
|
|
|
|
|
|
|
4.8.26 controllerh<num><button>
|
|
|
|
|
|
|
|
Hold/unhold button <button> on controller <num> (1-8). See
|
|
|
|
+controller for button names.
|
|
|
|
|
|
|
|
4.8.27 autofire (<pattern>|-)... (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Set autofire pattern. Each parameter is comma-separated list of
|
|
|
|
button names (in form of 1start, 1A, 2B, etc..) to hold on that
|
|
|
|
frame. After reaching the end of pattern, the pattern restarts
|
|
|
|
from the beginning.
|
|
|
|
|
|
|
|
4.8.28 repaint (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Force a repaint.
|
|
|
|
|
|
|
|
4.9 Save jukebox (implemented for wxwidgets)
|
|
|
|
|
|
|
|
4.9.1 cycle-jukebox-backward (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Cycle save jukebox backwards.
|
|
|
|
|
|
|
|
4.9.2 cycle-jukebox-forward (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Cycle save jukebox forwards
|
|
|
|
|
|
|
|
4.9.3 add-jukebox-save <filename> (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Add <filename> to jukebox saves.
|
|
|
|
|
|
|
|
4.9.4 load-jukebox (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Do load from jukebox (current mode).
|
|
|
|
|
|
|
|
4.9.5 save-jukebox (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Do state save to jukebox.
|
|
|
|
|
|
|
|
4.10 Lua (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Only available if lua support is compiled in.
|
|
|
|
|
|
|
|
4.10.1 <<<<<<< HEADevaluate-lua <luacode>=======eval-lua
|
|
|
|
<luacode> (implemented for wxwidgets)>>>>>>> Wxwidgets Graphics
|
|
|
|
plugin WIP
|
|
|
|
|
|
|
|
Run Lua code <luacode> using built-in Lua interpretter.
|
|
|
|
|
|
|
|
4.10.2 run-lua <script> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Run specified lua file using built-in Lua interpretter.
|
|
|
|
|
|
|
|
4.11 Memory watch
|
|
|
|
|
|
|
|
4.11.1 add-watch <name> <expression>
|
|
|
|
|
|
|
|
Adds new watch (or modifies old one).
|
|
|
|
|
|
|
|
4.11.2 remove-watch <name>
|
|
|
|
|
|
|
|
Remove a watch.
|
|
|
|
|
|
|
|
4.12 Sound (implemented for wxwidgets)
|
|
|
|
|
|
|
|
4.12.1 enable-sound <on/off> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Enable/Disable sound.
|
|
|
|
|
|
|
|
4.12.2 set-sound-device <device> (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Set sound device to <device>
|
|
|
|
|
|
|
|
4.12.3 show-sound-status (implemented for wxwidgets)
|
|
|
|
|
|
|
|
Show status of sound system.
|
|
|
|
|
|
|
|
4.12.4 show-sound-devices (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Show all available devices.
|
|
|
|
|
|
|
|
4.13 SDL Platform commands (implemented for wxwidgets)
|
|
|
|
|
|
|
|
The following are valid on SDL platform.
|
|
|
|
|
|
|
|
4.13.1 identify-key (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Asks to press a key and then identifies that (pseudo-)key.
|
|
|
|
|
|
|
|
4.13.2 toggle-console (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Toggle between windowed/fullscreen console.
|
|
|
|
|
|
|
|
4.13.3 scroll-fullup (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Scroll messages window as far back as it goes.
|
|
|
|
|
|
|
|
4.13.4 scroll-fulldown (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Scroll messages window as far forward as it goes.
|
|
|
|
|
|
|
|
4.13.5 scroll-up (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Scroll messages window back one screenful.
|
|
|
|
|
|
|
|
4.13.6 scroll-down (N/A for wxwidgets)
|
|
|
|
|
|
|
|
Scroll messages window forward one screenful.
|
|
|
|
|
|
|
|
5 Settings
|
|
|
|
|
|
|
|
5.1 Core settings
|
|
|
|
|
|
|
|
5.1.1 firmwarepath
|
|
|
|
|
|
|
|
Set where bsnes looks for firmware files. Default is “.”.
|
|
|
|
|
|
|
|
5.1.2 targetfps
|
|
|
|
|
|
|
|
Set the target fps. Numeric, range is 0.001 to “infinite”.
|
|
|
|
Default is native framerate.
|
|
|
|
|
|
|
|
5.1.3 savecompression
|
|
|
|
|
|
|
|
Set save compression level (integer 0-9). Default is 7 (0 is no
|
|
|
|
compression).
|
|
|
|
|
|
|
|
5.1.4 advance-timeout
|
|
|
|
|
|
|
|
Set the frame advance timeout in milliseconds. Numeric integer,
|
|
|
|
range is 0-999999999. Default is 500.
|
|
|
|
|
|
|
|
5.2 AVI dumper settings
|
|
|
|
|
|
|
|
5.2.1 avi-large
|
|
|
|
|
|
|
|
AVI dumper: Always dump at 512x448 or 512x478 regardless of what
|
|
|
|
the console outputs.
|
|
|
|
|
|
|
|
5.2.2 avi-left-border
|
|
|
|
|
|
|
|
AVI dumper: Set the default left border thickness (unless lua
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
|
|
5.2.3 avi-right-border
|
|
|
|
|
|
|
|
AVI dumper: Set the default right border thickness (unless lua
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
|
|
5.2.4 avi-top-border
|
|
|
|
|
|
|
|
AVI dumper: Set the default top border thickness (unless lua
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
|
|
5.2.5 avi-bottom-border
|
|
|
|
|
|
|
|
AVI dumper: Set the default bottom border thickness (unless lua
|
|
|
|
overrides) for dumps. Range 0-8191. Default is 0.
|
|
|
|
|
|
|
|
5.2.6 avi-maxframes
|
|
|
|
|
|
|
|
AVI dumper: Maximum number of frames per dump segment (0 =>
|
|
|
|
unlimited). Range 0-999999999. Default is 0.
|
|
|
|
|
|
|
|
5.3 SDL platform settings
|
|
|
|
|
|
|
|
5.3.1 autorepeat-first-delay
|
|
|
|
|
|
|
|
Sets the delay for first character in typematic autorepeat.
|
|
|
|
|
|
|
|
5.3.2 autorepeat-subsequent-delay
|
|
|
|
|
|
|
|
Sets the delay for subsequent characters in typematic autorepeat.
|
|
|
|
|
|
|
|
6 Lua functions
|
|
|
|
|
|
|
|
6.1 Core (in main table)
|
|
|
|
|
|
|
|
6.1.1 print
|
|
|
|
|
|
|
|
Print line to message console.
|
|
|
|
|
|
|
|
6.1.2 exec(string command)
|
|
|
|
|
|
|
|
Run command as it was entered on the command line
|
|
|
|
|
|
|
|
6.2 Table bit:
|
|
|
|
|
|
|
|
Bitwise logical functions and related.
|
|
|
|
|
|
|
|
6.2.1 bit.none(number...) / bit.bnot(number...)
|
|
|
|
|
|
|
|
48-bit bitwise NOT / NONE function (set bits that are set in none
|
|
|
|
of the arguments).
|
|
|
|
|
|
|
|
6.2.2 bit.any(number...) / bit.bor(number...)
|
|
|
|
|
|
|
|
48-bit bitwise OR / ANY function (set bits that are set in any of
|
|
|
|
the arguments).
|
|
|
|
|
|
|
|
6.2.3 bit.all(number...) / bit.band(number...)
|
|
|
|
|
|
|
|
48-bit bitwise AND / ALL function (set bits that are set in all
|
|
|
|
of the arguments).
|
|
|
|
|
|
|
|
6.2.4 bit.parity(number...) / bit.bxor(number...)
|
|
|
|
|
|
|
|
48-bit bitwise XOR / PARITY function (set bits that are set in
|
|
|
|
odd number of the arguments).
|
|
|
|
|
|
|
|
6.2.5 bit.lrotate(number base[, number amount[, number bits]])
|
|
|
|
|
|
|
|
Rotate bits-bit (max 48, default 48) number left by amount
|
|
|
|
(default 1) places.
|
|
|
|
|
|
|
|
6.2.6 bit.rrotate(number base[, number amount[, number bits]])
|
|
|
|
|
|
|
|
Rotate bits-bit (max 48, default 48) number right by amount
|
|
|
|
(default 1) places.
|
|
|
|
|
|
|
|
6.2.7 bit.lshift(number base[, number amount[, number bits]])
|
|
|
|
|
|
|
|
Shift bits-bit (max 48, default 48) number left by amount
|
|
|
|
(default 1) places. The new bits are filled with zeroes.
|
|
|
|
|
|
|
|
6.2.8 bit.lrshift(number base[, number amount[, number bits]])
|
|
|
|
|
|
|
|
Shift bits-bit (max 48, default 48) number logically right by
|
|
|
|
amount (default 1) places. The new bits are filled with zeroes.
|
|
|
|
|
|
|
|
6.2.9 bit.arshift(number base[, number amount[, number bits]])
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
6.3 Table gui:
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
6.3.1 gui.resolution()
|
|
|
|
|
|
|
|
Returns 2-tuple (hresolution, vresolution).
|
|
|
|
|
|
|
|
6.3.2 gui.<class>_gap(number gap)
|
|
|
|
|
|
|
|
Set the <class> (left, right, top, bottom) gap to specified value
|
|
|
|
(max gap is 8191).
|
|
|
|
|
|
|
|
6.3.3 gui.text(number x, number y, string text[, number fgc[,
|
|
|
|
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))
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.4 gui.textH(number x, number y, string text[, number fgc[,
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-width.
|
|
|
|
|
|
|
|
6.3.5 gui.textV(number x, number y, string text[, number fgc[,
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-height.
|
|
|
|
|
|
|
|
6.3.6 gui.textHV(number x, number y, string text[, number fgc[,
|
|
|
|
number bgc]])
|
|
|
|
|
|
|
|
Like gui.text, but draw using double-width/double-height.
|
|
|
|
|
|
|
|
6.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))
|
|
|
|
|
|
|
|
• fill: Color of fil (default is -1 (transparent))
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.8 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))
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.9 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))
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.10 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)).
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.11 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)).
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.12 gui.repaint()
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
Request on_repaint() to happen as soon as possible. Can be used
|
|
|
|
anywhere.
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.13 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.
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.14 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.
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.15 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.
|
|
|
|
|
2011-12-25 08:48:54 +02:00
|
|
|
6.3.16 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.
|
|
|
|
|
|
|
|
6.4 table input
|
|
|
|
|
|
|
|
Input handling. Only available in on_input callback.
|
|
|
|
|
|
|
|
6.4.1 input.get(number controller, number index)
|
|
|
|
|
|
|
|
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!
|
|
|
|
|
|
|
|
6.4.2 input.set(number controller, number index, number value)
|
|
|
|
|
|
|
|
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!
|
|
|
|
|
|
|
|
6.4.3 input.reset([number cycles])
|
|
|
|
|
|
|
|
Execute reset. If cycles is greater than zero, do delayed reset.
|
|
|
|
0 (or no value) causes immediate reset.
|
|
|
|
|
|
|
|
• Only available with subframe flag false.
|
|
|
|
|
|
|
|
6.5 Table hostmemory
|
|
|
|
|
|
|
|
Host memory handling (extra memory saved to savestates). Host
|
|
|
|
memory starts empty.
|
|
|
|
|
|
|
|
6.5.1 hostmemory.read(number address)
|
|
|
|
|
|
|
|
Reads hostmemory slot address. Slot numbers out of range return
|
|
|
|
false instead of numeric.
|
|
|
|
|
|
|
|
6.5.2 hostmemory.write(number address, number value)
|
|
|
|
|
|
|
|
Writes hostmemory slot with 0-255. Slot numbers out of range
|
|
|
|
cause extension of host memory slot space.
|
|
|
|
|
|
|
|
6.5.3 hostmemory.readbyte(number address)
|
|
|
|
|
|
|
|
Read unsigned byte (1 element) from given address. Slots out of
|
|
|
|
range return false.
|
|
|
|
|
|
|
|
6.5.4 hostmemory.writebyte(number address, number value)
|
|
|
|
|
|
|
|
Write unsigned byte (1 element) to given slot. Slot numbers out
|
|
|
|
of range cause extension.
|
|
|
|
|
|
|
|
6.5.5 hostmemory.readsbyte(number address)
|
|
|
|
|
|
|
|
Read signed byte (1 element) from given address. Slots out of
|
|
|
|
range return false.
|
|
|
|
|
|
|
|
6.5.6 hostmemory.writesbyte(number address, number value)
|
|
|
|
|
|
|
|
Write signed byte (1 element) to given slot. Slot numbers out of
|
|
|
|
range cause extension.
|
|
|
|
|
|
|
|
6.5.7 hostmemory.readword(number address)
|
|
|
|
|
|
|
|
Read unsigned word (2 elements) from given address. Slots out of
|
|
|
|
range return false.
|
|
|
|
|
|
|
|
6.5.8 hostmemory.writeword(number address, number value)
|
|
|
|
|
|
|
|
Write unsigned word (2 elements) to given slot. Slot numbers out
|
|
|
|
of range cause extension.
|
|
|
|
|
|
|
|
6.5.9 hostmemory.readsword(number address)
|
|
|
|
|
|
|
|
Read signed word (2 elements) from given address. Slots out of
|
|
|
|
range return false.
|
|
|
|
|
|
|
|
6.5.10 hostmemory.writesword(number address, number value)
|
|
|
|
|
|
|
|
Write signed word (2 elements) to given slot. Slot numbers out of
|
|
|
|
range cause extension.
|
|
|
|
|
|
|
|
6.5.11 hostmemory.readdword(number address)
|
|
|
|
|
|
|
|
Read unsigned doubleword (4 elements) from given address. Slots
|
|
|
|
out of range return false.
|
|
|
|
|
|
|
|
6.5.12 hostmemory.writedword(number address, number value)
|
|
|
|
|
|
|
|
Write unsigned doubleword (4 elements) to given slot. Slot
|
|
|
|
numbers out of range cause extension.
|
|
|
|
|
|
|
|
6.5.13 hostmemory.readsdword(number address)
|
|
|
|
|
|
|
|
Read signed doubleword (4 elements) from given address. Slots out
|
|
|
|
of range return false.
|
|
|
|
|
|
|
|
6.5.14 hostmemory.writesdword(number address, number value)
|
|
|
|
|
|
|
|
Write signed doubleword (4 elements) to given slot. Slot numbers
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
|
|
6.5.15 hostmemory.readqword(number address)
|
|
|
|
|
|
|
|
Read unsigned quadword (8 elements) from given address. Slots out
|
|
|
|
of range return false.
|
|
|
|
|
|
|
|
6.5.16 hostmemory.writeqword(number address, number value)
|
|
|
|
|
|
|
|
Write unsigned quadword (4 elements) to given slot. Slot numbers
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
|
|
6.5.17 hostmemory.readsqword(number address)
|
|
|
|
|
|
|
|
Read signed quadword (8 elements) from given address. Slots out
|
|
|
|
of range return false.
|
|
|
|
|
|
|
|
6.5.18 hostmemory.writesqword(number address, number value)
|
|
|
|
|
|
|
|
Write signed quadword (8 elements) to given slot. Slot numbers
|
|
|
|
out of range cause extension.
|
|
|
|
|
|
|
|
6.6 Table movie
|
|
|
|
|
|
|
|
Movie handling
|
|
|
|
|
|
|
|
6.6.1 movie.currentframe()
|
|
|
|
|
|
|
|
Return number of current frame.
|
|
|
|
|
|
|
|
6.6.2 movie.framecount()
|
|
|
|
|
|
|
|
Return number of frames in movie.
|
|
|
|
|
|
|
|
6.6.3 movie.readonly()
|
|
|
|
|
|
|
|
Return true if in readonly mode, false if in readwrite.
|
|
|
|
|
|
|
|
6.6.4 movie.set_readwrite()
|
|
|
|
|
|
|
|
Set readwrite mode (does not cause on_readwrite callback).
|
|
|
|
|
|
|
|
6.6.5 movie.frame_subframes(number frame)
|
|
|
|
|
|
|
|
Count number of subframes in specified frame (frame numbers are
|
|
|
|
1-based) and return that.
|
|
|
|
|
|
|
|
6.6.6 movie.read_subframe(number frame, number subframe)
|
|
|
|
|
|
|
|
Read specifed subframe in specified frame and return data as
|
|
|
|
array (100 elements, numbered 0-99 currently).
|
|
|
|
|
|
|
|
6.7 Table settings
|
|
|
|
|
|
|
|
Routines for settings manipulation
|
|
|
|
|
|
|
|
6.7.1 settings.get(string name)
|
|
|
|
|
|
|
|
Get value of setting. If setting is blank, returns false. If
|
|
|
|
setting value can't be obtained, returns (nil, error message).
|
|
|
|
|
|
|
|
6.7.2 settings.set(string name, string value)
|
|
|
|
|
|
|
|
Set value of setting. If setting can't be set, returns (nil,
|
|
|
|
error message).
|
|
|
|
|
|
|
|
6.7.3 settings.is_set(string name)
|
|
|
|
|
|
|
|
Returns if setting is set. If setting does not exist, returns
|
|
|
|
(nil, error message).
|
|
|
|
|
|
|
|
6.7.4 settings.blank(string name)
|
|
|
|
|
|
|
|
Blanks a setting and returns true. If setting can't be blanked,
|
|
|
|
returns (nil, error message).
|
|
|
|
|
|
|
|
6.8 Table memory
|
|
|
|
|
|
|
|
Contains various functions for managing memory
|
|
|
|
|
|
|
|
6.8.1 memory.vma_count()
|
|
|
|
|
|
|
|
Returns the number of VMAs
|
|
|
|
|
|
|
|
6.8.2 memory.read_vma(number index)
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
• native_endian (boolean): True if the VMA has native endian as
|
|
|
|
opposed to little endian.
|
|
|
|
|
|
|
|
6.8.3 memory.find_vma(number address)
|
|
|
|
|
|
|
|
Finds the VMA containing specified address. Returns table in the
|
|
|
|
same format as read_vma or nil if not found.
|
|
|
|
|
|
|
|
6.8.4 memory.readbyte(number address)
|
|
|
|
|
|
|
|
Reads the specified address as unsigned byte and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.5 memory.readsbyte(number address)
|
|
|
|
|
|
|
|
Reads the specified address as signed byte and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.6 memory.writebyte(number address, number value)
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
complement) to specified address (as a byte).
|
|
|
|
|
|
|
|
6.8.7 memory.readword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as unsigned word and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.8 memory.readsword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as signed word and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.9 memory.writeword(number address, number value)
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
complement) to specified address (as a word).
|
|
|
|
|
|
|
|
6.8.10 memory.readdword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as unsigned doubleword and returns
|
|
|
|
the result.
|
|
|
|
|
|
|
|
6.8.11 memory.readsdword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as signed doubleword and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.12 memory.writedword(number address, number value)
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
complement) to specified address (as a doubleword).
|
|
|
|
|
|
|
|
6.8.13 memory.readqword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as unsigned quadword and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.14 memory.readsqword(number address)
|
|
|
|
|
|
|
|
Reads the specified address as signed quadword and returns the
|
|
|
|
result.
|
|
|
|
|
|
|
|
6.8.15 memory.writeqword(number address, number value)
|
|
|
|
|
|
|
|
Writes the specified value (negative values undergo 2's
|
|
|
|
complement) to specified address (as a quadword).
|
|
|
|
|
|
|
|
6.9 Table _SYSTEM
|
|
|
|
|
|
|
|
Contains copy of global variables from time of Lua
|
|
|
|
initialization. Non-writeable.
|
|
|
|
|
|
|
|
6.10 Callbacks
|
|
|
|
|
|
|
|
Various callbacks to Lua that can occur.
|
|
|
|
|
|
|
|
6.10.1 Callback: on_paint()
|
|
|
|
|
|
|
|
Called when screen is being painted. Any gui.* calls requiring
|
|
|
|
graphic context draw on the screen.
|
|
|
|
|
|
|
|
6.10.2 Callback: on_video()
|
|
|
|
|
|
|
|
Called when video dump frame is being painted. Any gui.* calls
|
|
|
|
requiring graphic context draw on the video.
|
|
|
|
|
|
|
|
6.10.3 Callback: on_frame()
|
|
|
|
|
|
|
|
Called on each starting whole frame.
|
|
|
|
|
|
|
|
6.10.4 Callback: on_startup()
|
|
|
|
|
|
|
|
Called when the emulator is starting (lsnes.rc and --run files
|
|
|
|
has been run).
|
|
|
|
|
|
|
|
6.10.5 Callback: on_pre_load(string name)
|
|
|
|
|
|
|
|
Called just before savestate/movie load occurs (note: loads are
|
|
|
|
always delayed, so this occurs even when load was initiated by
|
|
|
|
lua).
|
|
|
|
|
|
|
|
6.10.6 Callback: on_err_load(string name)
|
|
|
|
|
|
|
|
Called if loadstate goes wrong.
|
|
|
|
|
|
|
|
6.10.7 Callback: on_post_load(string name, boolean was_savestate)
|
|
|
|
|
|
|
|
Called on successful loadstate. was_savestate gives if this was a
|
|
|
|
savestate or a movie.
|
|
|
|
|
|
|
|
6.10.8 Callback: on_pre_save(string name, boolean is_savestate)
|
|
|
|
|
|
|
|
Called just before savestate save occurs (note: movie saves are
|
|
|
|
synchronous and won't trigger these callbacks if called from
|
|
|
|
Lua).
|
|
|
|
|
|
|
|
6.10.9 Callback: on_err_save(string name)
|
|
|
|
|
|
|
|
Called if savestate goes wrong.
|
|
|
|
|
|
|
|
6.10.10 Callback: on_post_save(string name, boolean is_savestate)
|
|
|
|
|
|
|
|
Called on successful savaestate. is_savestate gives if this was a
|
|
|
|
savestate or a movie.
|
|
|
|
|
|
|
|
6.10.11 Callback: on_quit()
|
|
|
|
|
|
|
|
Called when emulator is shutting down.
|
|
|
|
|
|
|
|
6.10.12 Callback: on_input(boolean subframe)
|
|
|
|
|
|
|
|
Called when emulator is just sending input to bsnes core.
|
|
|
|
Warning: This is called even in readonly mode, but the results
|
|
|
|
are ignored.
|
|
|
|
|
|
|
|
6.10.13 Callback: on_reset()
|
|
|
|
|
|
|
|
Called when SNES is reset.
|
|
|
|
|
|
|
|
6.10.14 Callback: on_readwrite()
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
6.10.15 Callback: on_snoop(number port, number controller, number
|
|
|
|
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.
|
|
|
|
|
|
|
|
7 Modifier and key names:
|
|
|
|
|
|
|
|
7.1 SDL Platform
|
|
|
|
|
|
|
|
7.1.1 Modifier names
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
7.1.2 Key names
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
In addition, following pseudo-keys are known (note: these do not
|
|
|
|
work in conjunction with modifers):
|
|
|
|
|
|
|
|
• 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_*).
|
|
|
|
|
|
|
|
7.1.3 Special buttons:
|
|
|
|
|
|
|
|
• Escape: Enter/Exit Command mode, cancel modal dialogs.
|
|
|
|
|
|
|
|
• Return (also KPEnter): Execute command, ok modal dialog.
|
|
|
|
|
|
|
|
• Pgup/Up (also KP8/9 if no num lock; command mode): Previous
|
|
|
|
command in command history
|
|
|
|
|
|
|
|
• Pgdn/Down(also KP2/3 if no num lock; command mode): Next
|
|
|
|
command in command history
|
|
|
|
|
|
|
|
• Home (also KP7 if no num lock; command mode): Beginning of
|
|
|
|
command.
|
|
|
|
|
|
|
|
• End (also KP1 if no num lock; command mode): End of command.
|
|
|
|
|
|
|
|
• Left (also KP4 if no num lock; command mode): Move cursor left.
|
|
|
|
|
|
|
|
• Right (also KP6 if no num lock; command mode): Move cursor
|
|
|
|
right.
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
• LCTRL+LALT+ESCAPE: Ungraceful shutdown (leaves dump
|
|
|
|
corrupted!).
|
|
|
|
|
|
|
|
7.1.4 Watchdog timer:
|
|
|
|
|
|
|
|
If emulator does not reach internal polling loop in 15 seconds
|
|
|
|
after leaving it or 15 seconds after starting, the emulator
|
|
|
|
instantly bombs out.
|
|
|
|
|
|
|
|
8 Movie file format
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
8.1 Detecting clean start/SRAM/Savestate
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
8.2 Member: gametype
|
|
|
|
|
|
|
|
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 |
|
|
|
|
+---------+-----------------+
|
|
|
|
|
|
|
|
|
|
|
|
8.3 Member: port1
|
|
|
|
|
|
|
|
Contains type of port #1 (as one line). Valid values are 'none',
|
|
|
|
'gamepad', 'multitap' and 'mouse'. If not present, defaults to
|
|
|
|
'gamepad'.
|
|
|
|
|
|
|
|
8.4 Member: port2
|
|
|
|
|
|
|
|
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'.
|
|
|
|
|
|
|
|
8.5 Member: gamename
|
|
|
|
|
|
|
|
Contains name of the game (as one line).
|
|
|
|
|
|
|
|
8.6 Member: authors
|
|
|
|
|
|
|
|
Contains authors, one per line. Part before '|' is the full name,
|
|
|
|
part after is the nickname.
|
|
|
|
|
|
|
|
8.7 Member: systemid
|
|
|
|
|
|
|
|
Always “lsnes-rr1” (one line). Used to reject other saves.
|
|
|
|
|
|
|
|
8.8 Member: controlsversion
|
|
|
|
|
|
|
|
Always “0” (one line). Used to identify what controls are there.
|
|
|
|
|
|
|
|
8.9 Member: “coreversion”
|
|
|
|
|
|
|
|
Contains bsnes core version number (as one line).
|
|
|
|
|
|
|
|
8.10 Member: projectid
|
|
|
|
|
|
|
|
Contains project ID (as one line). Used to identify if two movies
|
|
|
|
are part of the same project.
|
|
|
|
|
|
|
|
8.11 Member: {rom,slota,slotb}{,xml}.sha256
|
|
|
|
|
|
|
|
Contains SHA-256 of said ROM or ROM mapping file (as one line).
|
|
|
|
Absent if corresponding file is absent.
|
|
|
|
|
|
|
|
8.12 Member: moviesram.<name>
|
|
|
|
|
|
|
|
Raw binary startup SRAM of kind <name>. Only present in
|
|
|
|
savestates and movies starting from SRAM.
|
|
|
|
|
|
|
|
8.13 Member: saveframe
|
|
|
|
|
|
|
|
Contains frame number (as one line) of frame movie was saved on.
|
|
|
|
Only present in savestates.
|
|
|
|
|
|
|
|
8.14 Member: lagcounter
|
|
|
|
|
|
|
|
Current value of lag counter (as one line). Only present in
|
|
|
|
savestates.
|
|
|
|
|
|
|
|
8.15 Member: pollcounters
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
8.16 Member: hostmemory
|
|
|
|
|
|
|
|
Raw binary dump of host memory. Only present in savestates.
|
|
|
|
|
|
|
|
8.17 Member: savestate
|
|
|
|
|
|
|
|
The raw binary savestate itself. Savestate detection uses this
|
|
|
|
file, only present in savestates.
|
|
|
|
|
|
|
|
8.18 Member: screenshot
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
8.19 Member: sram.<name>
|
|
|
|
|
|
|
|
Raw binary SRAM of kind <name> at time of savestate. Only present
|
|
|
|
in savestates.
|
|
|
|
|
|
|
|
8.20 Member: input
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
8.21 Member: rerecords
|
|
|
|
|
|
|
|
Contains textual base-10 rerecord count (as one line; emulator
|
|
|
|
just writes this, it doesn't read it) + 1.
|
|
|
|
|
|
|
|
8.22 Member: rrdata
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
8.23 Member: starttime.second
|
|
|
|
|
|
|
|
Movie starting time, second part. Epoch is Unix epoch. Default is
|
|
|
|
1,000,000,000.
|
|
|
|
|
|
|
|
8.24 Member: starttime.subsecond
|
|
|
|
|
|
|
|
Movie starting time, subsecond part. Unit is CPU clocks. Default
|
|
|
|
is 0.
|
|
|
|
|
|
|
|
8.25 Member: savetime.second
|
|
|
|
|
|
|
|
Movie saving time, second part. Default is starttime.second. Only
|
|
|
|
present in savestates.
|
|
|
|
|
|
|
|
8.26 Member: savetime.subsecond
|
|
|
|
|
|
|
|
Movie saving time, subsecond part. Default is
|
|
|
|
starttime.subsecond. Only present in savestates.
|
|
|
|
|
|
|
|
9 Compiling:
|
|
|
|
|
|
|
|
9.1 Building BSNES
|
|
|
|
|
|
|
|
make ui=ui-libsnes profile=accuracy
|
|
|
|
|
|
|
|
For Bsnes v084 You need to apply the six patches in
|
|
|
|
bsnes-patches/. These fix the following:
|
|
|
|
|
|
|
|
1. Make libsnes actually compile (it won't compile without!)
|
|
|
|
|
|
|
|
2. Bump the version number to be correct (nice to have)
|
|
|
|
|
|
|
|
3. Make RTC emulation time cleanly overridable (needed by games
|
|
|
|
using RTC)
|
|
|
|
|
|
|
|
4. Save/Load controller state on savestate/loadstate (many games
|
|
|
|
screw up without)
|
|
|
|
|
|
|
|
5. Fix unserialization of 64-bit integers (needed)
|
|
|
|
|
|
|
|
6. Allow frontend to control random number seed (just nice to
|
|
|
|
have)
|
|
|
|
|
|
|
|
9.2 Prerequisite libraries:
|
|
|
|
|
|
|
|
• zlib
|
|
|
|
|
|
|
|
• SDL (SDL platform)
|
|
|
|
|
|
|
|
• SDLmain (Windows/Mac OS X only; Note you may have to extract
|
|
|
|
the object out of archive)
|
|
|
|
|
|
|
|
• boost_iostreams
|
|
|
|
|
|
|
|
• boost_filesystem
|
|
|
|
|
|
|
|
• boost conversion (header only)
|
|
|
|
|
|
|
|
9.3 Compile options to make:
|
|
|
|
|
|
|
|
9.3.1 BSNES_PATH=<path>
|
|
|
|
|
|
|
|
Set path to BSNES bsnes directory to <path>.
|
|
|
|
|
|
|
|
9.3.2 THREADS=NO
|
|
|
|
|
|
|
|
Don't use threads on Linux.
|
|
|
|
|
|
|
|
9.3.3 THREADS=YES
|
|
|
|
|
|
|
|
Try to use threads even on non-Linux systems.
|
|
|
|
|
|
|
|
9.3.4 CROSS_PREFIX=<prefix>
|
|
|
|
|
|
|
|
Prepend this to all commands refering to cross-compiling
|
|
|
|
environment with this.
|
|
|
|
|
|
|
|
9.3.5 CC=<compiler>
|
|
|
|
|
|
|
|
Target C++ compiler to use. Defaults to g++
|
|
|
|
|
|
|
|
Note: If crosscompiling, this has to be crosscompiler, and
|
|
|
|
CROSS_PREFIX is prepended.
|
|
|
|
|
|
|
|
9.3.6 BSNES_IS_COMPAT=1
|
|
|
|
|
|
|
|
Assume BSNES uses compatiblity core instead of accuracy core.
|
|
|
|
|
|
|
|
9.3.7 LUA=<package>
|
|
|
|
|
|
|
|
Compile lua support, using package <package>
|
|
|
|
|
|
|
|
9.3.8 GRAPHICS=<plat>
|
|
|
|
|
|
|
|
Set graphics platform. Currently available choices are “SDL” and “
|
|
|
|
WXWIDGETS”.
|
|
|
|
|
|
|
|
9.3.9 SOUND=<plat>
|
|
|
|
|
|
|
|
Set sound platform. Currently available choices are “SDL”
|
|
|
|
(requires SDL graphics), “PORTAUDIO” and “DUMMY”.
|
|
|
|
|
|
|
|
9.3.10 JOYSTICK=<plat>
|
|
|
|
|
|
|
|
Set joystick platform. Currently available choices are “SDL”
|
|
|
|
(requires SDL graphics), “EVDEV” and “DUMMY”.
|
|
|
|
|
|
|
|
10 Quick'n'dirty encode guide
|
|
|
|
|
|
|
|
1. Start the emulator and load the movie file.
|
|
|
|
|
|
|
|
2. Set large AVI option 'set-setting avi-large on'
|
|
|
|
|
|
|
|
3. Enable dumping 'dump-avi 12 tmpdump' (note: Normally 10 and
|
|
|
|
above are “use only if you know what you are doing.”. In this
|
|
|
|
case, these can be safely used because of how x264 internally
|
|
|
|
works).
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
11 Axis configurations for some gamepad types:
|
|
|
|
|
|
|
|
11.1 XBox360 controller:
|
|
|
|
|
|
|
|
Axes 2 and 5 (joystick<n>axis2 and joystick<n>axis5) should be
|
|
|
|
set to pressure-+.
|
|
|
|
|
|
|
|
set-axis joystick0axis2 pressure-+
|
|
|
|
|
|
|
|
set-axis joystick0axis5 pressure-+
|
|
|
|
|
|
|
|
11.2 PS3 “sixaxis” controller:
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
12 Errata:
|
|
|
|
|
|
|
|
12.1 Problems from BSNES core:
|
|
|
|
|
|
|
|
• The whole pending save stuff.
|
|
|
|
|
|
|
|
• Lack of layer hiding.
|
|
|
|
|
|
|
|
• It is slow.
|
|
|
|
|
|
|
|
• Firmwares can't be loaded from ZIP archives.
|
|
|
|
|
|
|
|
12.2 Other problems:
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
• Audio in UI is pretty bad in quality.
|
|
|
|
|
2011-12-18 18:18:08 +02:00
|
|
|
• UI itself is 30fps max (SDL).
|
2011-12-12 16:08:22 +02:00
|
|
|
|
|
|
|
• AVI compression levels 10-18 are not compatible with AVISynth
|
|
|
|
AVISource.
|
|
|
|
|
|
|
|
• No menus, command based interface (SDL).
|
|
|
|
|
|
|
|
• Long commands don't scroll.
|
|
|
|
|
|
|
|
• The SDL screen drawing is slow.
|
|
|
|
|
2011-12-18 18:18:08 +02:00
|
|
|
• Wxwidgets UI slows down with time.
|
|
|
|
|
|
|
|
• Movies use way too much (like at least 10x what would be
|
|
|
|
needed) memory.
|
|
|
|
|
2011-12-12 16:08:22 +02:00
|
|
|
13 Changelog:
|
|
|
|
|
|
|
|
13.1 rr0-beta1
|
|
|
|
|
|
|
|
• Fix -Wall warnings
|
|
|
|
|
|
|
|
• Fix dumper video corruption with levels 10-18.
|
|
|
|
|
|
|
|
13.2 rr0-beta2
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.3 rr0-beta3
|
|
|
|
|
|
|
|
• Joystick support
|
|
|
|
|
|
|
|
13.4 rr0-beta4
|
|
|
|
|
|
|
|
• Fix multi-buttons
|
|
|
|
|
|
|
|
• Save jukebox functionality.
|
|
|
|
|
|
|
|
13.5 rr0-beta5
|
|
|
|
|
|
|
|
• Try to fix some nasty failing movie load edge cases
|
|
|
|
|
|
|
|
• Allow specifying scripts to run on command line.
|
|
|
|
|
|
|
|
13.6 rr0-beta6
|
|
|
|
|
|
|
|
• Major source code reorganization.
|
|
|
|
|
|
|
|
• Backup savestates before overwriting.
|
|
|
|
|
|
|
|
• Don't crash if loading initial state fails.
|
|
|
|
|
|
|
|
13.7 rr0-beta7
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.8 rr0-beta8
|
|
|
|
|
|
|
|
• 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)
|
|
|
|
|
|
|
|
13.9 rr0-beta9
|
|
|
|
|
|
|
|
• Small documentation tweaking
|
|
|
|
|
|
|
|
• Fix make clean
|
|
|
|
|
|
|
|
• Fix major bug in modifier matching
|
|
|
|
|
|
|
|
13.10 rr0-beta10
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.11 rr0-beta11
|
|
|
|
|
|
|
|
• 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).
|
|
|
|
|
|
|
|
13.12 rr0-beta12
|
|
|
|
|
|
|
|
• Actually include the complete source code
|
|
|
|
|
|
|
|
• Keep track of RTC
|
|
|
|
|
|
|
|
13.13 rr0-beta13
|
|
|
|
|
|
|
|
• Document {save,start}time.{,sub}second.
|
|
|
|
|
|
|
|
• Intercept time() from bsnes core.
|
|
|
|
|
|
|
|
13.14 rr0-beta14
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.15 rr0-beta15
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.16 rr0-beta16
|
|
|
|
|
|
|
|
• Fix mouseclick scale compensation.
|
|
|
|
|
|
|
|
• Draw area boundaries correctly in SDL code.
|
|
|
|
|
|
|
|
• gui.screenshot.
|
|
|
|
|
|
|
|
• Fix CSCD output (buffer overrun and race condition).
|
|
|
|
|
|
|
|
13.17 rr0-beta17
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.18 rr0-beta18
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.19 rr0-beta19
|
|
|
|
|
|
|
|
• Refactor message handling.
|
|
|
|
|
|
|
|
• Rework makefile
|
|
|
|
|
|
|
|
• Documentation fixes
|
|
|
|
|
|
|
|
• Finish pending saves before load/quit.
|
|
|
|
|
|
|
|
• Wxwidgets graphics plugin.
|
|
|
|
|
|
|
|
13.20 rr0-beta20
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.21 rr0-beta21
|
|
|
|
|
|
|
|
• Patch problems in bsnes core
|
|
|
|
|
|
|
|
• SNES is little-endian, not big-endian!
|
|
|
|
|
|
|
|
• Fix memory corruption in lcscreen::load()
|
|
|
|
|
|
|
|
13.22 rr0-beta22
|
|
|
|
|
|
|
|
• Fix interpretting repeat counts in rrdata loading.
|
|
|
|
|
|
|
|
• New lua callback: on_frame()
|
|
|
|
|
|
|
|
• Remove calls to runtosave() that aren't supposed to be there
|
|
|
|
|
|
|
|
• Lua function: movie.read_rtc()
|
|
|
|
|
|
|
|
• 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').
|
|
|
|
|
|
|
|
13.23 rr0-beta23
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.24 rr0-beta24
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
|
|
|
13.25 rr0-beta25
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|
2011-12-12 19:17:40 +02:00
|
|
|
13.26 rr0-beta26
|
|
|
|
|
|
|
|
• Fix IPS patching code (use bsnes core IPS patcher).
|
|
|
|
|
|
|
|
• Implement BPS patching (using bsnes core IPS patcher).
|
|
|
|
|
|
|
|
• Add feature to load headered ROMs.
|
|
|
|
|
2011-12-14 00:11:16 +02:00
|
|
|
13.27 rr0-beta27
|
|
|
|
|
|
|
|
• Show command names when showing keybindings
|
|
|
|
|
2011-12-18 18:18:08 +02:00
|
|
|
13.28 rr0
|
|
|
|
|
|
|
|
• 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.
|
|
|
|
|