Jump to content
IGNORED

Demo of my next game for you Colecovision enthusiasts


AnalogKid

Recommended Posts

I hope you guys enjoy this one, it has always been one of my favorite early 80's games

 

Colecovision Missile Command demo
 

Unfortunately the blueMSX video capture with sound is still a little problematic on my PC, I'll figure it out eventually.  The game came alive when I added the air raid siren, the explosions, the satellite/bomber sound, and that sound during the post-round counting.

 

There's still a lot of little things to be done, like updating the missile batteries as missiles are fired,  gradually incrementing the missile speed, changing the ground and sky colors during the later rounds, as the drugs kick in, stuff like that.  Still though, this is another good demo of how powerful the console is.  There's (unfortunately) a not insignificant amount floating-point math going on there to target and move the players missiles.  The Atari ports avoid that by just drawing lines but I don't have that luxury.  On the plus side, it's fortunate that the clouds are supposed to be blinky ?

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

I am more interested in the code to draw pinpoint lines within the 8x8 tiles system.

 

I am sure given enough time I could figure it out but if there is an award winning formula I would love for someone to share it.

 

There should be a thread with nothing but Z80 formula's to show Plotting lines, angles, circles, BCD, Jumping with Arc's ect...

With examples

Edited by Itchy Scratchy
Link to comment
Share on other sites

3 hours ago, Itchy Scratchy said:

I am more interested in the code to draw pinpoint lines within the 8x8 tiles system.

 

I am sure given enough time I could figure it out but if there is an award winning formula I would love for someone to share it.

 

There should be a thread with nothing but Z80 formula's to show Plotting lines, angles, circles, BCD, Jumping with Arc's ect...

With examples

you have to fill the NAME Tables displayed on screen with consecutive values from 1 to 255.

 

then you have just to modify the Pattern table (and optionnaly Color Table)  to make your point.

 

you can use that formulas to locate address in VRAM for the point.

 

/// maps a block in the screen 2 model
#define map_block(x,y)    ((((y) & ~(7)) << 5) + ((x) & ~(7)))

/// maps a pixel coordinate to a vram address
#define map_pixel(x,y)    (map_block(x,y) + ((y) & 7))

 

of course you have to add the Adress where you located your Pattern Table.

 

and then you have to perform some  OR operation according to x Modulo 8  .

 

Edited by youki
Link to comment
Share on other sites

2 hours ago, youki said:

you have to fill the NAME Tables displayed on screen with consecutive values from 1 to 255.

 

then you have just to modify the Pattern table (and optionnaly Color Table)  to make your point.

 

you can use that formulas to locate address in VRAM for the point.

 

/// maps a block in the screen 2 model
#define map_block(x,y)    ((((y) & ~(7)) << 5) + ((x) & ~(7)))

/// maps a pixel coordinate to a vram address
#define map_pixel(x,y)    (map_block(x,y) + ((y) & 7))

 

of course you have to add the Adress where you located your Pattern Table.

 

and then you have to perform some  OR operation according to x Modulo 8  .

 

in Z80 English please.

Link to comment
Share on other sites

I had a feeling I'd raise some eyebrows with the pixel by pixel line drawing ?  I puzzled over this for a while and was almost convinced that Missile Command was impossible because I really really wanted to have totally independent missiles that could move at different paces at different angles and split off into MIRVs etc.   So my solution, and there may be plenty of better ones, was to create characters for all 8 animation states per character cell, for several different angles.  There's a lot of overlap between angles so it's not actually an insane number of characters.  After 8 animation states, I shift down one on the Y and depending on the angle, adjust the X.  Using that I created ten angles, though I may add two additional more vertical ones.   So then how do the missiles seamlessly cross paths, well at certain intervals, depending on the angle, the Y increment and the X animation cycle line up so that a missile with an opposing angle can slide past.  This means the logic to place the missiles initially has to be very precise rather than entirely random, which is a pain in the behind, believe me.  Also, the placement logic can time the missile appearance just right so that one that would otherwise trample the path of another fails to do so because the first hits the ground and the track is erased.  

I do like the other solution proposed, where you modify the character on the fly and potentially bit-or it with any other missile characters you cross paths with, but I'm pretty certain that's beyond my ability to get working correctly.  ?  There's also the missile track cleanup to account for where you would have to non-destructively xor the missile track being removed and I'm sure I'd never get that working.

Now next big pain is to handle the updating of the missile bases so you see them being exhausted of missiles, as the bases span multiple characters.  Once that's done, then, on to tackling changing the color table data on the fly for the ground changing to green, red, etc. 

Link to comment
Share on other sites

Oh yeah almost forgot, I did try testing with the roller controller, but after rebuilding with the lib4ksa versions, the game starts to run fine and then explodes into psychedelic madness, so I shelved that for the time being.  It may have been related to another strange behavior I have noticed with the SDCC generated code that I have since addressed.  If my structs that I use for my collections of screen objects have too many fields, then instability starts to appear.  It's like the internal Z80 pointer arithmetic has trouble with too many instances of structs with too many fields.  I would have suspected alignment played a part but it has happened for structs with field of only unsigned chars.  Once I backed down the number of fields, the instability immediately disappeared.  

I did successfully play around with enabling the steering wheel for a racing game I have in the wings as well.  However it seemed like ColEmm's translation of mouse movement to the spinners was a little shaky so I'm not sure if it's my polling of the input or the values being provided for the input.  My goal was to translate the paddle nature of the wheel to something more akin to actual steering where you'd have to recenter to stop the X motion plus I wanted more granular X motion.  I got frustrated by the inconsistency from the values the emulator was giving me so that's on the shelf for now too.  The joystick steering however does work nicely.  

Link to comment
Share on other sites

1 hour ago, doubledown said:

Without Roller Controller support, in "Roller" mode, any ColecoVision Missile Command-esque game, is quite simply another missed opportunity.  

I completely agree.  I still would like to add roller support to my Asteroids port as well.  Roller support in the Star Wars port might have been pretty cool too.   I'd love to port the original Atari Football, the table style coin-op game with two trackballs that has the X's and O's representation of the players.  Writing the code to have the players act out the selected play would actually be pretty fun.  

Link to comment
Share on other sites

I wouldn't bother with Roller Controller support for Asteroids, as its "arcade inaccurate"...and serves no point.  Asteroids is properly played with an all button controller, as Atari designed it:

 

G6ZghO.png

 

To my knowledge the ColecoVision can only read 1 Roller Controller at a time (at least in "Roller" mode), as Port 1 reads 1 axis (I believe X), and Port 2 reads the 2nd axis (I believe Y).  It would only be possible as a 1 player against the computer game/scenario.  

Link to comment
Share on other sites

  • 2 weeks later...

Here's the beta demo for those that would like to try it out.  It still needs a lot of polishing but it's pretty far along.  The next step is to enable the roller controller.  With the joystick you press both fire buttons together to fire from the center site.

 

https://www.dropbox.com/s/93zz25pte9vcjqc/missilecommand.rom?dl=1

 

  • Like 5
Link to comment
Share on other sites

2 hours ago, AnalogKid said:

Here's the beta demo for those that would like to try it out.  It still needs a lot of polishing but it's pretty far along.  The next step is to enable the roller controller.  With the joystick you press both fire buttons together to fire from the center site.

 

https://www.dropbox.com/s/93zz25pte9vcjqc/missilecommand.rom?dl=1

 

Cool!

 

Feedback -- The idea of using left+right to be center is super cool for the original controller, but is awkward for keyboards/game controllers/mobile (ie, emulation). I don't know that I have a good alternate suggestion for that, other than implementing/allowing an option for a single fire button that always "picks the correct silo" (ie, the one that is closest that still has ABMs left).

 

 

Link to comment
Share on other sites

6 hours ago, AnalogKid said:

Here's the beta demo for those that would like to try it out.  It still needs a lot of polishing but it's pretty far along.  The next step is to enable the roller controller.  With the joystick you press both fire buttons together to fire from the center site.

 

https://www.dropbox.com/s/93zz25pte9vcjqc/missilecommand.rom?dl=1

 

This game is excellent!!  i love it!

 

Playing the rom , at one point the game freeze.  I don't know exactly what i did.  But it freeze when i just shooted the plane and a missile at the same time.

 

The screen freeze in the state below:

 

 

missile_strike.PNG

Link to comment
Share on other sites

Personally, I would use the three top keyboard buttons to pick where to shoot from.

1  -  2  -  3

 

Which would also be great for custom controllers.

 

Then add Super action Controller support.

Other than that, some excellent work.

 

How simple it would have been to port these games back in the day and yet it only takes 30 years later.

Edited by Itchy Scratchy
  • Like 1
Link to comment
Share on other sites

2 hours ago, Itchy Scratchy said:

Personally, I would use the three top keyboard buttons to pick where to shoot from.

1  -  2  -  3

 

Which would also be great for custom controllers.

 

Then add Super action Controller support.

Other than that, some excellent work.

 

How simple it would have been to port these games back in the day and yet it only takes 30 years later.

That's a great idea, why not support both fire buttons and the keypad and let the player figure out which they like better.  It would also open up support for people playing on emulators on mobile devices.  

  • Like 2
Link to comment
Share on other sites

2 hours ago, AnalogKid said:

That's a great idea, why not support both fire buttons and the keypad and let the player figure out which they like better.  It would also open up support for people playing on emulators on mobile devices.  

I think all CV and Adam emulators support the Super Action Controllers 3rd and 4th fire buttons as well as numerous custom gamepad and Arcade style controllers that are available to play on actual hardware. Adding support for the 3rd fire button is a no brainer as long as you have the room within the 32K limit. A good example would be how Coleco did things with Spy Hunter and Star Trek depending on which controller (standard or SAC) the gamer was going to use.

Edited by NIAD
Link to comment
Share on other sites

2 minutes ago, NIAD said:

I think all CV and Adam emulators support the Super Action Controllers 3rd and 4th fire buttons as well as numerous custom gamepad and Arcade style controllers that are available to play on actual hardware. Adding support for the 3rd fire button is a no brainer as long as you have the room within the 32K limit. A good example would be how Coleco did things with Spy Hunter and Star Trek depending on which controller (standard or SAC) the gamer was going to use.

Right, and let's not forget that the Roller Controller maps the red buttons to the fire buttons of both hand controllers, so that's another thing to consider.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...