Sunday, 22 November 2020

Multipaint 2020

I've tried to have a major Multipaint version out each year, at least as long as it makes some kind of sense. Now Multipaint 2020 is out, somewhat later than I hoped. 

The fix-list of every tiny thing is too numerous to put anywhere, the website details the more important ones (http://multipaint.kameli.net). I'll just open up a few points too large to fit there.

The largest step was to move over to Processing 3. This itself doesn't really change the program appearance in almost any way. Hopefully as a newer version it would be more stable and the prefs.txt problems becomes a thing in the past. 

Sadly the transition to P3 means the application is likely slower, something that shows itself on less powerful computers. I compared the Processing 2-based version on Raspberry Pi 3, and found that version to be useable, whereas the new executable made with Processing 3 is quite slow.

This could be due to the way the screen renderer works, but I didn't dare to meddle too much with a thing that worked well in the past.


Application window resizing

(Edit: The feature doesn't work in all Linux desktops. Hang on.)

Edit 2: It does work, too! (24.11.2020)

A major visible change is that I made the application window resizable. Although the program had been already written with a flexible interface in mind, and it could be set from the prefs, the app could not be resized while running. 

However, despite the old code there was still bring a bunch of boring upheavals to the interface drawing and scaling routines.

Dark theme, resized window, SET GRID and a 100% C64->ULAplus conversion caught at the same time.

There are various reasons for making this. One is that there may be low-resolution screens which didn't just about fit the display, so you have a chance to adjust the situation a bit. It's also easier to make larger if it's too tiny for your display, without fiddling with the ZOOM parameter in prefs. Also, if your screen size allows it, it may be nicer to have some more of that good old border visible.

Just to be clear the target platform resolutions are not alterable. I did some behind-the-scenes work to enable non-standard screen sizes, important for Amiga, but this will be a future feature.

I long wondered why Processing 3 does not allow the direct use of size() no longer, or the use of variables as parameters to it. Well, in P3 it's now simply surface.setSize() and works just as well or even better so no worries really.

If the chosen viewport doesn't fit the current scale, Multipaint will re-scale the interface. Also, if you make the application window substantially larger, the scale will follow. Scaling was a feature that was previously only accessible from the prefs.txt ZOOM variable.

The least I now want is to make Multipaint more complex. So, it should still work as before and you might not even notice the resizable window feature if you don't need it.

Resizable window is also a base for future developments, as more flexible target platform resolutions could be made to fit better in the application window.

A very large window will unfortunately slow down a computer, or make your computer choke and start the fans, even if you do nothing with Multipaint. This is something that relates to the way Processing updates the window and apparently can't be helped much.


So, it's somewhat ironic that if you have a huge 4K/8K resolution display specifically for graphic work, then Multipaint might not work ideally on it. Resolutions like 1920 x 1080/1200 should not be too huge. I'd recommend not working on lower display resolutions than 1024 x 768, but it shouldn't be impossible.

Still, the window resizing is less than complete. You can't yet change the actual viewport position, for example.


Dark theme and Set Grid

I added an option to switch between light and dark theme. This did not require much work, as the interface fonts and icons are based on custom routines anyway and not on real fonts or image files.

Set Grid dialogue is something I wanted to add. The already existing grid commands and presets should work as before. This is again a "funny" thing in that the facility for making arbitrary grids has been there for a while, but there was no dialogue to make it happen.

I can only note that when working with 8x8 attribute modes, if the grid does not align with the attribute grid it can be really confusing.

What with the new drawing routines and all, the grid color is again a bit silly. It's like a recurring nightmare. I added a brightness setting as a hasty fix, but as some have commented the grid might have been too dark in their monitors anyway so it is good to have it adjustable. But this is a topic I'll have to look at in the future, again.


Border analysis

When loading png/jpg images, Multipaint will make an attempt to deduce if the image has a border and takes the "real" image from the middle, if it has the correct resolution (or a duplicate/triplicate of the resolution).

For ZX Spectrum and C64 modes this might be helpful when using Multipaint with plain jpg/png files.  It also makes it a bit easier to load existing images from the internet.

I'd still recommend using the BIN file format for project work.

Multipaint loading a 3x PNG file saved from Fuse. (In this case, use SCR, really)

However, if Multipaint can't explicitly determine a border, it will simply load and scale the image, borders and all. For example you might have a small logo in the centre of the screen and a black background and border. In the future there might be a "crop anyway" dialogue.

One problem was whether to include this feature in modes that don't really have a border. But I felt that there might still be quite a lot of images with a "border" in them, such as Atari ST screenshots. So I enabled this for every mode.


Amstrad CPC Overscan 384 x 270 x 16

The original Multipaint interface was very fixed to the idea of having a 320 x 200 resolution at tops. This was also reflected in many, but fortunately not all, internal structural choices of the program.

But now it might be the time to expand these horizons a bit.

To cut a long explanation shorter, instead of resizing buffers I'm using the same room more efficiently to manage the 384 x 272 x 16 resolution.

Just as with all the Amstrad modes, the export template is taken from Marq's Pixel Polizei (thanks!), so you should be able to get the exported images up and running on a real Amstrad. I also followed the export code quite strictly.

The CPC overscan, I'm told, is not really a very standard graphics mode, so I'm now sort of opened the gate for software-enhanced modes(!)


Amstrad CPC mode 1 320 x 200 x 4

This was already in the later 2019 version I think. The mode was a fairly simple addition, but I don't expect many to use it. It is somewhat nostalgic to me as I used to see screenshots of Amstrad games in magazines and they often looked like Spectrum games except with one or two more colors and I wondered how this could be. 

There is an overscan variant but I have not implemented it yet.


C64 unlimited 320 x 200 mode, and other C64 goodies

I added the C64 hires unlimited mode that was previously experimental. It behaves like a C64 320 x 200 mode, with the fixed palette of 16 colors. Howver you can draw the colors freely without any color clash.

So you could basically draw a C64 hires image without Multipaint imposing anything on you, and then move over to the C64 hires mode, and have Multipaint "validate" your image.

The reason for this mode in the first place was I wanted to work on composite sprites, i.e. overlaying different-colored sprites to make hires sprites with many colors. (Or superimpose hires on multicolor sprites). However, it is your responsibility to convert the output png into valid sprite data.

Adding this mode is a bigger change in the Multipaint "philosophy" than might seem and I've felt a bit troubled about it every now and then. However, perhaps better simply make it available and face the outcome.

Why don't all the modes have this option? I haven't still quite decided if this should be a unique mode or rather a switch inside the modes proper.

The transition between different C64 modes is now smoother in that your chosen palette will be preserved and so is the border color. The image is still transferred via "bitmap conversion", but I have not seen any problems coming out of this.


Multipaint at kameli.net

Thursday, 19 November 2020

6€ Fleamarket bonanza

I found these three items, each cost 2€.


Virtual reality!

You'd think VR costs tens of thousands, but it actually costs 2€. If you already have the phone, that is. In the past I've been semi-impressed by how these plastic gimmicks could deliver a VR-type experience in a mobile phone.

I tried the Shinecon VR on an iPhone and it brings the usual split-eye head-achey effect and viewing angle for Youtube VR videos.

The eye horizontal and depth adjustment can be changed but overall this might be designed for a bit smaller head. My nose couldn't find a good location inside.


From the few videos I tried I could not really judge if the lens settings were correct or not. The head angle tracking in iPhone has been so far more impressive than the depth effect. Some videos were also kind of fake and not really stereoscopic.

I didn't try it on any games as they might need a separate controller so this side of things remains to be seen.


Karaoke microphones!

This was actually a quite nice find for 2€. These are Playstation 2 Singstar Karaoke mics. 

I stuck the USB adapter directly into my Linux system and picked the "serial" microphone input in Audacity. The other mic goes to Left channel and the other to Right. Seemed to work well enough on Performous, the free Singstar-like, and why not.


Obviously I could use the mics without the USB adapter, and the adapter without the mics. Maybe I'll follow up one day with my experiments.

The mic heads could be screwed out and the insides were a bit dusty and a christmas tree needle was stuck there.

I suspect it is a USB 1 interface but that should be enough.


Mini Clothes Iron!

This Black&Decker Stowaway clothes iron doesn't have much to do with computers or electronics, and I added this to the pile mostly for the cute design.


Well, who knows I might want to heat something when building stuff and this would suit better than a full-size iron or a soldering iron.

The shape is very compact but the cable is still rather huge. Whether the handle lock doubles as a safety, I didn't yet check. There's a 110V/220V switch too.

Edit: After overwhelming popular demand, I will also show the iron in the compact mode. The cable can then wrap around the whole thing if needed.


I can also confirn that the handle lock does not double as a safety for the thermostat. So the iron can heat in this position too.


Bonus round:

A week later, I got this cable tester.


It works with a battery and blinks lights one at a time to show if the RJ45 or RJ11 cable connections work.

Monday, 9 November 2020

Rambo-thon

Finally, I got to watch all Rambo films.


First Blood 1982

We meet John Rambo, a Vietnam veteran whose best buddies died in the war and now he finds out the last one of them has died too.


While still dressed in that reunion garb, trying to get into a town he gets harassed by a local sheriff. He gets PTSD in the cell, kicks everyone's ass, leaves the station, steals a motorbike and drives to the hills and to the realms of legend.

I liked the detail when the sheriff's car turns over, Rambo actually seems concerned if something bad happened. As he sees the sheriff crawl out of the wreck, he leaves.

Rambo tries very hard not to kill anyone and even the sheriff has some sympathy towards him, it just turns out everyone else is a bit trigger-happy gun-nut. Things escalate and soon the sheriff has a small war in his hands. 

The general consensus is that this is a film with actual merit, and I've tended to agree. Well, I've always thought the Trautman character to be a bit silly.

Rambo lays traps in inhuman speed. All the sheriff's henchmen are clowns eager to join the fight despite having already seen what Rambo can do. Yes, some have worries about this but dutifylly they go on.


Rambo II 1985

Rambo has been in the prison labour camp for five years. Trautman makes a deal that if Rambo does this mission he can have his freedom.


As Rambo later explains to a POW, it is 1985. Taken very literally, the events in First Blood would take place at 1980.

Some have ridiculed the lightning fast relationship of Co Bao and Rambo. But what isn't obvious is that the mission takes several days (as it gets botched) so perhaps these warrior souls could relate to each others quickly. 

Of course after they reveal their feelings it doesn't take a minute until something bad happens. I recall MAD Magazine making a joke about that lucky charm pendant perhaps being not so lucky after all.

This film established "Rambo" as a shorthand for American jingoism, but this isn't fully deserved. The film does have critical tones towards the establishment and derives some tensions from the post-Watergate conspiracy and paranoia themes.

The computers at the base seem a bit old-fashioned for a high-end operation in 1985. The strange anti-technology vibe in the film is a bit inexplicable. But it must be remembered, a "computer" picked up Rambo as the person most likely to survive this mission, so Rambo has some resentment towards the bureaucratic "machine" overall and the technology that made him do it. 

Likely the computers were networked so all the data was safe, though!

The film is actually quite coherent and enjoyable, maybe inexplicably a better film than it should be, and a canonic part of 80s nostalgia.


Rambo III 1988

This is a really big money film. Rambo is in Thailand, participating in an (illegal?) martial arts scheme and helping some monks. Later we see him in Afghanistan in an attempt to rescue Trautman.


A lot of effort has been put into presenting and respecting local cultures but this tends to be a bit exoticist and orientalist. Also, the russians are characterized as brutal and inhuman.

One gets the idea this was to take Rambo more in the direction of Bond or Indiana Jones films, suggesting a series of films in the rambo format. And it kind of works, except the latter half of the film simply repeats the kind of action scenes already seen in Rambo II, only made bigger and even less credible.

Trautman's character is taken to strange extremes, suddenly he is quite a 'rambo' himself, despite having been tortured by the russians for a while.

The Spetsnatz seems a weirdly mismatched, rag-tag bunch.

Surely the 1990s should have had a Rambo film or two, but the times had changed drastically. Perhaps the Gulf war again made war a reality so a rambo-flick might have been a bit tasteless. Films like Hot Shots! Part Deux were already making fun of the genre.


Rambo IV 2008

At the time of the release of John Rambo, it felt surprising a Rambo made in 2000s could be as good. It didn't add that much to the Rambo mythos, though. Now that I've viewed it so quickly after the 1980s trilogy, it feels even less necessary.


I like the rawness of the images, and the return to somewhat more "primitive" film-making. The roughness of the environment and the brutal violence is a contrast compared to the more comic-book antics in Rambo III. 

It's a nice idea to start asking what Rambo is and how he could get his redemption, or come "full circle". It's just that this idea does not progress much here.

The bad-ass mercenaries are a nice touch, Rambo can concentrate on being quiet and the gang brings some added color to the film. Their internal dynamics is sometimes cleverly made apparent by visual storytelling, but they don't really have much of a story to tell.

Unfortunately, the poor treatment of women as some kind of story/shock element is a bit annoying and tends to bring this film down. Perhaps this is ultimately what makes this film less appealing to me than Rambo III.


Rambo V 2019

Rambo lives near Mexican border at the farm we saw at the end of the last film. Ten years have passed and Rambo has apparently both helped solve some problems there and found some peace for himself. Ok, so he does dig these weird vietcong-style tunnels under the farm, keeps an unnerving amount of Vietnam memorabilia, and takes meds.


Rambo's sort-of grand-daughter goes to Mexico to see his biological father, despite stern warnings from John. Turns out the dad doesn't truly give a shit. By way of deception the girl is captured by criminals specialising in human trafficking and prostitution.

As Rambo goes there somewhat unprepared, the gangsters are able to, well, gang up on him and beat him to pulp. As he recovers with the aid of a journalist, crucial time has been lost.

Rambo is a bit too old to be an action-hero, but when the violence really starts some thought has gone into figuring how he could still do it. This is done adequately, although I was hoping more of outdoor environments and perhaps even horseback fighting.

Trump's wall notwithstanding, criminals, drugs and guns move to-and-fro between the Mexican border. Again the henchmen are quite loyal. The fiery explosion that blows up a car should have given the gang a pause. Also, why are they so certain Rambo is alone on the farm in the first place?

I felt the film was tonally bit off at places. From Rambo II onwards John Rambo specialized in rescue missions and so it is here too. But, "Rambo goes to Mexico to rescue an innocent girl" is perhaps not the best premise. Why, after all of the shit Rambo had to bear, something nasty had to happen once more. Crucially, this time it is completely unrelated to his military life and perhaps this is what makes it feel a bit random to me.

When discussing Rambo IV, I suggested the nasty treatment of women worked as a poor shortcut to showing how "evil" bad guys are. As human trafficking is a very real thing I suppose it is more appropriate here and it is not dwelled on too much or in a wrong way.

Whether Rambo dies here is open to some interpretation. But either way I hoped he could achieve something more than disposing an arm of a Mexican gang.


Altogether

I'd thought there would be more to learn and say about Rambo after watching all the films in relatively short time. But after Rambo III we don't get to know much more about Rambo's past or his persona. Last Blood kind of shows what came of him, but other than that not much is added to his story.

John Rambo ascended towards the film three, each time facing a bigger war. Then the scale of action becomes again smaller in IV and the latest film looks at a skirmish comparable to the first film.

There are Rambo books too, in fact the character made his first appearance in David Morrell's book from 1972. I've only read that one years ago and I am unable to compare it to the film here.

There's also more Rambo material. Such as the animation series. And I've yet to see Syndicate Sadists with Tomas Milian from 1975, technically the first Rambo film. Perhaps some other time!

Monday, 26 October 2020

PETSCII PETSCII PETSCII

Lately I have used more reference images and/or nostalgia in my PETSCII graphics. Perhaps it's easier to judge the success of the image as it is based on something.

But I've also found there's a kind of "digital history consciousness" theme going on. Let's see.

Although Neuromancer came out in 1984, it's unlikely most "kids" heard about cyberpunk until very late 1980s. So in a sense, Max Headroom was way ahead of its time, an "avatar living inside the television set", an image that I knew was cool without knowing really why. The faked computer graphics enabled this 1980s figure to false start the 1990s.



This PETSCII of Max Headroom (AKA Catch the Wave) is the closest I've ever come to simply translating a photograph, although I did use multiple images for reference and not just one. Even then it's quite challenging to fit it into character graphics. The likeness is not 100% spot-on but I did not want to use sunglasses to cover the eyes.

The two-part "comic strip" below was done for the physical Kuti magazine #57. (Go check it here) Apart from my dabblings, the issue features other PETSCII works too. Below is the original export from Marq's PETSCII editor, with a height of two C64 screens. The print/digi-version has slightly different appearance.
Maher's book about Amiga reminded me of the Warhol/Debbie Harry promotional event. I was surprised to learn that Warhol actually dabbled in Amiga graphics even after this promotion. And why not, there was scarcely anything else he could have used at the time.

I initially hoped to do a full spread, with 4 or more panels, with a vague notion of connecting different themes in a 'surreal' or diagrammatic way to this event. But I focused on two images and threw away any surrealism, simply relating the 'historical' event in a somewhat comical way. Did Warhol do a PETSCII after all?

PETSCII Non Stop. This is another recreation, but not from a fake CGI head but a real one. I mean, not from an actor posing as a 3D head. It gets confusing. I occasionally take up on "technical" challenges, such as wireframe graphics with a character set. A still from the famous music video Musique Non Stop served as a starting point for this head.


The result does not probably resemble any one Kraftwerk member but approximates the idea.

Winampscii. Now, the recreation of the Winamp basic theme on C64 is old in itself (there's a few on C64 that actually play something), but I haven't come across one that is full PETSCII.



Thanks for Marq for pointing out the nostalgic winamp skin website and suggesting the Winampscii theme. I did try to make it somewhat more SID-specific. Supposing you have two sound chips (a real possibility), the Dual mode might make sense and in theory a pan-slider could be used.

This was done rather quickly and in hindsight I might have changed a few characters here and there.


And the rest

There's a couple of recent works that do not really fit into the above "digi-conscious" theme.

Advanced Pet Dragons. Although this looks like an "animation" it actually has a couple of code effects, significantly a primitive ray-caster. The material could have been crammed into an animation, too.


Since I made Digiloi, I have sometimes toyed around with other PETSCII game ideas. These days they tend to result in small-ish demos rather than full games, but that's better than nothing I guess.

The history with the Advanced Pet Dragons is that I had a somewhat ambitious game in the works, that in the end could not be reasonably completed. So I simply picked up and modified the ray-caster routine to draw dungeon animations.

PETSCII Gunship, to put it simply, is a recreation of the intro screen of Microprose game Gunship (1986).


I saw the screen could be turned into a PETSCII with very little loss. Seeing this opportunity pushed me to do a rendition. 

Although the Commodore 64 version was the starting point I also had a glance at the Amiga and PC versions. For example for the nose I deviated from the C64 source as it didn't look nice.

Hard Eagle, Floppy Disc is a quick and jokey re-imagining.


Ok, it tends towards the digi-consciousness theme, as it is yet another version of the Eagle Soft Inc. crack intro picture, burned into the retinas of a generation of Commodore 64 users. 

This relates to a small scene drama not worth discussing here, suffice to say PETSCII art was under attack too. I felt a need to do a something humorous and have the ever so serious Sam the Eagle to play the part.


Post script

In the past I've been a bit negative about recreating already existing images on PETSCII or pixels. But now I've found it quite educational and become a bit more accepting about using references for building images. 

Still, I've not followed images very slavishly. But even converting an image is a way to learn and discover, as the source image pushes you to try character combinations you might not otherwise use.

The task is also bit like translating. I could try to copy the bitmap image and then ignore positions that cannot be done. But it is more to important to get the sense of the original and even add detail that's not really there.

I didn't bother to build individual links to csdb, but these works and others can be found from under
 

Sunday, 18 October 2020

Book: Tom Lean: Electronic Dreams


I recently skimmed through bunch of early 1980s ZX Spectrum magazines from the archives. The period seemed markedly different from the later games-oriented 1980s culture, so I wondered if there was literature about it. Turns out there is a British book about the home computer boom in the early days, called Eletronic Dreams: How 1980s Britain learned to love the computer (Bloomsbury Sigma, 2016)

The book was exactly spot on for me, as it does make notes on the early computer press in UK, even before the Spectrum days. It also provides some insight into the national zeitgeist and political background that the reading of early Spectrum magazines hinted at, but would not explain. 

The magazines really took upon themselves to educate people about computing and its uses, as a preparatory step to the future. Where and why did such a national fervour originate?

This is less a review of the book and perhaps more about the thoughts it inspired.

The book is prefaced by a concise history of the development of the computer and explaining the distinction between an eletronically-stored program computer with its predecessors. The emphasis on the UK and also the hobbyist angle in US and UK. There is a strong reminder that the UK had the lead on computer technology in various times and sported many "firsts", but lacked resources to keep ahead.

As the heavy industry was on the brink of collapsing, computers looked like a way into renewing the country, and for a short while the bespectacled teens from the suburbs of abandoned steel mill towns became the unlikely icons of this new opportunity.


Here comes the Sinclair

The significance of the low cost of Sinclair's ZX81 is greatly emphasised. Although the Apple II was a complete system for home, it was an import and the price was still prohibitive for an everyman. Magazines like PCW listed various computers systems for the UK market in late 1970s, but often with prices in excess of 2000 pounds.

It is now often too easy to look at just the specs of the old computers and put them into a top 10 list or something. It was the cheap price, marketing, penetration to the high street stores and a national rhetoric that drew ordinary people to buy a computer, not the specifications per se. ZX81 opened the gates for this.

The BBC computers are fairly unknown in Finland, so the story was less familiar to me, although I've known it in connection with Sinclair. As a kid I took it granted that computers came out of UK, but in hindsight it is a bit surprising it would be such a hotspot for the micro era. The Ferranti ULA chip appears to have been a great enabler there.

As an aside, BBC was one of the few 8-bit micros that were made with computing speed in mind. General users did not really discuss processing speed, and had it become a criteria more people might have wanted the Beeb. Look at BBC's Elite to see how it was meant to be. The structured BASIC is indeed pretty fast. Sinclair QL's SuperBASIC, although powerful, was jaw-droppingly slow in comparison. 

Even if most of buyers just dumped their cheap computers after the novelty wore off, the huge numbers and the timing meant a movement, or a cultural wave had been generated. Perhaps this Bit-lemania did not result in a Bit-ish Invasion, but nevertheless it had become something widely known and commented on. 

Although in Finland the Commodore 64 is now recognized as a 1980s cultural artifact of some importance, its reception at the time still pales in comparison to how the Brits loved their Speccies back in the day.

In this telling, Sinclair appears to have been less antagonistic towards games than some narratives have suggested. Spectrum was already designed with games in mind. And it's obvious from the early lineup that included polished games such as Flight Simulation and Chequered Flag, not to speak of Chess, Othello and Backgammon. All of these were relatively high-brow and "educational" and the Spectrum still did not come with a joystick port.

I'm thinking if the Spectrum was nothing more than a packaging of the features the 3rd parties offered for the ZX81: extra memory, better keyboard, pixel graphics. Even the simplest analysis for the uses of ZX81 would reveal that games were popular.

Still, the book maintains the high proportion of games and the whole gaming culture that emerged, came as something of a surprise.


All you need is 1K

The resounding question was "what is it for?" It is repeatedly pointed out that home computers were pushed onto the market without a clear concept what the home needed them for. 

The book strongly points out the educational and computer literacy project was consciously kickstarted in the UK, and this engaged both public imagination and suggested opportunities for private sector.

And it turns out the early 1980s reason truly was "programming", not recipes or games. Therefore the answer the author presents is actually quite clear: From a political and social perspective, home micros were a literacy and educational project, a head start towards things to come.

As much as no one figured you should really type on the computer, it becomes understandable many cheap computers did not have advanced keyboards. If you were expected to write a BASIC program that tops at 1K, you could write it on any moldy log.

The book gives a convincing case of the home micro era as a short exploratory period where the purpose of computing of home was being teased out, paving way for the more task-oriented workstations, "personal computers". Just about then the persistent killer applications for home turned out to be word processing, and in hindsight, spreadsheets, for which the 8-bit micros were somewhat inadequate.

Against this backdrop it is not so surprising that Sinclair would attempt something of a "home business" computer with the QL. As the micros were on the way out something new was needed. Rather than being ignorant of what was happening, Sinclair was simply looking at what the existing uses pointed at, followed his previous formula, placed his bets and lost.

The book is also an important reminder that the rhetoric that pushes "coding" for young people, already existed in the 1970s UK if not earlier. "If you don't teach your kids programming, they will be the losers in the future. If the nation doesn't upgrade itself, it will be a loser among nations."

The author ends the telling with the 2010s perspective, when the "new BBC micro", the Raspberry Pi became a hit. And it's true there is a certain amount of industry and new learning that has spawned around platforms like the Pi and (unmentioned) Arduino. The emphasis is more on learning digital electronics and embedded systems, but it's also possible the Pi is devolving into a cheap "2nd desk computer".

I'm rather wondering if 2010s smartphones and tablets should also be compared with the original home micro boom. At first, many companies rush to the market with devices with poor ecosystems and few standards, producing an industry of gadgets and fixes to problems that might not even exist. A few random people become rich by creating software and games for the new environment, before big business and the logic of the marketplace makes it impossible but for the most dedicated teams. 

Let it Bit

The home micro era was a roughly 5-year period of time sandwiched between the professional, industrial and scientific computers of the 1970s and the personal computer era heralded by 16-bits like the Macintosh, Archimedes, Amiga and the Atari ST.

Whereas the home micros period was marked by self-programming, exploration and learning, the new personal computers were based on launching ready-made applications, with already identified tasks such as word processing and games driving the design.

Although the home micro "paradigm" wasn't sustainable, it had certain important repercussions. As an immediate result Amstrad managed to extend the life of the micro by bundling it anew and also had success at packaging the PC for Europeans. People at Acorn pioneered the ARM processor. The UK games industry was born out of the home micro era. 

To me, Electronic Dreams has an additional subtext. Here newspaper snippets, hobbyist magazines and television programs from an era are used to create the picture of the public reception of the computer.

At the same time these were the medias most people still got their information from in the 1980s. Even the UK had only three TV channels and the BBC shows about chips and computers were seen and discussed by huge number of people.

The depicted age is therefore doubly nostalgic. Now all possible binaries, experiences and facts about old home micros are retrospectively regurgitated on the internet (ahem), but part of the charm is the relative isolation of the 1980s computer hobby and the openings into a wider world that the magazines, clubs, books and the occasional TV program would puncture. 

The book does go through quite a lot of widely known things and anecdotes, which can put off a reader who has already read many computer histories. Yet the landscape painted using these smaller stories is not yet too often seen, and the attempt at somewhat wider picture is very welcome.

Tiny mistakes are unavoidable. The QL did not have a 256-color palette initially (but 8) and the multitasking had to wait a bit too.

The book strikes a balance between a more general history of computing and the often bit too narrowly focused books that celebrate a single computer platform.  It is an unashamedly British-centric book, a  slice of history from a time and place when the notion of a "home computer" was still exciting and about the future.

Wednesday, 30 September 2020

Gaming keyboards in general use

It wasn't long ago when a non-wireless, keypadless keyboard was a fairly rare product category. Previously I had used either Apple keyboards or crappy Deltacos.

The Apple keyboard is good but the lack of a pgup/pgdown/home/ins/del cluster made me think of alternatives. I also hoped to try something a bit more physical and "retro".

Now that the market for different varieties of "gaming" keyboards has exploded, I felt I could perhaps find the ultimate keyboard from that category. I've often felt that if computer hardware is good enough for games, it's good enough for pretty much all else, too. Right? Right?

Back: A standard "workplace" keyboard. The difference in footprint can be huge.


I'm steering clear of anything that has a too gimmicky feel, such as angled wings and protrusions and LCD displays. LEDs are ok and almost inevitable anyway in this category. Programmable LEDs can be quite fun too. 

There are a few varieties of layouts even without keypad. Some have the distinct arrow key and PGUP/HOME/INS cluster, as in the PC and Amiga keyboards of old.


Some save further space by joining the arrow and extra keys to the right side of the main keys, laptop-style.

Some keys have no arrow keys at all, a bit too much in my opinion, not to mention a "gaming" keyboard that has no number keys at all!

I have now here two three cheap-ish mechanical gaming keyboards, which of course enables me to say wise words about them in general.

Rather less wisely, I started from low-cost, low-end keyboards. Perhaps eventually I'll grudgingly accept that a proper keyboard costs 150€, after having bought 3-4 cheap brand keyboards.


Exibel wired mechanical keyboard

I don't have that much to say about this low-cost keyboard, as it has little features to begin with.

I really liked the layout of the keyboard, it has everything I could want from keys and nothing extra. The semi-metallic low casing works quite nicely and the keyboard is not too elevated.

The arrow keys are nicely separated, even to the point I might be a bit careful about breaking them if the keyboard happened to fall on an unfortunate angle. But that could happen with any comparable keyboard like the Blackstorm below.

The Exibel keyboard

The features promised partial anti-ghosting, which I naively thought was a good thing. No, it's practically an admission that the keyboard is not that good for games.

Playing surviv.io, you can safely move around but if you have to move (WASD) and switch weapons (1-4) and use health items (7-0) etc., you'll find out that some keys will interfere with each other.

The second illusion on sale are the keyboard LEDs. Yes the box made it clear the keyboard does not have individually lighted LEDs, but the LED coloring is somewhat silly and you're stuck with the rainbow pattern. Thankfully they can be subdued or turned off by using the FN-arrow key combinations.

The keyboard is quite noisy. This is a somewhat common grievance with these mechanical keyboards.

This keyboard has served me well in typing and programming, and it has been good enough for most games (despite the experiences with surviv.io) but I also felt a better deal could have been made.



Blackstorm RGB 2020 Mech

Here I took a bit of a plunge, as this does not have function keys and the pgup/pgdown cluster is a bit limited. So it doesn't have that much more keys than the Apple keyboard, but at least it does have pause, pageup, pagedown and del. The arrow keys have not been separated either.

You are greeted with an animated rainbow


This was a slightly more expensive keyboard to start with, but it was in a sale so I could get it to a price comparable to the Exibel.

Funnily the keyboard appeared taller compared to the Exibel, and brought back memories of writing on old 8-bit computers like the MSX, Commodore 64 or the Memotech. This is mostly a styling and perceptual issue, as the two keyboards are just as tall.

The two rubber pads are just about enough to keep the keyboard in place when typing, so some added pads can come in handy.

Here the anti-ghosting is 100%, or one could say it doesn't have "anti-ghosting" as such but each keypress is transferred independently, without being distracted by other keypresses.

Edit: Here I'm messing up the terminology. Anti-ghosting means no extra keypresses are produced no matter what keys are held together. Fully independent keys are "N-key rollover".

Trying this on surviv.io revealed how blissful it is to have 100% non-interfering keys.

Unlike the Exibel, the Blackstorm has individual key light settings, and is not difficult to set up using the keyboard itself.

FN+G takes the keyboard to a "gaming mode", where three different profiles can be chosen and set up. FN+PGUP takes the keyboard further to "edit mode", after which FN+PGDOWN cycles through the available colors. Then, pressing keys will assign that color to that key. Easy! FN+PGUP will exit the editor.

Over-abundance of information... on a gaming keyboard?

There are seven colors and this correspond with the 1-bit RGB ("ZX Spectrum") colors Blue, Red, Magenta, Green, Cyan, Yellow and White. Of course the key can also be Black with no LED on.

In almost any competent keyboard use, you'll probably not really look at the keys, so the purpose of this feature might be somewhat lost. However it is fun to toy around with the custom lighting, to the point it would have been nice to have more than three profiles. 

The customization is fun. I tried a few color mappings:
  • Surviv.io keys. It perhaps gave a tiny bit of perceptual aid when hitting those far-away 9 and 0 keys (for Soda and Pills, respectively).
  • "Protracker lights", i.e. I colored the musical note entry keys white with the flat/sharp keys red. So it's like a synth keyboard? Not bad as you can enter chords without fear of losing any input. 
  • Match functions in ZX Spectrum game Elite. (As in the emulator). Weapons red, defensive/unarm keys green, movement keys white, data keys blue.
  • Talking of ZX Spectrum, for BASIC programming I could colorize the Symbol Shift as red and Caps Shift as green. It helps a bit as Spectrum emulators tend to be a bit confusing to use without knowing how your shifts have been mapped.
I could imagine that it might be helpful to colorize shortcut keys to some program you are learning to use, but I'll have to wait for that particular scenario to arrive to get some real results.

Currently, I'm highlighting I, left ALT and FN keys as they together make the "print screen (window)" function.

There are also preset light animations, some are really garish rainbows or random lights, and some are interactive: keypresses produce explosions or waves of light. These can only be used for annoying people around you.

I think it's a bit silly that the backpanel for the keys is white, which makes the light reflect back from below keys. This is clearly intentional, but it somewhat muddles the key coloring idea, as if they aren't really meant to be used seriously after all (which is probably true).

This keyboard is not noiseless either, but it might be the tone of the noise is just a tiny bit more pleasant, though.

Edit: After about a week of use, the lack of direct function, INS and HOME keys starts to feel a bit wearisome.


4.10.2020 HyperX Alloy Origins Core (addendum)

Well, it had to happen. Again a somewhat more expensive keyboard was on sale and I rushed to get it.

This has the same desirable keyboard layout as the Exibel, but ought to come with all the fancy things as the Blackstorm.

The build is heavier than both, it's the kind of base the Exibel pretends to be. It is just a teeny bit larger than the Exibel, and obviously not as small as the Blackstorm.

As a bonus, it has three stand setups for different angles. The keyboard does not slide on the table. The typeface is not childish and there's less weird graphical clutter than with the Blackstorm keys.

Great keyboard, crappy photo

The keys feel fine, again less noisy than even the Blackstorm was. The travel distance might be a bit more crispy and the keys don't wiggle sideways as much. They are a bit sharp from the edges but I'll get used to that. I'll develop calluses if I have to.

Surprisingly, all is not perfect.

The obvious limitation is the software for editing the lights and macros works only on Windows, so I can't get to these features. 

With the keyboard I can only change between three ugly profiles and switch the light levels. The lowest light level is already too bright. (This is the one thing the Exibel did well, the lights were really subtle on the lowest setting.)

Despite the specs, Blackstorm is able to transmit more keys at once than the HyperX. I could press the whole qwertyuiop line with Blackstorm and all would be sent.

The HyperX has a limitation. It seems six keys can be sent together, and they don't interfere with each other, so it should be fine for all practical purposes. I am still wondering if this could be driver issue, as it does promise the "N-key rollover".

Reading about this a bit it appears to be a Linux issue, and it's unsure if a specific keyboard can be made to work. The 6-key limit is not something you'd experience in practice, though.

Blackstorm also disabled the context menu key, which was nice.

The few niggles aside, pretty much whatever I was hoping from a keyboard seems to be here.

Edit 14.11.2020: As a side note, after about a week I noticed key 'v' started behaving poorly and I replaced the keyboard. First time ever, but it's bit weird to have this happen with a quality keyboard.


Some afterthoughts (edited 4.10)

Full-travel, typewriter-style keyboards were rather outmoded around 2010. It's fun to see gaming has brought them back in vogue. That's possibly because in PC gaming the reputation never went away.

It always takes some time to get accustomed to a new keyboard. The Blackstorm felt fine initially but the lack of keys was bothering me after a week. Function keys are crucial to software such as Goattracker, and I found out I do need a Home key. 

Blackstorm's feel is not that different to the Exibel, the HyperX feels most "different" of these.

Looking these three together, I'm thinking the Exibel case is in some ways better than the bit plasticky Blackstorm, but despite having less keys the Blackstorm is otherwise more featured, has a smaller footprint and is generally most "fun" of these keyboards. HyperX seems like the perfect combination of the two and more, especially if you have the Windows software to complement it.

What with the N-key rollover problem on HyperX, perhaps the ultimate, ultimate keyboard would have been a Blackstorm keyboard without the numpad. But given all the positive things in the HyperX I'm not even sure about that.

I guess a direct communication between software and the LEDs in a standard and easy way is not really a thing. There might be a theoretical possibility to program the keys live, as there's supposedly a Windows program for editing the profiles, sadly it doesn't seem to exist.

It would be interesting to write programs to make active use of LEDs. For example you first pick a command from the keyboard and it would in turn highlight keys that relate to that command.

Apple keyboard (wireless version).

When it comes to the footprint, Blackstorm uses the least space, although the (detachable) cable is not the most convenient. When looking at width alone, Apple is still the winner here.

Blackstorm 310 x 102 = 316,20 cm2
Apple 281 x 114 = 320,34 cm2
Exibel 361 x 124 =  447,64 cm2
HyperX 360 x 132 = 475,20 cm2


Sunday, 20 September 2020

Is this the best Manic Miner first cave score?



What is the best possible outcome from the Manic Miner first cavern, from starting the game, using only one life? As the score depends on the AIR meter (timer), the faster you do it the more points you get.

The Manic Miner caverns are very deterministic and the pace is so slow it is possible to discuss the optimal solution to the level.

I know speedrun players do this type of thing, but as of this writing I've not yet seen a player optimize the first cavern to this point. It is difficult to do so it might be frustrating to start a speedrun with an approach that might have something like 1/10 chance of succeeding.

I'm counting score, not time, though, but they should be the same thing in Manic Miner. 

I found one video with far more than 1724 but it appears to have slightly different version and rules. I don't think you can use the conveyor belt to go right after collecting all items.

The route is straightforward but there are a few points about timing.

Ok, here's the Youtube video:



The video is the best explanation, but I have split my approach along the points of a direction change. First you go right, then left, then right again, left again and once more to right.

I'll also explain why some alternative routes fail.

Start the game by holding down the "right" key so as to start walking immediately. This should ensure the monster is always in the same sync. Overall, you need to keep moving constantly in order to reach the "watershed" moment of the cavern.



Running right 1:

Leap 1: Jump on the platform, after walking under the plant

Leap 2: Jump on the brick platform

Don't jump against the brick platform, you may lose horizontal motion=time.

Leap 3: When over the crumbling platform, try to jump near to the edge of the platform.

This is indicated by having two of the crumbling platform tiles intact. If one of them has 1 line crumble, you've jumped a tiny bit late.

This doesn't seem to make a difference, but try at least not to jump later than that.

Leap 4: Immediately jump right to collect the item.


Running left 1:

Leap 5: Immediately jump left to the conveyor belt and continue moving.

Leap 6: Jump left over the plant, onto the brick platform.

Leap 7: Jump left off or drop off the platform, doesn't seem to matter.

Leap 8: Jump over the monster.

The good spot


Leap 9: From the very edge of the conveyor belt, jump directly onto the higher platform. If you don't succeed, the whole run fails.

9b. Walk left just the tiniest bit and turn around-


Running right 2:

Leap 10: Immediately jump right to get to the top platform and continue moving.

Leap 11: Immediately jump right to collect the item.

If you failed to do 9b you'll hit the stalactite.

Leap 12: Time the jump to collect the second item as soon as possible, but not hitting the stalactite.

As you fall on to the second crumbling platform zone, continue walking and do Leap 13 almost immediately. It doesn't seem to matter too much how well the platform crumbles, but it's worth taking a note of.

Going good...


Leap 13: Jump over the plant

After this you need to have just a couple of steps so you can perform Leap 12 correctly.

Leap 14: Jump over the second plant & collect the last item with the same jump.

Immediately turn left.

If you continue walking after the jump you may crucially lose time, but if you have botched Leap 13 and immediately jump leftwards you may fail to pass the plant.



The success of the run might depend on what happens here, but I've not perfected the science of it yet. The video shows like I have a tiny pause before walking left.

Generally, if you succeeded in Leap 3, Leap 9 (9b) and Leap 14, you should be in time or even a bit too early.


Running left 2:

Leap 15: Jump back over the rightmost plant

Leap 16: Jump over the next plant.

Fall to the platform below from the hole made after Leap 10.

If everything has been fast enough, the monster is approaching from the left and you could walk to meet it.

Note: You cannot go right, as the conveyor belt won't allow you to walk right after jumping on it from the higher platform. There may be versions of Manic Miner that allow this, I've seen such a video, but it did seem a bit wrong somehow. Clearly, it would be faster, if allowed.

Leap 17: Jump "with" the monster to fall behind it.

This is the watershed moment. Too early or too late and you'll hit the monster, or you botch the timing and have to settle for a lower score. 

The position to jump at...


If you "feel" you are too soon, you could theoretically wait a tiny bit, but I've never succeeded in that.

Although it might not feel like it, the collision detection is exact. The jump should be done in an exact position/posture, so when Willy falls down he has minimal horizontal size.


Falling just behind the monster, pixel perfect!

There is probably no way to reach this point so early that you could jump or fall over the monster. Either would be revolutionary. I believe it to be impossible.

Leap 18: Jump over the monster, and land on the conveyor belt before falling offing.

Fall to the platform below.


Running right 3:

(Note: The route left and right under the whole platform is slower)

Leap 19: Jump over the plant, not hitting the monster.

If you are not headed for the 1724 score, this can still go wrong, depending on the success of Leap 15. If you were late there is simply no gap left.

If you were very early, this jump can be quite easy.

Leap 20: Jump to the brick platform

fall to the bottom floor, walk right to the exit.

That's it!


Final score:

1722 is a quite common result. I learned to see after falling after the monster whether I'd get 1720, 1721, 1723 or 1724. It depends on how close you can get to the monster before jumping with it.




How was it done

Although I did play the cavern from beginning to end, I did use practice approaches. I used the online Qaop emulator with the F2/F3 remember/recall function. Otherwise, exercising the later points of the run would always depend on the success of the earlier parts.

This also helped in trying out alternatives. Some emulators might have a proper time reversal function which would make it even easier.

I also recorded many videos of the attempts, and analysed some of them frame-by-frame to see what could be improved and if some changes are really faster or not.

I had to play the cavern through once from start to finish to create the video, and I guess to have at least some kind of integrity.

When I had 1724 the first time on video, I managed to accidentally destroy the whole recording, because I had come so used to canceling it :) Then I played some 100 times more before achieving it again, and also understood a bit better what makes the score. After that I was able to get it somewhat more reliably.

I suppose I should play it on the original rubber-keyed Spectrum.

Also I know I perhaps ought to prove this on different emulators than the Qaop. But it does seem to work fine.

To me this is not about speedrunning, I don't think I would have the patience to do that to the whole game. I just wanted to know the objective highest score. If someone writes a robot that plays it better then I'm for it.