This repository has been archived by the owner. It is now read-only.
Permalink
Cannot retrieve contributors at this time
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. | |