Sunday, August 3, 2014

RC2014 Summer Challenge Wrap-Up

Well, it seems that the overtime extension on this summer's Retrochallenge event has been wasted on me.  So now it is time to lay down my tools and reflect...

Code Update

First, let's do one more beta release.  There are no gameplay changes since Beta 2, but I did massage the audio a bit.  Basically, I applied some modulation to the 60 Hz noise in the audio output.  This seems to soften the effect of the noise, making it a bit more reasonable for those with sensitive ears.  Don't worry -- the audiophiles will still hate it!

http://www.tuxdriver.com/download/fahrfall/beta-3/

I've gotten a few suggestions for changes/improvements to Fahrfall, some better than others.  There are a few minor ones that I might implement someday, including some (e.g. a graceful program exit) that are more suitable for disk-based play.  But for now, I'm only concerned about releasing Fahrfall on cartridge.  I do have a few more ideas for game improvements on my TODO list, most or all of which have been there since the beginning (e.g. collecting bonus items).  I reserve the right to add a few of those before doing a final cartridge release.

Roadmap

I have been hinting rather strongly at a cartridge release for Fahrfall, and I do intend to make that happen.  This entire Summer Challenge has been laying the groundwork to make that seem practical, and I think I've shown what I can deliver to folks.  I have even started getting monetary offers for cartridges!  I wish I was ready to announce something, but I haven't quite ironed-out all of the details of that.  I hope to announce something before too long -- keep an eye out!

Ingredients for an adult-sized CoCo joystick?

Beyond that, it is hard to tell what comes next.  I actually thought I would be working on another C compiler project this summer, but Fahrfall got my attention instead.  Now I'm already thinking about another CoCo game controller project, but that will probably be covered over at my Retro Tinker blog.  I've been thinking about another VDG trick that could use some development time as well.  So much to do, so little time!

Parting Thoughts

So once again I have greatly enjoyed a Retrochallenge event.  It is always fun to see what projects this motley band of fools generates, and to see what they produce as a result.  Sometimes it is just nice to be reassured that out there in the world there are other people with the same kind of crazy as me.  It is also good to have an excuse (or a reminder) to spend some time enjoying the hobby, and sometimes we all need that.  And, of course, there is always the reward of seeing others get some enjoyment from the projects I share, whether they learn something from me or they just get some vicarious fun. :-)

So now I will sign out of the Retrochallenge 2014 Summer Challenge and we will return back to the everyday progress of Fahrfall.  It is not Game Over yet, so please continue to stay tuned!

Thursday, July 31, 2014

Graphics Package

The RC2014 Summer Challenge is coming to an end soon, so it is time to wrap things up.  Let's finish-up with the Fahrfall cartridge and box it up!

Stick It

The plastic cartridge case I made is cool, but it is a little plain.  At least it isn't black, so there should be little chance of confusing it with an original Tandy cartridge.  Still, it might be nice to label it more clearly.  If nothing else, that might prevent some confusion if there are more cartridges produced in the future... :-)

I have some graphics that I produced as collateral for promoting Fahrfall in the past.  These include an emulator screen capture of the Fahrfall display on the title screen, and a PPM of Fahrve I produced from a manually edited hex dump.  These were used both to produce some T-shirt designs at CafePress and to produce a QR code that directs readers to this blog.  I have used the latter from time to time when showing Fahrfall at public events.

I used the graphics assets mentioned above to produce a cartridge case sticker for Fahrfall.  The service I used is StickerYou, which offers a variety of options for sticker production and handy tools for producing sticker designs.  I was able to layout a simple design which I think is attractive and which fits the cartridge case dimensions.

Applying the sticker was fairly simple.  The stickers arrive in sheets of six, so I used scissors to isolate a single sticker for application.  Using my mad dexterity and a squigee from a cell phone screen protector installation kit, I was able to get a smooth sticker application on the cartridge case.  I think the resulting cartridge looks very nice.

Box It

A nicely decorated cartridge case is fine, but it lacks a certain completeness.  A custom box would be nice, and that probably would not be out of the question.  But, it might be a bit beyond my abilities or at least beyond the limits of my motivation!

Not too long ago I bought a newly produced game for another vintage system, and it came in a nice plastic box.  That box turned-out to be a case for a VHS tape.  These boxes are sturdy, and they are still available relatively cheaply.  Maybe this is an option?

Many VHS cases were formed with protrusions that mated with the hubs in the VHS tapes.  I'm not sure why these were deemed necessary, since the case cover fit the dimensions of the tape snugly already.  If anyone knows why they existed, feel free to comment!  Anyway, it is fairly easy to find cases without those protrusions, so that is what I have done.  This presents a nice open space for holding any materials packaged with a game.

Of course, if you just throw the cartridge into the case it is not even close to filling the available space.  I guess this isn't a big deal, but it seems a little wrong to have a case so big that the contents just bounce around inside of it.  One option might be to produce some sort of insert.  This would be a cardboard cutout or a formed piece of plastic that holds the cart while filling the available space in the case.  This is in the same category as producing a paper box -- feasible, but beyond my skills, talents, or interests...

It occured to me that all that is needed is a small spacer to keep the cartridge from sliding around.  In an earlier post, I showed how I made a box for pouring a mold out of a piece of foam board and some hot glue.  I cut a rectangle from the foam scraps and glued it into place in the VHS case.  This wasn't quite tall enough to prevent the cartridge from sliding around, so I added a second layer at the edge as well -- in the future I may just find a thicker piece of foam!

Dress It

Anyway, this simple modification to a reasonably available item makes for a nice solution to holding a cartridge.  But, the outside is still a bit plain!  Fortunately, the case selected has provisions for a paper insert as a cover.  Now, we just need such an insert...

Producing a piece of paper covered in graphics is fairly simple, if you have a design -- any sufficiently capable printer will do!  The hard part is having a design for the graphics.  Fortunately I was able to use Scribus to handle this desktop publishing activity.  I used the graphics assets I mentioned earlier (including the QR code), as well some writing and a little creative flair to produce what I feel is an attractive cover.  I was then able to get this printed on a nice color laser printer, and I trimmed it to fit the available space on the VHS case.  I think the result looks good -- definitely not bad for a guy that once got a 'C' in Art class! :-)



That basically covers things for the packaging of Fahrfall.  The graphical bits could still change here and there, and a few things could be added in (or to) the box -- that spacer foam looks like a good space for a sticker of some sort!  Nevertheless, the basics are all in place, and I think it looks good.

Today was the scheduled end for the RC2014 Summer Challenge event, but the Retrochallenge folks have declared an extension through Sunday.  I may find a little time between now and then to poke a bit more at the Fahrfall code, or I may not.  In any case, I expect to make at least one more wrap-up post before then.  I hope you will stay tuned!

Monday, July 28, 2014

Circuit Boards

In the "Shaping Up" post, I glossed over the creation of the PCBs for the Fahrfall cartridges.  These didn't just fall from the sky and you can't run down to Radio Shack to get them either!  So, let's cover this topic...

Design

The circuit board for a game cartridge tends to be just a simple "carrier board" for the EPROM containing the game.  More advanced cartridges exist, even for the CoCo.  But the starting point is just enough circuitry to support attachment of a memory chip to the computer.

Mark J. Blair, a member of the CoCo mailing list, designed such a board a while back and made it available for ordering through OSH Park.  He even went a step further and made the design files available through GitHub.  So if you need to make a ROM cartridge for a CoCo in a hurry, then now you know a good way to get the PCBs!

Produce

The boards from OSH Park are great, and the service is good.  But the prices seem a little high and I wanted to checkout some alternatives anyway.  I found Hackvana, which offers a variety of options at different price points.  I decided to use a green soldermask with the RoHS Pb-free solder finish, and I got a run of boards at a much cheaper price per board.  The boards look and work great, so I couldn't be happier.  (Note that the gold immersion finish would put the per board price much closer to the price available from OSH Park.)

Each board manufacturer tends to have slightly different preferences or requirements for how board designs are sent to them, and the Hackvana folks are no different.  Mark used the Eagle PCB design software for his design, and Hackvana offers some design rules files for Eagle on their site.  Fortunately the CadSoft folks also offer a free-as-in-beer Linux version of the Eagle software, and I was able to load the Hackvana rules into Mark's design files.  I then used another Eagle script from Hackvana to produce the required Gerber files.

http://www.tuxdriver.com/download/fahrfall/CoCoEPROMpak-Hackvana.tar.gz 

Since Mark's design is released under GPLv3, I have released a tarball at the link above with my Hackvana adaptation of Mark's design.  The orginial OSH Park Gerber files are still there if you need them as well.

Build

Building the PCB is as simple as the design itself.  There are barely any parts at all!  The first step is to install the IC socket.  This is not strictly necessary, but it does make it much easier to replace the EPROM if you want to burn a new release of Fahrfall! :-)  Also included is a small capacitor used to stabilize the power supply for the EPROM.

Mark's design can accomodate a variety of EPROM parts.  This gives some flexibility on how to populate the board, but it does require an extra step when building the cartridge hardware.  In order to accomodate different chip types, there are actually two socket locations on the board.  Choosing is not difficult -- use the one that matches the number of pins on the EPROM...

Slightly more difficult is handling the jumpers.  Mark's schematic describes how the jumpers should be set for the various EPROM options.  The PCB is intended to use removable jumpers on pin headers, but I didn't want to bother with those for this project.  Instead, I just did a little sloppy soldering and bridged the connections I wanted.  This saves me a little bit of wire trimming or parts acquisition and placement, at the cost of a little more trouble if I want to reuse the board with another EPROM later.  But really, who would ever want to replace Fahrfall??

The final step is to install the EPROM programmed with the Fahrfall code.  This requires some hardware that most people don't have.  Fortunately for me, I acquired a nice MOD-EMUP-A almost 20 years ago when I was a more active arcade collector.  I really like it, with the only caveat being that it requires an ISA card to interface to a PC running MS-DOS.  But, it works great for retro project hacking -- get one if you can! ;-)


Anyway, that about sums-up the PCB build.  From here the PCB is mounted in the cartridge case as shown in the earlier post.  It really is cool to see Fahrfall start as soon as you power-up the CoCo, and the slightly faster clocking available when running from ROM makes the audio sound a bit better as well.  I know I'm excited!  Hopefully you are excited enough to stay tuned...

Sunday, July 27, 2014

Shaping Up

The molds are made and the plastic has been poured.  Nothing else to do, right?  Well, there is a bit more...

Sanding

Any form of casting will tend to produce some flash.  These extra bits need to be removed from the parts during the finishing process.  In the case of the open top molds I am using, that flash tends to be at the top part of the mold.  Since it is difficult to make the pour fill the mold exactly with no overflow, the top tends to get an extra bit sticking out around the mold opening.

In order to remove the extra bits, I have used a sanding sponge.  This is like a soft sanding block with the sandpaper already applied.  They are convenient to use and easily adaptable to sand around corners and such.  The downside is the manual labor.  If I produce cartridge cases in quantity, I'll probably need to get a belt sander or some other labor-saving device.

Anyway, the sanding does remove some detail.  Fortunately, what we are talking about is basically just a plastic box anyway.  Besides, the rounded edges that result from the sanding have a nice "feel" in the hand, and they look a little more "hand crafted" than the injection molded cases from Tandy.  Or, maybe they just look "hand made", but that is still good enough for me.  I certainly hope that you agree!

Drilling

Whether they look "custom" or just "hand made", the cases are no good without fasteners.  They need a screw to hold them together and a couple more to hold the PCB for the game ROM.

The holes are, of course, made with drill bits.  In this case, the plastic is soft and a little precision is required.  So, I turned the drill bits by hand with just my fingers.  I used bits with a hexagonal shank designed for use with one of those "quick change" drill attachments.  The hex shank gives a little more room to grip the bit and makes it a bit easier to turn by hand.  Also, on the top a countersink bit is used to allow the main screw to be driven all the way into the case body.


The holes are filled by some small screws.  Using the screws from an original cartridge as a guide, I went to a local hardware store and found some that were approximately the same.  The holes are drilled to match the inner diameter of the screw bodies, and the threads of the screws tap into the plastic as they are driven into the case.

Mounting

The whole point of having this case is to mount a PCB to hold an EPROM programmed with Fahrfall.  Fortunately, a design is available for such a PCB, and I was able to have a batch of them manufactured by Hackvana.  I will address the board design, production, and assembly in a later post.

The PCB is held into place by two screws.  A third point of contact is provided by a plastic column molded into the cartridge case itself.  This column is one of those parts of the mold that causes problems when casting, since air easily gets trapped in the small cavity representing it.  The toothpick mentioned in the entry on casting happens to fit this hole perfectly!  Anyway, this third point of contact helps to keep the PCB aligned to connect properly when the cartridge is plugged into the CoCo.


Once the PCB is secure, the cartridge can be assembled and screwed together.  The hardware part of the project is now functional, if not quite complete.  It still could use a little dressing-up!  If you want to see what I do about that, then you'll just have to continue to stay tuned... :-)

Thursday, July 24, 2014

Pour It On

When last we left our intrepid crafter, we saw a completed silicone mold of the top half of a cartridge case.  Now, let's put something in it!

Preparation

The mold is to be filled with a plastic resin.  There are a huge variety of resins available.  They vary in material, color, transparency, flexiblity and hardness.  Honestly, I haven't messed with this stuff enough to have a well-informed opinion on the various choices.  I do find that the materials available at my local hobby store seem to be adequate for the task at hand and are relatively easy to use.

For this part of the project I am using a two-part resin that is designed for hobbyist use.  The picture on the box shows someone making a plastic car model.  Some other products seem go be geared more towards people making decorative tchotchke items for flower pots, home decor, or whatever.  Look around your local hobby store and I'm sure you can find something similar.

Other items shown are a piece cut from the bottom of a water bottle, and some toothpicks.  The bottle bottom is where I mix the two parts of the resin right before pouring.  The left over bits of the resin stick to the container used for the pour, so a disposable or recyclable container is needed unless you want to ruin your household items!  A toothpick is used to probe low parts of the mold in hopes of releasing air bubbles after the pour.

In addition to the resin, I found some dye.  The plastic I am using cures to a beige color that isn't bad, but I thought it might be nice to try adding some red instead.  The dye is mixed into the clear part of the resin before the final mix.  Be sure to remember how many drops you used if you want consistent results between multiple pours...

Pouring

There is not a lot to say about the pour itself.  The two parts of the resin are poured into the container and mixed thoroughly.  Be sure to mix well, or else the plastic may have sections that take longer to cure or which do not cure at all.  The plastic shown tends to get some irregular coloring based on the quality of the mix.  I like the marbled look that creates, but it also indicates the mix could be better...

The resin shown cures very quickly -- there is only about 90 seconds of pour time!  This makes it difficult to get a good mix, and causes some anxiety during the pour.  The item shown below was already hardening while I was still probing it with a toothpick, resulting in some irregularities near the surface toward the bottom.


Extraction

The plastic is hard enough to pull it from the mold within a few minutes, but I find that leaving it in the mold for 45+ minutes tends to get better results.  Otherwise it is sometimes still soft enough to deform or even to get some blistering on the surface of the parts.  Just be patient, and the parts will tend to come-out well!



Close inspection of the top of the piece reviews some roughness at the edges of where the mold openings had been.  Some casting flash is inevitable with either a one-part or a two-part mold, so this is not unexpected.  A little sanding will remove the roughness, albeit at the expense of the shiny finish on the top of the part.  If you want to learn more about that and other post-casting finish work, then you'll have to stay tuned!

Monday, July 21, 2014

Making An Impression

Time for some arts and crafts!  Let's jump right into getting a mold for the top half of a cartridge case...

Model

An original Tandy cartridge case seems like the obvious place to start.  It certainly meets the required measurements for the cartridge slot on the computer.  Plus, there are circuit board designs available that fit the standard case.  Hopefully no over-zealous Tandy lawyers will be coming after me!  Anyway, the intellectual property concerns over a plastic box should be limited enough to make that unattractive...hopefully...

One "interesting" part of this design is the sliding door that covers the PCB card edge.  This poses a couple of difficulties.  The least of the issues is that it requires a custom spring to shut the door when the cartridge is removed from the computer.  A bigger concern is that the shape of the door itself has multiple overhangs that make it difficult to mold.  Also, the door has a slot cut into it, which either further complicates the mold making process or requires a step to machine a slot in the pieces I produce.

Making a new spring might not be too hard?  And using a two-piece mold may solve some of the shaping problems.  But extra effort and clever mold making seems like an unnecessary complication just to produce such a superfluous piece.

So, I will eliminate the sliding door and produce a bottom part of the mold that just leaves the PCB card edge exposed.  I think that the PCB is sufficiently recessed so that the case will still protect it while being a lot easier to produce.  One issue is that this would leave an opening in the top part of the case that looks a bit unfinished.  In order to fill that, I have used some modeling clay that I have hand-sculpted into a shape that looks a bit more intentional.  Not exactly machine precision, but it serves the purpose. :-)  A little more clay was used to fill-in some holes that I don't want as part of the mold.
Case Top Model Read To Be Molded
Prep

Before we pour the mold, we need something to contain the poured silicone.  I started by drawing the outline of a box on a piece of engineering paper.  Obviously the measurements of the box are big enough to surround the cartridge case, but they also leave some space around the sides and on top to give the silicone mold some strength and stability.

I laid the paper on top of a chunk of foam board.  This craft material is strong enough to provide some structural integrity while pouring the mold, plus it has a non-porous surface that will keep the silicone in place during the pour.  I used a hobby knife to mark the corner cuts through the paper.  This was followed by using the hobby knife and a straight edge to cut-out the boundaries of the box.    Also, cuts were made along what will be the exterior edges of the bottom in order to facilitate bending-up the sides to form the shape of the box itself later.

One last step before building the box is to glue the model into place along the bottom.  This is a crucial step, because the silicone has enough weight to move the model around during the pour.  Also, the silicone could get beneath the model and essentially ruin the mold be encasing the model and forcing you to cut it apart just to retrieve the model.  Something like that will most likely render the mold unusable, so glue the model down to avoid it -- I used glue dots!

The final step is to fold-up the sides of the box and secure them into place.  For that, I used my wife's trusty hot glue gun.  Lots of "craft" people use this for everything, and it is handy stuff.  Just be careful -- not only can it burn you like a soldering iron, the hot glue will stick to you while it burns!  And it pulls body hair when you try to remove it from your skin...ask me how I know! :-)

Case Top In The Mold Box
Pour

Now it is time to pour the mold.  The product in use is a mold-making silicone.  There are a variety of options here, but for this I have chosen a product designed to be extra supple.  This helps in modeling overhangs and undercuts, and it also is a bit more pliable when it comes time to remove objects from the mold after casting...

The silicone comes in two parts, the base and a catalyst.  This product comes in a "1 pound" size, which is a lot more than I need here.  But, using it all means no messy measurements and it gives some extra "heft" to the mold.  Plus it means that I can just use the product container for the mixing and pouring.  This is my kind of recycling! :-)

It is important to mix the base and catalyst thoroughly.  A poorly mixed pour may not properly harden, ruining the mold.  The mixture has a long "work" time, so there is no need to hurry.  Be sure to stir until you get a consistent color, in this case, pink.

Once thoroughly mixed, the silicone can be poured into the mold.  It is recommended to pour slowly from one corner of the box.  I think this is intended to limit the amount of air bubbles in the mold.  Nevertheless, air bubbles will get into the mold during the pour.  Some will bubble to the top naturally, but others are happy to cuddle next to the model and ruin the mold...

There are a number of techniques for removing air bubbles, including encasing objects in a vacuum bag to remove air.  A somewhat simpler method is to shake the bubbles out.  I use a vibration table designed for use in dentist offices for making dental molds.  These can be had on eBay for a price that may or may not be reasonable, depending on your perspective...

After 20-30 minutes, most of the bubbles will have shaken their way to the surface of the silicone.  I got a bit impatient and used a tooth pick to pop all the big ones, but that probably isn't necessary.  Anyway, the product shown here has a cure time of 18 hours.  At this point the mold has to be set aside and allowed to harden.

Poured Mold Starting to Cure
Extract

The final step is removing the mold from the box and extracting the model from the mold.  Start by breaking the glue joints holding the sides of the box together.  This is not at all difficult, but sometimes it is necessary to trim some of the silicone from the edges of the box either to shape what will be the bottom of the mold or just to keep from damaging the mold itself.

Once the mold is removed from the box, it is common to find some overflow silicone has oozed over the edges of the model.  Using a hobby knife to trim the ooze helps to clean-up the edges at the top of the mold.  At this point, the model can be extracted from the mold, revealing the impression left to be filled by plastic resin later.

Silicone Mold Ready For Plastic Resin
So, that covers the process of making a silicone mold.  The process for making the mold for the bottom of the cartridge case is similar enough that I won't bother with documenting that.  The next step will be pouring some plastic resin into the mold -- be sure to stay tuned!