Jump to content
IGNORED

Arkanoid clone feeler...all comments welcome.


vdub_bobby

Recommended Posts

Ok, so I've slapped together a sorta-arkanoid clone for the 2600. I've attached a demo and I'm looking for comments.

 

A few things:

It uses the paddle to control the, uh, paddle. So use the -)PC command line switch in z26 to use the arrow keys to control the paddle (which sucks) plus the -m0 switch to use the mouse to control the paddle (which sucks more). :D

There is no scoring, only one level, and you don't ever lose balls. They just bounce off the bottom. It's a demo.

 

There are also a few bugs; the ones I know about are:

The paddle-to-ball interaction is a little buggy, especially with a narrow/wide paddle,

The enemies sometimes get stuck on the bricks, and

Resetting the level (once it is cleared) takes too much time, so the screen will either roll or jitter slightly.

 

Here's what I want comments on:

 

1. Find any other bugs?

 

2. Is there interest in a completed version? Should I push this through to completion?

 

3. Enemies. Ideas for AI? Right now it's doing generally what I observed in the A8 Arkanoid port. Anybody have better ideas? The code right now is set up to handle two (flickering) enemies on screen at the same time. What do you think of that?

 

4. Balls. There can be two balls onscreen at a time, or one ball and a bullet fired by the paddle. Good/bad?

 

5. Bricks. The level that's in there shows the limitations, er, "features" of what I've got so far. Specifically, the brick area is 16 wide x 15 deep and is composed of two kinds of bricks: breakable and unbreakable.

 

Basically, does what I've got so far interest anybody? Should I push on, or set this aside in favor of something else? And feel free to comment/suggest/complain about anything else too.

 

Thanks!

 

(Yes, the binary is named "bobanoid" but that's just me being silly/stupid. If this is completed that will definitely not be the final name.)

bobanoid.zip

Edited by vdub_bobby
Link to comment
Share on other sites

Ok, so I've slapped together a sorta-arkanoid clone for the 2600.  I've attached a demo and I'm looking for comments ...

891065[/snapback]

 

This looks great - I definitely think you should push this towards a full game (perhaps a 4K minigame). A few minor comments:

  • Can you make the ball sprites a bit bigger?
  • How about doing intelligent flicker on the invaders so they only flicker when occupying the same vertical space? (I haven't done this myself yet, but there is some good information on the stella list).
  • The flickering left/right border is a bit annoying (I am very sensitive to flicker) - can you just fill PF0 to make this solid?
  • You could make the invaders move left/down/right/down like in space invaders, or swoop down like galaxian to give some variety?

Chris

Link to comment
Share on other sites

Ok, so I've slapped together a sorta-arkanoid clone for the 2600.  I've attached a demo and I'm looking for comments ...

891065[/snapback]

 

This looks great - I definitely think you should push this towards a full game (perhaps a 4K minigame).

Thanks! And 4K is a minigame? That's how big Pitfall! is! ...

Can you make the ball sprites a bit bigger?

Ehhh...maybe. I've thought about that. Might be tough to fit it in the kernel - and that would probably be the easy part. But if enough people want 'em bigger I'll look into it.

How about doing intelligent flicker on the invaders so they only flicker when occupying the same vertical space? (I haven't done this myself yet, but there is some good information on the stella list).

The problem is that it is hard to draw an asymmetrical PF while repositioning sprites. Though it could possibly be done with a blank line between brick rows.

The flickering left/right border is a bit annoying (I am very sensitive to flicker) - can you just fill PF0 to make this solid?

If I use PF0 the colors will match the brick rows - it looks goofy. I've toyed with some other ideas but I'm really not sure if there is a good solution. On the other hand, flicker doesn't look so bad on real hardware! :D (It looks awful in emulation.)

You could make the invaders move left/down/right/down like in space invaders, or swoop down like galaxian to give some variety?

Those are both good ideas; thanks.

 

And thanks!

Link to comment
Share on other sites

Thanks!  And 4K is a minigame? That's how big Pitfall! is!  ...

 

I take your point - I was thinking purely of the upcoming competition.

 

Can you make the ball sprites a bit bigger?

Ehhh...maybe. I've thought about that. Might be tough to fit it in the kernel - and that would probably be the easy part. But if enough people want 'em bigger I'll look into it.

 

If you are using a 2LK you can make the sprite 4 lines high by doing something like:

tya
lsr
cmp YBALL
php
pla

However, this will require 4 extra cycles, and it will make the balls look a bit chunky.

 

How about doing intelligent flicker on the invaders so they only flicker when occupying the same vertical space? (I haven't done this myself yet, but there is some good information on the stella list).

The problem is that it is hard to draw an asymmetrical PF while repositioning sprites. Though it could possibly be done with a blank line between brick rows.

 

I don't think a line between rows would spoil things too much. However, as you say below the flicker looks much worse in the emulator. If the sprites were in formation (space invader style) then you could use doubling/tripling to avoid the flicker, but then that would affect the missile sprites too ...

 

The flickering left/right border is a bit annoying (I am very sensitive to flicker) - can you just fill PF0 to make this solid?

If I use PF0 the colors will match the brick rows - it looks goofy. I've toyed with some other ideas but I'm really not sure if there is a good solution. On the other hand, flicker doesn't look so bad on real hardware! :D (It looks awful in emulation.)

 

Good point - you would have to be very tight with your timings to swap the colours at the border. An alternative would be to stretch a missile or ball sprite to 8 clocks and then wrap it tround the screen edge, but this would lose you a sprite, or would require flicker again ...

 

Anyway, I can't wait to see how this turns out - the 2600 homebrew scene is certainly going strong at the moment!

 

Chris

Link to comment
Share on other sites

Bob

 

This is awesome! :)

 

3. Enemies. Ideas for AI? Right now it's doing generally what I observed in the A8 Arkanoid port. Anybody have better ideas? The code right now is set up to handle two (flickering) enemies on screen at the same time. What do you think of that?

 

[RPD] - It looks pretty close to what the arcade game does - once the two 'floaters' get past the bricks, they seem to gravitate close to the ball, and they are able to go down past the player (and get destroyed by the player if he touches them). Although if it's a limitation that they can't share the same scan line as the player, what you have now is fine.

 

4. Balls. There can be two balls onscreen at a time, or one ball and a bullet fired by the paddle. Good/bad?

 

[RPD] - With the 'Disperse' pill there can be 3 balls on the screen at once (and the bullets if the player grabs a 'Laser' pill before losing any of the balls) Is this possible?

 

5. Bricks. The level that's in there shows the limitations, er, "features" of what I've got so far. Specifically, the brick area is 16 wide x 15 deep and is composed of two kinds of bricks: breakable and unbreakable.

 

[RPD] - I think that is workable - the levels can be made an 'approximation' of the arcade (Atari did that frequently anyway, no?)

 

I don't know how close you are to knowing how Arkanoid plays, but back in the day I was able to get to the end every time I played it. The only reason I mention that is to let you know that if I can help with the detail aspect of the game rules in any way, please by all means let me know.

 

I am dying to see this game on a 2600! (and 7800) :ponder:

 

Bob

Edited by PacManPlus
Link to comment
Share on other sites

Hi there!

 

There's a bug in the ball movement. Currently it moves like this:

 

......**
.....**.
....**..
...**...
..**....
.**.....
**......

 

when it should actually move like this:

......*.
.....*..
....*...
...*....
..*.....
.*......
*.......

 

Basically, at one X location it should only have one Y position (for angles

 

Greetings,

Manuel

Link to comment
Share on other sites

If you are using a 2LK you can make the sprite 4 lines high by doing something like:

tya
lsr
cmp YBALL
php
pla

However, this will require 4 extra cycles, and it will make the balls look a bit chunky.

I just double-checked my kernel and I don't have the extra cycles to spare when I am also drawing the bricks. At least as the kernel is currently written :)

I don't think a line between rows would spoil things too much.  However, as you say below the flicker looks much worse in the emulator.  If the sprites were in formation (space invader style) then you could use doubling/tripling to avoid the flicker, but then that would affect the missile sprites too ...

The more I think about this, the more I think that eliminating flicker completely (like Dark Cavern and Lock 'N' Chase) on the enemies might be the way to go. Maybe.

Good point - you would have to be very tight with your timings to swap the colours at the border.  An alternative would be to stretch a missile or ball sprite to 8 clocks and then wrap it tround the screen edge, but this would lose you a sprite, or would require flicker again ...

Problems with that: L and R borders are 16 pixels each - can't stretch the missile wide enough to wrap. I think the positioning would work to double it (and wrap) but then the enemies/paddle would also be doubled. I agree, though: the flicker is annoying.

This is awesome!

Thanks!

It looks pretty close to what the arcade game does - once the two 'floaters' get past the bricks, they seem to gravitate close to the ball, and they are able to go down past the player (and get destroyed by the player if he touches them). Although if it's a limitation that they can't share the same scan line as the player, what you have now is fine.

Cool. By the way, on what platform was the original Arkanoid written? Was the original an arcade game?

With the 'Disperse' pill there can be 3 balls on the screen at once (and the bullets if the player grabs a 'Laser' pill before losing any of the balls) Is this possible?

Well...maybe. With 30 Hz flicker, I could give you three balls and one bullet all onscreen at once. But flickering something small and quickly-moving is a little hard on the user, I think. Plus, I might not have the RAM to track all those objects. Plus, I also might not have the time to calculate new positions and deal with collisions for four+ objects simultaneously. If I could figure out a different way to display the L/R border, I could also get another ball/bullet onscreen with no flicker, but I think 2 or maybe maybe 3 is the max that is feasible.

I think that is workable - the levels can be made an 'approximation' of the arcade (Atari did that frequently anyway, no?)

 

I don't know how close you are to knowing how Arkanoid plays, but back in the day I was able to get to the end every time I played it. The only reason I mention that is to let you know that if I can help with the detail aspect of the game rules in any way, please by all means let me know.

I'll keep that in mind - I have played Arkanoid a little, but not enough to really know the ins and outs - so expert guidance is appreciated. :)

Link to comment
Share on other sites

Hi there!

 

There's a bug in the ball movement. Currently it moves like this:

 

[snip]

 

Basically, at one X location it should only have one Y position (for angles <=45°), else it looks jittery...

 

Greetings,

Manuel

891132[/snapback]

Thanks. I hadn't noticed that - and I think I know how to fix it...maybe. Or at least I know the first place to try fixing it. :lol:

 

/offtopic

 

Sometimes, working on a game is like working on my VW bug: something goes wrong and I don't know why, so I start fixing things, and replacing things until whatever wasn't working starts working. :)

 

Hmmm...Go Fish! is making a funny noise, and I have no idea why. Well, I haven't replaced the oil filter in a while. That didn't do it. Well, I haven't replaced the air filter in a while. That sounds a little better. New sparkplugs, change oil, adjust gaps, check timing, clean carbeurator, all of sudden: bam! It works. What fixed it? I dunno. Sometimes it's just a lot of little things.

 

/end pointless ramble

Link to comment
Share on other sites

I'm a huge Arkanoid fan and I've told many people that it would be my first project if I was going to write a 2600 game. So I'm glad to see that someone has taken the initiative to actually start a port, and I like what I see so far! I need to load it into my Krokodile Cart so I can try it on a real 2600 with paddle controllers. Some comments:

 

- If you can make the balls larger, that would help, since they are larger in Arkanoid.

- If you can ultimately make the pills roll, that would be great. :)

- As has already been mentioned, one of the pills causes the ball to split into three, so it would be nice if you can get that (even at the expense of flicker). I think there's also a pill that causes a million balls to explode on the scene, although I'm not expecting you to implement that.

- The paddle is pretty narrow vertically--it's a fair bit thicker in the arcade (and has some detail to it, not sure if you'll be able to make it any fancier).

- If you can get the little tunes in from the game (such as when you start a new game, when you start a new ball, and when the game is over) that would add some nice flair. I know that's more of a polish issue for when the game is further along, but I figured I'd mention it now. :)

- Manuel already mentioned the problem with the diagonal ball movement, but I'll echo that as something that would be nice to see fixed.

 

Again, great job so far, and I wholeheartedly encourage you to continue! :D

 

..Al

Link to comment
Share on other sites

Hey, I like it. I was almost considering writing a clone myself, but you beat me to it I guess...

 

Anyway, it would be nice if there was some way to tell the unbreakable bricks from the others. I think someone once suggested making special bricks flicker, with the normal ones being solid... though I forget whose game they were talking about at the time.

 

Also, with the borders, could you just remove them? :) Or if they're needed for collisions, make them black? Or um, maybe only display them right when the ball hits and then have them fade away? That might look cool...

 

I do realize the irony in my suggesting that you add flicker in one place and take it out from another. :ponder:

Link to comment
Share on other sites

I just double-checked my kernel and I don't have the extra cycles to spare when I am also drawing the bricks.  At least as the kernel is currently written :)

 

Any chance of posting the kernel code? The extra eyeballs around here might spot something, though I can't guarantee it!

 

The more I think about this, the more I think that eliminating flicker completely (like Dark Cavern and Lock 'N' Chase) on the enemies might be the way to go.  Maybe.

 

Sounds good - I'm not a fan of flicker myself unless it is the interlaced kind used to get extra colours. From what I can see, Dark Cavern makes sure that the missile sprites never overlap vertically?

On the other hand - I think you could get 3 ball sprites on screen comfortably by using a single ball/missile sprite and intelligent flicker, though it might be annoying of the ball stated flickering just as you were about to hit it!

 

There are lots of possible schemes, but the best that I could come up with was something like:

 

Player 1 - Invader1 (Either intelligent flicker between brick rows, or use missile 2 For Invader 2)

Missile1 - Ball (Intelligent flicker between brick rows for multiple balls)

Player 2 - Powerup Pill

Missile 2- Invader 2 (or swap with Powerup)

Ball - Bat

 

OK, I will stop now or it is going to be called "BobAnnoyed", but I can see this is going to be a great game!

 

Chris

Edited by cd-w
Link to comment
Share on other sites

Arkanoid was an arcade game (Taito / Romstar - 1986) :)

891277[/snapback]

Thanks. I'll have to download the ro- er, I mean, go find an arcade and do some research. :D

I'm a huge Arkanoid fan and I've told many people that it would be my first project if I was going to write a 2600 game. So I'm glad to see that someone has taken the initiative to actually start a port, and I like what I see so far!
Thanks.
- If you can make the balls larger, that would help, since they are larger in Arkanoid.
This seems to be a common theme :)
- If you can ultimately make the pills roll, that would be great.
This is easy; I probably can do this.
- As has already been mentioned, one of the pills causes the ball to split into three, so it would be nice if you can get that (even at the expense of flicker). I think there's also a pill that causes a million balls to explode on the scene, although I'm not expecting you to implement that.
If I can come up with a different way to show the side boundaries then I can use the other missile as another ball - which would probably be a good idea. I'm not sure if there is enough time to calculate positions for 3 balls, but I'll see.
- The paddle is pretty narrow vertically--it's a fair bit thicker in the arcade (and has some detail to it, not sure if you'll be able to make it any fancier).
Making the paddle thicker is definitely a possibility; adding some detail might be a little tougher.
- If you can get the little tunes in from the game (such as when you start a new game, when you start a new ball, and when the game is over) that would add some nice flair. I know that's more of a polish issue for when the game is further along, but I figured I'd mention it now.

- Manuel already mentioned the problem with the diagonal ball movement, but I'll echo that as something that would be nice to see fixed.

Music is a high priority (though maybe not in 4K - we'll see); I think I have fixed the jittery ball movement.
Again, great job so far, and I wholeheartedly encourage you to continue!

Thanks for the encouragement!

Anyway, it would be nice if there was some way to tell the unbreakable bricks from the others. I think someone once suggested making special bricks flicker, with the normal ones being solid... though I forget whose game they were talking about at the time.

 

Also, with the borders, could you just remove them? Or if they're needed for collisions, make them black? Or um, maybe only display them right when the ball hits and then have them fade away? That might look cool...

I dunno about flickering the bricks. I think it would take too much memory. I like the idea of black borders that appear when something hits them.

Sounds good - I'm not a fan of flicker myself unless it is the interlaced kind used to get extra colours. From what I can see, Dark Cavern makes sure that the missile sprites never overlap vertically?

On the other hand - I think you could get 3 ball sprites on screen comfortably by using a single ball/missile sprite and intelligent flicker, though it might be annoying of the ball stated flickering just as you were about to hit it!

 

There are lots of possible schemes, but the best that I could come up with was something like:

 

Player 1 - Invader1 (Either intelligent flicker between brick rows, or use missile 2 For Invader 2)

Missile1 - Ball (Intelligent flicker between brick rows for multiple balls)

Player 2 - Powerup Pill

Missile 2- Invader 2 (or swap with Powerup)

Ball - Bat

 

OK, I will stop now or it is going to be called "BobAnnoyed", but I can see this is going to be a great game!

I'd really like to avoid flickering the balls if at all possible so that the player doesn't ever feel cheated by the game (i.e., he misjudged where a ball was going to go because of flicker).

 

What is looking like the best solution to me right now is:

2 (or 3) balls using the 1-dimensional objects (missiles/ball) with no flicker

2 enemies either: with 30 Hz flicker and no blank reposition lines or without flicker with blank reposition lines and restrictions on enemy positions.

 

Hmmm...looks like I'll have to rewrite the kernel. :) Back to the drawing board!

Link to comment
Share on other sites

'D' - Disperse - Splits 1 ball into three (note that you do not get another pill until you are back down to 1 ball)

'P' - Bonus Player! - gives you an additional turn (these are pretty rare)

'B' - Board Pass - opens uo the bottom right side of the wall and if the player passes through it they finish the level and receive 10000 points.

'E' - Expand - makes the paddle larger (note that the paddle goes back down to normal size when you catch another pill)

'L' - Laser - Gives the player missiles to shoot (actually two shots, side by side)

'C' - Catches the ball when it hits the player's paddle. Gets released by the fire button, of after 5 seconds

'S' - Slow - slows down the ball to the previous speed (there are three or four speeds that the ball can travel, each getting faster as the board progresses).

 

:)

 

Arkanoid 2 (Revenge of DOH) has other pills (one that splits into about 30 balls, one that changes into a black ball that travels straight through bricks - even unbreakable ones!, etc - but we won't worry about these now) ;)

 

hope this helps!

Bob

Edited by PacManPlus
Link to comment
Share on other sites

'D' - Disperse - Splits 1 ball into three (note that you do not get another pill until you are back down to 1 ball)

'P' - Bonus Player! - gives you an additional turn (these are pretty rare)

'B' - Board Pass - opens uo the bottom right side of the wall and if the player passes through it they finish the level and receive 10000 points.

'E' - Expand - makes the paddle larger (note that the paddle goes back down to normal size when you catch another pill)

'L' - Laser - Gives the player missiles to shoot (actually two shots, side by side)

'C' - Catches the ball when it hits the player's paddle.  Gets released by the fire button, of after 5 seconds

'S' - Slow - slows down the ball to the previous speed (there are three or four speeds that the ball can travel, each getting faster as the board progresses).

 

:)

 

Arkanoid 2 (Revenge of DOH) has other pills (one that splits into about 30 balls, one that changes into a black ball that travels straight through bricks - even unbreakable ones!, etc - but we won't worry about these now) ;)

 

hope this helps!

Bob

891751[/snapback]

It does, thanks!

Link to comment
Share on other sites

'S' - Slow - slows down the ball to the previous speed (there are three or four speeds that the ball can travel, each getting faster as the board progresses).

So, the ball travels at how many different speeds? Just three, or three per level with a new set of three speeds every level?

Link to comment
Share on other sites

Ok, after playing around with the numbers, here's what I came up with:

 

I can get either

3 non-flickering small balls onscreen at once or

2 non-flickering larger balls onscreen at once.

 

And I could flicker one of the larger balls to get 3+ onscreen at once. Which is what I am leaning towards. Any preference. And by "larger balls" I mean...:lol: Now I've got that AC/DC song stuck in my head. :D Anyway, I mean balls that would look like the Breakout ball: a bigger square.

Link to comment
Share on other sites

"And I always fill my ballroom (the event is never small); The social pages say I've got ..."

 

I'm trying to remember how many different speeds there are... I can't remember off the top of my head - I'll check it out and let you know.

Edited by PacManPlus
Link to comment
Share on other sites

Excellent idea for a homebrew :)

 

/offtopic

 

Sometimes, working on a game is like working on my VW bug:  something goes wrong and I don't know why, so I start fixing things, and replacing things until whatever wasn't working starts working.  :)

 

Hmmm...Go Fish! is making a funny noise, and I have no idea why.  Well, I haven't replaced the oil filter in a while.  That didn't do it.  Well, I haven't replaced the air filter in a while.  That sounds a little better.  New sparkplugs, change oil, adjust gaps, check timing, clean carbeurator, all of sudden: bam!  It works.  What fixed it?  I dunno.  Sometimes it's just a lot of little things.

 

/end pointless ramble

891140[/snapback]

 

:lol:

Link to comment
Share on other sites

Sometimes, working on a game is like working on my VW bug:

891140[/snapback]

Interesting analogy. Though it's hard for me to draw a parallel between Atari 2600 assembly programming and changing the oil or gapping spark plugs. I would say that Atari 2600 assembly programming is the mechanical equivalent of rebuilding an automatic transmission that someone else took apart and threw all the pieces in a box.

Link to comment
Share on other sites

Sometimes, working on a game is like working on my VW bug:

891140[/snapback]

Interesting analogy. Though it's hard for me to draw a parallel between Atari 2600 assembly programming and changing the oil or gapping spark plugs. I would say that Atari 2600 assembly programming is the mechanical equivalent of rebuilding an automatic transmission that someone else took apart and threw all the pieces in a box.

891879[/snapback]

Well, when I said "adjust gaps," I meant adjusting the valves, which is a little more complicated (but not much) than gapping the spark plugs.

 

But assembly isn't that complicated...

 

:)

Edited by vdub_bobby
Link to comment
Share on other sites

Looks pretty good. A few comments, if I may, which you'd be free to accept or ignore as you see fit.

 

Your life might be easier if you have a couple of blank scan lines between rows of bricks. I do not think this would in any way detract from gameplay, and you could use the playfield on these rows to draw a border (which would not have to match any brick color). You could use these scan lines to process invisible bricks for either flickering or...

 

...you could draw bricks with alternating colored and gray scan lines. This might be a little tight on CPU cycles, but it would allow you to make three categories of bricks distinguishable: normal bricks (color only), indestructable bricks (gray only), and 'strong' bricks (gray + color, which would turn to color-only when hit). If you have cycles left, you could make the edges of the screen be gray.

 

You could probably make the invaders disappear when the player gets a disrupter token. In that case, when the disrupter was active, there would be three balls bouncing around on screen but nothing else (use two players and a missile).

 

If you make the both invaders and the paddle be one player and the falling tablets be the other, that would leave you with one missile to use for the ball and one missile to use for lasers. The laser's missile would be fairly easy to control since you would only have to turn it on and off in the boundary between bricks.

Link to comment
Share on other sites

Looks pretty good.  A few comments, if I may, which you'd be free to accept or ignore as you see fit.

 

Your life might be easier if you have a couple of blank scan lines between rows of bricks.  I do not think this would in any way detract from gameplay, and you could use the playfield on these rows to draw a border (which would not have to match any brick color).  You could use these scan lines to process invisible bricks for either flickering or...

 

...you could draw bricks with alternating colored and gray scan lines.  This might be a little tight on CPU cycles, but it would allow you to make three categories of bricks distinguishable: normal bricks (color only), indestructable bricks (gray only), and 'strong' bricks (gray + color, which would turn to color-only when hit).  If you have cycles left, you could make the edges of the screen be gray.

 

You could probably make the invaders disappear when the player gets a disrupter token.  In that case, when the disrupter was active, there would be three balls bouncing around on screen but nothing else (use two players and a missile).

 

If you make the both invaders and the paddle be one player and the falling tablets be the other, that would leave you with one missile to use for the ball and one missile to use for lasers.  The laser's missile would be fairly easy to control since you would only have to turn it on and off in the boundary between bricks.

891941[/snapback]

Interesting ideas; thanks.

 

Just to clarify, for those of you who care about this stuff, this is what is being used now:

player 0: enemies and paddle

player 1: powerup pills

missile 0: side borders

missile 1: ball 1

ball: ball 2 or laser

PF: bricks

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...