Upgrading PC Cooling With Software

As computing power increases with each new iteration of processors, actual power consumption tends to increase as well. All that waste heat has to go somewhere, and while plenty of us are content to add fans and heat sinks for a passable air-cooled system there are others who prefer a liquid cooling solution of some sort. [Cal] uses a liquid cooler on his system, but when he upgraded his AMD chip to one with double the number of cores he noticed the cooling fans on the radiator were ramping quickly and often. To solve this problem he turned to Python instead of building a new cooling system.

The reason for the rapid and frequent fan cycling was that the only trigger for the cooling fans available on his particular motherboard is CPU temperature. For an air cooled system this might be fine, but a water cooled system with much more thermal mass should be better able to absorb these quick changes in CPU temperature without constantly adjusting fan speed. Using a python script set up to run as a systemd service, the control loop monitors not only the CPU temperature but also the case temperature and the temperature of the coolant, and then preferentially tries to dump heat from the CPU into the thermal mass of the water cooler before much ramping of cooling fans happens.

An additional improvement here is that the fans can run at a much lower speed, reducing dust in the computer case and also reducing noise compared to before the optimizations. The computer now reportedly runs almost silently unless it has been under load for several minutes. The script is specific to this setup but easily could be modified for other computers using liquid cooling, and using Grafana to monitor the changes can easily be done as [Cal] also demonstrates when calibrating and testing the system. On the other hand, if you prefer a more flashy cooling system as a living room centerpiece, we have you covered there as well.

Swapping Nunchucks For A Steering Wheel

Rather than chasing pure performance and high quality graphics like other gaming companies, Nintendo has made a name for themselves over the last few decades by favoring not only artistic design and gameplay, but the physical design of the game systems. Of course the hybrid handheld Switch console is among these, but it also includes things like the novel design of the Nintendo 64 controller and, of course, the Wii nunchuck controllers. They’re not always met with resounding approval, though. Some of us tend to prefer more traditional gamepad design, and will go to extreme lengths to get it like this D-pad for playing Mario Kart Wii.

Rather than simply building a compatible controller for the Wii, or even using a GameCube controller, this controller setup takes a more roundabout approach. A Wiimote is placed in a holster built from Lego, and the game is set up to recognize it as if it were being used in its steering wheel mode. The Lego holster has a servo attached which can tilt the Wiimote from side to side, mimicking a player holding it to play the game, with another set of servos set up to press the various buttons. To control the controller, a homebrew D-pad built on perfboard with an Arduino at its core is used to send commands to the servos, allowing for a more standard controller layout to be used for the classic kart racing game than the steering wheel Wiimote allows.

While it’s quite obvious that there are simpler, easier solutions that avoid the sometimes awkward nature of using Wiimotes, we certainly appreciate the Rube Goldberg-like approach to setting up your gaming experience exactly the way you like. Whether that’s setting up an antique CRT effect for the authentic retro gaming experience or building a complete racing simulator from scratch, the gaming experience is ripe for personalization and unique builds like this one.

Continue reading “Swapping Nunchucks For A Steering Wheel”

Hilarious Security Flaw In Counter Strike 2 Is Now Patched

Normally, when we talk about video games having bugs, it’s some kind of item duplication glitch or a hilarious failure in the jacket equip code of some tedious first-person-shooter online wardrobe simulator. Counter-Strike 2 has had a more embarrassing faux-pas, however, with a security hole allowing bad actors to theoretically capture the IPs of their fellow players in a server. You won’t believe how this came to happen.

The exploit has already been making its way around the forums, with one [Crouch9706] raising the alarm. It’s all down to the way Counter-Strike 2 renders the names that players have entered in their Steam gaming profiles. In certain menus and other parts of the UI, the game will actually parse HTML in a player’s name. Typically, the way to trigger it is to join a game and vote to kick yourself. This brings up a dialog for other players that shows them your player name and parses the HTML. The only limitation is you only get 32 characters for your HTML.

There’s a nifty little extra trick to this, though, in that you can use this technique to snag another player’s IP. By putting in HTML that links to your own server, you can log any player IPs that connect to the server seeking an image, for example.

Of course, it’s not the biggest risk, with many players being behind ISPs that use CGNAT, making the harvested IPs rather useless. However, this sort of unexpected code injection is really not acceptable from a security standpoint. At the very least, it has the potential to expose players to nasty imagery.

Word on the street (Nitter) is that the exploit has now been patched. Meanwhile, if you’re working on a game that for some mad reason, executes code based on player names or any other such data, consider patching your work ASAP. If you find similar exploits in the wild, don’t hesitate to hit up our tipsline—and notify the developers, too!

Light Guns Aren’t Just For CRTs Anymore

For how much of a cultural phenomenon light gun games like Duck Hunt were, they didn’t survive the transition from CRT televisions to LCDs particularly well because of all of the technological quirks the light guns exploited in older technology that simply disappeared with modern TVs. But it’s not impossible to get a similar gameplay from modern technology as evidenced by the success of the Wii and its revolutionary Wiimote, and there are plenty of modern games that use similar devices. There are a few paths to getting older light guns working again, though.

The first system to note, called SAMCO, uses a system of LEDs and a camera to synchronize the game’s flashes to the new technology and translate the input back into the game. Gun4ir uses a similar technique, and boasts extremely high accuracy and low latency largely due to being programmed in assembly. Both systems can use either an infrared tracking sensor or a Wiimote sensor as the LEDs and while the SAMCO system can run on a Raspberry Pi Pico, Gun4ir exclusively uses ATmega32U4 boards with the optimized assembly programming.

Both SAMCO and Gun4ir offer PCBs for anyone looking to try them out without designing their own circuit boards, and once the electronics are assembled they can either be put in an original NES-era light gun, put in a custom printed enclosure, or even stuffed into a Nerf gun. For others looking for a more turnkey solution, there are also offerings from companies like Sinden which make complete system. You can always build your own system to restore the functionality of original light guns from scratch if that’s more your style.

Thanks to [LookAtDaShinyShiny] for tipping us off to the latest happenings in the light gun community!

Photo courtesy of Wikimedia Commons

Latency Meter For Accurate Gaming

The gaming world experienced a bit of a resurgence in 2020 that is still seen in the present day. Even putting aside the effects from the pandemic, the affordability and accessibility has arguably never been better. Building a gaming PC can have its downsides, though, and a challenging issue to troubleshoot is input lag or input latency. This is something that’s best measured with standalone hardware, and if this is an issue on your setup you may want to take a look at this latency meter.

Unlike other measurement devices that use the time between a mouse button input and the monitor’s display of a bullet or shooting event, this one looks at mouse movement and the change in the scene instead. This makes it much more versatile than other methods since it’s independent of specific actions, and can be used in any game without any specific events needed to perform the measurement. A camera phototransistor is placed on the monitor’s top edge and the Arduino-based device sends mouse commands to the computer while measuring the time between those commands and the shift in the image on the monitor.

The project is open source, so with the right hardware it’s possible to build one to troubleshoot latency issues or just to learn more about a particular hardware configuration’s behavior. Arduinos and other microcontrollers have been doing all kinds of things by pretending to be human interface devices like this for a while now. One of our favorites of late was this effects pedal that replicates musical effects on mice and keyboards.

Restoring A 45 Year Old Video Game

When we say vintage video game, some of you may think of the likes of Lemmings, Mario or maybe even Donkey Kong but the game that [Vintage Apparatus] restored is slightly older and much more minimalist, using an LED matrix and some 7-segment displays rather than this newfangled color CRT thing.

The front and back covers, buttons and screws of the game on the workbench.
The game is disassembled before cleaning.

[Vintage Apparatus] starts by removing the battery and cover from the 1977 Mattel electronics (American) football game, which uses rather uncommon 2mm triangular screws. To his and our surprise, the circuit board and its beautiful array of LEDs seem to be in excellent condition, so he moves on to cleaning the case itself.

The case, on the other hand, is a bit dirty on the outside, so [Vintage Apparatus] takes out the buttons and starts cleaning with the back cover a Q-tip. After a bit of scrubbing and some extra care to avoid removing any stickers, he moves on to the considerably dirtier and somewhat scratched front case. After some wrestling with the creases and speaker grill of the front cover, the outside of the front case looks nice and clean. Finally, he puts back the buttons and circuit board in the front cover before adding closing it all up with the back cover and screwing it back together.

The game, which immediately comes to life and was actually made by the Mattel calculator division, is a sort of evasion game where the player is a bright dot that can move forward, up or down. The player avoids the dimmer dots, the “tacklers”, in order to run as far as possible as fast as possible. When one of the tacklers tackles the player, the amount of downs is increased and the fifth down means game over. After either scoring or getting downed one too many times, the field is flipped and it’s now player 2’s turn.

Video after the break.
Continue reading “Restoring A 45 Year Old Video Game”

Automation For The NES

Old hardware might not be anywhere close to as powerful as modern technology, but it does have a few perks. Aesthetics can of course drive the popularity of things like retro gaming systems, but the ease of understanding the underpinnings of their inner workings is also critical. The Nintendo Entertainment System, now nearly four decades old, is a relatively simple machine by modern standards and this lends the system to plenty of modifications, like this controller that allows the system to be somewhat automated.

The original NES controller used a fairly simple shift register to send button presses to the system. The system outputted a latch signal to the controller, the shift register would take as input the current state of the buttons, and then would send them one-by-one to the system at a rate of around 1000 times per second. These signals can be sent without a controller easily enough, too. This build uses a CD4021 shift register, which is the same as the original controller, but instead of reading button states it accepts its inputs from a separate computer via a latching circuit. In this case, the separate computer is a custom design that came about through adapting cassette storage for a 6502-based computer, but it could come from anything else just as easily.

With this system in place, it’s possible to automate gameplay to some extent. Since the system can’t get feedback about the game in its current state, it requires some precise timing to get it to play the game well, and a lot of tuning needs to go into it. This isn’t just a one-off, either. Similar methods are how we get tool-assisted speedruns of games and although these are often done in emulators instead of on real hardware, they can result in some interesting exploits.

Continue reading “Automation For The NES”