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);
} |
While I’m still in the process of a Coppenheimer update (as in: gathering motivation), I’ve learned of a new profiling/debugging suite: ENGINE9000
Awesome name! :) It supports Neo Geo and Mega Drive as well, and the Amiga core is based on WinUAE (via PUAE). Hence, the visual debugging starts off with similar visualizations and DMA masks (to disable single bitplanes, sprites, or audio channels), but then adds a whole bunch of custom helpers: There’s a pixel-exact copper inspector, a flashing blitter highlighter, a sprite info feature, etc.
Here’s a cool video showcasing some of the visual debugging aides: Brian the Lion (Mode 7ish).
ENGINE9000 does much more than visual debugging: There’s source-level debugging in C or assembly language, per-frame controls (forward and backward stepping, looping), profiling, etc. You have to get used to the UI, I guess, and sometimes I ran into graphics glitches – probably just a configuration issue.
Once you get it to work, the blitter visualizer alone sure is trippy:
A great project, and lots of nifty features!
Coppenheimer has its own niche and value; for example, the live memory dump can help you understand the “Brian the Lion” logo effects way better than the video linked above. But it sure could use some new features! Maybe something like that blitter visualization, but also in the memory view, and for all DMA channels?
Specifically: Where’s my Bacon number?
I was catching up on the latest coder porn, i. e. the excellent tech write-up for Bacon of Hope by platon42 and gigabates. What a treat! I haven’t even finished it yet, but it already gave me two ideas:
- Oooh, so that’s how you draw fancy anti-aliased lines on the Amiga!
- Mmmmh, bacon… wait, don’t I have a Bacon number?
I remember looking it up decades ago (well, one decade at least), but the Oracle of Bacon doesn’t find it anymore. Last time I checked, I thought I had one, by means of:
- My IMDb entry for Die PARTEI (playing myself) *
- Helge Schneider starring in it, too
- Some early other film where Helge Schneider co-starred with a later German Hollywood star
- Some big-ass Hollywood movie with that actor and Kevin Bacon himself
I had a good laugh when I found out why I couldn’t find myself anymore. (Hmm, is that “ego-baconing”, like ego-googling?) The “Die PARTEI” movie is categorized as a documentary now! Hehehe. Well, where do you want to draw the line? With documentaries re-enabled, I got my number:
There’s even more than one path: The one I remembered was with Helge Schneider and Udo Kier in Mutters Maske, and then Armageddon and Apollo 13, giving me a number of 4. Former German chancellor Angela Merkel and former US president George W. Bush link me to the Bacon in three steps only, but that’s a lame documentary-only path. :)
Well, enough with the bacon vanity. More Amiga coding!
*)
PARTEI, what is that? Well, it’s a long story! Hmm, I guess that’s bacon-induced idea number three: Document my past as a politician a bit…






