Jump to content

Lumi

New Members
  • Content Count

    82
  • Joined

  • Last visited

Posts posted by Lumi


  1. Hello!

     

    Based on user input, I took my game, Jet!, and turned it into a new game: Drive! I decided to make this a new topic to avoid confusion.

     

    post-44583-0-90700400-1457453462_thumb.png

     

    Story:

     

    In this game, you are an explorer from the year 2050. Much of the world's rainforests have been logged, leading to the discovery of a large temple constructed by ancient civilizations eons ago. You are among the first to be allowed to explore it.

     

    The entrance to this temple is across a long stone bridge, which you have chosen to drive across. Inside the temple you find a golden idol on a stone pedestal. Although you are supposed to leave everything you find, your greed gets the better of you and you remove the idol from where it has sat for thousands of years.

    Suddenly, the ground begins to shake. Bricks fall from the ceiling. Maybe this wasn't such a good idea! You run outside just as the entrance caves in. As you get in your car and drive away, you realize that the bridge's supports have dislodged and it's all collapsing behind you! There's no time to think - just drive!

     

    This is a 4K, single player paddle game, made entirely in assembly, in which you must move your car left and right to dodge obstacles as you drive down the bridge. As you drive, you will encounter treasures (dots on the ground). When you collect a treasure, you will gain 1500 points and it will be added to your collection (the gold dots on the left side of the status bar). You can have up to five treasures in your collection at a time. You can press the paddle's trigger to "burn" a treasure, which gives you the energy to jump a short distance. Any treasures you have when your game ends will grant you an extra 1000 points. The game is won upon reaching 99999 points.

     

    In addition, certain treasures will grant you extra powers:

    - Red: Gives you an extra life (the pink dots on the right side of the status bar). You can have up to 4 lives at a time.

    - Green: Makes you invincible for a few seconds.

    - Purple: Allows you to jump as much as you want for a few seconds with no penalties.

     

    Oh yeah, and if you press the paddle trigger when you have no treasures in your collection, you can honk the horn. So there's that.

     

    At certain points, the game will speed up. The game will stop generating obstacles for a few seconds, and the speed-up will occur while there are no obstacles on the screen.

     

    Finally, the difficulty switches toggle certain functions:

    - The left difficulty switch will make obstacles farther apart (B) or closer together (A).

    - The right difficulty switch turns moving platforms off (B) or on (A).

    Set both to A for the ultimate experience! (Note: Stella sets both to B by default.)

     

     

    I'm very interested to see what everyone thinks of the new direction this game has taken! :)

     

    === UPDATE: v1.1 ===

    What's new:

    - Introducing speed freak mode! Press the game select switch on the title screen to access this. This makes the game run at hyper speed, so good luck! Combine with both difficulty switches on A for a real challenge!

    - Better sound and colours for both NTSC and PAL.

    - Purple powerup has been changed to blue to make it more distinct.

    - Each treasure in your collection now adds 1500 points instead of 1000 when your game ends.

    - A few bug fixes.

     

    === UPDATE: v1.2 ===

    What's new:

    - Full SaveKey/AtariVox support! It will save two different high scores depending on which difficulty you have selected on the title screen. Press the game select and game reset switches together to delete your high scores.

    - You can now switch difficulty modes without going back to the title screen. Simply press the game select switch at any point.

    - Jerky scrolling is finally fixed.

    - Treasures now have defined graphics:

    post-44583-0-77147800-1457453801.png Gold coin: Takes the place of the gold treasure (no powerup other than the default).

    post-44583-0-64743600-1457453810.png Necklace: Takes the place of the red treasure (adds an extra life).

    post-44583-0-71696700-1457453835.png Jar: Takes the place of the green treasure (makes you invincible for a few seconds).

    post-44583-0-24402500-1457453851.png Statuette: Takes the place of the purple/blue treasure (allows you to jump with no penalty for a few seconds).

    - You accumulate points faster when you have below 50000 points, meaning it takes about half as long to reach full speed.

    - Other graphical improvements.

     

    === UPDATE: v1.3 ===

    - Fixed a few bugs.

    - Now has a standard PAL version.

     

    === UPDATE: v1.4 ===

    - PAL version should work perfectly.

    - Updates to Speed Freak mode.

    Drive! v1.4 NTSC.bin

    Drive! v1.4 PAL.bin

    • Like 1

  2. Hey guys, it's been a while so I should probably give an update on the status of this game.

     

     

    I haven't abandoned it, I just have other priorities at the moment. I still work on it occasionally, adjusting things and fixing issues, but nothing to warrant an update yet.

     

    My plan is to eventually adjust the premise of the game. I'm thinking of making it about a guy driving down an ancient Aztec-themed bridge that's collapsing behind him, trying not to fall through gaps, and collecting treasures along the way. Maybe called "Drive!" Yeah, I'm not the best at titles.

     

    So hang tight, I'll try to make this as good as I can.


  3. Paddle controllers will always have jitter. Buildup of dirt, grime, and particles will get into the potentiometer and the controller will lose it's precision. It's something that you are going to experience and it will develop even if it sits in an enclosed space all protected over time as well. Over time you will need to open them up and disassemble it and spray some contact cleaner around the potentiometer. They are a pain in the rear but something that will need to be done once in a while.

    Ah, thank you. Will putting them away and keeping them clean at least delay the inevitable a bit?


  4. A local shop within walking distance has a few common Atari games priced at $15 each.

     

    I looked at some other stuff they had. They charge $10 for common PS2 sports titles. They also had Mike Tyson's Punch-Out loose for $55, and Final Fantasy 7 (green label) for $95. Honestly, I don't know how half of these places stay in business.


  5. A few months ago I bought my first pair of paddle controllers. I was a little worried that they would have some jitter, but surprisingly, they work fine. I felt very lucky (and it makes me feel a little better about being price gouged by eBay).

     

    It got me thinking though, is jitter something every set of paddles will go through at some point? I take great care of my retro stuff and do my best to keep it from getting dirty, dusty, or damaged. Would that reduce the likelihood of these paddles developing jitter, or do they just naturally break over time?

     

    Sorry if this seems like a dumb question!


  6. Whoa, a lot of responses all of a sudden! I do need to remind everyone that I don't have as much free time as I did when I started this, so an update probably won't come for a little while.

     

    I know there's a lot of room for improvement, but keep in mind there are some limitations as to what I can feasibly do, especially with the "new" paddle controls (which eat precious kernel time due to the paddles' design, and prevent the player from being drawn any higher). The game is about at its limit in terms of what can be displayed on-screen at once.

     

    I really like the idea of some kind of "bar of death" chasing you down, but the low position of the player sprite won't give you much time to react. I don't think it would be very fun to play if you died the second you saw it pop on the screen. The background color getting lighter/darker is the only way I can think of to indicate your distance from death, but I'm hesitant to make that an essential part of the game as it's not very intuitive.

     

    I agree that the setting doesn't make a lot of sense. The fugitive on the run idea could work. Another idea I just thought of is that the player is running down an old bridge that's collapsing behind him, and he's trying to collect treasure along the way without falling into pits. The only catch is that the name "Jet!" isn't going to make as much sense, and the problem with changing the title is that I can't change the name of this topic.


  7. Okay, it looks like the repeat bug only happens when you go full throttle. And it only seems to happen on level 1. When you hit the next threshold it seems to go back to random, but i didn't survive long enough to tell. I took a video and I'll try to post it to show you what I mean.

     

    Thank you, this is really helpful. I still have no idea why only you seem to be getting it, but this gives me a few ideas as to what might be going wrong. Hopefully I can fix it next time.

     

    EDIT: Never mind, I was able to reproduce it in Stella! I should be able to fix it now.


  8. Just a heads up, I'm going to have to pause development of this game for a little while, but I'm keeping a list of all your suggestions and concerns, so I have a good list of things to add/fix next time.

     

    However, this really concerns me:

    Unfortunately I keep seeing the repeat bug even on the 7800.

    I'm honestly stumped here... I have no idea why this bug is happening, and why it doesn't happen in Stella. If anyone wants to help me get to the bottom of this, here's how the RNG works:

     

    When the game is reset, the following code is run to seed the RNG:

    		lda INTIM	;fetch a random number
    		adc SWCHB	;make it a little more random by adding the status of the console switches
    		bne notzero
    		lda #$93	;the seed can't be 0. If it is, this arbitrary number will be loaded instead
    notzero		sta RNG
    

    Every frame, the following occurs:

    		lda RNG
    		lsr
    		bcc skipeor
    		eor #$B2
    skipeor		sta RNG
    

    Sometimes 2-3 random numbers are needed per frame. In those cases, the above snippet of code will be run again to get the new number.

     

    Obstacles are generated by ANDing the variable RNG with #$0F. If the result is greater than 0, the corresponding playfield data will be loaded from a table in ROM. Otherwise, a moving obstacle is generated, which is handled by a separate chunk of code.

     

    Does anyone know what might be causing the problem?


  9. I think there are two problems:

    1. You always scroll 2 rows at at time (or multiple of 2)
    2. You scroll 2,2,2,2,4,4,2,2,2,2,4,4... but it should be 2,2,4,2,2,4.... Both average to 2.67 lines/frame, but the latter should look smoother.

    For fixing the #1, you have to enter the kernel at two different places. Then you can do 2,3,3,2,3,3...

    #2 seems to be a bug which should be an easy fix.

    Hmm, I didn't think of entering the kernel in different places. That's a clever solution and would be easy to implement.

     

    Also, at first I was confused when you said "2,2,2,2,4,4,2,2,2,2,4,4..." because it didn't work like that before, but then I took a look at the movement in the debugger. Yikes, no wonder it's so choppy. I think that bug was introduced when I modified the scoring system. It's a very easy fix, so thank you for bringing this to my attention.


  10. You can use one variable and add an increasing value. Whenever the sum wraps, you scroll one extra line. That way you can control the speed in very small steps.

    That makes sense. I don't think it would solve the jumpiness, though, would it?

     

     

    Ok, but 99,999 seems too easy to get. Why should you short-cut your game intentionally?

    It's actually not easy once you get into the high speeds - to be honest, I haven't been able to do it legitimately. When I started this game, I was planning to make something like Super Hexagon (a game where surviving one minute is an accomplishment). I steered away from that idea, but I decided to keep the "short but tough" style of gameplay.


  11. Wow, a lot of feedback! I'll definitely keep it in mind. Some things I'd like to respond to/clarify:

     

    The 2nd speed looks a bit jerky. How do you scroll at that speed?

    At that speed, the screen moves down in a repeating pattern of "one-one-two" lines. It is a bit jerky, but I'm not sure how else to do it? Speed 3 is a smoother "one-two" pattern, but is too great a leap from the first speed - there has to be something in between.

     

    It seems you still gain points faster at higher speed, but maybe that's a wrong impression

    You don't gain points faster, I checked in the debugger. It's just your imagination :)

     

    The sound which shows the end of invincibility comes a little bit late, sometimes I die because I cannot react fast enough.

    Do you mean there should be more time to react, or that the sound itself is playing too late? Currently, the warning sound is timed to finish just before the invincibility runs out - I could definitely have the sound play earlier so you have more reaction time, but if it's playing too late then that's a different issue.

     

    The power ups should come with distinct sounds. The player is too much focused on the screen to check score or lives.

    They do! Each powerup should play a distinct jingle when collected. Are they all making the same sound for you? If so, something's not working correctly.

     

    The power up color is a bit hard to recognize, can you make them a bit larger?

    I could make them wider, but probably not taller - allowing the object to remain visible only for two scanlines is essential to the display kernel. The other option is to use more saturated colors. The biggest hurdle is making them stand out against the blue background, but that's a little easier to deal with.

     

    Probably you should increase the maximum points to 999,999

    At 99,999 points you "win" the game. I wanted there to be an ulterior goal instead of just going for high scores, and going for 999,999 would be a massive undertaking for the player.

     

     

     

    nice job! I played on a Harmony on hardware with paddle and joystick. I definitely prefer paddle, given the way you have the obstacles designed, it's much more frustrating with a joystick.

     

    also, on the paddle controller, it appears you're not using the entire range of the paddle. if I turn all the way to the right (until the hardware limit), I'm at the right edge of the screen, and turning left from there the ship starts moving left right away, but it reaches the left side of the screen well before the left turn limit of the paddle. It makes me think that you could use a bit more range of the paddle to make the controls slightly less sensitive (they feel a bit touchy to me).

     

    overall great progress! I'd be glad to play future versions on hardware and give feedback.

    Which version did you play? The most recent revision removes joystick controls entirely. Some earlier versions had more sensitive paddle controls, but as far as I can tell, Version 4's range should be comparable to that of "Kaboom!" (At least according to the potentiometer values in Stella's debugger). Thank you for taking the time to test it on actual hardware, though!

     

    BTW I also tried using the driving controller (in the right-hand port), and it didn't work (as you probably know).

    I didn't know that! I'm not very familiar with the driving controller, should it work the same as paddles?


  12. OK, this is a little earlier than anticipated, but I had a lot more time to work on this than I thought I did. Version 4, everybody!

     

    This update removes joystick mode, but completely optimizes the game and difficulty for paddle control! It's now a lot more functional and fun to play because of it!

     

    More new features:

    - You can plug the paddles into either the left or right controller port! (Just note that you can't switch once progressing past the title screen.)

    - Paddle control has been improved again. You now have a full range of motion between the two barriers. As a result, the player sprite is also drawn a few lines lower.

    - The scoring system has been reworked to be based on time, rather than distance. It also accumulates at a slower pace. However, speeding up (which I'm now officially going to refer to as "boosting", because it sounds better) still quadruples the points you get.

    - While boosting, powerups are now twice as likely to appear.

    - Moving obstacles! There are two variants of these. They move back and forth across the screen, so you need to time your movements accordingly.

    - To reflect the updated scoring system, white powerups now give 1500 points instead of the previous 3000.

    - There is now a fourth, purple powerup. These are extremely uncommon compared to the other 3, but they give you a whopping 4000 points!

    - The game now has 5 speeds rather than 3. It speeds up every 10,000 points until the max speed is reached at 40,000 points.

     

    Additionally, random number generation is now based on a LFSR, which should hopefully spell the end of the repeating walls bug once and for all.

     

    Give it a try, I promise it's a better experience!

     

    Jet! v4 NTSC.bin

    Jet! v4 PAL60.bin

    • Like 2

  13. Wait, you do not use any timer? Why not? And how do you get a stable frame rate then?

    I developed the base game without the timer, and decided to stick with it because the RNG depended on it.

     

    As for how I achieved the stable scanline count, whenever I wrote a new chunk of code, I tested it thoroughly and kept an eye on the number of scanlines. If it simply caused the game to exceed 262 scanlines, I made the game wait one fewer scanline. If the code resulted in variable scanline counts, I added a "sta WSYNC" before it. I realize this would be a bad idea if you're cramped for ROM space, but I have most of the engine down and still a comfortable amount of free space, so it's not an immediate worry.


  14. How about sharing your RNG code? Then we can maybe find the problem.

    Sure. It looks like this:

    lda INTIM
    eor RNG
    sta RNG
    

    I thought this would work, since this game doesn't use the timer and only does this once or twice per frame. I may have misunderstood how INTIM works, though.


  15. I'm really happy you're all helping me improve this game!

     

    It looks like I'm going to be removing joystick mode. It's a bit of a shame, but I do feel it's holding the game back. By focusing on paddles, I have some ideas on how to make this more fun.

     

    As for the repeating walls issue, I'm not really sure why the RNG I used would be acting up so much, but I'll try the LFSR approach and hopefully that will fix.

     

    I'll be taking a short break from development to focus on work, so rest easy - you won't have to keep testing new updates constantly ;)


  16. It looks like it is not possible to start the game with paddles. I would make it as a paddle only game if it means improvement for paddles control. There are enough of similar games that use joystick. Atari 2600 needs more paddle games.

    You need to put the paddles in the right controller port... I did this by request and possibly to prevent a glitch, but if I make this a paddle-only game I might have to switch it back to the left port, because it is a bit confusing if you don't know that beforehand.

     

    It does not remind me of a guy sitting on a jetpak.

    He's supposed to be wearing it like a backpack, like how it's depicted in cartoons. I'll see if I can make that any clearer, though.


  17. OK, I think I've made some major improvements here!

     

    I took a different approach to the whole thing, and the paddle controls should be a lot less sensitive now. It feels more like a real paddle game. The display kernel chews up a lot more space, but it's a fair trade-off, I think.

     

    Also, I took your suggestion and now the paddles must be in the right controller port.

     

     

    Edit: You know, the more I think about it, the more I feel like the joystick controls are holding this game back. Especially with the new paddle controls, it's starting to feel too easy. So here are a few questions:

     

    1) Would anyone object if I made this a paddle-only game, with a higher difficulty?

     

    2) Are the new paddle controls good enough for this idea to work, or do they still need fine-tuning?

     

    Jet! v3.2 NTSC.bin

    Jet! v3.2 PAL60.bin


  18. Thank you so much for testing it!

     

    1. Controls are really sensitive on both joystick mode and Paddle mode. I'm guessing this is deliberate. New players and people with jittery paddles may find this frustrating. It's almost unplayable with a bad set of paddle.

    The sensitive controls, at least in paddle mode, are not deliberate... Paddles require you to constantly check a value, usually during the visible display, but I can't do that - I have to jam it all into the overscan period. (This is what I was concerned about when I first implemented paddles, and why I needed people to test them.) But if they're really that bad, I have one last idea which I'll try. I just can't make any promises.

     

    About the joystick controls, do you think they would be better if the top speed was lower? Keep in mind, they need to still be usable when the game speeds up. I suppose I could make the joystick controls speed up with the game, I just hope that doesn't throw anyone off...

     

    2. There doesn't seem to be a way to change modes mid game from paddle to joystick or from joystick to paddle, It can only be done at the title screen.

    This was intentional. Joystick and paddle controls are not handled the same way, so switching mid-game could cause glitches.

     

    3 I found a bug where the walls do not change or repeat the same pattern over and over and the power ups don't show up. It took me a while to recreate the issue, but it seems to happen if you have a joystick plugged in and have the game set to paddle mode. Then if you start the game by pressing right on the joystick, then unplug the joystick and plug the paddles in then play the game with the paddle, the bug occurs. I actually beat the game this way staying in one spot the whole time.

    This is a tough one, and I have no way of testing it since Stella doesn't support hot-swapping controllers. Hmm.

     

    Do you know if there's a way to automatically detect which type of controller is plugged in, rather than having the user select it manually? That would help a lot... Otherwise, maybe the only solution is to remove one control type.


  19. Sorry for the double post, but I have a major new revision! This is actually starting to feel like a complete game now.

     

    What's new:

    - Powerups! I was able to optimize the kernel a bit and fit these in. They appear randomly and have different effects depending on the color:

    - White: Gives you a 3000 point bonus.

    - Pink: Gives you an extra life. If you have the max of four lives, it'll act like a white powerup.

    - Green: Makes you invincible for 5 seconds. An alarm will sound just before the effect runs out, so you'll have a bit of warning.

    - Rather than accelerating infinitely as you gain points, the game will only speed up twice, at 20000 and 40000 points. The background also gets darker as you speed up.

    - The game is now winnable! If you reach the max of 99,999 points, you'll get a special "win" screen. It's not easy to do, though.

    - Paddle control has been improved, and I've decided to keep them in. I can't do anything about the sensitivity, but I was able to make the movement a lot less choppy by checking INPT0 four times per scanline instead of once.

     

    I need to talk about the possibility of AtariVox support, however. I spent a few days considering it, but I've decided not to add AtariVox features. I know it's a bit disappointing, but here are the reasons why:

    - The hardware's not that well documented, at least from what I could find after days of searching. I found an old document and a few .inc files, but they don't really explain how to use it properly. I don't like having to guess how hardware works, especially when other games' save data is on the line.

    - It would be good to let players choose whether or not to keep track of separate high scores based on the control method used, and that choice would be tough to implement in software.

    So, I'm sorry to all the AtariVox owners out there, but I hope the high score screen will make keeping track of your scores the old fashioned way a little easier. :)

     

    If anyone has any other suggestions or bug reports (especially relating to differences between how Stella and an actual Atari runs the game), now would be the time to let me know. I really appreciate feedback!

     

    Also, here's a question: should I make a standard PAL version? The speed adjustment wouldn't be too difficult, but I'm wondering if anyone would want it over the PAL60 version.

    Jet! v3 NTSC.bin

    Jet! v3 PAL60.bin


  20. Thanks, Atarius Maximus!

     

    I've implemented a new feature: paddle support! On the title screen, you can now use the left difficulty switch to choose between joystick or paddle controls.

     

    Unfortunately, there's a catch. Because the display kernel is too busy to check INPT0 regularly, my only option is to do all that during overscan. What this means is, to allow the player free movement over most of the screen, the player can only move in increments of four pixels. It's not unplayable or anything, but it feels overly sensitive, at least in Stella.

     

    However, I haven't tested this on actual hardware. This is where I need help. Can anyone with a Harmony cartridge (or another flashcart) and paddles please spend a few minutes with this, and let me know if the paddle controls are acceptable or not? I really want the option to be there, but if this isn't going to be a viable control method, I'll remove paddles and focus on joystick-only play.

     

    Thank you.

     

    Jet! v2.1 NTSC.bin

    Jet! v2.1 PAL60.bin


  21. Thank you all for the feedback!

     

    I have a new revision here. It doesn't have paddle controls or powerups yet, but I want to see what you guys think about this new setup. I think it's a lot more fun than the old version, personally.

     

    What's new:

    - The game now runs at about half the speed (at the start), but you can see more obstacles on-screen at a time.

    - Speeding up is now done by holding the button, rather than using the joystick. It's just a less clunky way of doing things.

    - Speaking of speeding up, it now works like this: holding the button will make you go twice as fast, but it'll quadruple the points you get. And now that you can see further ahead, it's easier to tell when you have a good opportunity to use it.

    - Every 10,000 points will cause the game to speed up a bit, so keep an eye on your score.

    - You can keep playing until you have -1 lives.

    - Various graphical updates.

     

    I'm curious to hear what you think!

     

    Jet! v2 NTSC.bin

    Jet! v2 PAL60.bin


  22. You should a symmetric playfield except for the barriers. So you only use asymmetrical mode while the barrier is displayed. Then, if you place the powerup outside the barriers, you should have plenty of CPU time.

    That's a good idea. I'll see if I can make that work.

     

    What's your problem with paddles and Stella? You can either select paddles inside Stella (TAB, Game Properties/Controller/P0 Controller = Paddles) or directly via command line "-lc Paddles".

    Ah, so that's what I was missing. Thanks! The next build should allow you to use paddle controls.

×
×
  • Create New...