Legends Ultimate Arcade Review

As promised in my last post, this is my review of the AtGames Legends Ultimate (ALU) cabinet.  This is based on my setup experience plus about two and a half months of actually using the cabinet.

Assembly and setup

Setting up the cabinet was a relatively painless experience.  The assembly in particular was fairly easy.  The cabinet comes in one box and the only tools required are screwdrivers.  All you really need to do is assemble the base, which is essentially an empty box.  The top of the cabinet, which contains the monitor and all the electronics,  comes pre-assembled, as does the control panel.  So the assembly process is essentially:

  1. Put together the box for the base.
  2. Put the monitor box on top of that.
  3. Put the control panel on top of the base as well.
  4. Plug everything in.
  5. Screw everything down.

That's it.  There really wasn't much to it.  This was simpler than most pieces of furniture I've assembled.

The more annoying part was the software setup.  This wasn't difficult, but it involved connecting the cabinet to my WiFi and creating an account with AtGames, both of which are awkward without having an actual keyboard to work with.  The account signup was also a little weird in that I initially wasn't sure that it actually worked.  It did, so I think it was just a UI issue, but it was still a bit strange.  But for the most part, it was no big deal - just going through the setup wizard.

One thing that's worth noting is that the Legends Ultimate doesn't actually take up as much room as you might think.  I can stand at the controls, stick my arm out, and reach the back of the cabinet.  Since it's using a modern LCD display, rather than a vintage CRT, it's fairly compact.  That means it can be tucked into a nook or corner with relative ease and not end up dominating an entire room.  

Navigation and UI

The alphabetical carousel browser

The ALU has a...quirky UI.  I assume that the reason for this is so that they can re-use it across products.  While the ALU has a trackball and spinners in addition to the joystick and buttons, the ALU Mini (a smaller, single-player version of the ALU) does not.  So the UI is designed to be used with just the joystick and buttons.

The UI itself looks nice enough, and has configurable background colors and music.  The navigation is odd, though.  It uses a two-level carousel model.  The main display area has a carousel of games/options that you move through to the left or right using the joystick.  You can "zoom out" (with the Z button) to a text-based carousel that lets you scroll horizontally through the alphabet and then vertically between the available options for each letter.  This part is not super intuitive, but it's reasonable and it works.

Below the main carousel is a menu bar that lets you navigate the various sections of the UI.  This includes things like the built-in games section, the ArcadeNet section, the settings section, etc.  You use up and down to switch between the main carousel and menu bar.  The menu bar also has sub-menus that are accessed by pressing the Y button on the appropriate item.  To get back, you have to go back to that same item in the sub-menu and press Y again.  It's not that bad once you get used to it, but it's definitely a weird and unintuitive user experience.

Personally, I would have loved to see AtGames leverage the trackball to allow a more traditional point-and-click type of interface.  Maybe you could even facilitate scrolling with the spinners, who knows?  It's just kind of tedious to have to scroll through all the options every time.

Built-in games

AtGames advertises the Legends Ultimate as coming with 300 games.  However, as with any collection of 300 games, not all of them are good.  In fact, in this case there are some that you would just never want to play, like most of the Atari 2600 games.  (If you're too young to remember it, the Atari 2600 wasn't exactly great the first time around.  It was better than nothing, but it couldn't hold a candle to the arcade games of the time.)  And of course there are also plenty of arcade games in the mix that are stinkers.

And I should also mention that the built-in game selection contains a few duplicates.  By that, I mean it has both the arcade version and the Atari 2600 version of some games.  Which, of course, is pointless, because if you have the arcade version, why in God's name would you ever want to play the Atari 2600 version?  So the "300 games" claim is true, but a little misleading.

It's also worth noting that the game selection seems to vary.  It's not clear to me if that's due to release date or if the Sam's Club version just has different games.  But I've seen several variations of game lists, and I know that my unit did not include some of the games listed in some of them.  It did include all of the games that were shown on the cabinet, though.  It's just not clear how much you can count on any specific list.

The game selection - actually not bad

The favorites screen showing Burger Time

That said, it's not a bad selection.  There are a handful of "big name" classics that I was familiar with, including Centipede, Asteroids, Missile Command, Elevator Action, and Burger Time (one of my favorites).  But I've also discovered a number of games in the mix that I'd never heard of, but which are actually pretty decent (Boogie Wings springs to mind).  It takes a while to explore them, and I haven't even gotten to all of them, but it's a decent variety and there are definitely some fun games in there.  I'd guesstimate that most people can probably find at least a dozen games they like, probably more if you're adventurous.

I also found several games games for platforms other than the Atari 2600 collection.  For instance, there were a handful of NES games including R.C. Pro-Am and Battletoads.  There were also a few that appeared to be for the NeoGeo or possibly Sega Genesis  There doesn't appear to be any pattern to the choices, at least that I could see.  I assume it's just "what was affordable to license".  

Incidentally, the "extra" controls are a nice addition for some games.  It's very cool to be able to play Missile Command with an actual trackball.  Likewise, playing Tempest with the spinner is a nice touch.  And, of course, I mentioned the pinball buttons in the last post.

Speaking of which, my version of the ALU came with four built-in pinball games.  They're all from the "Natural History" series, which is apparently an AtGames original.  I'll have more to say about pinball below, but these are actually quite good.  The only problem is that they don't always run.  Sometimes the work fine, and sometimes they crash, trigger a "no input" screen, and eventually restart the unit.  Apparently that is a known issue, or was at one point - I seem to recall mention of it in some firmware release notes, but it still happens.  I find this very disappointing.

ArcadeNet service

In addition to the built-in games, AtGames has their ArcadeNet service, which allows you to download additional games.  Their website claims that there is both a free and paid tier for this service.  I got a 2-month free trial with the ALU, which recently expired, so I've now seen both.

That said, I'm not really sure what they meant by a "free" tier as described on their webpage.  From what I can tell, that just means you can browse the available titles.  It doesn't seem like you can actually play anything with it.  So maybe that page is just out of date.  (Note: Out-of-date web pages seems to be a pattern for AtGames.)

It's worth noting that the 300 games that come with the Legends Ultimate seems to account for nearly all the games in their library.  When I browse the ArcadeNet games from my ALU, nearly everything is pinball.  There's only a handful of other games available, none of which looked interesting.  And while the ArcadeNet page does have a list of games on it, not all of them seem to be available.  I browsed through some of them and found several (e.g. Metal Slug) that were not preinstalled on my ALU and were not listed for download in the ArcadeNet UI.  So apparently that list is out of date.  (See what I mean about a pattern?)

One of the Zaccaria pinball tables

That said, I actually have downloaded a number of pinball tables from ArcadeNet.  They appear to have most of the tables from their "pinball packs" on there, and I've found them all to be very good.  As I mentioned in the last post, my unit came with the side-mounted pinball buttons (which you wouldn't think makes much difference, but it really does) and I've really been enjoying them.  I particularly like the Zaccaria tables, as they have a nice background ambiance and have some "updated" versions of classic tables with some more modern features.  Some of the tables are a little slow to load, and slow to get back to the menu when you exit, but the play experience is very good.  (Note: if you have the pinball buttons, you'll want to change the "pro mode" setting to "side" to make them work as expected.)  I've occasionally had some slowdowns or stuttering on some tables, but that's pretty rare.  For the most part, they seem to run very smoothly once they're loaded.

However, I did not resubscribe to ArcadeNet when my free trial expired.  While I like the pinball tables, and having the leaderboard integration is cool, the price of $20/month seems high to me given what you get.  And while this page advertises "6 months for $60", which seems more reasonable, the actual purchase page says it's $100 for 6 months or $180 for a year.  (There's that out-of-date info again.)  That comes to $15/month, which is better, but it still seems high.  When you consider that they offer "pinball packs" for $30 or $50 that include between about 4 and 25 tables, the math just doesn't work.  So instead of resubscribing, I just spent $50 on the first Zaccaria pinball pack, which included 26 tables, which should hold me for a while.

Bring Your Own Games

One of the really nice things about the Legends Ultimate is that you're not limited to the AtGames offerings.  They have a "BYOG" feature to "Bring Your Own Games".  There are actually three variations on this, of varying usefulness.  Let's start with the best first.

BYOG - Loading UCE files

This is a fantastic feature.  As mentioned in the last post, the ALU has a couple of USB ports.  You can use these to access external games.  Turns out it's really easy.  All you have to do is get some games packaged in UCE format, load them on a FAT32 formatted flash drive, and stick it in the ALU.  It will pick up the drive and add a "BYOG" item to the system menu where you can access them.  (You might have to run their AddonX utility on it first, I'm not actually sure.)  They don't get all of the bells and whistles that are supported for the built-in games, but they support enough and work just fine.

I don't really know much about what the "UCE format" actually is.  From what I can gather, it seems to be a folder containing various metadata such as images for the UI, the game ROM, and possibly a the MAME core needed to play it.

Much of the documentation I found around this was focused on installing CoinOpsX on the ALU.  CoinOpsX is another MAME front-end for managing and playing your games.  Apparently it used to be available for installation on the ALU from AtGames online store, but at some point they removed it and broke compatibility.  However, it turns out that you don't actually need CoinOpsX to run external games.  It may offer a better UI - I haven't used it, so I can't say - but it is not required, so no need to worry if you can't figure out how to install it.

On-the-go (OTG) mode

The next best option for playing your own games on the ALU is the "on-the-go" mode.  This is essentially just plugging a PC into the ALU.  You just need an HDMI cable for A/V and a USB cable for the controls.  Your PC will detect the control panel as a joystick of some type and the screen as another monitor.

The nice part about this is that it's easy to use and extremely flexible.  Since the ALU effectively becomes a monitor and a controller, you can play pretty much any game your PC can run.  You may have to go into the menu to switch to OTG mode, but it's a pretty simple process.

The less nice part is the controller setup, which I still have not figured out.  To be fair, I haven't put much time into it, but the point is that Windows didn't configure the control deck as transparently as I would have liked.  The nice part is that it picked up the spinners and trackball.  However, the button and joystick mapping didn't work as I'd have hoped.  It turns out that Windows detected the joystick not as the main joystick, but as a POV hat, which is...less than helpful.

You can apparently fix this with a tool called X360CE, which stands for Xbox 360 Controller Emulator.  This allows you to make your joystick mimic an Xbox 360 controller, which nearly any modern game can handle.  However, I have not yet managed to make this work.

Legends Link streaming

The last option is their streaming solution, which was apparently called Legends Link.  I say "was" because this option apparently no longer exists.  However, they have not removed it from their website.  (Again with not keeping things updated.)  Instead, they've left the page with a broken link to the installer and this blatantly broken info box:

2025-07-12T19-15-14-145Z.png

That's right, for the low, low price of "$ monthly", you too can have zero hours of streaming and zero persistent storage!  What a deal!

For what it's worth, I was able to find a version of the Legends Link installer on archive.org.  I tried it out and, as you'd expect, it just flat-out doesn't work.  I put in my info, clicked the "connect", button, and waited forever while it tried in vain to connect to the server.  After a few tried, I gave up.  It's a joke that they still have this on their website and in their marketing material.

Bottom line

Pros

  • Cool cabinet with relatively low profile that's very easy to assemble
  • Good controls, including specialty controls (trackball, spinner, pinball buttons)
  • Reasonable price point (especially from Sam's Club)
  • Decent built-in game selection
  • Easy to expand with additional games
  • Really good selection of pinball games available at reasonable prices

Cons

  • The AtGames website is an unholy mess of bad information
  • Boot-up is slow
  • Game loading/unloading is sometimes slow - usually for pinball (most arcade games are fine)
  • The subscription service is a bit overpriced for what it offers
  • The main navigation UI is serviceable, but a little clunky

Recommendation

Overall, I'm quite happy with my ALU.  It's not perfect, but it offers a good gaming experience, a decent game selection, and enough expandability to fill in the holes.  I would definitely recommend it.  If you have the time, money, and inclination, I'm sure you could easily build a custom MAME cabinet that offers a superior experience.  But if you're looking for a "product" rather than a "project", I think the Legends Ultimate is a good solution.

New toy - AtGames Legends Ultimate Arcade

This year, I got my wife a bigger-than-usual gift for Mother's Day.  It was a vintage topaz ring that matched some earrings I'd gotten her in Mexico several years ago.  It's in a similar style to her engagement ring.

In the spirit of reciprocation, she wanted to get me something nice for Father's Day.  So I suggested a couple of things and let her choose.  She picked the cooler of the options - an AtGames Legends Ultimate Arcade cabinet.

legends-ultimate-large.jpg

I'd been eyeing arcade cabinets for a while.  Of course, I'd considered building a custom MAME cabinet myself, but to be honest, I didn't really want a construction project, just the end result.  I'd also looked at the possibility of just buying a cabinet, but they tend to be a little pricey.  For instance, I'd seen some custom cabinet builders selling just the cabinets (not electronics) for around $1,000.  To be fair, they were very nice cabinets, but that seemed a little much.  Also, I'm not particularly interested in putting together just the electronics either, so it would still be a little bit of a project.  So I wanted to go with something pre-built.

One option that I originally considered was the Arcade 1Up machines.  I'd seen these in the local Walmart and they actually looked pretty nice.  The design was very authentic to old-school arcade machines and they were very reasonably priced, with some of the units being as low as $300.  However, they also aren't full-size, so to be able to play the games standing up, you need to either build or buy a riser for another $60.  They also come with a limited selection of games, usually a dozen or less.  And even if you can mod them to add more, the controls are really only designed for the built-in games, so you're limited in what you can do.

The Legends Ultimate does not have such limitations.  My introduction to this cabinet was actually playing an older version of it at the Strong National Museum of Play.  They have one in the retro arcade that's free to play, and it seemed quite nice.  It had several classics that I enjoy (including Burger Time and Elevator Action) and the controls were very good and flexible enough for a variety of games.

(Correction: After going back and looking closer, it turns out the unit at the museum wasn't from AtGames.  The Strong actually had the Chicago Gaming Company Arcade Legends cabinet.  That system has been discontinued, but it was very similar to the ones produced by AtGames.  When I Googled it, I just put in "arcade legends" and the AtGames website was the top hit, hence my confusion.)

For the record, if you're considering this cabinet, I would recommend getting it from Sam's Club, which is what we did.  When I first looked it up, the list price was around $550.  However, since then it has gone up to $900 on their website.  But when my wife ordered it, Sam's Club was still offering it for $550.  And it seems AtGames has a special deal with Sam's Club to include some extras in their version.  So I got 2 free months of their  premium ArcadeNet service as well as the pinball button attachments that you can see on the side of the cabinet.  I've been enjoying those more than I thought I would.

I'll do a separate post with a review and break-down of my experiences with the Legends Ultimate, but so far I'm enjoying it.  It's got a decent selection of built-in games (they advertise 300 games, which is...technically true), good controls (including a trackball, if you want to play Centipede, and spinners for...I don't know what), and a fairly decent selection UI experience.  It's also expandible, with a very subtle expansion panel in that metal strip between the controllers and the screen.  In fact, you can see that I have a flash drive plugged into that panel.  They have a very nice BYOG (Bring Your Own Games) feature which allows you to load up a drive with games in UCE format, plug it in, and they just show up.

So I'm happy.  I've got a nice selection of vintage arcade games and a cabinet that gives me an actual authentic arcade play experience.  And, while it may not be an authentic design, I think it actually looks pretty cool.  And that counts for something.

My son beat his first Switch game

Today we experienced a somewhat significant event: my son beat his very first Nintendo Switch game.  It was Splatoon 3, which he got for Christmas.  He's been playing it since then and just this morning he finally beat the final boss for the first time.

I've never played the game, so I have no idea how difficult it actually is.  However, several times I've seen my son get frustrated and upset because he was having trouble with it.  So it's a life-lesson - a small one, but a lesson nonetheless.  He struggled, he stuck with it, and eventually persevered.  Games can be very useful for that sort of thing.

My son was very happy to finally beat the game.  He called me in to watch the end and called his grandmother afterward to tell her about it.  It was really nice to see him to excited and to be there with him to share this small triumph.  Call it one of the joys of parenthood.

Getting back to games

It's been a while since I played many video games.  Not counting "casual games" on my phone, of course.  I'm talking about games that take more than ten minutes and that you can't necessarily put down at the drop of a hat.  But I've been getting back into PC games a bit in the last few months.

As I mentioned back in July, I've been playing some Halo.  Specifically, I played my way through the Master Chief Collection (MCC) on Steam.  For many people, playing the MCC is an exercise in nostalgia.  But I had never actually played any of the Halo games before (despite the first one coming out like 20 years ago), so this was all completely new to me.  And for the most part, I found them quite enjoyable.  (Now if only they'd port Halo 5 to PC, I'd be all set - I'll be damned if I'm going to buy an Xbox for one game.)

I actually picked that up from taking my son to the Strong Museum of Play.  You see, a while back they brought in a Halo: Fireteam Raven machine.  We tried it out and my son was immediately hooked.  He started wanting to play that every time we visited (which was pretty frequently, since we have a membership) and started to pretend to be using the weapons and fighting the aliens when he was playing around the house.  

IMG_20210822_112524-med.jpg

The game itself is nothing super special.  It's an on-rails shooter with cooperative multiplayer.  You get different weapons at pre-determined points in the gameplay and fight different enemies in different stages, but that's really the only variation there is.  However, unlike many arcade games, it does have an actual plot, with cut-scenes at the beginning and end of each level.  It's not a super-deep plot, but it's something, and it does tie into the larger Halo universe.  (Synopsis: It's set at the same time as the events of Halo: Combat Evolved.  You're a member of an ODST fireteam on the Pillar of Autumn and you have to fight off the Covenant and the Flood until the Master Chief can destroy the ring.)  So I ended up getting interested and playing the PC games.

As I said, I decided to install The Master Chief Collection via Steam.  I'd had a Steam account for many years, but never really used it much.  At one point I downloaded Railroad Tycoon from Steam (because I'd enjoyed playing Loki's Linux port of it years ago) and it didn't really work properly, so I wrote it off.  But it's very popular these days, and I already had a lot of unused Steam codes from Humble Bundle games, so I figured I'd give it a shot.  And you know what?  The Steam client is still buggy.  But it's usable and it's pretty good when it works correctly.  So I've been redeeming some of my codes and playing a few of those games via Steam.

My latest favorite is Stardew Valley.  I got a copy of it as part of a Humble Bundle at some point - I honestly don't even remember when.  I've seen plenty of ads for it, especially the mobile version, but never really gave it much attention.  I don't know what made me decide to try it, but since I already had a copy, I figured I'd give it a look.  Turns out it's actually surprisingly enjoyable.  It's a retro-style life simulation, where you play a farmer who moves to a valley with a small village and become part of the community.  There's no real plot that I can discern yet, or any real win or loss conditions.  You just build your farm and form relationships with the townspeople.  Yet it's oddly relaxing and just feels good to play.  It's also on lots of different platforms and it's pretty cheap, so if you're looking to unwind, it might be worth checking out.

Holiday mission

Last year, I gave my son an assignment for Christmas: help me assemble the RetroPie we got him.  He enjoyed that process and subsequently became a fan of Contra.  This year, we were a little at a loss as to what to get, and eventually decided on making the big family gift a Nintendo Switch.  Still video game themed, but not really amenable to being a DIY project.

But then, a few days before Christmas, we were talking about the vacation we took in Florida at the beginning of 2020, right before everything got locked down.  My son mentioned how much he enjoyed our trip to the science museum, which had a special exhibit on spies.  So I decided to make this year's "Christmas mission" a spy-themed scavenger hunt.  

I figured it would be nice to make it semi-educational, so I wrote a simple "encryption" program (just ROT13 in Python), commented it heavily, and e-mailed it to him.  Then I came up with four clues to lead him to, first, his stocking, and second, the Switch.  I wrote a short letter describing his mission and including the encrypted text for the first clue.  Then I encrypted the other three clues, printed them out, and hid them in the appropriate places.  I put the letter in an envelope and hid it semi-conspicuously in the Christmas tree.

Here's the program I sent him, in case anyone is interested:

# This program does a ROT13 encoding on a message to encrypt or decrypt it.
# ROT13 is a simple "substitution cipher", also called a "Caesar cipher" after
# Julius Caesar, who was one of the first people to use it.

# A substitution cipher means that you replace one character in the message with
# a different character according to certain rules.  ROT13 stands for "rotate by 13",
# because the rule is that you replace with the character that's 13 places farther in 
# the alphabet (when you get to "Z", you loop back around to "A" and keep going).

# One of the cool things about this is that, because there are 26 letters in the 
# alphabet, ROT13 can both encrypt and decrypt a message using the same method.
# You don't need to do anything different!

# Here's how the program works:

# We'll put the decryption in a function and pass it the message
def decrypt_message(message):

    # This is where we're going to store the decrypted message
    decrypted_message = ''

    # We decrypt by going through the message one character at a time.
    for character in message:
        # If the character is an upper-case or lower-case letter, let's rotate it.
        if character.islower() or character.isupper():
            # First we figure out the letter's position in the alphabet.  We can do
            # this by using it's ASCII code, which is the way we represent letters and
            # other printable characters in binary, see https://www.asciitable.com
            starting_ascii_code = ord('A') if character.isupper() else ord('a')
            # To get the position, we get the ASCII value of the letter and then subtract
            # the ASCII value for "A".  (Lower-case and upper case have different codes.)
            position_in_alphabet = ord(character) - starting_ascii_code
            # Then we add 13 and take the modulus with 26.  The "modulus" is the remainder
            # when you do division, so 30 / 26 is 1 with a remainder of 4, so the 30 % 26 is 4.
            new_position = (position_in_alphabet + 13) % 26
            # Now we add back the value we subtracted to get the position to make it
            # an ASCII code again.
            new_character = chr(new_position + starting_ascii_code)
            # Now we can add the the new letter to the decrypted message.
            decrypted_message += new_character
        else:
            # If the character isn't a letter (e.g. a space or punctuation), we'll
            # just leave it alone and add it to the decrypted message.
            decrypted_message += character

    # Now we can print out the result!
    print("The decrypted message is:")
    print(decrypted_message)
    print()


print('Ready to decrypt!  Type "exit" to quit.')
message = ''
while message != 'exit':
    print("Enter the message:")
    message = input()
    decrypt_message(message)

Zane actually found the letter on his own before I even had a chance to nudge him toward it.  He was really excited and immediately wanted to get started.  So we went and downloaded the ROT13 program and I showed him how to open it in IDLE.  He read some of the comments and then we ran it and he typed in the first message.  That led him to the second one hidden in the advent calendar, which in turn led him to his stocking in the basement.  Since we weren't doing presents until the extended family came over for lunch, the third message in his stocking told him to talk to his aunt, who I enlisted to deliver the last clue, which led to the Switch strategically hidden under the bed.

Apparently it was a good idea, because Zane was really into it and had a great time.  After finding the Switch, he even held a "debriefing" where he explained the entire mission in detail to his grandparents.  I count this as a very successful Christmas.

Maniac Mansion on NES

Unlike most episodes of "From the Archives", this one is just going to be current-day commentary. This was supposed to be a "linkblogging" post from way back on February 22, 2006. (That was probably not long after I added draft support to LnBlog!) However, it only had three links and I no longer care about two of them.

The one that is still good is Douglas Crockford's account of The Expurgation of Maniac Mansion for the Nintendo Entertainment System. (The URL has changed since 2006, but but luckily Doug was considerate enough to keep a redirect. However, this publication date is a little misleading.) It's about the back-and-forth they had with Nintendo when trying to port Maniac Mansion to the NES.

I remember playing Maniac Mansion on the NES. I rented it from Video Entertainment, the video rental store in the next town over, several times. I never finished the game, but I remember liking it. I never played the PC version, but even the NES version was more than a little weird.

This article is Crockford's account of some of the odd things that Nintendo insisted they remove from the NES version. They range from silly to head-scratching. But if you've ever heard anything about Nintendo's approval process for NES games, you know that they were very strict about maintaining a certain image and so were very particular about what kind of content they'd allow. Either way, it's an entertaining read.

A very retro Christmas

I'm certainly not a "hardcore" gamer by any stretch of the imagination.  However, like many kids who grew up in the 80s and 90s, I have fond memories of playing Nintendo.  So I still have a soft spot for retro games, which I occasionally play via emulation.  Turns out there's a large community of retro games on YouTube, so I sometimes watch their videos.  I particularly like channels like The Gaming Historian, that trace the history and context of games, franchises, or pieces of hardware.

I've also recently taken to watching the odd retro gaming video on YouTube.  In particular, I'm kind of fascinated by speed-running.  Several months ago I stumbled upon this video of a Dragon Warrior speed run in less than half an hour.  I loved Dragon Warrior as a kid, and I remember spending hours and hours grinding so that I'd be at a high enough level to move on to the next area.  But this run used random number generator (RNG) manipulation to control the "random" actions of the game and basically beat it over lunch.  I find the amount of work and investigation that goes into this type of thing truly impressive.  (Though I can no longer remember what it's like to have the free time that you'd need to do this.)

Anyway, while I'm watching these videos on my tablet or phone, my son will sometimes sidle up and watch them over my shoulder.  So he knows about and is interested in various old-school games.  He even sometimes watches me plays them or takes a turn playing them on my phone.  He's also been getting more interested in games, coding, and computers in general lately.

So this year, we got him a DIY project for Christmas - a retro gaming console.  Or, more specifically, the components to build a retro gaming console.  This consisted of a Raspberry Pi 400 CanaKit and a couple of IR wireless controllers.  I walked him through assembling the hardware, showing him what the components were and what they're for, and took care of flashing the microSD card with a RetroPie image and getting some games onto it.

Overall, this was actually a remarkably easy process.  The CanaKit comes with all the hardware you need, except for controllers, and it's pretty easy to up together.  I don't think I even needed any tools.  The controllers I got were advertised as working with Raspberry Pi and "just worked".  Even installing RetroPie was pretty painless.  The process was fairly well documented and required minimal configuration.

So now we have a nice little retro gaming console.  RetroPie works well and has a fairly easy to use interface (it even has some instructions for controlling it with the gamepad on-screen).  My son hasn't had much problem with it so far.  In fact, we beat Contra together this afternoon.  We used the Konami code to get 30 lives, of course.  I can't imagine playing without it - I'd almost forgotten how brutally difficult early video games could be.

The Joy of Gaming With Your Child

For this Christmas post, I wanted to share an experience from a couple of weekends ago that I hope will be entertaining, especially for any parents out there.  Let me set the scene.

As you may know, I have a young child - a seven-year-old son.  Like many (if not most) little boys, he really likes video games.  We limit his screen time, usually to an hour a day, but we allow him to choose what he wants to do with it.  He can watch TV, or use his Kindle, or, on the weekends, play the Wii.  (Not WiiU or Switch - just a plain-old Wii that we've had forever and barely used before he was born.)

Important background information: While my son is generally a very happy child, he's growing and losing teeth at the moment, so he's a little...difficult on some days.

So on this particular Saturday, around 3:30 in the afternoon, my son announces that he hasn't had his electronics yet today and would like me to play Wii with him.  OK, that's fine. Usually he wants to play Mario Kart or Super Smash Brothers, but the previous week he discovered Super Mario Wii, so that's what he wants to play.

Super Mario Wii box art Super Mario Wii box, courtesy of WikiMedia

This is bad news.  Why?  Because inexperienced seven-year-olds and platformers don't mix well.  His hand-eye coordination is still developing and he doesn't really "get" the puzzle aspect of platforming.  So, needless to say, he doesn't do very well.

Now, in the good old days of the original Super Mario Brothers, this would not have been a problem.  He would die quickly and then I'd take my turn and we'd go back and forth.  But Super Mario Wii is a cooperative multi-player game, so you actually both play at the same time.  And not only is it cooperative, but the players can interact with each other, meaning that you can bounce off another player's head, or push them along the screen.

At this point you might see where I'm going.  I'm sure this can be a very fun way to play, but when you're playing with someone who can't really control their character and doesn't fully understand the objective of the game, this is a recipe for frustration.  I end up playing the same levels over and over because my adorable and wonderful child whom I love very much keeps getting in my way and getting us both killed.

Fortunately, on this particular day I had the foresight to grab that bottle of Jack's Abbey bourbon-barrel aged lager wine that's been in the refrigerator for the two months (as I mentioned in my fitness post, I don't drink much these days) before I sat down to play.  That helped me get through the gaming session and see the humor in the situation.  But on those days when things aren't going well or I didn't get much sleep, these sessions can be very trying.

But at least he's having fun and hopefully building some good memories.  And he is improving, slow but sure.  So I'm glad we can do this together, even if it's not always easy.  Thus is parenthood.

Early birthday

I got an early birthday present today. My birthday isn't until Monday, but my sister-in-law was over tonight, so she gave me my present.

Remember how I mentioned last week that I have a bit of a weakness for "vintage" games? Well, she got me a Logitech Extreme 3D Pro joystick. You rock, Theresa!

And what did I want such a joystick for? You guessed it - to play Wing Commander! I absolutely love the Wing Commander series, and have since I was in high school. I think I owned most, if not all, of the games. In fact, I think I still have copies of all of them, though the ones that were on floppies have long since died (I still have the files on my hard drive, though). I enjoyed pretty much every game in the series, though the original and the Privateer spin-off were probably my favorites.

So here I am, with a brand-new 12-button joystick, playing a 20-year-old video game in a little emulated DOS window. It's amazing the entertainment/time-wasting possibilities technology opens to us!

Making my games work

Despite not considering myself a "gamer" (with the exception of Battle for Wesnoth), I do have a bit of a weakness for "vintage" games, by which I mean the ones I played when I was in high-school and college. While I don't have much time for games anymore, what with full-time employment and home ownership, I still like to come back to those old every now and then.

Well, when I tried to fire up my PlayStation emulator, ePSXe, to mess around with my old copy of Final Fantasy Tactics, I ran into a problem - I no longer have GTK+ 1.2 installed! Apparently it was removed when I upgraded to Ubuntu 10.04 (or possibly even 9.10, I'm not sure). However, according to this LaunchPad bug, this particular issue is by design and will not be fixed. That kind of stinks, because I have several old closed-source Linux-based games that depend in some way on GTK+ 1.2 (often for the Loki installer).

This sort of thing is a little bit of a sore spot for me, and has been for some time. On the one hand, I can understand te Ubuntu team's position: GTK+ 1.2 is really old and has not been supported for some time. You really shouldn't be using it anyway, so there's not much reason for them to expend any effort on it.

On the other hand, how much effort is it to maintain a package that's no longer being updated? Why not at least make it available for those who need it? This is the sort of user-hostile thinking that's always bothered me about the open-source community. There's hardly any compatibility between anything. Binary compatibility between library version is sketchy, as is package compatibility between distributions. Even source compatibility breaks every few years as build tools and libraries evolve. Ever try to compile a 10-year-old program with a non-trivial build process? Good luck.

And that seems to be the attitude - "Good luck! You're on your own." It's open-source, so you can always go out and fix it yourself, if you're a programmer, or hire someone to do it for you otherwise. And while it's absolutely great that you can do that, should that really be an excuse for not giving users what they want or need? Should the community have to do it themselves when it's something that would be relatively easy for the project maintainers to set up?

Not that I can blame them. As frustrating as decisions like this can be, you can't look a gift horse in the mouth. The Ubuntu team is providing a high-quality product at no cost and with no strings attached. They don't owe me a thing. Which, I suppose, is why it's so great that members of the community can fix things themselves. The circle is complete!

But anyhow, that's enough venting. That LaunchPad thread had several posts describing how to install GTK+ 1.2 on 10.04. I chose to use a PPA repository.

sudo apt-add-repository ppa:adamkoczur/gtk1.2
sudo apt-get update
sudo apt-get install gtk+1.2

Ta-da! I'm now back at the point I was at a year or so ago when all of my old games actually worked.

More game breakage - SimCity 3000

Remember my last post on binary compatibility under Linux? Well, I got hit again. For the first time in months, I tried to play my old copy of SimCity 3000 Unlimited - the old Linux port of it that Loki Games did way back. Didn't work in Kubuntu Gutsy.

Fortunately, I was able to find this blog entry on fixing SC3U. The fix requires setting some environment variables and using some libraries from Ubuntu Dapper.

The simple, three-step process goes like this:

  1. download the Dapper libraries and extract them someplace on your machine, e.g. to /usr/local/games.
  2. Adjust your shortcuts, launcher scripts, or whatever you use to start SC3U to use the following command line (lines broken for readability):
    LD_LIBRARY_PATH=/path/to/loki_compat \ LD_ASSUME_KERNEL=2.4.28 \ /path/to/loki_compat/ld-linux.so.2 \ /usr/local/games/SC3U/sc3u -w
  3. Run your script/shortcut/whatever and hope that SimCity starts.

I guess soon it's going to get to the point where I'll need some alternative method to run these games, e.g. VMware. Loki Games did go out of business 6 years ago and these games have been unsupported ever since, so it's only a matter of time until I can't make them work anymore. And that's sad. I shouldn't have to consider using virtualization to make the native Linux port of a program run on Linux.

I wonder if the Windows versions of the Loki games still run on Vista?

Random binary breakage and a rant on compatibility

I enjoy an occasional video game. However, I am by no means a "gamer", as evidenced by the fact that I don't have a copy of a single proprietary game published later than 2002. Rather, I enjoy open-source games like Battle For Wesnoth, vintage games such as Bandit Kings of Ancient China and Wing Commander, and the occasional old strategy game, such as my old Loki games for Linux. I also have a soft spot for emulated console games for the NES and Super NES. I even break out an emulator for my old PlayStation disks every now and then.

Well, the other day the mood struck me to play one of my old PSX games, so I clicked the icon for the ePSXe PlayStation emulator in my application menu and waited...and waited...and waited. And it never came up. So I tried running it from a command prompt and...nothing happened. And when I say "nothing", I mean nothing - no error message or output of any kind. I just got my command prompt back immediately.

Mind you it had been a while since I'd used ePSXe, but there was no immediately obvious reason why it should fail. It's installed in my home directory and has been sitting there, fully configured, for over a year. I used it regularly for a few weeks back in September and October and it worked perfect. Absolutely nothing has changed with it.

Fortunately, a little Googling turned up this thread in the Ubuntu forums. Apparently the ePSXe binary is compressed with UPX. After installing the upx-ucl-beta package via apt-get and running upx -d /path/to/epsxe to decompress the binary, it worked as expected. Apparently something about running UPX-compressed binaries changed between Ubuntu Feisty and Gutsy. I have no idea what, though.

This actually leads into one of the things that really annoys me about Linus: binary compatibility. It's also one of the reasons I prefer to stick with open-source software on Linux when at all possible.

In the Windows world, binary compatibility between releases is pretty good. Granted there are always some applications that break, but given the sheer volume of code out there, Microsoft does a good job keeping that number relatively small. In fact, if you've ever heard any of Raymond Chen's stories of application breakage between releases, you know that the Windows app compatibility team sometimes goes to truly heroic lengths to enable badly broken applications, many of which never should have worked in the first place, to keep functioning when a bug they depended on is fixed. The sample chapter (PDF) from Raymond's book has some really great examples of this.

In the Linux world, on the other hand, nobody seems to give a damn about maintaining compatibility. If you have a binary that's a few years old, it may or may not work on a current system. And if it doesn't, sometimes you can massage it into working, as was the case with ePSXe this time, and sometimes you can't. Not that this should be surprising: some developers in the Linux world are so lazy they won't even allow you to change the paths to application support files - they just hard-code them into the binary at compile-time with preprocessor defines! If they don't care if you can install the same binary in /usr or $HOME, why should they care if it works between distributions or even releases of the same distro? The attitude seems to be, "Well, it's open-source anyway, so who cares how compatible the binaries are?"

But if we're going to be honest, even being open-source only goes so far. Actively-maintained apps are usually OK, but have you ever tried to build an application that hasn't been maintained in 7 or 8 years from source? It's pretty hit and miss. Sure, if I really needed the app, had lots of spare time on my hands, and was familiar with the programming language and libraries it used, I could always fix it to build in an up-to-date environment. But for a regular user, that's simply not an option. (And even for a programmer it may well be more trouble than it's worth.)

But as annoying as I find the general lack of compatibility, as much as I wish I could just run a damn executable without having to cross my fingers, I can understand why things are they way they are. Quite simply, maintaining compatibility is hard. It takes care and diligence and it can make it hard to fix certain problems or make certain types of improvements. And really, when you're not getting paid for your work and have no real obligation to your users, you have to ask yourself if it's worth the effort. Heck, even many commercial vendors aren't that serious about backward-compatibility. Is it really reasonable to expect a loose association of unpaid volunteers to be any better?

But that's enough ranting for tonight. There are ups and downs to every software system. I'm just disgruntled that everything in my personal Linux-land seems to be 5 times more difficult than it needs to be lately.

Gamercise-induced writer's block

I have gamercise-induced writer's block. That's my term for being unable to think of anything good to blog about because I'm tired from playing high-impact video games.

Aside: Boy, "high-impact video game" is kind of a tortured phrase, isn't it? It sounds like the force-feedback controller is going to leave bruises and knock things off your shelves. Actually, it remindes me of one gamer I heard refer to "high-stakes games." Doesn't that give you images of the computer electrocuting you if you lose?

The reason I'm tired is because Sarah ordered herself a copy of Dance Dance Revolution for the PlayStation 2 the other week. I didn't have any interest in it, but she wanted something fun to do for exercise. It also had the side benefits of being relatively cheap and actually putting my PS2 to use.

However, when I watched Sarah actually playing, it looked like a lot of fun. I always thought it looked kind of silly, but when I tried it, it really was a lot of fun. And I can't even dance! In fact, not only am I not very good, Sarah tells me I look like a spastic chimpanzee while I'm playing. But I don't case, because it's still a lot of fun.

I'm kind of enjoying this whole physical video game thing. It's a lot of fun and it actually does get your pulse up. In fact, it would be nice to get the PS2 in a room other than our bedroom. That way, I could play Dance Dance Revolution for my morning exercise rather than just doing half an hour on the eliptical machine. I wouldn't be able to read at the same time, but it sure would be more exciting.

And while I'm at it, maybe I should get a Wii. Those look like they'd be great fun too....

Wesnoth improvements

After upgrading to Kubuntu Edgy, I see that I've got a new version of Battle for Wesnoth. The upgrade installed version 1.1.8, which is a significant improvement over the 1.0.x version I was running before. I have to say, Wesnoth has really gotten good since i got hooked on it three years ago.

The graphic improvements are nice, but those aren't really the best changes. What really helps it is the improved music, sound, and dialog. I'm in the middle of the Heir to the Throne campaign right now, and it feels a lot more polished than the last time I played it. In fact, the sound and music are now good enough that it feels like you're actually losing something when you turn them off!

I was particularly pleased the dialog is getting better. Portions of it were really kind of corny and stilted. They've also fleshed out the characters a bit, giving them more than one dimension. For example, Li'sar now actually has some motivation for betraying her mother, rather than just turning on a dime when the good-guys fill her in. They've also started giving Konrad a little sense of reality, as opposed to just making him a caricature of the innocent young hero. It's really quite refreshing.

People may complain about the open-source community being unable to produce decent games, but you konw what? I'll take Battle for Wesnoth over some crappy 3-D "kill everything in site" game any day. Snazzy visuals is not synonymous with quality, regardless of what the people at nVidia and ATI might like you to think.

Breaking out DOSbox

I've been indulging my fetish for "vintage" (i.e. really old) games again. This time it's with my 10 year old copy of Wing Commander: Privateer.

I really loved the Wing Commander series, and Privateer was always one of my favorites. It's a very free-form game, but it still has a story line. The flexibility it affords you is really enjoyable. You can be an honest trader, a mercenary, or even a pirate if you want to! Plus you get to customize your ship, which is always fun.

After digging out my Privateer CD, which also includes the Righteous Fire mission set and a copy of Strike Commander (another Origin title in the same vein as Wing Commander but set much closer to the current day), getting it installed and working was a pretty easy matter. The only special thing I had to do was turn off EMS support in my dosbox.conf file and bump up the CPU cycle and frameskip settings. The emultation is bsaically perfect!

Of course, I've long since thrown out the Privateer documentation, so my first problem was remembering how to play the game. Forunately, I found a handy page that included a PDF version of the manual along with various other helpful information.

The only thing I really dislike is the controls. See, I don't own a joystick anymore, and apparently DOSbox doesn't really support them that well anyway. If you've ever tried to play a Wing Commander game without a joystick, you will recognize this as a problem. Oh, sure, I can use my gamepad or the keyboard. Without a joystick, your movements are jerky and it's hard to keep an enemy ship in your sites. Maybe I'll have to see if I can get a cheap joystick in the local EB Games. Come to think of it, do they even have cheap joysticks anymore? I can't remember the last time I saw one.

Playing Wesnoth

I've been playing some Battle for Wesnoth the past couple of weeks. Today, I finally finished the "Heir to the Throne" campaign. It was on easy, but I finished it. This isn't the first time I've gotten to the end of Wesnoth, but it is the first time I've seen the ending. I first picked up on Battle for Wesnoth a couple of years ago, when version 0.4.0 was out. I played it on and off for a while and got to the end of the playable levels on several version. However, by the time I lost interest, they still hadn't written all the levels for the standard campaign.

I must say that Wesnoth has come a long way since I started playing it. The graphics are better and the game play has evened out, but it still retains that wonderful simplicity of game play that I so love in strategy games. It's the same reason I still enjoy playing my old copy of Bandit Kings of Ancient China under Dosbox. They both allow for a rich, enjoyable game without making you think too much about the minutia of running an army. I guess it's just a matter of finding the right level of abstraction for the game.

I did have one small problem with Wesnoth today. Apparently a key got stuck on my keyboard, or something, because I ran out of disk space while I was playing. What does that have to do with the keyboard, you ask? Well, after deleting some unused files so I had some space to work with, I started looking for the source of the problem. I thought I had several gigabytes left and I hadn't done anything big recently, so I was a bit confused. It turned out that my home directory, which normally runs a couple of gigs (what can I say - I'm a pack rat), had swollen to 9GB! A closer examination revealed that my ~/.wesnoth directory was up to 6GB. This is where the stuck key comes in, because that's the only explanation I could think of for why there would be 3800 images, at about 1.7MB a piece and all created today, in the Wesnoth screenshots directory. Weird....

At least SimCity 3000 still works

In a fit of optimism, I did a little more playing with Tuxracer tonight. It still doesn't work. On the up side, I was at least able to get all three of my Loki games to work.

I have copies of Loki's ports of Quake III Arena, Railroad Tycoon II, and SimCity 3000 Unlimited. Both Railroad Tycoon and Quake 3 still work perfectly on Kubuntu Breezy. However, SimCity needed a little research.

The straight-off-the-CD installation of SimCity didn't work at all. It bombed out every time with a message about an invalid glibc version. Fortunately, there is a version 2.0a patch for SimCity, which I still have a copy of. Applying the patch didn't work right away either - I got a message about invalid usage of trap. However, when I ran the patch with bash filename instead of sh filename, it worked. Probably a bug caused by bash using sh compatibility when invoked with the sh symlink.

Anyway, after installing the patch, it still didn't work - I just got a segfault. However, I found the answer in this post on Ubuntuforums.org. It turned out to be as simple as telling SimCity to assume a different version of the kernel. I just started it with the command following command, and it worked perfectly:
LD_ASSUME_KERNEL=2.4.2 /usr/local/games/SC3U/sc3u

So that's three out of four proprietary games still working. If I ever get a better video card, maybe I can make it four out of four. Of course, if the games were open-source, I could try to fix them myself, but I guess you can't have everything.

I love emulation

Emulation is great. No need to dual-boot or go out and find a replacement for hardware that broke down years ago. Just fire up an emulator and you've got a whole different platform running in a convenient little window on your desktop.

Although video game emulators like ZSNES and MAME are nice, my current favorites are DOSBox and QEMU. DOSBox is a DOS emulator, kind of like DOSEMU, but more focused on games. I currently use it for exactly one thing - playing Bandit Kings of Ancient China, one of Koei's classic strategy games. This was literally the first PC game I ever bought. I got it and a copy of Tetris from a game store back around 1991 or 1992. I've since lost the copy of Tetris (which was the only program I ever bought that came with a 5.25" floppy disk), but I jealously guarded the Bandit Kings disks for years. They finally went bad a few years ago, but fortunately I had a backup of the game files, so I can still play my original copy. In fact, I even still have the instruction manual and poster that came with it. For some reason, I just never get tired of that game.

QEMU is cool for an entirely different reason. It's an open-source "process emulator" that supports full system emulation. In other words, you can use it kind of like VMWare, meaning you can install an old copy of Windows onto a file on your hard drive. This is a very handy thing to be able to do. For one thing, it allows you to use all that old Windows-only software you probably have lying around. It's also very nice for testing purposes if you're a web developer, since you will almost definitely want to test your pages in Internet Explorer. And after all, Wine is a big pain in the neck to install and configure, while installing a virtual copy of Windows is pretty simple. Also, you can have multiple QEMU disk images with different versions of Windows and Internet Explorer. I don't think you can do that with Wine.

The only problem with these programs is that they require more CPU power than I really have. My trusty 500MHz AMD K6 has served me well, but it can't really handle heavy emulation. However, QEMU does have an "accelerator" kernel module which is supposed to speed things up considerably. Unfortunately, the accelerator module is not free software and is only available in binary form. Plus it only works with the current CVS, not the any of the stable releases. Oh well. I'm compiling the CVS source now, so we'll see how it works. Hopefully I won't need it once I finally get around to upgrading my system.