178 lines
7.7 KiB
Plaintext
178 lines
7.7 KiB
Plaintext
SDL frontend keymap
|
|
===================
|
|
These are the keybindings that are hardwired into the source code
|
|
(those that are not defined in vbam.cfg):
|
|
|
|
CTRL-R: reset
|
|
CTRL-B: rewind
|
|
CTRL-V: unrewind
|
|
CTRL-H: restore to last restored rewind (repeat)
|
|
CTRL-J: restore to last *stored* rewind (go to top of the stack)
|
|
CTRL-P: pause
|
|
CTRL-F: toggle fullscreen
|
|
CTRL-G: rotate between filters
|
|
CTRL-S: toggle sound
|
|
NUMPAD /: decrease volume
|
|
NUMPAD *: increase volume
|
|
CTRL-E: toggle cheats
|
|
ESC: quit
|
|
F11: debugger
|
|
F1..F8: (switchable)
|
|
exact: read state
|
|
SHIFT: write state
|
|
in mode 3:
|
|
F1..F4: nothing
|
|
F5: decrease saveslot number (minimum is 1)
|
|
F6: increase saveslot number (maximum is 8)
|
|
F7: save state to current saveslot
|
|
F8: load state from current saveslot
|
|
F9: load backup from last load operation (the state that was overwritten (in the application) by the then loaded state)
|
|
F10: load backup from last save operation (the state that was overwritten (on disk) by the then current state)
|
|
ALT-1 autofire A toggle (now also configurable on a per-gamepad basis with Joy#_AutoA)
|
|
ALT-2 dtto B (now also configurable on a per-gamepad basis with Joy#_AutoB)
|
|
ALT-3 dtto R
|
|
ALT-4 dtto L
|
|
|
|
CTRL- 1,2,3,4,5,6,7,8: toggle layers
|
|
CTRL-N: pause on next frame
|
|
|
|
KEYPAD: 4682 (default, cfg: Motion_{Left|Right|Up|Down}): motion sensor
|
|
|
|
|
|
|
|
CHEAT CODES
|
|
===========
|
|
Use the --cheat commandline option. Each --cheat XXXX adds one cheat code (in order
|
|
of appearance).
|
|
. Up to 100 cheat codes are supported.
|
|
. Cheat lists are saved in savestates. Cheats in loaded state should override commandline cheats.
|
|
. There are no provisions for toggling individual cheats.
|
|
. CTRL-E toggles the global 'cheats enabled' option.
|
|
. Note that autofire may not work with cheats enabled (at least for some games).
|
|
|
|
Two formats are available:
|
|
PAR: --cheat '########:########'
|
|
CBA: --cheat '######## ####'
|
|
|
|
All # are hexadecimal digits. Only uppercase A-F are accepted.
|
|
|
|
PAR (action replay, also gameshark): only non-encrypted codes work (if it has a master code, it won't work).
|
|
CBA (codebreaker): encrypted codes should work
|
|
|
|
|
|
|
|
IPS PATCHES
|
|
===========
|
|
Use the -i or --ips commandline options. They take one argument - the name of file to be
|
|
loaded as an IPS patch.
|
|
Maximum of 100 IPS patches is supported.
|
|
If you don't specify any IPS patch on the commandline, the VBA-M will look for one
|
|
in the file ROMBASENAME.ips, where ROMBASENAME is the name of the rom file without extension
|
|
(so if your rom file is named LolRom.gba, VBA-M will look for LolRom.ips).
|
|
Any files that don't exist or are not IPS patches will be skipped (with warning).
|
|
Patches will be applied in the order you gave them on the command line.
|
|
Patches are *not* remembered or saved in savestates. You should specify them each
|
|
time you run VBA-M, or you will end up running an unpatched ROM with data from
|
|
a patched ROM.
|
|
|
|
|
|
|
|
SAVESTATES
|
|
==========
|
|
There is a new configuration option saveKeysSwitch. It's value has the following meaning:
|
|
saveKeysSwitch = 0 ... 'classic' SDL interpretation of F1..F10:
|
|
. F1, F2, ... F8: load savestate 1, 2, ... 8
|
|
. SHIFT+F1, SHIFT+F2, ... SHIFT+F8: save savestate 1, 2, ... 8
|
|
saveKeysSwitch = 1 ... same with 'toggled' SHIFT:
|
|
. F1, F2, ... F8: SAVE savestate 1, 2, ... 8
|
|
. SHIFT+F1, SHIFT+F2, ... SHIFT+F8: LOAD savestate 1, 2, ... 8
|
|
saveKeysSwitch = 2 ... slot-selection scheme:
|
|
. F1 .. F4: nothing
|
|
. F5: decrease current slot number
|
|
. F6: increase current slot number
|
|
. F7: save to currently selected slot
|
|
. F8: load from currently selected slot
|
|
This last scheme has the added benefit that it works without problems even if your
|
|
SHIFT key doesn't.
|
|
The selected slot starts at number 1, cannot go below 1 and cannot go over 8.
|
|
|
|
|
|
|
|
SAVESTATE BACKUPS
|
|
=================
|
|
You will sometimes load or save a state when you didn't really want to. You might
|
|
have pressed the wrong button, saved to a wrong slot, saved a state that leads
|
|
to a certain death, etc ...
|
|
This feature provides a limited 'undo' functionality.
|
|
Every time you load a state from disk, the program first saves your current state
|
|
to slot 9. Pressing F9 then loads this 'undo last state load' state.
|
|
In the same vein, when you save a state, the previous state from that slot is
|
|
first moved to slot 10. Pressing F10 then does a 'undo last state save'
|
|
operation.
|
|
Note that you can't write states to slots 9 and 10 directly.
|
|
This works the same way (F9 undoes last load, F10 undoes last save) regardless
|
|
of the value of saveKeysSwitch.
|
|
|
|
|
|
|
|
REWINDS
|
|
=======
|
|
VBA-M has an 'autosave' feature. Try setting rewindTimer in your vbam.cfg.
|
|
Keep in mind that this (like all other numbers in the cfg file) is a hexadecimal number.
|
|
So rewindTimer=3c means saving every 60 seconds, or one minute.
|
|
The maximum value is 258, which is 10 minutes (258 in hex is 2*256 + 5*16 + 8 =
|
|
= 512 + 50+30 + 8 = 600 seconds).
|
|
Last 8 autosaves are retained in memory.
|
|
Autosaves are not considered savestates for 'backup' puproses (see previous section).
|
|
They are never saved to disk and so will be lost when the program exits.
|
|
Also, when you load a real (on-disk) savestate, *nothing* happens to rewinds. Rewinds
|
|
allow you to return to points in *your* chronological past. There is currently no way
|
|
of tracking which states/rewinds are "after" which.
|
|
Controls:
|
|
CTRL-J: go to the rewind that was stored last (the newest one) (and select it)
|
|
CTRL-H: 'home' - repeat last 'go to rewind' operation (go to the currently selected rewind)
|
|
CTRL-B: select previous rewind and go to it
|
|
CTRL-B: select next rewind and go to it
|
|
|
|
Normally, the currently selected rewind stays selected until it becomes invalid (which
|
|
happens when it is the oldes rewind left and a new autosave wants its space).
|
|
However, when the newest rewind is selected, the selection will start advancing
|
|
with the newest rewind.
|
|
|
|
|
|
AUTOFIRE
|
|
========
|
|
There are two autofire modes.
|
|
The first one toggles autofire on a button for all gamepads:
|
|
for example, when you press ALT-1 on your keyboard, then all A buttons on
|
|
all gamepads will be 'autofiring' (alternating quickly between pressed and not pressed)
|
|
until you press ALT-1 again. This might not be what you want.
|
|
Or you can get a gamepad with more buttons and set some to be 'autofire A'.
|
|
In the vbam.cfg file, set Joy#_AutoX=$$$$, where # is the number
|
|
of the emulated gamepad, X is eighter A or B (autofire on A or autofire on B)
|
|
and $$$$ is the code that should trigger this.
|
|
For example, I have
|
|
Joy0_AutoA=1082
|
|
which means:
|
|
. Joy0 = the first emulated pad
|
|
. AutoA = doing this will start toggling the A button on Joy0 quickly
|
|
. 1082 = 'doing this' means:
|
|
. 1000 = the first joystick/gamepad attached to my computer
|
|
. + 0080 = pressing button
|
|
. + 0002 = button with code 2 (on my gamepad, this is the button which has the number 3 engraved into it
|
|
and is in the position where SNES gamepads have the A button and PS controllers have the
|
|
circle button)
|
|
So when I press and hold this button on my gamepad, VBA-M rewards me with autofire on A *on that pad only*.
|
|
|
|
[2008-11-21] new autofire configuration:
|
|
commandline argument: --autofire NNN
|
|
configfile attribute: autoFireMaxCount=NNN
|
|
default value: NNN=1 (does exactly the same thing as without this new feature)
|
|
This controls the "length" of each press (and depress). It is measured in vba-m cycles
|
|
(so --autofire 30 means something like "press once every second" - don't forget that
|
|
the button is not just "virtually pressed" but also "virtually non-pressed" in between).
|
|
This is needed for some games that apparently check whether the button isn't pressed
|
|
faster than a human could do it.
|
|
For example, autofire doesn't work in Mother 3 with --autofire 1 or 2, but it works with 5.
|
|
|