|★ AMSTRAD CPC ★ GAMESLIST ★ AMSTRAD DEATH RACE (c) YOUR COMPUTER ★|
C. J. Leigh with a very colourful version of Frogger for the Amstrad.
DEATH CHASE STARTED as a straightforward conversion attempt on ? Spectrum program published by Your Computer some time ago. In the process some of the internal goings on of the Amstrad were revealed and the result is a playable and colourful game. This article gives i he finished program and also details of screen display configuration and how to add extra commands to your Basic — lateral scrolling, enlarged priming and screen character reading.
In converting Spectrum Cross to Amstrad Death Race there were three fundamental problems to be faced First the different size of the text screen, second the way the screen start moves around in memory, and third the way colour is mapped.
The Amstrad has three screen modes. Mode 2 is the high definition, two colour mode.
Mode 1 is medium resolution with 40 columns of text in four colours. Mode 0 is the multi-colour mode with 20 column text. I decided to reduce the number of cars and lorries on the road to enable me to make the most of the colours.
Although the number of columns would be less than the Spectrum's, the number oflir.es available was more — 25 instead of 22. Since a double height pinning routine has long been one of my favourites, the answer was obvious.
The screen display occupies the area of memory from hex &c000 up and is composed of 25 lines each with eight rows of 30 bytes. Some arithmetic tells you that there is s little memory left over- at the end of the screen.
This fact, coupled with hardware scrolling of the screen when for example listing a program, means :hat the byte with address &c000 may not in fact be expected top left-hand coiner. It could be anywhere, even off the screen altogether. However, after a mode change the screen is reset so that solves many of the problems.
Now supposing the top left hand earner is &c000 there we might expect the byte underneath to be &c050, but as on the Spectrum that is the top byte of the second line — pixel row nine. Thinking again and given that 25 lines times 80 bytes = &7d0 we might expect that second byte down to be &c7d0 In fact in it &c800. This ady figure is arrived at by simply tagging roughly half a line on after the bottom of the screen.
Colour mapping is at its simplest in Mode 2. Here the eight pixel width of a character is matched by the eight bits in one byte. Hence 80 characters per line means 80 bytes across the screen. Each bit reset is paper colour — usually pen 0 — and each bit set is usually pen 1.
In Mode 1 tilings are more difficult since :he character width covers two display bytes with each pixel pen being represented by the stare of two Sits, so giving the four colours available. These bits ate not consecutive but the byte is split in two with tie most significant bit of each half representing the leftmost pixel of the byte.
In Mode 0 the same general idea is followed. The character width covers four bytes, each byte representing two pixels The byte is split into four with the most significant bit of each quarter representing the left hand pixel of the pair. Each of the quarters contributes a bit to a 4 bit number with the bits weighted 1,4,2,8 indicating the pen number used.
Extensions to Amsdos Basic can be made very easily by setting up a name table and jump table as in listing 1 along with a four byte buffet and the log on routine at &a400. Each command must be preceded by a bar character available on the @ key.
The scrolling routines are straightforward whilst the double heigh: printing routine is used after the ROM has printed to the screen. The machine code reads the bytes of colour off the screen and doubles them up. Screen character reading is done using a ROM system call.
Using machine code in this way is very attractive and is made even easier since it is possible to pass parameters from Basic to your own code and back again. These parameters are pointed to by the IX register pair with the number of parameters given in the A register.
In fact, the IX pair point to the low byte of the last parameter passed and is the base address of a parameter buffer set up for you by the system. If there is only one parameter ii is available in the DE register pair 2nd if the parameter is an integer variable preceded by @ then it is the address of the variable that is passed to the machine code. That allows values to be transferred back to Basic.
The graphics characters in the program listing may be entered most easily by entering and running the short routine at line 6000 first. This copies the Spectrum system of making the keyboard produce the appropriate graphic character when Control is pressed with one of the keys A to U.
The routine at 6040 returns the keys to normal i" required. Follow the guidance of the Rem statements when typing in tie graphics. In addition you may find it easier to enter the machine code if you first enter Key 138,',' to change the decimal point on the numeric pad to a comma.
Finally, since the user graphics do not allow you to make the most of the Amstrad's colour, three different ways of going this have been introduced in the screen construction routine. They may be omitted if preferred since they slow down the screen printing.
To slow down the game increase the value of the pause used at the end of the main loop — sel at line 160 — or to make it much easier remove some of the traffic. Every time you get four men heme you will find extra spiders added and the speed will increase.
L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!
CPCrulez[Content Management System] v8.7-desktop/cache
L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.