heckmeck!

Nerd content and
cringe since 1999

Alexander Grupe
Losso/ATW

Cat content

The time has come. Time for cat content on my website, that is – just to share the joy and a little surprise.

Well, akshually, cat content on heckmeck.de isn’t new. it just took a hiatus of 23 years :)

Akshually², there have been cats on here as early as 1999!

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:

Yes, yes… pretty geilo

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!

Chef’s kiss
Dem pixels!

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.

Yes, the TV is about one frame behind

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:

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/

Click to 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. :)

CSSImage
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.

Squinty in the sky (without roses)

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?

previous next close