Tuesday, July 9, 2013

The Silence of the Games

I've examined quite a few gp2x type games lately and I've noticed a trend.  They tend to take games that you traditionally think of as silent and add sound, usually via some rather large .wav files played through the somewhat bloated SDL_mixer library.  I swear they've probably got a chess game with a soundtrack.  Now, that might be nice on the zipit too, but it won't ever fit on the jffs.

However, I'd really like to fit a few games on there, just for emergency entertainment purposes, so I searched around for some card and puzzle games for the console.  I happen to enjoy sokoban style games so I built some of those.  Other folks like solitaire, or minesweeper.  I've got a few of them built now too.  I just need to spend some more time with them for - err - "testing" purposes.  Yeah, that's it.

Here's a teaser shot of my zipitized port of consolitaire from a recent "test run".

I'd like to pretty up freecell with a similar look, if possible.  Eventually I should have a nice bundle of tiny games for the goodie bag, real soon now...

In the meantime, here's a shot of nsudoku.  It fits just fine on the zipit with only 2 new lines of code.
This nc-fighter game almost fits, but it moves too fast for me.
XorCurses actually fits, but only with the 4x6 font.  Better get a microscope if you plan on reading the help screen.  It's quite playable though, once you learn the basics.  And since it's a puzzle game it's a good one for me.
Yeah, this game is fun.  It actually got me motivated to get a better 4x6 font in order to read the help text.  So I grabbed the Tom Thumb bdf font and converted it to a psf console font, adding the ncurses line drawing characters while I was at it.  It came fully stocked with a set of tiny unreadable latin15 characters, so that was a nice bonus.
It gives me a migraine, but I can read it if I have to.  Hmm, perhaps this could also be used for those bloated finch config screens.

Meanwhile I managed to  fit the Enigma puzzle game into the standard iz2s font.  So far I've only managed to get about 20 moves into the game before I realize I'm stuck.  Either this game is really, really hard, or I must be getting senile faster than I thought.


The start up menu screen needed some adjustments to squeeze it onto the zipit, but it works.


I also built the Chroma puzzle game which supposedly supports Enigma and Xor levels as well.


And finally, to remind myself that SDL based games can also be small and silent, I built the embedded version of vectoroids.
It's only about 20K altogether, including the redspot image file.

For reference, here are some handy sites with loads of links to console apps.

http://inconsolation.wordpress.com/
http://kmandla.wordpress.com/
http://ttygames.wordpress.com/
http://jaredandcoralee.com/CLIapps.html

And now I really need to stop "testing" and get to work, packing all this up for the goodie bag...

But first I should mention the recent bugfix for fceu.  It was pointed out that the previous build did not allow saving the Battery backed RAM state, which made some games such as Zelda much more difficult than intended.  This build fixes that.  Here's an openwrt ipk, just in case there's problems with the nightly builds.
fceu r67-1 pxa

I have a new IZ2S executable too.  Get the package from the goodie bag (if you don't already have it) and replace the fceu executable with this one if you want to use the save feature.

fceu-iz2s-save-fix.zip

Here's the 4x6 console font.  Walrus45 was asking for it, so I expect he'll let me know if it helps any with the finch config screens...

thumb4x6.psf

Moving at a glacial pace...  Here's the iz2s enigma executable and modified source code.

enigma-iz2s.zip

And here's the iz2s consolitaire executable and modified source file.

consolitaire-iz2s.zip

I've packed up the csokoban, cmines, and cblocks executables for iz2s but I still need to zip up a package with the modified sources.

cgames-iz2s.zip

Here's xorcurses for iz2s, including the tomthumb console font.

xorcurses-iz2s.zip

Nsudoku, vectoroids, and freecell executables for iz2s.

nsudoku-iz2s.zip

vectoroids-iz2s.zip

freecell-iz2s.zip

Here's an iz2s chroma package.

chroma-iz2s.zip

Monday, July 1, 2013

Back to Reality

The original design of the zipit envisioned it as a communications toy for kids.  However, when I first saw it I pictured it as more of a learning toy, at least for me.  It's got all the basics for software development built into a teensy toy form factor.  And over the past few years I've learned quite a bit, porting various pieces of software to fit on the slow processor and gizmo shape of the zipit.  In fact it's been almost 2 years now since I attempted to relearn some shell scripting techniques that I'd nearly forgotten with the passage of time.  I always thought that stuff might come in handy some day, possibly even at work.  And sure enough, it's finally paid off.

At work I'm occasionally called to help support the field engineers by phone as they deploy the software parts of the systems we build.  Some of these are built on TinyCore linux and installed in a little black box with no local user interface.  This can be challenging when someone wants to transfer files to and from the devices with say a usb stick at the site.  Now, TinyCore comes with a really nice simple gui for identifying and mounting usb sticks, but if you don't happen to have a monitor or mouse you wind up trying to do it all via an ssh window from a laptop nearby.  Just try talking someone over the phone through the linux commands for identifying, and mounting a usb stick on the command line.  Let me tell you, it's a challenge. 

So to make my life somewhat easier, I decided to devote some of my spare time to make a shell script that emulates the TinyCore disk mounter tool.  You can see here the original FLTK gui tool and the scripty tool below it running in an xterm.

Not too bad, eh?  Now what, you say, does this have to do with the zipit?  Well, it turns out TinyCore runs on a busybox ash shell, just like the zipit.  And it doesn't come with the dialog program so I had to build the scripty disk mounter out of /bin/sh, sed, and grep (with a sprinkling of ANSI escape codes) just like I did with the zipit almost 2 years ago.  I suppose it might even be handy on the zipit if the homemade usb adapters were ever to become commonplace.

Here's the code.  The mnttool.sh script uses 3 helper scripts that are also included.  Two of them come from TinyCore and are also used by the GUI tool.  The cfajfuncs helper script comes from http://cfaj.freeshell.org (I bought and recommended his book previously) and is slightly modified to work with the variations of the echo and read commands in the TinyCore busybox shell. 

mnttool-sh.tgz