Changes

Speccy Port

36,678 bytes added, 18:41, 13 December 2023
<center>[[Image:Vs.png]]</center><br>A '''Speccy Port ''' or '''Spectrum port ''' is the name given to a game which has been converted directly from the Sinclair Spectrum with little or no changes to the Amstrad CPC. Often the Amstrad version ended up fairing worse than the original Spectrum version (though some games actually ended up pretty decent).
Mostly the Amstrad version ended up fairing worse than the original Spectrum version with the following results:
* Less colours
* Slower gameplay
=Why ?=These facts are not true for all "Spectrum Ports" because some ended up decent.
The [[ZX Spectrum]] shared the same CPU as There is anger from Amstrad users in general, because they feel that if more time had had been taken on the Amstrad and version, we could have had a simple graphics display. The Spectrum was very popular with version that used the abilities of the Amstrad having a much smaller market sharebetter, looked better, perhaps sounded better, and played as well or better than the Spectrum version.
To save on time and moneyOn a more positive tone, those speccy ports had the Spectrum code was re-usedmerit to exist, or else Amstrad would have a smaller games catalogue.
The Amstrad screen was reduced in size to match the It is worth noting that Spectrum's and often most of the colour was removed. Most spectrum ports were done in also existed on [[Video modes|Video Mode 1MSX]] (4 colour mode), because the resolution of this mode matched the resolution of the Spectrum[[Enterprise]] 64/128, [[SAM Coupé]] and this allowed the use of the same graphicsnon-[[Z80]] [[Thomson]] MO/TO, [[Commodore 64|C64]].
Speccy ports were also seen on the ==List of Spectrum Ports==[[MSXList of Speccy Ports]] and Enterprise.
Most of them got their graphic totally unchanged, displaying some kind of colour attributes "artefacts", proof of the faulty portage.==How these should have looked==
A typical Spectrum port to This section shows games which were made specifically for the Amstrad is said to have been 's abilities or Spectrum ports that were done in 3 dayscorrectly.
===Games Cross development===Here are some examples of Amstrad games done well, and how these games could have looked if more care was taken.
Serious games companies often released their games on multiple Games Platforms (Computers or Consoles)The following list shows how a game can be done right using the cpc capabilities.These do not necessarily share any Spectrum code, and are not necessarily recoloured from the Spectrum:
Many aimed mostly at their home market, as their presence in Europe and overseas markets wasn't well established at the time, leading to different priorities:* Renegade* Gryzor* Xyphoes Fantasy* [[Head Over Heels]]* Atic Atac
As British Market was dominated by Speccy, the Some CPC had to deal games share similarities with more Speccy ports than needed. But the Spectrum version, and probably share a lot of code, yet are in mode 0 (16 colours, lowest resolution). [[Ocean]] made a country such as France or Spain where lot lilke and thanks to a more professional graphic treatment (compared to many other British companies) and actually good porting tactics this produced some of the finest CPC was the dominant 8-bit machine, developpers used different methodgames.
Often an [[Atari|Atari ST]] was used for Cross Development in France.Those games are examples:
More info at [[Games Crossdev]].*'''Robocop'''*'''Chase HQ'''
===Consequences===Some of the games in the list below use mode 1 but fully supported the 2bpp re-coding of graphics done right (by a human, not by an automatic method) and hence got properly coloured backgrounds and sprites.
The Amstrad CPC was one *'''Shadow of the best 8-bit computers of his time in term of graphical capabilities. But this had a price...well, a weight in term of CPU ressources. Beast'''As so many games were ported from the "inferior" Spectrum, the Amstrad range could hardly benefit from its main advantage.*'''Midnight Resistance'''*'''Wec le Mans'''
Quite disapointing, when you are the happy possessor of a "powerful" Amstrad CPC 6128...with a fast disc drive and 2x64KB of Ram, a good colour palette of 27 shades... to get a games designed =Reasons for a cassette 48KB almost mono-colour computer, and not that compatible in fact...Spectrum Port=
As a result, so many games were slower, painfully animated, The [[ZX Spectrum]] shared similar hardware with a bad gameplay... AND had badly ported graphics toothe Amstrad CPC (see Machine comparisons).
*C64 had better soundsThe Spectrum was very popular and with the CPC having a much smaller market share, scrollings it made sense to develop the Spectrum version first and sprites capabilities.*to save on time and money, the Spectrum had less power taken by Video RAMcode, so could handle animation or scrolling more easily, with less need music and graphics were re-used. (A typical port to precisely program with exceptional carethe Amstrad is said to have been done in 3 days so was financially good).
Amstrad had to be specifically programmed This phenomenon was more prominent in order to get good animations. Yet the UK, where the Speccy ports weren't re-programmed in such waywas the dominant machine. AlsoIn other markets, even graphical data such as France or Spain, where the CPC was very popular, games were larger than their Speccy's counterpart...coded from scratch for the CPC, often using an [[Atari|Atari ST]] for [[Games Crossdev|Cross Development]]
Also, games in Mode 1 could have been good despite the lack of colours...if only those colours were used properly more often.= Machine comparisons =
As a result, most Speccy and C64 fans rarely give Amstrad the credit it deserves.====General====
On a more positive tone, those speccy ports had the merit to exist, or else Amstrad may have a lighter games catalogue.
And as said above, those games weren't all bad, just a bit frustrating most *The Spectrum 48K was released in the UK in 1982 and was the successor of timethe ZX80/ZX81 with upgraded graphics and config (RAM/ROM). The Amstrad CPC464 was released in the UK in 1984 and was a Z80 based computer with AY sound and a simplified yet upgraded custom IBM PC CGA display for Video.
Games *Spectrum 48K sold for £99. The CPC464 with no need of scrollings Green Screen monitor sold for £299 and with re-coded graphics actually could be goodcolour monitor for £399.One selling point was that the Amstrad needed only 1 plug, and that you didn't need to use the family television to use it.Also the Spectrum 48k wasn't supplied with any monitor nor storage device.
It is also * The Spectrum was designed to be used with a misconception to believe television, the screen Amstrad was downsized in those games designed to gain processor resources... It was only done to use the Speccy graphics more easily, be used with and we can doubt the code was (re-)designed so such sold with either a green screen reduction would even gain CPU resourcesor colour monitor.
* Amstrad's monitors include the powersupply for the Amstrad CPC. A "TV connection + power supply" solution was also available : [[Amstrad MP1/MP2 modulator]]
=* The Spectrum was sold as a games machine, the killer-list of Amstrad was sold more as a multi purpose machine (in the infamous speccy ports of death=UK anyway).
* The Amstrad's BASIC and firmware are said to be better than the Spectrum''Computer originals Hits''' (most of them ended up being decent) :s BASIC and OS functions.
*H.A.T.E*Highway encounter*Lotus turbo Esprit challenge*Fighting Warrior*Vendetta*Hard Drivin' ====CPU, RAM and basic Hardware====
I wouldn't count the numerous CodeMaster or Hewson games... Many of them were cheap budget Speccy games to start with, and where quite well ported or remained good...
*Spectrum 48K machine has 48K RAM, approx 6.5k of this is screen. The Amstrad CPC464 and 664 have 64K ram, approx 16K of this is screen.
'''Well known franchises :'''*Scooby Doo*Thundercats.*MASK Latter Spectrum were supplied with 128K RAM (Spectrum 128, +2 and +3 : Venom Strike Back *Airwolf 2) and Amstrad CPC6128 was supplied with 128K RAM too (same amount of RAM used by Video as earlier machines)
'''Adult games''' (sort of)*Sabrina *Samantha fox strip pokerSpectrum and Amstrad both have a Z80 CPU.*Strip poker II
'''Movie Franchises :'''*Indianna Jones The CPU runs at a similar speed (3 action game.*Back 5Mhz in Spectrum, 4Mhz in Amstrad) (Note, both systems do not run at optimum speed due to waits inserted by the future 2 (half parts were straight speccyporkedvideo hardware).
*The Spectrum 48k can't do double buffering in hardware (the later 128K machines can), the Amstrad could from the start. On the Amstrad and Spectrum 128K you can use hardware double buffering, but then you need to sacrific twice as much video ram (e.g. For Amstrad: 2 x 16K).
'''Arcade hits :'''*R-Type *PacMania*Salamander*Dragon Breed*Scramble spirit*Black Tiger*Strider*Bionic Commando*SuperWonderboy*Double Dragon3*Super Hang-On*Enduro Racer*Toobin*Xybots*Pit fighter*Cabal*Street Fighter The Spectrum has 1 interrupt per 50Hz frame, the Amstrad has 6 in fixed locations through the frame.
'''Special Category of Death :'''*MythNeither have hardware sprites, history in therefore you have to use the making (grrrrr)CPU to both draw and erase the sprites.*Gauntlet 3*SWIV
*Shadow of the beast*Midnight resistanceAmstrad has hardware scrolling, Spectrum does not.
'''* The Blue games of Death :Spectrum 48 didn'''*t come with a joystick port, you had to buy one. There was two variants, Sinclair and Kempston, thankfully the hardware was cheap and easy to obtain, and both were well supported by software. The untouchables*Heroquest*Hudson HawkAmstrad came with a joystick port built in.
* The original Sinclair ZX Spectrums didn't come with a tape player, you had to buy one. The Amstrad CPC464 had a tape player built in, however neither the CPC664 or CPC6128 had a tape player built in, you had to buy one if you wanted to use tape based software with them.
* Later Amstrad's ZX Spectrums (+2 and +3...) had in-built storage devices as they shared the common Amstrad CPC design.
===* Both the Spectrum and Amstrad had to use the CPU for loading or saving on cassette. The infamous killer list of Spectrum ROM loader used the shamefull 30 speccy porks border colours to indicate loading (especially the use of death that killed striped bars in the border to indicate each data bit) a small block for a header, and then loaded the program with one larger block. The checksum/error detection was done using XOR. The Amstrad CPC==='s ROM loader used many smaller blocks (so you could rewind if there was an error), it indicated loading progress with text that updated on the display, and used the better CRC for error detection. However, if the loading messages were turned off, you didn't have any indication of loading progress.
All those games are frequently used in 8bit wars style videos and reviews... Hence they gave * The Spectrum 48K's keyboard was made from rubber, the poor reputation of the inferior speccy clone to the Mighty Amstrad CPChad a proper keyboard. The later Spectrum's had proper keyboards too.
Those games were well known hits ported on quite all computers * The Amstrad had connections for printer, stereo sound output and expansion. It had an internal speaker, with volume control. The Spectrum 48K had connections for tape player, TV aerial and expansion. It had an internal piezo electric buzzer, the volume of their time which couldn't be controlled. * The Amstrad could control the cassette motor, turning it on and very basis of comparison between most systems off under software control to pause loading of software. The Spectrum didn't have this era, you had to manually stop and play the tape.
Let * The Amstrad had function/numeric keys. Only the Butthurt begins :later Spectrums (+2 and +3) had these.
*Shadow of the beast*MythLater Spectrums (+2 and +3) had a RS232/Midi port, history in the making *Gauntlet 3*SWIV *R-Type *PacMania*Salamander*Dragon Breed*Scramble spirit*Black Tiger*Strider*Bionic Commando*SuperWonderboy*Double Dragon3*Super Hang-On*Enduro Racer*Toobin*Xybots*Pit fighter*Cabal*Scooby Doo*ThundercatsCPC didn't have this.*Venom Strike Back*Sabrina*Samantha fox strip pokerIf you wanted this on the CPC, you needed to buy extra hardware.*Strip Poker II*Airwolf 2*Indianna Jones 3 action game.*Back to the future 2*Vendetta
Needless to say, the great amount of awesome adventure games that CPC had and spectrum could not even dream-of are never shown in such crossed reviews.====Video====
=The 3 levels of Speccy portages=
*Spectrum and Amstrad both have a '''bitmapped''' display.
Of course *while''' ZX spectrum''' has a quite '''basic 1bpp character based colour display''', '''Amstrad CPC''' can be considered an '''upgraded CGA display minus the level of Fail could greatly depend on whatever strategy Character based text modes''' (with a 16colours modes such as the programmers/graphists used to get rid of the poor Video speccyTandy's specificities for the original gameown custom "CGA" had...and a differently logic based palette), with a range or 4bpp low resolution, 2bpp square resolution and 1bpp high resolution Attribute free video display.
A monochrome game could remain monochrome or be recoloured on CPC*'''They have a similar screen size... or only parts of ''' But '''Amstrad CPC''' actually produces smaller pixels in it 's "equivalent" video mode (only sprites or Tiles but not both.mode 1).. mostly The normal display resolution on the Amstrad CPC is '''320x200''' (mode 1) while '''ZX Spectrum''' produces "only sprites" '''256x192''' pixels.Amstrad's screen can be reduced in size to match the Spectrum's (256x192, in Mode1)but then the actual display window is quite smaller than on a spectrum (on the same monitor) and has a larger border because the generated pixels are slightly smaller.
A coloured game with design-wise graphics (character based design) could be *The size and aspect of the exact same yet with even less colours..pixels in the Spectrum's bitmapped display are comparable to the pixels in Amstrad's mode 1 bitmapped display in that both produce approximately square pixels.
Or Tiles/sprites could simply be completely well re-done/re-drawn, even in Mode 0 sometimes..*The '''Spectrum''''s '''video ram''' takes approx '''6K'''.
===Rushed and Lazy===*The '''Amstrad CPC''''s '''video ram''' takes '''16K''' (approx 12K when screen is reduced to Speccie's resolution).
*The game is exactly as on speccy, even displaying graphical artifacts as Colour attributes, and/or monochrome display for the game's window (''Spectrum''' has a shame on a computer told as Colour Personnal Computer) but not always the HUD, which may even often feature extra fixed '''palette of 15 colours thanks to Raster colour changes, yet this doesn't really help to see what happens on the game's window' (8 colours with bright versions of each making 15 in total - LIGHT black is still black).
Also sprites may display Transparency/translucency * The Amstrad has 3 different [[Video modes|Video Modes]]. Mode 0 is 160x200 with background's colour16 colours, a typical speccy "Feature" ("not a bugmode 1 is 320x200 with 4 colours, a feature"mode 2 is 640x200 with 2 colours.All are bitmapped.. sic...)The Spectrum only has 1 video mode, 256x192 which is bitmapped.
Probably achieved by using *'''Amstrad CPC''' 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 Amstrad's palette includes equivalent colours that match closely the almost exact Speccy code and emulating the Speccy specificities (Attributes) on CPCSpectrum's colours.
It is to notice that it wasn't especially the Programmer*The Spectrum's fault, 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 Game Companies were ordering them choice to do so.flash the colours in each cell (the flash is a fixed rate and alternates between paper/pen and pen/paper). This colouring results in "attribute/colour clash" on the Spectrum. Coders werenThe Amstrad's screen doesn't "lazy"have this, it was and there is no restriction on how the Company investment which was lazy..colours can be placed.
Examples : * The colours of each 8x8 "attribute" cell is defined by a block of ram following the Spectrum's bitmapped screen, each byte represents one cell and each byte defines paper colour, pen colour, flash enabled and bright enabled. The colours for the pens on the Amstrad are defined by writing to the Gate-Array's palette I/O registers. The pens are read from the pixel data and the resulting colour is looked up in the palette registers.
*PacMania [[File:Pacmania titleThe '''Spectrum''' can display all '''15 colours on the screen.png]][[File:Pac04'''.png]]With limitations (2 colours per 8x8pix squares...)
Typical exemple* The Amstrad can only reproduce the attributes and 15 colours at the same time as shown by the Spectrum by using Amstrad's 16 colour mode, mode 0. However, this has wider pixels (approx 2x1 ratio) and a lower horizontal resolution. If the CPC's mode 1 resolution is chosen, yet it managed to is not possible because only 4 colours can be a nice game despite thischosen.
The title screen and HUD shows * On the attributes Amstrad the 6 raster interrupts allow palette colours (as artefacts...) and were almost completly unchanged, yet with less colours on screen to be changed allowing more than the theorical amount but this is also with limitations. This technique was commonly used in Speccy versionports.
Ironically, the game manages to display 6 colours *Normally Spectrum graphics is stored in the 4 2 colours Mode1, which means 8 pixels for each byte.In Amstrad mode 1, each byte defines 4 pixels.. Yet So for the game's area remains completely monocolour same graphics you often need twice the RAM on the Amstrad. (coded in 1 bit) and "colour attributes artefacts" This is a case where graphics without transparency are still presentused).If transparency is used, then the amount of data can be the same.
* The Amstrad's screen size and position can be reprogrammed, the Spectrum's screen size and position is fixed. It is possible to program the Amstrad's screen to use the entire monitor display area (at the expensive of approx. 22K of video ram being used).
*[[Black Tiger]] : Bad, bad, bad, such a shame as the Arcade game was awesome. monochrome game with multicoloured HUD.====Sound====
*PacMania : same as Black Tiger, yet even displaying Attributes artifacts/remains.
*Super HanG on : graphics Transparency/translucency
*Enduro Racer : same as Super Hang On, even more displayed as Sprites more often cross the different coloured parts of the screen (while jumping).
*Bionic Commando : there is even inverted/negative coloured sprites.
*Sabrina : same as Bionic commando...
*Gauntlet 3 : HUD is properly recoloured (3 shades) but in-game window is monochrome...(1bit coded sprites and tiles)
*RSpectrum (128K model and later) and Amstrad both have an AY-type : Monochrome background while sprites still are "coloured" as with Colour attributes, hence even featuring less colours than original speccy game, while the entire screen still display more than the only 4 Mode1 colours..3-8912 sound chip.(HUD raster trick1...)This game was done 7Mhz clock for AY in 3 weeks by only one manspectrum, who simply emulated the speccy stuff on CPC (couldn't do better 1.0Mhz clock for AY in 3 weeksAmstrad). Thank god the speccy version was so good this game is still decent on CPC.
Some of those games were still good, as they were yet very good on Speccy, *Spectrum 48K had a 1-bit beeper sound. Playing sounds through the beeper is very CPU intensive. The Amstrad Portage wasndoesn't enough have a beeper. The only way to waste simulate the beeper sound would be to convert it. But those remained inferior to their original Speccy counterpart (which was often smoother or faster...)AY sound.
===Semi-lazy=Input====
Well redone graphically* Spectrum has multiple joystick standards. The common standards are Kempston, Sinclair and Cursor. Kempston was a common interface used on the Sinclair made Spectrum's. It plugged into the back of the machine and provided support for a single joystick. This type of joystick doesn't clash with the keyboard. The Sinclair standard is used on the Amstrad made Spectrums. These machines have two joystick ports. The Sinclair standard works by simulating keys pressed on the Spectrum keyboard. (Does the sinclair joystick cause keyboard clash?) All of these standard for the Spectrum supported the directions and 1 fire button. In comparison the Amstrad CPC models have a single joystick port which with a splitter cable can support two joysticks. The joysticks support the directions and up to 3 fire buttons on the CPC, but not always as only 2 fire buttons on the later Plus machines. In addition using the joysticks and keyboard together on the Amstrad CPC causes keyboard clash where unwanted keys are pressed. Clash between joysticks and keys can be avoided with careful choice of keys. This clash was resolved on the Plus and can be resolved with diodes on the CPC joystick port. In general though, Amstrad games supported a single joystick, they didn't use key mappings that would actually avoid clash and many users didn't have these fixes so the games would suffer from keyboard clash. An example of this can be seen when playing two player Gauntlet where players could be neededfighting to move where they wanted to.
Such * The 48K spectrums had a wasterubber membrane keyboard, later versions had proper keys, and the Amstrad made Spectrum's have the best keyboards. The early Amstrad CPC464's and 664's had really good strong keyboards, comparable to those on the BBC Micro, whereas later ones were more flat and less good. Both Amstrad and Spectrum have a good selection of keys.
Examples :
*HeroQuest '''NOTE: still has monochrome feeling Sinclair Research (2 blue shades being used) while actually being properly 2 bit re-coded... Ditherings use 3 colours gradiants instead of the SpeccySpectrum's 2, and manufacturer) was acquired by Amstrad after the grey add a bit more colour feeling...sort of ... but it fails due to a poor colour strategySpectrum 128K had been made.'''
*Strider has recoloured sprites, displaying no attributes, but Backgrounds remains monochromeAmstrad then improved the build quality and enhanced the Spectrum's design. The result was that the Spectrum +2, which was closer in looks and build to the game sluggish CPC464/6128 (same kind of compact keyboard as CPC6128, but built-in "Datacorder"). The Spectrum +3 was also quite similar to the Amstrad CPC6128 because CPU must still convert 1bpp both had a internal 3" drive. So the Spectrum became closer in design to the CPC. However, the overall hardware of the Spectrum didn't change, the graphics into 2bpp)were the same, yet the HUD+Raster trick enable a 6 colours displayed on screen and sound was the HUD looks goodsame, but those later Spectrum's had built in joysticks, built in cassette or disc, connections for printer etc, just like the CPC, but almost all of which the Amstrad had starting with the CPC464.
*Shadow of the Beast : (perhaps...) No real 3-4 coloured ditherings or even "additional colours" thanks to dithering the 2 medium colours together in many graphics (Exteriors or for many sprites), yet the square speccy attributes are not displayed, while the speccy version remains monochrome (in game window, not HUD) in order to simply advert Colour clashes. Would have needed more development time and a real CPC version.===Disc drive===
===Good Job===The Spectrum didn't have an official floppy disc interface so there were different interfaces.In Russia the Betadisk interface is common, this used a WD1793 disc controller and 3.5" discs. This interface is incompatible with the Amstrad's.
Those games are often more When Amstrad designed the +3, the used a similar disc interface to be seen as proper Cross-Devthe Amstrad.
Graphics, despite sharing a The Amstrad designed Spectrum +3 has the following in common ancestry, are well redone, and take into account with the Amstrad power.CPC6128:* same disc media (3")* same disc controller (NEC765 compatible)* the floppy controller is polled for data transfer* Similar disc format (CP/M based)
After allHowever, despite being slower, this is not an excuse to get the same awful looking graphics.Spectrum+3 uses a different DOS than the Amstrad CPC6128.This means that the functions for reading/writing files are different on the Spectrum compared to the CPC.
Sometimes those games are not that well "ported"The Spectrum's DOS is more powerful than the CPC's. It can read CPC discs, yet its concept Spectrum +3 and gameplay is such that this is not That important, PCW discs easily. In order for the game is simply too good Amstrad to be wasted by such detail as the use of Mode1read Spectrum and PCW discs, and it was still sufficiently re-doneneeds to have a special XDPB (Expanded Disc Parameter Block) configuration installed.
*Head over heels[[File:Head Over HeelsThe Spectrum +3's DOS is based on the disc functions in Locoscript the CPC's DOS is AMSDOS. The Spectrum's DOS was developed after the CPCs, so clearly they saw the weakness in the CPC's DOS design and improved it.png]]
On the other hand, this one was the prime exemple of what every speccy port should have beenThe Spectrum Technical wiki can be found here. Even This describes the C64 version was totally like the Speccy version (monocolor game's area) while the Amstrad graphics were perfectly recoloured to use so well the lack of colour attributes. Also as this games didn't need scrollings, the animation was almost as good as Spectrum hardware in other 8 bit versions, and colour palette often changed inks, to actually get a colourfull feeling all along the game. No attributes and the no-rastercolourchange policy enable to not waste CPU ressources uselessly, while the only 4 colours are cleverly chosen and used in a cartoon styled madness...more depth:
*[[Deflektor]] http: exemple of a good speccy "cross development", thanks to a clever concept//scratchpad. Could perhaps have been better yet the concept of the game makes it a clever port, also details like the Tape version loading parts or the good chiptunes enable a proper CPC experiencewikia.com/wiki/ZX_Spectrum_technical_information
*Switchblade : the GX4000 cartridge version is displaying extra features such as large vertical ditherings in a lot =Consequences of Red shades (sky) or PLUS Hardwired sprites "patches" as extra coloured tiles...this is more than enough to get a properly coloured feeling.Spectrum Port=
==Input==
Some Speccy port "done right" may also use Mode 0 instead of Mode 1... hence being graphically fully The Spectrum has more joystick standards than the CPC (yet tiles or sprites are still comparable in dimensions), however reading the keyboard and joysticks and handling the input on the Spectrum is much simpler, takes less code and takes less CPU time than on the Amstrad.
The result may vary from awful (On the code Amstrad it is not optimised enough for CPC) best to great (alles ist richtigread the keyboard and joystick in one pass and store the data into a buffer which can then be queried later...)Then read from this buffer when you need to check the inputs.
Example of such games : *Space Gun : Mode 0 and even PLUS features, yet the attribute-designed-unmasked sprites remain, in a sluggish game.==Disc Loading==
=Technics The Spectrum +3's disc interface had a design that was close to the Amstrad CPC6128's. This meant that disc loading software that used=the disc interface directly could be modified easily to be used on the CPC. There are disc versions of the Alkatraz, Hexagon and Speedlock loaders common to both the CPC and Spectrum.
===Real-Time Convertion of 1bpp graphics===However, the method for accessing the DOS is different.
A common way to get The good thing is that both shared good disc interfaces, so a disc loading system on the Speccy game running on a CPC was Spectrum, if ported to get some routine to convert the existing 1bpp GraphicDatas (Tiles and sprites in equivalent to Mode2 on CPC) into 2bpp datas (proper Mode1) when put into the video RAMwould not be a bad thing.
Needless to say, this enabled to use no additionnal graph artist (a costly man at the time) to redrawn the Graphic Datas...==Tape Loading==
Nor Both the Spectrum and Amstrad had a coder to re-code similar method for loading or saving on cassette. For both it is CPU intensive and for both the RAM mapping/addresses method of such datas..representing the 1 or 0 bits is the same.
But this have a cost CPU wise... Some CPC games used the CPU instead of simply take original block loader which meant loading took much longer compared to Spectrum, some bytes of datas from reserve into Video RAMused the firmware headerless block loader (CAS READ) which was a bit faster, have to convert this along and some CPC games used a modified Spectrum tape loader (extracted from the Spectrum's ROM and modified for the way tooAmstrad's hardware).
===Monocolour playfield and Sprite Masks===Sometimes the Spectrum loader was modified for the CPC without exact knowledge of how it worked, this resulted in some games with bad loaders that either didn't check for errors, or which didn't work in some circumstances. This lead to unreliable loading.
*Having Loaders like this were used in a monocolour playfield on ZX Spectrum is a common way variety of games, not limited to have no colour clashes... Simply because you have no coloursSpeccy Ports.
*Most of those games then had masked spritesTwo good loaders that appeared on both systems are Alkatraz and Speedlock. Both were reliable and fast.
This means that each set of sprites have another "sprite set" for The Amstrad's ROM loader was a bit better than the maskSpectrum's ROM loader because it had CRC error checking, being actually 2x1bpp compared to XOR based checksum and block based loading (bit per pixelso you could rewind and try a block again) set of Datascompared to a single load.
Some games coders actually used this Consequences for porting to get the Sprites coded in 2bpp and used one of the 4 inks in mode1 to be the mask. This then made no more RAM used by Datas as the original.CPC:
As a result some of those speccy ports have sprites in another colour than *If the backgroundloader was modified for CPC without good knowledge the loading would be unreliable. (e.g. errors are not detected, timings are bad, which edge detection is actually better in term of playability/lookdodgy).
*On the good side, the Spectrum utilised the border to indicate both the stage of loading (indicated by different colours used in the border) and the loading progress, so a modified loader for CPC would also indicate loading progress. If messages were turned off in the Amstrad ROM loader you didn'''exemples :'''t have any indication of loading progress.
*Super wonder boy Examples of loaders common to both Amstrad and Spectrum: could have even * Speedlock (commonly used one more colours for the sprites, but didn't.by Ocean).*Double dragon 3 : this one had the Sprites actually in a monochromatic 3 coloursAlkatraz (commonly used by US Gold).
Needless Spectrum loader ported to sayAmstrad:* Aliens (UK version, the Background Tiles and Letter fonts were still in 1bpp converted ATM of display... so the CPU had no rest and such games weren't faster nor that much better lookingoriginal release).
'''Some games, despite having such Masked sprite totalling 2bpp... had absolutly no sprite re-code at all... while they could easily had this.'''==Colours==
*Black tiger is such an infamous case.The Spectrum palette (15 colours, bright at bottom):
Those games had one advantage [[image: the smooth movement of spritesZXSpectrum_palette.png|Spectrum palette (from wikipedia)]]
===Masked Backgrounds===The Amstrad palette (27 colours):
Some [[image:AmstradCPC_palette.png|Amstrad palette (rarefrom wikipedia) games actually used a mask for the Bakcground tiles too. This explains why they could be fully recoded with no notable additionnal weight for the Data.]]
Such games are often Isometric games and categorized into A comparison of the GOOD speccy ports (or actual Cross-Dev).palettes in CPC palette:
'''exemples [[image:'''CPC_Speccy_palette_comparison.png|Comparison of the palettes ]]
*Heroquest : From the Background tiles are also in 3 colours. Yet there is a really poor use of comparison you can see that the colour used for Amstrad can reproduce the maskSpectrum's colours well, and its additional colours can provide extra shades and some colours the Spectrum can't show (e.g. orange).
*Head over Heels Consequences for porting to CPC: probably... yet the colours are betterly used than in Heroquest. If you look carefully, there are 2 kind of "background" elements... **Real non-masked Background (floor, walls) which use If the full 4 game was ported directly using only the Spectrum colours then the Amstrad version would have similar colours, **and masked elements such as... Doors, platforms... which are 3 colours onlywhen more appropiate colour's from it's palette could be used.
===Unmasked games and What they should do for CPC colour clashes===:* Recolour the graphics using the Amstrad's palette to improve the look.
Such a shame... ==Colour Clash from the laziest amongst the worst and the Bad.Cell based colouring==
*Bionic Commando The cell based colouring used on the Spectrum has its disadvantages. [[image: need I say more ?*Enduro Racer : a turn based racing clash.png|right|thumb|Colour clashing in Knight Tyme. Observe the appearance of the character sprite as it merges with the background. (Background colours have priority here in this game ?.)]]
===Attribute based Sprites When moving a sprite over a background, or a sprite over another sprite, and Animation===if both have colours you have to decide which colours take priority.
Such games had no smooth movement It is not possible to have all the colours together because of sprites. You moved the sprite "character per character"colour limitation within each 8x8 cell.
As such This then means that the sprites are unmasked, being not really more than tiles-mapping..graphics with a lower priority then takes on the colour of the higher priority graphics.
This means If a sprite's colours takes priority, and it moves with pixel by pixel movement, as soon as it enters a new cell, the sprites must actually fill the characters or you get the unmasked characterbackground will take on it's corner artefactscolours. The colour clash seems to extend furthur than the sprite. This is down to the 8x8 cell colouring.
This was a "good" other way The 6 raster interrupts on the CPC can be used to get rid of Attributes Clashes and having actual "change the colours" on ZX Spectrumthe screen. But some speccy ports were then emulating You can redefine all the attribute systemavailable colours, e.g.each interrupt you could re-program all the 4 available colours in mode 1. which This can be quite bad because CPC in Mode1 has Half colours done to increase the Speccy hasnumber of colours visible.So on CPCHowever, while there are more visible colours, each region is still limited to the number of available colours (e.g.. this was often not ported that properlylimited to 4 colours in mode 1).
*R-TypeIf a sprite passes between two raster interrupt regions it will suffer from a form of colour clash, where the part in the new region takes the colours from that region, and the part in the old region remains in the colours from that region.
*Space gun : this game being quite late in CPC era... it is not really good and was probably rushed to Various ports use the release. Yet the Character based engine enables "enormous sprites"raster interrupts, but lacks the smooth movementhow they chose to use them differs.
Such technic was actually used for quite a good amount of Mode0 games'''Possible resolutions on Spectrum:'''* Remove colour from the display so that background and sprites use the same colours, clash is eliminated but the game is monocolour..* Move sprites in cell based movements. This The colours still take priority but the clash is not "Speccy port" speccyfic (Pun!) less of a problem.* Add a black border around the sprites. Clash occurs, but because of the border it is good to have it mentionned, as a common game design technic for both machinesnot/less seen.
'''Consequences for porting to CPC:'''*AMC (astro Marines corps) If colour priority, colour clash exists: done wellCPC version has the colour clash simulated which is unnecessary.*Satan If 2 colours are used and colour clash eliminated: CPC version lacks colour, same as Spectrum* If cell based movement is done well too, then CPC version has the same movement whereas it could be pixel perfect on CPC.* If black border is used, CPC has the unnecessary black border.* The CPC can't replicate the Spectrum's colour attribute system, this means a game converted to Amstrad's mode 1 has even less colours than the Spectrum version. The CPC version then has 4 colours, compared to up to 15 possible colours on the Spectrum.
Thx '''What should be done on CPC:'''* Recolour and redesign the graphics appropiately for the CPC in either mode 1 or mode 0.* Use the Amstrad interrupts and change the colours multiple times each frame, this will give each region (between each interrupt) it's own colours increasing the number of colours on screen. Each region is 52 scanlines in height, and the whole screen in width. Note that the colours must be set for each region for each frame to spanish game-makersmaintain them, and that the pixels within each region are still limited to 4 colours in mode 1.The colour regions like this are ideal for having different colours for the HUD and for the main game area.This can be a CPU intensive technique.
===Rasters===Examples of colour clash ported to the CPC:(These examples show colour clash implemented on the CPC in the same way as the spectrum would show it)* Bionic Commando
A common cheat was to get some Raster interrupt Examples of attribute based colour change so you could argue that the game is actually displaying more than 4 colours on screen while being Mode1.system ported to CPC:* Badlands
This is only to mimic some sort or Raster based Colours attributes.Examples of games with little colour because attribute colours have been removed:* Peter Pack Rat
And this is actually not a clever move in many way as getting some Examples of using raster interrupt may have some heavy-weight on the CPUinterrupts to increase colours:* Pacmania and Black Tiger (main play area remains 2 colours)* Strider 4 colours in game area, 4 colours in status panel.* Super Wonder Boy (Monochrome background and monochrome sprites)* [[Deflektor]] (main play area has one set of colours, status panel has another set)
And despite ==Advantages of the game "displaying more than the allowed colours on screen", the games playfield was still monocolour !!!cell based colouring==
All this did was getting the game even slowlierThe Spectrum's cell based colouring has advantages.
On the other hand this could also be done right.=== Conveying state on a HUD ===
*Deflektor : Raster done rightThe state of a game play element on the HUD can be coloured accordingly.*Strider : Raster done righte.g. a bomb that is about to explode could change colour from white to red. (useless but good looking)
'''What should be done on CPC:'''
* If you have enough free palette entries, e.g. mode 0, then you can change the colour for the pen used to display the item in the palette. This is quick. However if you are using mode 1, then the number of palette entries is much more limited and you should draw the bomb in a different way. The consequence of this is that you may need to store additional graphics for this and it will take much longer to update the HUD than on the Spectrum.
=== General colouring === Since the background and foreground colour can be defined per cell then you can use all the Palette of the Spectrum at once. '''What should be done on CPC:'''* If you are using mode 0 then you are free to define the colours per pixel from the 16 colour palette. This is ok if the chunkier pixels can be used, not so good if there is detail in the graphics that needs to be retained.* If you are using mode 1 then you will see less colour. You can set the colour palette for multiple regions on the screen, or you can use the 4 colour palette more creatively. ==Sound== There is 1 sound source on 48K spectrums: its beeper, and 2 sources of sound on 128K spectrums: beeper and AY. Beeper sound is simple. The spectrum has a speaker which you can turn on/off through a I/O port on the Spectrum's ULA. To make different sounds, you turn it on and off at different rates, all under control of the CPU. Speaker sound is CPU intensive because the timing is all done through the CPU and delay loops. The consequence on the Spectrum is that not many games have beeper music during the game, and those that do are often staccato like (e.g. Manic Miner) (the game takes some time to update, then some time for sound, and this repeats). If the sound was made for the Spectrum beeper, this would need to be converted to AY sound for the CPC, the result would not be exactly the same. Sound written for the AY in 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. When this is done, the music is almost the same. It is worth noting that mostly the 128K version of Spectrum games had AY tunes, because the 128K model of the Spectrum is when the AY was introduced. Consequences for porting to CPC:* No sound (if beeper only sound and it's not translated)* Sound out of tune on CPC (if AY sound without some conversion)* Sound is beeper like and staccato when it could be AY "native" What they should do for the CPC:* Compose the tune for CPC* For AY sounds, convert the music/effects to the CPC's AY master clock so that it is in tune (the tune may loose some of it's accuracy if this is done, especially regarding the hardware envelopes and noise, and this means the sound will not be exactly the same, but is much more acceptable). Examples of Spectrum Beeper sound converted to AY:* Knightmare* Last Ninja 2* Super Hang On ==Graphics== The Spectrum's graphics use 1 bit per pixel to define them. Each byte defines 8 pixels. The colour of each pixel is then defined by the attribute system. The attribute "ram" define the background colour (where a bit is 0), a foreground colour (where a bit is 1), if the dark variant of the colours should be used, or if the colours should flash at a fixed rate. If the background is a single colour, the sprites can be ORed on. If shading is to be used a mask is often stored with the pixels. The mask is used to remove or retain (depending on the mask type) pixels on the screen. The final result on the screen is the result of the mask then the sprite pixels. On the Amstrad, the number of bits to define a pixel, the number of colours that can be used, and the width of the pixels is different for each mode. * Mode 0 uses 4 bits for each pixel. Each byte defines 2 pixels. 16 colours can be used without restriction. Wide pixels. This is lower resolution than the spectrum.* Mode 1 uses 2 bits for each pixel. Each byte defines 4 pixels. 4 colours can be used without restriction. Pixels the same size as the spectrum.* Mode 2 uses 1 bit for each pixel. Each byte defines 8 pixels. 2 colours can be used without restrictions. Pixels are thinner than the spectrum. This is higher resolution. Consequences:* The pixel data and colours are stored in a different way than the CPC, so some conversion must be done before the graphics can be used. Either the graphics are remade, or often converted through some automatic process.* There is a trade off between mode 1, keeping the same resolution as the Spectrum but having only 4 colours, or using mode 0, with half the horizontal resolution but 16 colours. The choice depends on the detail required in the graphics. The following sections describe possible ways to handle the graphics on the Amstrad. ===Techniques used for Graphics=== ====Graphics with transparency==== =====Storage===== A common way to do this is on the Spectrum is to store 1 byte of mask, followed by 1 byte of pixel data, and to repeat this for the width of the sprite divided by 8. (Each byte representing a 8 pixel wide single line slice of the sprite). If we consider a sprite which is 16x16. Each byte contains 8 pixels. For each line 2 bytes would be needed for pixel data and 2 bytes for mask. The total storage space required would be (2+2)*16 = 64 bytes. If we consider mode 1 on the Amstrad, and we used the same representation, we could freely use 4 colours for the sprites. The Amstrad would also need 2 times the ram space to store the data, because in mode 1 there is half the number of pixels per byte.So, each byte contains 4 pixels. For each line 4 bytes would be needed for pixel data and 4 for mask: (4+4)*16 = 128 bytes. However, if we sacrifice 1 colour, so we have 1 pen which is fully transparent and 3 for opaque sprite colours then we don't need the mask to be stored this way. The mask is common for all sprites and we could store this as a single 256 byte array. We would still need 4 bytes for the pixel data but the result now is: 4*16 = 64 bytes. The same weight as the Spectrum. Mode 2 is generally not used for games on the Amstrad because of it's lack of colour. The pixels in this mode are half as wide as the Spectrum's. If the Spectrum data was used directly, which it could be, then the sprites would be half the width of the Spectrum's. In this case the data storage is the same as on the Spectrum. If we wanted to maintain the same resolution we would need to double up each pixel, effectively magnifying it in the width by 2. The result would be twice the size of the Spectrum data. If mode 0 is used, we could either store a mask and byte, as for the Spectrum, or more commonly we use pen 0 for full transparent and leave the other 15 pens to define the sprite. We could then use half the number of pixels horizontally and lower resolution too. Each byte now contains 2 pixels. The sprite is 8x16 now = (8/2)*16 = 64 bytes. This the same storage size as for mode 1. If the size of the sprites were too small, then we would need to increase the size and the storage space. Therefore, depending on the representation, this would determine how much ram is consumed on the Amstrad. The best choices are to go for mode 1, and use a common mask table, with 3 colours per sprite. Or use mode 0, use a common mask table, with 15 colours per sprite. In both cases we use 256 bytes more than the Spectrum equivalent graphics.  So we show that some games could be recoloured and still use about the same amount of data as the Spectrum. The above do not consider the size or speed of the code to clip or draw the sprite to the Amstrad's screen compared to the Spectrum code. The values above assume the Spectrum version is not storing pre-shifted sprites, or using a pre-shift table, and when drawing to pixel positions is shifting the pixel data during draw. The comparison becomes more complicated when these are involved. Examples of games probably ported from the Spectrum (the use a Spectrum sized screen), in mode 1 and recoloured:* HeroQuest* [[Head Over Heels]]* Shadow of the Beast Examples of games where re colouring could have been done:* [[Pacmania]] ====Graphics without transparency==== =====Storage===== Tiles are often used to define background graphics. These are opaque and don't need masks. The benefit here is that on CPC we can use all the colours in the palette, so for mode 1, all 4 colours can be used and in mode 0 all 16 colours can be used. However on CPC generally non-transparent graphics will often take more storage space: For the spectrum a 8x16 tile: (8/8)x16 = 16 bytes. CPC mode 0: (4/2)x16 = 32 bytes CPC mode 1: (8/4)x16 = 32 bytes CPC mode 2: (8/8)x16 = 16 bytes In mode 0 and mode 1, the tiles on the CPC will take twice as much space compared to the Spectrum. This will impact the memory used and depending on the number of tiles this is a significant memory impact. ====Real-Time Conversion of Spectrum graphics==== A common way to get the Speccy game running on the CPC and using the same storage space for the graphics was to perform real-time conversion from the Spectrum graphics. * Graphics are stored on the Amstrad in the same format as on the Spectrum (2 colour, 1BPP with sprites having masks)* Amstrad's mode 1 is used to maintain the same pixel resolution.* A function converts the graphics on-demand, while the game is running, into the form that is displayed for the screen. Needless to say, this enabled the port without the use of additional graphics artists. Therefore it would be cheaper and easier if a programmer was tasked with making a conversion alone. Disadvantages:* This process takes a lot more CPU power compared to the Spectrum version, because in addition to drawing and erasing the sprites, the pixel data must also be converted at the same time. * This resulted in a significantly slower game.* Amstrad version had less colours (often as little as 2 colours) Advantages:* Pixel data took less RAM than if it ====Mode 0==== When using mode 0, the screen can be reprogrammed to use the same sized screen as when using mode 1. However the resolution would be 128x192. Using mode 0 has additional impact on the gameplay and game logic:- there are fewer pixels horizontally therefore both tiles and sprites are described by fewer pixels in width (although pixels are wider). Then any calculations that use pixel coordinates will need to be adjusted. This includes positioning sprites on the screen, sprite to sprite collision, converting sprite pixel coordinates to a tile map location, converting sprite pixel coordinates to a collision map location, determining if a sprite is moving off the right side of the screen.  If the original sprites were square on the Spectrum (e.g. 16x16), then with mode 0 they are 8x16, and we may need additional code for these calculations to handle that. - movement per pixel will be faster horizontally than vertically. We can accept that, or if movement is meant to be the same in all directions then sprites may need to move faster vertically to ensure the movement is consistent. This then has an impact on gameplay because sprites will take less time to move over the screen and any time based goals may need to be adjusted to compensate and make the game goals consistent. Using mode 1 is the route to a quicker port because there are less changes to the game code. was stored in an Amstrad native form so the game could run on a 64K Ram machine (CPC464 and CPC664, 464Plus).* If the colour attributes of the Spectrum were not simulated then the attribute data would not need to be stored for the CPC. ====Mode 1==== Amstrad's mode 1 is the closest mode which compares with the Spectrum's graphical abilities. The pixels are almost the same size. The CPCs screen dimensions can be reprogrammed to re-create the Spectrum's 256x192 resolution. However, the CPC has a different "pixel clock" compared to the Spectrum. The CPC was designed for a 320x200 display instead of a 256x192 display and in fact the the pixels are smaller on the screen when you compare mode 1 (the closest equivalent on the CPC) to the Spectrum. So when the screen is reprogrammed you end up with a larger border on the CPC. This (the larger border) led to the false argument that the CPC's resolution was inferior to the Spectrum one although the amount of pixels on the screen is EXACTLY the same. ====Double buffering==== TODO: ==Screen dimensions== By setting CRTC register settings the Amstrad's screen dimensions can be reprogrammed to match the Spectrum's.The normal values used are R1=32, R6=24. There are advantages to reprogramming the screen dimension to match the Spectrum's.* The gameplay is similar because the player sees the same amount of map and there are the same number of enemies and they move in the same way.* Graphics/levels would not need to be designed for a wider screen (e.g. in mode 1, 320 compared to 256)* For a smaller screen less memory is used for the screen (16KB vs 12K). The memory used by the screen is the same regardless of CPC mode used. Unused areas can be used to store graphics, code and music. For a CPC screen at &c000, the unused areas are: c600-c7ff, ce00-cfff, d600-d7ff, de00-dfff, e600-e7ff, ee00-efff, f600-f7ff, fe00-ffff ==Random numbers== Sometimes Spectrum games generate random numbers by reading from the Spectrum's ROM which is always readable in the memory range &0000-&3fff. ''Consequences for CPC:'' * There is often not enough memory to store the Spectrum ROM in the Amstrad's memory. If the range read could be determined then possible a smaller range could be stored. * It would be wasteful to store part or all of the Spectrum's ROM in the memory* It is not legal to store any part of the Spectrum's ROM in memory Some games may use the 'R' register to generate a semi-random number. ''Consequences for CPC:'' * The R register value is based on the number and which instructions are executed. It is likely that the number of instructions between each read of the 'R' register could differ. For both of these methods the consequences for CPC are: * the numbers generated are likely to produce numbers which will differ compared to the Spectrum version and therefore the gameplay could be different. It may be subtle, it may be significant.* reading a random number may take more CPU instructions to do this making it slightly slower. Where possible the Spectrum and Amstrad versions should use the same random number generation based on a stored seed. ==Memory arrangement== Spectrum game's often use the memory from &5500-&ffff. ''Consequences for CPC:''- If you are not using a custom disc or tape loader then during loading you will need to preserve the firmware memory regions. The easiest thing to do is start the game lower in memory (&0040), use the default screen at &c000-&ffff, and then once loaded copy data over these areas (provided you are not doing furthur loading/saving). ==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. As so many games were ported from the Spectrum, a machine with decidedly lower visual specs, the Amstrad range could hardly benefit from its main advantage while lack of optimization meant that aspects as scroll or playing area fared even worse than the Spectrum versions. You have to remember that Spectrum had less resources taken by Video RAM, so could handle animation or scrolling more easily. It is also a misconception to believe the screen was downsized in those games to gain processor resources. It was only done to use the Speccy graphics more easily, and we can doubt the code was (re-)designed so such a screen reduction would even gain CPU resources. Interestingly, games in Mode 1 could have been good despite the lack of colours, if only those colours were used properly more often. Most of them got their graphic totally unchanged, displaying some kind of colour attributes "artifacts", a tell-tale sign of a Speccy port. 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. =Investigation into a Speccy Port= Arnoldemu attempted a Speccy Port in 2022-2023 and the result is 'Mayhem'. The documentation with this game has comparisons and describes the decisions made when making this conversion. You can read about the elements of this journey. =Lists of speccy ports=Note: these lists are by no means comprehensive, they just include the most high-profile releases. * [[Mayhem]] - [[https://www.cpc-power.com/index.php?page=detail&num=18884]] A recent Speccy port to CPC and PCW done by a single person. Read the document to see the comparison, issues encountered, choices made, read about the journey. =='''Computer originals Hits'''==(most of them ended up being decent) : *[[H.A.T.E Hostile All Terrain Encounter]]*Highway encounter*Lotus turbo Esprit challenge*Fighting Warrior*Vendetta*Hard Drivin' *Way of the Tiger*Last Ninja2 *Myth, history in the making*[[Saboteur]] I*Saboteur II *SWIV *Shadow of the beast The numerous CodeMaster or Hewson games are not listed. Many of them were cheap budget Speccy games to begin with, and were quite well ported or remained good... =='''Well known franchises'''==*Scooby Doo*Thundercats .*MASK 3 : okVenom Strike Back *Airwolf 2*Batman: The Caped Crusader =='''Adult games'''==*Sabrina *Samantha fox strip poker.*Strip poker II =='''Movie Franchises'''==*Indianna Jones 3 action game.*Back to the future 2 (half of the parts were Speccy Port)*Big Trouble In Little China =='''Arcade hits'''==*[[R-Type]] *[[Pac-Mania]]*Salamander*Dragon Breed*Scramble Spirits*[[Black Tiger]] - [[Black Tiger CPC-Spectrum Comparison]]*Strider*Bionic Commando*Super Wonderboy*Double Dragon 3*Super Hang-On*Enduro Racer*Toobin'*Xybots*Pit fighter*Cabal*Street Fighter*Karnov*Dynasty Wars*Gauntlet 3*Midnight resistance =='''Best known speccy ports'''== All those games are frequently used in 8bit wars style videos and reviews, hence they have served as a counter-argument to the CPC's superior abilities. Those games were well known hits ported on pretty much all computers of their time and therefore constituted the very basis of comparison between most systems of the era. *Shadow of the beast*Myth, history in the making *Gauntlet 3*SWIV *R-Type *PacMania*Salamander*Dragon Breed*Scramble Spirits*Black Tiger*Strider*Bionic Commando*SuperWonderboy*Double Dragon3*Super Hang-On*Enduro Racer*Toobin*Xybots*Pit fighter*Cabal*Last Ninja2 *Thundercats.*Hard Drivin'*Sabrina*Samantha fox strip poker.*Strip Poker II*Airwolf 2*Indianna Jones 3 action game.*Back to the future 2*Vendetta =The 3 levels of Speccy porting= Of course the level of porting could greatly depend on whatever strategy the programmers/graphists used to port the original Spectrum game. *A monochrome game could remain monochrome or be recolored for the CPC, or only parts of it (only sprites or Tiles but not both - mostly only sprites.)*A colored game with design-wise graphics (character based design) could be the exact same yet with even less colours.*Or Tiles/sprites could simply be completely well re-done/re-drawn, even in Mode 0 sometimes. ==Rushed and Lazy== The game is exactly as on the Spectrum, even displaying graphical artifacts as Colour attributes and/or monochrome display for the game's window but not always the HUD, which may even often feature extra colours thanks to Raster colour changes, yet this doesn't really help to see what happens on the game's window. Also sprites may display Transparency/translucency with background's colour (=colour clash), a typical Spectrum "feature". Probably achieved by using almost the exact Spectrum code and emulating the Spectrum attributes on the CPC. Examples : *'''PacMania'''[[File:Pacmania title.png]][[File:Pac04.png]] Typical example, yet it managed to be a nice game despite this. The title screen and HUD shows the color attributes and were almost completely unchanged, yet with less colours on screen than the Speccy version. Ironically, the game manages to display 6 colours in the 4 colours Mode1 - yet the game's area remains completely monochromatic (coded in 1 bit) and colour attributes artifacts are still present. *'''[[Black Tiger]]''': Same as PacMania*'''Super Hang On''' : graphics Transparency/translucency*'''Enduro Racer''' : same as Super Hang On, even more displayed as Sprites more often cross the different colored parts of the screen (while jumping)*'''Bionic Commando''' : there are even inverted/negative colored sprites*'''Sabrina''' : same as Bionic commando*'''Gauntlet 3''' : HUD is properly recolored (3 shades) but in-game window is monochrome (1bit coded sprites and tiles)*'''R-type''' : Monochrome background while sprites still are "coloured" as with Colour attributes, hence even featuring less colours than original Spectrum game, while the entire screen still displays more than the only 4 Mode1 colours...(HUD raster trick). This game was done in 3 weeks by only one man, who simply emulated the speccy stuff on CPC. Given that the Spectrum game was a great release the CPC port is not too bad. An special mention must go for '''Mevlut "Speccy" Dinc''', one of the worst offenders with nightmares as '''Big Trouble In Little China''', '''Enduro Racer''', '''Hammerfist''', '''Knightmare''', '''Last Ninja 2''', '''Last Ninja 2 Remix''', '''Prodigy''', '''Super Hang-On''' and '''Time Machine'''. ==Semi-lazy== Well redone graphically, but not always as would actually add be needed.  Examples :*'''HeroQuest''': still has monochrome feeling (2 blue shades being used) while actually being properly 2 bit re-coded. Ditherings use 3-colour gradients instead of the Spectrum's 2, and the grey adds a feeling of more colour.*'''Strider''' has recoloured sprites, displaying no attributes, but Backgrounds remains monochrome, and the game is sluggish (because the CPU must still convert 1bpp graphics into 2bpp), yet the HUD+Raster trick enable a 6 colours displayed on screen and the HUD looks good.*'''Shadow of the Beast''': No real 3-4 coloured ditherings or even additional colours thanks to dithering the 2 medium colours together in many graphics (exteriors or for many sprites), yet the square Spectrum attributes are not displayed, while the Spectrum version remains monochrome (in game window, not HUD) in order to simply avoid Colour clashes. Would have needed more development time and a real CPC version. ==Good Job==Those games are often more to be seen as proper Cross-Dev. Graphics, despite sharing a common ancestry, are well redone, and take into account the Amstrad power. Sometimes those games are not that well ported, yet their concept and gameplay are such that this is not that important: the game is simply too good to be annoyed by such detail as the use of Mode1, and they were still sufficiently re-done. *[[Head Over Heels]]*[[Deflektor]]*'''Switchblade''': the GX4000 cartridge version displays extra features such as large vertical ditherings in a lot of Red shades (sky) or PLUS Hardware sprites "patches" as extra coloured tiles. This is more than enough to get a properly coloured feeling. Some Speccy ports "done right" may also use Mode 0 instead of Mode 1, hence being graphically fully CPC (yet tiles or sprites are still comparable in dimensions). The result may vary from awful (the code is not optimised enough for CPC) to great (a well optimised Z80 game management engine with a different and accurate/efficient graphic display engine). This can be seen in '''Space Gun''': Mode 0 and even PLUS features, yet the attribute-designed-unmasked sprites remain, in a sluggish game. =Techniques used= ==Monochromatic playfield and Sprite Masks== Having a monochrome playfield on ZX Spectrum is a common way to have no colour clashes - simply because there are no coloursto clash! Also, most of those games then had masked sprites. This meant that each set of sprites had another "sprite set" for the mask, being actually 2x1bpp (bit per pixel) sets of dataSome games coders actually used this to get the Sprites coded in 2bpp and used one of the 4 inks in mode1 to be the mask. sort This then took up almsot no more RAM used by data than the original (concerning masked Graphics). As a result some ofthose speccy ports have sprites in another colour than the background, which is actually better in terms of playability/look. An example of this is '''Super wonder boy''' which could have even used one more colour for the sprites, but didn't. Needless to say, the Background Tiles and Letter fonts were still in 1bpp converted in real time so the CPU had no rest and such games weren't faster nor that much better looking. On the other hand, some games, despite having such Masked sprite totaling 2bpp had absolutely no sprite re-code at all (although this could have easily been prevented). '''Black Tiger''' is such a case. Nevertheless, those games had one advantage : the smooth movement of sprites. '''Examples :'''  *Batman: The Caped Crusader Decently ported, As it use the 2bpp for the sprites in full potential. The sprites use 3 colours and the background 2 colours, including colour the unused by sprites, this make a poor background but the differently coloured sprites enable a better visibility. *Strider : like Batman: The Caped Crusader... sprites use 3 colours and background 2... the difference in used inks give the sprites some extra visibility. Strider also features some raster effect to get the HUD with extra colours, yet this certainly slow down the game a bit.. *Super wonderboy (wonderboy2) : poor port... the sprites use only 2 colours while they could actually use 3 with no extra effort but some graphical job.Yet compaired to spectrum version, the CPC version manage to have the sprite more visible thanks to their different ink. ==Masked Backgrounds== Some (rare) games actually used a mask for the Bakcground tiles too. This explains why they could be fully recoded with no notable additional weight for the data. Such games are often Isometric games and are considered among the good speccy ports (or actual Cross-Dev). '''Examples :''' *'''Heroquest''': the Background tiles are also in 3 colours. Yet there is a really poor use of the mask colour.*'''Head over Heels''': yet the colours are better used than in Heroquest. If you look carefully, there are 2 kind of "background" elements. **Real non-masked Background (floor, walls) which use the full 4 colours, **and masked elements such as Sprites, Doors, Platforms... which are 3 colours only.
==Unmasked games and CPC colour clashes==
This category includes some of the worse examples, since actual Spectrum deficiencies were ported to the CPC.
*R-Type : Failed!'''Bionic Commando'''*PacMania : Failed!*Black Tiger : every thing is desperatly failed on this one !'''Enduro Racer'''
Many (if not all) of those games can actually run faster just by getting rid of this CPU-wasting rasters..!==Attribute/Character based Sprites and Animation==
Providing a game had to deal with 1bpp to 2 bpp convertion, Software Sprites and Scrollings... and complicated gameplay... adding some Raster interrupt to The cell based colouring used on the equation is a real dickmove and a good way to waster further more CPU timeSpectrum has it's disadvantages.
===Partial code re-use for proper CPC games===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.
Some CPC games are in mode0 yet It is not possible to have all the similarities with colours together because of the speccy version are still obviouscolour limitation within each 8x8 cell.
OCEAN was actually a lot into this... but thx The problem then comes down to a more professional Graphic treatment (compared to many other british companies) and actually good portage policies (not is that always) this produced some the graphics with a lower priority then takes the colour of the finest CPC gameshigher priority graphics.
Those Such games are exemples had no smooth movement of Crosssprites. The sprite moved "character per character". As such the sprites are often unmasked, being not really more than "tile-dev done rightmapped". They remains quite playable because This meant the CPU don't waste time sprites had to decipher 1bpp graphics actually fill the character tile or get Rasters interruptsthere would be artifacts introduced for the unmasked character's corner.
*RobocopThis was a "good" other way to get rid of Attributes Clashes and having actual "colours" on ZX Spectrum.*Chase HQBut some speccy ports were then emulating the attribute system, which can be quite bad because CPC in Mode1 has half the colours the Speccy has.
Some of those games were Mode1 but fully supported the 2bpp re*'''R-coding of graphics done right (by Type''' : the background has a human before, not by smooth scrolling while the CPU after...) hence got properly coloured Backgroundssprites are fixed character grid based.
The problem *'''Space gun''': those would have needed more tight coding because those are big gamesthis game was even released for Amstrad PLUS... Although coming very late in the CPC era is not really good and was probably rushed to the release.
*Shadow of Yet the Beast : basically an almost playable Amiga Demo from the start..Character based engine enabled enormous sprites - but lacked smooth movement. this just turns into Such a technique was actually used for quite good speccypork on CPCa fair amount of Mode0 games. The This is not "cartoonish border SnakesSpeccy port" are infamous though...*Midnight resistance : some elements such as the "projectiles" sprites (bullets, explosions) are certainly far too big on CPC but it is good to get this smooth and fast enough. Also some animations should have skipped a few frames to lighten the thing. But heymention, this is quite some exemple of Mode1 looking good..as it was a common game design technique for both machines.
*'''AMC (Astro Marines corps)''' : speccy version has no attribute clashes and is great. Amstrad version is in Mode0, feature multiscroll effect and remains fast.
*Wec le Mans : excellent CPC version. Just slightly slow... Burnin' Rubber ''Satan''' : this one is like R-Type, but the Plus version of this gamesprite layer is masked, sort so the game is monocolour on Spectrum. Still the Character system for the sprite has the advantage ofgiving good speed. The CPC version is fully in Mode0 and great, still the engine is clearly shared with speccy.
Anyway, not every thing ==Rasters==A common cheat was to get some Raster interrupt colour change so you could argue that the game is badactually displaying more than 4 colours on screen while being Mode1.This is only to mimic some sort or Raster based Colours attributes yet is actually not a clever move in some way as getting some raster interrupt may take lots of CPU cycles.Also, despite the game displaying more than the allowed colours on screen, the playing area was still monochrome. In the end, all this did was getting the game even slower.
Z80 machines shared On the same CPU and a good code remains a good code, provided it let enough "space" for heavier Video systemsother hand this could also be done right:*'''Deflektor''' : Raster done right.*'''Strider''' : Raster done right. (useless but good looking)*'''Thundercats''' : (though there are more playing area colours)*'''R-Type'''*'''PacMania'''*'''Black Tiger'''
Such Many (if not all) of those games as Robocop, Batman, chase HQ or Wec Le Mans weren't as fast as on Speccy on CPC... yet the great graphisms and sounds were more than enough to compensate wellcan actually run faster just by getting rid of CPU-wasting rasters.
Providing a game had to deal with 1bpp to 2 bpp conversion, Software Sprites and Scrolling and complicated gameplay, adding some Raster interrupt to the equation is a really bad move and a good way to waste even more CPU time.
==Amstrad interrupt positions==
The following image shows where the Amstrad's interrupt positions are located relative to the screen. Here the CRTC Register values used are R1=32, R2=42, R6=24 and R7=30 and the colours are changed at the start of the interrupt.
To have different positions vertically you can change the value of R7 (and if the monitor will accept it R5) to move the screen up and down.
For example Gryzor sets R7=29 to have a 1 char tall panel at the bottom in mode 1.
To change at later positions you can also use a software timing loop, or fill the time with other code to delay the colour change from a chosen interrupt position.
[[File:Interrupt_positions_spectrum_sized_screen.png|Screenshot of Amstrad interrupt positions showing where mode and colours can be changed quickly relative to pixel graphics. R1=32, R2=42, R6=24,R7=30]]
This image demonstrates that if you wish to use mode 1, and change palette colours for HUD and game area, then the graphics need to be arranged or re-sized so that the colour change positions are most optimal. For some games, the dimensions of the HUD or play area may not allow the palette to be changed easily.
[[Category: Games| ]][[Category:Programming]][[Category:Games Programming]][[Category:CrossDev]][[Category:CPC History]][[Category:Non CPC Computers]]
2
edits