Caprice32
v3.6.3
A 32-bit Amstrad CPC Emulator
Copyright © 1997-2010 Ulrich Doewich
All Rights Reserved

Firmware and BASIC ROMs
Copyright Locomotive Software and Amstrad plc
Amstrad has kindly given permission for their redistribution,
but retains the copyright

Contents

Disclaimer
What is it?
Requirements
Getting Started
Main Menu
  System
  Disk
  Tape
  Tools
Troubleshooting
How To Get In Touch
Background Information
Acknowledgements

Disclaimer

This software is provided as is. The author accepts no responsibility for damages occurring as a direct or indirect result of using this software.

^ Back ^

What is it?

Caprice32 is a software emulator of the Amstrad CPC 8bit home computer series. The emulator faithfully imitates the CPC464, CPC664, and CPC6128 models. By recreating the operations of all hardware components at a low level, the emulator achieves a high degree of compatibility with original CPC software. These programs or games can be run unmodified at real-time or higher speeds, depending on the PC environment used.

^ Back ^

Requirements

Minimum System Requirements
Pentium II 300MHz
32MB RAM
Windows 98/Me/2000/XP
DirectX7

^ Back ^

Getting Started

After selecting Caprice32 in Programs/Caprice32 on your Start menu, you will be presented with the standard CPC startup screen: yellow text on a blue background. The PC keyboard will now imitate the keyboard of a CPC - so don't be alarmed if a key press results in something other than what you'd expect! If you are not familiar with the CPC's keyboard layout, refer to the following diagrams to find the keys you're looking for. Shown here are the default and the two alternate maps that can be selected (see Tools|Options|Input):

Original

CPC 6128 Keyboard Layout

French

CPC 6128 Keyboard Layout - French

Spanish

CPC 6128 Keyboard Layout - Spanish

CPC keys map to the PC keyboard keys in the same positions, but since this is not always possible, some CPC keys had to be moved to alternate locations (CPC Key in the table below refers to the Original layout above):

CPC KeyPC Key
CLRInsert
]\
\Right-Alt
COPYLeft-Alt
ENTERNP Enter
F0-F9NumPad 0-9
F.NumPad .

The most frequently used emulator commands are available via the following keys:

PC KeyAction
F2load snapshot (.SNA)
F3insert tape image (.CDT)
Ctrl+F3tape PLAY / STOP
F4save snapshot (.SNA)
F5hard reset
Ctrl+F5MF2 reset (see Tools|Options|Expansion)
F6insert disk image (.DSK or .IPF) into CPC drive A
F7insert disk image (.DSK or .IPF) into CPC drive B
F8options menu
Ctrl+F8toggle joysticks on / off
F10exit
F11MF2 stop (see Tools|Options|Expansion)
F12toggle regular / full speed
Ctrl+F12toggle FPS display on / off
~toggle windowed / full-screen mode
PAUSEpause emulation
PRINTSCRcapture screen contents

The purpose behind some of the not-so-obvious emulator features (e.g. snapshots) will be revealed in the next section. At this point, feel free to experiment with Caprice32, and return if something is unclear or if you wish to tweak the emulation for best performance.

If you run into any kind of problems, please refer to the Troubleshooting section.

^ Back ^

Main Menu

System

Reset

Causes a 'hard' reset: the emulation is re-initialized and all memory is wiped clean. A real CPC does not have a physical reset button, so this action comes closest to turning a CPC off and then back on again.

Pause

Pauses the emulation. Select it again to resume.

MF2 Reset

Simulates pressing the reset button on the Multiface 2 device. Only the first 64KB of RAM are wiped - all additional CPC memory and the 8K of MF2 RAM remain untouched.

This option is only available if "Enable Multiface 2" is set on the Expansion page of the Options dialog.

MF2 Stop

Pressing the stop button on the Multiface 2 device causes the CPC to freeze and a two line menu to be displayed at the bottom of the screen. Please see the Multiface 2 documentation (available from the official Caprice32 web site) for what you can do with this interesting add-on.

This option is only available if "Enable Multiface 2" is set on the Expansion page of the Options dialog.

Load Snapshot...

Use this function to restore a previously saved snapshot (see Save Snapshot... below).

NOTE: loading a snapshot will discard everything that is currently in the CPC's memory.

Save Snapshot...

Snapshots are used to preserve the entire state of the emulation at the exact moment the snapshot is taken. Used with a game for example, the snapshot facility gives you the ability to save your progress at any time.

NOTE: Snapshots only store what is currently in memory. If for example, you are playing a game that loads level data from disk, you will have to have the disk image in the CPC drive for the game to continue properly from the point the snapshot was taken. It is generally NOT a good idea to take a snapshot while the CPC is accessing any of its disk drives, or loading from tape.

Enable Joysticks

If a check mark appears in front of this menu entry then the CPC joystick emulation is active and the control assignments you have made on the Input page of the Options dialog apply. You can temporarily disable the joysticks if your assignments conflict with the normal operation of the keyboard (e.g. if a joystick action maps to a regular keyboard key).

Exit

Quits Caprice32.

Disk

Insert Disk...

Disks are the main storage media used with the CPCs. Using this function you can insert a 'virtual' diskette into either of the two CPC disk drives. If any data has changed on the disk image currently in the drive, you will be prompted to save these changes before proceeding.

Inserting a disk into a CPC drive is only the first step when loading software with the emulator. If you're unfamiliar with CPC disk operations and loading software, I suggest you have a look at the Caprice32 FAQ section on How do I load games?.

Insert Blank Disk

Places an empty disk in either of the two CPC disk drives. The format and capacity of the blank disk can be specified on the Disk page of the Options dialog. See Tools|Options|Disk for more details.

Eject Disk

Removes the disk from the virtual disk drive. You may be prompted by CPC software at some point to remove the disk from the drive and this function will let you do that.

Flip Disk

The 3" disk drives used with the CPC only had one read/write head and therefore you had to flip the disk to access the second side. This function will only be available if the disk image in the drive has two sides.

NOTE: Only use this function if you know this disk image to be for a single sided drive. Using this switch on a high capacity disk image (e.g. PARADOS80, VORTEX, etc.) will result in read failures.

Write Protect

Toggles write protect on or off for the disk in the drive.

Tape

Insert Tape...

Regular audio tapes were the first storage media used with the CPCs, and the 464 model had a built in tape deck for that very purpose. Using this function you can insert a 'virtual' tape into an emulated tape deck.

Inserting a tape is only the first step in the loading process. If you're unfamiliar with loading from tape, I suggest you have a look at the Caprice32 FAQ section on How do I load games?.

Loading from tape is quite a bit slower than disk access, so be prepared to wait a while longer for software or games to load. For example, a game requiring about 100KB will take roughly 8 minutes to load (with emulation speed set to real-time). I therefore suggest you switch to full-speed (F12) during tape access, to accelerate things up a bit.

Eject Tape

Remove the tape from the tape deck.

Play/Stop

Alternates between pressing the PLAY and the STOP button on the virtual tape deck. The PLAY button has to be depressed to load from tape. See the Caprice32 FAQ section on How do I load games? for more information on when to use this function.

Rewind

Moves the tape position back to the beginning, equivalent to rewinding a real tape.

Tools
Options...
General

CPC Model

Selects which of the three Amstrad CPC models you would like to work with. Most of the time you should have this set to 6128, as some software will require the additional 64K of RAM. Some older programs might insist on the use of the 464 however.

NOTE: Changing this setting will cause the emulation to reset.

OEM Name

Influences which power-on message the emulated CPC will display.

RAM Slider

This slider allows you add more RAM to the stock CPC you selected. The size can be set in 64KB increments, up to the maximum of 576KB. Several third-party manufactures offered RAM expansions for the CPC. Caprice32 only emulates an Amstrad/Dk'Tronics type RAM expansion.

NOTE: Changing this setting will cause the emulation to reset.

CPC Speed

This slider allows you to set the emulation speed as some percentage of the original CPC speed. For example: to make the emulated CPC twice as fast as normal, set the slider to the 200% position. Depending on how fast your PC is, some of the higher settings may not actually achieve the selected speed. To have an indication of how fast the emulation is running, turn on Show Emulation Speed on the Video page.

Auto-pause when minimized or in background

A set check mark here causes Caprice32 to automatically pause the emulation when the application window is minimized or put in the background.

Capture printer output to file

If this check box is set, all data sent to the CPCs printer port will be captured to a file on your PC. By default this file will be called "printer.dat" and placed in the folder you installed Caprice32 to. To specify an alternate location or a different name, open the "cap32.cfg" file in your Caprice32 folder with a text editor (e.g. Notepad) and edit the "printer_file=" line.

Expansion

ROM Slot 2-15

Caprice32 allows (just like the original CPC) the use of expansion ROMs. If you had any additional ROMs for your CPC, you may be able to use them under Caprice32 as well.

Clicking on any of these 14 buttons allows you to choose the ROM file to put in the corresponding slot. For a ROM to be initialized during the CPC's startup sequence, its slot number has to be between 2 and 7 for the CPC 464, and between 2 and 15 for the CPC 664/6128. ROM files should be placed uncompressed in the ROM folder. Naturally, only those ROMs which do not rely on extra hardware will work correctly. If you want to see a specific ROM/hardware add-on emulated by Caprice32, please let me know and I will tell you what additional information I may required to support it. To clear a slot, click the button and simply cancel the selection dialog.

As a bonus, Richard Wilson's replacement disk operating system PARADOS is included in the Caprice32 archive. To activate it, click on the "ROM Slot 7" button to get a list of available ROM files. Select "parados.rom" from the list and click on OK to confirm. The button text will now have changed to reflect your choice. Click on OK and the CPC will reset to activate the new configuration. PARADOS is more tolerant of high capacity disk formats, and by default configures CPC drive B to be a double sided, 80 track capable disk drive. Enter the "|DRIVE" command at the BASIC prompt to access the built in utility suite of PARADOS.

NOTE: Changing a ROM slot assignment will cause the emulation to reset.

Enable Multiface 2

Quoted from the Multiface 2 (MF2) manual:

  1. Fully automatic back up of any program once loaded Into RAM
  2. 8K RAM extension - for software such as our INSIDER, or as a buffer, etc.
  3. MULTI TOOLKIT to study/modify/develop programs. POKE infinite lives, etc.
  4. TRUE RESET BUTTON which clears the first 64K CPC RAM.

As you can see, quite a useful bit of hardware to have, and now it's available to you for use with Caprice32! To activate it, you first have to get hold of the MF2 ROM file - Try

ftp://ftp.nvg.ntnu.no/pub/cpc/emulator/rom/multface.zip

as one possible source. Uncompress the ZIP to the Caprice32 ROM folder. Next click on the button beside the Enable Multiface 2 check box and select the MF2 ROM file from the list (this should be "MULTFACE.ROM" if you used the URL above).

The MF2 is activated in the emulation by pressing the F11 key. This will result in a two line menu at the bottom of the screen. To return to the CPC, hit the "r" key.

The complete MF2 manual is available from the official Caprice32 web site (see How To Get In Touch).

NOTE: Changing this setting will cause the emulation to reset.

Video

Full Screen Resolution

Select the resolution and bit depth that should be used when running in full screen mode. During the emulation, use the "~" key (to the left of the "1" on the main PC keyboard) to switch Caprice32 between windowed and full screen mode.

Rendering Style

Scanlines: imitates the look of an ordinary TV by displaying the black lines that are visible on a TVs picture tube. This is the fastest rendering method.

Line Doubling (Software): Very crisp display with no visible scanlines. Since every picture line has to be drawn twice this method incurs a huge performance hit - it should only be used on fast PCs or if the Hardware method does not work.

Line Doubling (Hardware): Slightly blurred display with no visible scanlines. This method uses the graphics card's scaling capability to double the picture lines. Some PC graphics cards do not support hardware scaling, resulting in severe slow-downs if this rendering style is chosen. Select Scanlines or the Software method if your card is one of those.

Synchronize to PC Screen Refresh

A set check mark here means that Caprice32 will wait for the PC video refresh to occur (usually 70 or 85 times per second) before painting the CPC screen. This effectively prevents the CPC video display from "tearing" and should make scrolling motions appear somewhat smoother.

Show Floppy Drive/Tape Activity

A set check mark here means that Caprice32 will indicate CPC floppy and/or tape drive activity by showing a small icon in the upper right corner of the emulator display.

Show Emulation Speed

A set check mark here means that Caprice32 will show the speed at which the emulation is running in the upper left corner of the emulation display. This value is measured in Frames Per Seconds (FPS). 50 FPS is the original CPC speed.

Colour/Green Monitor

CPCs were available in two configurations: with a colour monitor or with a monochrome (green) monitor. These radio buttons allow you to choose which monitor type Caprice32 should emulate.

Intensity Slider

This slider allows you to raise or lower the intensity of the CPC colour palette. A value of 1.0 represents the original intensity level. Smaller values darken the picture, larger values brighten it.

Audio

Enable Sound Emulation

Turns sound output through the PCs sound card on or off.

Playback Rate

Defines the playback rate of your PCs sound card. Higher setting make high notes sound clearer, but demand more processor power from the CPU.

Channels

Lets you choose between mono and stereo sound. The CPC always outputs sound in stereo; the mono option is only offered here to reduce CPU load on lower-end PCs.

Sample Size

Lets you choose between 16 and 8 bit samples. 16 bit is the preferred setting, but using 8 bit may be less taxing on your CPU and sound card.

Volume Slider

Controls the volume of the AY sound chip emulation. This setting is independent of the volume settings of Windows and your sound card.

Disk

Insert Blank Disks as

The Insert Blank Disk functions on the Disk Menu use the formats you select here. By default the drop down lists contain only the two standard CPC disk formats: Data (for any kind of data) and Vendor (ready for CP/M use).

If you want to add your own format definitions, look for the "fmtxx=" lines in the "cap32.cfg" file. The syntax of the definitions is as follows:

fmtxx=name,tracks,sides,sectors,sector size,gap#3 length,fill byte,sector IDs

Example:
fmt02=704K Vortex Format,80,2,9,2,0x52,0xe5, 0x01,0x06,0x02,0x07,0x03,0x08,0x04,0x09,0x05, 0x01,0x06,0x02,0x07,0x03,0x08,0x04,0x09,0x05

NOTE: A format definition must all be on one line, all values separated only by commas - no spaces. Hexadecimal values are preceded by "0x". Sector size is coded as follows: 0 = 128 bytes, 1 = 256, 2 = 512, 3 = 1024, and so forth. The sector ID list first contains all IDs of side 1, then (if required) all of side 2. The GAP#3 length is currently not utilized by the FDC emulation.

Input

CPC Keyboard

CPCs sold in France and Spain had localized keyboard layouts. This option lets you choose among these two and the default QWERTY keyboard definition.

NOTE: Changing this setting will cause the emulation to reset.

Input Device

This section of the Options dialog is used to configure the CPC joystick emulation. The drop down box lists all the control devices that are currently known to Windows. If you don't see a device you would like to use, open Game Controllers in the Windows Control Panel to install it. The list box below the drop down shows the current control assignments for the selected device. To make your own assignments, first select the device to be configured from the drop down box, then click on "Configure...". This will open the Configure Device dialog.

The Configure Device dialog is divided in three sections: the upper left lists the controls found on the selected device. The upper right lists the emulator actions that can be assigned to the control you have selected on the left. At the bottom you can see the currently defined assignments. The buttons on the bottom right do pretty much what they say: add and remove entries, and clear the entire assignment list. Once you're satisfied with your configuration, click on "Done" to accept your changes.

NOTE: You can assign multiple actions to a the same control. Keep in mind however that these actions will be executed at the same time and not in sequence. For example: if you assign both "Joystick 1 Up" and "Joystick 1 Left" to "Numpad 7" you will have created a single-key control that causes a diagonal movement in CPC games.

Screenshot...

Enter a name and Caprice32 will store what is currently shown on the CPC display in a PNG file. The picture will include everything visible on screen, including the activity icons, info messages and speed display. You can disable these extras via the Video page of the Options dialog prior to taking the screenshot.

^ Back ^

Troubleshooting


ERROR: DirectDraw could not be initialized - aborting.
ERROR: The DirectDraw surfaces could not be initialized - aborting.

DirectX was unable to provide the graphics environment that Caprice32 requires to work properly. Try to upgrade to the latest driver version for your graphics card. If that does not solve the problem, then there is unfortunately nothing you can do about it - Caprice32 will not run.

ERROR: Could not initialize the required graphics mode - aborting.

The graphics mode you have chosen on the Video page of the Options dialog failed to initialize properly. Restart Caprice32 and choose a different full screen resolution.

ERROR: Could not initialize the Audio module - disabling sound.

DirectX was unable to provide the audio environment that Caprice32 requires to work properly. Try to upgrade to the latest driver version for your sound card. If that does not solve the problem, then there is unfortunately nothing you can do about it - Caprice32 will not produce any sound.

ERROR: The selected playback rate is not supported by the sound card.

The sound playback rate you have chosen on the Audio page of the Options dialog is not supported by your sound card. Enter the Options dialog again and try lowering the rate until you no longer get the error message.

ERROR: A required CPC ROM file is corrupt or missing - aborting.

The files "cpc464.rom", "cpc664.rom", "cpc6128.rom" and "amsdos.rom" need to be present and available to Caprice32 for proper operation. These files should be moved to the ROM folder if necessary. If you do not have these files, get the latest Caprice32 version from the official Caprice32 home page (see How To Get In Touch).

If you made a shortcut to Caprice32, make sure the "Start in:" field points to the folder that holds the executable.

ERROR: The selected tape image contains an unsupported block.

Caprice32 does not yet support all possible blocks of the CDT format. The tape image you are trying to use contains an unsupported block and therefore cannot be used at this time. Please report any of these tape images to me (see How To Get In Touch).

ERROR: Could not create the printer capture file.

Most likely the location where Caprice32 wishes to store the printer capture file is either out of space or write protected. Look at the "printer_file=" line in the "cap32.cfg" file to find out where the printer file is being created.

^ Back ^

How To Get In Touch

If you want to let me know what you think about Caprice32, submit a bug report, or have a suggestion for a future version, drop me a line via one of the following methods:

e-mail:
caprice32@cybercube.com

snail mail:
Ulrich Doewich
112 Tea Rose St
Markham ON  L6C 1X3
CANADA

You can always find the latest version of Caprice32 and other utilities authored by me on the official Caprice32 web site at:

http://www.caprice32.cybercube.com

^ Back ^

Background Information

Working on and writing CPC emulators has been a rewarding and pleasurable experience for me since 1995. Caprice32 came into being as I was struggling with improving Bernd Schmidt's CPE, a DOS based CPC Emulator. Rather than poring over the (undocumented) assembly code of CPE I decided to write my own CPC Emulator. That was the beginning of Caprice32. Versions 1 and 2 were written in x86 assembly code and still DOS based. Since that OS was on the way out I decided in October 2000 that it was time to start over - again. Version 3 is basically a complete rewrite in C code to make it easier to port to different environments. Right now, only a version for Windows and DirectX exists - but who knows what the future might hold?! ;)

The Z80 emulation is based in part on code and ideas from the Z80 emulations by Juergen Buchmueller (MAME Z80 core v3.3), Marat Fayzullin, and my own Z80 x86 assembly code (Caprice32 up to version 2.00b2).

The AY-3-8912 sound chip emulation is based on code by Sergey Vladimirovich Bulba.

^ Back ^

Acknowledgements

Thanks must go out to...

My brother Ralf, who is a great resource when it comes to hard and software problems. Together we have traced quite a few signals of the CPC hardware. He is also responsible for designing the Caprice32 logo.

Kevin Thacker, with whom I have frequent e-mail exchanges. We've pinned down the inner workings of the CRTC/GA combo pretty accurately now, and continue to delve deeper into their secrets until we perfect the video emulation...

Dirk Junker, who was kind enough to send me his Schneider CPC 6128 from Germany. Without having the actual machine to test software and theories on, Caprice32 probably wouldn't exist today!

Brian Watson, for sending me a replacement drive belt for the CPCs 3" floppy disk drive.

Marco Bergman, for sending me his CPC mouse - which shall be emulated in an upcoming Caprice32 version.

Richard Wilson, for giving permission to include his AMSDOS replacement ROM PARADOS with Caprice32, and for his efforts in improving the accuracy of CPC emulation. Check out his excellent WinAPE32 CPC Plus emulator at http://winape.emuunlim.com/.

Sergey V. Bulba, for allowing me to use his excellent AY sound chip emulation with Caprice32, and for patiently answering all the technical questions I had.

Sergio Bayarri
Ricardo Bittencourt Vidigal Leitao
Gerardo Briseño
Christophe Copin
César Nicolás González
Craig Harrison
Paul A. Hodgson
Lars Magnus Hvattum
Frederic Herlem
Malcolm Jennings
Vaggelis Kapartzianis
Martin Korth
Noel Llopis-Artime
Pedro Aznar Márquez
Brice Rivé
Emmanuel Roussin
Bernd Schmidt
Marco Vieth

...and last, but certainly not least, to all the users of Caprice32!

^ Back ^