The 'Spectrum port'

Why convert a Spectrum game to the CPC?

Many Sinclair Spectrum games were converted to the Amstrad for the following reasons:

Therefore, converting a Spectrum version of a game to the CPC was used extensively.

Unfortunatly many companies did not have the time/money or motivation to take advantage of the Amstrad's colours and range of video modes, so the CPC version was often inferior. Some games had less colour (they were monochrome), and were slower. A game that had been converted in this way was called a 'Spectrum port' (the game was 'transported from the Spectrum').

Simulating the Spectrum's display

The Spectrum screen is 256 pixels wide and 192 pixels tall. The pixels are square, and are the same resolution as Amstrad's graphics mode 1.

The screen dimensions can be simulated by programming the CRTC, the resolution by programming the Gate Array.

The screen properties are:

The following Z80 assembly code will set the size of the CPC's display to match that of the Spectrum's:

;; set width of screen in characters
ld bc,&bc01
out (c),c
ld bc,&bd00+32
out (c),c

;; set horizontal position of screen so that it is centralised 
ld bc,&bc02
out (c),c
ld bc,&bd00+46
out (c),c

;; set height of screen in CRTC characters
ld bc,&bc06
out (c),c
ld bc,&bd00+24
out (c),c

;; set 8 raster lines per CRTC character line
ld bc,&bc09
out (c),c
ld bc,&bd00+7
out (c),c

;; set vertical position of screen so that it is centralised
ld bc,&bc07
out (c),c
ld bc,&bd00+29
out (c),c

The following Z80 assembly code will set the CPC's screen mode to 1, which matches the pixel size and pixel aspect of the Spectrum's display:

ld bc,&7f00+%10001110
out (c),c

Differences between the CPC's display and the Spectrum's: