Michael Martin

@mcmartin.bsky.social

#retrocomputing on main, politics occasionally in the replies, video game stuff basically everywhere. If you *just* want the retrotech, https://bumbershootsoft.wordpress.com/ is my retrodev blog.

This, apparently, is how I am finding out that VBCC and Vasm have not only 65816 compiler support now but multi-segment Apple IIgs binary support. Looks like I've got some more things to mess around with soon...

happy-ferret.bsky.social@happy-ferret.bsky.social · 2d ago

@lardratboy.bsky.social Still slow and buggy as heck, but the color conversion is already looking better than my WIP Amiga port. This is Apple II GS, now written as a native 65816 application and compiled with VBCC (initially I wanted to try ORCA-C but this one fits my workstyle better).

Don't cite the deep magic to me, witch. I straight-up don't remember writing that shit. I don't know how it runs when it calls on a non-existent .txt called deepmmagic. Yeah two Ms I missed it. And yes I know it always crashes to desktop on exit. No I won't help you mod it for "deeper magic"

A 256-byte identity table (0-255 at offsets 0-255) gives the 6502 synthetic instructions it never had: AND table,X -> A AND X ORA table,X -> A OR X EOR table,X -> A XOR X LDY table,X -> TXY One page of ROM buys you register-to-register ops the silicon never provided. (via c3po, AtariAge)

Got a little more time to poke at this and made a *little* progress and some leads. * 4kHz 1-bit PCM definitely works but is scratchy as hell; could be improved with some prefiltering * If I get the bitrate high enough (40-80kHz) the system kind of turns into delta-PCM; can that work?

Michael Martin@mcmartin.bsky.social · last mo.

Playing around with complex sound effects on the #ZXSpectrum's one-bit beeper, and getting very disappointing results despite being pretty sure of the technique. The carrier wave is overwhelming everything else, and I don't have hardware to test on. Anyone out there know period works that did this?

Rebecca Heineman's source code disks for Apple II, Apple IIGS, and C64 versions of "Tass Times in Tonetown" were recently imaged at KansasFest 2026 and are now archived. Burger Becky was an incredible and beloved engineer and raconteur who we sadly lost last year. archive.org/details/tass...

Title screen of the Apple IIGS version of "Tass Times in Tonetown". A white dog dives out of the smashed computer monitor. He wears red-rimmed glasses and a brown felt hat with press credentials tucked into the blue hat band. The title appears at the top, and text below reads: "Designed by Interplay Productions and Brainwave Creations, copyright 1986 Activision, Inc.

Playing around with complex sound effects on the #ZXSpectrum's one-bit beeper, and getting very disappointing results despite being pretty sure of the technique. The carrier wave is overwhelming everything else, and I don't have hardware to test on. Anyone out there know period works that did this?

Today in Kind of Silly but Nevertheless Very Effective #retrocomputing Tricks: If you have code that runs once every video frame, and (like most old machines) video data is streamed out in real time, time your work each frame by changing the border or background color. Instant real-time usage meter!

A little pickup truck with a blaster in its flatbed shoots laser beams at mysteriously hovering archery targets. Meanwhile,the top fifth of the screen or so has a cyan border, representing the amount of time spent drawing the screen that frame. Another 10% of border below that is magenta, showing the time spent on game logic.

The cyan border spilling into the viewable area means we can expect some graphical glitches or tearing on elements near the very top of the screen; the relative dearth of magenta means that our game logic is already basically fast enough and we won't gain anything from optimizing it further.

Sometimes the magenta spikes MUCH further down, though never far enough down to spill into the next frame; it turns out that printing out the updated score after a hit is at least twice as expensive as everything else happening in the visible screen combined.

People tend to treat assembly language programming as some kind of impossibly obscure wizardry but this gets it almost exactly backwards. 6502 (above) is so simple I have a complete reference to it printed on my coffee mug. The fundamental challenge is keeping things organized at such small scales.

This bit me on a semi-recent Amiga project; I had an accidental guaranteed buffer overflow in the program, and not only did it "optimize" my finite loop into an infinite loop, it *also* optimized away all of my safety checks, defeating *even printf debugging* when optimized.

I think I've dealt with the graphical glitches in my #ZXSpectrum shooting-gallery project. I can get a decent number of moving objects on the screen at once, seems to be comfy in 50 FPS, and flicker/tear is minimal. Not bad for no HW sprites and 1MHz memory access speed. Now for collision logic. 😓

A simple 8-bit video game display, with a little truck with a blaster cannon in its flatbed shooting a bunch of laser bolts at some flying archery targets.

Update: we've got our explosion! 🎉🎆 Sprite "flicker" with timing so consistent it makes certain objects invisible if they're at certain places on the screen. Timing seems very consistent though so being smarter about screen updates should solve it.

Michael Martin@mcmartin.bsky.social · 3mo ago

I have just reached the point in my #ZXSpectrum project where I can start actually reading guides/AARs from other devs without worrying about locking in too hard to other people's designs... ... and it appears that my project should be exploding about 75% of the way through. Fun times ahead.

As much as we pretend that everything in tech is built on quicksand, it's really quite gratifying how much of the fundamentals hold across 50 years of personal computing. It's the emphasis and the optimal approaches that shift.

Wayne Young@slartyb.bsky.social · 3mo ago

In contrast to my last post, here is a program I wrote a couple of months ago running on the exact same computer. The difference is this program is written in 6502 assembly language .. and about 44 years of experience 😊

I have just reached the point in my #ZXSpectrum project where I can start actually reading guides/AARs from other devs without worrying about locking in too hard to other people's designs... ... and it appears that my project should be exploding about 75% of the way through. Fun times ahead.