Jump to content
Cliff Friedel

Passthrough 2600

Recommended Posts

I always avoid random +/- bonuses in games. Instead of random-effect bonuses, how about bonuses that alternate fairly quickly between a good and bad color?

 

I like the idea of the label changing to let you know what the bonus is!

 

But if you do decide you want to free up that player, I could always whip up a 48-pixel wide banner minikernel, which would display the title horizontally above the score. The code's pretty much already there in my titlescreen kernel.

 

Sure. Freeing up the player would make life a lot easier. Would I put that in as an inline .asm or a kernel include? Also, would that affect how everything else would be rendered? Just curious. I have to admit, 6502/7 assembler is where I fall apart =) If we could keep the title though and be able to do the powerups, that would definitely improve the game I think.

 

Let me know if you need anything from me (sources, etc.) and I can provide it. I will make sure to add you into the credits too. =)

 

Cliff

Share this post


Link to post
Share on other sites

I really like the latest build. I got to some level shaped like a treasure chest or something.. it's the level after the one with a 7.

 

I think on that 7 level you should put one row of blocks on the right over the 7.. this will force you to use that top left space.

 

I think the only thing that bothers me is the way your ship moves.. it's not smooth.. it jumps from position to position, but maybe that's your intention and maybe it's harder that way.

 

Bonuses would be nice and "force" you to take certain smaller paths.

 

I like that there's a difficulty setting.

 

As for the word Passthrough / logo. If you could pull this off, I think it would look really nice: Fade in the color slowly.. from black to white.. then make it fade back out. After it fades out make it do the same thing on the right side of the screen.. repeat process. This happens while the game is going on.

 

I think you are right on the level 7. I put two big spaces to keep the shape, but I could make the highest row go back to 3 width and I don't think it would mess too much with the design of the level. You would still get a break by having the second line from the top.

 

As for the rough running of the ship, I don't think there will be much I can do. I have to cycle between 1 and 2 pixels the way I described above to get things to move at a speed that isn't too fast or jumps up in speed too dramatically. There probably is a better way of doing it (maybe by moving it 1 pixel and drawing the screen more often), but I think that would cause problems also and would require a serious rewrite. Once I get the gameplay and other stuff to where I want it though, I may revisit it then.

 

If Reveng makes the kernel he suggested, I will be able to free up the player sprite and use it for powerups, since his kernel will be displaying the label. At that point, I could probably use the frame counter to cycle the colors. Even if he doesn't, there may be an option for me to modify the playfield and use the ball to make the powerup and I can cycle the colors with the sprite. Then I can use it to write the power-up name when it is collected.

 

You guys are giving me great ideas BTW and I appreciate them all. This game is really coming along and I probably wouldn't have gotten this far without you guys. Thanks.

Share this post


Link to post
Share on other sites

I was working up my own demo which does something like this:

 

I'm guessing the reason the later levels see "jumpy" to me is because you're doing something like player0x = player0x - 5.

 

I think you need a routine, which will slow down your game similar to this:

 

speed = 16
for a = 0 to speed
drawscreen
next a

 

In that example you can set speed to 16, then later speed it up to 14, 12, 10, etc.

 

This way you can have your player0x = player0x - 1 and still keep the motion smooth during later levels.

 

I might not be explaining that totally correct, but you get the idea.

Share this post


Link to post
Share on other sites

I was working up my own demo which does something like this:

 

I'm guessing the reason the later levels see "jumpy" to me is because you're doing something like player0x = player0x - 5.

 

I think you need a routine, which will slow down your game similar to this:

 

speed = 16
for a = 0 to speed
drawscreen
next a

 

In that example you can set speed to 16, then later speed it up to 14, 12, 10, etc.

 

This way you can have your player0x = player0x - 1 and still keep the motion smooth during later levels.

 

I might not be explaining that totally correct, but you get the idea.

 

Yeah, that is basically what I thought about doing. I really do it more as a ratio of 1 and 2 pixel moves right now, which is why you see the jitter. I hope to fix it at some point, but for now, I will probably leave it alone.

 

Also, people have told me not to use for loops because of the speed of them. Are we ok to use them now?

Share this post


Link to post
Share on other sites
Also, people have told me not to use for loops because of the speed of them. Are we ok to use them now?

The fear in using large or nested loops is that you'll run out of cycles before the next drawscreen, which will make your display jitter or roll.

 

In this case you're looping drawscreen commands, so there's no fear of that.

 

The "avoid loops" thing is more of a guideline.

 

Regarding the minikernel, my plan is to use a 48 pixel wide display. To do that I'd need to have the word "pass" over the word "through".

 

Does that work for you? The alternative is to use the 96 pixel wide display, but it has some drawbacks. (Flicker, and larger amount of rom space)

Share this post


Link to post
Share on other sites
Also, people have told me not to use for loops because of the speed of them. Are we ok to use them now?

The fear in using large or nested loops is that you'll run out of cycles before the next drawscreen, which will make your display jitter or roll.

 

In this case you're looping drawscreen commands, so there's no fear of that.

 

The "avoid loops" thing is more of a guideline.

 

Regarding the minikernel, my plan is to use a 48 pixel wide display. To do that I'd need to have the word "pass" over the word "through".

 

Does that work for you? The alternative is to use the 96 pixel wide display, but it has some drawbacks. (Flicker, and larger amount of rom space)

Yeah, it's really just text anyway. If you can give me a screenshot when you have it, that would be great. Will it fit within 1k ROM space? That is all I have left and I still need to do the powerups. Let me know. Thanks.

 

Cliff

Edited by Cliff Friedel

Share this post


Link to post
Share on other sites

I went though the loop stage too, but the better programmers around here showed me that using counters to slow things down are much better because you can slow down specific things while letting other things run at full speed.

Share this post


Link to post
Share on other sites

I went though the loop stage too, but the better programmers around here showed me that using counters to slow things down are much better because you can slow down specific things while letting other things run at full speed.

 

I am using counters right now also, but more to pick 1 or 2, play music, or do things like that. I haven't tried to use it to do multiple drawscreens.

Share this post


Link to post
Share on other sites

I went though the loop stage too, but the better programmers around here showed me that using counters to slow things down are much better because you can slow down specific things while letting other things run at full speed.

 

I am using counters right now also, but more to pick 1 or 2, play music, or do things like that. I haven't tried to use it to do multiple drawscreens.

Yep, yuppicide seems to be hooked on for-next looping a drawscreen right now. He'll get over it sooner or later.

Share this post


Link to post
Share on other sites

Ok, here is a version with the powerup system. Right now it just adds points or takes them away, but I have it setup to perform one of eight effects. I had to use player1 to get this, so there will be no title until I can get the kernel from reveng. Also, I am running extremely tight on ROM space, so I will probably have to use bankswitching, which will involve some rewriting. This will probably slow down implementation for a day or two. Anyway, let me know if there are any problems. I found one problem in that the level noise for level 2 seems to go on longer than it should. I will fix it when I can. Ok, try it out and let me know what you think. I will post this up top also.

 

EDIT: Problem with sound for Level 2 fixed.

 

Passthrough2600.v099b.bin

Edited by Cliff Friedel

Share this post


Link to post
Share on other sites

Ok, here is a version with the powerup system. Right now it just adds points or takes them away, but I have it setup to perform one of eight effects. I had to use player1 to get this, so there will be no title until I can get the kernel from reveng. Also, I am running extremely tight on ROM space, so I will probably have to use bankswitching, which will involve some rewriting. This will probably slow down implementation for a day or two. Anyway, let me know if there are any problems. I found one problem in that the level noise for level 2 seems to go on longer than it should. I will fix it when I can. Ok, try it out and let me know what you think. I will post this up top also.

 

EDIT: Problem with sound for Level 2 fixed.

 

Passthrough2600.v099b.bin

 

I like the powerup system, but on the level after the purple one with the tricky curve, it's a yellow background and it blends in.

Share this post


Link to post
Share on other sites

Ok, here is another build. I added more powerups including score changes, jumps up and down from the present position, making the playfield disappear for a short time, making the player blend in with the background for a short time (they show up in the blank spots), and stopping the score from decreasing. I also optimized some of the code to try and grab a few extra bytes which has worked to some extent. Here it is. Let me know what you think. I will post it up top again also.

 

Cliff

 

Passthrough2600.v099c.bin

Share this post


Link to post
Share on other sites

What does the powerup do? I grabbed a power up and the whole screen went blank and I couldn't see what to do. I was on the Atari Fuji level when this happened.

Share this post


Link to post
Share on other sites

What does the powerup do? I grabbed a power up and the whole screen went blank and I couldn't see what to do. I was on the Atari Fuji level when this happened.

They are random. Some are good, some are bad. The one you got turned off the playfield, making it harder for a short time. Some add score, some take it away. Some freeze the timer, some do weird things like make the playfield or the ship disappear. I plan to add more over time. They really shouldn't be called powerup more than effects, its just the name that was first thrown out.

Share this post


Link to post
Share on other sites

Interesting. I quit the game too fast thinking it was a bug and never gave it a chance. Yeah, that would be a powerdown. :)

 

What does the powerup do? I grabbed a power up and the whole screen went blank and I couldn't see what to do. I was on the Atari Fuji level when this happened.

They are random. Some are good, some are bad. The one you got turned off the playfield, making it harder for a short time. Some add score, some take it away. Some freeze the timer, some do weird things like make the playfield or the ship disappear. I plan to add more over time. They really shouldn't be called powerup more than effects, its just the name that was first thrown out.

Share this post


Link to post
Share on other sites

Ooh.. I get you. So, give everything a label.. increment the label.. and only gosub that routine when needed. Gotcha..

 

 

I went though the loop stage too, but the better programmers around here showed me that using counters to slow things down are much better because you can slow down specific things while letting other things run at full speed.

 

I am using counters right now also, but more to pick 1 or 2, play music, or do things like that. I haven't tried to use it to do multiple drawscreens.

Yep, yuppicide seems to be hooked on for-next looping a drawscreen right now. He'll get over it sooner or later.

Share this post


Link to post
Share on other sites
Ooh.. I get you. So, give everything a label.. increment the label.. and only gosub that routine when needed. Gotcha..

For slowing things down, I'm talking about something like this:

 

   Master_Counter=Master_Counter+1
  if Master_Counter < 7 then Skip_Frame_Counter
  Frame_Counter=Frame_Counter+1 : Master_Counter=0
  if Frame_Counter=4 then Frame_Counter=0
Skip_Frame_Counter

 

That's just one example. In this case, it slows things down for sprite animation (got the idea from jrok).

Share this post


Link to post
Share on other sites

I like the addition of new powerups, but I think the bad ones should be a different color than the good ones. That way, it adds strategy and elimates the randomness, so you take pure luck out of it, and put some skill back into it.

 

Also, if you do this, you have to make it so when you get passed the line of a bad powerup, it disappears and gets replaced with a randomly placed other powerup. That way, skilled players don't get stuck with a bad powerup left there the whole game, because they don't get it.

Share this post


Link to post
Share on other sites

I like the addition of new powerups, but I think the bad ones should be a different color than the good ones. That way, it adds strategy and elimates the randomness, so you take pure luck out of it, and put some skill back into it.

 

Also, if you do this, you have to make it so when you get passed the line of a bad powerup, it disappears and gets replaced with a randomly placed other powerup. That way, skilled players don't get stuck with a bad powerup left there the whole game, because they don't get it.

 

I am actually thinking of setting the powerups on a timer so that they will appear for a while, and then having them either shut off or respawn somewhere else. As for the colors, that is the intention, I have just been focused on getting the effects working. It will be coming soon =)

 

On another note, I am dealing with a serious lack of ROM space so I think bankswitching is going to have to be a priority after I get all of the effects working. Who would have ever thought you could use the entire 4k ;)

 

Cliff

Edited by Cliff Friedel

Share this post


Link to post
Share on other sites

Ok, here is the latest update, version .099d. There are a bunch of revisions in this version, so I will try to explain them all. I will post the binary up top also. Please try it out and let me know what you think.

 

Cliff

 

VERSION .099d

 

NEW TITLE

 

Big thanks to reveng for this. the game has a new title kernel that shows up near the score. For now it just shows the name of the game, but I hope to add more to it if ROM space allows.

 

POWERUPS

 

Powerups come in two types. Green ones will give you some kind of benefit. They may increase score, move you towards the top of the level, stop the timer for a short time, or make you invincible for a short time (flashing ship). Red powerups are bad ones. They can remove some of your score, move you towards the bottom of the level, make the playfield disappear for a short time, or turn your ship the same color as the playfield, showing up only when it hits an empty space.

 

SCORE CHANGES

 

Due to the implementation of powerups, the score balance was a little off. With that in mind, hitting the playfield now reduces your score 25000 in difficulty B and 50000 if you are using difficulty A. Hitting a good score powerup will increase your score by 100000, a red score powerup will decrease it by 100000. The timer decreases at the rate of 100/loop interval.

 

OTHER CHANGES

 

A lot of optimization was done to pack more code into the 4k space. My goal is to keep it under this limit so that the game can be put on normal carts should it go to cart, hopefully reducing the price for everyone should they want one.

 

WISHLIST

 

Still need sounds for some powerups.

More optimization.

 

BINARY

 

Passthrough2600.v099d.bin

Share this post


Link to post
Share on other sites

Looking good! The bonuses really do add interest to the game play - prompting you to take more risky leaps you might not have chosen otherwise.

 

I think I found a few bugs...

 

If your score is low and you hit a "subtract score" power, your score rolls to being full again. I believe the same thing can happen with a well timed jump into a block too.

 

I also after dying I got a bad black-screen display after the game over screen flashed briefly.

 

I'm thinking this last one might be a "too many gosubs deep" problem. The banner minikernel and the bB score routine both impose a hard limit on the number of gosubs you can do, by reusing one of the higher stack values. Unfortunately the bB kernel calls any minikernel with a "jsr", which means the banner minikernel actually lowers that gosub limit by one level. :(

Edited by RevEng

Share this post


Link to post
Share on other sites

Looking good! The bonuses really do add interest to the game play - prompting you to take more risky leaps you might not have chosen otherwise.

 

I think I found a few bugs...

 

If your score is low and you hit a "subtract score" power, your score rolls to being full again. I believe the same thing can happen with a well timed jump into a block too.

 

I also after dying I got a bad black-screen display after the game over screen flashed briefly.

 

I'm thinking this last one might be a "too many gosubs deep" problem. The banner minikernel and the bB score routine both impose a hard limit on the number of gosubs you can do, by reusing one of the higher stack values. Unfortunately the bB kernel calls any minikernel with a "jsr", which means the banner minikernel actually lowers that gosub limit by one level. :(

 

I thought I fixed the score bug. I haven't seen the other one. I will take a look at it today when I get a chance.

 

Cliff

Share this post


Link to post
Share on other sites

This revision is excellent!

 

Although, whenever I get a gameover, the gameover screen flashed then goes to black. It could be because I press the fire button to get a gameover, and there's nothing to stop it from thinking it's another button press.

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

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...