Tuesday 30 April 2024

My Joystick

I had a few arcade-style joystick parts lying around, cannibalized from the iCade gimmick for the early iPad. I felt it was time to finally build an Atari/C64/Kempston joystick.

As usual, every new project needs some more tools or parts I didn't have before.


First experiments

I took some hobby-shop 3mm chipboard and simply began fitting the parts together.

This board was mushy, and when drilling it felt closer to cardboard than chipboard or wood. Besides the messiness, it worked well enough.

Some of the parts

I drew a rough 8cm x 10cm area for the joystick as a sort of minimum estimated fit for the parts inside. At this point I'm not sure how big it is going to be.

Protip: Do the central hole for the joystick shaft first, it will be easier to do the holes for the screws afterwards. Or just be more careful with the pilot hole drilling.

The joystick part has a kind of extrusion at the root of the shaft, which would require a 21mm hole. This caused some woes at later stage.

Here I'm still searching for the fire button positions, not following any existing measures.

Drilling with the 24mm flat head (wrong size)

 Arcade buttons are like icebergs, there's a lot more of them under the surface. So I have to put healthy space between the joystick shaft and the button. This can also make the case very tall.

After drilling the hole for the fire button, I found out I could not fit the part!

It turned out I need a 28mm drill and not 24mm. Not sure why I thought I owned a correct size.

This was the time to throw away the first test piece, I won't even dignify it with the name "prototype". Tiny problems and mistakes accumulated and there's no way I'm going to re-drill an existing 24mm hole into a 28 one.

Second attempt

As I would almost definitely need the 28mm drill, I thought I should get a 21mm too for the joystick shaft fitting. After the purchases I of course found at I did really already had a 28mm drill...

A 21mm flat drill isn't really a common category. 21mm fluted drills are more common, but I somehow suspect I'd be better off with a flat drill here.

A hole saw is a possibility, but the set I used for making my chess pieces doesn't have the correct sizes and I suspect they aren't accurate enough. 

I have no experience of the more robust looking hole saws, but I tend to think these are for rougher work anyway, such as making holes into drywalls.

Adjustable flat drills look a little shoddy as a concept. I felt it might be enough for the few shallow cuts I need, so I ordered one.

The first impression was that it is a rather crude instrument.

A clunky but perhaps necessary tool

I didn't get how to use it at first, the bite was unnecessarily hard, and it is difficult to use the power drill to get anything done.

After breathing in and out a few times, I properly sandwiched the board with a piece of wood, clamped the whole thing and had another go. It's one of those tools that requires a little patience and just the tiniest amount of skill.

First I drilled a normal 6mm hole through the sandwich so the drill/screw part in the contraption itself doesn't get stuck. 

This worked, the only remaining problem was adjusting the blade to 20.5-21mm. The markings on the blade are not especially useful.

It shouldn't matter too much, if the extrusion doesn't fit 100% snugly, but through trial and error I reached a fairly accurate result, after which I don't need to change the adjustment.

It's worth checking the blade really goes through the board and cuts the underlying wood fully, otherwise there's the tedious task of removing and filing away remnants.

The blade and the drill hole need to be constantly cleaned of fluff and dust.

This material is crap for drilling

The result is clean enough, any inaccuracies and muddiness is probably due to the board material rather than any problem with the adjustable flat drill. Still, I suspect there might be better variable drills.

The problem with the arcade buttons is the height they give to the box. They were meant to be installed to the arcade cabinet, after all.

I already became a little tired with the project, and continued when I got better parts and materials.

Some time passes: 3rd attempt

Here I switched to 3mm MDF board, which results in far more accurate cuts and less "fluff".

The 21mm hole was still a dirty process with the clumsy device.

Ahh, nice and smooth MDF

The 28mm blade was excellent, the bite was just perfect and it didn't take long to push through the 3mm thickness, using a 6mm pilot hole.

It's easy to overestimate how things fit in a small space, so I headed for a larger rather than smaller box. I can make a new box some other time, if necessary.

I ordered shorter arcade buttons, so these no longer determine the height of the box. The stick mechanism is now the tallest piece inside.

I ended up making a 151 x 115 x 42 box.

Putting the box together is a little tricky at first

The 4 screws next to the joystick are 3mm machine screws, there are also two more connection points that can be used.

I glued the outer walls together carefully, without applying too much clamp pressure. This is a precarious moment in this method, but it's also easy to move the parts as the glue isn't too quick to dry.

I don't favor superglue/glue gun approaches as I feel the results are either brittle or messy.

Another layer is added, at the same time giving a sort of rebate for positioning the case bottom. I used some more clamp pressure here.

The project is moving forward

Small slices were added to the corners, giving some substance for screw holes. Again, these slices are clamped together using glue, so the overall package should be quite sturdy. I still suspect the box might give up if it fell from a table at a vicious angle.

The 9-pin cable is from a dead Tac-2 (and believe me it is dead). I'd prefer to create the cable from new parts but this will have to wait for another time. At least the joystick cable has the nooks to keep it firmly attached.

I added a tiny protoboard piece with the necessary soldering for a "ground rail" and a pin strip for continuing the U-D-L-R cabling.

This way I can still alter the configuration.

No matter how simple the project, all elements ought to be have some planning beforehand. The cabling is a little messy but with some luck everything fell into place well enough. 

The box is then shut with the cover, using four small countersunk screws. This solution doesn't use machine screws and bolts, I don't expect to open and shut it many times.

After some minimal sanding and filing of the sharpest corners, it's off to testing.

Some of the tools used.

First games

I took the stick over to my Arduino USB adapter and played a few games on the C64 emulator and Mame. At first I held the joystick on my lap, as the box didn't have rubber feet.

Instantly I can feel the iCade-sourced joystick isn't that great (it wasn't back then). Despite the microswitches there is something ambiguous about it, and it occasionally feels like gears grinding each other.

In addition, at least to me proper arcade sticks don't work as well with Commodore 64 games, where I'm used to the Tac-2. I'm again looking at games with crisp controls, The Great Giana Sisters and Buck Rogers. After playing some more I can get used to it.

Things felt better with ZX Spectrum evergreens Bruce Lee and Saboteur. Many Spectrum games are a little sluggish and more lenient to begin with. Simulator-type games, such as Elite, are even slower, but for other reasons these are often better played on a keyboard.

Moving over to arcades, Mr Do's Castle and Commando (mind you no grenades) on Mame already felt a little better. It's closer to how it's supposed to feel, if only the joystick part was better.

The final touch for now.

The box makes the microswitches sound quite loud, but that might be another failing of the stick part type. The buttons are more silent.

It remains to be seen whether I need to make another, "final" prototype, or if this is enough after adjustments. I can look at making it more gentle on the hands, and maybe damp the sound somewhat.

Friday 26 April 2024

Electro Boy clock/automatic timer

A fleamarket find, I had a hunch it would work even without any promises.

Grime made it looked worse, as if the plastic had melted at places but all wiped off nicely. 

It's not any kind of collectors item, I paid 2 euros and I'm seeing them going for similar prices in eBay. Boxed and with manuals it might fetch some more.

I didn't think much about the weird clock face and the fact it has an outlet for plugging in another device. I thought it was a cool-looking clock from 1960s/1970s. 

But it's not just a clock but a timing mechanism with on-off switches around the face.

From what I've seen, electric timers are usually sold separately as add-ons to the electric outlet, without any actual clock dials.

I've now learned the Electro Boy brand from Muller is quite old and there may be devices with similar function already from the 1950s. The one I have is most likely from 1970s, and from what I could find there are at least white, yellow and black varieties of this same model.

There are 96 separate switches, giving a quarter-hour resolution to the timer.

The knob in the middle adjusts the entire time. You can't separately turn hour and minute hands. Also, you can't lazily assume AM or PM, as the timer hand is in 24h format. The adjustment is pleasantly tactile and audible.

The clock in action is very silent. I'm generally annoyed if I can hear the tic-toc of a mechanical clock, but here it's really subtle.

In contrast to this the relay inside is quite noisy, I wouldn't want to be sleeping nearby when it switches on. There's a single button on top of the clock to override the switches.

The timer switches caused a few moments of head scratching. I've understood you usually create "zones" for on and off time ranges, but here each switch acts as a flip-flop. So you only change two switches to create a time range. This may also pose some limits to how the timer can be used, but I didn't go out of my way to test different configurations.

Turning switches on very near the 24h hand doesn't often work well, and trying to push the hand past a set switch (for testing purposes) feels a little suspect too. The device works best when the time is set knowingly well beforehand.

The clock invites romantic notions of an electro-mechanical "smart home" before the internet era, as it looks like more of a household item rather than something for the workplace/garage.

You know, in times past, people would wake up and move physically to their workplaces, as if parts of a huge clockwork. As your alarm rings, the porridge and coffee would already be heating up.

It's unlikely you could use this for activating an oven, but perhaps a separate cooktop, toaster or a water heater may be turned on before the alarm clock (separate) would ring.

Or, turn on a separate radio and also make it turn off as you've left. This is already something many later alarm clocks would do anyway.

I did test an USB mini-fan, but then preferred to operate it with a more current timing mechanism.

I'm thinking of a scenario where the clock turns on an Arduino or a Raspberry Pi, it does something for 15 minutes, and is shut off. From a power consumption standpoint it might be better to use a low-power Pi directly and have it on 24h...

So, ultimately, it might be best to use the old Electro Boy as a cool-looking clock.

Industrial electronic timers and timing computers are still produced under the (Hugo) Muller brand. Based on their website this became their main product in the 1980s.

Sunday 31 March 2024

Star Wars prequel Novelizations

Here is something I never thought I'd ever read, yet here we are.

The stories aren't that amazing, but I wouldn't blame the novel authors for that. My understanding is the books were written prior the films' releases, so the authors had access to visual material but certainly not the entire films.

Then again the scripts might have events and dialogue that were omitted from the films at the last moment, giving rise to the idea that known deleted scenes would have higher "canonical" status due to their inclusion in the films' novelizations.

Oh, and it's been a while already, but Disney decreed these as no longer "canon". B-b-but these are official film novelizations? It should teach people not to trust any such labeling, or preferably, forget the whole idea of canon.


Terry Brooks: Star Wars: The Phantom Menace

The story doesn't start with the Trade Federation ships in vicinity of Naboo. Instead we're with Anakin the wunderkind on Tatooine. We get to see what he was up to before he appears in the film, and what kind of life he lived.

Whether these pre-prequel materials are based on something Lucas left out of his film, or were invented by the book author, I don't know.

In any case it's a good choice to have the story from Anakin's viewpoint, fleshing out the character a little more.

With the huge entourage moving around, the storytelling occasionally needs lists like "Anakin, Artoo detoo, See-threepio, Jar Jar and Padmé went this and that way", something that works more economically on film. Book-to-film transitions often reduce the amount of characters, but here I'm wondering if leaving a few out would have done good. 

Characters such as Watto and Sebulba, despite having descriptions of sorts, also remain unclear. Well, the films didn't flesh them out much either, but their appearance spoke volumes.

Star Wars might be considered "visual sci-fi" rather than science fiction proper, and stripped of this quality the story is lacking in science fiction of any kind.

After seeing the film, the book may feel like an improvement, especially where the text can include more helpful explanations and character inner motives, giving a little more clarity and purpose to the plot. 

Qui-Gon is more explicitly made to sound like a rebel Jedi, with by-the-book Obi-Wan having no clue as to why Qui-Gon would ruin his career so. Kenobi's a little like a PhD candidate just about to finish, thinking his supervisor isn't all that.

It's more apparent that Anakin continuously pines after his mother. Future events are in some ways better prepared, with Anakin saying he will eventually marry Padmé. You can also try to imagine Anakin just a little bit older.

What about some of the things that stuck out like a sore thumb in the film?

Jar Jar Binks in literary form isn't as annoying as his cinematic counterpart. Still, a lot of effort has been taken to reproduce his antics faithfully in text.

The droid army is more sinister as they don't go bumbling around shouting "roger roger!" In fact the regular droid troops say nothing all, possibly the literary form does away the need to personalize them in any way. 

Anakin's seemingly accidental assault on the Trade Federation ship has some more explanation behind it, and made to tie in more explicitly as evidence of him being the Chosen One. Tonally, it's still a kid destroying a battleship while yelling "whoopee!" while doing it.

The book doesn't offer a radically different interpretation to the events described in the film, but then again who'd expect that from a novelization.

Brooks famously wrote the Shannara series of fantasy novels. I once tried reading the first one but circumstances prevented me from finishing it.


R.A. Salvatore: Star Wars: Attack of the Clones

Padmé Amidala is to represent Naboo at the Galactic Senate, to vote against the Republic founding an army to counter the growing separatist faction. Continued assassination attempts force her to return to Naboo, but not without the Jedi Knight Anakin Skywalker as her guard.

Again, the beginning of the book describes events prior to the film.

In this case, it's Shmi Skywalker, Anakin's mother, and the book gives details about her life with Cliegg Lars on Tatooine. Owen and Beru are also involved. We get more insight on how Shmi gets kidnapped by the Tusken raiders, how Cliegg lost his leg and why the farmer community could not be of more help.

Anakin's inner life is again described more, which actually doesn't make the romance portions much better. What does work are the parts with Padmé's sister and family on Naboo. This was quite interesting and added a further dimension to the relationship.

It was also amusing to read more about the interactions between the kid Boba and his father Jango Fett on Kamino. Jango is nothing but a proud father of the future best bounty hunter in the galaxy.

No less than five planets are featured: Coruscant, Naboo, Tatooine, Kamino and Geonosis. I never gave this much thought, but no wonder the story seems a little incoherent.

When the narrative turns to the finale on Geonosis, the prose becomes more minimal, almost to the point of being curt, with only little added detail. I'm wondering if anyone who hasn't seen the film gets what kind of world Geonosis is, what the war equipment and the clone troopers really look like.

I found this interesting:

[Count Dooku:] "And let me remind you of our absolute commitment to capitalism... to the lower taxes, the reduced tariffs, and the eventual abolition of all trade barriers. Signing this treaty will bring you profits beyond your wildest imagination. What we are proposing is a complete free trade." He looked at Nute Gunray, who nodded.

The separatists are not a veiled allegory, they are explicitly stated to be free-trade capitalists. Although the name "Nute Gunray" is known to be a composite of Newt Gingrich and Ronald Reagan, the scene perhaps also echoes Hitler's promises to the German industry.

There's a central mystery to all of this, but as nothing is really revealed in this installment, the threads are just left hanging around. Obi-Wan even comments on occasions how nothing makes sense, and I'm not sure if it's a meta-observation or not.

Count Dooku is a stand-in for the main villain, but as he features very little his characterization and motives remain unclear. The added material does little to remedy this problem, although it is fun to read about his lightsaber technique.

The overall plotting is something like this:

–The Sith Lord, who is not yet revealed, is pulling the strings at every possible stage.

–The Sith Lord is out to discredit the Jedi order entirely, and like a parasite picks up the Republic as the platform for power. The separatists are a bogeyman concocted to create disarray, bypass normal laws and to advance to a power position through technically legitimate means.

–It is the Sith Lord who ensured both the droid army and the clone army would be created.

–The Sith Lord is behind the assassination attempts, yet also ensured that Anakin and Obi-Wan would guard Padmé.

In absence of any other explanation, it's possible the Sith Lord made sure that Anakin alone would spend quality time with Padmé and had Obi Wan follow a breadcrumb trail to the discovery of the clone army, leading to its adoption.

Just to draw a line somewhere, I find it less credible that the Sith Lord fomented the Anakin-mother relationship, arranged Shmi's torture and the ensuing nightmares (such theories float around).

Rather these events were useful raw material for directing Anakin, and generally I find it more likely the Sith improvised and used emerging situations rather than planned everything beforehand.

A villain having a complex plot isn't always a great recipe for a movie plot, and despite the brave attempt it doesn't become much more compelling in literary form.

Salvatore is also an experienced fantasy author, with Star Wars novels in his resume.


Matthew Stover: Star Wars: Revenge of the Sith

This novel is held in high regard (see here and here) so I also had high hopes for it. In fact this was one motive for reading the whole trilogy.

Stover takes far more liberties with the dialogue and detail, that's for sure. You feel you've almost read an entirely new interpretation, and not just something that retells the film with extras.

I was surprised that on the whole I didn't really like it more than the other two. I felt the author takes perhaps too many of those liberties, reinterpreting events using prose thick with bombast and references to other Star Wars media.

There are certainly some fun storytelling devices. Unlike the film, much of the rescue operation at the beginning is told from Count Dooku's perspective. He then doesn't mention silly things like R2-D2 setting droids on fire, and the hijinks in the lift are mentioned in passing, as something not worthy of note.

It can get little dense. There's a page (63 in this version) that makes no less than five references to Star Wars lore not actually mentioned in the prequel films, beginning from the worlds of Aargonar and Jabiim, name-dropping mynocks and Asajj Ventress, ending with a Krayt Dragon simile. Instead of pulling me into the world, it makes me wince like a Jawa trading a Bantha to a Wampa.

Dialogue and scenes are often greatly extended and modified from what must have been available even in the script. At the crucial moment Palpatine offers Anakin whatever his heart desires, there's a weird escalation as Anakin plays along and says first he wants a speeder.

Ok, I would have wanted to have this scene.

But it's not only about writing style. I disagree with the very idea that Kenobi's and Skywalker's heroic deeds are distributed to large masses via some supposed interstellar Holonet, leaving an impression on an entire generation.

If there's a space internet, I have to ask how are Jedi relegated to an "ancient religion" and barely known after 20 years? If anything, novel writers ought to have found ways to explain how the fame of Jedi diminished.

The novel must be the main distribution point for the theory where Emperor's deformed face is supposed to be his original Sith face. Any other appearance would be a mask or an elaborate disguise. The idea is presented vaguely here, but many take it seriously. No, just no. It's a stupid idea. Forget about it.

The author makes references to Tao Te Ching, as phrases such as "hope is as hollow as fear", "darkness within darkness" and "what is a good man but a bad man's teacher?" pop up here and there. It might even be the Stephen Mitchell translation specifically. Also, some of the scenes describing how Force "feels" to its user seems derived from Taoism, through western eyes at least.

This is another interesting idea. The Star Wars films are famously inspired by Samurai films and probably Wuxia too. Now this is a book, so why not take some eastern literature and philosophy in the mix? But it's one more of the liberties taken with the source material.

Revenge of the Sith is certainly a wild ride, brimming with ideas, ups and downs, hits and misses, and I can't help but think it would have been better had it been toned down a notch.

Sunday 24 March 2024

Multipaint 2024

Another year, another version. Making the cut between the "annual" Multipaint version is a little arbitrary, but I think this year there's some cause for this.

For once, the new Multipaint should be a little faster than the old one. This is largely due to using a more Processing-friendly way of rendering the target platform screen as an 1:1 bitmap first and then scaling that using Processing's own image() capability. (Processing is the Java-based environment in which Multipaint is programmed in).


Pan and preview window

For panning the screen around, no new redrawing is needed on the target platform level, making the pan and internal pseudo-window handling (palette, settings) easier.

Previously I felt the non-magnified viewport should be fixed, connecting Multipaint with old programs such as Deluxe Paint, Degas Elite or Art Studio. But it did cause some clunkiness when zooming in and out near the screen edges with mousewheel.

Now I think it's possible to have my cake and eat it too. So, even if the 0-level screen can be panned by middle button drag, if you use the old fashioned magnify tools you might not even see it happen.

The overhaul also streamlined the viewport drawing routines and refreshing the screen. This may open up some new possibilities for handling the screen in the future. The border is no longer "infinite" and there's empty UI area outside the border.

Huge preview window, and free panning demonstrated

Having mentioned the pseudo-windows, the Preview window is now a properly detached, separate window, which displays the target screen contents in either 1x or 2x pixels, and in a more correct aspect ratio. This was a solution that has worked well without problems in Marq's PETSCII editor, so I finally dared to use a similar approach here.

There's very little to prevent me from enabling the more accurate aspect ratios in the main screen, but I still have a hunch it's better to keep pixels in integer proportions, as scaling can produce ugly artefacts.


Processing 3 and Processing 4

Another issue concerned moving over to the newer Processing 4. This shouldn't be a huge deal, as the same source now appears to work in both without changes.

Some reports have been trickling in of Multipaint again not working in some Windows or Mac configurations, whereas it appears a Processing 4-built application might work in these situations.

However, the Processing 4 -build requires OpenJDK 17 or higher. At least the creators of Processing have now made this very clear. In the past I felt it was slightly uncertain if OpenJDK is even fine and if so, which version to use. Or I simply couldn't be bothered to find that info.

Because it might be a chore to get OpenJDK 17 working, and your old Multipaint works fine, I still offer the main download as a zip with Processing *3* builds. The Processing *4* builds are in a separate zip available on the website, in case you feel the old Java/Processing is the problem.

Edit: In Linux Mint you can simply open the Software Manager, search for "openjdk" and choose to install for example Openjdk-21-jre. After this, the P4 version of Multipaint should work.

Sadly, as progress moves on, older computers might no longer have meaningful way to update Java or OpenJDK. Acquiring a cheap/free recent enough Linux laptop shouldn't be too hard, though?

Processing might eventually have an end-of-life too, but at least they still bother to chase the recent developments.

Big screens, small screens

With the improvements above, I was quite happy to use even a maximized app window on a 2560x1440 display. But as usual, it may be your xxxtreme graphics workstation with super-high resolution doesn't provide the best environment for Multipaint. I would still suggest not maximizing the window.

At another end, after freeing the panning, coupled with better GUI scaling and the preview window separation means that on a small-resolution screen (~1440x768) you might be able to find more helpful window positions. For example, the Multipaint main window could mostly serve as a magnify window, while looking at the Preview window for overview.

Main window and preview window side by side

I did fiddle around a little with Raspberry Pi 400, Multipaint does work on Raspbian OS and it is reasonably possible to draw using it. I wouldn't use a large desktop resolution, as a huge Multipaint window slows things disproportionally. Conversion tasks, both from files and in between modes, are also quite slow.

On Raspbian, the file selector may look horrible, the worse the higher the desktop resolution, and I may eventually adopt Marq's choice from his PETSCII Editor. It is generally better and seems to work on Raspbian.


Unique Character count, "UQ"

Unique Character count was added to the C64 multicolor mode, just to test see how Multipaint could help in creating character graphics. The feature request and testing was done by Shine.

At the infobox, UQ: displays the number of unique characters in use. Multipaint checks whether the screen would work as a multicolor character screen, but doesn't understand the mixing of hires and multicolor modes. If there's a problem the infobox will just bluntly say "UQ:???" and you have to figure it out. 

The multicolor character mode has three separate global colors, and each character area can have one more color, just as long as this color is from the range 0-7.

It might make intuitive sense to use global colors from the 8-15 range, as you cannot reach them from the per-char color. However, many images and games still use 0 (black) as global color to have more freedom to combine the 1-7 colors with black.

This screen uses 75 unique characters, the three greys form the global colors (screen bottom)

Although the multicolor screen background is always selected manually, UQ estimates what the two extra global colors might legally be (shown below the selected colors, among the global color) and understands the use of 0-7 colors in character-by-character basis.

This is also partly the reason the feature can't (yet) be more specific in showing where the "mistakes" are, as it's a little tricky to make a difference between "you messed a global color" and "one of these characters doesn't work".

The character idea might not fit that well with the Multipaint philosophy of drawing single standard bitmap screens in simple way, but there it is. I felt the routines might serve more generally as a rudimentary packer, or for creating modes that have character limitations built-in. The long-coming Panasonic JR200 mode springs into mind.

UQ may be improved in the future, and exporting as a character mode screen should be a possibility.

Other enhancements

At the tail end of Multipaint 2023, I added the ZX Spectrum Next modes. The bugs and even the occasional crashes this addition created, should be fixed for 2024 version.

I added some Commodore 64 goodies, mostly things that work under the hood. Loading in a PNG file that contains standard C64 graphics in 320x200 resolution should now work better.

Multipaint can have a hunch of what kind of palette has been used, and make a good guess of what the background color should be in multicolor mode. This is simply achieved by converting the same image 16 times(!), to see which of the background colors produces the least "lossy" conversion.

As before, a really non-ambiguous border around the 320x200 area will be cropped, and this has not been improved in any way.

Still, the conversion engine is not that great and I have no big intention to develop Multipaint into a generic conversion tool. But as I said, it should load C64 images more accurately from PNGs.

This also affects the internal conversions, switching from other modes towards C64 may produce better color identification and a more useful background color in multicolor. This is especially important if using the C64 multicolor "free" mode to create something that works in another background than black.

Opportunities for some tiny UI fixes always arise. Just a couple of examples: If the magnifying glass tool is currently on, the mousewheel zoom would behave erratically, now it's cleaner. You can pipette the border area and get its color that way.


The Future

It's already more than ten years since I started Multipaint, although the first public release was at 2016!

This version shortened my to-do list somewhat, but there are also long-standing issues and omissions I could not yet cram into this release. Usually the major Multipaint release gets advertised a little more and I will find out the changes broke something or didn't quite work as intended, and this will take some of my time.

Despite the messy and sprawling nature of the code, I still have a pretty good grasp of how it works and how to do changes to it. I have a good idea of what can be fixed quickly and what needs a more dedicated effort, and what probably isn't worth trying to change anymore.

I had mused about the viewport overhaul in my mind for a long time, and then it was surprisingly quick to do. Trimming it around the edges (almost literally) took more effort.

http://multipaint.kameli.net/

At CSDb

https://csdb.dk/release/?id=240697

Thursday 29 February 2024

We are Rewind WE-001 tape player/recorder

WE-001 portable tape player

I did a rare thing and straight away bought a gadget advertised on Facebook: a portable cassette tape player.

I didn't want to dilute my impulse by examining too many reviews and just ordered it. Ok, I saw the Amazon reviews appeared to average to at least ok/good.

Less than week later I became an owner of a "Keith" variant of the WE-001 player. There are more nicely colored models but I stuck with the grey one.

The device is branded as "We are rewind", the design is from France, built in China.

The styling is good and the object feels heavy in a nice way.

A feelgood product

The packaging is also fun, had I seen this at a store it might have been an instant buy.

Inside the box there's a quick guide and the proper manual, and as a courtesy, a short black pencil.

Confession: I probably never used a pencil for rewinding tapes back in the day.

Another confession: I probably never owned a commercially recorded music tape during the 1980s-1990s. Computer tapes? A bunch. And a few copied music tapes, which I guess killed the industry.

The player can be recharged using a USB-C cable. There's a Bluetooth wireless playback too, but I felt a little weird about that. I mean, if I intend to play back physical media, why break the chain?

The Unboxening

From what I've read the audio quality has been the main beef for some, but for most of us mortals the playback is good enough for what it is, a fun and nostalgic player.

But I also have to say I don't have much experience with tape playback during past 30 years. With my better headphones I could find some tiny hiss I would not expect from any current digital device. Just blast away something suitably loud and it's not noticeable, or use more forgiving headphones. I tried a couple of new and old tapes, and the output was what I expected.

Recording might be another matter. The manual recommends "Type I" tapes. They do sell the player together with a tape, being the cheapskate I didn't order one. Using a recommended tape would have helped make a more definitive statement.

There are not many music tapes around.

As it is, I did a recording from Fostex MR-8 digital recorder output to a 15 minute "computer" tape. Although at playback the speed appeared constant, there was occasional garbage here and there. These were not even at the loudest or bass heavy points.

Another try was from a Steinberg UR12 USB audio interface headphone out, recording Dave Rodgers' Deja Vu out of Youtube. As the results were somewhat similar, it's possible the tape is to blame, but it may also be the recording really is the weak point of the device.

So, the results are still a little random and inconclusive. My old tapes don't all have specification markings. The device has no peak light indicator but an automatic level detector, not a great starting point for recordings.

Instead of red, the record button is a sprightly yellow.

There's no eject button to open the lid, but this was probably rather common with portable players. You can simply pull the lid open.

At least by 1990s portable players became very round and with non-protruding buttons. The reason why WE-001 looks fresh is because such considerations have been ditched. I can imagine the sharp corners and buttons getting a little stuck inside pockets. But really, who would carry this player around just as casually?

Not much experience with battery life, I've had a few hour-long sessions without the LED giving any kind of signal yet. The promised battery life is 8-10 hours, a full recharge takes more than few hours.

And the connectors for power, audio in and audio out. Volume control to the right.

One important question remains. Can I use it to load ZX Spectrum tapes?

I had no such luck with the new ZX Spectrum Next. Using a stereo cable (TRS both ends) didn't cause much more than some border flickering. Similar problems did arise with a proper Sanyo Data Recorder, so I'll have to treat the Next as a separate issue, maybe there's still something I've not yet understood about the computer configuration.

Then I moved to ZX Evolution, another modern Spectrum clone, which has been proven to load tapes before. I took Horace Goes Skiing and had success after a couple of attempts. I needed to use less than maximum volume here.

There's no counter though, so reloading multiload game positions or loading a specific program from a collection could be troublesome.

The full rubber-key ZX Spectrum 48K tape loading experience has to wait, the equipment is currently buried a little deeper.


Wednesday 14 February 2024

2001–3001 The Clarke Odyssey

I'll cover these in more length than usual. No doubt more literate minds have analyzed 2001: A Space Odyssey to death, but I didn't even know "2061" existed.

In case of sequels, I'll avoid describing story-specific plot points that I consider reveals. But it's of course impossible to avoid describing the entire saga and not "spoil" it.

Arthur C. Clarke: 2001: A Space Odyssey

This is not an ordinary "novelization", and neither is 2001 a film of the book. The histories of the film and novel supposedly intertwine, and in any case the story is partly built on Clarke's earlier short stories. The book says it's based on the screenplay by Clarke and Kubrick.

It's not a hard call to say the film that came out of the process is more important than the novel.

The book almost inevitably feeds into the interpretation of the film. After reading the book and other sci-fi, the film events no longer seem all that incomprehensible, even if you don't accept Clarke's interpretation of what happens in the end.

Firstly, the plot loops back into itself. The space-age humans are much like the monkey-men in the beginning, fighting with each other until the other faction has the edge. The Monolith is partly about enhancing the intelligence of those who contact it, but it can also be considered as a prize, a milestone, and a monitor of the race's "worthiness".

The Russians and the Americans compete to reach the Monolith on the Moon, and much like with the monkeys, the other tribe wins and gets the option to reach another signal source at Jupiter. The parallel is clear in the film, but it is even more so in the book. The fighting doesn't end there, though.

The journey to Jupiter is something akin to the pinnacle of human race –⁠ now also including an AI –⁠ reaching to make the important contact. The analogy of a sperm cell (within the phallic ship) trying to reach the ovum (the round and motherly Jupiter) springs into mind, with the Star Gate sequence as the climax. The hardships cull out options, and in the end only Bowman remains.

In the film, both Bowman and HAL 9000 could be considered candidates. With HAL, the human race might have created something more "worthy" than themselves. The book makes HAL seem more of a pragmatic tool that becomes confused, whereas the film is more ambiguous. What are the inner motivations and the status of HAL's "soul"? Does HAL do the things it does because of a logical contradiction in the task statement, or because it also competes for the real goal?

The book makes it clear how the Monolith acts as a teaching aid and intelligence booster for the ape-men. There are said to be numerous monoliths on Earth, which are also crystal-like and transparent, producing psychedelic-pedagogic light shows for the apes. I suppose this gives rise to the idea that the cinematic medium is a comparable device.

Celestia displaying Cassini near Jupiter in 1.1.2001

Clarke gives more narrative meat to the episode on the moon, with more focus on Dr. Heywood Floyd. The moon colony is told to be rather huge, and the expository text dwells on details such as hydroponic farms and zero-g toilets.

Oh, and the journey in the book takes to Saturn, using Jupiter as slingshot. The real-world parallel is interesting, as the Cassini probe from 1997 actually used roughly that window of opportunity, reaching Jupiter just in time for 2001, continuing towards Saturn.

So the year 2001 is not evoked just to give a suitably far-off sounding time, Clarke probably figured it would be a good real world moment to reach Saturn. (In notes elsewhere, he blames the repercussions of Vietnam War and Watergate for making the real 2001 less like "2001".)

Budget reasons are often cited for changing Saturn to Jupiter in the film. It could be the star gate sequence also became more abstract as a consequence. A creative decision or not, simplifying the itinerary is a blessing to the film. 

Should I imagine these are alien ships or accommodations? Or the Galactic Grand Central?

Although the film was a huge leap for cinematic science fiction, a transcendental ending or twist in sci-fi literature was already quite cliché. The trope of immeasurably incomprehensible aliens putting humans in a "zoo" was also a sci-fi staple, witness a number of Star Trek episodes revolving around the theme. Kurt Vonnegut could already use the idea in Slaughterhouse Five (1969) for satirical effect. 

Of course, clichés aren't inherently bad, you just have to use them really well. The poetry and ambiguity of Kubrick's film makes it succeed. The book's spelled out interpretation is just one of the possibilities. The ending could simply be a celebration of life being more magical than whatever gimmicks might propel us to space.


Arthur C. Clarke: 2010 Odyssey Two (1983)

As we remember, Discovery was left on orbit around Io, the moon of Jupiter. Now we learn it is still there, but its orbit is unexpectedly decaying. Before the successor to Discovery can be launched, Anton Leonov, a Russian spacecraft sets out to Jupiter. Americans are generously taken aboard, mostly because only they can operate Discovery. 

What else is still in Io orbit? The Monolith, that is.

Overall, the plot is one somewhat unsatisfying "let's get to Jupiter real quick, and ... uh, let's get back even quicker". The intent and nature of the alien intelligence(s) becomes clearer, gnawing away from whatever mystery was left from 2001 (the book).

The main character is Heywood Floyd, known from the moon trip in 2001. He is an aging science professional who gets the chance of a lifetime to join the crew and visit Jupiter, something he missed ten years prior.

Although Floyd's insight is important to the resolution of the journey, he and the Discovery crew are mostly observers of events rather than protagonists.

The regressed HAL is relegated to a side role, as the Indian AI expert Chandra attempts to re-ignite its intelligence. Chandra was mentioned in HAL's deteriorating monologue in 2001. 

I get the feeling that after 15 years Clarke is downplaying the amount of AI development that could happen in the next 20. He's not entirely wrong. Yes, chatGPT can now carry as good or a better conversation than HAL, but not at 2010, and it doesn't really play chess and I wouldn't trust ship systems to it.

The text is replete with popular cultural references reflecting the time of the book's writing. Some of these are science fictional in nature, such as the direct Star Trek references. Indirect mentions go to Alien, Close Encounters of the Third Kind and Star Wars. It's as if Clarke wanted to remind 2001 (the film) was the augur to the blockbuster generation of science fiction.

It's credible, people are entrenched in popular culture, and to Clarke it must have been obvious people would remember these films in the 2010s. Again, he isn't wrong. But it does make a stylistic hodgepodge of what one hopes to be a somber, philosophical journey.

Importantly, not that much was known about Jupiter's moons before Voyager visited them in the 1970s. As Clarke recalls in the short intro to 2061, the Voyager missions inspired him to write a sequel that features these satellites. Future discoveries could no longer radically contradict the findings.

The film version wisely prunes some of the book's sidetracks, such as most of Bowman's spirit-excursion to Earth memory lane and the above mentioned popular-cultural hits and misses. The Chinese craft's race to Europa is something we don't get to see either.

If I recall right, the film made the US/Russia relations more strained than in the written form. Funnily, the technology and displays onboard the Leonov have dated the film more than the comparable tech in 2001. It's a passable 1980s flick, if one is able to stop comparing it to 2001.

Repair Discovery's subsystems in a Colecovision game. What excitement!

There was an attempt at a game-of-a-film-of-a-book tie-in phenomenon that surrounded other sci-fi franchises and films in the 1980s. There's not only one, but two, games for the Coleco hardware. I'm unsure who is the intended audience here.

Anyway, the story is book-ended with Clarke's notes, explaining how this is a sequel to the film rather than the book (using Jupiter instead of Saturn). He reminisces over a few predictions that eerily came true, and a few life-imitates-art situations. Apparently the "Ah, Houston, we've had a problem" of Apollo 13 mission is an echo of 2001's "Sorry to interrupt the festivities, but we have a problem." They were playing Strauss in the module.

Clarke says the book was written on Archives III (CP/M) computer, the WordStar manuscript was sent out on a 5 inch floppy. He also mentions his trusty programmable HP9100A calculator (from 1968).

Arthur C. Clarke: 2061 Odyssey Three (1986)

It's 2061 and hey would you know it, Heywood is still alive! During the after-party of 2010, which took place in 2015, Heywood fell from a balcony and had to be taken to a space station to revive. This silly plot point ultimately made him a total spacer and he can't even return to Earth.

This lifestyle, combined with the deep sleeps he enjoyed during spaceflight, kept him a well-preserved 65 rather than the 100+ he really is. Convenient.

The book was supposed to be inspired by the findings of the Galileo probe, but the Challenger tragedy of 1986 put the probe on hold.

The story rather takes the Halley's comet as a starting point, another timely reference. Which will again become timely as it returns in ... 2061. The comet has already started its way back in December 2023. 

I used to think comets like Halley go back to infinite depths of space, and by some virtue of masterly calculation it is possible to predict when they will return. Well, this is sort of true, but Halley's comet doesn't really go much further than the orbit of Neptune. Which of course is far enough.

But I'm digressing.

Actually, no. The major point of the book is the importance of the Halley mission. If humanity now has effective rocket ships that can travel from Earth to Jupiter in weeks, they could visit the comet pretty much whenever they want to. Ok, it might be more valuable to do so near the perihelion, but I still think the whole premise is a little flaky.

Halley's Comet and the alignment of the Inner Solar System at the end of May 2061

Just as 2010 backpedals from the ending of 2001, the outcomes from 2010 are not instantly revelatory for the human race. The species is puttering about in Ganymede and have operations around the solar system with the improved spaceships.

There's a weird discovery on Europa, related to a mountain that didn't exist before. And despite the ominous warning of not to land there, circumstances will lead people to land there anyway. Some are hungry for scientific merit, some see potential for profit. The discovery is almost immediately guessable, but Clarke keeps hanging on to it until the end.

What with the mountain and Halley's comet stealing the show, the story actually has very little to do with the 2001 saga. It could have been written in some other frame, and I suspect it partly originates from some other project.

For most of the time Clarke is being pedagogical about space, orbits, rocket flight and the solar system in general. There's a Jules Verne-esque entourage partaking with the Halley's Comet mission, as a kind of space tourism. This enables Clarke to have more characters around to have small talk, but they don't do much for the story. 

The discussion can again turn to Star Wars and of all things, Gone with the Wind. Clarke seems to think that Beatles will be forgotten in 100 years, yet that somewhat badly aged film will be revered as a classic still in 2061. Currently it looks like the opposite might become true, but who knows.

As a detail, the story addresses the monolith's resemblance to the UN building.

From 201 min. of A Space Idiocy (1969), perhaps not MAD's finest moments.

Clarke progresses the story with ease, with nearly cinematic organisation of changing viewpoints and short expository chapters.

By the way, why did 2061 not receive the film treatment?

Apart from the fact the plot doesn't live up to even 2010 standards, I believe Halley's comet hype became very old very quickly, especially as the comet wasn't all that impressive. It would have been a mistake to release a film about Halley after it had passed.

There's now less talk of AI, computers and networks, and what little is there can be weird. Surprisingly, even rudimentary Google-style keyword searches take minutes or hours of expensive computer time in 2061. I recall Asimov was also somewhat prone to similar underestimations. But, just maybe, maybe, there's so much more information in 2061 that 20th century scientific papers and popular culture needs to be dug up from some deep strata.

In the short postscript Clarke mentions apparently having moved his writing to a more "portable" Kaypro.

Arthur C. Clarke: 3001 The Final Odyssey (1997)

This was already hinted at the epilogue 2061: something wonderful would happen in the year 3001. This story then mostly unpacks that epilogue.

Clarke was about 80 when this book came out. It serves as a sort of anniversary and perhaps a final hurrah for the author, who mostly wrote collaborations after this novel.

I sometimes forget that one aspect of the original was to showcase the world of 2001, its space stations, moonbases, computers, video calls and nuclear drives. 3001 does this in abundance, and for this far-away year Clarke can pull out all the stops and just describe one imaginative thing after another.

But it's also not that imaginative. What's on display is an Arthur C. Clarke greatest hits tour, with space elevators, space drives and other future innovations. Clarke gets self-referential and knowingly acknowledges the future world finally looks a little like the pulp cover art of early 20th century. Asimov and Heinlein are indirectly referred to.

Late 20th century popular culture features, too, as Clarke would now have witnessed Jurassic Park, CD ROMs, the fledgling cyberspace and the internet. These are retroactively inserted into the history of the first novel and Clarke knows very well the timeline doesn't make much sense.

An AI collage to match the book stylistically

Amusingly the world of 3001 can be a weirdly nostalgic extrapolation of late 1990s suppositions of how the future might turn out. Climate change, major wars, religion and killing animals for food seem to be a thing of the past. If Clarke was here to see the 2020s, he might have been less optimistic.

There's a curious sense that humanity is on its way developing the technologies that the Monolith entails... but I'm less eager to reveal plot points here, although the book is more than 25 years old by now.

Speed of light cannot be beat, and it looks like the alien entities responsible for the monoliths might have received their initial data on Earth's encounter with the Jupiter monolith and cooked up a suitable response. Based on data from the 20th century. Uh-oh. 

But didn't Bowman use a Star Gate in 2001 to visit the Galactic Grand Central, defying space and time? There's a stronger sense here that perhaps Bowman did not visit another star system after all, but that everything happened within a simulation inside the monolith. Well, again, Clarke readily admits the books do not form a coherent whole.

What disappoints me is the inclusion of slightly edited repeats of long passages from 2010 and 2061. Apparently Tsien's final message was so poignant it had to be included three times in the books.

With these repetitions alongside lazy "e-mail" type chapters give artificial length to the tome. There are some interesting ideas about the role and the morality of the Monoliths and their builders, but the closure to the Space Odyssey saga isn't very satisfying.

In the extensive end notes, Clarke reveals he has progressed to an IBM laptop, again trying to discredit the idea that HAL was meant to be one letter off from IBM...


Afterword

Clarke liked to use real-world predictive possibilities for laying out his plots, such as known windows of opportunity for space missions. In this series, he seems to have preferred not to write about worlds if there was no observations to base speculation on.

He was eager to see opportunity for life thriving in every crack, crevice and cloud of the solar system, despite the apparent barrenness and hostility of it all. 

In parts he seems to have been vindicated, as complex organic chemistry and water crop up nearly everywhere. But actual extra-terrestrial life seems to still elude us, and the 20th century idea of living just at the cusp of this great discovery, seems to be dwindling. I felt it also reflected in the sequels of 2001, each one taking a step farther from the original's premise.

Saturday 27 January 2024

2023

The 2023 retrospective has been delayed a little...

Listing "what I did last year" is not now very appealing, but I'll try to keep up the tradition.

Programming, graphics

The year started with the release of Multipaint 2023 with Vic-20 modes and the beginnings of a large internal overhaul. Every export and import of native formats is handled through external scripts, and I hope to extend this idea to a few other facets of the software.

Still, the most ambitious programming task was the Commodore 64 game Lancess Priya, which had been brewing from since 2022 summer. The semi-vector graphics routines make it more of a technical exploration than a proper game. I found the energy to port the game to Commodore plus/4 too.

ZX Spectrum Next... but what's wrong?

Of old computers, Sinclair Z88 inspired me for a while, fostering thoughts about focused, keyboard-based text-only computing, but the computer eventually became just another oddity in the pile.

In December, at long last the ZX Spectrum Next arrived from the 2020 Kickstarter batch. The final moments of the year were spent tinkering with the Next and getting Multipaint to do 256-color graphics.

As the "Z80N" processor has fantasy extensions, there's really no way to build a similar computer by putting together a real Z80 and an FPGA for video/sound chip. But despite some quibbles about the authenticity of this new "Spectrum" it has been enjoyable to explore.

No Escape

The retro graphics output was modest this year, although notably it does feature the first official ZX Spectrum gfx compo outing, No Escape, a remote entry for the Edison 2023 demoparty.

For me this is somewhat humorous moment, as I originally made Multipaint to create ZX Spectrum graphics, way back in 2013. Well, okay, the one-screener Unhanged Speccy demo already featured my gfx.

This and the Vammala Party piece New King were mostly left-overs from earlier times.
Applescii Macscii, happy 40th, Mac!

Although the old computers never really left me during 1990s and early 2000s, it has now been a more dedicated ten-year journey with exploring 8/16-bit computers, PETSCII, bitmap graphics and programming.

I sometimes think this "phase" is winding down rather than going to higher gear, but something new comes up all the time. The balance of the hobby may become shifted but apparently there's no real end in sight.


Games

No sooner than I thought the year would not have much gaming in it, I found myself playing Eurotruck Simulator 2, Carrier Command 2, Mudrunner, Lake and Just Cause 3, as documented in the blog.

I did touch Disco Elysium, but despite all the accolades it didn't look like a game I would play. Too wordy and narrative-driven for me. Before 20 minutes had passed I switched it off.

I also started with the 2009 Bionic Commando, and although it looks solid enough it will have to wait for another time. 

Again, Proton/Linux with Steam largely enabled all of this. I'd perhaps nominate Carrier Command 2 as the most interesting game experience for my 2023, despite all its flaws.

Lake

In addition I would play the occasional vintage game, and a few games on the aforementioned ZX Spectrum Next platform. Perhaps the tiny tower defense variant Next War took most of my time.

I finally became fed up with chess, at least the online variety. On self reflection, what began as a slow alternative to computer games, with focus on physical pieces, boards and paper books, ended up as an online grind with diminishing returns, sense of wasted time and increased irritation. I will return to it eventually.


TV, Books, Films

Star Wars: Ahsoka was not that bad, but it's not my generation's Star Wars anymore. Perhaps it is made for those who grew up with the prequels, Expanded Universe novels and the animated Clone Wars and Rebels series. Now instead of having rare encounters with Samurai-like Jedi, we're now treated with 1-2 light saber fights every episode.

Ahsoka. Not the series.

The first resurgence of what should be the post-slump Doctor Who has arrived, and although it looks promising, I'm wondering if the re-invention is sufficient. Soon it's 20 years since the renewal of the series, and one can say there's already nostalgia building up for those early 2000s times.

Dark was the most memorable TV series I watched this year, even if the third season went off a tangent and mostly just stalled the outcome. It started out looking like a poor man's Stranger Things, but had its own clear voice after all.

More recently, Umbrella Academy has proven to be entertaining enough, following on the footsteps of Watchmen and the like. I don't too much care about TV or film format superhero adventures, having read the stories in comic book form long time ago. Again the third season meandered and stalled around a plot point that was already evident in previous season. Such is serial TV these days.

Talking of TV, my mind is rather blank about 2023's TV. Perhaps the increasingly splintered nature of streaming TV is something that puts me off watching more. Want to rewatch Twin Peaks or a few episodes of McGyver on the spur of the moment? No, not possible.

I managed to see about 70 films (not counting re-watches) in 2023, starting off with Koyaanisqatsi and Lawrence of Arabia. Koyaanisqatsi is less artsy than its makers probably intended, but at least it sports the Philip Glass soundtrack that eventually mutated into the C64 Delta tune in Rob Hubbard's hands. I could see Lawrence as an important and influential film, but the "grand historical epic" format dragged it down somewhat.

Truman Show could be added to the list of films I really ought to have seen before, and whatever one thinks of Jim Carrey I thought the concept was more interesting than the one in Matrix. Oh, and I did see the clever Barbie, but Oppenheimer is still waiting.

I saw more than the usual amount of Finnish movies in the theater, partly because of research purposes.  The new Hirttämättömät (Unhanged) and the Spede biopic were not all that impressive but were mandatory viewing. In addition I saw Je'vida, a not too happy film about the integration of Sámi people in the 1950s.

Aki Kaurismäki's Dead Leaves (Kuolleet Lehdet) was the same usual what Kaurismäki does, but the new actors made it feel fresher and less of a "one man's odyssey". Aki's films are often set in an ambiguous time period  Man without Past looks like it could be 1950s, but suddenly you see a computer terminal in a bank... Dead Leaves is set to a specific year with laser-precision. Also, weird to see some of my neighborhood, so recently filmed, in the film.

This new year is unlikely to be very film-heavy.

Nearing the end of the year I read what felt like a ginormous amount of sci-fi, but in actuality it was a generous handful of books. As a kind of literary highlight I read Thomas Pynchon's Gravity's Rainbow, a monumental and not entirely enjoyable task. At least afterwards I could easily read normal-sized sci-fi paperbacks in one evening or two.