Boxer

Developer diary: plans and progress reports.

Garbo Talks Friday 16th April 2010

Yes, after nearly 3 months, a new Boxer 1.0 alpha build is shaved and thrust blinking into the sunlight. This build comes with the following bullet points:

This is important, kids: a lot has changed under Boxer’s hood from my gonzo restructuring, and There Will Be Bugs. Furthermore, You Must Report Them otherwise They’ll Stay There Forever and Boxer Won’t Get Better and I Will Die a Sad and Broken Man.

There will likely be several more builds in quick succession as things are shaken down and all those bugs you keen entomologists report are squished. Either that, or I’ll tear the heart out of SDL’s input handling and the codebase will be busted for another 3 months. Oh, which will he choose!?

What I've (not) been up to Monday 5th April 2010

Keen observers will have noted a lack of visible progress on Boxer 1.0 over the past two months and may, perhaps, have lamented with wailing and beating of breast the dearth of new builds since January.

The principal reason for this delay was that I spent most of March on an impromptu and much-needed visit to my sheep-infested homeland and most of February frantically arranging said visit. As of Thursday, and after an unconscionable number of inflight movies, I am now back on terra firma and reacclimatising to dour Finland.

The other reason has been that in a fit of hubris I embarked on an ambitious rewrite of DOSBox’s old rendering pipeline: essentially replacing SDL’s renderer with my own, to give Boxer much tighter control over how DOSBox's video output gets to the screen. The benefits:

The drawback: by the time I’d finished tugging on that loose thread to my satisfaction, I had unravelled the entire sweater. Now I need to knit it all back again before anything works and I can release another build.

Understandably that’s a big job — among other things, mouse input is comprehensively, gloriously broken — so I’ve been entirely avoiding it by coding up paste-to-DOS-prompt and floppydisk detection instead. As soon as my USB floppy drive arrives, I can finally get some use out of my mint-condition Star Wars: TIE Fighter diskettes. Go team!

Happy New Year Everyone Saturday 9th January 2010

I didn’t get you anything for christmas, because I am a heel, but there’s plenty on the way Boxer-wise in the next couple of months and alpha builds continue apace. There’ve been lots of improvements in the recent Boxer 1.0 alphas: most of them tedious behind-the-scenes tinkerings, but happily some new photogenic features to show off too.

Application preferences

Yes, after almost three years Boxer finally has a Preferences panel, making it officially a proper Mac app. Currently this panel only includes graphical preferences, but it will be expanded into a tabbed interface with further options as needs dictate.

My current pride and joy is the egregiously overdesigned Rendering Styles panel. Trimming Boxer's rendering options down to four, this presents them as a framed picture gallery to feed my quixotic obsession with physicality. In future versions these portraits may show a live preview of your current DOS window, but for now the Avatar of the Eight Virtues lends his comely face to them.

Bootleg cover art

I've never liked the default Boxer document icon, which appears when a gamebox has no cover art. Boxer 1.0 now restyles ‘naked’ gameboxes as bootleg game copies instead: either as a CD-ROM jewelcase, 3.5" diskette or 5.25" floppy, depending on the age of the game inside. My humble apologies to Sophia Teutschler, from whose excellent Coversutra app I ripped off the original idea.

At the moment the icon is only displayed in the Dock while Boxer is running a gamebox, but future revisions will apply a bootleg appearance to gameboxes in Finder too, via a Quick Look plugin.

Automatic updates

Automatic update notifications return to Boxer 1.0 by way of the excellent Sparkle framework. Boxer now checks for updates daily so you’ll get the freshest alpha builds, and it will painlessly download, replace and restart the app to apply the update. A new alpha build is produced about once a week, and I usually mention it on Twitter also.

Other improvements under the hood

So what are you waiting for?

Go download the latest alpha and try it out!

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!

Design by 40watt.