There are two options you can alter which affect the functionality of the emulator. To access these options, press the "Options..." button in the main window toolbar. The following dialogue box will appear:
Fig. 3: Options Dialogue Box
These options are discussed below.
In a real Spectrum, the ULA chip runs in parallel with the CPU, reading the graphics RAM and drawing the screen. It takes 1/50th of a second to draw the entire screen (about 70000 Z80 T-States), at which point an interrupt occurs and the next frame is started. On the emulator, however, the entire frame is rendered in one go straight after the interrupt. As this rendering can take some time, on slower computers the emulator can slow down considerably. The frame skip value allows the user to render the display less frequently.
A frame skip of 0 renders every frame; this is most accurate but slow. A frame skip of 1 misses out 1 from every 2 frames; a frame skip of 2 misses 2 from every 3 frames and so on. Note that the interrupt still occurs every 70000 T-States, so the program running on the Z80 operates as normal, just the screen display gets "sampled" less frequently.
In order to speed up the emulation, when an instruction is fetched from memory and decoded, it is stored for future reference. If the program runs the same instruction again, then this stored version is executed instead of fetching and decoding from the memory again. This system improves the speed of execution considerably, but has drawbacks.
The problem is that some programs are written to be self-modifying; that is, they generate new code to replace what has gone before. In this case, the new code will not be executed (instead, the stored version of the old code is run) and the program will crash or function incorrectly. The options screen allows the user to disable the instruction store facility, but at a great performance decrease (usually, the frame skip must be increased if the instruction store is disabled).
Note that the instruction store is wiped on reset, and when loading a snapshot.