Changes

Jump to: navigation, search

Speccy Port

2,596 bytes added, 00:58, 15 June 2018
/* Arcade hits */
==How these should have looked== This section shows games which were made specifically for the Amstrad's abilities or Spectrum ports that were done correctly. Here are some examples of Amstrad games done well, and how these games could have looked if more care was taken. 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: * Renegade* Gryzor* Xyphoes Fantasy* [[Head Over Heels]] Some CPC games share similarities with the Spectrum version, and probably share a lot of code, yet are in mode 0 (16 colours, lowest resolution). [[Ocean]] made a 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 games. Those games are examples: *'''Robocop'''*'''Chase HQ''' 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. *'''Shadow of the Beast'''*'''Midnight Resistance'''*'''Wec le Mans''' =Reasonsfor a Spectrum Port=
The [[ZX Spectrum]] shared similar hardware with the Amstrad CPC (see Machine comparisons).
Amstrad 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 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 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 were the same, the sound was the same, 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.
===Disc drive=== 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. When Amstrad designed the +3, the used a similar disc interface to the Amstrad. The Amstrad designed Spectrum +3 has the following in common with the CPC6128:* same disc media (3")* same disc controller (NEC765 compatible)* the floppy controller is polled for data transfer* Similar disc format (CP/M based) However, the 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. The Spectrum's DOS is more powerful than the CPC's. It can read CPC discs, Spectrum +3 and PCW discs easily. In order for the Amstrad to read Spectrum and PCW discs, it needs to have a special XDPB (Expanded Disc Parameter Block) configuration installed. The 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. The Spectrum Technical wiki can be found here. This describes the Spectrum hardware in more depth: http://scratchpad.wikia.com/wiki/ZX_Spectrum_technical_information ===Consequencesof a Spectrum Port=== ====Disc Loading==== 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. However, the method for accessing the DOS is different. The good thing is that both shared good disc interfaces, so a disc loading system on the Spectrum, if ported to the CPC would not be a bad thing.
====Tape Loading====
Two good loaders that appeared on both systems are Alkatraz and Speedlock. Both were reliable and fast.
The Amstrad's ROM loader was a bit better than the Spectrum's ROM loader because it had CRC error checking, compared to XOR, based checksum and block based loading (so you could rewind and try a block again) compared to a single load.
Consequences for porting to CPC:
[[image:AmstradCPC_palette.png|Amstrad palette (from wikipedia)]]
A comparison of the palettesin CPC palette:
[[image:CPC_Speccy_palette_comparison.png|Comparison of the palettes ]]
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.
 
The 6 raster interrupts on the CPC can be used to change the colours on the screen. You can redefine all the available colours, e.g. each interrupt you could re-program all the 4 available colours in mode 1. This can be done to increase the number of colours visible.
However, while there are more visible colours, each region is still limited to the number of available colours (e.g. limited to 4 colours in mode 1).
 
If 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.
 
Various ports use the raster interrupts, but how they chose to use them differs.
'''Possible resolutions on Spectrum:'''
* Bionic Commando
Examples of attribute based colour system ported to CPC:
* Badlands
 
Examples of games with little colour because attribute colours have been removed:
* Peter Pack Rat
NOTE: The 6 Examples of using raster interrupts on the CPC can be used to change the palette. However, while the screen displays 6 increase colours, the actual games window is still monocolour :* Pacmania and Black Tiger (main play area remains 2 colours)* Strider 4 colours in game area, 4 colours in status panel... generally Black+one other ink...) or "almost monocolour * Super Wonder Boy (only Monochrome background being monocolour and monochrome sprites having 3 inks... or some inks different from background's tiles...) typical examples are Strider * [[Deflektor]] (monocolour tiles and 3 inked sprrites)main play area has one set of colours, SuperWonderboy (Monocolour Background and monocolour sprites yet differently inkedstatus panel has another set), PacMania or Black Tiger (monocolour game's window/playfield yet multicoloured HUD...) and so on (see later in this page for more examples).
====Sound====
CPC mode 2: (8/8)x16 = 16 bytes
 
 
So we show that some games could be recoloured and still use about the same amount of data as the Spectrum.
Examples of games probably ported from the Spectrum (the use a Spectrum sized screen), in mode 1 and recoloured:
* HeroQuest
* [[Head over Over Heels]]
* Shadow of the Beast
So we show that some Examples of games where re colouring could be recoloured and still use about the same amount of data as the Spectrum.have been done:* [[Pacmania]]
=====Real-Time Conversion of Spectrum graphics=====
Advantages:
* Pixel data took less RAM compared to storing it in Amstrad's mode 1 form, so could run on a 64K Ram machine (CPC464 and CPC664).
 
=====Mode 1 and screen dimensions=====
 
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.
 
There are advantages to reprogramming the screen dimension to match the Spectrum's.
* Graphics/levels would not need to be designed for a wider screen (320 compared to 256)
* For the Amstrad, a 320x200 screen normally takes 16K, but when reduced in size it takes 12K.
====Original consequences (under construction)====
*Pit fighter
*Cabal
*Street Fighter]
*Karnov
*Dynasty Wars
*'''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==
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'''[[File:Head Over Heels.png]] This one was the prime example of what every Spectrum port should have been. Even the C64 version was totally like the Speccy version (monochromatic game's area) while the Amstrad graphics were perfectly recoloured and colour clash was avoided. Also as this games didn't need scrolling the animation was almost as good as in other 8 bit versions, and colour palette often changed inks to actually get a colourful feeling all around.*'''[[Deflektor]]''' : example of a good speccy "cross development", thanks to a clever concept. Could perhaps have been better yet the concept of the game makes it a clever port. Details like the Tape version loading parts or the good chiptunes enable a proper CPC experience.
*'''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.
=Techniques used=
 
==Mode1 and screen dimensions==
 
The use of Mode1 enabled the CPC to keeps the same graphics as Spectrum, in appearance only. While the square pixels looks almost the same, the code was completely different. Also, the CPC being set for a 320x200 display instead of a 256x192 display, the pixels are in fact smaller on screen, hence a bigger border was needed for the exact same resolution.
 
This (the larger border) led to the false argument that this was the CPC resolution and therefore it was inferior to the Spectrum one, although the amount of pixels on the screen is EXACTLY the same.
==Monochromatic playfield and Sprite Masks==
This was a "good" other way to get rid of Attributes Clashes and having actual "colours" on ZX Spectrum. But 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.
*'''R-Type''' : the background has a smooth scrolling while the sprites are fixed character grid based. The engine was keepted in R-Type128 modern remake.
*'''Space gun''': this 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.
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.
 
==Partial code re-use for proper CPC games==
 
Some CPC games are in mode0 yet the similarities with the speccy version are still obvious. [[Ocean]] was actually a lot into this, but thanks to a more professional graphic treatment (compared to many other British companies) and actually good porting tactics (though not always the case) this produced some of the finest CPC games.
 
Those games are examples of Cross-dev done right. They remain quite playable because the CPU doesn't waste time to decipher 1bpp graphics or get Rasters interrupts.
 
*'''Robocop'''
*'''Chase HQ'''
 
Some of the games below were Mode1 but fully supported the 2bpp re-coding of graphics done right (by a human, not by the CPU in real time) hence got properly coloured backgrounds.
 
*'''Shadow of the Beast''': basically an almost playable Amiga Demo from the start this just turns into a quite good speccy port on CPC.
*'''Midnight Resistance''' : some elements such as the projectile sprites (bullets, explosions) are certainly far too big on the CPC to get it smooth and fast enough. Also some animations should have skipped a few frames to lighten the proceedings. But at least this is an example of Mode1 looking good...
*'''Wec le Mans''': excellent CPC version, just a bit on the slow side. Burnin' Rubber is the Plus version of this game, sort of.
[[Category: Games| ]][[Category:Programming]][[Category:Games Programming]][[Category:CrossDev]][[Category:CPC History]][[Category:Non CPC Computers]]
901
edits