I was staying at a… mature hotel this week. Look at those comfy stairs! Don’t you want to take a nap on them right there and now?
As a bonus, the room had a TV that was not built into the wall or otherwise obstructed. The HDMI port was accessible, and I could connect my mini PC to the TV. All of a sudden, a magic moment emerged:
Together with the retro furniture, and feeling clever for bringing the cable, and seeing my stuff appear on the hotel’s TV screen that was showing a soap opera moments before – I felt like I was eight again: We were visiting grandma and granddad; my brother and I had brought our exciting new Commodore Plus/4 so we could hook it up to the black-and-white TV in the tiny playroom upstairs. The feeling of accomplishment we had after all the fiddling to get it to display the computer’s picture – our picture, the one that we controlled! Back then it was figuring out how to adjust the channel frequencies on the TV, scanning through endless static until the BASIC prompt began to form; now, it was finding a picture mode that doesn’t chop off the borders and doesn’t apply a horrible sharpening filter.
Sadly, the image above cannot fully capture that emotion. Was it because “hijacking” the TV programme felt similar? Or because the mini PC doesn’t have its own display and needs the TV, just like the old Plus/4 did? That it only needs to work at all, and the resolution or colors don’t matter?
Or maybe the smell is just missing. :)
The time has come. Time for cat content on my website, that is – just to share the joy and a little surprise.
On with the cat content and the surprise; here’s the neighbor’s cat playing with their new toy like it’s the best thing ever since scratching the leather sofa:
Now, the cat playing with it so frantically isn’t the surprise – that thing is probably loaded with catnip. But after the cat was “done”, i. e. exhausted from the drug-induced frenzy, I looked at the toy and had a wait-a-minute moment.
Wait a minute! Umm… why does this toy look so familiar?
Is it a coincidence? I didn’t even buy that toy, so my subconsciousness cannot be blamed…
You be the judge! I’ll say: Cosmic coincidences for the win – it’s my Valentine’s Day picture that ran on Finland’s Teletext service!
You’re seeing it too, right?
While testing my Coppenheimer update (still in progress), I loaded up ProTracker for testing. I started wondering how it paints the pattern data at the bottom of the screen (the song “contents”). Is it double-buffered? How fast can it redraw everything? (I know from experience that plotting little 8×8 characters with the CPU can get really slow – heck, it’s even slow in the browser without optimizations!) And does ProTracker pre-render the next pattern it will display?
It’s not double-buffered; there’s only a single “sheet” of rendered pattern data in memory. It would be wasteful to do it differently, I guess, you need that precious chip RAM for samples! (On classic Amigas, all graphics and sounds must be in the same special memory region, and on an Amiga 500, it’s only 512 KB.) From address zero, the memory looks like this when a song is loaded:
For its display setup, ProTracker separates the background from the moving parts. The main screen has four colors and contains all the controls:
On top of that, there’s a single bitplane for everything else: Labels, the waveform previews, and the pattern data. This way, you only need to update dynamic data in one place (one bitplane) and not have to worry about bitplane combinations for the different colors etc.
Combined with the background and a mid-screen color change, the “dynamic” layer comes out as black, yellow, or blue:
Another mid-screen change sets the position of the “pattern sheet” (starting at row 00 above). In other words: The scrolling-up is done by altering a pointer, nothing is redrawn for that. But what is redrawn, and how fast?
When the current pattern changes during playback, all notes and effects are repainted row by row. And it’s indeed not very fast at that (each update below is 1 frame = 1/50 of a second in real time):
But there is some cleverness built in: Repainting already starts when you’re on the last row of the previous pattern. Since only the first 8 rows (00 to 07) are visible when the display switches to the new pattern, this should™ be fast enough to only show correct pattern data!
Or is it? Well, not always! If you set the song speed to maximum warp, ProTracker can’t quite keep up – captured here on real hardware:
So, what’s the take-away from this pointless excursion? When you’re going F01 or faster (like in this example, meaning a new row is played every frame), don’t trust your superhuman eyes! :)
Oh, and the Coppenheimer update will take some time. Not only because I get distracted by squirrels, erm, spontaneous side quests like this, but also because the plans are growing while I’m working at it. New ideas, keeping up with the surge of new look-into-the-box Amiga emulators (most recent), prioritizing, UI planning, yadda yadda.
Lastly, I need some distraction from not being able to be at Revision this year. Funnily enough, just in this very moment I saw this scrolling by, in BUS ERROR Collective’s latest oscilloscope-audio demo:
…which reminded me of a fast compo scribble I did last October: Don’t say it! :)
Procrastination, blessed be your name! Or rather, the side quests you bring: Instead of cleaning up my office, I suddenly had the urge to try a little hardware modification. To my surprise, I didn’t break anything, and was rewarded with a flicker-free, phosphor-bright display option for my Amiga 500.
Needless to say: That hardware task itself had also been simmering in the “maybe later” stash for some time. I think it was two Revisions ago when I bought me an Indivision ECS V4 at the Individual Computers booth, a flicker fixer for non-AGA Amigas. The VGA output modes are fully configurable, your precious Amiga pixels get neatly scaled, and it can add filters and configurable scanlines if you’re into that. Plus, everything can be configured from within the Amiga. Neat, eh?
The manual started off with a bunch of warnings I had to ignore (“installing the product is very complicated […] steps require a lot of experience and skills”) because what was the alternative, clean my office?
Sadly, my package didn’t come with the right CIA adapter, I’ve only got a small square one suitable for Amiga 600s. This means the Indivision cannot intercept mouse and keyboard inputs, and I get no magic key combination to enter the live configuration mode. Too bad, but probably my fault (as I said, I bought it at Revision, i. e. drunk). Also, the supplied configuration tool is pretty great, maybe I don’t have to tweak the settings on the fly that often.
The installation went well. Basically, you only have to remove the socketed Denise chip with a rusty screwdriver (carefully), and then jam the flicker-fixer board into the socket with a hammer. I was relieved when the Amiga booted up again! It was already looking great on a TFT flatscreen:
Then I remembered there was an old PC monitor tucked away next door: An ADI MicroScan from around 1997, barely thirty years old! Now we’re talking! The colors, the picture stability, the vibrancy, and the vibe are top notch!
Even better: Since the Indivision is a fully functional Denise replacement, the original monitor output still works, and I can connect a TV and the VGA monitor at the same time. It’s fantastic. This setup even makes sense in a way: The TV runs at a clean 50 Hz and has sound; the PC monitor doesn’t do any weird postprocessing and is just a joy to look at.
Now there’s a naked Denise chip lying around I don’t need anymore. Poor thing. I can’t help but wonder about all the graphics it has seen in the years…
I don’t care if this reads like an ad for this product (well, it is great), I just wanted to share my excitement. In the mid-1990s, I didn’t really see the value of flicker fixers – just buy an AGA Amiga?! Three decades and two dead 1084 CRT monitors later, I am finally convinced they have their place. :)
The Old Web™ is awesome: lovely self-made home pages, doing your own hosting, quirky designs, oldschool forums, curated hyperlinks – all that stuff. I feel like I’m seeing more and more people turn (return?) to the golden old ways… Do we live in a renaissance of the Old Web™? I wish!
Well, yes, I wish that. Period! But whether it’s wishful thinking or not, here’s a cool, recent project for the DIY web scene:
- Wander Console - Discover the Small Web
Embrace the Old, erm, the Small Web! Embrace serendipity! Discover awesome content made by fellow humans!
As a website owner, you just need to download two files, add some links, and you’re part of a modern-day webring – only cooler and more advanced!
I’ve added a Wander console of my own: heckmeck.de/wander/
It contains many links from my What’s Cool? blog post series, and of course some of my own projects (I’ve already seen that I need to make some adjustments here and there so they can run in an IFrame – damn you, CORS!).
Since the latest Wander release allows you to customize the CSS a bit, I had to put in some AmigaOS-style chunky buttons. And I took the time to properly emulate disabled buttons while I was at it:
The CSS got a little tricky (maybe there’s a better way?), but at least I now know how to improve the disabled buttons in Coppenheimer for the next update. :)
| CSS | Image |
|---|---|
button {
border-image: url(border.png) 2;
border-width: 2px;
position: relative;
} | ![]() |
button:disabled::before {
content: "";
display: block;
width: calc(100% + 4px);
height: calc(100% + 4px);
position: absolute;
top: -2px;
left: -2px;
background-image: url(disabled.png);
} |







