Boxer

Developer diary: plans and progress reports.

Bombs away Sunday 13th December 2009

That's right boys and girls, the sourcecode for Boxer 1.0 alpha is now available on Bitbucket. There's also a ready-to-roll universal binary too, if you're squeamish about building stuff yourself. Check out the previous blog post for an idea of what's new in Boxer 1.0.

What you will need:

How to build it:

How to run it:

Caveats:

As always, give it a try and tell me what you think in the comments!

A taste of Boxer 1.0 Sunday 29th November 2009

After a month of solid work, I'm finally at a point where I can show off some of the new UIs going into Boxer 1.0.

Inspector Gadget

Most of Boxer's juiciest UI features are tucked away in the new tabbed Inspector panel, which can be opened from the Window menu or with CmdI.

#1: The Gamebox Tab

Gamebox panel

The Gamebox tab lets you customise the properties of the gamebox you're running. Besides selecting a gamebox's default program (more on this later), it lets you drag-drop your own cover art to set the gamebox's Finder icon.

This tab will later pick up those nourishing metadata fields people seem to love so much—publisher, year and such—which will be used for Spotlight integration.

What I'm particularly pleased with is that if you drop an opaque image (such as box scans from Mobygames), Boxer will give it a stylised box appearance that looks achingly good in your DOS Games folder:

If you drop in an image that already has transparency, then Boxer will leave it alone and just set it as the gamebox icon—so if you want to roll your own box art, Boxer’s down with that too.

#2: The CPU Tab

CPU panel

The CPU tab gives you control over emulation speed. At the moment this is pretty barebones, but it will be expanded in future to let you modify other emulation settings.

But! The last thing I want is a baffling wall of sliders and checkboxes. Instead I’d like to try offering flexible presets for the different eras of DOS computing: AT, Tandy, 386, 486, Pentium. These would be presented as a ribbon of stylized computers (a la the Apple Store): choosing one would set the graphics mode and memory settings appropriately, and cap the CPU slider to appropriate minimum and maximum values for that ‘era’. Mockups to come.

#3: The Drives Tab

Drives panel

The drives tab lets you drag-drop folders from your Mac filesystem to mount them as new DOS drives, and unmount existing drives by dragging them back out again. If you need finer control you can also add drives with a standard OS X open panel, with choices for mount type and drive letter.

To supplement this, Boxer automatically mounts and unmounts CD-ROMs as it detects them being inserted/ejected. This should finally make playing multi-CD games as painless as it should be.

Workflows that Suck Less

One of the problems with Boxer’s original workflow was that it would badger you to choose which program you'd like to run (and whether you'd like to run it forever after) before you really knew the right answer.

In Boxer 1.0, I've changed this workflow entirely. If a gamebox doesn’t have a default program yet, then Boxer just starts up at the DOS prompt: but it also slides out a program-picker panel, which shows the available programs inside the gamebox.

Click one of these programs to launch it, and the panel changes to a checkbox toggle:

Quit back to DOS, and the panel goes back to being a program picker again. At no point are you confronted and forced to choose, and at any point you can change your mind and choose a different program.

For gameboxes that have a default program already, the program-picker panel stays tucked away while the game is running – but slides open if you quit to the DOS prompt. You can show and hide the panel yourself at any time.

And Boy Are My Arms Tired

All of this has entailed a massive amount of work behind the scenes. Literally the only thing Boxer 1.0 has in common with Boxer 0.8x is the icon: everything has been rewritten in Cocoa from the ground up, and there’s not a trace of Applescript left.

However, that also means it's currently full of bugs and is almost completely untested. I'll be publicly releasing the sourcecode on bitbucket soon for intrepid souls to poke at; initial alpha builds will be made available through the blog only, and a proper beta release will probably be early next year once the code has settled and had time to mature.

Anyway, let me know your thoughts and suggestions in the comments!

I love OS updates (yes, a new beta) Sunday 13th September 2009

Boxer 0.88 is in beta, and will be a point release to address bugs and incompatibilities that came to light from 0.87 and OS X 10.6. This version includes the usual aimless refactoring to bring about yet more bugs, so please report anything odd you find.

The biggest change in this version is switching DOSBox back from OpenGL to overlay output mode, which avoids a rendering bug on OS X 10.6.1 wherein the DOS window may appear blank until moved. Unfortunately, overlay rendering also sucks; this change will mean that fullscreen mode may show stretch-marks at certain resolutions, and the DOS window may appear off-center if you have a large screen. There are a lot of impolitic things I would like to say at this point, but let’s leave it that my contempt has now reached the stratosphere.

This version also tweaks the Snow Leopard shelf artwork to match OS X 10.6’s default grid spacing, which is unfortunately not under Boxer’s control. This will not affect existing folders, but if you have upgraded from 10.5 to 10.6 then new DOS Games folders may appear misaligned until you tweak the grid spacing from the View Options panel (J.)

What next?

0.88 will hopefully be the final release on this Applescript codebase, which has long outstayed its welcome. I’ll then return to work on the 0.9 Cocoa branch, which brings with it countless clever features and ease-of-use improvements (among other things, a rendering mode that isn’t shit), and the ability to introduce substantial new improvements instead of just bailing out water whenever there’s an OS X update.

Sadly 0.9 will probably not be OS X 10.4-compatible, so it’s of particular importance to me that 0.88 works as well as it can on the venerable old Tiger. Report them bugs!

Real Developers Ship Sunday 30th August 2009

Boxer 0.87 (née 0.86) has now, finally, been released. There’s a chummy what’s-new summary on the front page, or the tediously complete release notes if you prefer. In brief though: Snow Leopard compatibility, 8 months’ worth of bugfixes, tasteful wood panelling.

I wanted to get this version out there right away, since the crumbly old 0.85 release was disastrously broken on Snow Leopard (which hit the streets this Friday.) There will probably be a minor followup release in the next week or two with additional localisations.

Unfortunately Snow Leopard forced my hand in another respect: the new 10.6 Finder alters the icon view layout and refuses to show background images larger than 2048x2048, both of which broke my original shelf art. I’ve applied a quick fix whereby 10.6 gets a different (and much smaller) background, which means folders have fewer shelf slots before the art runs out. I hope to address this with a more thoughtful and robust solution in future updates… once I see whether the shelf idea appeals to Boxer’s users in the first place.

Rapidly growing irritation with Snow Leopard edit: The default Finder grid spacing has changed for new user accounts, meaning that the shelf icons may appear misaligned. To correct this: open DOS Games, press CmdJ and pull the grid spacing slider all the way to the right.

Fixing the foundations, ironing the drapes Sunday 2nd August 2009

As further proof that I have absolutely no idea what ‘beta’ is supposed to mean, recent Boxer 0.86 betas include some fairly fundamental internal changes. Of these, two will actually be visible and relevant to you:

  1. Boxer’s “built-in” DOS utilities and Gravis Ultrasound drivers are now actually built-in: they are kept inside Boxer itself, instead of being copied into your DOS Utilities folder. This saves you about a dozen megabytes, and me a lot of heartache when the utilities need updating.

    The DOS Utilities folder still works, but is now solely for your own personal programs and not Boxer’s. You can safely delete the REQUIRED and ULTRASND folders from your existing DOS Utilities, as these are leftovers and unused by Boxer.

  2. Boxer's default DOSBox settings are now also built-in, instead of being mixed up with your own settings in ~/Library/Preferences/Boxer/DOSBox Preferences.conf. In fact, that preferences file is no longer used by the latest betas: if you have customised any settings, you should now put them in ~/Library/Preferences/Boxer/Shared Preferences.conf. This new file is solely for your own personal settings, and not Boxer’s.

The rationale behind these changes is to minimise Boxer’s reliance on files that are out there in Userland. This makes it harder for you to break Boxer’s intended behaviour (not that you would ever do such a thing) and much easier for me to push updates that don’t trample all over your personal stuff.

At the other end of the feature spectrum, the latest Boxer beta applies an ostentatious game-shelf appearance to the icon view for new DOS Games folders. Here’s how it looks:

Out of courtesy, Boxer will not apply this appearance to your existing DOS Games folder: only to new games folders it makes. If you want this appearance for your existing DOS Games folder, then the simplest way is:

  1. Drag your games folder to the Trash; (it’s safe!)
  2. Launch Boxer, and tell it to create a new games folder when it complains;
  3. Move your games from the Trash back into the new games folder.

There are other ways, but they’re complicated and hard to explain. If you don’t want to trash files, send me an email and I’ll walk you through it.

Cover Flow is still the default view for the DOS Games folder in OS X 10.5, but you can switch to the shelf appearance by choosing icon view from the Finder View menu. You will also need to adjust the folder’s View Options panel if you want it to always use this view mode.

Design by 40watt.