|
|
Line 128: |
Line 128: |
| * [[Loaders]] | | * [[Loaders]] |
| | | |
− | == Games Which use hardware tricks (on old generation cpcs) == | + | == Specific programming methods used in games == |
| | | |
− | Useful if you want to dissect games to work out how they did it.
| + | * [[Programming methods used in games]] |
− | | + | |
− | Please move to somewhere more appropiate
| + | |
− | | + | |
− | <br>
| + | |
− | | + | |
− | === Page Flipping ===
| + | |
− | | + | |
− | Most good CPC games use the page-flipping technique in order to display sprites and/or scroll the playing area smoothly. In particular, two memory areas (instead of one) are reserved for the screen ram. In each frame, one of the two screens is displayed in turn, by using the hardware (exactly by changing the screen-offset, Reg 12 and 13 of the [[CRTC|CRTC]]). At the same time, the next frame is being drawn in the non-visible screen until the next frame fly back signal. Then, the same cycle is repeated for each following frame.
| + | |
− | | + | |
− | The big advantage of this technique is that we can use a whole frame's machine-time for our code (with no animation problems that arise when we alter screen ram at the same time the electron beam displays it on the monitor). On the other hand, page flipping eats up a lot of memory area (which is crucial especially for 64Kb machines). This explains why a lot of games have very small game-areas !
| + | |
− | | + | |
− | === Hardware Scrolling ===
| + | |
− | | + | |
− | Hardware scrolling is performed by changing the CRTC registers 12 and 13 (start address).
| + | |
− | | + | |
− | The scrolling is normally 1 CRTC char (4 mode 0 pixels, 8 mode 1 pixels or 16 mode 2 pixels) in the horizontal and 1 char line (scroll amount dependant on R9 - Max raster but normally 8 scanlines) vertically.
| + | |
− | | + | |
− | Horizontal scrolling can be made smoother by using R3 (Hsync Width) and makes the scrolling effectively half a CRTC char (2 mode 0 pixels, 4 mode 1 pixels, 8 mode 2 pixels).
| + | |
− | This effect works well on Amstrad monitors but produces a black and white image on a MP-2 modulator because of the adjusted HSYNC timing.
| + | |
− | | + | |
− | Vertical scrolling can be made smoother by using R5 (Vertical Adjust) in combination with Rupture/Splitting to make perfect 1 scanline vertical scrolling.
| + | |
− | This works on all monitors.
| + | |
− | | + | |
− | This following is a list of games using hardware scrolling:
| + | |
− | | + | |
− | {| class="FCK__ShowTableBorders"
| + | |
− | |-
| + | |
− | | ''Title''
| + | |
− | | ''Year''
| + | |
− | | ''Vertical''
| + | |
− | | ''Horizontal''
| + | |
− | | ''R3''
| + | |
− | | ''R5''
| + | |
− | | ''Confirmed''
| + | |
− | |-
| + | |
− | | [[3D Stunt Rider]]
| + | |
− | | 1985
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Action Force]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[The Amazing Shrinking Man|Amazing Shrinking Man (The)]]
| + | |
− | | 1986
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Anarchy]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Axys]]
| + | |
− | | 1991
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[BMX Kidz]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Bob Morane Science Fiction]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Boulder Dash]]
| + | |
− | | 1984
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Builderland]]
| + | |
− | | 1991
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Canadair]]
| + | |
− | | 1987
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Cyborgs]]
| + | |
− | | 1991
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Doctor Who and the Mines of Terror]]
| + | |
− | | 1986
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Energy Warrior]]
| + | |
− | | 1987
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[FlySpy]]
| + | |
− | | 1986
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Fusion 2]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Gothic]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Ghosts 'n' Goblins]]
| + | |
− | | 1986
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Ghouls 'n' Ghosts]]
| + | |
− | | 1989
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Into The Eagle's Nest]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Jinks]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Killer Cobra]]
| + | |
− | | 1987
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Led Storm]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Legend of Kage]]
| + | |
− | | 1986
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Leviathan]]
| + | |
− | | 1987
| + | |
− | | Diagonal
| + | |
− | | scroll!
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Le 5eme Axe]]
| + | |
− | | 1985
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Mission Genocide]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Monty Python's Flying Circus]]
| + | |
− | | 1990
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Octoplex]]
| + | |
− | | 1989
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes(?)
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Out of This World]]
| + | |
− | | 1987
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Paraplane]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Plate-Forme]]
| + | |
− | | 1988
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Prehistorik 2]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Prohibition]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Realm!]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[The Return of the Jedi|Return of the Jedi (The)]]
| + | |
− | | 1989
| + | |
− | | Diagonal
| + | |
− | | scroll!
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Rick Dangerous 2]]
| + | |
− | | 1990
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Rig Attack]]
| + | |
− | | 1985
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Roland on the Ropes]]
| + | |
− | | 1984
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[The Sentinel|Sentinel (The)]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skate Ball]]
| + | |
− | | 1989
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skateboard Kidz]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skate Rock]]
| + | |
− | | 1987
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skate Wars]]
| + | |
− | | 1990
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Sly Spy Secret Agent]]
| + | |
− | | 1990
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Star Avenger]]
| + | |
− | | 1984
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Street Machine]]
| + | |
− | | 1986
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Striker in the Crypts of Trogan]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[Super Cauldron]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Titan]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | |-
| + | |
− | | [[T.L.L. - Tornado Low Level|Tornado Low Level]]
| + | |
− | | 1985
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Ultima Ratio]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Vector Ball]]
| + | |
− | | 1988
| + | |
− | | Diagonal
| + | |
− | | scroll!
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Warhawk]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Xeno]]
| + | |
− | | 1986
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | | No
| + | |
− | | No
| + | |
− | | Yes
| + | |
− | |}
| + | |
− | | + | |
− | === Rupture (or splitscreen) ===
| + | |
− | | + | |
− | A CRTC programming technique used to split the screen into more than one block vertically.
| + | |
− | This allows each block to reference different ram, or to hardware scroll one block while another is static.
| + | |
− | This list is not exhaustive.
| + | |
− | | + | |
− | {| class="FCK__ShowTableBorders"
| + | |
− | |-
| + | |
− | | ''Title''
| + | |
− | | ''Year''
| + | |
− | | ''Confirmed''
| + | |
− | |-
| + | |
− | | [[Action Force|Action Force]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Axys|Axys]]
| + | |
− | | 1991
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Dynamic Duo|Dynamic Duo]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | | + | |
− | | [[Energy Warrior|Energy Warrior]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Enlightenment: Druid 2|Enlightenment: Druid 2]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | | [[Grell and Falla|Grell and Falla]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | | [[Mission Genocide|Mission Genocide]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Octoplex|Octoplex]]
| + | |
− | | 1989
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Prehistorik 2|Prehistorik 2]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skate Ball|Skate Ball]]
| + | |
− | | 1989
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Skatewars|Skatewars]]
| + | |
− | | 1989
| + | |
− | |
| + | |
− | |-
| + | |
− | | [[Skateboard Kidz|Skateboard Kidz]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Snowstrike|Snowstrike]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | | + | |
− | | [[Sol Negro(opera)|Sol Negro(opera)]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | | [[Storm Warrior|Storm Warrior]]
| + | |
− | | 1989
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Super Cauldron|Super Cauldron]]
| + | |
− | | 1992
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Turrican|Turrican]]
| + | |
− | | 1990
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | + | |
− | | [[Twin World (Ubi Soft)|Twin World (Ubi Soft)]]
| + | |
− | | 1990
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Ultima Ratio|Ultima Ratio]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Usagi Yojimbo|Usagi Yojimbo]]
| + | |
− | | 1988
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Warhawk|Warhawk]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | |
| + | |
− | |-
| + | |
− | | [[Wonder Boy|Wonder Boy]]
| + | |
− | | 1987
| + | |
− | | Yes
| + | |
− | |-
| + | |
− | | [[Xyphoes Fantasy|Xyphoes Fantasy]]
| + | |
− | |
| + | |
− | |
| + | |
− | |-
| + | |
− | |}
| + | |
− | | + | |
− | ==Firmware==
| + | |
− | | + | |
− | The following games are known to use firmware functions. This probably explains why they are poor. If the programmer had used the hardware directly they would have lots more cycles free which they could have used to make the game better.
| + | |
− | | + | |
− | This list is not exhaustive.
| + | |
− | | + | |
− | *Xevious
| + | |
| | | |
| == Porting == | | == Porting == |
This page covers important facts concerning the Amstrad CPC/Plus games.
With a list of Software houses, and the various and notable technics used in well known games.