If you've been on this site for a while, you may remember that in February 2020, I built what I called the "KOTOR Machine".
A KOTOR Machine is a PC that is specifically built to play one game, and do it well: Star Wars Knights of the Old Republic (KOTOR for short), and possibly its sequel. These games came out in 2003 and 2005 resepectively and despite being excellent RPGs, their engine was a technical disaster that always had all kinds of compatibility issues, even when the game was new. The first game was never patched, while the second one received an update in 2015 that while fixing most of the issues, also removes several graphical effects as well as EAX.
In order to run KOTOR properly, you'll need:
As a reminder, this is what I consider an acceptable KOTOR experience:
In this article I will be referring to KOTOR and the 2005 version of KOTOR 2 (the 2015 Steam re-release removes several graphical effects and EAX so it's inferior to the original). In other words, I will be talking about the version of KOTOR and KOTOR 2 that you can currently buy from GOG as of August 2021. Community patches for both games will be used to improve the experience.
The original KOTOR Machine was built mostly from scrap: an AMD Athlon 64 3500+ that I found on the side of a road, 1GB of DDR RAM that came with it, an NVIDIA GeForce GT640 that I found at a garage sale, a 250GB WD Re mechanical hard drive that I salvaged from a decommissioned server a few years ago, and a Creative Audigy 2 from 2002 that I don't even remember where I got it from but sounds better than my current desktop. The only things I had to order were a Cooler Master Q300L case and a Corsair VS550 power supply, for a grand total of 80 euros.
With this hardware, I was able to play both games, and they ran well, but the experience wasn't quite perfect: you see, KOTOR and especially KOTOR2 are extremely dependent on single thread CPU performance and the Athlon 64 3500+, while being a popular choice around 2003-2005, was almost always the limiting factor. The worst place in general was the Jekk'Jekk Tarr in KOTOR2: there is a large fight in this bar and the framerate can drop even below 20 FPS at times.
The performance issues are not 100% KOTOR's fault though: the NVIDIA driver for the GT640 (Kepler) has a significant CPU overhead, and simply replacing the GPU with a less powerful one (a 9600GSO from 2008, Tesla-based) and installing a slightly older driver improved the performance significantly.
In short, I needed a CPU with higher IPC if I wanted the best KOTOR experience.
Since KOTOR requires a single core CPU to run properly, I started looking for some of the most powerful single core CPUs, and around September of 2020 I was able to find a combo with an ASRock N68C-S UCC, an AMD Sempron 150 and 2GB of DDR2 memory.
The Sempron 150 is one of the most powerful single core CPUs, and one of the last. With a base frequency of 2.9GHz, out of the box this CPU is about 30% faster than the Athlon 64 I was using previously, but this CPU is an overclocking champion, and without even touching the core voltage, I was able to overclock it to 3.65GHz while keeping the temperatures in check even with the stock cooler; this gave me a massive 71% increase over the Athlon 64. Despite this, I wasn't happy: that motherboard is a piece of crap, the chipset gets uncomfortably hot at the slightest overclock, and KOTOR was still not running perfectly.
The search continued until around May 2021, when one of my friends upgraded his old PC and I was happy to pick it up from him for just 125 euros: an Intel Core i5 4690k, 24GB of DDR3 RAM and an ASUS Z97-P motherboard.
But wait, you say, that's a quad core CPU from 2014, it's not ideal for KOTOR. Well, at this point I remembered that some motherboards can disable CPU cores, and this is one of them. I disabled 3 out of the 4 cores, removed all but 4GB of RAM, mounted a Noctua NH-L9x65 cooler, and installed Windows XP, and with the power of Haswell available to KOTOR, surely it will be smooth, right?
Yes, KOTOR does indeed run smoothly, but the fast CPU created a problem: the GT640 that I was using is passively cooled, and without a CPU bottleneck, it gets really really hot, reaching 93°C in 20-30 minutes of gameplay and begins to thermal throttle.
At first I wanted to replace the GT640 with the 9600GSO, but that card is relatively noisy, and the VRMs on it reach uncomfortable temperatures, so I decided to get creative and find some way to add a fan to the GT640.
Despite being passively cooled, the GT640 has working fan controls in its BIOS, and after some probing with my oscilloscope I was able to find connections for a standard 12V PWM fan and solder some wires to them. Those wires were then connected to a Noctua NF-A14 PWM fan that I firmly mounted to the cooler with some zip ties, and that made a tremendous improvement: even at the lowest speed allowed by the card (30%), which is not audible at all, the maximum temperature in FurMark went from 95°C to 52°C. That's an insane drop of over 40°C just from adding a silent fan, I'm very happy with that.
Here's what it looks like with the 140mm fan (you can see the red wires on the left side going to the 4-pin connector:
I then experimented with other fans, 120mm and 92mm, which despite looking less stupid when mounted on the card, they did not perform as well both acoustically and thermally. We'll talk more about the thermals and acoustics of this system later.
In my previous article, I stated that running KOTOR from an SSD would be very bad for its health, especially since Windows XP doesn't support TRIM. It occurred to me that basically I'm a fucking idiot and there are several ways around that.
First of all, I chose a suitable SSD: an Intel SSD DC S3520 from 2016 that I miraculously found brand new for only 35 euros. This is a 150GB datacenter SATA3 SSD that's built for reliability and endurance rather than speed. Despite reaching barely 150MB/s, this drive has an astouding 412TBW of endurance, approximately 7 times that of a 1TB Samsung 980 Pro.
Here's a picture of the SSD on the back of the motherboard:
Since Windows XP doesn't align partitions properly for SSDs, I used GParted to create an 80GB aligned partition on the drive and installed Windows on it. The remaining 70GB were left unused so that the controller can use them for wear leveling even if there is no TRIM. This big brain move made the system faster, more reliable, and most importantly silent.
The Creative Audigy 2 sounds really really really good, but because it's from 2002 it doesn't have a standard HD Audio or AC'97 connector for the front panel, so I always have to plug my headphones in the back of the case where I can't even see which is the right connector. This suboptimal KOTOR experience was once again fixed with the help of my oscilloscope. A quick probing allowed me to find the right place to solder some wires, I built a little HD Audio adapter on a prototyping board and voila, now we have HD Audio, output only because I didn't have an analog mic to find the input pins.
Here's a "schematic" of the little adapter I made:
And here's what it looks like on the card:
Here's another fun story for you: how I got a free PSU during a PSU shortage.
The power supply in my main PC was a Fractal Design Ion+ 860P, a pretty decent modular PSU, 80+ Platinum, ~180 euros. After a few months of use it turned out to be defective: it started buzzing, whining, sometimes straight up triggering the short circuit protection on my UPS. I contacted Fractal support, they sent me a new one for free and told me to get rid of the old one. Before tossing it in the trash I was curious to take a look inside, see if I could
get shocked figure out what was wrong with it; after all I'm supposed to know my way around electronics, right? After several minutes of staring aimlessly at the circuit, I noticed a pretty shitty solder joint on the high voltage side, I decided to turn on the PSU while keeping an eye on it, and after a few minutes, buzzing and small arcs! I redid that joint (which is easier said than done because it really didn't want to melt), turned it on again and the problem was gone.
I decided to use the repaired PSU on the KOTOR Machine (after checking the output voltages of course). It's total overkill for this PC, but I was so happy to have saved it from the dumpster, not just because I got a free PSU, but because I hate destroying working or easily repairable electronics.
The Cooler Master Q300L from the previous KOTOR Machine was one of my favorite cases at the time: it's cheap, good looking, well built, small, and a pleasure to work with. Unfortunately it's Micro-ATX so the new motherboard doesn't fit. There is an ATX version of the Q300L called the Q500L, which is the same size as the Q300L but has a different layout with the PSU at the front instead of the standard bottom configuration. This case has fairly negative reviews because of the insufficient airflow, but the KOTOR Machine doesn't really generate a lot of heat, so I decided to try one anyway.
The reviews weren't exaggerating, the Q500L is a fucking oven: despite being full of holes on 3 sides, this case has almost zero airflow because the holes are too small, the dust filter is too restrictive, and the bottom sits too close to the desk. I tried several fan configurations but nothing made any difference. At the end, I opted for having only the CPU and GPU fans, no case fans, and having the PSU fan pull air from inside the case and push it out the top. This gave me the best results, and I can actually feel some air getting into the case from the opening at the back.
The Q500L cost me 62 euros, which is quite high for this case, but at least I sold the Q300L for 25 euros so I got some of my money back.
Overall, I can't really recommend this case unless you're building a very low power system like this one. I love the idea of a compact ATX case with the PSU at the front, and there is nothing similar on the market even today, but the executuion is lousy: placing a modern system inside this case would severly limit its performance and maybe even its lifespan. Hopefully Cooler Master learns from their mistakes and the next iterations of this case will be better; if that happens I'll be more than happy to buy another one.
Here's what the assembled system looks like:
The software side of the new KOTOR Machine is similar to the previous one: a fully updated copy of Windows XP with the POSReady updates (supported until April 2019).
I installed a few applications that could be useful:
I installed 3 versions of each game:
I don't use mods that alter the game's look and feel, only bug fixes, and play in 1280x1024 resolution.
Mods for KOTOR 1:
Mods for KOTOR 2:
The new KOTOR Machine performs significantly better than the old one.
Single thread performance is the limiting factor for KOTOR, so we start our benchmarking section with Cinebench R11.5 (the last version that works on XP). The new CPU mops the floor with the old ones: even at stock speed, it has nearly 3 times the speed of the original KOTOR Machine, scoring 1.49 points compared to the 0.56 points of the old overclocked one. Haswell, however, pales in comparison of a modern Ryzen, which has more than double its single thread performance.
CPU temperatures are well under control thanks to the little Noctua NH-L9x65 cooler and the disabled cores. The new KOTOR Machine runs slightly cooler than the old one at 55°C, down from 64°C. Ambient temperature was a not so comfortable 28°C, so I expect even better temps during winter.
GPU temperatures were an issue as mentioned previously: without a CPU bottleneck to hold back the GT640, temperatures increased to uncomfortable levels so a fan was mounted onto the card. This resulted in a massive decrease in GPU temperature by almost 50%, going from 93°C ingame to only 49°C.
With the new hardware and a more efficient PSU, the new KOTOR Machine is also much more energy efficient than the old one, with a power draw at the wall of only 69W ingame compared to the previous 114W, a 40% improvement.
Finally, I don't have any way to measure the exact noise level of the machine but I can say that it's completely inaudible to me, even ingame. The old KOTOR Machine wasn't loud either, but it was audible.
Both KOTOR games run extremely well on this machine, keeping a locked 60 FPS almost all the time, with the exception of extremely populated areas like the Jekk'Jekk Tarr, where it drops to around 40 FPS. For better performance with VSync enabled, triple buffering was enabled in the NVIDIA control panel, since the game doesn't implement it.
So, here's the final configuration of the KOTOR Machine:
I'm very satisfied with KOTOR on this machine, it's a pleasant, uncompromising experience, it's as good as KOTOR gets and I don't think there's much room for improvement.
Almost certainly, yes. There have been some major breakthroughs in KOTOR compatibility in the Linux world during the months of July and August of 2021 thanks to the awesome efforts of the Mesa developers, the Wine developers and the folks at Valve who are trying to create a new gaming platform. This will be the subject of another post, but all I'll say for now is that if you're on Linux, it is now possible to play both games on any hardware, without crashes, without artifacts, without sacrificing anything, and with great performance.
I'll leave you with a video of KOTOR2 running perfectly on Manjaro 21.1.0: