Yep, it's astoundingly inefficient. I've been meaning to pull the code back into working memory and do the things I mention in Future Considerations, but it took long enough just to do this write-up; could be years before I get around to it.
Hey, thanks for checking this out. I wanted smooth motion to keep close to the JS piece that inspired this; it seemed like it should be eminently possible to get smooth motion, after all.
And yeah, I was reminded of Bresenham's algorithm a few days back, and had a suspicion that I've basically redone it independently (and inefficiently) by doing the trig. As mentioned at the end there, the math isn't where I'm losing most time in rendering though.
The Mastodon release post (cite 0) has comments talking about doing the score recalculation only at time of collision, but the worst thing I do is use a block of RAM for the playing field and another block of RAM for the _display_ of the playing field. Copying those blocks of 20 bytes, gosh it's slow.
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.
It's worse than that even: there are delays after every _bit_ transferred, due to various design decisions that were made along the way, which is why the C64's disk drive is slower than the previous computer (the VIC-20), which is slower than the one before that (the PET).
I wrote about the decisions and the resulting delays for one of those 100-post Threadapalooza projects in 2024, compiled here for easier reading: https://imrannazar.com/articles/commodore-1541
If nothing else, you can put up a static page on the basics of Boglehead-ish finances; a copy of The Flowchart from /r/personalfinance would be a great low-effort stop-gap.
Mm, I still recall the time my Windows 98 installation corrupted its registry somehow. The only fix was to reinstall, and the machine had no floppy or CD drive... getting Windows back on there was a task.
Reminds me of a ROM-hack for Zelda: Ocarina of Time from a few years ago, that was presented in the release video as using unused assets and storyline from the game itself, when it was actually almost entirely new material. A great technical achievement, to be sure, but somewhat dishonest in its presentation.
Having pulled down a copy just now, the framework itself is 526 lines of PHP, and the sample site (a newsfeed that pulls from the BBC) is perhaps 300 lines in models and controllers. I use the framework to this day to serve out my blog and other small sites, seems to work well without getting in the way.
Our VDI guy, Andy, was one of my favorites. He was grumpy, always tucked his shirt in, kept his desk Type A clean and was just so principled. ...I always thought he'd be there and was devastated when I found out he died unexpectedly.
"What about his homelab?" I thought. "Will his wife's wifi devices even be able to get an IP address if his DHCP server goes down?". I reached out to her to see how she was doing and she told me that, six months on, she avoids his office at all costs. She worries what will happen when her TV no longer works, when her wifi no longer works.
Sounds somewhat familiar. I worked at a place that replaced a basic LAMP stack with microservices written in Perl and MongoDB as a backing store, for the sole purpose of raising complexity.
And left Mongo on the default settings for the time (speed of return over reliability of saving data), so they ended up with a reporting replica which was MySQL.
Don't think I've seen anything before or since which was architected so exactly backwards.
And I've been using vim exclusively for north of fifteen years with Tab replacement, never had a problem with the editor getting confused about what happens with spaces when I hit Tab.
Some detail about the corner cases you've run into would be great, if they're happening constantly I can see how it would be a bugbear.
"CBE" refers to Commander of the most excellent order of the British Empire [0] which is a title conferred by the monarch on those deemed to have performed especially well in the service of the nation.
So you can see how its value might be diluted by this instance.
I should write that down; -Z would've been really useful when my SSH server was falling over in a heap and I was left scrolling through strace to work out what happened.