News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Carnivius

Carnivac's CPC pixels

Started by Carnivius, 12:14, 03 June 12

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TotO

#100
Yep.
Probably the fact that you add more pixels after doing the picture to look better ?

And sure, it's very much but it's why that look realy nice too. :D
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Carnivius

Quote from: TotO on 14:33, 09 July 12
Yep.
Probably the fact that you add more pixels after doing the picture to look better ?

I don't know what you mean by that at all.  And how big are you counting the tiles?  8x16, 4x8 or some other size (I mean real Mode 0 res of 160 wide, not the PC pixel size)?
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

TotO

#102
Each tile is an unique char. (4x8 pixels in mode 0)
Some chars look close to others, but with a different pixel inside, so you have to count it like a different tile too. :)

EDIT:
- Up left window: 16 tiles
- Up right window: 16 tiles
- Videoshack marquee: 28 tiles
- Brocken shop glasses: 34 tiles
- Background buildings & sky : 40 tiles
- Parc-metter: 8 tiles
- Car (suposed to not move): 38 tiles

Total : 180 tiles without counting walls and floor.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Carnivius

#103
The car was planned to be a sprite that only appears when RoboCop starts a new life (car drives on so it's half way on screen like shown in the image, then door open and RoboCop steps out then walks to the middle to begin play) so would disappear offscreen as Robo walks right.   Could be a 128k only feature if it used too much of 64k and on a 64k version he simply just appears in middle of the screen with no car.  It's not essential to gameplay.  It's flourish.

Fire would be an animated sprite that flickers through the versions shown on screen there (at different starting frame counts so the frames aren't all the same at once).  Works well as background (such as above the fence) or foreground (in front of car and enemy in shot) for some nice depth.  Parking meter would be a sprite so could be placed in different areas. Crate could be a sprite that would be shot to reveal an item.

I could redo the windows so that they use the window pane of the shop's display window and then make then make the windows panes a little taller to have only 2 of the one on left far left (unbroken and broken types).  The lower broken glass on the second from left window could use the shop display window's lower broken glass bits then.   But that's sorta stuff I'd like to do only if necessary.  I did just notice that second window is using a slightly out of date version of the upper left broken glass bit.  It should have a brown pixel like the shop display version does. 
.
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

Sykobee (Briggsy)

#104
Quote from: TotO on 14:22, 09 July 12
The playfield of this picture (removing sprites) use close to 150/200 different tiles... ;) 
On that, you have to add the game map (4K at less) and the attribute table (probably 4K too).
So, you are game over before coding the game. :D


Looking through the screen I'd estimate there to be around 40 different tiles (8x16), although the full level would have more. Carnivac probably could split the screen up so that you can see the tile boundaries. It's the sign of a good graphician that it looks like there are many many more different tiles than there actually are. I'm using 8x16 because that's 64 bytes to a tile, hence 16 tiles/KB RAM or 256 tiles per 16KB. It looks like you can get away with between 64 and 128 tiles per level for a game like this.


The only issue is the shop sign, using 4x8 tiles would let you have an alphabet of potential store names (52 16-byte tiles), but it would be an odd high street with identical style shop signs.

You are right about the game map of course, at 10 tiles high, 4KB could give us a level over 400 tiles wide (20 screens), before we consider any form of level data compression.
Actually, the screen is 128 pixels wide, not 160, so that's 25 screens, and some memory saved (although in awkward places). I'm not an expert on CPC double buffered screen split 128-byte wide mechanics though.

TotO

#105
Quote from: Carnivac on 14:58, 09 July 12The car was planned to be a sprite that only appears when RoboCop starts a new life
OK, so don't count it. :)

QuoteFire would be an animated sprite [...] Parking meter would be a sprite so could be placed in different areas.
Crate could be a sprite that would be shot to reveal an item.
I don't count fire and crate, because look like sprites.

QuoteI could redo the windows so that they use the window pane of the shop's display window and then make then make the windows panes a little taller to have only 2 of the one on left far left (unbroken and broken types).  The lower broken glass on the second from left window could use the shop display window's lower broken glass bits then.   But that's sorta stuff I'd like to do only if necessary
The goal is not to ask you to change anything on your picture, because it's great like that.
Just to inform you that it may be difficult to make a game looking like that for real. :)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Carnivius

#106
Quote from: TotO on 15:05, 09 July 12
But if all that need to be sprites, don't count them as tiles... But, take sprite memory and need to be masked to be displayed. (slow)


I thought sprites didn't need to be masked if they were all using the same colour as the transparent one (none of them are using the greeny 127,127,0 except as a transparency, it's only visibly an actual colour in background tiles)
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

Sykobee (Briggsy)

The actual hard things in my opinion are:

1. animated fire tiles / sprites (best as tiles) - can only have a few on display at a time due to the cost of refreshing them. Treat them as background tiles and they can be blitted fairly quickly to the screen, so you could get a few done per frame. Not immensely difficult - you register active flames when they appear on screen, and deregister them when they go off, just takes a small table of 'active flames' (x,y,frame#) in memory.

2. foreground static sprites such as the fire hydrant/lampposts/other flair. Apart from needing to be rendered with a slower blit method to handle the transparent pixels, there is the difficultly of storing these in the game map - it might require a foreground tilemap, or a table of special items, etc. You will not want to re-render these every frame IMO, just once when they appear on screen. That means no fire hydrants in front of animated fires/tv screens/etc, nor player sprites going behind them. I agree that they do make a difference to the graphics. Worst comes to worst, you just have standard tiles including the items and more restricted placement opportunities.

3. no chain link fencing in an 80s american city?! :p

4. Aforementioned screen split, smooth scrolling, double buffering, and maybe need for preshifted sprites/tiles.


Indeed you don't need a mask sprite if you are using a colour key as transparency, which makes sense in MODE 0 as you would otherwise inflate the graphics memory use by 25%.

Carnivius

Is it possible to use the same fire as sprite or tile depending on where it's placed?  So a tile when it's just against the black of the city backdrop and a sprite when it's used in the foreground?   Or is that not possible?

I was thinking of chain linking fences but there was only so much I could fit into one screenshot.  This be the basic tile set-up as an example.  The bricks and stuff that would be used through out a level with some variations in other tiles to accompany them.   Is it technically an 80's city?  RoboCop is an 80's movie set in the 'near future' (I think around 2000 I read some place).  Doesn't really matter what time it's actually set in.  I like those 80's arcade game sort of details.

Finding this all very interesting.  When this week is over (basically when my play is done and I think of something other than Shakespeare) I'll likely do RoboCop and the enemies walk cycles and perhaps reuse my Cosmic Prison Commando PC demo engine to do a tech demo of these graphics in action to see how it looks all moving and playable (that engine has everything needed for this sort of game so it just needs some tweaking, like to scroll left to right only and the RoboCop graphics)
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

TFM

Usage of small tiles does limit RAM needed for GFX, but it does increase RAM needed for the matrix to tiles.
So how much RAM do you need?
- 16 KB for a matrix / map of the levels
- 16 KB for Tiles GFX data
- 16 KB for Sprites / enemy GFX data
- 16 KB for Sound (yes!)
- 16 KB or 32 KB for V-RAM (screens)
- 16 KB (or even more) for the Code managing that all.
Graphics people tend to forget that there must be also some code, and yes it does need space too ;-) And if you want just a bit of AI it will need really some RAM ;-) :-D
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Carnivius

Quote from: TFM/FS on 15:56, 09 July 12
Graphics people tend to forget that there must be also some code

I don't.  And I also don't forget that Turrican II ran very nicely on my 464 with it's huge levels, decent multi-directional scrolling, varied tiles and large bosses.  So the 464 is certainly capable of a graphically impressive, highly playable shooter without the need for 128k or floppy disks.   
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

TFM

Quote from: Carnivac on 16:17, 09 July 12
I don't.  And I also don't forget that Turrican II ran very nicely on my 464 with it's huge levels, decent multi-directional scrolling, varied tiles and large bosses.  So the 464 is certainly capable of a graphically impressive, highly playable shooter without the need for 128k or floppy disks.
Turrican is not sooo great. GFX are nice, but don't have much diversion. There are no real background GFX, it's sprites are small and the code is slow (since it must be compact). Sorry, I know a lot of people like this game, but to me - after all i heard about it - it was just a let down.
However you could argue with BB4CPC.  ;D
BTW: big bosses.... Game over II ;-)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Carnivius

#112
Quote from: TFM/FS on 16:20, 09 July 12
Turrican is not sooo great. GFX are nice, but don't have much diversion. There are no real background GFX, it's sprites are small and the code is slow (since it must be compact).

You've got to be kidding.  Turrican II was a hell of an achievement on the CPC.  It plays great and looks great (though I would have rendered Turrican in blue rather than green but that's beside the point).  Small sprites?   Um, what?   Turrican himself is a decent size, you get to upgrade your gun to a satisfyingly large flamey thing of death, and various enemies like the mid-level boss on level 1 are among the largest graphics on the CPC.  And again I shall state it ran on a standard CPC 464.  And I loved it.  Even with the superior Amiga version in my collection I still find myself playing the CPC version from time to time.  It has it's own sense of 'character' in a way.

Anyways I reckon that'll be my last word on the forum for a week or so.  Gotta focus on the play and put CPC thoughts out of my mind so no distracting websites for me.  Have a good week.   :D
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

TotO

Turrican II on CPC is just a joke.
You Robocop GFx is better than this whole game.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Sykobee (Briggsy)

Quote from: TFM/FS on 15:56, 09 July 12
Usage of small tiles does limit RAM needed for GFX, but it does increase RAM needed for the matrix to tiles.
So how much RAM do you need?
- 16 KB for a matrix / map of the levels
- 16 KB for Tiles GFX data
- 16 KB for Sprites / enemy GFX data
- 16 KB for Sound (yes!)
- 16 KB or 32 KB for V-RAM (screens)
- 16 KB (or even more) for the Code managing that all.
Graphics people tend to forget that there must be also some code, and yes it does need space too ;-) And if you want just a bit of AI it will need really some RAM ;-) :-D

16KB is enough for many many levels if 4KB can hold 25 screens of action! And multi-load is an option, albeit an annoying one on tape, but hey, the 464 had a tape counter.
Carnivac barely has 4KB of unique tiles so far, so I expect a level's tiles can fit in 8KB. 16KB for sprites and enemies sounds reasonable however.
16KB for audio? Has any game on the 464 ever had 16KB for the music and effects?

A game would have level unique data, that I think should fit within 16KB (therefore a 6128 can have 5 levels cached). 4KB for level-specific tiles, 2KB for the map (12 screens is enough for Robocop - it's been a long time since I played it), 8KB for level-specific sprites/enemies, 2KB misc (special code routines for the level?).


So a 464 multi-load game could be configured roughly: 16KB code, 16KB shared data (4KB shared tiles, 8KB shared sprites, 4KB shared audio), 16KB level data, 16KB single-buffered screen display (screen split makes it more interesting in reality).

arnoldemu

indeed a lot of music and effects for most games is about 6kb.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

TFM

@Briggsy, sorry mate, you mix things up here. Your calculations are not reproducible.
25 screens in 4 KB? Well, if you work with underscan, no backgrounds and 8 bit variables. Then maybe. But that kind of game would be shitty!
Have you ever made a game?
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

TFM

Quote from: arnoldemu on 17:39, 09 July 12
indeed a lot of music and effects for most games is about 6kb.
Obviously, and everyone can hear that (because it doesn't take long :laugh: ). Now look at better games, using the 64 KB of the 6128 for samples (f.e. dragonninja or whatever). See, 16 KB is rather small - still. :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Sykobee (Briggsy)


Quote from: TFM/FS on 18:44, 09 July 12
@Briggsy, sorry mate, you mix things up here. Your calculations are not reproducible.
25 screens in 4 KB? Well, if you work with underscan, no backgrounds and 8 bit variables. Then maybe. But that kind of game would be shitty!
Have you ever made a game?


The RoboCop screen is 16x10 characters in size (yes, it's underscan). 1 byte/tile (remember, we've not even got 64 tiles yet) makes a screen 160 bytes in size. Ten screens is probably a decent size for this game, so that's 1600 bytes, but 20 would only by 3200 bytes (becomes a problem for single-load 464 games though).


Enemies? You can have special blocks that denote an enemy start and type, for example an enemy at a window its own block, a dude on the road is its own block. The game can interpret it how it likes when that block appears on screen.


Platforms? Solid tiles can be set with a single bit in the tile number, giving 128 background and 128 foreground blocks. You also have level-specific blocks and shared-across-all-level blocks, you'd probably use bit 7 for that, so the solid/non-solid could be a lower bit.

Sykobee (Briggsy)

Quote from: TFM/FS on 18:51, 09 July 12Obviously, and everyone can hear that (because it doesn't take long :laugh: ). Now look at better games, using the 64 KB of the 6128 for samples (f.e. dragonninja or whatever). See, 16 KB is rather small - still. :)
Yeah, so the 6128 version of the game can have extras like a very long music track and more graphics. But when we're talking about a 464, you want to have 16KB of music, 16KB of code, 24KB of screen data, leaving 8KB for all graphics. I don't think that's viable for a game running on a 464 that wants to have decent graphics. I think the audio is what can be trimmed down, not the graphics.

TotO

Quote from: Briggsy on 19:25, 09 July 12

The RoboCop screen is 16x10 characters in size (yes, it's underscan). 1 byte/tile (remember, we've not even got 64 tiles yet) makes a screen 160 bytes in size. Ten screens is probably a decent size for this game, so that's 1600 bytes, but 20 would only by 3200 bytes (becomes a problem for single-load 464 games though).
Except that is 32x16 char and 1 byte/tile only work if you don't excess 256 different tiles for all the map. (w/o any attribute like flip, ...)
So, a 20 screens map take 10K, w/o storing the 4K tiles...


"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Sykobee (Briggsy)

[quote 4kb hor=TotO link=topic=6865.msg47950#msg47950 date=1341860453]
Except that is 32x16 char and 1 byte/tile only work if you don't excess 256 different tiles for all the map. (w/o any attribute like flip, ...)
So, a 20 screens map take 10K, w/o storing the 4K tiles...
[/quote]
Erm, not with 8x16 tiles its not.
Can probably get the screens down to 40 bytes each, at the cost of reduced variety, and building larger tiles from 16 smaller tiles.

TFM

@Toto: Right. :) And if you work with 128 tiles (not much!), then you pretty much need 16 bit variables. 7 bits for the tile-number and 9 bit for any kind of special functions (like, moving tile, deadly tile, walkable tile, and and and). Very soon a lot of RAM is used.
Using 8 bit variables for tiles can provide 2 bits for special functions (this way only four!) and 6 bits for tile-number (only 64 here). And that's not much. Like a Speccy port.

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

TotO

Quote from: Briggsy on 20:12, 09 July 12
Erm, not with 8x16 tiles its not.
Sure, but this great mock-up don't use that.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

TFM

Quote from: Briggsy on 20:12, 09 July 12
Erm, not with 8x16 tiles its not.
If you use 8x16 tiles then evey tile is soooo big that you need huge-ass RAM for GFX _and_ you will need 1024 tiles ;-)
In my games I use a tile size of 16x16 pixel in MODE 0. One screen has 13(x) * 18(y) tiles. Every tile is represented by a 16 bit variable, which can turn every tile in any kind of special-field.
So one screen has 13 * 18 * bytes, right? That's 468. Now for one level let's say using 20 screens would be 9368 bytes. Now I handle it a bit more tricky and get 3 levels in one 16 KB block (including tables needed for special tiles functions.
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Powered by SMFPacks Menu Editor Mod