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.

Wednesday 17 January 2024

Multipaint and ZX Spectrum Next

Some development notes about ZX Spectrum Next graphics modes in Multipaint, the multi-platform (Linux, Mac, PC) for creating 8/16 bit images.

The supported screenmodes are "layer 2" graphics, 256 x 192, or 320 x 256, both with 256 colors. ZX Next has many more modes, but these look like the most prominent for graphics and games.

I know it's possible to write code that displays 512 colors on-screen, but as usual, Multipaint only supports the most vanilla screenmodes.

Paint programs for 256 color modes are common, so I tried to compensate by adding a bunch of useful load/save options, more than the usual amount.

DK sprites from the Next SD card

Why are the formats individually listed in the menu, and not just integrated in the file selector? Well, I've found that if a feature is not very visible, people tend to think it does not exist.

Seriously though, one day I may add a better file extension recognition for the main file selector too.

Multipaint was designed for about 16 colors in mind, so the palette and color options for 256 color modes can appear a little limited.

At least the FX brush modes such as Lighten/Darken, Tint and Mix help somewhat and work better in 256 colors than in other modes. I still consider these as somewhat "beta". But you can draw a filled rectangle with the FX "Darken" on the desired area to make it more subdued, without having to pixel everything again or alter the palette.

Spectrum Next has a convention where the default palette holds a 256-color "8-bit RGB palette", 8 steps for Red, Green and 4 steps for Blue. 

This is especially useful for NextBASIC, you can work ideas without having to define palettes. The 256-color set is already very comprehensive – there isn't that much more you can do with the 512 color range. (8 greyscales is something that springs into mind, though.)

Next default "8-bit" palette

Multipaint respects this default palette convention, so if you import a PNG image, the palette is not altered.

This behavior can be changed from File->Settings, by turning on the "re-palette" option for incoming files.

Coders: Each platform specific Save menu option can be invoked from the File-> Export TXT item. From this dialogue you can save text/source versions of the same formats. These can then be copied to or included in an assembler source.

As of now the result is a little unresponsive, but the file ought to save even if it looks like nothing happened.

The Export as Text dialogue.

I've been asked for GIF and BMP support, makes sense as they are indexed modes with no ambiguity. Again something to think about in the future.

The Multipaint BIN project format obviously preserves the palette and the color index, and sticking to the default palette can also be helpful.

The ZX Next specific formats supported:

NXI

NXI is raw bitmap data, without any palette information.

The 256x192 and 320x256 variants can be detected from the file length.

Without palette, they are 49152 and 81920 respectively. With palette, add 512 bytes to length.

Note that the display order is different for the 320x256 version, the image is stored "vertically" in memory.

Multipaint doesn't currently change the screenmode automatically for an in-coming NXI, so you have to first pick the correct mode and then load the NXI. The dialog will warn of incorrect NXI length, though.

Notably, the PLOTIT-LITE paint program included in the ZX Next bundle can load and save 256x192 NXI files.

 

NXI with palette added

The same as NXI, but with 512 bytes of 9-bit palette data. Multipaint can detect which one it is from the file length.

For saving, you have to choose either NXI or "NXI wo" (without).

This format is largely useful for storing, I don't know of any other context of use. 

SL2

256 x 192 raw bitmap data, without palette. These files have a 128-byte PLUS3DOS header to facilitate system loading, or something.

Although the header ends with a checksum, the checksum apparently only matters for the 128 first bytes, thus the value is always the same for this image format.

The importance of SL2 is that the NextBASIC can easily load these files:

10 LAYER 2,1
20 LOAD "picture.sl2" LAYER
30 PAUSE 0

If the picture is in the same folder, NextBASIC should load and display the image.


SPR

SPR is 16384 bytes, raw bitmap data, containing 64 sprite definitions. The sprites are ordered as 16x16 entities, following each other.

Multipaint has no different mode for sprites, the SAVE SPR simply stores the top third of a 256x192 mode screen. This also means whatever is in the remainder, is NOT saved!

Hopefully I can come up with a clearer solution, as the bottom part works nicely as a scratchpad, and there's a chance of losing work.

Some tile work

Preferably, sprites and tiles should be saved in some other format, and only exported via SAVE SPR when needed.

The Sprite/Tile editor included with ZX Next bundle can load SPR files. *.SPR can even be launched from the Browser for inspection.

There's a couple of NextBASIC demos that show how to load and use SPR files in your own Basic programs, I won't go there now.

PAL

PAL is a 512 bytes file which contains the 9-bit RGB definitions for 256-color palette, from index 0 to 255. Practically every odd byte just contains the last needed bit for Blue component of each color.

This is identical to the way the palette is stored in NXI paletted format. It is also a handy order for dumping palette data via color registers in machine code.

This format also facilitates the loading and saving of alternative palettes, in case you need something else than the default palette. I'd recommend sticking to the default palette as much as possible.


NEX

Nex is not an image format, but a more generic means of "packaging" a code, its data and assets into a direct one-file executable, as described here.

I used this opportunity to have a NEX-based self-viewer that can be run from the Browser.

If you use the excellent NextSync for wireless file transfer, you could just export the NEX into your PC sync folder, sync the Next and then run the executable. Not too slow!


A few non-Next related notes

Multipaint is still being developed, and I am headed for a 2024 version, with some overhauls and a possible move to Processing 4.

Tutorial is a funny addition. It can be selected from the start menu. Hopefully, by going through the tutorial, it's more clear what kind of tools and options are available. The tutorial hasn't really been tested much, and may be adjusted in the future.

Another recent addition is a "key cheatsheet" menu item, which shows some (not all) keyboard shortcuts that might come in handy for more effective work.

Generally, Pull Down menus and the icon set and tooltips should give an idea of what is there, but there are also couple of functions that have never been really visible.

For example, scrolling of dither patterns using [ and ] keys is not widely known!

Multipaint website and Downloads

Saturday 30 December 2023

ZX Spectrum Next

Sinclair ZX Spectrum Next

The first ZX Spectrum Next Kickstarter was launched in 2017. Back then I felt the ZX Evolution was enough for me. When I learned of the second Kickstarter, promising improvements over the first one, I had to jump in.

The board is a continuation of the TBBlue, where an FPGA drives the entire thing. So it's not a software emulator but there's no factory-made bona fide Z80 chip inside. In fact they call it the Z80N because it has a few extra instructions. If the magical aura of a genuine 8-bit CPU is absolutely necessary, then steer elsewhere...  

But let's not forget the original Spectrum ULA video chip was a kind of proto-FPGA chip too. It's just nowadays more realistic to have everything in the "ULA".

256 colour graphics with support for scrolling and sprites, multi-channel sound, SD card storage media, 2MB memory. For programming this means a memory paging system, because the Z80 cannot address more then 64 kilobytes of memory directly.

The computer can also work as ZX80, ZX81, 48K, 128K, through either emulating or switching the ROM and capabilities.

Instead of listing everything the computer does (and it does a lot) I'll just relate my initial observations and things I have found interesting after week and a half.

First Impressions

The Next comes packaged with the appropriate PSU and a printed booklet in the tradition of the original Sinclair manuals. It's crammed with information and tables. In addition there's also a quick start sheet.

The great thing here is that I don't need to buy anything extra to get it up and running. Ok, a video cable is necessary but who doesn't have a HDMI or a VGA lying around?

The case is physically very impressive, a proper industrially molded case and keyboard. In size and appearance it is quite close to the Spectrum Plus, although not nearly as tall. Rick Dickinson, the original designer of many Sinclair products, was still involved with the design before his passing.

In the correct order

I'm not a big fan of rounded corners in tech, but I have to admit the rounding and the rainbow plastics gives the box a lot of character. It's also a tribute to the original rubber-keyed Spectrum.

The keyboard appearance and feel exceeded my expectations. It mostly follows the Spectrum Plus layout, the main difference being the cursor keys have been positioned more reasonably. 

The layout difference makes it hard to compare the Next with modern keyboards. It feels right but I tend to mistype because my fingers are one key off, typing LIAR instead of LIST and so on.

Occasionally I lapse into Speccy-thinking, using shift+P to create " and even searching the cursor keys from both sides of the space bar! My brain hasn't really decided yet what to do with the keyboard.

The lack of explicit CTRL and ALT keys also affects the way software deals with keyboard shortcuts.

Instead we have True Video and Inverse Video

Connectors

There's a bunch of modern and less modern connectors at the backside. In the great Sinclair tradition, there is no power switch on the computer itself and you can just "pull the plug". 

Fortunately, the package includes a separate power switch cable extension. Together with the modular adapter there's quite many parts to fiddle with, which makes me worry a little.

If you have the additional Raspberry board (I don't) the USB and digital video debug ports are available. You cannot use them as conventional USBs for keyboards and controllers.

I tried to load Horace Goes Skiing from tape using my Sanyo Data Recorder, but got no reaction. Possibly the cable was bad, I wasn't that motivated to find out the problem.

Edit: I was too lazy to check the connector, it's a split EAR/MIC, so it makes sense that a mono cable doesn't work.

I've yet to test the RGB connector, not sure if I should try to make the cable myself or just order one.  Big plus for the Next people for including the RGB.

You can attach a PS/2 mouse or a keyboard to the PS/2 connector. It's worth noting any external keyboard will still follow the Spectrum layout rather than its own.

The mouse needs to be supported by the software. The Next menus, file browsers and editors do not directly make use of it.

Power connector excluded

The left side of the computer hosts the Reset, Drive and NMI buttons, with the SD card "drive".

The NMI button accesses the "freezer" menu, there I can change the CPU speed (3.5/7/14/28MHz), enter POKEs, save Spectrum snapshots and screenshots. These save features won't work as well with the Next software, if at all.

For the sake Sinclair QL nostalgia, the SD card slot really ought to be at the front, near the right side of the computer, but it's fine as it is and certainly not in the way.

Without a spring ejector, it's a little tricky to remove cards from the slot. But with some preparation and use of the wi-fi, I don't need to swap the card that much.

It's recommended to backup the card on a PC before doing anything further.

Standardizing two joystick ports is a good thing. If you intend to use the Next mostly as a game console, the front positioning might be good. Again, hot-swapping joysticks is not recommended. 

For other activities the joysticks might be in the way. Although the ports are supposed to double as serial ports, I don't feel too good about connecting peripherals from the front side. 

I tried a Megadrive pad and it accepts a second fire button too. Nice. Turn off any autofires or other exotic features before plugging in...

Extra buttons

Modern video cables such as HDMI are not physically very flexible, something I noted with the similarly tiny Raspberry Pi 400. The Next at least has some size and weight to it, so it's not like a flap of plastic dangling at the end of its cables.

A cable mess was a fact of life with the integrated keyboard computers, and it can't be helped much. It is fortunate you can get away with only two cables, the PSU and display.


Booting up

At first I was a smidge doubtful about the Next booting from a SD card, but it looks to be fast enough. Resetting isn't exactly as instant as it used to be in the 8-bit era, but the few seconds are not too bothersome.

But as reset is often the default "exit" from a program, these seconds can begin to matter...

The main choices

(The screenshots are from the Zesarux emulator and can look different to the software in the Kickstarter 2 Next.)

There's a wealth of options in already in this menu, and the SD card has a plethora of apps, demos and games to keep one exploring for days. 

For the occasional games player, the main environment is likely to be the Browser. Here you can navigate the SD card folder structure and select any of the files there. These can be ZX Spectrum TAP tape files, or SNA/Z80 snapshot files.

Basic programs also launch happily from the browser, and autorun if they have been saved with SAVE "filename" LINE 10 or something similar.

The Browser

Apart from the Browser there are many ways to operate and do things with the Next.

A number of Basic environments are available, 48K, 128K and Next Basic.

The Command Line supports alternate browsing through commands such as CD, LS and also the running of "dot" commands.

The Command Line also doubles as a Basic environment, and the dot commands can be used from within NextBASIC listings.

One interesting dot command is the .HTTP, which allows fetching of files over the internet. There's also a software for searching and downloading Spectrum snapshots from a database. After installing Getit and NextSync, there's little need for juggling SD cards.

I never really liked the Sinclair 128 Basic editor, it's a weird compromise between a line and full screen editor. At first the Command Line looked like a better starting point for Basic, but I grudgingly accepted the 128-style editor.

Command Line

TXT2BAS and BAS2TXT are also worth checking out, as they can translate between tokenized basic and ASCII text files.

The neat thing is that using #autoline 10 in the text file, the TXT2BAS can fill in the line numbers. The NextBASIC has REPEAT...UNTIL and procedures, so you don't need to explicitly refer to line numbers with GO TO and GO SUB.

It's possible to use a text editor on Next (or PC) to write Basic and then turn it into a runnable program using TXT2BAS.

As the computer is capable of a high resolution text display, a full screen text editor or notepad would have been nice. At least you can view text files through the browser in a higher resolution.

A command-line assembler would have been nice too, there's something called Odin in development but I'm unsure if it's exactly what I would have hoped.

(Edit: The Sol assembler looks quite nice)

Of older scene demos, Aeon was supplied on the card and it looked fine. There are also technical demos of Next capabilities, like the Rusty Pixels' Scrollnutter, a throwback to the Amiga era of multiple-speed big-font scrollers. There's not that much Next activity on the demoscene, though.

Lords of Midnight

There's plenty of games or at least game demos already on the card. Next War is a surprisingly addictive tower defense type game and Night Knight is a fun-looking conversion of an MSX effort. Warhawk is quite impressive scrolling shooter with lots and lots of sprites. There's also a 256-color version of Mike Singleton's classic Lords of Midnight.


HDMI Update

It's worth applying the FPGA core update as soon as possible. I found some timing problems, flickering and music tempo fluctuation in a program where it wouldn't really happen on a 48/128 machine.

I guess it could also affect game experience even in cases where nothing is visibly or audibly wrong.

By now you should have your SD card contents backed up.

Make sure Next is turned off, take the SD card out of and use your PC to access it.

Download the file TBBLUE.TBU from Phoebus Dokos' Gitlab site.

Direct download link:

https://www.gitlab.com/thesmog358/tbblue/-/raw/master/TBBLUE.TBU

Copy this one over the one on the SD card root.

Insert the SDcard back into the Next, and press U while powering up the computer.

Go through the flashing process (it takes a while), then switch off and on again as instructed. The new version number should be indicated in the boot screen.


50/60 display refresh rates

Talking of display, the 50Hz legacy of 8-bit computers can be a potential source of woes.

The ZX Spectrum was 50Hz, and so was Commodore 64 and everything else in Europe. But many computer displays today can't work with 50Hz, you'll likely have better luck with a TV than a dedicated computer display.

My HP Elite display seems to be happy with the 50/60 changes and any experiments with scrolling resulted in no glitches.

Just be aware that from an European point of view 50hz was really the more "authentic" display refresh rate, and all games and demos might not function correctly in the 60hz refresh rate.

For completeness, Next can adopt different timings and the Russian Pentagon timings are also included.

By the way, PAUSE 1 is a simple way of invoking "Wait Vertical Blank" in Sinclair Basic. I believe it just invokes the HALT Z80 command which stops the CPU until the ULA is ready to redraw a new display frame.

It works in NextBASIC too, so, adding these lines to the basicTiles/smoothTileScroll.bas source...

5 RUN AT 3

165 PAUSE 1

205 PAUSE 1

...makes that demo genuinely smooth scrolling.

smoothTileScroll.bas

The PAUSE/HALT method is not very sophisticated. The Spectrum Next has a proper line interrupt, I should check how to make better use of that, or if it can be easily used from Basic at all.

New graphics

Somewhat controversially, the Next heavily expands the graphics capabilities of the Spectrum. This reminds me a little of the TS-Conf setup which brought Amiga-esque capabilities to the ZX Evolution board.

The Next's additions are more closely integrated with the Spectrum-like ROM, NextBASIC and other features.

The hardware supports a 256 color mode, tile maps and a large number of sprites. There are so many modes I can't really examine all of them here. For example, there's a 128x96 16/256 color mode, Timex hires and Timex 8x1 color modes are also possible.

All in the best possible taste

Note that 256x192 with 256 colors takes 8 times more memory than the original 1-bit 256x192 Spectrum display file (excluding the attributes), resulting in 48K image files. That 2MB doesn't sound so huge after all.

Conveniently, 28MHz is also 8 times faster than the original Spectrum processor speed, and the graphics are also banked. What I'm saying a filled vector flight simulator or a Doom-style routine is unlikely to turn out super-fast on the 256 color bitmap. Although there's a Wolfenstein raycaster demo that seems to prove me wrong. Well.

What really helps here are the scrolling tiled modes and sprites, making the hardware closer to 1990s consoles such as Super Nintendo or Sega Megadrive.

The new modes work cleverly as layers on top of (or under) the classic graphic mode. So you could in principle have 1-bit bitmap elements on the Spectrum attribute layer, and then sprites on top of that.

256 colors through NextBASIC. One line is transparency, letting the background through.

Here's a little NextBASIC program to show 256 colors:

10 RUN AT 3
20 LAYER 2,1
30 BORDER 0 : CLS
40 FOR N=0 TO 255
50 INK N
60 PLOT N,0
70 DRAW 0,191
80 NEXT N
90 INK 0 : PAUSE 0


Line 10 activates the 28MHz processor speed.

Line 20 switches on the layer 2 (256x192 x 256 colors) and selects it.

The further INK, PLOT and DRAW commands play out on the selected layer.

Note that the LAYER 2 considers the top left corner as the 0,0 point, and the bottom right corner is 255,191. The old Spectrum graphics has bottom left corner as 0,0. This was more correct for plotting mathematics, but extremely confusing nonetheless.

You can have either 8-bit or a 9-bit color palette.

The 8-bit palette has only 2 bits for Blue, but simulates the third bit by performing an OR 1 with the most significant of the two bits.

So,

RRRGGGBB b
00000000 0

BB b
00 0 =   0
01 0 =  73
10 1 = 182
11 1 = 255

The outcome values are how to represent the blue value on PC, these seem to agree with Zesarux emulator and other sources I could find. Red and Green ramps would have values 0,36,73,109,146,182,219,255.

To be honest, the 9-bit RGB seems to be used all over. 256 colors can be freely chosen from a total of 512, much like in the original Atari ST.

As 320x256 is also possible, it shouldn't be difficult to display ST images on the Next. It takes a whopping 80K of bank memory, though.

The 256 color default palette is already well thought-out, and it can be a good idea to explore its possibilities before even trying to change it.

Next Ninja, courtesy of Bing create, conversion and some adjustments by hand.

Manual etc.

The book has a lot of information in it, replicating in parts the nostalgic experience of wading through the original ZX Spectrum manuals.

It is, however, not a book that explains in a simple way how to start using the Next features in your Basic or Assembler programs. There's no alphabetically ordered explanation of what each Basic command does. It might no make sense anyway, as some of the keywords are used in very different roles. For example, the old keyword ERASE on its own simply wipes out the current program, used to terminate an autoexec.bas.

The book is not very visual at explaining the computer capabilities, and some of the few diagrams are printed in small size. I kept scratching my head about the layer, sprite, palette and color specifications, trying to find out concise information from the internet.

Still, having the book is far, far better than no book at all, and especially at times when I can't be bothered to open a browser on another computer while working on the Next, it's a valuable reference.

It's worth looking at the Basic listings included in the SDCard, if only to see how sprites are loaded and displayed on screen, how the mouse driver is invoked etc.

Utilizing the extra power requires some study of the memory banking and examining what the various commands and registers do. Remember that even at 28MHz, the Spectrum Basic isn't really all that fast.

End notes

It's a ZX Spectrum to end all ZX Spectrums, all right, but how do I feel about the "extra" dimension? Perhaps the computer could be seen as a Spectrum with a somewhat more modern retro games console tacked on as a compromise?

Or perhaps not, as the new features are also part of the NextBASIC and the generally Spectrum-like environment.

Almost needless to say the Spectrum Next is far above simple products such as TheC64 maxi/mini and especially the ZX Spectrum Vega. Those mostly worked as game platforms and rather poorly as computers. The MEGA65 is probably a comparable project.

It's early days for me, so I don't have a final verdict. But I feel the Next, with all its additions, is still somehow respectful to the original ZX Spectrum experience. The extra features could make it interesting for those looking for "new" 8-bit computers.

The primary use after all?

What makes this kind of computer fresh and attractive is the anarchy made possible by not having to care about security, localization, multi-user log in, accessibility and whatever else is taken granted in mainstream computing. Just some core functionality and a bunch of software written in very different, individualistic ways.

It looks like the Spectrum Next has generated enthusiasm. Hopefully there will be enough momentum to keep new software appearing for years to come. The hardware and the system is of course interesting in its own right. 

I left out the productivity software side. Although any serious developers are likely to use cross-development tools, there are still the obligatory character, sprite, tile and map editors, suggesting you could use Next directly for creative purposes. Maybe they are enough for small Basic programs, but better tools could inspire more software and content.

I had some minor success in compiling assembler, turning on layer 2 and displaying some extra colors. It looks like understanding the .nex package format would be very useful. I'll come back to this if I learn the ropes.

Sunday 10 December 2023

Proton/Linux: Just Cause 4

Army of Chaos, sure

Proton did well enough and I could finish the game after about 27 hours. I did change the proton version to 7.0-6 (instead of 8.0-6 or experimental) after first experiencing more crashes than I expected.

The game would still occasionally crash (once in couple of hours) but because of the game's structure it doesn't mean that much. This is what happened with Just Cause 3 too, and a possible feature of the native version.

The graphics are overall rather fine, the world has a good amount of detail and variety of zones. Some have waterways between vertical jungles, then there's the obligatory desert and snowy mountains.

That's a tornado near the horizon...

The cutscenes had some problems, related to Proton or not. Things like beard stubble and eyelids or eyelid shadows where somewhat weirdly rendered, but I did not bother to find out if I could do something for these.

I've usually enjoyed the Just Cause games, offering somewhat GTA-esque thrills without the investment and without being very story-heavy. I've come accustomed to the grapple-parachute-wingsuit acrobatics well enough.

But it's not a massive improvement over Just Cause 3, if it is an improvement at all.

Perhaps I liked Just Cause 3 more, because of the simple town liberation system. This has been replaced with "chaos army" that advances from one region to another, player making the choice of directing the troops.

Checking the world map and the enemy lines

Technically it's more of a way to structure the main story missions into a chronology, as most areas can't be captured without doing some pre-requisite tasks or conquering of other areas.

This shift in focus also means there's not that much to do in the towns and cities. Some optional tasks and fights take place there. The speed and stunt mini-missions are also often in the cities, but these I chose to avoid.

And as usual there's a lot of random encounters, side-quests, equipment, vehicles, weapons you can find, summon or steal from the environment.

Visiting the front lines

At the front line between two areas, you can actually witness the lines holding and a battle going on. This looks impressive at first, but it's just a paper-thin illusion really.

Try to intervene in the frontline battles and your troops can't perform any better. More likely the enemy will just summon more jets and tanks and you'll be dead eventually. Funnily enough these new enemy units can just as well spawn from behind the friendly line...

Another novelty are the weaponized mega-weather effects, sandstorms, lightning and the iconic tornado. The tornado is a game element that can arrive and mess with your unrelated task, and at times this can be quite fun.

Ok, you'd expect more to happen at this distance

I would have hoped some of the randomness of the enemy attacks could have been modified a little. There's just more and more of the enemies, approaching from unlikely places. 

As usual, the battles have all the subtlety of two pre-school kids bashing toys together. Mostly it is all for good fun, but it would be nice if at least the player sighting was more realistic. Now a line of sight is enough and the chaos starts ensuing. How do they know it's Rico from a distance of 200 meters?

As the fight escalates, helicopters, tanks and jets arrive at the scene from around the corner or behind the hill, with little consideration as to where they might have come from.

There's also some glitchiness and weird behavior resulting from the open world and physics engine. I thought such things could be improved by now. Helicopters and jets might spontaneously crash and the enemy units continue to have silly attack patterns, often resulting in their death.

1998 called and wanted its textures back

At one time, a rebel-occupied train whizzed past the enemy train, shot it with its mega-cannon, derailing both trains hilariously.

By the way, the trains and the train tracks are modeled so sparsely they'd not look out of place in Half Life 1. These are conveniently further off in the island so it's not the first thing you see.