In the VICE emulators, all the settings are stored in entities which are called resources. Every resource has a name and its value can be either an integer or a string. Often integer values are used as boolean values, with the usual convention of using zero for "false" and any other value for "true".
Resource values can be changed via the right-button menu (the settings menu), via command-line options or via the resource file.
The resource file is a human-readable file containing resource values: it is called `.vicerc' and is stored in the user's home directory. At any time, it is possible to dump the current values of the resources into that file or load the values stored into that file as the current values. This can be achieved with the "Save settings" and "Load settings" right menu items. A third menu item, "Restore Default Settings", can be used to set all the values to the factory defaults.
A special resource, SaveResourcesOnExit
, if set to a non zero
value, causes the emulator to ask you if you want to save the current
(changed) settings before exiting, and can be toggled with the "Save
settings on exit" command from the right-button menu.
Notice that not all the resources can be changed from the menus; some of them can only be changed by manually modifying the resource file or by using command-line options.
A resource file is made up of several sections; sections have the purpose of separating the resources of a certain emulator from the ones of the other emulators. A section is started with the name of an emulator in brackets (eg. `[C64]') and ends when another section starts, or the file ends.
Every line in a section has the following format:
RESOURCE=VALUE
where RESOURCE
is the name of a resource, while VALUE
is
the value to assign. Resource names are case-sensitive, and resource
values can be either strings or integers. Strings must start and end
with a double quote ("
), while integers do just have to be
written in decimal notation.
Here is an example of a stripped-down `.vicerc' file:
[VIC20] HTMLBrowserCommand="netscape %s" SaveResourcesOnExit=0 FileSystemDevice8=1 FSDevice8ConvertP00=1 FSDevice8Dir="/home/ettore/cbm/stuff/vic20p00" FSDevice8SaveP00=1 FSDevice8HideCBMFiles=1 [C64] HTMLBrowserCommand="netscape %s" SaveResourcesOnExit=1 FileSystemDevice8=1 FSDevice8ConvertP00=1 FSDevice8Dir="/home/ettore/cbm/stuff/c64p00" FSDevice8SaveP00=1 FSDevice8HideCBMFiles=1
Notice that, when resource values are saved with "Save settings", the emulator only modifies its own section, keeping the other ones unchanged.
Resources can also be changed via command-line options.
Command-line options always override the defaults from .vicerc
,
and their value lasts for the whole session. So, if you specify a
certain command-line option that changes a certain resource from its
default value and then use "Save Settings", the value specified with
the command-line option will be saved.
Command-line options can begin with with the minus sign (`-') or with the plus sign (`+'). Options beginning with the minus sign can require an additional parameter, while the ones beginning with the plus sign never require one.
Moreover, options beginning with the plus sign always have a counterpart
with the same name, but with the minus sign; in that case, the option
beginning with the minus sign is used to enable a certain
feature, while the one beginning with the plus sign is used to
disable the same feature (this is an X11 convention). For
example, -mitshm
enables support of MITSHM, while +mitshm
disables it.
It is possible to control the emulation speed by using the "Maximum
speed" menu item in the right-button menu. The default setting is
100
, which causes the emulation to never run faster than the real
machine. A higher value makes the emulator faster, a lower one makes it
slower. The setting "No limit" means to run as fast as possible,
without limiting speed.
It is also possible to control the amount of screen frames the emulator calculates with the "Refresh rate" setting; the value ranges from "1/1" (update 1/1 of the frames of the real machine, that is 50 frames per second) to "1/10" (update 1 every 10 frames) and can be changed via the "Refresh Rate" submenu. The "Auto" setting means to dynamically adapt the refresh rate to the current speed of the host machine, making sure the maximum speed specified by the via "Maxium speed" is always reached if possible. In any case, the refresh rate will never be worse than 1/10 if this option is specified.
Notice that you cannot specify "Auto" as the refresh rate and "No limit" as the maximum speed at the same time.
Moreover, a special warp speed mode is provided and can be toggled with the "Enable Warp Mode" menu item. If this mode is enabled, it will cause the emulator to disable any speed limit, turn sound emulation off and use a 1/10 refresh rate, so that it will run at the maximum possible speed.
Speed
0
stands for "no limit".
RefreshRate
n
specifies a
refresh rate of 1/n
. A value of 0
enables automatic frame
skipping.
WarpMode
-speed VALUE
0
stands for "no
limit". (Same as setting the Speed
resource.)
-refresh VALUE
n
specifies a refresh rate of
1/n
. A value of 0
enables automatic frame skipping.
(Same as setting the RefreshRate
resource.)
-warp
+warp
WarpMode=1
, WarpMode=1
).
The following right-button menu items control the video output:
XSync()
before updating the emulation window: this might be
necessary on low-end systems to prevent it from stealing so many system
resources that it would become impossible for the user to interact with
it.
The following resources affect the screen emulation:
VideoCache
DoubleSize
DoubleScan
UseXSync
XSync()
is called after updating the
emulation window.
MITSHM
PrivateColormap
DisplayDepth
-vcache
+vcache
VideoCache=1
, VideoCache=0
).
-dsize
+dsize
DoubleSize=1
,
DoubleSize=0
).
-dscan
+dscan
DoubleScan=1
,
DoubleScan=0
).
-xsync
+xsync
XSync()
when updating the emulation
window (UseXSync=1
, UseXSync=0
).
-mitshm
+mitshm
MITSHM=1
,
MITSHM=0
).
-install
+install
PrivateColormap=1
, PrivateColormap=0
).
-displaydepth DEPTH
DisplayDepth
).
It is possible to specify whether the "positional" or "symbolic" keyboard mapping is being used with the "Keyboard mapping type" submenu (see section 2.5 The keyboard emulation for an explanation of positional and symbolic mappings).
The keyboard settings submenu also allows you to:
KeymapIndex
0
identifies
symbolic mapping, 1
positional mapping.
KeymapSymFile
KeymapPosFile
-keymap N
0
identifies symbolic
mapping, 1
positional mapping (same as the KeymapIndex
resource).
-symkeymap NAME
KeymapSymFile
).
-poskeymap NAME
KeymapPosFile
).
The following menu items control sound output:
Sound
SoundSpeedAdjustment
0
: "flexible"
1
: "adjusting"
2
: "exact"
SoundSampleRate
SoundBufferSize
SoundSuspendTime
0
means no pause is done.
SoundOversample
0
(no
oversampling) to 3
(8 times oversampling).
SoundDeviceName
aix
, for the IBM AIX sound driver.
uss
, for the Linux/FreeBSD Universal Sound System driver
(SoundDeviceArg
specifies the audio device, `/dev/dsp' by
default);
sgi
, for the Silicon Graphics audio device (SoundDeviceArg
specifies the audio device, `/dev/audio' by default);
sun
, for the Solaris audio device (unfinished;
SoundDeviceArg
specifies the audio device, `/dev/audio' by
default).
hpux
, for the HP-UX audio device (unfinished;
SoundDeviceArg
specifies the audio device, `/dev/audio' by
default).
sdl
, for the Simple DirectMedia Layer audio driver.
dummy
, fully emulating the SID, but not actually playing samples.
dump
, writing all the write accesses to the registers to a file
(specified by SoundDeviceArg
, default value is
vicesnd.sid
);
speed
, like dummy
but also calculating samples (mainly
used to evaluate the speed of the sample generator);
fs
, writing samples to a file (specified by
SoundDeviceArg
; default is `vicesnd.raw');
SoundDeviceArg
SoundDeviceName
).
-sound
+sound
Sound=1
) and off (Sound=0
).
-soundsync N
N
as the sound speed adjustment method
(SoundSpeedAdjustment
).
-soundrate RATE
SoundSampleRate
).
-soundbufsize SIZE
SoundBufferSize
).
-sounddev NAME
SoundDeviceName
).
-soundarg ARG
SoundDeviceArg
).
These settings are used to control the emulation of the 1541 drive.
sync_factor = 65536 * clk_1541 / clk_machinewhere
clk_1541
and clk_machine
are clock speeds in MHz.
The menu lets you choose between the PAL and NTSC values, and also lets
you specify whatever value you want. Be careful when changing it,
though, because a wrong value can break things and even corrupt disk
images.
The second option ("Trap idle") is usually a bit slower, as at least interrupts are always emulated, but allows the LED state to be always updated correctly and always keeps the 1541 and the computer in sync. On the other hand, if a program installs a non-standard idle loop in the drive, the 1541 CPU has to be emulated even when not necessary and the global emulation speed is then much slower.
True1541
True1541ParallelCable
True1541ExtendImagePolicy
0
(never extend), 1
(ask on extend), 2
(extend
on access).
True1541IdleMethod
0
(none), 1
(skip cycles), 2
(trap idle).
See section 6.7 1541 settings.
True1541SyncFactor
-1
and -2
mean PAL and NTSC,
respectively.
DosName
-1541
+1541
True1541=1
) and off
(True1541=0
), respectively.
-parallel
+parallel
True1541ParallelCable=1
) and off
(True1541ParallelCable=0
), respectively.
-driveidle NUM
NUM
as the 1541 idling method
(True1541IdleMethod
).
-paldrive
True1541SyncFactor=-1
).
-ntscdrive
True1541SyncFactor=-2
).
-drivesync NUM
True1541SyncFactor
).
-dosname NAME
DosName
).
VICE is able to support some special peripherals:
These features depend on some kernal traps that replace the existing routines in the original Commodore operating system with custom-made C routines.
These settings deal with the drive-like peripherals connected to the bus of the emulated machine. Four peripherals, numbered from 8 to 11, are accessible; each of them provides the following settings:
FSDevice8ConvertP00
FSDevice9ConvertP00
FSDevice10ConvertP00
FSDevice11ConvertP00
FSDevice8SaveP00
FSDevice9SaveP00
FSDevice10SaveP00
FSDevice11SaveP00
FSDevice8HideCBMFiles
FSDevice9HideCBMFiles
FSDevice10HideCBMFiles
FSDevice11HideCBMFiles
FSDevice8Dir
FSDevice9Dir
FSDevice10Dir
FSDevice11Dir
-fs8 PATH
-fs9 PATH
-fs10 PATH
-fs11 PATH
FSDevice8Dir
, FSDevice9Dir
,
FSDevice10Dir
and FSDevice11Dir
).
The VICE emulators can emulate printers connected to either the IEC buffer or the user port. Emulation can be achieved by redirecting the printer output to a file or by piping it through an external process. This is defined by so-called printer device file names; a printer device file name can be either a simple path, or a command name prepended by the pipe symbol `|'.
For example, printer device `filename' will cause the output to be
appended to file `filename', while printer device `|lpr' will
cause the lpr
command to be executed and fed with the printer
output.
Up to three printer devices can be specified through the following resources:
print.dump
;
|petlp |lpr
;
|lpr
.
So, basically, by default printer device 1 will simply dump printer
output to `print.dump'; printer device 2 will print it via
petlp
(a not-complete-yet utility that will produce Postscript
output from it) and lpr
; printer device 2 will print it through
lpr
.
PrDevice1
PrDevice2
PrDevice3
Printer4
Printer4Dev
PrUser
PrUserDev
-prdev1 NAME
-prdev2 NAME
-prdev3 NAME
NAME
as printer devices 1, 2 and 3, respectively
(PrDevice1
, PrDevice2
and PrDevice3
).
-printer4
+printer4
Printer4=1
,
Printer4=0
).
-pr4dev DEV
Printer4Dev
).
-pruser
+pruser
PrUser=1
,
PrUser=0
).
-pruserdev DEV
PrUserDev
).
If you have compatibility problems, you can completely disable Kernal traps with the "Disable kernal traps" option. This will of course disable all the features that depend on it, such as the fast 1541 emulation (so you will have to turn true 1541 emulation on if you want to be able to read or write disk images) and tape support.
NoTraps
-traps
+traps
NoTraps=0
) or disable (NoTraps=1
) kernal traps.
This section lists generic resources that do not fit in the other categories.
Directory
PATH
variable in the shell. The special string `$$'
stands for the default search path, which is initialized at startup to
the following value:
LIBDIR/EMUID:BOOTPATH/EMUIDwhere:
LIBDIR
is the VICE installation directory (usually
`/usr/local/lib/vice', `/usr/lib/vice' or
`/opt/vice/lib');
EMUID
is the emulation identification
string (C64
, C128
, VIC20
or PET
);
BOOTPATH
is the directory where the binary lies (usually
`/usr/local/bin', `/usr/bin' or /opt/vice/bin
).
HTMLBrowserCommand
SaveResourcesOnExit
-directory SEARCHPATH
Directory
).
-htmlbrowser COMMAND
HTMLBrowserCommand
).
-saveres
+saveres
SaveResourcesOnExit=1
, SaveResourcesOnExit=0
).
Go to the first, previous, next, last section, table of contents.