MartinB wrote:
Looking good as ever Col

( ...and great to see some flicker, Colin's human after all

)
Martin
Thanks.... I'm "Human'ish", but maybe not quite, lol - (those that have met me will probably agree !!).. I'm also a left hander (which makes me think a bit differently aparently !!)
This is pretty well the proof of the pudding now.... Its messy code though if you are picky.... It was a quick 'knock up' ...But it was to prove to myself that the thing can run on the bbc, with slimmed down graphics and a slower frame update rate....(the c64 version ran at 50hz with a lot more sprites 'in between' animation frames)
I now have to 'rewind' a lot..... and start a lot of the code again..... (or modify)
Why ?
1) Well the sprites look at the bitmap for colisions... this is no good... as they will 'avoid' the player sprite.... So.... I will have to have a 'virtual' level in memory, so that things will work properly... And it uses the vitual level for the collisions.... On the C64 the sprites are seperate from the screen memory, so it was easy to look at the data on the screen and react.... (Yes I could just define set paths for the enemies.. but I'd like them to react to the background 'ideally') - Lets see about this.... Easy opt out is to define start position and end position..(or length of travel). On the C64, you could have sprites trapped inside the stuff you collect, so the level evolves a little... and can get out of hand if you were not strategic.... !!! (Thats partly why the game plays a 'little different' )
2) The Sprite Displayer I'm using is quite slow.... It's bound to be though because its using C64 Style Sprite Data (Very memory efficient on the beeb !!!, but slow) - as discussed above, its doing LOADS of bitshifting, coloring, and masking..... I need to trim out the masking (will speed up a little) and tidy it up ( Most sprites will NOT be overlapping other sprites or level graphics - If I'm carefull with Level Design) - Exceptions will be the Player and the Crab.... However - I will still convert most of the graphics on the fly, as this method is very memory efficient to store LOTS of sprites (but slow to display)
3) Each enemy type NOW uses a chunk of 'very similar' code...(eg I have 3 enemies that move left, so 3 lots of code, 3 enemys move right, 3 lots of code, etc) so not memory efficient....(was quick to knock up though !!)... I think I used a 256 byte table on the c64... and each enemy and enemy state used 8 bytes (cant quite recall - it was 20 odd years ago) - and just had an enemy program that ran through the tables..... eg 1st 8 bytes... fish swimming to left... next 8 bytes fish turning ltor .. next 8 fish right... next 8 fish turning rtol.... each state included collision offsets, colision type, x and y speeds, animation tables to use and the next state to jump to (32 different states overall)... so say by mucking with the tables, you could make the fish swim to the right, turn, then turn into a crab, go left, pause, then turn into a fish swimming right again..... make sense ??? (not that you would want to do that of course) but thats how it worked.
I also need to work out an efficient way of storing the levels... Friend suggested looking at the "boulderdash common file format" BDCFF.... He has done a lot of work with the Rocks and Diamonds graphics and levels "Alan Bond"...and he is the guy who drew all these graphics for Aquarius too... however I think this may be a bum lead... (level would maybe be bigger ?)
http://www.elmerproductions.com/sp/pete ... index.htmlLooking at it in detail.... its similar to how my levels are stored anyway....(mine is simpler)
But I think I can make things pretty simple myself doing my own thing.......
Can't promise I'll get this finished... as I say its a proof...... But will try to work on it as time allows....
Cheers, Colin
PS....
Here is my proposed memory map..... (for a single load game if I stick to this)
So.. I've got 11K for all Game Code, Levels and Graphics.... Fair Enough....
Any comments appreciated please......
;########### MEMORY MAP #########
; 0400 > 07FF = Tile Graphics (1K) - C64 Format - Used for the Level Graphics Tiles
; 0800 > 0FFF = sprites (2K) - C64 Format -culled from 8k worth !!
; 1000 > 17FF = Level Data (2K) - ONLY 8 Levels in Native c64 format !!!
; 1800 > 2dFF = GAME CODE ( 5.5k )
; 2E00 > 2EFF = 'unpacked' Level to display (and we will use for colisions maybe ?? !!)
; 2F00 > 2FFF = WORKSPACE for SPRITEs ?? (Copy of old screen memory)
; 3000 > 7FFF = Screen Data (and 'Initial Data' Load Space prior to being copied/formatted etc)