Saturday, September 9, 2017

Street Defender VR64 Video Game




The year is 1986 and modern man has made a mess of it!

Space aliens recovered the Voyager 1 spacecraft, listened to “Jonny B Good”, and immediately invaded earth’s cities with their green exoskeleton bug warriors. The robots created to make mankind’s lives more comfortable have decided they aren’t comfortable, and have risen against man. And the Central Asia Ninja Team (CANT) grew angry at the repeated portrayal of Ninjas as silent, expendable warriors in video games, so it launched an attack of its massive blue Ninja squad who have taken a vow of silence. Apparently, irony isn’t well understood in the Ninja culture.

Mankind has set up Street Defenders on every street corner to fight the invaders. They are trained to fight the invaders as long as they can before being “retired”.

You are Street Defender number C-64. 

To look for your enemies, press the “<-” key to rotate left and press the “1” key to rotate right.

The Street Defenders have multiple weapons available which are activated by function keys “F1”, “F3”, “F5”, and “F7”. These weapons will damage the nearest enemy as shown in this table. 








Only the Punch is unlimited. However, it only works if the enemy is very close.

Flashing enemies contain “power ups”. These can be collected if the enemy is killed when very close.



How many kills can you get, Street Defender number C-64, before you are “retired”?




Link to disk image:

VR64, Virtual Reality Goggles for the Commodore 64



The VR64 project is my attempt to make VR goggles for the commodore 64.



The project started with my 12 year old daughter's science fair.  She studied VR goggles.  We were able to make our own "Google Cardboard" style goggles, 3D images, and even a 3D movie.  Of course we used our smart phones as screens and video cameras.

I kept thinking, why can't this be done for our beloved commodore 64?  So I built the VR64 using three components, a $10 plastic VR goggle, a $26 LCD and a cheap power transformer (plus lots of glue gun fun!).
VR64 Demo Video

I split the screen into two sections, one for the left eye and one for the right.  Each section is 19 columns by 25 rows, and the center two rows are not used.  Each eye, has 152X200 pixels in high resolution and only 76X200 in multi-color mode!


After experimenting, I found that objects at the same location in both eyes looked like a "normal" distance.  If the objects both moved towards the center, through the VR64, the object would appear in the same location but closer to the user!  I found that I could move objects up to 10 pixels towards the center each (20 pixels closer to each other) and maintain the 3D effect.  At a movement of about 13 pixels, my eyes got confused.

At first I was also moving the objects away from the center, but images with objects both away and towards the center were hard to focus on.  After thinking about how the eyes look at objects close and far, it seems obvious that objects far away approach being straight in front of each eye.  When objects are close, each eye sees it as closer to the center.  In no case in reality do the objects move further out.  
Graphic from my daughter's science fair poster!

So I settled on objects at the same center being the furthest out and only moving them both towards the center, up to 10 pixels each, as the 3D effect.  It actually works quite well!

I made a few 3D images from actual camera shots.  They are OK, but not too impressive.  I honestly didn't spend too much time on this.  It may be better to use high resolution dithered images.

Of course you can't have fun on a c64 without playing video games.  So I made a VR64 game.  This is only my third computer game and my second ML/Assembler program.

My VR64 Game is "Street Defender"


I am very happy with the 3D effect of this game!






I have tried to make a video so that people can view this through something like google cardboard or compatible devices.  Hopefully I got the spacing right!

I made it by balancing my phone above the LCD used in the VR64.  Compared to real life, it is worse than what is seen when using the VR64.  It is too washed out in the beginning.  The black background is glowing and not pure black in this video.  Also the text is blurry in this video.  When the game screen comes on, the contrast looks better, but some color is lost.  For instance the moon is much more yellow in the real thing.  However, I hope this gives you a good idea of the 3D effect that is achieved!  Let me know if this doesn't work with your goggles.
Google Cardboard compatible video


Here is my build video of the VR64.  I hope you build your own!  The alignment program is on the "Street Defender" c64 disk. (see link below)
Build Video of VR64

Here is my presentation at the ECCC 2017 / VCFMW 12 show where this was debuted.
Show presentation of the VR64



Links:

Thursday, October 20, 2016

10 Line BASIC game programming contest


So I entered this contest earlier this year.  The challenge was to create the best game with just 10 lines of BASIC code for any old 8-bit computer.

How hard can that be?  BASIC is like a second language to me.  Well I had no idea how how hard it would be to get some simple functionality and how much time I would ultimately spend on this!

My entry is called "10 RUN 10:AN ENDLESS RUNNER".  (Get it?  10 RUN 10 would be an endless BASIC loop.)  It is inspired by the simple endless runner game that the Chrome browser plays when you have no Internet connection.



My entry... 

10 RUN10:AN ENDLESS RUNNER GAME 

Synopsis 
You run so fast, people say you flash. But on this green field, you have to be careful to jump over the rock boulders and duck under the deadly black birds. How many strides can you score while staying alive? 

Features 
  • c64, VIC 20 and PET versions
  • Space bar to start
  • Joystick up to jump, down to duck (port 2 on c64, 1 and 0 on PET keyboard)
  • Two jump lengths
  • Two "waves" of obstacles (second wave starts at score of 255)
  • Four different death scenes
  • High score
  • Mega jump straight from ducking to jump (useful in the second wave where the objects can be very close together) 

commodore 64 version

VIC 20 version

PET 2001-8N Version


PLAY THE VIC 20 VERSION ON-LINE!
Space to start, Cursor Up / Down for Jump / Duck


I first wrote this for the commodore 64.  Then I 'ported' it to its predecessor, the commodore VIC-20.  It was so much better on the VIC-20!  I was using the PETSCII graphic symbols so they looked much larger on the VIC-20's 22 character wide screen. It also ran faster, probably due to the less characters it needed to repaint each cycle.  I actually had to add a delay!  This is a 1MHz 8-bit processor running an interpreted language!  (I also created a PET 2001 version for kicks but it's quite slow)

Here's an image of the VIC 20 program listing.  I entered the
PUR-80 part of the contest, so each line could only be a maximum of 80 characters.  However, you are allowed to use shortcuts for the keywords to get more to fit.  Honest, these all fit when the commands are shortcuts!

Program listing
Full size view of program listing


Contest Results??

I got 5th place!!  I was very happy with that.
http://gkanold.wixsite.com/homeputerium/results-2016


We'll see if I do this again next year...




Downloads / Online discussion links

Here's the files in a .d64 format if anyone wants to try any these on their equipment / emulators.
http://cloud.cbm8bit.com/jim_64/10%20line%202016%20-%20VIC%2020%20-%20c64%20-%20PET%202001-8N.d64

If your loading from tape on the VIC 20, use this file (and leave the play button pressed down after the load)
http://cloud.cbm8bit.com/jim_64/10rU10-vic-tap-p.prg

(For those true commodore geeks)
Obligatory CSDB entry...
http://csdb.dk/release/?id=150281

Lemon discussions start at...
http://www.lemon64.com/forum/viewtopic.php?p=725863#725863

Saturday, September 12, 2015



cOS has been released for the commodore 64!


This project started as a simple experiment to see if I could create a "modern" looking graphical user interface for the commodore 64.

Once I got the basic user interface working, I decided to add an optional touch screen. It pretty much works! Of course cOS can still be operated by a standard joystick or the cursor keys.

I then decided to create a Test / Demo 5.25" disk that would have a similar feel as a basic tablet. I ended up adding pictures, songs, games, and some typical iPad style apps. These disks only hold 170k of data! So, I used a 80's disk notcher to make a "flippy" 2-sided disk. I then had a whopping 340k of space to fill up.

The iPad style apps are mostly gags for fun.  Yes, there are real internet programs for the commodore 64 (IRC clients, twitter client, contiki web browser, etc.) but they are typically large and require specific hardware.  Who could resist Microsoft's insistence that I include IE 6 (running on Windows 9)!  There's also a cBooks app that links to all the books you'll need.  Of course these devices need a sassy assistant.  I pulled together some 80's technology to create SAM-Siri.

If you have a real commodore 64 or want to try it out in an emulator, here are links to the disk images for sides A and B of the Test/Demo disk.

Disk Links:
cOS Test/Demo Side A
cOS Test/Demo Side B