Jump to content
IGNORED

[RELEASE] DUMB PONG v1


VinsCool

Recommended Posts

It's DUMB, it's PONG.

It's mostly playable. 

 

This is the first game I've ever programmed at all, but I think it's not too bad for sharing with everyone who may want to give it a shot! 

I've actually been working on this one for some time now, but left the project sleeping while I was beating myself trying to work on Raster Music Tracker.
Since I've been taking some time off RMT, I figured I could go back to this one, fix a bunch of things, and release it as soon as it worked well enough to my liking. 

It was honestly a lot of fun to make, even if I had a lot of troubles with collisions detection, or just the weird nature of Player/Missile sprites. 

I think I've done a pretty okay job for it being my first game program so far, of course you're all welcome to give feedback or criticism if you feel like it :) 

 

 

Features: 

- Programmed in 6502 Assembly, entirely from scratch, without any Pong reference whatsoever, mainly as a personal challenge, and just for the fun of it really 

- PAL and NTSC compatible, I have not thoroughly tested but I believe even the 16k Atari 400 will be able to run the game 

- Runs in ANTIC Mode 8, because a low resolution display is perfectly good for this kind of gameplay  

- Sound, the sound effects themselves were originally made by @pseudografx for the game Bunny Hop, and were borrowed with permission, until at least when I make some original SFXs later 

- Playable with 2 Human Players using Paddles through PORTA, or 2 CPU Players, any combination of Human/CPU will work 

- Many deliberate gameplay changes compared to the original Pong were made, such as the ball physics responding to certain conditions, or the way the ball could bounce back from any wall 

- Score system going from 00 to 99, and rolling back to 00, essentially playing infinitely if you're into that kind of passtime 

- Dumb CPU logic is in place, which is not very good but it's enough to have the CPU Player fully capable of playing all by itself, even in a CPU vs CPU game 

- It's Pong, what else could I say? :D 

 

Paddles Controls (Player 1 and Player 2): 

- Paddles Pots -> Move the Players on screen

- Paddles Trigger Buttons -> Action, for now, dedicated to throw the ball back in game 

 

Atari Keyboard Controls: 

- ESC Key -> Exit the game to DOS or Self-Test, I cannot promise this is actually working at all, so please let me know if it's doing anything weird 

- 1 or 2 Key -> Toggle between Human and CPU Players, for Player 1 and 2 respectively. The game will boot with 2 Human Players expecting Paddles input by default 

- R Key -> Reset the scoreboard 

- M Key -> Mute/Unmute sound 

 

Downloads:

- DUMB PONG v1 (first public release) DUMB PONG v1.xex 

- Source code https://github.com/VinsCool/DUMB-PONG

 

And that's about it for now.

It's pretty much still work in progress, there are a lot of bugs, and obviously I am not very good at this stuff either, but hey, it's all about having fun and getting better at the things I like to do! 😅

Enjoy! 

 

-Vin 💜 

Edited by VinsCool
Update with source code link
  • Like 34
  • Thanks 2
Link to comment
Share on other sites

cool, I like it,  :)

 

This reminds me, once at work, years ago, my bosgot inspired by someone who made a pong clock, like the one in the link below.  We made our own and hung it up at work in our breakroom.   Of course we just wrote it in C# ...now that I think about it, that's not OK...should've been on a real atari, missed opportunity.

 

Pong Clock digital clock | Studio Sander Mulder

 

  • Thanks 1
Link to comment
Share on other sites

12 hours ago, VinsCool said:

It was honestly a lot of fun to make, even if I had a lot of troubles with collisions detection, or just the weird nature of Player/Missile sprites. 

Every coder fails their first Pong collision detection... It's a tradition!

 

HW collision detection is an aberration btw... On the A8 it's just legacy of the A2600 which was probably legacy of the original Pong.

 

The A2600 was designed as a super versatile Pong machine, it's really obvious if you know how it works internally... The irony of course is that HW collisions always fail with the likes of Pong and BreakOut :lol:

 

It's possible to mitigate the problem by using more missiles along the trajectory (as a trail or invisible I guess) but software collision are just better (but not easier! )

 

If you like canned worms :D:

 

http://realtimecollisiondetection.net/

 

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

Thank you everyone!

Wow, I was not expecting many people would have reacted so positively! This really means a lot for me! 

 

17 hours ago, Beeblebrox said:

nice. Now all it needs is some funky Pokey toons!!!  Now if only we knew someone who was master of Pokey?!;)

Hmm indeed, who could make some good Pong tunes? :D Anyone?

Fun fact, there actually was music included at one point, but I've removed it a few days ago, since I just didn't have anything that was fitting with the gameplay anuway, and playing music with sound effects was too distracting, haha.

That was also the reason I did add a 'Mute' toggle in the first place, lol 
Most of the routines were intended to be used with Bunny Hop, and these were mostly just a more optimised version of the same code I originally had written for VUPlayer, I really need to update that one sometime later now that I think about it... 

 

13 hours ago, Grevle said:

Good Job 👍. Was it the most difficult creating the routine that controls the ball direction after it hits ? the mathemathics in the pong ball bouncing direction ?.  I hope to learn something from the source. 

Thank you! 

Honestly the collisions detection and the ball physics are probably the most difficult part I had been working on so far.

I've actually scrapped most of the ball collisions and physics code I made about 2 months ago, mainly due to being a lot messier, and working even less good than what I have right now!

I've started writing the newer collisions detection code only 2 days ago, in fact, and tweaked to an acceptable level of quality just last night.

I also had added the most of the CPU movements at the very last moment yesterday, before I posted the first version of the game online. 

There is still a lot to improve, but compared to the first attempt of the code where the ball was likely to pass through the players 50% of the time, I suppose this is not to bad right now :P 

I've also got some ball physics programming to improve and tweak, but so far I've added a few functions for boosting the ball knock-back, increment the velocity, and I've also fixed several calculation errors with these improvements.

I might actually rewrite some of these routines for a 3rd time if I am not satisfied, I believe things will eventually get better after more time is spent editing code :) 

 

10 hours ago, Mclaneinc said:

Congrats on your first 6502 game, and who does not love a pong game..

 

Happy debugging..

Thanks! It was a lot of fun to debug, thanks to the fantastic Altirra emulator for this purpose!

 

9 hours ago, Ute said:

Looks great!

Thanks, I don't really have much artistic skills when it comes to graphics, but luckily for me, big chunky pixels was perfectly suited for this game! haha 

 

7 hours ago, Mark2008 said:

cool, I like it,  :)

 

This reminds me, once at work, years ago, my bosgot inspired by someone who made a pong clock, like the one in the link below.  We made our own and hung it up at work in our breakroom.   Of course we just wrote it in C# ...now that I think about it, that's not OK...should've been on a real atari, missed opportunity.

 

Pong Clock digital clock | Studio Sander Mulder

 

Oh wow, that's actually really cool!

I think if I edited my game code a bit, I may even be able to make it work the same way!

I don't think that would be all that much interesting, unless someone left their Atari machine running non-stop I suppose, hahaha :D 

 

6 hours ago, rensoup said:

Every coder fails their first Pong collision detection... It's a tradition!

 

HW collision detection is an aberration btw... On the A8 it's just legacy of the A2600 which was probably legacy of the original Pong.

 

The A2600 was designed as a super versatile Pong machine, it's really obvious if you know how it works internally... The irony of course is that HW collisions always fail with the likes of Pong and BreakOut :lol:

 

It's possible to mitigate the problem by using more missiles along the trajectory (as a trail or invisible I guess) but software collision are just better (but not easier! )

 

If you like canned worms :D:

 

http://realtimecollisiondetection.net/

 

Yup! it was a bit frustrating to figure it out lol 

It's just a bit weird how "too pixel perfect" it is, that you're just unable to get much of it working as you expect after being used to anything else that used hitboxes that didn't match the sprite shape itself. 

I've indeed done exactly what you describe to work around the issues: 1 invisible player for some collisions detection that were likely to be missed at random, and all of my playfield walls were done in software. 

I've still got many things to fix later, such as, once again, the ball missing and going through a player (arrrgh! still considerably better than the first attempt I made 2 months ago thankfully), and improvements to the ball physics.

To be honest, I already know what I can do to attempt improving much of everything, I just didn't bother as long as I got something that worked well enough since yesterday.

By keeping track of previous ball coordinates, for example, I may be able to work around several issues at once, mainly the "Pass through Player without any collision", or the ball getting stuck inside of a player, something that also did happen often lol 

 

1 hour ago, NRV said:

Lol.. I can also recommend that one.

 

book.jpg.0eb50b2c00412fae05080493137d081b.jpg

But maybe a little too advanced for a pong game :)

 

Nice game Vins!

Thanks a lot!

I think as long as something is a solution to difficult bugs, it's not too advanced! haha 

I've only really had issues with sprites collisions, while all of my Playfield walls were processed in software.

Most of the collisions detection within the "walls" were really not difficult to do, I mostly just used the screen X and Y coordinates I set to be absolute boundaries limits, and then I simply forced the ball to stay in-bounds.

The only other "software" collisions I did were for the 2 opposing sides, checking for if the ball gets "pocketed" past a certain amount of the X axis, then jump to the appropriate Player Made a Point and Play Sound Effect subroutines. 

It's still a bit of tangled programming, but I think it gets the job done, considering it works a lot better than my previous attempt with this entire procedure 😅

 

Once I managed to get more bugs fixed, and cleanup my code, I will make sure to upload the sources, so at least that would make more sense compared to me trying to explain all of that stuff in the best of my own words, hahahaha!

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

I've honestly forgot about uploading the sources of this one, and also sorta lost interest with it, since it's pretty much good enough as it is to be playable, so here are the sources of DUMB PONG as well as some other stuff that happened to be inside the project folder for a few months, collecting dust.
https://github.com/VinsCool/DUMB-PONG 

 

Enjoy, or don't. :D 

I'm aware a lot of my code has a lot left to be desired but for my defense, it is literally the first game I have coded in 6502 ASM from the ground up, what else would you expect? 😀

It works, so that's good enough for me!

To be honest, the CPUs are surprisingly tight when they are played against, all things considered, I think they're quite good compared to most other Pong clones I've played before. 👀

  • Like 1
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...