Changes

Jump to: navigation, search

Speccy Port

3,041 bytes added, 13:09, 19 April 2011
There is anger from Amstrad users in general, because they feel that if more time had had been taken on the Amstrad version, we could have had a version that used the abilities of the Amstrad better, looked better, perhaps sounded better, and played as well or better than the Spectrum version.
 
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad may have a smaller games catalogue.
It is worth noting that Spectrum ports also existed on [[MSX]], Enterprise and C64.
This phenomenon was more prominent in the UK, where the Speccy was the dominant machine. In other markets, such as France of Spain, where the CPC was very popular, games were coded from scratch for the CPC, often using an [[Atari|Atari ST]] for [[Games Crossdev|Cross Development]]
== Machine comparisons ==
Spectrum (48K machine) has 48K RAM, approx 6.5k of this is screen. The Amstrad has 64K ram, approx 16K of this is screen.
They have a similar screen size. Amstrad's screen can be reduced in size to match the Spectrum's (256x192). Normal display size on Amstrad is 320x200.
Spectrum (128K model and later) and Amstrad both have an AY-3-8912 sound chip. (1.7Mhz clock for AY in spectrum, 1.0Mhz clock for AY in Amstrad). ( Spectrum 48K had a 1-bit beeper sound. It Playing sounds through the beeper is possible very CPU intensive. The Amstrad doesn't have a beeper. The only way to simulate the beeper sound would be to convert it to translate this into similar AY sounds)sound.
The size and aspect of the pixels in the Spectrum's bitmapped display are comparable to the pixels in Amstrad's mode 1 bitmapped display.
The Spectrum has a fixed palette of 16 colours (8 colours with bright versions of each making 16 in total). Amstrad has a palette of 27 colours. In mode 0 you can choose 16 of these, in mode 1 you can choose 4 of these, in mode 2 you can choose 2 of these.
The Spectrum's screen is "attribute" based. Each 8x8 cell can be assigned a background and foreground colour (and both colours must either be non-bright or bright). There is also the choice to flash the colours. This colouring results in "attribute/colour clash" on the Spectrum. The Amstrad's screen doesn't have this, and there is no restriction on how the colours can be placed. The Spectrum can display all 16 colours on the screen. The Amstrad can only do the same in mode 0, but this has fatter pixels. If the CPC's mode 1 resolution is chosen, this is not possible.
The Spectrum has 1 interrupt per 50Hz frame, the Amstrad has 6 in fixed locations through the frame.
===Consequences===
 
====Colours & Colour Clash====
 
The cell based colouring used on the Spectrum has it's disadvantages.
 
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority.
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell.
 
This then means that the graphics with a lower priority then takes on the colour of the higher priority graphics.
If a sprite's colours takes priority, and it moves with pixel by pixel movement, as soon as it enters a new cell, the background will take on it's colours. The colour clash seems to extend furthur than the sprite. This is down to the 8x8 cell colouring.
 
Possible resolutions on Spectrum:
* Remove colour from the display so that background and sprites use the same colours
* Move sprites in cell based movements. The colours still take priority but the clash is less of a problem.
* Add a black border around the sprites. Clash occurs, but because of the border it is not seen.
 
Consequences for porting to CPC:
* CPC version has the colour clash simulated which is unnecessary.
* CPC version lacks colour, same as Spectrum
* CPC version has the same movement whereas it could be pixel perfect on CPC.
* CPC has the unnecessary black border.
* Because the CPC can't replicate the attribute system in mode 1, this means the mode 1 version has even less colours than the Spectrum version.
 
What they should do for CPC:
* Recolour the graphics appropiately for the CPC.
 
====Sound====
 
Sound written for the Spectrum can't be ported directly because it would be out of tune, this is down to the difference in master clock given to the AY (1.7Mhz on Spectrum, 1.0Mhz on Amstrad). The music would need to be altered.
 
If the sound was made for the Spectrum 48K beeper, then this would need to be converted
 
What they should do for the CPC:
* Compose the tune for CPC
* Convert the tune to the correct master clock so that it is in tune
 
====Graphics====
 
The graphics take less RAM on the Spectrum compared to the CPC. This means the memory footprint of the game is larger on the CPC.
 
====Original consequences (under construction)====
The Amstrad CPC was one of the best 8-bit computers of its time in terms of graphical capabilities. But those advanced capabilities had an impact on CPU resources.
Most of them got their graphic totally unchanged, displaying some kind of colour attributes "artifacts", a tell-tale sign of a Speccy port.
 
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad may have a smaller games catalogue.
On the other hand, as mentioned before, those games weren't always bad. Games with no need of scrolling and with re-coded graphics could actually be good.
==Attribute based Sprites and Animation==
 
The cell based colouring used on the Spectrum has it's disadvantages.
 
When moving a sprite over a background, or a sprite over another sprite, and if both have colours you have to decide which colours take priority.
 
It is not possible to have all the colours together because of the colour limitation within each 8x8 cell.
 
The problem then comes down to is that the graphics with a lower priority then takes the colour of the higher priority graphics.
 
Such games had no smooth movement of sprites. The sprite moved "character per character". As such the sprites are unmasked, being not really more than "tile-mapped". This meant the sprites had to actually fill the character tile or there would be artifacts introduced for the unmasked character's corner.
2,541
edits