Oldskooler Ramblings

the unlikely child born of the home computer wars

8088 MPH: We Break All Your Emulators

Posted by Trixter on April 7, 2015

One of my bucket list items since I read my first party report back in 1991 was to attend a european demoparty and compete in a compo.  I competed at NAID ’96 and placed there, which was awesome, but to compete with the best of the best, and win, has always been a dream of mine.  I’m happy to announce that after six months of hard work with good friends and extremely talented people, we achieved just that.  Our demo, 8088 MPH, won the Revision 2015 oldskool demo compo.  (A personal victory for me was having it shown last in the compo, which is a sign of respect that the organizers think it’s the best high to end a compo in.)

As of April 7th 2015, there are no IBM PC emulators in the world that can run the demo properly; they hang or crash before the demo is finished, and the colors are wrong.  Same goes for anything that isn’t the target hardware (see below).  To see what 8088 MPH looks like, I direct you to the video+audio capture of the demo running on real hardware:

Because there are so many technological world-firsts in the demo, and because we’re bending the hardware in ways that people have never thought to do so, it’s only fair that we try to explain exactly how this was achieved.  One of my roles was “organizer” for the demo, so I’ll break it down scene by scene, covering the basics of each trick.  For parts that I wrote, I go into some detail, but for a deep technical dive into certain areas, I’ll keep this blog entry updated to point to reenigne’s, VileR’s, and Scali’s blog posts about their parts.  It is our hope that these discussions will foster revived “old-school” interest in software development for the platform.

After you read this summary post, you can go here for in-depth technical breakdowns of specific sections of the demo:

And for more general info:

Target Hardware Specifications

Before going into each part, let’s define what the target system was for the demo:  A 1981 IBM 5150 (aka the very first “IBM PC”) with 640 KB RAM, a floppy drive, IBM CGA card, and internal speaker.  That setup consists of:

  • 4.77 MHz 8088 CPU.  5 MHz seems like a lot compared to other 8-bit micros, but it takes the CPU 4 cycles to read a single byte.  So, compared to other 8-bit CPUs like the 6502 or 6809, which can read a byte in one clock cycle, the effective clock speed of the 8088 is more like (4.77 / 4) = 1.19 MHz.
  • Video adapter that has a 9-pin RGBI interface and an RCA NTSC composite video interface.  Driven by a Motorola 6845 character generator.  No facilities for changing text characters; font is fixed.
  • Internal speaker; no sound card like the Sound Blaster, or special sound hardware like the C64 SID.  Speaker can be driven by a timer pin to produce a square wave, or can be bit-banged directly via a port or a one-shot timer.

The 640KB RAM requirement seems steep, but not only was it possible to add that to the first IBM PCs, by 1985 it was quite common.  If you still want to cry foul, then please note the only effect that uses just about all of that RAM is the kefrens bars, so that the repeating pattern would take longer to repeat and be more pleasing to the eye.  We could have reduced it, but then you might have noticed the pattern repeating quicker.  With the kefrens bars effect, the demo uses 507 KB RAM; without it, the demo uses 349 KB.  Most effects use much less, and some are tiny, like the plasma which uses only 6KB (which includes the banner graphics) and the picture of the girl which uses 18K (2K more than the size of the raw picture data itself).  We intentionally traded size for speed, which was a deliberate decision to fit as many effects as we could into 8 minutes running time, the compo limit.  If we had a few more minutes running time, we probably could have fit the entire demo into 256 KB or even less, but you would have waited longer between effects.

I should also note here that there were two different versions of IBM CGA produced, which differ mainly in how composite colors are generated.  We had equal numbers of both “old” and “new” style IBM CGA cards, so we chose to compose graphics for the “old” style.  If you have the “new” style CGA card, the demo will still run, but the colors will be off slightly.

Technical Breakdown

Development tools used

  • Turbo C
  • Turbo Pascal
  • Turbo Assembler
  • Turbo Debugger
  • Visual C++
  • OpenWatcom
  • NASM (and YASM)
  • DOSBox
  • A few real IBM 5160s (hardware equivalent to the 5150, but easier to find in the real world)

Any data files were directly included in the .exe/.com files themselves.  This kept everything together in the same binary which means the data could benefit from compression (see below).

Most development cycles involved designing in wetware, coding on a modern system (or DOSBox running on a modern system), testing/debugging in DOSBox, and then transferring over to real hardware for a final test.  Once an effect grew so sophisticated it couldn’t run in an emulator any more, this cycle slowed down as testing could only be done on real hardware.  Various transfer methods were used to get code to real hardware:  Scali used a serial cable; I used an ethernet card running a packet driver and mTCP; at the party we used an 8-bit IDE ISA adapter (Silicon Valley ADP-50) connected to a CF-to-IDE adapter to make a CF card the hard drive, then used a USB CF card reader to move stuff back and forth.  The most intriguing method of all was reenigne’s method, who used a custom controller connected to the keyboard port that used the IBM BIOS factory test mode as a poor-man’s serial port.  (I hope Andrew writes up some details on that!)

Loader, API, and general structure

We all had different preferred development languages and environments, so it was decided early on to create an overseeing “loader” that would execute .EXE and .COM files, and then people could develop effects in whatever environment they wanted to.  This is not a new concept; the famous Second Reality demo did this for exactly the same reasons, and the same technique was used even earlier than that on numerous demos on other platforms.  (Before you ask: No, the Second Reality code was not copied; in fact, it wasn’t even consulted, as we had to write extremely tight code to minimize memory usage, and also have it work on an 8088 (the Second Reality code uses 80186 opcodes).  The loader API services assemble to about 450 bytes of code.

The loader, as designed, would be responsible for:

  • Playing music in the background
  • Masking the load times and precalc times of various effects using “megademo”-style text
  • Providing synchronization services (such as providing a vertical-retrace interrupt in software, and a user-definable countdown timer)

Running effects with the loader consisted of this workflow:

  1. Print text on the screen and animate it using an interrupt and the 6845 start address register
  2. Execute the effect
  3. The effect would decompress, perform precalc, etc. and then signal the loader it is ready to start
  4. The loader cleans up the moving onscreen text, then signal the effect it can start
  5. Effect starts, magic occurs

Designing this correctly was extremely important, as any bugs would derail the entire thing.  It was designed fully before even a single line of code was written.  I’ve shared the design doc online for the curious.  (I wrote the loader.)

The background music playback had to be as simple as possible so as to not interfere with any effects.  A single PC beep, changing (or silencing) once every frame, was the only thing that was practical, so 60Hz beeping is what the background music consists of.  The composition program used for generating the speaker timer values was MONOTONE.  Even though the code for playback is only 18 lines of assembler, it takes up two scanlines onscreen, so you can see how anything even slightly more complicated would have sucked much more CPU out of the system and some of the full-screen 60Hz effects simply would not have been possible.

Executable compression

Another decision early on was to see if executable compression was feasible, which means the following:

  • Does it actually compress things small enough to be worthwhile?
  • Is the decompression quick enough to avoid long pauses in the demo?
  • Does the decompression routine affect the system while it decompresses? (ie. does it disable interrupts or something else equally horrible while it decompresses, which would trash the demo?)

I gathered most classic and modern executable compressors and ran tests against old programs that were representative of what we would be producing.  The results were welcome surprises.  The compression ratios were good enough that we could afford to include precalc’d data instead of calculating it on the fly, and the decompression was fast enough that the total end-to-end time loading a program from diskette was actually slightly faster than if it were to load uncompressed.  In the end, pklite emerged as the winner.  I’ve shared the comparison data online for comparison.  (If I missed any packers that hold substantial advantages over the ones in the data, please let me know what they are.  There were nearly 100 packers made for DOS, but unless they compress smaller than apack or upx, or decompress faster than pklite or lzexe — all while remaining compatible with 8088 — then I don’t want to hear about them.)

Scene-by-scene breakdown

What follows is a screen-by-screen explanation of each effect.  As previously stated, I’ll only describe scenes in detail if I wrote them; it will be up to the others if they want to write a technical breakdown for their parts.  The explanation for each effect follows after the effect’s screenshot.

mph_screenhots.avi.Still001

The introduction was meant to serve two purposes:  To educate the audience on the system and explain at just how much of a disadvantage we were trying to make a world-class demo on such hardware, and also simultaneously shatter their expectations :-)  The text mode is obviously simulated; I essentially duplicated the basic BIOS functions for handling text mode but simulated in graphics mode.  The cursor blinking and text blinking are handled identically to how the 6845 does it, adding to the illusion.

It is (nearly) impossible to change the display start address of graphics mode such that every single scanline comes from a different place, so the title screen unrolling was done brute force, by copying new scanlines into memory hidden by retrace.  The title screen goes away with a “fade” on the top edge by ANDing a mask on successive lines of the screen data.

mph_screenhots.avi.Still002

A lot of people think the title screen is the same picture demonstrated by VileR a few years ago.  It’s not!  He recomposed it for 16-color composite specifically for this demo, and changed it subtlety as well.

mph_screenhots.avi.Still003

The bobbing was achieved by creating a software vertical retrace interrupt that fired at the same place onscreen every time (just after the last displayed line) and then hooking it with a 6845 display start address change routine.  Flags were used to communicate to the interrupt if it was time to erase the letters, which was done by simply using REP STOSW to fill screen memory with black lines.  Because the 6845 displays two onscreen rows per “row”, the text could only move to even lines, which is why the movement isn’t as smooth as it could be.  Well, to be fair, it could be made to move to any line we wanted, but doing so would be CPU intensive, and the whole point of the loader is to use as little CPU as possible, so this was the compromise.

The simulated vertical retrace interrupt was provided through loader API services for the rest of the effects to use as well.  Effects could disable it, re-initialize it, and hook/unhook their own routines to it.

mph_screenhots.avi.Still004

The moire (interference pattern) effect was achieved using a base of 40×25 text mode, the half-char block extended ASCII characters, and lots of unrolled code.  The circles were chosen to represent the classic effect, but in reality the effect can combine any two images.  reenigne’s effect.

mph_screenhots.avi.Still005

The rotozoomer is the same tired old routine I first rolled out in 1996 in the 8086 compo, but optimized to the hilt and sped up by only drawing every other line.  A miscommunication between me and VileR resulted in probably not the best texture to demonstrate the effect, but it still runs well enough.  There were plans to include a 60 Hz version of this effect, but we ran out of time.

mph_screenhots.avi.Still006

The core concept of the 1024-color mode is a serious abuse of 80×25 text mode with the NTSC colorburst turned on.  VileR made the first discovery with 512 colors, and reenigne was able to double this to 1024 with CRTC trickery.

Some people thought the entire demo was in this mode.  It was not, because 80-column text mode suffers from the famous CGA “snow” defect when you write directly to CGA RAM in this mode.  This is unfortunately visible in the plasma effect (see below).

BTW, when I saw this picture in 2013, that’s when I knew I had to get all these people together to make a demo.  I mean, geezus, look at it!  My jaw dropped when I saw it.  Had I never seen VileR’s collaboration with reenigne to make the above, 8088 MPH might never have existed.

mph_screenhots.avi.Still007

These stars were actually the result of unrolled code and a precalc’d table that, together, take a byte from one location and moves it to another position in video RAM.  While we had other patterns ready, such as a swirling display, we felt the starfield was most appropriate for a typical “oldskool” demo.  reenigne’s effect.

mph_screenhots.avi.Still008

The sprite part seems like black magic, but is the combination of using a sprite compiler written by Scali, and adjusting the screen vertically using the 6845 start address register.  CGA only has one screen’s worth of video memory, so moving the address down scrolls the screen up, with the data repeating across the boundary.  The data doesn’t repeat evenly across the boundary, however, requiring handling.  The timer was monitored to know when the screen line containing the last pixel of the sprite had been drawn, which prompted redrawing the sprite.  (In other words, re-drawing the sprite was an exercise in racing the beam.)  Timing was very tight to avoid screen/sprite tearing effects.

mph_screenhots.avi.Still009

Also part of the compiled sprite effect, this displays 30 vectorballs at 30 Hz.  We had an earlier display that used less balls to achieve 60 Hz, but Scali had the idea at the last minute to make them spell out something like “8088”, “IBM”, etc. and coded up the change at the party.  The update is done using double-buffering; the sprites only take up a small rectangular area onscreen, so the screen mode’s CRTC settings were reprogrammed to provide a video mode with a small area in the middle of the physical screen, using only half of available video memory.  This provided a true hidden page to draw/erase vectorballs to, which was then flipped to be visible using the 6845 display start address register.

mph_screenhots.avi.Still010

Using a 1024-color variant screen mode that could be updated using only the attribute byte (thereby limiting the number of colors to 256), this plasma had to perform writes only when the CRT beam was retracing horizontally or vertically.  Unfortunately, the timing required to get this right stopped working at the party for some reason (probably happened as we were rearranging effect order), and as a result you can see a line of noise along the left side of the screen, and a little bit of noise at the top.  This was my fault, as I wrote the effect using a somewhat lazy polling routine.  It’s a shame CGA snow exists, because without all the retrace handling to avoid it, this effect runs at 60fps.  In the demo with snow avoidance, it runs at only 20fps.  VileR may write more about how this screen mode and color system is constructed, and if so, I’ll update the links at the top of this article to point to the method.

If we come out with a final version of the demo, fixing this is at the top of the priority list.  In fact, I’m betting reenigne could change this from a polling effect to a cycle-counting effect, which would not only fix the snow, but speed it up.

mph_screenhots.avi.Still011

The 1024-color mode reprograms the start address every two lines.  I took advantage of this behavior to create a simple “drip” effect for VileR’s amazing artwork.  Already you can posit that much more complicated effects are possible (thinking of the Copper demo here) but I ran out of time to make it more awesome.

mph_screenhots.avi.Still012

This classic Kefrens bars effect was done by reenigne in 320x200x4 mode.  It’s a cycle-counting effect, as there is simply no time to monitor for horizontal retrace.  To ensure the cycle counting was consistent, several things were done including changing the system default DRAM refresh from it’s default interval of 18 to 19, to get the DRAM refresh periods to line up with CRTC accesses.

mph_screenhots.avi.Still013

This was Scali’s effect and inspired by his 1991 demo which also featured a large torus.  There are several things going on here:

  • Only changed portions of the screen are calculated and drawn, to minimize the amount of bandwidth needed to update the screen (this is the same “delta drawing” idea used in XDC).  This was done because CGA video memory has a wait state, so the less you need to write to it, the better.
  • 320x200x4 mode is used with a background and palette combination that gives this specific composite color palette, which included many shades of blue.
  • To help with the shading, dithering is applied during rasterization.

mph_screenhots.avi.Still014

At the party, reenigne posited that it should be possible to restart the CRTC start address every single scanline.  This would result in a video mode that was only 100 lines high, and would give a 80×100 resolution 1024-color mode.  The above is the result of that coding, plus really extensive work done on a CGA NTSC composite signal modeling program done by reenigne months earlier to perform the image conversion.  (No, you can’t have it.  And before you ask, the “girl” and “CGA 1k” pictures were not stock conversions, but were hand-pixeled by VileR in Photoshop, and the 4-colors/16-colors/”Until Now” screens in a customized version of Pablodraw he created.)

We didn’t have time to put text into this picture, so the people you see above are the same as in credits order:  Trixter, reenigne, Scali, VileR, Phoenix, and virt.  Apologies to coda and puppeh, but as you can see, any more squishing and the faces would have been unrecognizable.  Sorry!

mph_screenhots.avi.Still015

Finally, the coup de grâce:  A multichannel music engine for the PC speaker.  We didn’t want to just copy a ZX Spectrum engine, nor other engines such as the one used in Music Construction Set, but rather set the bar impossibly high by playing a protracker mod through the speaker.  Other modplayers for the speaker already exist, but they require a 10 MHz 80286, and can barely manage output at a 6KHz sampling rate.  Ours faithfully reproduces all protracker effects, mixing and outputting to the speaker realtime at 16.5 KHz, all on a 4.77 MHz CPU.

This was reenigne’s baby, and is a truly stunning technical achievement that required unconventional thinking and considerable 8088 knowledge to pull off.  I’m sure he will write up a more detailed post on how it was done.  Until then, I can mention the following details:

  • Preconversion of the module was necessary to align data structures and sample data to be favorable to how the 8088 indexes memory.  Sample data is also converted.
  • Each sample must take exactly 288 cycles to calculate and output or else the sound goes completely pants.  This was very difficult to achieve.  4.77 MHz / 288 = 16572 Hz sample output.
  • Audio output was done using traditional Pulse-Width Modulation (PWM) techniques, such as the kind made popular by Access’s Realsound.  PC speaker PWM is performed by tying the PC speaker input pin to the programmable interrupt timer’s (PIT) channel 2, then programming PIT 2 for byte value one-shot mode.  Any value sent to PIT 2 with the system configured like this will set the speaker HIGH and start a count, and when the count expires (ie. the sent value is reached), the speaker goes LOW again.  This results in an audible carrier wave “whine”, which was why the output needed to be fast (16.5 KHz) so that the carrier wave was above the range of human hearing.

Fun fact:  After preconversion of the song and being turned into a self-playing .exe, the final result is smaller after compression than the size of the original source module.

Party Sprint

At the party, we came with something that was 90% finished.  Prior to arriving at the party, we created what we thought was a decent entry, and created two “failsafe” videos, one that was a capture for the bigscreen and another that showed the demo running on real hardware as verification for the judges.  We were worried that the hardware we were bringing would get damaged in transit, so this was a precaution so that we could enter something if that happened.  Thankfully, reenigne’s and Scali’s IBM 5160s arrived unharmed (which was especially remarkable since reenigne had to bring his from the UK to Germany on a series of trains!).  We also brought two CGA cards, and two capture devices, and three different methods of exchanging new software bits from our laptops to the old hardware.  You can never be too prepared!

Most of the coding time at the party was spent adding the kefrens and ending portrait picture, eliminating bugs from each part where possible, adding nice transitions where possible, shaving seconds off of each part to stay within the compo limit, and rearranging parts so that virt’s BTTF-inspired tune’s intro lined up with the sprite part.  We spent pretty much all our time before the compo coding, eating, or visiting the bathroom, and only had time to socialize after that.

While we came mostly prepared for something that was worthy of entering the compo, the time spent at the party was invaluable for turning a rough draft into something that could really compete for first place.  Having all four of us at the same table meant we could collaborate instantly.  So, lesson learned:  There are rarely substitutes for working together in person!  One of the biggest improvements of “party collaborating” was the decision to change the credits from a variable-speed, text-only scrolling to a more evenly-paced, ANSI-style scrolling, which I think was the best implementation change compared to the bits we brought from home.

To help save time (and to ensure the video was converted well — sorry, but most people don’t know how to deal with interlaced video properly), I offered to provide Gasman with a 720@60p video.  The NTSC output of CGA is slightly off; instead of 262.5 lines per field, it generates 262.  This means it generates 59.92 fields (29.96 frames) per second instead of the NTSC broadcast standard of 59.94 (29.97 fps).  This throws off most modern capture devices; Scali had access to a high-quality Blackmagic Intensity Shuttle, for example, but it couldn’t lock onto the signal.  I knew from experience that some cheap video capture devices, such as the Terratec Grabby or the Dazzle DVC100, have extra tolerance built into them as they were designed to be used with VCR sources, so I bought a few and sent one to reenigne for testing.  For the capture, we used a DVC100 with some slight proc amp adjustments so that the capture looked as close to the CRT monitor output as possible.  To further ensure better video capturing, we used VirtualDub for the capture software, which has an option to dynamically resample the input audio source to fit the capture framerate you are aiming for in case it’s slightly off, and the software and hardware combination worked very well.  For grabbing the audio, we initially tapped the speaker with alligator clips, but Scali brought his Sound Blaster which had a real PC speaker tap you could hook up with an internal cable, so we used that for the final capture.

Looking to the future

After watching the demo and reading the above, you may be wondering if there is actually room for improvement.  Believe it or not, there is:  Alternative methods of sound generation and additional cycle-exact trickery are definitely possible.  We had more effects to put into the demo, but ran out of time:  We ran out of development time, and we also ran out of execution time, as the Revision compo limit was 8 minutes or less.

I’ve known everyone who has worked on the demo collectively over 60 years.  It was an honor and a privilege to work with them all to produce this demo.  Will we work together again?  I’d say it’s definitely possible; the day after the compo, we threw around some ideas, such as making a game next instead of a demo.  Me personally, I’m burnt out and will be spending the next few weeks playing some games I’ve always wanted to finish, and working on my health.  I also have some other large projects I want to get kickstarted this summer, such as something the PC software preservation movement desperately needs, and an online sound card museum.  But hey, who knows.

Blogosphere Coverage and Discussions

Posted in Demoscene, Programming, Vintage Computing | Tagged: , , , | 37 Comments »

Annoying adventures in disassembly: SNATCHIT

Posted by Trixter on February 5, 2015

SNATCHIT is a program written in the 1980s that loads COPYIIPC (a protected-disk copying program) and then interacts with it runtime to provide disk image saving and loading (features it did not ship with because such features expressly encouraged software piracy).  We used this in the 80s to transfer protected disk images around BBSes until someone could figure out how to crack the game and release it properly.

I recently had a need to run SNATCHIT on a 1GHz system.  I recycled an old system to become a box for dumping all my media, from floppy disks to memory cards to hard drives, something that can do it in the background without tying up my main machine. Because it’s a 1GHz system, SNATCHIT won’t run, even with hardware and software slowdowns.  I wanted to run it there because I have some 3.5″ protected disks I want to preserve, so I investigated patching it to work around whatever is tripping it up.  It’s a .COM file, the very easiest type of executable program for old PCs to reverse-engineer, debug, and patch — should be easy, right?

When I try to debug SNATCHIT.COM, I see it’s encrypted. Okay, not totally unexpected; simple encryption schemes were common at that time.  Let’s try patching it to decrypt and continue…  Okay, now it exploits a HLT bug to, I guess, fool debuggers (I didn’t see any PIC code disabling hardware interrupts, but whatever, maybe it was only partially implemented).  Loading in the DOSBOX debugger bypassed that.

Protip: As soon as you see anti-debugger tricks in something you’re debugging, bypass all of them by loading the program into an emulator debugger (such as the DOSBOX debugger).  This is an advantage that 25 years has given our hobby; in the 80s and 90s, the best we had was something like SoftICE, which wasn’t foolproof.  Running in an emulator debugger view is fantastic because the target program has no idea it is being inspected.

Work continued.  In a neat trick that I don’t fully understand yet, I found that on real hardware it puts a certain value in a register, but in the DOSBOX debugger it puts the wrong value and locks up. I don’t quite understand why, but DOSBox debugger lets me force a value, so I forced the correct value and kept going…

An hour later, I was tearing my hair out.  SNATCHIT, in that fine software pirate impress-your-friends-and-bury-your-enemies tradition, has multiple sections that decrypt, but not all at once, argh!  (In a pirate voice: “aarrrrrgh!”)  I had some of it decrypted in non-contiguous chunks, enough to see this:

db '(C) Copyright 1991, Software Pirates, INC.'
db ' Software Pirates will try to fool you'
db 'and hide code that you cannot find'
db 'and then decode it and then execute'
db 'this is to fake out the opposi$$$n,'

…and later:

; anything in (parenthesis) is not in the text, but implied

db '(they think) that they are smarter than us but no one can ever b'
db 'the infamous programmers that bring you the new and'
db 'fangled code thatknocks your socksoff and stinks up'
db 'the room and probbly your computeralso. Sometimes t(he)'
db 'best way to beat them is to look t(hem)'
db 'straight in the eye and ask them w!' (why) 

Great. Later, the somewhat ominous:

seg000:01D4 db 'PARITY ERROR, Continuing processing.',0Ah

Not only should that wording strike fear into your heart (parity errors are a BAD THING that should NOT CONTINUE PROCESSING), but this message proves they’re redirecting the NMI at some point. Gee, thanks.  I can’t wait to get to THAT chunk of joy.

In the end, I decided it was faster to pull a vintage system out of storage and put a 3.5″ drive in it.  I’m a Generation X guy going through multiple mid-life crises — I haven’t got time for this shit.

I would love to see the actual source code someday, if the programmer would ever come forward (statute of limitations is way over, so I’m crossing my fingers).  Hooking and patching copyiipc runtime was, and still is, incredibly impressive; the source would make a great read.  The last version of this tool was 1991, and I remember seeing Software Pirates, INC. stuff as early as 1984. That’s a pretty good run.

Posted in Software Piracy, Vintage Computing | 6 Comments »

Gone Home’s horrifying alternate ending

Posted by Trixter on February 2, 2015

(This article spoils Gone Home, so if you haven’t played it and want to, stop reading.)

Last year I played Gone Home, and loved it — not for its gameplay (more on this later), but for its near-perfect capture of teenage girl angst in the 1990s.  It’s a wonderful mental snapshot that is difficult to evoke in more traditional visual media; it raised genuine emotion in me, which is rare for a game.

Or, rather, narrative.  Gone Home only barely qualifies as a game; it’s more of an interactive narrative where the pace is controlled by the player and can be explored non-linearly.  To qualify as a game, the user’s actions would have a bearing on the narrative; for example, actions would dictate branching paths, alter the choices given to the player, the ending would be different, etc.  The developers changed the Gone Home page at some point to describe it as “A Story Exploration Video Game”, maybe to mitigate some of the (admittedly very small) criticism from journalists and gamers who point this out.

What’s interesting is that you actually do have a single choice to make, and it can change the ending completely.

Credit for finding this one goes to my wife Melissa, who stumbled into this completely by accident.  The narrative towards the very end of the game flows essentially like this:

  1. Sam loses girlfriend
  2. Sam gets girlfriend back
  3. Sam apologies to sister that she’s leaving

(#3 implies that she’s running away from home to be with her girlfriend again.)  These are told in the form of journal entries that you click on as you navigate the game world.  You have to find and click on them to activate them, or you’ll never read/hear them.  So what happens if you skip journal entry #2?  The narrative now becomes:

  1. Sam loses girlfriend
  2. Sam apologies to sister that she’s leaving

That last part is the end of the game, and is portrayed with the following text as somber grunge music starts to play:

Katie… I’m so sorry.
That I can’t be there to see you in person.
That I can’t tell you all this myself.
But I hope, as you read this journal, and you think back, that you’ll understand why I had to do what I did.
And that you won’t be sad and you won’t hate me, and you’ll just know…
that I am where I need to be.
I love you so much, Katie. I’ll see you again. Someday.

Without knowing why Sam is leaving, this reads like a suicide note.  Imagine the horror in my wife’s face as she missed the relevant journal entry by accident and arrived at this ending.

The good thing about this unintended consequence is that Gone Home can now officially be called a “real” game, as a player choice can result in a second ending.

Well, there’s a third ending too, but you’ll need guns.  Lots of guns.

Posted in Gaming | 1 Comment »

Sony Xperia Z3v impressions and workarounds

Posted by Trixter on January 10, 2015

The Xperia Z3v is a very odd hybrid of a phone that is being marketed as a flagship for the current generation of smartphones; it was released in October 2014 and is a Verizon exclusive (other carriers have the older Z2 or Z3).  There is a nearly criminal lack of coverage in the media for this phone, so I thought I’d rectify that with my thoughts on the phone after two months of use.  First, some background:

We switched the entire family over from Sprint to Verizon (more expensive, but you get what you pay for) and part of the terms of the switch was that we all get new phones.  As I was a long-time Samsung customer (Epic 4G, Galaxy S4) I was planning on going with the S5, but wanted a few things the S5 couldn’t give me, like stereo front-facing speakers.  After reviewing everything Verizon offered that met my requirements, I decided to try the Xperia Z3v under the agreement that I could return it after 14 days if I wanted to switch to another phone.  Because the phone is best-in-class in a few areas, I’ve decided to keep it, accepting that a few aspects of the phone need workarounds.

The Z3v is a combination of the Z2 (larger, thicker body; slower CPU) and the Z3 (camera, screen).  It’s a frankenphone that only Verizon offers.  Let’s start by describing the basic features of the phone that drew me to it:

  • 20 megapixel camera sensor
  • 1080@60p and 4K@30 video recording
  • IP65/68 rating (dustproof, waterproof up to 5 feet for up to 30 minutes)
  • Front-facing stereo speakers
  • Dedicated physical camera shutter button
  • Wireless charging

(It has more features than these obviously, like remote PS4 playing, but these are the only ones that interested me.)  Sounds awesome right?  Well, it mostly is.  Based on my experience, here’s what “mostly awesome” means:

Pros

The camera.  As a point’n’shoot, the Z3v is one of the best I’ve ever had.  The 20mp sensor, coupled with firmware borrowed from the Sonty CyberShot line of cameras means that it shoots great automatic pictures.  In default “auto” mode, which is what you get if you press the camera shutter button to wake up the phone and go straight to the camera app, it uses the 20MP sensor to oversample the scene and provide both free HDR shots and stabilization.  It is smart enough to turn off stabilization if it notices the camera is on a tripod, and tells you it is doing so with a small status indicator.  Actually, it’s smart enough to do all sorts of things that I won’t bother mentioning here — just know that the Z3v is good enough that I don’t carry a dedicated camera any more.  Is it a replacement for a DSLR?  No, of course not.  But it is definitely a replacement for a sub-$300 point’n’shoot.  The shutter button even performs a press-half-to-focus-lock, press-full-to-shoot function.

4k video.  Being able to shoot this is not terribly practical, but it does work, and you do see some additional fine detail that you don’t see in 1080p mode.  4K mode is useful if you can’t decide on the framing of a 1080p shot and you want the ability to crop without losing detail.  It works best outdoors; there’s no point in using it in low light.

It’s waterproof.  Will I be shooting underwater?  No.  Will I be secretly grateful that my accidental fumble of the phone into the toilet won’t completely destroy it?  Absolutely.

Active noise-canceling for free.  This feature isn’t advertised heavily, but if you purchase the custom “Sony Digital Noise Cancelling Headset (MDR-NC31EM)” earbuds for $45 and stick them in the phone, the Z3v will 1. recognize they are in, and 2. enable active noise-cancelling.  This works because the earbuds have little microphones on them that sample the environment, which the phone then generates the inverse waveform for in certain bands and mixes that into the output.  While the earbuds aren’t the most comfortable things to have in for more than an hour, the features does work well — better than noise-isolation earbuds which I’ve used for a decade — and I’m thankful to have them on my commute.  I haven’t noticed any distortion, but I listen to mostly spoken material on my commute.

Wireless charging.  With a cheap Qi charger, this simply works, which is great because the USB/charging port is normally behind a waterproof door you have to keep opening and closing when connecting via that port.

Battery life.  The battery life on this phone is simply amazing given what the phone is capable of.  I can go two days on a single charge, and that includes 3-4 hours of screen-on time per day.  If that’s not good enough for you, there are two classes of power-saving modes with multiple levels of customization, the latter of which shuts down everything except calling and texting and can stretch a single charge up to seven days.  Geezus.

Sounds too good to be true?  Well…

Cons

The 20MP mode is disappointing.  The camera normally shoots everything at 8MP.  If you want the true resolution of the sensor, you can enable 20MP in “manual mode”.  It works, and you have some customization over the shot, but it’s disappointing because the sensor and lens are small enough that there is no appreciable extra detail captured in the 20MP shot.  I’ve done comparisons with the phone on a tripod in a lot of light and there was just no advantage: I scaled the 20MP shot down to 8MP in photoshop and it didn’t look any better; I did a 100% crop of a few locations in both images and the 20MP didn’t have any more detail, mostly just fuzzier larger sections.  So, it’s sort-of useless, and I don’t use it.

The phone is slippery.  The front and back are glass, and the edges are a rougher plastic material.  The edges aren’t enough for me to keep a good grip on the phone at all times.

The native camera apps offer little customization.  If you want to shoot video under odd circumstances, or use the camera on a tripod to take nice stills, the native camera app — even in manual mode —  lacks a few things that make it difficult.  There’s no true manual focus or manual white balance.  You can pick focus “types” and white balance “types” but the focus and exposure are always auto-adjusting.  And the 4K video mode offers no customization whatsoever; it’s 100% auto-adjust.

60p isn’t really 60p.  For some inexplicable reason, the camera shoots video slightly slower than 59.94 or 60fps which are the only framerates considered 60p broadcast standard.  Out of several tests, the resulting videos had variable framerates, all nonstandard, like 59.32 and 58.86.  This leads to slightly jerky video over longer lengths of time, and can cause issues editing in post.  One video I shot and uploaded directly to YouTube without editing shows up as “1080p59″.  (The 30p video modes were all 29.97 like they’re supposed to be, so that’s good at least.)

4k video mode overheats the phone.  Seriously.  The first time you use it, you’ll get a pop-up saying that if the camera overheats, your video will be stopped, saved, and then the camera will shut down to cool off.  Sure enough, it does all that after about 5-7 minutes of 4K video shooting.  This, coupled with the 60p framerate issue noted above, seems very bubblegum-and-shoestring to me.  But, good luck getting those fixed, because:

Frankenphone = orphan.  The Z3v was the result of a partnership between Verizon and Sony; it is a hybrid of the Z2 and Z3.  As a result, neither company will fully support the phone.  I’ve tried to report the firmware bugs noted above to both companies, and both companies tell me to contact the other company.  Sony tells me that Verizon supports the phone exclusively, and Verizon tells me that any firmware bugs in the camera are the responsibility of the manufacturer.  Which really sucks, because:

Playing with the alarm volume can lock up the phone.  If you adjust the volume of an individual alarm a few times, then this hilarious thing happens: When the alarm time comes, it does not make noise but instead locks up the phone.  You have to mash and/or hold down the power button to get out of this state until the phone eventually reboots.  I was late to work one day because of this.  It would be nice to be able to report this bug to someone, but oh well.

The front-facing speakers aren’t as loud or clear as they could be.  My son used to have an HTC One M7 and his audio was louder and clearer than on the Z2v despite the hardware being almost 2 years older.  It’s not bad; just don’t assume it’s a replacement for good headphones.

The Stock youtube app doesn’t allow pre-downloading.  This feature was removed by YouTube at some point, angering hundreds of thousands of commuters, myself included.  I used the stock YouTube app on my Galaxy S4 for a full year for this reason so I could predownload videos in my “Watch Later” list to view on the train, and the Z3v app is fully updated and doesn’t allow caching of videos.

These were initially very big disappointments and I almost returned the phone because of them.  After some research, here’s how I mitigated them:

Workarounds

Slippery: The Verizon store had a $20 cheap flexible plastic case that I put on it just to make it less slippery until I found something else.  I haven’t found anything else, so it’s still on there.  I tried carbon fiber stickers; while they looked nice, all they did was make it more slippery.  Trying to search Amazon or other stores for “Xperia Z3v case” doesn’t work well because you keep getting results for the Z2 or Z3, both of which have different dimensions than the Z3v.

Lack of manual camera options:  I found that OpenCamera works with my phone and supports locking focus, white balance, and exposure.  This allows me to shoot videos in very odd conditions, such as a reflective glass computer CRT that emits colored light.  It doesn’t support the 60p or 4k modes of the phone because those are manufacturer-specific and have no exposed API.

Odd 60p videos:  I am no stranger to avisynth, so I created this script to “fix” 60p videos so that they can be edited in post-production without causing problems:

A = FFAudioSource("MOV_0001.mp4")
V = FFVideoSource("MOV_0001.mp4")
AudioDub(V, A)

# Force compliant framerate (will adjust audio rate to match)
AssumeFPS("ntsc_double", true)

# Resample adjusted audio rate back to 48KHz 
SSRC(48000) #if crashes, use ResampleAudio() instead

Inability to pre-download YouTube videos:  TubeMate now provides that function.  It’s clunky and buggy, but it works well enough to keep my commutes from becoming too boring.

Alarm volume adjustments lock up phone:  Adjust the alarm volume using the Settings->Alarm path instead.  Whatever you set it to, all new alarms will inherit, and you can adjust that all you like without consequences.

Conclusion

I think it’s a great phone if the above Cons don’t affect you and you’re looking to join Verizon and get a new phone before April 2015.  (After April, I believe the new Samsung is coming out, and it remains to be seen how that compares.)

Most people will use the phone on full auto, and it is very, very good at that.  Just don’t expect manual fine-tuning of a few things.

Posted in Digital Video, Technology | 1 Comment »

Best In Class

Posted by Trixter on January 4, 2015

Sanity wrote something in their Arte end-scroller that always stuck with me:  If you can’t do it better, why do it?

This was my hobby philosophy for over two decades.  It’s the philosophy that created all of the demoscene productions that I am known for, such as 8088 Domination; I’ve placed 3rd or higher in every competition I’ve entered.  It was what fueled my involvement in the Abandonware concept, which would likely have died on the vine without the search engine I created for the original Abandonware Ring (this was in the days before Google and RSS existed; without a search facility, it was cumbersome to find games).  It was what prompted me to design and implement MobyGames with my friend Brian Hirt (several years before wikipedia existed).  It created the MindCandy series of DVDs and Blu-rays.  I am proud of all these accomplishments.

This was my hobby philosophy.

I’m stepping down from always trying to be the best at what I do.  The primary reason is to preserve my sanity, as I am haunted by mistakes I’ve made.  At least one night a week, I lay awake unable to stop thinking about them.  Plus, it contributes to an unhealthy obsession (which also keeps me awake) over trying to be the very best I can be in my various hobby pursuits.  I can’t keep assigning self-worth to project success.  It both paralyzes me and tears me apart.

There was a time when I thought I needed my hobbies to deal with life and stay sane.  Today, I’m finally realizing that all of the successful accomplishments in my life were achieved when I was simply relaxing and having fun.  So that’s what I’m going to do — have some fun and work on what I want to work on, rather than try to win competitions and impress people in my various circles.  If I get another minute of fame along the way, then that’s a nice bonus, but it’s not the goal.

So what’s next?  What is “fun”?

  • More blog posts.  I enjoy writing, even if nobody enjoys reading what I write :-)  Maybe someday my kids will find this blog and get a better sense of what their father was like.
  • S00p3r sekr3t demo project.  See you at Revision!  Hint: It’s not a solo production.  Hint #2: I am the worst coder in the group — that scares me tremendously, and it should scare you too.
  • S00p3r sekr3t vintage gaming project.  Think big!
  • Personal Computer Sound Museum.  This has been in the works for ten years.  Unless there are complications, this will be implemented in Drupal 8 because I need a functional taxonomy framework and Drupal seems to be the only CMS that has one.  So, when Drupal 8 is out of beta, I’ll start tinkering.
  • A vintage computing audio podcast, time permitting.

Most importantly, I hope to make my family and friends laugh this year.

Posted in Lifehacks | 9 Comments »

CGADEMO by Codeblasters

Posted by Trixter on November 22, 2014

Trixter:

I don’t normally reblog other people’s blogs, but my own blog has been neglected lately due to work on other vintage computing and programming projects, so I thought I would share a post by my friend Scali that covers a vintage programming problem just as well, if not better, then I would have covered. Enjoy.

Originally posted on Scali's OpenBlog™:

Today I want to talk about a rather obscure, yet interesting demo, namely CGADEMO by Codeblasters, from 1992:

As you can read from the scroller, what’s interesting about this demo is that it runs at full framerate (60 Hz) even on the original IBM PC (8088 at 4.77 MHz with CGA). And that there are 16 colours on screen at the same time.

Unstable rasters

To start with the 16 colours… They use a trick similar to my palette switching in the 1991 donut. Namely, they change the background colour of the CGA palette at every scanline, which gives a rasterbar effect. This is very similar to what I have discussed on C64. This demo does not use a stable raster however, since that is very difficult to achieve on a PC anyway. Instead, they use polling of the hblank status bit to determine when a scanline is…

View original 1,454 more words

Posted in Uncategorized | Leave a Comment »

Fun for the feeble-minded

Posted by Trixter on October 26, 2014

As a teenager in the 1980s, I loved using computers, and also building things, and especially loved building things with computers.  Naturally, I adored Music Construction Set and Pinball Construction Set.  The version of Music Construction Set for the PC floating around in the wild was mine; it comes with 30+ tunes more than the original diskette had, mostly covers as I learned to use the program, or learned my music lessons, or transcribed tunes I heard on other computers (the “power bots” MCS tune should be familiar to Apple II owners).  My Pinball Construction Set tables were not as enjoyable, so they stayed with me.

The more I built my own tables, the more I wanted to see how other tables were built.  I acquired a copy of Night Mission Pinball from a friend, and played it for hours, jealous of how much more it did than PCS:  Sound was more “authentic”, more complicated scoring, better graphics.  I ended up playing it exclusively and stopped using PCS.

Unfortunately, I played it so much that the disk wore out and wouldn’t boot any more.  Worse, my friend no longer had a copy to make for me, and I was too broke to buy it proper.  What to do?

Build my own in Pinball Construction Set, obviously:

mynight_000

I did this from memory just from playing the original game for so many hours.  It’s not perfect, but when you compare it to the original, I think I did a pretty good job:

pinball_000

If you’d like to play the amateur horror that is Jim Leonard’s Night Mission Pinball, you can now do so.

Posted in Gaming, Vintage Computing | 1 Comment »

An Episode Guide to Monsters (The TV Show)

Posted by Trixter on October 11, 2014

The 1980s was defined by trends, one of which was the rise of the classic horror movie.  This manifested itself in the form of several “horror” TV shows that combined elements of The Twilight Zone (including a Twilight Zone remake itself!), A Nightmare On Elm Street, and elements of traditional horror.  These were sometimes hard shows to make, as they had to be sufficiently scary, disturbing, surprising, etc. while not violating any television broadcasting codes.  Many episodes used humor to disarm some of the more unsettling themes.  Due to the content, many of these shows were broadcast only in the late evening between midnight and 2am.

Two of these horror anthologies, Tales from the Darkside and later Monsters, were produced by Laurel Entertainment, the brainchild of George Romero and Richard P. Rubinstein.  Tales was pitched to networks based on the success of Laurel’s Creepshow, which WGN bought and syndicated.  When it ended, Laurel started Monsters.  Monsters is very much like Tales, except it focuses more on horror, whereas Tales delved into sci-fi, fantasy, and modern-day “ironic twist” stories similar to The Twilight Zone.

Being the month of Halloween, there’s no better time to check out Monsters.  It was recently released on DVD, and you can find the entire series online if you look hard enough.  To help you experience only the good stuff and skip terrible episodes, I’ve created Trixter’s Totally Subjective and Spoiler-free Guide to Monsters (The TV Show).  It’s presented as a Google Docs spreadsheet with some filters for your convenience.

By “spoiler-free”, I mean I’ve created a column that describes the basic plot of the show without giving away anything that would ruin any surprises, twist endings, etc.  If you want to only check out notable guest stars, there is a “notable guest stars” column.  If you are only watching Monsters because you were a fan of Tales from the Darkside, there is a column for that too: Because both shows were created by the same production company and most of the same people, many Monsters episodes feel more like TFTD, so you can filter on that if you were only a fan of the former.

But if you’re really short on time, just use the filter on the Grade column and watch anything graded A.  Some of those are just bananas.

Posted in Entertainment | Tagged: , , | Leave a Comment »

The Outlandish Adventure of Miss Amanda Collins

Posted by Trixter on October 7, 2014

In the world of vintage computing history and preservation, I am both an archivist and a conservator.  There are very many archivists in various corners of our field; it is easy to gather up collections from multiple sources and dump them in a single place for the viewing public.  Conservators, however, are the people who roll up their sleeves and get their hands dirty.  They perform the task of extracting the archival works in the first place from the original distribution medium.  This can range from reading files off of a disk, to reconstructing long-past systems using 3-D printed replacement parts, to figuring out the structure of unfamiliar data.  Conservation is work.  Our hobby needs more conservators.

Some data rescues have high visibility, such as the recovery of Andy Warhol’s early digital art.  But the majority of rescues are not notable.  My specific area of focus is very early (think 1980s) PC games on floppy disks, and recently I’ve recovered a few items not yet found “in the wild”, but painfully boring:  A horrible WWII flight combat sim, a chess tutor, a children’s A-B-C program.  The latter is PCjr-specific, which is intriguing, but for the most part these items hold no significant place in history.  Still, I do it for The Cause.

One enjoyable side benefit of this work is occasionally coming across something human amongst the digital clutter.  Like a trunk discovered in an attic that hasn’t been opened in decades, you can find all sorts of clues about a person’s or family’s past, pieces of their lives, hiding in the data: Letters to family, ledgers and receipts, creative writing, favorite recipes, comic book collections, a child’s digital fingerpainting.  I’ve found these and more during my archaeology, and it always makes me smile.  (Please don’t get the wrong idea; I don’t mean the above to sound voyeuristic, but rather more of admiration and respect for the original owners who actually used their systems to improve their lives.)

One favorite example in recent memory was when I rescued a no-name taiwanese XT clone out of the trash (literally; it was in a dumpster).  Based on the files left behind, the system was owned by an asian female college student in the late 1980s who was an accounting major and used the computer exclusively for school… or so it looked at first glance.  Tucked away among all of the spreadsheets, essays, and databases, in a tiny corner of the filesystem, was a single directory that was filled with poetry, in a style written with few carefully and powerfully chosen words.  The entire system and its files gave the impression of a young woman who was following her father’s wishes, but who longed for something more fulfilling.

And it is here I will introduce you to miss Amanda Collins, who holds the record for the most endearing recovery I’ve had this decade.  I don’t know anything about her other than her name, and I certainly don’t know which out of the nearly 1500 “Amanda Collins” located in the USA White Pages she is.  I don’t know how old she is, although I have a good guess how old she was All I can tell you is how I found her.

I was going through disks to archive and found a commercial business program from the early 1980s that looked interesting; I had never run across it before, and it was copy-protected which is always a fun challenge.  But more interesting is that it was sticky.  As in, peanut butter and jelly sticky — on the media itself (ie. the part that shows in the “window” that the diskette sleeve’s pictographs illustrated you were never, ever supposed to touch).  Rescuing this disk required actual warm water, a soft cloth, and careful rubbing.  Unfortunately, the diskette had been permanently damaged by whatever had stuck to the media, but I figured I’d work a little harder on the first few tracks just so I could see what was on the disk and call it a day.  At the end of the directory, after the commercial program files, was a file called ET with no date on it.  I wasn’t able to rescue the program, but I was able to get the ET file.  It is my pleasure to share it with you exactly as I found it:

ONE DAY I WAS WALKING DOWN THE STRET 
AND SAW E.T. HE REPLIED WHO ARE YOU.
I REPLIED I AM AMANDA N. COLLINS. 
SO WE WENT WALKING THEN E.T AND I 
WENT TO MARY'S SHE SAID WHAT A CUTE 
 CREATRUER I SAID IT IS E.T WHAT? 
REALY.IAM NOT JOKING.THEN PROVE IT TO 
ME OK E.T. GIVE ME YOUR FINGER LIKE YOU
DID IN THE MOVIES E.T REPLIED OK. MARY
SAID I DON'T BELEAVE  IT.  E.T AND I 
SAID BYE-BYE MARY SAID  OK GOOD BYE.
 THEN I WENT TO RICK'S HOUSE HE SAID
GEEPRES E.T.  I'LL BYE HIM OFF YOU 
FOR 50$ I SAID SORRY BUT HE IS NOT FOR
 SALE  AMANDA  50$ PRACTICEL IT IS NOT
PRACTICEL  THEN  IF 50$ IS PRACTICEL 
THEN HOW ABOUT  2.00$ COME OFF IT RICK
THEN 5.000$ NO-ON-NO STOP POOLING MY
HAIR NOT UNTIL YOU LET ME HAVE HIM.RICK 
I'VE GOT A IDEA I WILL HAVE HIM FOR SIX
MONTHS AND YOU WILL HAVE HIM FOR SIX
MONTHSRICK AGREED  AND THERE WAS NO MORE
FIGHTING ANYMORE BETWEEN RICK AND I SO 
E.T AND I WENT TO BERGER KING E.T ORDER
A CHEESE BERGER AND A HAM BERGER WITH 
EXTA ONIONS AND PICLES E.T. ALSO ORDER
A LARGE ORDER OF FRENCE FRIES.THEN WE
WENT TO MY HOUSE I HIDE E.T IN MY BARBE
HOUSE WHEN MY MOTHER WENT TO CLEANE MY
BARBE HOUSE SHE YELLED AMANDA GET DOWN
HERE AMEIDLE .I SAID WHAT IS WRONG
AMANDA STOP JOKING MOM REALY I DON'T
KNOW WHAT YOUR TALKING ABOUT THEN 
EXPLAIN THIS  E.T.GET HIM OUT OF HERE.
NOW IS MY ONLY CHACNE TO GET IN ONE OF
MY DOLLS   DRESSES AND HIDE HIM IN MY
CLOSET . WHEN MOM CAME TO CHECK MY 
CLOSET MOM SAID WHERE DID YOU GET THAT
NEW DOLL .I SAID I SENT AWAY FOR IT .GO
AHEAD BUT NOT NEXT TIME I'LL REMEMBER.
THEN WE WENT OUT FOR BREAKFAST.WE WENT
TO MC DONALD'S WE HAD PANCAKES OFF THE
OVEN THEY WHERE SHORE GOOD.E.T.SAID
LET'S GO  TO THE MUSEMS I SAID LET'S GO
SEE THE DINASORES. THEN WE WENT TO THE
PARK AND THEN BACK TO MC DONALD'S AND
HAD LUNCH AT 7.45 WE CAME TO A END AND
HAD DINNER AT 8.04 AT 12.55 E.T AND I
WENT TO BED.
                   THE END.
                      BY
                        AMANDA  COLLINS

This little girl had decided one day to write a story, and when the program prompted for a diskette to save it, she grabbed — with sticky jelly fingers — whatever diskette was closest and jammed it in… in this case, Daddy’s expensive business program, ruining it in the process, and possibly the drive it was jammed into.

I lack the skill to convey how adorable I find this.

In your own digital archaeology adventures, may you someday feast on cheese bergers, and see dinasores at the park.

Posted in Vintage Computing | 1 Comment »

Cyberpunx

Posted by Trixter on October 5, 2014

October is “National Cyber Security Awareness Month”, whatever the hell that means.  In recognition of this dubious designation, I’ve made an HD remaster of the 1990 documentary Cyberpunk available.  Consisting of interviews with William Gibson, Jaron Lanier, Timothy Leary, Vernon Reid (from Living Color), and Michael Synergy, and briefly featuring a few industrial bands such as Front 242, Manufacture, and Front Line Assembly, the documentary provides a look at what the cyberpunk movement was circa 1990.  Subjects such as cyber-terrorism, cybernetic implants/enhancement, virtual reality/telepresence, and general counterculture rebellion against “The System” are touched upon.  Inevitable comparisons with Akira are made.

Here Be Dragons

While the producer and director did an admirable job making the source material interesting and presentable to the public, there are a lot of flaws with the documentary.  Some are minor and can be overlooked, such as the 1990s trend of inserting faux computer graphic overlays (to try to make the material more similar to the world Gibson painted in Neuromancer).  Many of the problems are with pacing; there are entire sections that focus on a particular subject for too long, sometimes without impact.  One section in particular goes so long that different digital effects start to fade in and out after a few minutes, almost as if the editor was bored and resorted to doing something with the image to keep the viewer’s interest.

There are also some very misrepresented facts and predictions, but it’s not really fair to criticize a documentary for failing to predict the future correctly.  That being said, there are some real howlers in here, from the supposed power hackers wield(ed) against governments, to the silly, amateur computer graphics that obscure hackers’ identities, to the heavily hinted-at concept that Neuromancer itself was responsible for shaping technology and history.  The most egregious is equating hacker with cracker (although, to be fair, that’s happened multiple times before and since).

A special mention must be given to Michael Synergy, who perfectly embodies the huckster who started believing his own bullshit.  Some of his claims in the documentary are so utterly, patently ridiculous, so incredibly pretentious, that it takes a great deal of willpower not to scream at him when he’s talking (especially when he mispronounces the word “genre”).  Were I him, I would have wanted this stage in my life to disappear, and it seems as if that wish has come true: His moniker disappeared with the 1990s.  My personal wild speculation is that once the real, actual revolution of the web occurred and it was able to finally call him out, he quietly exited stage left.  (Last I heard, he worked for Autodesk in the mid-1990s, was going by his birth name again, living in Hawaii, working in IT; if anyone has a real update, I would love to know what actually happened to him.)

Most depressingly, there is a real missed opportunity with how Jaron Lanier’s involvement was portrayed.  In the documentary, he comes across as a stoner who only mentions VR, which is a shame because — then and now — he’s the most relevant and accurate representation of a hacker that the documentary includes.  Of everybody interviewed, Jaron is the only person who is still exploring these concepts and ideas, and more importantly their unintended fallout, which you can read about in his most recent book Who Owns The Future?.  (Even if you don’t buy the book, follow that link and read the Q&A to get a feeling for his concerns.)

Worth watching?

While it may be hard to sit through, the documentary retains glimpses of the innocent, wildly-optimistic, techno-hippie idealism that grew with the rise of personal computing and networking.  For that nostalgia factor alone — the time when the Internet existed but the World-Wide Web did not — it’s worth an hour of your time.  It’s also worth watching to catch which ideas were especially prescient, such as:

  • Whoever holds the most information holds the most power
  • Every device will be interconnected
  • Physical boundaries will not impede meaningful communication
  • People will be individual, mobile, uncensored “broadcast stations” (considering I can post to youtube from my phone, I’d call this a reality)
  • The “matrix” as a concept and/or allegory for God (later realized almost to the letter in The Matrix movie trilogy)

…and so on.  You could make an interesting drinking game out of catching which ideas succeeded (although you’d get more drunk, quickly, by catching all of the stupid and inaccurate comments).

Cyberpunk: The Documentary is now available at archive.org.  Grab the MPEG-TS file if able; it’s 60p, Blu-ray compliant, and won’t take up too much space in your memory implant.

Posted in Digital Video, Entertainment, Technology | Tagged: , | 1 Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 437 other followers