A RayCast FPS In COBOL

COBOL is not the first language anyone would ever think of when writing a First Person Shooter– after all , it’s the Common Business Oriented Language, not the Common Game Oriented Language. For Youtube-based hacker [icitry] though, that’s the point. The only way to determine if COBOL would be enough to write an FPS game was to do it.

Sure, you could rest on your laurels knowing that the language is Turing complete and therefore capable by definition, but what’s the fun in that? Now the pipeline for this game is as hacky as anything– COBOL doesn’t exactly have a robust graphics stack or a lot of libraries for pushing pixles, so he’s outputting each frame of the game as raw bitmap to STDOUT, and letting ffplay assemble the images. Control enters the same way, with the terminal set to raw input and the COBOL program reading STDIN.

As for what the images consist of, he’s going for a standard Wolfenstien-inspired raycasting shooter. [icitr] provides a decent explanation of the raycasting algorithm, along with why implementing in COBOL is a silly thing to try. That’s a theme here; he’s able to implement sprites and the logic to move and attack enemies, while constantly complaining about COBOL. If that wasn’t enough, he adds variable-height sectors to bring this much closer to a true DOOM clone. By the end, there’s a full game. It’s all up on GitHub on an Apache license.

While this video is not the most gentle introduction to COBOL, it does show you can hack the business-specific language to do whatever you’d like.

Building A Gifford-McMahon Cryocooler With 3D-Printed Parts

Although cryocoolers are capable of pretty impressive cooling, for many of them the underlying working principle is simple enough that you do not need any special skills or a big budget to make your own version. Take the Gifford-McMahon cryocooler for example, which works using nothing more than some kind of coolant gas and a piston in a cylinder that you can even 3D print, as demonstrated by [Hyperspace Pirate] in a recent video.

The lowest temperature reached across the two prototypes was only -84°C, but this was mostly due to some sub-optimal design choices, such as the use of regular air and a clear acrylic tube to get a good glimpse at the inner workings. The trickiest part of this type of cryocooler is probably that you need to move the piston containing the regenerator between both ends of the cylinder to get a cool and a hot side.

That particular problem was solved by using magnets to move the piston externally, which worked beautifully until the problem of using regular compressed air from the shop compressor caused massive ice formation that jammed up the piston. Obviously this was not an unexpected issue, and for the next step the coolant gas will be replaced by helium, as making that gas freeze up requires quite a bit more effort.

Continue reading “Building A Gifford-McMahon Cryocooler With 3D-Printed Parts”

Pi Pico Demos, Therefore It Is

A good demo, like [Linus Akesson]’s Sum Ergo Demonstrato, looks like magic to the average hacker. To normies who don’t know the limitations of the RP2350, they don’t see the big deal. To anyone who has spent any time with the chip, though, it’s a series of tricks you cannot help but be amazed by. Fortuanately for us, [Linus] isn’t actually a magician, because while a magician never reveals his tricks, [Linus] has an hour-long video explaining exactly how his demo was accomplished. We’ve embedded both the demo and the explanation below.

Even if you aren’t into YouTube, you should check out the demo video, and again– remember this is all on a Pi Pico with only the extra passives required for video-out. Then you can watch [Linus] explain how he did it, which is really best heard in his own words. There are a couple of bleeding-edge tricks on the RISC V core and peripherals that we would hate to misrepresent– especially the clever hack with the interpolator that he uses for 3D acceleration.

If this sounds a bit familiar, it’s because we were equally impressed by his Kaleidoscopico demo last year. From demos like this to 3D engines on the ESP32, its amazing what you can do on modern micros if you’re willing to hit the limits of the hardware.

Thanks to [Stephen Walters] for the tip!

Continue reading “Pi Pico Demos, Therefore It Is”

Pi Pico Puts Bluetooth Keyboards On The I2C Bus

If you’ve ever worked with I2C, you know its one of those things that makes working with modern microcontrollers such a pleasure. With a few wires and not many more lines of code, you can communicate with all sorts of hardware such as sensors, displays, and input devices. There are even I2C keyboards out there, although they tend to be a bit pokey — and not in the good way as it pertains to keyboards.

But the bt2i2c project from [Roberto Alsina] promises to improve things. With his firmware flashed to a Pi Pico W, you can establish a connection with any standard Bluetooth keyboard and have the keystrokes sent over the wire via I2C. As far as your project is concerned, the input will appear to be coming from a BlackBerry BBQ20/BBQ10 keyboard using the address 0x1F, which means that there’s already plenty of code out there to work with. While [Roberto] explains its not strictly necessary, connecting a ST7789 display to the Pi Pico over SPI will give you some visual feedback on connection status.

As microcontrollers become increasingly powerful and capable of the sort of thing we would once have done on a “real” computer, a project like this has some fascinating potential. We’ve seen a number of “writerdeck” projects running on chips like the ESP32, and it’s not hard to see the appeal of being able to easily pair your favorite Bluetooth keyboard up to one of them.

Stratasys Vs Bambu Lab: Industrial Vs Consumer ABS Showdown

The test parts being printed on the Stratasys Fortus 450mc. (Credit: My Tech Fun, YouTube)
The test parts being printed on the Stratasys Fortus 450mc. (Credit: My Tech Fun, YouTube)

Professional Stratasys FDM printers demand a pretty hefty price premium over your typical hobbyist-level machine, with the gold-plating continuing even with the special filament cartridges that you buy for some of their printers.

This raises the question of in how far this eye-watering price tag is justified, and how much is just you paying for support and the brand name. After acquiring a spool of Stratasys ABS filament via a US viewer, [Dr. Igor Gaspar] set to work to try and answer this question.

The viewer had already liberated the spool of ABS+ P430 filament from its cartridge, making it easy to use that directly with the Bambu Lab FDM printer.

To make it a fair comparison, [Igor] also needed to have a sample printed on a real Stratasys printer, for which he used a local company’s services. An interesting sidenote here is that the US viewer’s company moved away from Stratasys to Bambu Lab printers.

[Igor] was able to see his test parts being printed on the Stratasys printer, as said company is in the same city. This showed him that it took 14 hours to print the parts versus 3.5 hours on the Bambu Lab printer, suggesting that his worries about the right printing parameters for the Stratasys filament were warranted. Sussing those out was thus paramount for a fair comparison and warranted some test prints.

From a sheer aesthetic point of view the Stratasys-printed parts looked much cleaner, and their dimensional accuracy was also significantly better due to the slicer adjusting for this. Between the used Stratasys M30 and Bambu Lab ABS filaments there’s no clear winner, with both trading blows. Amusingly enough, the older Stratasys ABS type in the form of the ABS+ P430 filament performed the best of all when printed on the Bambu Lab printer at its preferred temperature setting.

Moral of the story is thus that – unless you really want to pay for that service contract – to loot old Stratasys ABS spool cartridges and use them in your hobbyist FDM printer. As [Igor] says in the conclusion, the nicer looks is probably due to them printing very thin layers, much finer than the 0.2 mm layers he used. This would also match the much longer print time and is thus something we can replicate on any FDM printer with a temperature-controlled printing environment.

Continue reading “Stratasys Vs Bambu Lab: Industrial Vs Consumer ABS Showdown”

Homebrew Webcam Support For The Original Xbox

These days, we take it for granted that a video game console will have multiple USB ports. There’s even an expectation that basic peripherals such as storage devices will “Just Work” when plugged into the system — a far cry from the days when each system had its own proprietary memory card.

The original Xbox from 2001 actually had USB ports as well, it’s just that they were used for the controllers and had non-standard connectors that kept you from plugging in other devices. But a simple adapter gets you a standard USB-A port, and after that it’s just a matter of software. Like this homebrew project to get generic USB webcams working on Microsoft’s first foray into console gaming.

Well, “generic” may be pushing it a bit, as the project by [Darkone83] currently lists only two compatible cameras. The first is the Xbox Live Vision Camera, which was never intended to be used on the original Xbox and was instead an accessory for Microsoft’s follow-up console, the Xbox 360. Interestingly, the other supported camera happens to be Sony’s PS2 EyeToy. Claiming that you plugged a PS2 camera into your Xbox would have been fighting words back on the playground circa 2003, but now it’s a reality thanks to the power of open source.

Now there technically was a camera for the original Xbox, but it was only released in Japan and is quite rare. Perhaps unsurprisingly it used the same OV519 chipset as the EyeToy and later Vision Camera, and reverse engineering how the console communicated with it was critical to the development of this project.

As of right now, there’s not much practical application for this webcam driver. It just shows the image from the camera on your TV in glorious 320×240 resolution. But now that the code to make it work is out in the wild, hopefully other Xbox homebrew projects will add support for it.

Although things aren’t quite as active these days as they once were, the hacking scene for the original Xbox is the stuff of legend. If you ever see one of this gargantuan consoles at a flea market for cheap, there’s still plenty of fun to be had pushing the system outside of its comfort zone.

A small, orange 3D printer is shown on a desk with a filament dry box. The printer is printing a waving cat figurine. The printer is a CoreXY configuration, and the side panels are 3D-printed orange plastic.

3D Printing A Miniature CoreXY Printer

Although no longer so common as during the heyday of the RepRap movement, it’s easier than ever to build your own largely-printed 3D printer, with designs such as Voron’s delivering excellent quality. Nevertheless, there are still niches to be filled by new designs, such as [Alex Yu]’s mostly-printed Encore design.

The Encore uses CoreXY kinematics and linear rails for the X and Y axes. Its has no internal frame; the linear rails are mounted directly to the side panels, which were printed but provided sufficient rigidity. The printer is modular, and all the parts are designed to fit within a 225 mm print bed. The Encore itself uses a 120 mm bed, a Bowden extruder, and a lightweight Bambu-style hotend. The drive motors are NEMA 17 stepper motors, and they use sliding mounts for belt tensioning. The power supply sits behind the rods supporting the Z axis, and the controller board is in the base of the printer.

Building the printer was simple; tuning it, less so. The combination of a Bambu-type hotend with a Bowden extruder created some complications, and the hotend initially received too little cooling. [Alex] solved the cooling issues by using a stronger fan on the hotend, redesigning the ventilation shroud, and adding two inward-blowing fans along the sides of the build volume. After correcting some issues with Z-axis stability, the Encore produced some quite good-looking parts. [Alex] is still improving and documenting some aspects of the printer, but he’s uploaded his progress so far to GitHub.

We’ve seen some mostly-printed printers before, including a high-speed printer, one which printed all structural components, and one which was entirely 3D printed.

Continue reading “3D Printing A Miniature CoreXY Printer”