logoalt Hacker News

Pong Wars on the Commodore 64

8 pointsby Two9Atoday at 1:41 PM8 commentsview on HN

Comments

Hugsboxtoday at 3:38 PM

This would make a pretty sweet screensaver back in the days when screensavers were more common. I could see myself as a kid staring at pong wars for quite a while.

Luctoday at 3:15 PM

This seemed promising at the beginning, but do yourself a favor and skip to the end to see the hilariously slow end result.

show 1 reply
kleiba2today at 2:44 PM

Fun fact: a bouncing ball was one of the first programs that the C64 User Guide taught you: https://archive.org/details/commodore-64-user-guide/page/n57...

Yes, that's right kids: the C64 came with a manual that didn't just teach you where to flip the power switch of your computer but actually how to program it!

juancntoday at 2:46 PM

Nice!

Why not just go full character mode?

The smooth motion is nice, but a bit of overkill, also it adds complexity to the collision code.

I suspect this can be done using a variation of Bresenham's line algorithm for the trajectories (keeping delta X and delta Y for each ball) and avoid most/all of the complex trig and math. Just addition and subtraction and a few sign changes.

The delta can be kept at a higher resolution than the grid (i.e. 16x so a mask can be used instead of division), so you can fudge the collision with small delta changes on impact using the SID as a RNG.

show 2 replies
Two9Atoday at 1:44 PM

Over the years I've written a bunch of things in the orbit of retrocomputing, the largest of which was an incremental game based on a C64 emulator. Somehow I've never written anything substantial for the C64 itself; this post documents my learning while implementing a graphical effect in assembly language, over the course of twelve thousand words and three digressions into side quests.

Let me know if this was entertaining, useful or even both.