Reverse-engineering The 1998 Ultima Online Demo Server

In any MMORPG, the average user will generally only encounter the client side of the system. This makes building a compatible open source version of the proprietary server into a bit of a chore. Of course, sometimes you get a bit of a break, such as with the – still active – MMORPG Ultima Online, when the disc for the 1998 The Second Age expansion contained a stand-alone demo. This also meant a (stripped-down) server which has been gratefully reverse-engineered by the community, with [draxinar] now claiming to have made the most complete server based on this demo server.

To make things extra challenging, the originally written in C++ server binary was reverse-engineered into C99 code, meaning that the use of classes and associated vtables had to be left intact, just without the critter comforts provided by C++.

The total process took about a decade with occasional progress, with the current server binary being mostly identical to a 1998-era Ultima Online server. Some features that were stubbed out or disabled in the demo server had to be re-enabled or reimplemented, including the user account system.

Features that were left out of the final release like the ecology system were also enabled in so far as they were implemented. Although there is probably still a lot more work to be done on the code, [draxinar] reckons that this is a good point for the community to get involved to do some testing and provide feedback. There are also some missing server-related resource files that may still be saved somewhere.

Thanks to [adistuder] for the tip.

Could Your Next House Be Built From Giant Lego By An Inchworm Robot?

Well, it depends when you’re going to be househunting– if it’s anytime soon, Betteridge’s law applies, but if your time horizon is a ways further out, [Miana Smith] at MIT wants to make it happen. She’s got a paper out with an open-source inchworm robot designed to assemble structures from voxels– and what is a voxel but a giant, LEGO-esque brick?

There’s a demo video below, and it’s easier to understand the motion of this thing when you see it in action. The 5 degree-of-freedom MILAbot has actuators on both ends, and no traditional base– that’s the inchworm part. It grabs a brick while anchored to one part of the structure, then stays anchored to the new brick to keep building from that locale, so on and so on.

Note that we’re not talking about concrete bricks here, though conceivably you could use an inchworm-style actuator to assemble those. The ‘voxels’ in the study are engineered space-frame blocks which come together very easily, though admittedly would make for a very drafty home– you’d want to fill them with spray foam as a finishing step. So it’s more of a framing technique than a one-and-done thing. Still it is a technique that has something to recommend it compared to the 3D-printed concrete houses that get so much hype— and are already being torn down. 

For instance, the researchers find that weather the voxels are plywood, PLA, or metal, the resulting structure has less embodied energy than any concrete structure, with 3D printed concrete being worst option by that metric– though the balloon-frame stick-build we in North America consider “conventional” is still the lowest of all. On the other hand, that balloon-frame building takes a crew to put together, and labour is expensive compared to robots. At the moment, however, the study admits balloon-framing wins on price, but that doesn’t mean it always will, and it’s a fun hack regardless.

So while your next house might not be made of LEGO by a robot inchworm, we’re still grateful to [Miana] for the tip.

Most building hacks we see here are of the 3D printed variety, but don’t count out plain old dirt. For that matter, as long as someone is willing to live in it, anything can be a house– even an airliner. Continue reading “Could Your Next House Be Built From Giant Lego By An Inchworm Robot?”

Win95-Tracker-CYD Is A Cheap Yellow Mod Tracker With I2S

The Cheap Yellow Display is a great little module to start a project with, but it wouldn’t necessarily be our first choice for an audio device. That’s because the PWM on the ESP32 isn’t exactly going to put out hi-fi, and the I2C pins needed for the I2S audio protocol aren’t broken out on the CYD board. That didn’t stop [ivans805] AKA [Ill-Town-5623]– he wanted a mod tracker, he had a CYD board, and necessity is the mother of invention.

It isn’t exactly a ground-breaking hack: he’s just tossed a bodge wire to the pin he needs on the ESP32, and run it to the I2S sound module. Still, in this era of endless modules it’s nice to see someone hacking what they have rather than running to AliExpress or somewhere else for a part that has everything the project needs built in.

The bodge wire is how you know it’s a hack.

What really caught our eye when we saw this project on the ESP32 subreddit was the aesthetics. It might be called “Win95-Tracker-CYD” but that interface just screams “Amiga” to us– look at that Boing Ball! Given where MOD files come from, that’s perfect. The UI was made with Lopaka.app, which we haven’t seen before but appears to be a sort of WYSIWYG editor for embedded device interfaces.

While you don’t need an ESP32 to play mod files– the diminutive CH32 can manage the task— there’s no arguing the CYD could make a nice little player. If you actually wanted to push its limits, you might try a 3D engine instead,

A Raspberry Pi-powered glitch camera, with adjustable glitch.

Easy-ish Glitch Camera? There’s A Pi 4 That

Usually, when you want to make glitchy images with lots of colors and things, you have to poke around inside a camera and successfully circuit-bend the thing without bricking it. But [sharkbiscuit101] proves that this isn’t necessary, provided you have a Raspberry Pi 4 and a few other components.

Now we don’t have a lot of detail here, but [sharkbiscuit101] is being heavily encouraged to share the relevant files and a component list. What we do know is that the there’s a screen for previewing images, a portable battery, a shutter button, a rotary encoder to dial in the weirdness, and a game pad for controls. Using the script and a slider, you can tweak different aspects of the image to basically break it down in real time. If you find a nifty combination, you can use the rotary encoder to save and then recall presets.

If you’re wondering about the grip, that’s a Sharge battery from the Bezos Barn. Per [sharkbiscuit101], it is a good size, and since Pi 4 doesn’t have a power button, it can be turned on and off at the battery.

Of course, you can always mess with JPGs on a raw, textual level instead, or produce standard photographs with a pinhole camera.

How Commodore Made A Sync Splitter

Recently we featured an unusual Commodore 8-bit computer on the bench of [Tynemouth Software] — a Commodore 64 in a PET case. One of the unique parts it had was a board which took the composite output from the mainboard and split out the sync pulses for the monitor, and now they’re back to give it a full reverse engineer.

Perhaps the first surprise is why this board is necessary at all, after all one might expect an 8-bit machine to have those signals already at hand. It seems that the VIC chip inside the 64 did the combination to composite internally, so no such luck for the Commodore engineers. The board they designed then is a complete and very well-engineered sync splitter.

The technology of a video signal has its origins in the 1930s, so it’s not hard to extract both vertical and horizontal sync pulses with little more than a few passive components and a couple of transistors. The trouble with such a simple approach is that the output will work, but it will be messy and crucially, not have quite the required timing. The Commodore board uses the same approach as a simple discrete circuit of having a pair of filters with a time constant selected to catch the relevant sync, but extends it with extra logic. There are one-shots designed to provide clean pulses of exactly the right length, and gates that provide blanking to remove the chance of pulses ending up where they shouldn’t. The video path is the only part which might differ from a conventional sync splitter, because as the output from the 64 is all-digital, it takes a TTL-level through a gate rather than a more conventional analogue path.

You can see the rest of the machine in our original write-up, and we’re reminded that the boards haven’t been cleaned at their owner’s request, to preserve their patina.

Hackaday Podcast Episode 369: IR, E-Ink, And Avgas

In this episode, Hackaday Editors Elliot Williams and Tom Nardi start things off by discussing the latest reason that cheap PCB fabrication isn’t quite as cheap as it once was. The conversation will then move on to hacking electronic shelf labels, stylish e-ink status displays, cutting metal at home with high current and a bit of water, a solarpunk message board hiding in a IKEA-style lantern, and pushing NFC out of its comfort zone. From there you’ll hear about a matching transistors, taking pictures of the International Space Station, and Linux on the PS5. They’ll wrap up this week’s episode by going over the surprisingly simple concept behind flow batteries, and learn who’s still using leaded gasoline and why.

Check out the links if you want to follow along, and as always, tell us what you think about this episode in the comments!

Direct download in DRM-free MP3.

Continue reading “Hackaday Podcast Episode 369: IR, E-Ink, And Avgas”

Broadcasting GPS On The Local Network To Help Geoclue Find You

Rather than having users go through the inconvenience of having to punch in their current location, an increasing number of applications and websites use location services that can pin-point the current location of a user to within a certain number of meters or kilometers.

Unfortunately, [Evert Pot] found that with the demise of the Mozilla Location Service (MLS) in 2024, accuracy of the Linux Geoclue service had dropped to a resolution of about 25 km. Since a LAN tends to not move around a lot, this seemed like the perfect time to help Geoclue out with a local GPS server.

All that Geoclue looks for on the LAN is an mDNS service identifying as _nmea-0183._tcp that responds with the GPS coordinates as network packets containing an ASCII payload encoded using the NMEA 0183 standard. With this knowledge [Evert] was then able to quickly put together a Python-based server that simply blasts the static GPS coordinates of the LAN in question.

With the service running, Gnome Maps and Firefox with Google Maps both displayed the right location down to the house, as can be seen in the screenshots. With the same LAN service and a Mac system there was no such luck with Apple Maps unless Location Services was turned off, though presumably Apple uses its own equivalent to MLS.