Changes

Jump to: navigation, search

Renegade

4,136 bytes added, 08:52, 18 February 2019
'''''Renegade''''' is a 1987 game programmed published by Imagine. It was written by [[John Brandwood]] with graphics by [[Mark K Jones]].It is one of the same programmer as best CPC games. John also wrote [[Gryzor]] which is another top CPC game.  == Pictures ==  {||-|[[Image:RenegadeLevel1.png|left|thumb|200px|Renegade Level 1]]|[[Image:RenegadeLevel2.png|left|thumb|200px|Renegade Level 2]]|[[Image:RenegadeLevel3.png|left|thumb|200px|Renegade Level 3]]|[[Image:RenegadeLevel4.png|left|thumb|200px|Renegade Level 4]]|[[Image:Renegade_walk_anim.png|left|thumb|200px|Renegade Main Character Walk Animation frames]]|[[Image:Renegade_walk_anim_areas.png|left|thumb|200px|Renegade Main Character Walk Animation frames coloured by sprite part draw order]]|[[Image:Renegade_punch_anim.png|left|thumb|200px|Renegade Main Character Punch Animation frames]]|[[Image:Renegade_punch_anim_areas.png|left|thumb|200px|Renegade Main Character Punch Animation frames coloured by sprite part draw order]]<br style="clear:both;"/>|}
== Technical ==
=== General ===* The game is designed to run in 64KB of memory. Therefore they made decisions to make this possible. Even so, the game is one of the best on CPC * With 64KB one level at a time is loaded. With 128KB all 4 levels are loaded.* The game doesn't use hardware scrolling and uses a reduced screen and heavily uses the invisible areas of both screens to store code and data. === Characters and Enemies === * Characters and Enemies are stored as multiple sprite parts and are composed during drawing. Each part has a width, height, and signed x and y offset relative to the character's base x,y position. The base x,y position's origin is at the bottom of the frame and in the middle on the x axis. There is no clear separation between heads, bodies and legs. Some character frames are made of 4 or more parts. This can be seen in the walk and punch animation frames. * Characters and Enemies are sorted by their base y position each frame so that the draw correctly when walking in front of each other and to give a 3d look. === Sprites === * Sprite pixels are stored upside down in memory. Therefore left to right, bottom to top.* Sprites Sprite pixels are stored as mode 0 with pen 0 as transparent.* Sprites Sprite pixels are stored facing right only and flipped by code in realtime (e.g. the facing right left sprite is a flip mirror of the facing left right sprite.).* Some parts, such as the blue jeans Sprite pixels are seperatestored as follows: 1 byte like normal (same as mode 0 screen bytes), followed by 1 byte with pixels swapped, this repeats. It is believed this storage is done so some characters are composed from that drawing a sprite facing left, and drawing a sprite facing right will take the same cpu time and this means a more than one stable frame rate regardless of the direction each spriteis facing. * There is a list of sprites per level. The start address of this is stored at &e00 from the start of the level data. This takes the form of width, height and pixel data location. With 128KB there is 1 extra ram page per level for level specific sprites. Sprites common to each level are stored as follows:in main RAM. There are around 223 sprites (including common sprites). During the game the level page is mapped into RAM at &4000. === Levels ===* Each level has it's own music.
* Each level takes &1000 bytes. There are 4 stored in 1 byte normal (16KB page. The data is copied to write &3000->&3fff before then being copied to mode 0 screen)other locations in RAM.* Each level's data is prefixed with "JCB Overlay xxxx" where x is the level number. e.g. "JCB Overlay 0000".* Map is 128 tiles wide and 18 tiles tall. But not all map space is used. The remainder is garbage. In reality, followed by Level 1 byte ,2,3 are 80 tiles wide. Level 4 is 112 tiles wide.* Each level has it's own palette of 16 colours. The palette for level 1 is at &87b3, level 2 is &87c3, level 3 is &87d3, level 4 is at &87e3. The palette is stored backwards with pixels swappedpen 15 first, then 14 all the way down to 0.* "Macro tile map" uses 64 bytes. It is stored at offset +0x01a0 from the start of the level's data. Each byte is a macro tile id. Each macro tile is 4 tiles wide and 9 tiles tall. The data is copied to &BF90 and this repeatsis where the runtime uses it from.* The tile ids per macro block are stored at offset +0x09e0 from the start of the level's data. The data is encoded as 7 bits per tile all put together. It is decoded to &31a0 overwriting the level data. This is copied to &9600-&9720,&9e00-&9f20,&a600-&a720,&ae00-&af20. The runtime uses the data from &9600. The ids are stored pre-multiplied by 2.
It is believed this is done so that drawing a sprite facing left, and drawing a sprite facing right will take the same cpu time and so that the frame rate will remain more constant.
=== Tiles ===* Supports 128K RAM2048 bytes for tile graphics. All parts These are loaded defined per-level. These are stored at once+&1e0 from the level data. They are copied from &31e0 in 4 parts. There are 128 possible tiles. Runtime ranges: &e600-&e800, &ee00-&f000, &f600-&f800, &fe00-&ffff.* Tile graphics are 4 pixels wide and 8 pixels tall. Each tile's graphics uses 16 bytes. Tiles are stored uncompressed, left-right and top to bottom.
== Video ==
[[Category:Games 1987]]
[[Category:Video contents]]
[[Category:Beat'em up]]
2,541
edits