Jump to content
Sign in to follow this  
vdub_bobby

M-4 to 2600 port - just goofin'

Recommended Posts

Ok, batari suggested I start a new thread for this if I want more people to notice and, since I suppose I do want more people to notice, if only for some more feedback, here it is:

 

In this thread there was some discussion about porting M-4 to the 2600 and I thought I'd give it a hack.

 

Here's the 2nd version of my M-4 port (1st version can be found in the thread linked above).

 

Features:

-wicked cool sound effects! :P

-two-player action!

-two color schemes (flip the B&W/Color switch to see)

 

Issues:

-It's not a game yet: no scoring, no timer

-The only collisions detected are between missiles and walls

-Colors are ugly.

-Scale is wildly off from original

-Sprites are so-so.

-Speeds are wildly off from original

 

Anyway, thoughts? I'm thinking that it might be fun to make a 1K li'l game out of this.

post-6060-1113519570_thumb.png

post-6060-1113519577_thumb.png

M4.zip

Edited by vdub_bobby

Share this post


Link to post
Share on other sites
Ok, batari suggested I start a new thread for this if I want more people to notice and, since I suppose I do want more people to notice, if only for some more feedback, here it is:

 

In this thread there was some discussion about porting M-4 to the 2600 and I thought I'd give it a hack.

 

Here's the 2nd version of my M-4 port (1st version can be found in the thread linked above).

 

Features:

-wicked cool sound effects!  :P

-two-player action!

-two color schemes (flip the B&W/Color switch to see)

 

Issues:

-It's not a game yet: no scoring, no timer

-The only collisions detected are between missiles and walls

-Colors are ugly.

-Scale is wildly off from original

-Sprites are so-so.

-Speeds are wildly off from original

 

Anyway, thoughts?  I'm thinking that it might be fun to make a 1K li'l game out of this.

837268[/snapback]

 

 

Cool! Cant wait to try it out:>

Share this post


Link to post
Share on other sites

Ok, rewrote kernel.

 

Changes:

-all sprites now have single-line resolution.

-this came at the cost of different colors for the two tanks. They're now the same color.

-adjusted sizes of sprites and distance between walls to match arcade better. Just from eyeballing it, this looks pretty close now.

 

And just for reference I'll attach a screenshot of the arcade original.

M4.zip

post-6060-1113596335_thumb.png

post-6060-1113596341_thumb.png

post-6060-1113596464_thumb.png

Edited by vdub_bobby

Share this post


Link to post
Share on other sites
What's the game play like, just shooting and ducking for cover?

838408[/snapback]

Yup, it's basically the ancestor of Combat. You can play it in MAME if you are so inclined.

 

You have 90 seconds to score as many points as you can. Every time you or the other tank gets hit the walls are rebuilt and the tanks are returned to the starting positions, while the timer stops for a moment. Then you resume playing.

1 point for hitting the wall

10 points for hitting the other tank

20 points for hitting the car

30 points for hitting the airplane

 

I think that's it; I can't figure out why the game apparently allows for scores into the thousands - I don't know how you could possibly score that high in 90 seconds. The best I've been able to do (through MAME, never played it in the arcade) is in the low one-hundreds. Maybe there's something I'm missing? Anybody know?

 

And it is rather annoying because getting two sets of 4 digits on one scanline is a bit of a trick.

Share this post


Link to post
Share on other sites
And it is rather annoying because getting two sets of 4 digits on one scanline is a bit of a trick.

838628[/snapback]

Only if you use 8 bits for each character. The digits on the real game just happen to be blocky and skinny, so you might be able to get away with 4 bits for each char. You'd probably have to put the GFX data in RAM, but you wouldn't need the two-byte pointer for each char either, so it isn't too wasteful.

 

If you did it this way, you might also have kernel time to get a timer in the center between the scores, though this would be tricky.

 

or just leave off the first zero :ponder:

Share this post


Link to post
Share on other sites
And it is rather annoying because getting two sets of 4 digits on one scanline is a bit of a trick.

838628[/snapback]

Only if you use 8 bits for each character. The digits on the real game just happen to be blocky and skinny, so you might be able to get away with 4 bits for each char. You'd probably have to put the GFX data in RAM, but you wouldn't need the two-byte pointer for each char either, so it isn't too wasteful.

 

If you did it this way, you might also have kernel time to get a timer in the center between the scores, though this would be tricky.

 

or just leave off the first zero :ponder:

838641[/snapback]

Yeah, I think I will just use a 4x5 char set for the score (and timer) and create the images during vertical blank and push them on the stack and then pull them back off during the kernel.

Share this post


Link to post
Share on other sites

If this gets made, you should use a text style label so that it appears like a 1st gen Atari title.

 

I know it's boring but it would be so much more authentic.

 

I like the use of the B&W/Color switch.

 

I would make it so that events related to P0 sound on the left channel and P1 on the right for that pseudo-stereo effect.

Share this post


Link to post
Share on other sites
I like the use of the B&W/Color switch.

Thanks. :)

I would make it so that events related to P0 sound on the left channel and P1 on the right for that pseudo-stereo effect.

843583[/snapback]

It's that way already. Well, it is if you mod your Atari to get stereo sound.

Share this post


Link to post
Share on other sites

Finally tried this on MAME...

 

heh. Interesting little game, the base mechanic has a little more to it than I expected, though giving points for clearing wall adds a strange incentive to just go blast blast blast...

 

Don't take this the wrong way (thinking that I'm an egomaniac or something) but the MAME version reminded me a lot of JoustPong/FlapPing's "Poorlords" variant, with the wall and all. Once you had the rest of the game down, it would probably be VERY easy to make a "FlapPing" variant...the only difference being in the control scheme...you'd need maybe 4 bytes for the 2 velocities, and then just a little bit of fixed point math...and again, it's not just a way of plugging FlapPing, I've found that adding "gravity" can add a satisfying complexity to otherwise simple ideas...the arcade M-4 is pretty cool because the tanks are big and slow relative to the bullets, and this would be another option. If you didn't like the idea of "flap", you could possibly make it two jetpack wearing guys, the difference in mechanic being you can thrust for as long as you want, vs the more distinct "flap"

 

Just thinking outloud. If you want to keep it closer to the original I understand...maybe it could be a "hack", especially easy if you release the source.

Share this post


Link to post
Share on other sites
Finally tried this on MAME...

 

heh.  Interesting little game, the base mechanic has a little more to it than I expected,  though giving points for clearing wall adds a strange incentive to just go blast blast blast...

 

Don't take this the wrong way (thinking that I'm an egomaniac or something) but the MAME version reminded me a lot of JoustPong/FlapPing's "Poorlords" variant, with the wall and all.  Once you had the rest of the game down, it would probably be VERY easy to make a "FlapPing" variant...the only difference being in the control scheme...you'd need maybe 4 bytes for the 2 velocities, and then just a little bit of fixed point math...and again, it's not just a way of plugging FlapPing, I've found that adding "gravity" can add a satisfying complexity to otherwise simple ideas...the arcade M-4 is pretty cool because the tanks are big and slow relative to the bullets, and this would be another option. If you didn't like the idea of "flap", you could possibly make it two jetpack wearing guys, the difference in mechanic being you can thrust for as long as you want, vs the more distinct "flap"

 

Just thinking outloud. If you want to keep it closer to the original I understand...maybe it could be a "hack", especially easy if you release the source.

844248[/snapback]

 

I kind of like the jetpack idea. That could be pretty cool. Thanks for the thoughts :)

Share this post


Link to post
Share on other sites

Just thinking outloud. If you want to keep it closer to the original I understand...maybe it could be a "hack", especially easy if you release the source.

I kind of like the jetpack idea. That could be pretty cool. Thanks for the thoughts :)

Glad you could make it through my rambling writing...

 

Like I said, the gravity mechanic has a lot of potential, whether in a 2D game like Joust or Thrust or when the control is 1D -- JoustPong for instance, or even the game "SF Cave". (I think Thomas did a 1K version of that w/ a helicopter)

 

It's not too hard to implement, though experience has shown me it's better to switched to "fixed point math" on the atari for the positions and speeds....one byte for the "visible" integer part, one byte as a nonvisible fraction. If you're interested I'd be happy to clarify and show you the relevant bits of the FlapPing code.

Share this post


Link to post
Share on other sites
Glad you could make it through my rambling writing...

 

Like I said, the gravity mechanic has a lot of potential, whether in a 2D game like Joust or Thrust or when the control is 1D -- JoustPong for instance, or even the game "SF Cave".  (I think Thomas did a 1K version of that w/ a helicopter)

 

It's not too hard to implement, though experience has shown me it's better to switched to "fixed point math" on the atari for the positions and speeds....one byte for the "visible" integer part, one byte as a nonvisible fraction.  If you're interested I'd be happy to clarify and show you the relevant bits of the FlapPing code.

845366[/snapback]

I think I know what you mean; I've used fractional positioning in a couple of the (uncompleted) games I have written. Go Fish!, for example, uses fractional positioning (and fractional velocity? I can't remember :)) for the player-controlled fishie.

 

Actually, I don't even know how I would implement floating-point math in assembly - sounds complicated!

 

All that said, I wouldn't say no to snippets of FlapPing code! There's always more to learn. ;)

Share this post


Link to post
Share on other sites

Hmmmm...been a while.

 

Anyway, now that Go Fish! is (mostly) done, I plan to bang this out.

 

So, here's a new version with all collisions detected! Enjoy. :)

M4.zip

Share this post


Link to post
Share on other sites

pretty cool man...but it's such a work in progress I dont know what we should comment on, since obviously a lot of the actual gameplay hasn't jelled yet. Still with the possible exception of AI it looks like you've got most of the "difficult" kernal-y parts out of the way and all that's left is the general logic...much less of a challenge, for the most part.

Share this post


Link to post
Share on other sites
pretty cool man...but it's such a work in progress I dont know what we should comment on, since obviously a lot of the actual gameplay hasn't jelled yet.  Still with the possible exception of AI it looks like you've got most of the "difficult" kernal-y parts out of the way and all that's left is the general logic...much less of a challenge, for the most part.

874289[/snapback]

Well, probably the most difficult part will be getting it into 1K. :ponder:

:lol:

 

But yeah, pretty rough still.

Share this post


Link to post
Share on other sites

Aargh, 1K. I never think of that as that useful of a goal... sometimes I think it's an excuse to not sweat bells and/or whistles...

Share this post


Link to post
Share on other sites
Aargh, 1K.  I never think of that as that useful of a goal... sometimes I think it's an excuse to not sweat bells and/or whistles...

874654[/snapback]

Useful, schmuseful - it's fun!

Share this post


Link to post
Share on other sites
Aargh, 1K.  I never think of that as that useful of a goal... sometimes I think it's an excuse to not sweat bells and/or whistles...

874654[/snapback]

Aargh is right. I thought that at first, with my first game that fit comfortably into 1k, but my second game was amazingly hard to make 1k. I rewrote nearly everything about 10 times, sometimes working for an hour just to save a couple of bytes, creating the most obfuscated code I've ever written, all so I could add a single feature or fix a bug. I would have spent less time had the goal been 4k.

Share this post


Link to post
Share on other sites

1K could be an especially hard target for this as right now it is over 2K! :ponder:

 

But anyway, new version.

 

Changes:

-new tank sprite (the old one was so ugly it hurt me deep inside)

-you now have ten shots and then you have to reload. Reload by pressing away from your opponent and the fire button simultaneously. If someone has a better scheme for this, let me know, but it's what I came up with as a substitute for the 2nd button on the arcade machine.

 

Still no score...but enjoy! Or don't!

M4.zip

Share this post


Link to post
Share on other sites
1K could be an especially hard target for this as right now it is over 2K! :ponder:

 

But anyway, new version.

 

Changes:

-new tank sprite (the old one was so ugly it hurt me deep inside)

-you now have ten shots and then you have to reload.  Reload by pressing away from your opponent and the fire button simultaneously.  If someone has a better scheme for this, let me know, but it's what I came up with as a substitute for the 2nd button on the arcade machine.

 

Still no score...but enjoy!  Or don't!

875047[/snapback]

Not necessarily, as when putting this into the 2005 Minigame Multicart, I noticed a lot of unused space from aligning code and data on page boundaries. I think that careful organization and optimization of code could still bring this down to 1k as is.

Share this post


Link to post
Share on other sites

Alrighty. Here is the latest version M-4 port to the 2600:

 

1- or 2-player, with everything working.

 

All comments are welcomed! I am especially interested in hearing about any bugs, first of all, and comments/suggestions about the graphics/sound are also welcome. And anything else.

 

Enjoy!

 

I still have to do a TON of optimizing to try to get it down to 1K (which is a pipe dream, I think). But I have been working fast to get it working first.

 

EDIT: I almost forgot - I'm not too fond of the color version, so I made the default B&W - so set the switch to B-W to get color, and set to COLOR to get the B&W version. Backwards, I know. :roll:

m4.bin

post-6060-1122911375_thumb.png

post-6060-1122911381_thumb.png

post-6060-1122911387_thumb.png

Edited by vdub_bobby

Share this post


Link to post
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.

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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...