Monthly Archives: February 2016

In search of VIC-NIC News

My first computer was a Commodore VIC-20. When I first received it (thanks, dad!), I stayed up all night going through the manual learning how to program it. In my short time with the VIC (I got a Radio Shack CoCo 1 about a year later), I wrote many simple games. Recently, I found a box of old VIC-20 cassettes that have these programs, and I have been trying to import them to run on an emulator.

This makes me want to find another aspect of my first computer. I had a program published in a newsletter called VIC-NIC NEWS. I cannot find my physical copy of it (but may still have it somewhere, since I still have all my old Compute’s Gazette VIC-20 magazines). I’ve done some searching for it over the years (and when I search now, I tend to find myself searching for it or talking about it).

Can anyone help me track down VIC-NIC NEWS? My game was a simple “catch the falling object” game called Eggs. I’d really like to see it again.

Online searches revealed issues of a magazine called Commander. I found this excerpt:

THE VIC-NIC NEWS , bi-monthly, $6 per year from The Byte House.

8 page newsletter consisting of several brief listings, a page of reviews, a crossword puzzle, some ads, a question column, and errata. A decent price from friendly folks, but what is a VIC-NIC?

As well as a listing under User Groups – New Hampshire:

TBH VIC·NIC CLUB
PO Box 981
Salem, NH 03079
Contact – J. Newman
Publication – VIC-NIC NEWS
Interests – VIC-20 Exclusively

I have had no luck tracking down J. Newman. (I also wonder if this might be a female, since I often see women go by an initial in publications and online. Anyone know who J. is?)

Any help?

Before Sub-Etha Software…

…it was going to be Custom Programs Limited.

My first computer was a Commodore VIC-20 back around 1981 or 1982 (whenever it first came out for “under $300” – $299.99 is what my father paid for it, I believe).

But my buddy, Jimmy*, suggested “Unlimited” because then it would be C.P.U. (I had not even heard the term CPU yet). And thus, CPU Software  was born.

Screenshot 2016-02-23 21.57.52

The letters appeared to the musical notes of 2001, one at a time, then the title screen would come up:

Screenshot 2016-02-23 21.58.07

That was to be our startup for all our custom programs. It was going to be me writing for the VIC-20, and Jimmy writing for a Timex Sinclair ZX81, and another guy at school writing for a TRS-80 Model III (he didn’t own one, but had access to them at school). We thought we could custom write programs for people.

Our first program was a horse racing game, and it was written for each of these platforms, though I don’t seem to have a copy of it (or it’s on one of the tapes that is bad).

I don’t know why we didn’t pursue this, but I did write a bunch of small games for the VIC-20…

Brick Layer

Bricklayer was a simple game based on the Atari VCS cartridge Surround. I apparently wasn’t date-aware back then, and the comments inside the program only list the title and author. Bummer. I really would like to know when I wrote these.

Bricklayer for the VIC-20

Bricklayer for the VIC-20

The game screen animated as it drew the black walls (with sounds), then the game began. Using a joystick (I think), you started “laying bricks” around the screen, trying to cover as much area as you could without running out of room or crashing.

Screenshot 2016-02-23 20.56.14

If you got over 200, it would congratulate you. If you crashed, it would summarize your accomplishment.

Bricklayer for the VIC-20

Bricklayer for the VIC-20

Yeah. There was a time when this would have been considered a game. Interestingly enough, the movie TRON would come out a year later, taking the “draw lines” concept to a new level with the Light Cycles. The TRON arcade game featured Light Cycles as one of the four games it had, and this became my favorite arcade game of all-time.

I guess I had a thing for drawing lines.

Gold Grabber

Next up was a chase game.

Screenshot 2016-02-23 21.26.39

You moved around the screen (you were the clubs symbol) trying to catch the gold (the diamond) while avoiding the bad guy (the +).

Screenshot 2016-02-23 21.27.05 Screenshot 2016-02-23 21.27.43

I have no idea what the “+” represented, and the game logic just had it wandering around randomly so I had to actually try to run in to it to see what it did.Screenshot 2016-02-23 21.29.30

Factory TNT

In my mind, this was called Factory TNT, but for some reason, the cassette was just labeled as TNT. This was a “Kaboom” catch the falling objects game. I had previously written a text version of the same type of game and called it Eggs. In it, you were catching falling eggs. This game was printed out in the VIC-NIC NEWS newsletter.

I almost had this program distributed by a company, but due to my very similar game being printed in a newsletter (which they also subscribed to), they decided to pass on it. (I’m not sure, but this may have been the “FOX 20: the magazine for VIC 20 users” newsletter, published out of Pasadena/Deer Park, TX. (I lived in both those towns at one point, and recall going over to the house of the publisher – it was a home run operation – and meeting them once.)

The tape is bad, so the custom graphics are not loading, but it should look like a conveyor belt on the bottom, and pipes on the top. Classic round bombs would fall from the top and you moved your cup along the conveyor to catch them. If they hit the ground, they would turn in to a mushroom cloud. It has decent sound effects.

Factory TNT for the VIC-20

Factory TNT for the VIC-20

Apparently, it tracked high score (not saved to tape or anything, so it would reset any time you reloaded).

Factory TNT for the VIC-20

Factory TNT for the VIC-20

Factory TNT for the VIC-20

Factory TNT for the VIC-20

Apparently I had different rankings! Cool. I need to check the listing and see what all they were.

Thick Brush

For some reason, I did a blocky drawing program.

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

Thick Brush for the VIC-20

What in the world was this good for? There didn’t seem to be a way to save the “artwork” either. I guess I was, yet again, inspired by the Atari VCS Surround cartridge, which had a simple drawing mode (but the Atari version didn’t let you draw in colors – take that, Atari!).

Sky-Ape-Er

In a previous post, I mentioned my Donkey Kong inspired game, Sky-Ape-Er. Actually, it was really inspired by a VIC-20 game I bought that was inspired by Donkey Kong. I remember seeing it at the only VIC-20 store in Houston (I had my grandmother drive me across town to go to it), and they were out of stock, but they made a copy and sold it to me, and said I could get the real tape when they got more (I never did). On the label, they hand wrote “Krazy Kong”, so it might have been this one, or this Super Kong one. They appear to be the same game, but with different colors.

The important breakthrough was that they solved the problem of ladders and such by just making the level wrap around and go up. I had been working on a Donkey Kong style game and planned to use teleporters so you would stand on a spot and it a button and be teleported to the level above (I guess I had no idea how to make the climbing work then). When I saw the Krazy Kong approach, I knew I could do that, and make it better.

I worked on a few versions of this, with some graphics that looked like Donkey Kong girders, and some that looked like bricks. I think the brike

Later versions had instructions!

Unlike one I bought, my version had instructions!

The graphics were more Kong-like here. Sorta.

I think mine looked better than the one I bought.

It turns out to be a very difficult game! I finally cleared the first screen and found out there were multiple levels! I wonder how many are in there??? This is level 2 (using the prototype graphics):

Sky-Ape-Er for the VIC-20

Sky-Ape-Er for the VIC-20

And the “continue” screen was kind of snarky. I seem to have put some work in to these things.

Sky-Ape-Er for the VIC-20

Sky-Ape-Er for the VIC-20

I don’t know what my intentions were with this game, but I expect I was trying to sell it as well. I had no idea that an individual could just make tapes and put ads in newsletters and sell copies back then. I wish I did — I probably could have made some money in those early days.

Maze Gobbler

I was annoyed with Pac-Man games not looking like Pac-Man (I’m looking’ at YOU, Atari VCS), so I started working on my own. I replicated the Pac-Man maze very accurately, but by the time I had done that, I was out of memory on this 3.5K computer. Nothing exists from that maze except a title screen, as far as I have found:

Maze Gobbler for the VIC-20

Maze Gobbler for the VIC-20

Meteor Clash

My attempt at a Defender-style game (maybe – I’m not sure that game even existed yet) was Meteor Clash. You moved a spaceship up and down and dodged endless meteors that headed to you.

Meters Clash for the VIC-20

Meters Clash for the VIC-20

This game had an intro that printed out text letter-by-letter like a typewriter, with beeping sounds! Fancy.

Meteor Clash for the VIC-20

Meteor Clash for the VIC-20

Spell checkers did not exist for the VIC-20, apparently.

Meteor Clash for the VIC-20

Meteor Clash for the VIC-20

I don’t know how to use those cursor control keys on the emulator yet, so I wasn’t able to play it. I was able to fly for a bit until a meteor hit me.

Meteor Clash for the VIC-20

Meteor Clash for the VIC-20

Oops. This screen shot was taken when the meteors were being redrawn, so it’s just the ship. It wasn’t much of a game yet, anyway. It did have sounds, and an explosion, though! Maybe that would have been enough to be a game, but I hadn’t even customized the graphics yet. (Maybe that’s “Meteor Storm” I keep remembering.)

Rover

I seem to recall that this was going to be a Moon Patrol style game, but all I can find is a test of the title screen.

Rover for the VIC-20

Rover for the VIC-20

I found a few other things, too, including stuff written for the Super Expander cartridge which I cannot run on the emulator I am using. I need to figure out if that is possible in another emulator, since I have some games I wrote for it (enhanced graphics commands and such).

I also did a bunch of video titles for a booth at the Houston Boat Show for my father. I remember having an animated fish that swam back and forth on the screen in one of them, and drawing blue water waves. I later did graphics using my TRS-80 CoCo 1, and my dad was never impressed with it since the colors were so much worse than the VIC-20.

Interesting stuff, even if most of the tapes won’t load in 2016.

Man… I was, like, 12 years old when I was doing this. I really should have done more with it, but who knew computers were going to become such a part of life!

To be continued…

*Jimmy J was a kid I met in 7th grade. I had seen a listing in TV guide for “The Hitchhiker’s Guide to the Galaxy” on PBS and had watched it. In English (?) class, I quoted a line from the show, and he turned around and said something like “you watched that to?” We became friends, and I think he’s the one that let me know about Douglas Adams and the book versions of Hitchhikers. He also introduced me to computers. He had a book on programming and we would go down to Radio Shack to type things in on the TRS-80 Model III. He’s likely the one that introduced me to BBSes too (again, we’d go down and get online at Radio Shack before we had our own computers and modems), and he was also the one that introduced me to the concept of hacking and phone phreaking. Fun times! Beyond my parents, I can’t think of any other person that had such an impact on the direction of my life at an early age. Thanks, James!

CoCo VR

Over the years, there were a number of cool ideas at Sub-Etha Software that I really wish we’d followed through on. Last year, I mentioned some unfinished software projects I uncovered when going through all my old floppies, but there were also a few hardware projects that never made it out of the idea or concept stage…

Reveal VM100 "voice mail" device for PCs.

Reveal VM100 “voice mail” device for PCs.

For instance, once I found a low-cost gadget at Walmart that interfaced a telephone line to a computer. It was controlled by a serial port, and plugged in to the audio in/out ports of a sound card on a PC. It came with software to turn the PC in to an answering machine.

I bought one to hook it up to my CoCo, and had plans to create a simple CoCo answering machine. On a 128K CoCo 3, it would be possible to play a short greeting, and record a short message from the caller then save it out to disk. Sure, the audio quality would have been poor and it would probably be cheaper to just buy an answering machine, but wouldn’t it be fun?

VM100 ready to hook to a CoCo via cassette cable and RS232 pak.

VM100 ready to hook to a CoCo via cassette cable and RS232 pak.

Concept software was witten (in assembly) to record audio from the VM100 (using 1-bit cassette input, or 6-bit joystick input) as well as play back digital audio.

Concept software was witten (in assembly) to record audio from the VM100 (using 1-bit cassette input, or 6-bit joystick input) as well as play back digital audio.

I was even wanting to do touch tone decoding in software and create a simple voice mail system with mailboxes. There was even a plan to create a “telephone adventure game” where a description would be read and the user could make a choice by pressing buttons on their phone. (Years later, the Tellme company did something similar with a version of blackjack you could play over their 1-800-555-TELL demo line. It was so cool, Microsoft bought them!)

Woulda, coulda, shoulda…

I will try to share some more of these “lost” projects in the future, but today I wanted to focus on a virtual reality project I was working on.

VR was a big buzzword in the early 1990s, and many thought it was going to be the next big thing. As we know know, it fizzeled out rather quickly, with Atari, Sega and Nintendo abandoning their home VR products.

The Atari Jaguar VR project was being done in conjunction with Virtuality, the company I previously wrote about that created the VR game I first experienced.

The Sega VR project has a CoCo connection, since one of the launch titles was being worked on by legendary CoCo game programmer Steve Bjork**! I believe this is the game that Bjork was working on: Iron Hammer

Nintendo’s effort eventually came out as the failed Virtual Boy where, instead of wearing an immersive helmet over your eyes, you peered in to a 3-D viewer that remained stationary on a table. Hey, at least they tried!

But I digress…

In the pre-world wide web days, we had things called catalogs which were like paper versions of Amazon.com. One of the catalogs I received always had interesting items often at cheap liquidation prices. One such item was the VictorMaxx Stuntmaster VR helmet. The wiki page claims this was the very first commercial VR helmet made available.

TODO: I need to add a photo of my VR helmet, as soon as I figure out which storage box it is in.

The Stuntmaster wasn’t a real VR helmet, though. It did not provide a stereoscopic display, and did not have any head tracking capability for use with true VR games. Instead, there was an analog dial on one side that connected to a shaft which you clipped to your shoulder. As you turned your head left or right, the shaft would turn the dial, allowing a simulation of left/right head tracking.

You could plug this helmet up to a Sega Genesis game console and then play some games where you held the game controller to play, but used your head to turn left and right. It seems unlikely that this would have worked well with any games not specifically designed for this, but hey, it was the first.

Here is a video of it in all it’s glory:

Me playing Dactyl Nightmare again in 1994.

Virtuality’s Dactyl Nightmare (I am shown here playing it in Dallas in 1994) had a helmet and a hand grip controller that featured a trigger and a thumb button.

When I saw this in the catalog, I immediately ordered one to see if it could be used with the CoCo. My plan was to send CoCo video and audio to the helmet, then wire the left/right control shaft up as a joystick. Taking a nod from the controls of the Dactyl Nightmare arcade VR game I played, I was going to use the two joystick buttons for “walk” and “shoot”. My thought was you could turn your head left or right, then walk in that direction using the button. I guess I was thinking we’d build a special pistol grip controller to work with the helmet.

I had become friends with Vaughn Cato*, who did the original bouncing ball demo when the CoCo 3 first came out. He had been writing routines to do bitmap scaling and such, and I was hoping to use some of this in some CoCo game projects.

Toast 3-D maze engine by Vaugn Cato.

3-D maze engine by Vaughn Cato. It ran under OS-9.

On of the coolest things he created was a 3-D maze engine that drew everything using lines (I guess we would call this a vector engine). It looked similar to Dungeons of Daggorath but you could move through it in all directions, like Wolfenstein 3-D or DOOM did.

I cannot remember why, but for some reason the demo executable was called toast. It would read a small text file that represented the maze, then you could walk through the maze in 3-D. Things never went much further than the demo, but I thought it would work well with the VR helmet as the basis of some kind of VR maze game.

I think I was planning to create something like Phantom Slayer VR (a tribute to the old MED Systems 3-D maze game by Ken Kalish). I certainly know I had worked on this concept before without VR in mind, as well as a 3-D Pac-Man game. The Pac-Man one was interesting, as I got as far as recreating the original Pac-Man maze in 3-D and had it populated with dots you could walk over to “eat.”

Woulda, coulda, shoulda…

I still have the helmet. Who knows . . . maybe some day CoCo VR might still get done, even if there is no longer a supply for helmets to make it a sellable product.

*Vaughn Cato may be the only former CoCo guy to accept an Oscar. He was working with a company doing motion capture and he was on stage to receive a 2005 Technical Achievement Award. That’s quite the trip from a bouncing ball demo on a TRS-80, don’t you think?

**Steve Bjork has also had encounters with movies. If I recall correctly, he was an extra in films like Rollercoaster and The Goonies, as well as working on movie related video games like The Rocketeer and The Mask. Oh, and his CoCo program Audio Spectrum Analyzer appeared in Revenge of the Nerds, and his CoCo Zaxxon program appeared in Friday the 13th Part 4.

Revisiting Virtual Reality from 1993

Everything old is new again… Virtual reality is back and trendy with many predicting it will be “the next big thing.” Again. Today I want to share an article I wrote over 20 years ago when VR was “the next big thing” the first time around.

Me playing Dactyl Nightmare again in 1994.

Me playing Dactyl Nightmare again in 1994 in Dallas, Texas.

But first … Why is VR back again?

I believe it is mostly due to the propagation of powerful pocket computers full of sensors: smartphones.

When the original iPhone was released in 2007, it changed everything. If you look at what a cell phone was before that time, and then what phones are today, you can see a clear jump away from “candy bar” style phones with simple screens and physical keyboards. Today, a modern phone is basically just a high resolution touch screen pocket computer.

Even in the early years, iPhone developers were starting to leverage the sensors inside the device with interesting virtual (or augmented) reality type experiences. I recall a number of early apps that let you hold the iPhone in front of you and then turn around and have the screen respond, as if you were looking through a tiny window in to another place. Today, there are hundreds of such apps for iPhone and Android, with the most famous VR-style experience being Google Cardboard.

When Google created a low-cost VR visor that you could slide your phone in to, they started a huge ball rolling. Now, anyone with a smartphone could easily have a virtual reality helmet. Admittedly, even with the cheap cost of a cardboard visor, most higher end phones today still cost more than the original VR helmets from over 20 years ago, but we already own the phones so why not put them to work?

And if papercraft isn’t your thing, you can buy a plastic VR visor for under $20. Insert your Android or iPhone, load some software, and bingo: instant virtual reality!

But VR wasn’t always this easy or accessible… To appreciate the significance of this, I would like to share an article I wrote back in 1993 that documented my first experience in the world of VR.

Enjoy!


My Trip Into CyberSpace
———————–
by Allen C. Huffman (12/01/93)

The term “Virtual Reality” is new to some of us, and completely unknown to the rest. This term has been used so often in media lately that it’s difficult to know what it is all about. Movies such as Lawnmower Man don’t help clarify things – after all, Science Fiction is just that. Fiction. Today, however, I had the pleasure to experience the real thing and I must say – I’m impressed.

A friend of mine picked me up this morning and we made a three hour drive to Dallas in search of high tech toys. Our search led us to several large electronics superstores where we had a little hands-on fun with some of the hottest video games and gadgets available. We were told about a place not too far away which reportedly had a virtual reality setup. After making a phone call, we discovered this place was a restaurant, bowling alley, pool hall, and arcade all in one. An interesting combination – and one we just had to check out.

A short drive later we were there. Wandering through the dining section we found a pathway leading to the game room. Once there we saw what we had been searching for: Virtuality.

Virtuality is the first commercial attempt at making virtual reality available to the public for entertainment purposes. We found ourselves watching a rather amusing game in progress. There were two platforms side by side. Each one had support beams around it and a “rail” at about waist level. The players had large helmets covering their faces and held a small pushbutton device in their hands. They turned around, pointed up and down, ducked, and just generally acted silly. We noticed two large monitors displaying, apparently, just what each player was “seeing”.

The helmets contained a set of small monitor screens which projected a three dimensional image in front of you. Sensors in the helmet enabled the computer to know where you were looking, and adjust the image accordingly. If you turn your head right, the view pans to the right. If you look up, you see what is above you. Apparently the images were rather convincing, if the actions of the two players was any indication.

It was four dollars for four minutes in a game called Dactyl Nightmare. My associate and I eagerly climbed aboard when it was our chance. The attendant strapped a belt around my waist then gave me a rod to hold. The rod, held like a gun handle, had a trigger on the front and a pushbutton on the top activated with your thumb. The large, awkward helmet was then lowered onto my head and tightened into place. To my surprise, I saw a perfectly clear image of what the large monitors were showing. In front of me I could see a small checkerboarded area with stairs leading down to a large playing area. The square area had stairs leading up on each side, which allowed four starting positions for participants. The center area had an open roof with poles supporting it, and a large doughnut shaped object in the center. While the graphics were bright colored computer shapes floating in space, one could not help but feel like you were standing inside a giant computer world.

A voice came through the stereo headphones in the helmet notifying me that the game was awaiting another player. As soon as my friend was strapped into his setup, the attendant put the game into practice mode. The top thumb button made you “walk” to where you were looking, while the trigger button fired your gun. Gun? Amazingly enough, when I held my arm out in front of me, I saw a computer generated “hand” holding a gun in front of me. If I turned my hand left or right, my virtual arm did the same. Amazing! I tilted my head left and right and the screen moved accordingly. I even turned all the way around and found myself looking at what was behind me.

We took a few moments to walk around. I could hear virtual footsteps as I navigated my way down the stairs and around the poles. “Are you guys ready?” asked the attendant as he activated the real game. A counter appeared at the top of the image at four minutes, counting down. Scores were displayed in either corner. The game was afoot, and I was ready to blast my friend into virtual pieces.

I eased my way around the playfield, turning my head in all directions looking for my target. There he was at the top of one of the side platforms! A computerized person stood there – arms, legs, and a head with facial details and hair. His legs even moved as he came down the stairs. I raised my gun and fired, but missed. The challenge was on. As we chased each other around the playfield shouting “where are you?” back and forth I couldn’t help but notice how real this all felt. Finally, a shot made it’s mark and I saw my target blast into pieces. He was soon back together at the top of his starting platform. The game of chase continued as he shot me and I shot back. After eight shots, a warning flashed on the screen – it was an image of a winged reptile. Looking up into the blackness, a large green creature was sweeping down towards me. I fired up in a panic and saw it disintegrate. My partner wasn’t so fortunate – after his eight shots, the dino picked him up high above the playfield – then dropped him! No harm done, but valuable time wasted.

We had an audience. As I hid behind objects and leaned over and found myself suddenly disembodied by a shot I never saw coming, cheers shouted out. We chased each other some more with some hits but many more misses until the voice warned us “time is running out”. The counter reached zero, and the game was over. As I stood there, completely unaware as to which direction I was facing in the real world, I slowly heard the noises of the surrounding area and realized where I was. The attendant – after what seemed like an eternity – removed my helmet and I found myself staring at a small line of people waiting to take their turns. My friend looked at me and smiled. We stepped down and proceeded to discuss our feelings on what we just experienced. It was very real.

The technology that makes this all possible is not entirely new. The helmet and playing platform were specifically designed for this application, but the computer than ran the show was a specially programmed Commodore Amiga system. The company that produces this “game” packages everything in their own cases (right down to a custom made label on the keyboard) with a CD-ROM drive to hold the program. After it is all put together, it in essence becomes a virtual reality computer system having little to do with the desktop computer that made this all possible. Each pod contains it’s own computer, and up to four can be linked together. Perhaps next time we’ll find a place with all four units available.

Now, you may wonder just how realistic this all was. It felt real. While the images I saw were certainly computer pictures and could NOT be mistaken for anything we see in the “real” world, the feeling of being there was very convincing. You didn’t “walk” with your legs, and you couldn’t touch anything, but the way the world responded to my commands was stunning. The best part is that this is a first generation example of this type of arcade virtual reality. One can only imagine what the next “game” will be like.

So, if you ever get the chance to check out a Virtuality setup, do it. The money was well spent and the brief four minutes felt like an eternity. It was well worth the three hour drive. (By the way, the final score was three to three so we’re going back soon for a rematch!) What a way to start the new year…


That was in 1993 and, as you can tell, I was blown away. Here is a TV program I found on YouTube that featured the above mentioned game (or at least a version of it):

I actually found a number of clips on YouTube featuring this old hardware (some as recently as 2014, as folks have kept the machines running – I guess it’s retro VR now?). I have even read about a modern remake of the game for Oculus Rift:

But back to the 90’s…

I had completely forgotten this until I found a photo last night (included at the top of this article), but I apparently got to play Dactyl Nightmare a second time, about a year later (also in Dallas, quite possibly in the same Dave & Busters). But Dactyl Nightmare wasn’t my only experience with VR. I also got to try a “next generation” version, this time thanks to Disney.

During a 1995 vacation to Walt Disney World, my father and I watched an Imaigneering presentation about Disney VR. They brought a few audience members up on stage and let them try out a new Aladdin’s flying carpet VR game they were developing. It was a very interesting presentation, and the graphics had gotten much better in the two years since I played Virtuality’s Dactyl Nightmare.

Disney's Aladdin-themed VR game at Disneyland in 1996.

Disney’s Aladdin-themed VR game at Disneyland in 1996.

A year later, that VR experiment showed up as a $5 video game at the Disneyland Tomorrowland Starcade. I got to play it there in 1996 and took one tiny 320×240 photo with my first generation Epson PhotoPC digital camera.

The Disney approach had you sitting on a motorcycle-style seat, rather than standing, and you were steering the flying carpet with handles. It was really more of a flight simulator (or flying motorcycle simulator). The game itself involved collecting coins while flying over Agrabah (as seen in the 1992 animated movie Aladdin). The Disney touch was occasional encounters with animated characters that would talk to you during the game.

I don’t know what happened to all of Disney’s work in VR, but I do know that some of this technology ended up as playable games at DisneyQuest in Florida when it opened a few years later. At the time, Disney had big plans for building similar virtual theme parks across the country, but that never happened.

Note: I don’t know if this was the original name, but It appears the game was called Aladdin’s Magic Carpet Ride when it made it’s way to DisneyQuest. Websites I have found show a photo that is very similar to the installation at Disneyland, though I expect it was a bit upgraded since the descriptions I read mention effects that were not part of the prototype presentation at Epcot or installed at Disneyland’s arcade.

Second Note: Had Disney gone through with building Disney’s America theme park in the early 1990s, one of the proposed attractions was a parachute experience that would have made use of VR helmets. (I once read that a version of this was going to be installed at an ESPN Zone somewhere, but I don’t know if that ever happened.) With all the research and investment in to VR, it looks like they saw big potential in the technology if it had caught on.

My third (and so far, final) arcade VR experience was with a second generation Virtuality pod at an arcade somewhere (I keep thinking it was in Canada) running Missile Command VR. Although the graphics were improved, I didn’t find the game itself as immersive as running around those checkboarded platforms being chased by pterodactyls. (Missile Command VR was planned to be released for the Atari Jaguar VR add-on, but when that failed to happen, the game was released as Missile Command 3-D as a normal TV screen game.)

Sadly, the VR fad of the early 90’s ended quickly. Although upcoming offerings like Oculus Rift look promising, who knows how advanced things would be today if it VR had caught on the first time and been in continual development for the past two decades.

Next time … a look at our CoCo VR project that almost was!

My first programs!

Allen's first computer programs for the VIC-20.

Allen’s first computer programs for the VIC-20.

Tonight, I made an amazing discovery. I finally located a cigar box full of cassettes tapes containing VIC-20 programs I wrote in 1982 (when I was just 13 years old). I am eager to see what is on them!

Amazingly, not only where the games I remember writing here, but also a number of others I had completely forgotten about (and some I am not sure what they were). The list of programs I wrote includes:

  1. Brick Layer – likely a Surround type game (like TRON light cycles, which was not out yet).
  2. Factory TNT – the tape just calls it TNT, though. This was a Kaboom “catch the falling bombs” game.
  3. Gold Grabber – ???
  4. Meteor Clash – maybe this is the one I have been calling Meteor Storm all these years. If so, it’s a side scrolling spaceship dodging game.
  5. Sky-Ape-Er – a Donkey Kong style platform game, based on one I purchased and knew I could write better.
  6. Space Shot – ???
  7. Thick Brush – likely a drawing program.

I am very excited to see what these programs were. I also have (very faded) thermal printouts of some of them, though I don’t think I could scan them and OCR them or even read them enough to type them in these days.

Off to find a VIC-20 emulator, and figure out how to digitize these tapes and get them loaded in to it…

Sky-Ape-Er Lives!

Update: I managed to load a few files so far, but most have errors. But, I found two versions of Sky-Ape-Er!

This must have been an early prototype.

This must have been an early prototype.

Pinwheels where the original enemy. For some reason.

Pinwheels where the original enemy. For some reason.

Later versions had instructions!

Later versions had instructions!

The graphics were more Kong-like here. Sorta.

The graphics were more Kong-like here. Sorta.

iCade Mobile controller for $5 on Amazon

I just used some points I earned on Swagbucks to order a discontinued iCade Mobile controller for less than $5 (with Amazon Prime shipping). Currently, the price has gone up to $9, but either way, it’s a deal if you want an iCade circuit to mess with:

Yes. It's pink. Pink was cheaper.

Yes. It’s pink. Pink was cheaper.

iCade Game Controller (Pink) – Amazon link

I chose the pink one because it was a buck less than the other color. Of course, now it’s going to seem mean to dissect something that “cute.”

The iCade devices, which I have written about before, started out as an April Fool’s joke at Think Geek in 2010. They act like a Bluetooth (or USB) keyboard and some games were written to interpret certain key presses as joystick buttons. Ever since iOS 7, Apple has added official support for game pads so the iCade format is pretty much dead. Still, there are a ton of old apps (over 100) that still support iCade (including Atari’s Greatest Hits and a few other retro emulators).

I plan to dissect mine and use it inside a cheap arcade-style joystick I have, thus allowing me to have something like a Tankstick for iOS (for games that support it), without having to spend any money. I am especially interested in using it for Pinball Arcade and plan to add some buttons on the sides to act as flipper buttons.

I just thought I’d share this, since it’s cheaper to buy this and gut it than to get a cheap Arduino Leonardo type device to hook up via USB adapter cables like my Atari joystick project.

If you get one and hack it in to something, let me know. I’d love to see what you come up with.

P.S. Since 4/15/2014, I have earned over $1419 in Amazon gift cards (and PayPal cash)! Sign up using my link and I get credit: http://swagbucks.com/refer/allenhuffman (Ask me for the tip/howto doc.)

sizeof() matters

Updates:

  • 2016/02/29 – Per a comment by James, I corrected my statement that sizeof() is a macro. It is not. It is a keyword. My bad.

In C, the sizeof() macro can be used to determine the size of a variable type or structure. For instance, if you need to know the size of an “int” on your system, you can use sizeof(int). If you have a variable like “int i;” or “long i;”, you can also use sizeof(i).

On the Arduino, an int is 16-bits:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.print("sizeof(int) is ");
  Serial.println(sizeof(int));
}

void loop() {
  // put your main code here, to run repeatedly:
}

On the Arduino, that produces:

sizeof(int) is 2

On a Windows system, an int is 32-bits:

int main()
{
  printf("sizeof(int) is %d\n", sizeof(int));

  return EXIT_SUCCESS;
}

That displays:

sizeof(int) is 4

Note: sizeof() is not a library function. It is a macro C keyword that is handled by the C preprocessor during compile time. It will be replaced with the number representing the size the same way a #define replaces the define in the source code. At least, I think that’s what it does.

You should avoid making any assumptions about the size of data types beyond what the C standard tells you. For example, an “int” should be “at least 16-bit”. Thus, even a PC compiler could have chosen to make an “int” be 16-bits instead of 32.

A better way to use data types was added in the C99 specification, where you can include stdint.h and then request specific types of variables:

uint8_t unsignedByte;

uint16_t unsignedWord;

int32_t signed32bit;

But I digress.

The point of this article was to mention that you can also use sizeof() on strings IF they are known to the compiler at compile time. You can, of course, get the size of a pointer:

char *ptr;

printf("sizeof(ptr) is %d\n", sizeof(ptr));

Depending on the size of a pointer on your system  (16-bits on the Arduino, 32 on the PC), you will get back 2 or 4 (or 8 if it’s a 64-bit pointer, I suppose).

And the pointer is still the same size regardless of what it points to. You still get the same size even if you had something like this:

char *msgPtr = "This is my message.";

printf("sizeof(msgPtr) is %d\n", sizeof(msgPtr));

But, if you had declared that string as an array of characters, rather than a pointer to a character, you get something different because the compiler knows a bit about what you are pointing to:

char msgArray[] = "This is my message.";

printf("sizeof(msgArray) is %d\n", sizeof(msgArray));

There, you see the compiler actually substitutes the size of the array of characters:

sizeof(msgArray) is 20

This is an instance where using “char *ptr =” is different than “char ptr[] = ” even though, ultimately, they both are pointers to some memory location where those characters exist.

At work, I ran across a bunch of test code that did this:

const char    PROMPT[] = "Shell: ";
const uint8_t PROMPT_LEN = 7;

const char    LOGIN[] = "Login: ";
const uint8_t LOGIN_LEN = 7;

Those strings would be used elsewhere, and the length needed to be known by some write()-type function. Counting bytes in a quotes string and keeping that number updated sounds like work, so instead they could have used the sizeof() macro. Since it returns the size of the array (including the NIL zero byte at the end), they’d need to subtract one like this:

const char    PROMPT[] = "Shell: ";
const uint8_t PROMPT_LEN = sizeof(PROMPT)-1;

const char    LOGIN[] = "Login: ";
const uint8_t LOGIN_LEN = sizeof(LOGIN)-1;

At compile time, the size of the character array is known, and the compiler substitutes that length where the “sizeof()” macro is. If the string is changed, that value also changes (at compile time).

Of course, since we are using NIL terminated strings, you could also just use the strlen() function. But, that is more for strings of unknown length, and it runs code that counts every character until the NIL zero, which is wasted CPU use and code space if you don’t actually need to do that.

My optimization tip for today is: If you are using hard coded constant strings, and you need to know the size of them, declare them as C arrays (not a pointer to the string) and use the sizeof() macro as a constant. Use strlen() only for times when the compiler cannot know the size of the character array (dynamic strings or things being passed in to a function from the outside).

Speaking of that … as long as the compiler can “see” where the array is declared, sizeof() will work. But if you had something like this:

void showSize(char *ptr)
{
  printf("showSize - sizeof(ptr) = %d\n", sizeof(ptr));
}

int main()
{
  const char    LOGIN[] = "Login: ";

  showSize(LOGIN);

  return EXIT_SUCCESS;
}

…that will not work. By the time you pass in just a “pointer to” the array, all the compiler sees (inside that showSize function) is a pointer, and thus can only tell you the size of the pointer, and not what it points to.

As you see, this tip is of limited use, but I think it is still neat and a potential way to save some CPU cycles and program space bytes from time to time. Since I have worked on a number of Arduino Sketches that have gotten too big to fit (also on some TI MSP430 projects), small tricks like this can make a very big difference in getting something to fit or not fit.

sizeof() can matter :-)