Jan 162018
The Red Solstice logo

1.) Introduction

Yes, it’s another one of “those” posts. Reason for this is, that Humble Bundle is currently [giving away] the crowdfunded title “The Red Solstice” for free, so I picked up a copy to see whether I could get it to work on Windows XP x64 (and also 32-bit XP). Why not, right? Ah, you need Steam for this by the way.

This game is the first one I’ve seen on the Desktop which is actually using OpenGL ES instead of OpenGL or just Direct3D. Typically, that API is more widespread on mobile devices running Android or something, as it’s slimmer and brings a reduced feature set of the “real” OpenGL to the table. The bundled version is OpenGL ES 2.0, and instead of some modern GPGPU language like HLSL it uses nVidias’ old Cg library, which is luckily compatible with XP. The game developer [Ironward] seems to claim that this game, which is based on something called the “TRSEngine” needs Windows 7 or newer to run however.

2.) Required tools

To be able to reproduce the hack described in this post you will need the following tools:

3.) Fixing the platform target

The game has been compiled for a NT 6.0 or Windows Vista platform target, so launching it as-is will result in the dreaded “not a Win32 application” error:

The Red Solstice is "not a valid Win32 application" on XP

Hey, it’s not a Win32 application! Pfh, as if…

The fact that the program was built with an NT 6.0 platform target doesn’t necessarily mean that it actually needs any modern functions of Vista/7/8/10, so the first step is usually to fix the binary headers and change that platform level to something lower, usually 5.1 (XP) for 32-bit code or 5.2 (XP x64 / Server 2003) for 64-bit code. The Red Solstice is a 32-bit game, so it’s going to be 5.1. Sometimes, this can be enough.

As an example, launch CFF Explorer and open the Game.exe from the games’ installation folder, then click on Nt Headers -> Optional Header. I’ve marked the important parts in red for you:

The Red Solstice stock Game.exe

The Red Solstice stock Game.exe (click to enlarge)

To fix this, change the values from 0006 and 0000 to 0005 and 0001, this corresponds to changing the required platform from NT 6.0 to 5.1.

Game.exe with modified binary header

Game.exe with modified binary header (click to enlarge)

After the change, save and overwrite the existing file, but create a backup first, if you wish to be able to revert from the change quickly.

Fixing that one file won’t be enough though. In total, you’ll need to apply the hack seen above to the following files:

  • Game.exe
  • icudt51.dll (Unicode library)
  • icuin51.dll (Unicode library)
  • icuuc51.dll (Unicode library)
  • libEGL.dll (Platform-specific glue layer for OpenGL ES on Windows)
  • libGLESv2.dll (OpenGL ES 2.0)
  • libogg.dll (OGG vorbis audio decoder)
  • libtheoraplayer.dll (Theora audio decoder)
  • OpenAL32.dll (OpenAL audio API)
  • Qt5Core.dll (Qt5 2D GUI library)
  • Qt5Gui.dll (Qt5 2D GUI library)
  • Qt5Widgets.dll (Qt5 2D GUI library)
  • platforms\qwindows.dll (Platform-specific glue layer for Qt5 on Windows)

It’ll take about 1-2 minutes to fix all of them I guess. However, if you attempt to run the game after that, it’ll still fall on its face with a different error:

The XP kernel API doesn't provide GetTickCount64()

Ah, GetTickCount64() is actually an [old acquaintance] of mine by now…

Inspecting the Game.exe with Steve Millers’ Dependency Walker shows, that the problem is actually limited to GetTickCount64(), so it’s the one and only missing kernel API function call we’ll have to deal with:

Tracking the dependencies of Game.exe brings up a missing GetTickCount64() call in kernel32.dll

Tracking the dependencies of Game.exe brings up a missing GetTickCount64() call to kernel32.dll, but no other problems. (Click to enlarge)

Alright, let’s get to it!

4.) Fixing the GetTickCount64() call

This is a bit trickier, as we need to present a GetTickCount64() function to the game, that will do something useful. For this we’ll use Oleg Ovcharenkos’ Stellaris hack, which allows us to redirect that missing call to the legacy GetTickCount() that Windows XP does have.

Unpack the software into some directory of your choice and copy the Game.exe of “The Red Solstice” into that directory as well. Olegs’ hack isn’t prepared for this game yet, so copy one of the existing scripts such as xp_Stellaris_1.6.cmd to a new script file, e.g. xp_TheRedSolstice_1.6.cmd. Open the file in your favorite text editor, and make sure it contains exactly and only the following lines:

rundll32 zernel32.dll,PatchFile Game.exe

Save the file, and run it by double-clicking on it or by launching it directly from a command line terminal. It’ll patch the game so it calls the stub DLL zernel32.dll and some other z* libraries, which fixes some missing calls and redirect the rest to the platforms kernel API as-is. It’ll also create a backup copy of Game.exe for you. Now you have to copy the following files from the folder containing Olegs’ hack back to the actual game folder:

  • Game.exe
  • zernel32.dll
  • zs2_32.dll

That’s it!

5.) Finally: Running the game on XP

With the platform target hack done with CFF Explorer and the GetTickCount64() => GetTickCount() redirection done by Olegs’ Stellaris hack we can finally launch the game:

The Red Solstice fired up on Windows XP x64

The Red Solstice fired up on Windows XP x64 (click to enlarge)

I have to say that I haven’t tested this extensively so far, but a few brief gameplay tests have been conducted:

Gameplay test

Gameplay test (click to enlarge)

There you go, another modern game hacked to run on ancient Windows XP & XP x64! Beer Smilie

Dec 212017
Oxenfree logo

Thanks to GOG giving Oxenfree away for free recently, I had the opportunity to test this game for its compatibility with Windows XP and Windows XP x64 Edition. So I can’t vouch for the Steam version, but I do assume that it’s the same as for the GOG version, as the Steam API itself is still compatible with XP and XP x64. Oxenfree itself is using the Unity engine, which is typically highly compatible when it comes to different operating system platforms. On Windows XP and Vista, Oxenfree still breaks though, so let’s take a closer look!

For this test, the 64-bit version of the game was used on XP x64, while the regular Windows XP machine got the 32-bit version of course.

1.) Installation

If you get/got the game from GOG, please do not download the Galaxy version, but the regular one, as the GOG Galaxy client really won’t run on XP.

Now, the first thing you might encounter are some installer errors, if you’re using the GOG installer. These might ring a bell for some users of Wine on Linux, as they can happen there as well. I’ve seen those on one of the two XP x64 machines that I’ve been using for testing, so they don’t always pop up, but they may appear for you:


Error 2/3 actually just appears twice, but at a slightly different address. Luckily, all of those can be safely ignored. I have no idea what the GOG installer is doing that some Windows boxes just don’t like, but it won’t mess up the installation!

Now let’s try to run it:

2.) Windows XP 32-bit

Hint: Note that the trick shown here may also help for XP x64!

Running the game as-is on XP 32-bit resulted in the following error on my system:

Oxenfree Direct3D error

Oxenfrees’ Unity Engine 5 failing to render to Direct3D 9

The reason for this seems to be the bundled d3d9.dll, which is actually compiled for NT 6.0 (Vista), and won’t load on XP. Even when hacking that librarys’ header to support NT 5.2 (XP x64) or NT 5.1 (XP) with CFF Explorer, the same error would pop up (why? No idea). Instead of hacking it, just rename the file to make Oxenfree use the systems’ own Direct3D 9.0c library in %WINDIR%\system32\. Launching the game after that resulted in this:

Oxenfree running on Windows XP 32-bit

Oxenfree running on a German Windows XP 32-bit (click to enlarge)

There we go! Just in case this doesn’t help, and the game isn’t even launching at all, try to rename the dxgi.dll as well, an explanation follows below.

3.) Windows XP Professional x64 Edition

On XP x64, the game didn’t even show any errors for me at all, it would just instantly terminate, even if you patch all the libraries to NT 5.2 headers with CFF Explorer (this isn’t required actually, as you’ll see).

The primary problem on XP x64 is the DirectX Graphics Infrastructure library, so dxgi.dll. I don’t even understand why it was bundled with the game, as Oxenfree uses Direct3D 9, but DXGI is meant to work as a kind of glue layer between Direct3D 10, 11 and 12. More information [here] and [here]. DXGI can do some interesting things like making simple and faster full screen / windowed switches by calling SetFullscreenState() or like resizing windows with ResizeTarget(). The idea is probably that everything works the same way, no matter whether you’re using D3D 10, 11 or 12.

However, DXGI has nothing to do with Direct3D 9?! So just rename the dxgi.dll to something else and give it a shot, it should work just like that:

A 64-bit Oxenfree running on Windows XP x64

A 64-bit Oxenfree running on Windows XP x64 (click to enlarge)

Clearly, Oxenfree isn’t using DXGI for switching to its windowed mode or for window resizing. Everything works just as intended without that DLL.

In case you now get the Direct3D error shown for the XP 32-bit solution above, just rename the bundled d3d9.dll as well. I’ve seen the error appear on one of two XP x64 machines tested, and renaming the DLL worked just like it did for 32-bit XP too.

4.) Windows Vista

I have no real idea about Vista. There was one Steam user who reported the game breaking in a similar way to what I’ve seen on XP x64 however. You can read the thread [on the Steam forums], I’ve replied there yesterday as well.

I assume that the fixes described above with help with that as well though. I just can’t test it, as I don’t have a physical Windows Vista machine at the moment.

5.) What else?

I’m not sure what exactly the bundled xinput9_1_0.dll is for. Probably some DirectInput component of DirectX handling game controllers or something? No idea. Anyway, this can be safely renamed just like the others. You should have that library installed system-wide anyway, in %WINDIR%\system32\. There are more libraries that you’ll likely never need for the regular GOG version however. If you want, you can experiment with renaming or removing the following as well (at your own risk of course):

  • All files in Oxenfree_Data\Plugins\, but leave the Steam libraries alone if you have the Steam version of the game. Also, the 64-bit version puts an sqlite3.dll there. I’m not sure if the removal of that database DLL is safe, it’s untested.
  • GogGalaxyHooks.dll, as we don’t have the Galaxy client anyway.
  • steam_api.dll or steam_api64.dll for the 64-bit version. Again, leave those alone if you’re using the Steam version.

Never touch Oxenfree_Data\Mono\mono.dll though. That’s a critical part of the Unity3D engine itself, as it’s mostly written in .Net/Mono.

And with that, just play the game! :)

Oct 162017
Fraps logo

Does anyone still remember [Fraps]? It seems development has come to a halt in 2013, but it was once the standard tool for measuring frame rates in 3D games and programs under Windows. Also, of course, for recording in-game video footage. All that up to Direct3D 11 and any version of OpenGL. And while the latest (and probably last) version 3.5.99 still officially supports Windows XP, it was [recently brought to my attention]German flag that it throws the “not a valid Win32 application” error.

Since I’ve been using Fraps myself, I thought I’d take a quick look at this. After confirming the error, I looked at its binary files fraps32.dll, fraps64.dat, fraps64.dll, frapslcd.dll and fraps.exe with NTCores’ [CFF Explorer]. It was as expected, its platform target was set to Windows NT 6.0 (Windows Vista), which was why it refused to start on older operating systems.

So I patched the headers of the 32-bit files to a NT 5.1 target (Windows XP) and of the 64-bit files to a NT 5.2 target (XP x64, Server 2003):

Patching Fraps with CFF Explorer

Patching Fraps to a NT 5.1 platform target with CFF Explorer

And that’s all, because Fraps 3.5.99 is still fully API compatible to Windows XP. This basically proves, that choosing that NT 6.0 platform target was either a wrong decision on the developers’ side, or just a slip-up that went unnoticed because nobody’s testing this on XP any longer:

Running the binary-patched Fraps 3.5.99 on XP x64

Running the binary-patched Fraps 3.5.99 on XP x64 (Click to enlarge)

So much for that.

If you want to run Fraps 3.5.99 on XP, please install the [official version] first, and then unpack the following archive into your Fraps installation folder, overwriting all of the files there:

  • [Fraps 3.5.99], patched for Windows XP / XP x64 compatibility.

And no, I’m not going to build a complete installer with the patched files inside, because I’m far too lazy to do that! :roll:

I tested this briefly with 3DMark 2001 SE b330 on XP and XP x64 (I didn’t have anything better / more modern on the machine at hand right now), and it did indeed work, showing its fps counter just fine!

Fraps 3.5.99 measuring the frame rate in 3DMark 2001 SE under XP

Fraps 3.5.99 measuring the frame rate in 3DMark 2001 SE under XP. And no, I didn’t pick a good scene to snap, I know… (click to enlarge)

So that’s it, cheers! :)

Jul 122017
Windows XP dark age logo

I thought about writing something like this for a while now, so here it is. A list of games that don’t officially work on XP / XP x64, but still do. Either out of the box or by using some slight modifications or by using real binary hacks and stub DLLs. This list is by no means complete, it’s basically just the stuff I stumbled over. Some of the games will require slightly more complex solutions, for which individual guides already exist, either here or elsewhere. I won’t describe the procedures again, but just link to the corresponding information where necessary.

Where known, the game engine used by a title will also be listed, because games using the same engine can sometimes be persuaded to work in the same way.

Since my Anime (and Manga and visual novel) infection has already spread throughout my brain completely while creating fatal degeneration in the process, I had to split this article into four categories, to better suit peoples’ interests – 1 and 2 are almost the same though:

  1. Western games
  2. 64-bit games officially supported on XP x64
  3. Weird Japanese shit
  4. Visual novels (which by definition are often also weird Japanese shit)

Platform compatibility information was mostly taken from Valve Steam, so the operating system requirements specified here might not always match those listed at other websites selling those games.

I’m actually planning on keeping this list up to date as time progresses!

Updates (latest first):

  • 2018-01-29: “Amnesia: A Machine for Pigs” (thanks to [Humble] giving it away for free for a short time) and “WEED” have been added.
  • 2018-01-17: “Deep Space Waifu” incl. the “Academy” DLC has been added.
  • 2018-01-16: “The Red Solstice” has been added, thanks to [Humble] giving the game away for free for some time. Yay!
  • 2018-01-12: “Deep Space Waifu: Flat Justice” has been added.
  • 2017-12-21: “Oxenfree” and “SeaBed” have been added. Thanks to [GOG] for giving Oxenfree away for free for some time! :)
  • 2017-12-01: “The Bureau: XCOM Declassified” has been added, thanks to [Humble] giving the game away for free for some time. Thank you, Humble! :)
  • 2017-09-11: “Gal*Gun: Double Peace” / “ぎゃる☆がん だぶるぴーす” has been added.
  • 2017-09-05: “Ne no Kami” part 2 and “The last Birdling” have been added. Ren’Py version number added for “Fatal Twelve”.

Ok, let’s start:

1. Western Games

Here’s the normal stuff:

Amnesia: A Machine for Pigs logo

1a. Amnesia: A Machine for Pigs

Claims : Windows Vista
Developer & Engine: The Chinese Room; HPL Engine 2
Requirements: None; Runs out of the box on XP & XP x64.
Compatibility confidence: High; Only brief tests carried out, but confidence is still high based on experiences with the original Amnesia game, which was based on the same engine.
Genre: Survival Horror
Synopsis: See [Steam].
Notes: A successor to the original “Amnesia: The Dark Descent”. If we are to believe the user reviews, it doesn’t quite live up to the first part though.


"The Bureau: XCOM Declassified" logo1b. Bureau: XCOM Declassified, The

Claims: Windows Vista SP2
Developer & Engine: Irrational Games, 2K Games; Unreal Engine 3
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Tactical shooter
Synopsis: See [Wikipedia].
Notes: Interestingly, this title wasn’t developed by Firaxis like the new “Enemy Unknown” or its sequel “Enemy Within” (see below). As such, they didn’t copy Firaxis’ mistake of using file I/O API calls only present on Vista+. So no hacks required.


Dishonored logo1c. Dishonored

Claims: Windows Vista
Developer & Engine: Arkane Studios; Unreal Engine 3
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Several playthroughs on XP completed, likely no more development
Genre: First Person Rogue (Steampunk setting)
Synopsis: See [Wikipedia]
Notes: It’s a dark, very much steampunk, interesting parallel world setting. Features a world that changes subtly based on the characters’ actions. The sequel will no longer work on XP. Runs fine even with mid-range hardware from around 2015 or so.


Legend of Korra logo

1d. Legend of Korra

Claims: Windows Vista
Developer & Engine: PlatinumGames; In-house PlatinumGames Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Beat ’em up
Synopsis: See [Wikipedia].
Notes: It may look animeish at first, but is actually a US-made game.


Life is strange logo

1e. Life is strange

Claims: Windows Vista
Developer & Engine: Dotnod Entertainment; Unreal Engine 3
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Graphic adventure
Synopsis: See [Wikipedia].
Notes: It’s an episodic series, and I’ve only covered the first part.


Master of Orion (2016) logo

1f. Master of Orion

Claims : Windows 7 64-bit
Developer & Engine: NGD Studios; Unity Engine 5.2
Requirements: 64-bit; Will work on XP x64, but not on XP 32-bit, as it’s a true 64-bit binary.
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: 4X strategy
Synopsis: Not much to say here, it’s once again a turn-based game about conquering the galaxy.
Notes: This is about the 2016 version; A classic returns, well, at least almost. Requires fairly powerful hardware.


Mechwarrior Online logo

1g. Mechwarrior Online

Claims: Windows 7
Developer & Engine: Piranha Games; CryEngine 2.5 – 3
Requirements: Steam version; The regular game launcher won’t work.
Compatibility confidence: High; played for hundreds of hours, but there is a lot of active development, so the more distant future is rather uncertain, hence no “Maximum” confidence.
Genre: Tactical combat simulator
Synopsis: At the beginning of the clan invasion, the player – whether on the side of one of the Inner Sphere Houses or any of the Clans – is thrown into Battletech warfare.
Notes: They have just launched their new game launcher, which is now built with .Net 4.5.2, which doesn’t work on XP. So now, the only way is via the Steam platform. Until their single player title comes out, this is the latest and greatest from the Battletech universe, and it sticks to the canon rather strictly as well. Requires very powerful hardware even on XP, especially on the GPU side of things. Better use top end stuff. Note that it does automatically launch the 64-bit version when on XP x64.


Oxenfree logo

1h. Oxenfree

Claims: Windows 7
Developer & Engine: Night School Studio; Unity Engine
Requirements: GOG version without Galaxy or Steam version and a special launch condition; GOG Galaxy won’t work, so you need to download the regular Oxenfree from them. Steam version unconfirmed/untested. Requires renaming or removal of the files dxgi.dll and/or d3d9.dll. See the [full article] about making it work.
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs.
Genre: Mystery adventure
Synopsis: See [Wikipedia].
Notes: As said, I haven’t tested the Steam version, but my confidence in the modification working on the Steam version as well is pretty high, as the rest of the game should be the same. The GOG version even comes with Steam API libraries for some reason… The 64-bit version works on XP x64.


The Red Solstice logo

1i. Red Solstice, The

Claims: Windows 7
Developer & Engine: Ironward; TRSEngine
Requirements: Binary header hack; Platform target needs to be adjusted from NT 6.0 to 5.1 for several files and a stub DLL hack; Missing Win32 API / Kernel API function call, requires UncleVasyas’ (Oleg Ovcharenkos’) XP hack. See the [full article] about making it work.
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs.
Genre: Isometric tactical RPG
Synopsis: See [Kickstarter].
Notes: It’s an OpenGL ES 2.0 game, which kind of sets it apart from most I’d say. I have never seen a Windows game being based on an OpenGL ES API rather made for mobile devices using Android or iOS etc. before.


Stellaris logo

1j. Stellaris (also applies to: Europa Universalis 4, Hearts of Iron 4 and Crusader Kings 2)

Claims: Windows 7
Developer & Engine: Paradox Development Studio; In-house Clausewitz Engine
Requirements: Stub DLL hack; Missing Win32 API / Kernel API function calls, requires UncleVasyas’ (Oleg Ovcharenkos’) XP hack: [Link].
Compatibility confidence: Low; Haven’t tested this myself at all, as I do not yet own the game. However, given users’ reports and when looking at results when using Olegs’ patch on other games, this will very likely work just fine.
Genre: 4X strategy (Stellaris)
Synopsis: See [Wikipedia] (Stellaris).
Notes: May buy this in the future. Requires very powerful hardware, even on XP. Better get ready to use the fastest stuff XP / XP x64 can support in terms of CPU and GPU.


XCOM logo

1k. XCOM: Enemy Unknown (also applies to: XCOM: Enemy Within)

Claims: Windows Vista
Developer & Engine: Firaxis Games; Unreal Engine 3
Requirements: Stub DLL hack; Missing file I/O function calls that are available via Microsofts’ backported fileextd.dll. Required hacks by KawaiiSara (32-bit) and ScavengerSpb (64-Bit) described [here] for XCOM: Enemy Unknown and [here] for XCOM: Enemy Within.
Compatibility confidence: High; No full playthroughs, but played for several hours
Genre: Strategy
Synopsis: See [Wikipedia].
Notes: This was one of the early binary hacks for Games on XP. This is mostly just because the developer didn’t care about properly including fileextd.h, as well linking against and deploying fileextd.dll. Requires fairly current hardware.


2. 64-bit Games officially supported on XP x64

This is a special category for games that do support Windows XP – either only in its 64-bit incarnation, or with a specific port supporting the 64-bit version of the OS officially. Because of this, the “compatibility confidence” rating is being omitted.

Vities Skylines logo

2a. Cities Skylines

Claims: Windows XP x64 Edition
Developer & Engine: Colossal Order; Unity Engine 5.x
Requirements: 64-bit
Genre: Construction & Management Simulation
Synopsis: Build a huge freaking city, what else?
Notes: Requires powerful hardware, not matter which OS you’re using. Better prepare a fast multi-core CPU and a lot of RAM, like 8GB+.


X-Plane 10 logo

2b. X-Plane 10

Claims: Windows XP or Windows XP x64 Edition
Developer & Engine: Laminar Research; In-house X-Plane 10 core engine
Requirements: None; Runs out of the box on XP & XP x64
Genre: Flight simulator
Synopsis: Fly planes. Huh.
Notes: Depending on what you’re doing this might require a ton of CPU horsepower and 4GB+ of RAM. The sequel will no longer work on XP / XP x64 due to requiring a more modern Direct3D API.


3. Weird Japanese shit

Well, Japanese stuff is… different. Sometimes in good ways. Sometimes in bad ways. And sometimes in weird ways. Let’s go:

A Magical Highschool Girl logo

3a. A magical high-school girl / 魔法の女子高生

Claims: Windows XP / XP x64 (So why is this game listed here? See below, it’s basically a reversed case…)
Developer & Engine: illuCalab; Unity Engine 5.4
Requirements: None; Is partially broken out of the box on XP & XP x64 though.
Compatibility confidence: Low; Played for many hours and it works, but audio is broken and will likely remain in this state.
Genre: ARPG, somewhat rouge-like
Synopsis: See [Steam].
Notes: This is an oddball. It actually specifies Windows XP, but its audio component is built with .Net 4.5, which is not available on XP / XP x64. It still works, but without sound. If you still want to play this on XP, I’d suggest you prepare a good music playlist to run in the background. You’ll have to make the “swooosh”, “zap” and “booom” sounds by yourself though. ;) It’s actually a pretty intelligent game, where spellcrafting works via some AI code that interprets the spell names you type in when creating a new one. Fun fact: Naming a spell “Nagasaki” creates a fire bomb type spell. Talk about political correctness, heh…


Crush Crush logo

3b. Crush Crush

Claims: Windows 7 SP1
Developer & Engine: Sad Panda Studios; Unity Engine 5.4.1
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Clicker, Yuri
Synopsis: See [Steam].
Notes: It’s probably as bad as its logo suggests. While being a clicker you’re supposed to be able to flirt with or date girls, no idea. I only picked this up because it’s supposed to contain Yuri content (Girls Love). I might never really play this, but at least it’s free, so you got nothing to lose.


Deep Space Waifu logo
Deep Space Waifu: Flat Justice logo

3c. Deep Space Waifu + Academy DLC & Deep Space Waifu: Flat Justice

Claims: Windows 7 (Interestingly, the requirement for the DLC is “XP”)
Developer & Engine: Neko Climax Studios; Unity Engine 5.6.2f1
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Playthroughs completed without any issues whatsoever.
Genre: Topscroller Shoot ’em up
Synopsis: See Steam[Deep Space Waifu][Academy DLC][Flat Justice].
Notes: It’s seriously more “Strip ’em up” than “Shoot ’em up”, but who cares, the lewdness is fun! Secret hint: There is a “patch”… (…)


Gal*Gun: Double Peace logo

3d. Gal*Gun: Double Peace / ぎゃる☆がん だぶるぴーす

Claims: Windows 7
Developer & Engine: Inti Creates; Unreal Engine 3
Requirements: 64-bit; Will work on XP x64, but not on XP 32-bit, as it’s a true 64-bit binary.
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Bishōjo rail shooter
Synopsis: See [Steam].
Notes: Bought this on Steam on a -75% sale (taking the risk that it might no work), because it looked like some perverted fun. I might never play it though, as it really needs a game pad, and I suck with those. Well, I do still have my 3dfx/Interact Hammerhead FX, so maybe I’ll try some day. This game seems to work on XP x64 only by accident: It uses the Unreal Engine 3, but is compiled for 64-bit. Clearly, it was never originally intended to ever work on the OS, and was likely never tested on XP x64 either.


Hyperdimension Neptunia logo

3e. Hyperdimension Neptunia Re;Birth 1, 2 & 3 V Generation / 超次次元ゲイム ネプテューヌRe;Birth1, 2 & 3 V Generation

Claims: Windows 7 64-bit
Developer & Engine: Idea Factory, Compile Heart & Felistella; Sony PhyreEngine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: High; Played for quite a while without issues, no complete playthroughs though.
Genre: JRPG
Synopsis: See [Wikipedia].
Notes: Runs with OpenGL 3.3 if modern Direct3D isn’t present, which allows the 3D renderer to work on XP. All the other components are fine with DirectX 9.0c. The later Neptunia versions (basically all which are asking for Direct3D 11) dropped support for OpenGL, so any version asking for D3D11 should no longer work on XP.


Valkyria Chronicles logo

3f. Valkyria Chronicles / 戦場のヴァルキュリア -Gallian Chronicles-

Claims: Windows Vista
Developer & Engine: SEGA; CANVAS Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Strategy RPG
Synopsis: See [Wikipedia].
Notes: I should really play this! It seems to be a somewhat WW1/WW2ish game, and looks pretty good.


WEED logo

3g. WEED

Claims: Windows 7
Developer & Engine: CUTE ANIME GIRLS; Unity Engine 2017.2.0.4644257
Requirements: 64-Bit; Will work on XP x64, but not on XP 32-bit, as it’s a true 64-bit binary.
Compatibility confidence: Fair; Only brief tests carried out, no playthroughs
Genre: Match 3
Synopsis: See [Steam].
Notes: This is the first Unity Engine game covered that doesn’t come with a normal engine version number. The Unity Engine guys seem to have abandoned the old scheme with 5.6.2 for versioning based on years (and months?). Anyway, this version of Unity has [deprecated] 32-bit support on x86, so despite its simplicity and small size, WEED requires a 64-bit operating system – not that it would make any sense. I assume we will be seeing more Unity Engine titles that fail to work on 32-bit XP, but may still run on XP x64 in the future. It’s based on OpenGL 2.0 by the way, not on Direct3D. Also, this is likely not of Japanese origin, but I couldn’t quite find out where the developers come from. Could be Russia, since besides Facebook, they can also be found on the Russian [VK.com].


4. Visual Novels

Like “graphical novels”, these are crossovers between books and games, somewhat like those multi-branching adventure books for kids you might or might not know. VNs usually tend to require a fair amount of Japanophilia on behalf of the player / reader, at least sometimes. Most are distinctly Asian after all. There are two rough categories: 1.) Typical Visual Novels with a branching decision tree that allows the player to reach different story paths and endings and 2.) Kinetic Novels, that do not allow the player to make any choices, but instead focus on telling a single story as well as possible.

As all of them fall into a single genre (visual novel), the “Genre” part will be replaced with “Subgenre”, like “drama” or “Comedy” or something similar.

Let’s go:

Chusingura46+1 S logo

4d. ChuSingura46+1 S / 忠臣蔵46+1

Claims: Windows 7
Developer & Engine: inra; Unity Engine 5.4
Requirements: 64-bit; Will work on XP x64, but not on XP 32-bit, as it’s a true 64-bit binary.
Compatibility confidence: Fair; Only the first part has been tested, and only very briefly.
Subgenre: No idea. There are tons of Samurai girls, and that’s all I know.
Synopsis: See [Steam].
Notes: As said, only the initial free-to-play part has been tested, so I don’t know about chapters 2-5.


Chuusotsu First Graduation: Time after Time logo

4a. Chuusotsu – 1st Graduation: Time after Time / ちゅーそつ! 1st graduation

Claims: Windows Vista
Developer & Engine: Studio Beast; TVP(KiriKiri) Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; The game hasn’t been released at the time of writing, but brief tests have been done running the demo without problems so far. The release is expected some time in Q4 2017.
Subgenre: Cute Slice of Life, Sterile Dystopia with social commentary (afaik)
Synopsis: See [Kickstarter]
Notes: I actually backed this. I like this kind of “no personal freedom” kind of sci-fi setups, where certain individuals struggle with their lack of free choice or expression of opinion. This title might be a lot less serious though, I simply don’t know yet.


Fatal Twelve logo

4b. Fatal Twelve / フェイタルトゥウェルブ

Claims: Windows 7
Developer & Engine: Aiueo Kompany & Sekai Project; Ren’Py Engine (Python 2.7)
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; The game hasn’t been released at the time of writing, but like with Chuusotsu, brief tests have been carried out on the demo without problems. The release is expected on 2018-01-01.
Subgenre: Mystery, supernatural, Yuri
Synopsis: See [Kickstarter].
Notes: I saw it’s graphical style, and I knew I had to back this. It looks rather well made, visually at least. Should contain lots of Yuri elements, which is always a reason for buying pretty much anything!


Flowers -le Volume sur Printemps- logo

4c. Flowers -Le volume sur Printemps-

Claims: Windows Vista
Developer & Engine: Innocent Grey; unknown engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Full playthrough completed, several parts replayed.
Subgenre: Yuri Drama, Slice of Life
Synopsis: Our protagonist Suoh – which suffers from pretty intense social anxiety – changes schools, right into a classy christian, private all-Girls school. The story follows her finding her first friends (and more than that) as well as her opening up to the people around her.
Notes: No explicit stuff, so this is on the softer side of Girls Love. It does feature drama as well. Note that this is a longer VN, but still only the first part of a four-part series. Each part is supposed to represent a season – spring, summer, autumn and winter, both in actual time of the year as well as the maturation of the characters. Rather lengthy, ~20 hours. Part 2 will come out soon (likely this month), and will be tested immediately after release!


Kindred Spirits on the Roof logo

4e. Kindred Spirits on the Roof / 屋上の百合霊さん

Claims: Windows Vista
Developer & Engine: Liar-soft; Codex RScript Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Full playthrough completed.
Subgenre: Yuri, Slice of Life
Synopsis: Happens that for some reason our protagonist (a girl, like all characters here) is sensitive to the supernatural and hence manages to make contact with the two ghosts on the roof of the school. Those happen to have watched many a bad outcome when it comes to romances at the school, unable to intervene for decades. Now that they can talk to a living person for the first time, they’ve picked you to become their “tool” to “get those girls together”.
Notes: Does feature sex scenes, but they’re rare and not overly explicit. Its a longer Yuri VN, and despite having a few steamy moments, I’d still call this one “soft and sweet”. Gives you a good 20 hours of girls getting closer to girls!


The last Birdling logo

4e. The last Birdling

Claims: Windows XP, but also DirectX 10 (Huh?! How’s that gonna work?)
Developer & Engine: InvertMouse; Ren’Py Engine (Python 2.7)
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests completed, no playthroughs
Subgenre: Fantasy
Synopsis: A story of two members of opposing races of which one is about to become extinct, who become friends against all odds, and then have to hide / defend their friendship without enraging their respective peoples.
Notes: This is not actually Japanese, the developer is an Australian who’s lived in Hong Kong. I’m not sure if this is Yuri, but probably not, Yuri friendship at best? I do like stories, where people who’re supposed to be hating each other due to their upbringing become friends instead, and then start to defend that friendship. Should be interesting even without Yuri. The game doesn’t actually use any DirectX 10 resources, it renders to OpenGL and makes use of some DirectX 9.0c libraries.


Ne no Kami: The two Princess Knights of Kyoto logo

4f. Ne no Kami: The two Princess Knights of Kyoto / ねのかみ 京の都とふたりの姫騎士

Claims: Windows 7 / Windows Vista in the Readme file, noting that “XP may work, but it’s untested”
Developer & Engine: Kuro Irodoru Yimiji; Artemis Engine w. m-kz / iMel
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum for part 1; 1½ playthroughs completed, both the censored and uncensored versions have been extensively tested. Fair for part 2; Only brief tests completed, no playthroughs.
Subgenre: Yuri, Supernatural
Synopsis: Our girl – despite being the long-time love interest of a rather well-endowed certain someone that will become really important in this story – is being abducted by her own friend to become a wielder of ancient, divine powers that are meant to be used to battle forces once again threatening to invade the Earth from some demonic realm.

This game knows how to smear the borders between good and evil. The more you learn, the less clear it becomes which side is really in the right and which isn’t. I like that way of world building and story development. This game does feature one explicit scene, which I found to be rather annoying. You can still play the censored version though. The sequel should be nearly completed now, it had to be delayed due to the unfortunate death of one of the lead voice actresses. :(

Update: Part 2 has been released!


Nekopara logo

4g. Nekopara / ネコぱら

Claims: Windows Vista
Developer & Engine(s) NEKO WORKs; TVP(KiriKiri) Z v1.2.0.3 Engine for Vol.0-2, Ares CatSystem2 v2.32.2.426 Engine for Vol.3
Requirements: .exe unpack and binary header hack for the patches of Vol.1-2, Vol.3 itself needs an additional stub DLL hack on top of that, which is based on Oleg Ovcharenkos’ work for Stellaris, etc. When running the Steam version, Vol.3 also needs a Steamless hack to decrypt/unpack the SteamStub DRM so the stub DLL hack may be applied. The whole procedure from A to Z is documented [here]. Thanks fly out to Oleg for his help with Vol.3!
Compatibility confidence: High; No complete playthroughs through Vol.3 yet, but a lot of shorter test runs. Plus “I just have a good feeling about this” for some undefined reason. Vol.0-2 have a rating of Maximum.
Subgenre: Harem, dating simulator, Eroge
Synopsis: Tons of catgirls working in your bakery. Catgirls in heat (this turns into something very, VERY explicit, if you happen to have the uncensored version). Other than that, just cute catgirls that you can pet and play around with. Also: Minor character development.
Notes: This game will defile you. If you’re new to this stuff, it may redefine your understanding of how perverted Japanese shit can really be. Unless you play the pure, censored version.


Neko-nin exHeart logo

4h. Neko-nin exHeart / 猫忍えくすはーと

Claims: Windows 7
Developer & Engine: Whirlpool; YU-RIS Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Complete playthrough without hiccups
Subgenre: Supernatural
Synopsis: There were once powerful catgirl ninjas (don’t switch your brain on please, you really don’t need that piece of equipment here) serving their human masters, but no more. It seems nobody needs their personal kitty ninjas these days. Nevertheless, two of them just show up one day declaring they would serve you (heh, right) as their new master, while you weren’t even aware catgirls existed. Or ninjas. Or ninja catgirls.
Notes: It ain’t great, but it’s cute, even if rather short. Bought this out of frustration during a time where Oleg Ovcharenko hadn’t yet helped me with hacking Nekopara Vol.3.


Nurse Love Addiction logo

4i. Nurse Love Addiction / 白衣性愛情依存症

Claims: Windows 7
Developer & Engine: Kogado Studio; TyranoScript Engine (not sure if true, but binary analysis suggests it, it’s definitely built with Borland C++ at least)
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Complete playthrough without any issues
Subgenre: Yuri, Drama
Synopsis: Dragging her long-time friend along with her, our protagonist decides to become a nurse, hence entering a nursing school. But will she be ready for what she got herself into?
Notes: Don’t rush into this one thinking you’re going to get sweet, fluffy Yuri. This game looks like it, but it turns out to be quite dramatic and depending on how you approach the setting, it may hit you rather hard. Better keep that in mind, this VN is not as light-hearted or superficial as it may look on the surface. Easily goes on for 10+ hours as well.


Panzermadels logo

4j. Panzermadels

Claims: Windows Vista
Developer & Engine: DEVGRU-P; TyranoScript Engine
Requirements: Special launch condition; Works only when launched outside of Steam (with Steam still running in the background, you just have to click the .exe file directly instead of launching it from within the Steam client application).
Compatibility confidence: Maximum; Multiple complete playthroughs without any problems
Subgenre: Tank dating simulator (don’t ask…)
Synopsis: It’s so stupid, why don’t we just skip this?
Notes: The crown jewel of stupidity. You’re dating girls… who are tanks. I mean, in this game you can get court martialed for “doing sexual stuff with military equipment”. It’s still plenty of fun though, maybe because of it being so stupid. Just drink a beer or three while playing this and it’ll be fine! ;) Ah, by the way: This is not actually Japanese-made, the developers originate from the UK I believe. Also, this game was only meant as a short joke anyway.


Planetarian logo

4k. Planetarian ~The Reverie of a little Planet~ / Planetarian ~ちいさなほしのゆめ~

Claims: Windows Vista
Developer & Engine: Visual Art’s & Key; RealLive Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Maximum; Complete playthrough without problems
Subgenre: Postapocalyptic drama, Kinetic Novel
Synopsis: It’d be on the lengthy side, so see the [Wikipedia] instead.

I have not yet tested the newer “HD” version on Steam, which claims Windows 7, but only the regular version. The HD version will be tested in the future*. This is simply one of the best VNs I have ever played, despite it’s age and respectively lower visual quality. Its dark, hopeless and yet intriguing postapocalyptic world just draws you into this 2 character piece like few other VNs manage. Prepare your tissues however, this is a drama after all. Thumbs up for a VN that manages to do so much world building in such a short time (you’ll complete this in 3-5 hours).

*Update: …as soon as there is a version with English or German text. Currently it’s Chinese only.


SeaBed logo4l. SeaBed

Claims: Windows Vista
Developer & Engine: Paleontology; TVP2(KiriKiri) Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests completed, no playthroughs
Subgenre: Yuri, Drama
Synopsis: See [Steam].
Notes: A Yuri Novel probably more deep than the average. Deals with more serious things like memory loss and people having grown apart as well.


Season of 12 Colors logo

4m. Season of 12 Colors / 十二色的季节

Claims: Windows 7 SP1
Developer & Engine: Juziban; BK Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests completed, no playthroughs
Subgenre: Unsure, but not a drama? Seems to feature a slow, soft narrative…
Synopsis: See [Steam].
Notes: Rather untouched yet, I might play this in the not-so-near future. It’s supposed to have “healing” effects, so I guess it’s soothing to the mind.


Steins;Gate logo

4n. Steins;Gate

Claims: Windows 7
Developer & Engine: 5pb. Games & Nitroplus; Infinity Engine
Requirements: None; Runs out of the box on XP & XP x64
Compatibility confidence: Fair; Only brief tests completed, no playthroughs
Subgenre: Drama, time travel
Synopsis: See [Wikipedia].
Notes: Only the original DVD version has been tested, but not the Steam “HD” version. I haven’t really played this much yet, but it’s supposed to be one of the best visual novels ever. Remember how great the Anime was? It’s based on this game.


VA-11 HALL-A logo

4o. VA-11 HALL-A (“Valhalla”)

Claims: Windows 7
Developer & Engine: Sukeban Games; GameMaker C++ Engine
Requirements: Special launch condition; Requires the renaming or removal of the GameMaker engine component library GMResource.dll in the games’ root folder to execute without fatal errors. Works for all versions (original, Steam & GOG).
Compatibility confidence: Low; Only few tests completed, some basic gameplay, file I/O etc. The game does still reproducibly crash upon exit because something goes wrong with its use of Direct3D, which is by no means critical, but gives me a bad feeling about this. Really needs a playthrough to raise confidence.
Subgenre: Cyberpunk Dystopia, Yuri, Kinetic Novel
Synopsis: You’re a bartender girl in a dystopian cyberpunk world, taking good care of your patrons while listening to the stories they have to tell while drinking.
Notes: XP compatibility for this VN [was requested by Konstantin] in the comment section of the Nekopara Vol.3 hack. Well, barkeepers are cool, always wanted to play one in a game, because usually, you only meet them, but they’re never the stories’ protagonists. This title is supposed to have several Yuri characters as well, including yourself. I’m unsure how much drama there is though… Also: The game suggests you “get a drink and a few snacks” and chill out while reading / playing this – nice! :)


That’s it for now, but there might be more to come!

Jul 072017
Nekopara Vol.3 logo

1. Introduction

Of course I would never play something like Nekopara *cough*, so this is just a post describing a technical solution to a compatibility problem! Ok?! Good.

Yeah, it’s another one of those “something broke on XP / XP x64, so let’s fix it” articles. I’ve already been pla…  eh.. investigating Nekopara Volumes 0, 1 and 2, and while the developer claims it needs Windows Vista or higher, those titles worked just fine on XP and XP x64. The final Volume 3 however broke.

I wondered why, given they’re all pretty similar, so I started unpacking the .exe files, looking for information. What I found in the meta data was that Vol.0-2 have been using the TVP(Kirikiri) or maybe the forked [Kirikiri Z] game scripting engine, whereas Vol.3 swapped that for the [Ares CatSystem2] engine, for whatever reason. My assumption would be, that the CatSystem2 thingy was actually built for Vista+ for real, thus breaking XP compatibility. Plus, some other minor components are broken as well (some installers, patches, etc., just like the older volumes).

Now, I’ve already been talking to a guy called UncleVasya / Oleg Ovcharenko, who built a [stub DLL solution] for games based on the Clausewitz Engine (Europa Universalis 4, Hearts of Iron 4, Crusader Kings 2 and finally Stellaris), making it work on XP. It’s pretty similar to the XCOM hacks[1][2]. So I asked him about this one as well, and with quite some work and some additional (important) hints from him regarding the Steam version, I managed to make it run!

So, first things first: Thanks Oleg, you’re doing great work! :)

I will now show you how to make this visual novel / game work on XP x64 and XP, both for the slightly trickier Steam version (whether you choose to play the censored or the uncensored version doesn’t matter, the corresponding patch will be discussed as well), as well as the normal version.

Note: All screenshots in this post are 8-bit (256 color) PNG files. They may look a bit bad at times, but better than JPEG in the case of those specific images. Reason for not using truecolor PNG: 8-bit saves a ton of bandwidth.

2. How to make the non-Steam version work on XP / XP x64

Software required:

  1. [Nekopara Vol.3]
  2. [7-zip] archiver
  3. NTCore [CFF Explorer] (optional; only needed for patches)
  4. Olegs’ [patcher]

2a. The main game

First, buy the game and download it. Do not pirate it! You suck if you do (I actually fooled around with a pirated version as well, but only after buying the game). When running the installer, you’ll notice that it already breaks early on after invoking the launcher:

Nekopara Vol.3s' installer already breaks

Nekopara Vol.3s’ installer already fails to execute on XP

As you can see, it calls InitializeCriticalSectionEx(), which is a newer, Vista+ version of InitializeCriticalSection(), see the MSDN[1][2] for details. Since the new version works differently, you can’t just hex edit your way out of this one.

First, unpack Olegs’ patcher to some subdirectory of your choice. Then, unpack the Nekopara Vol.3 installer (the .exe file) into a subfolder using 7-zip, and look for a file called INSTALL.exe. Copy that file into the directory where Olegs patcher resides, so where files like xp_EU4_1.21.cmd and xp_Stellaris_1.6.cmd can be found.

Since the scripts from Oleg aren’t made for hacking our files, we’ll write a new one for this, let’s call it xp_installer.cmd. Edit that with a text editor, and add the following lines:

rundll32.exe zernel32.dll,PatchFile INSTALL.exe

Make sure xp_installer.cmd, zernel32.dll and the INSTALL.exe from Nekopara are in the same directory, then execute xp_installer.cmd. either by just double clicking it, or by opening a cmd terminal and by running it from there. Like this (you don’t need to run the extra commands, they’re just there to show you more information):

Olegs' patch doing its magic on INSTALL.exe

Olegs’ patch doing its magic on INSTALL.exe!

After that, rename your original INSTALL.exe in the directory where you unpacked the Nekopara Vol.3 installer, creating a backup file. Copy the following files from the patcher directory back to the installer directory: INSTALL.exe, zernel32.dll, z3d9.dll, zs2_32.dll and normaliz.dll. The “z” files are now implementing the missing functions, while redirecting all the others to the real Windows libraries like kernel32.dll, d3d9.dll, ws2_32.dll etc.

You don’t need to repack anything, just run INSTALL.exe directly, and you’ll no longer be greeted with an error message, but with this:

The installer works now

The installer works now, great

Install the game to a directory of your choice. Now, if you click the NEKOPARAvol3.exe in the directory where the game was installed, the same launcher comes up again, but now it allows you to configure and play the actual game instead of installing it…

Nekopara Vol.3s' launcher after installation

Nekopara Vol.3s’ launcher after installation

…or does it? Well, the “System settings” part’ll work, yes, but when clicking that alluring “Start” button, you’ll run into yet another wall:

Nekopara still won't execute due to GetTickCount64()

What now? GetTickCount64(), that’s what.

Guess which function call doesn’t exist on XP? See the MSDN[1][2] again. GetTickCount64() really is an improvement over GetTickCount(), but still, XP simply doesn’t have this either. As you can see from the title bar, the offending binary is cs2.exe, which is the actual game. We can get rid of the issue by using Olegs’ patcher again, so it’s the same process as with INSTALL.exe, just use this script instead, call it xp_cs2.cmd or something:

rundll32.exe zernel32.dll,PatchFile cs2.exe

Again, in case something goes wrong, rename your original cs2.exe before copying back the patched version with its .dll files. After copying back, you can run the game either by invoking cs2.exe directly, or by launching it from the NEKOPARAvol3.exe launcher:

Running the non-Steam version of Nekopara Vol.3 on XP x64

Running the non-Steam version of Nekopara Vol.3 on XP x64 (click to enlarge)

2b. Making patches work as well

Patches are essentially also just self-extracting archives that execute a launcher after unpacking. We’ll discuss the patch 11 in this case. Running it will produce a different kind of error (people who know the content restoration patches for the Steam version may have seen this error as well):

Nekopara Vol.3 patch failure

Nekopara Vol.3 patch failure, due to it not being “a valid Win32 application”.

This error means that the header of the binary is asking for a more modern platform. This may make sense, if the program really calls modern functions, but you know, there are modern applications that don’t ask for it and then fail with calls to things like GetTickCount64(), and there are programs which ask for a modern platform without ever having an actual need for it. The patchers are in the latter category of programs.

Unpack the patcher nekopara3_v11_update.exe using 7-zip, and look for a file called updater.exe. Create a backup copy of it, then open this file in NTCores’ CFF Explorer, and click on the “Optional Header” part. You’ll see something like this, I’ve marked the relevant lines with some red blocks for you:

updater.exe in CFF Explorer

updater.exe in CFF Explorer (click to enlarge)

The marked fields show values like 0006 and 0000, as you can see. The significant number is the last or rightmost, so 6 and 0. This corresponds to the platform target Windows NT 6.0, or in other words: Windows Vista. Just rewrite that to show the following numbers, then save the file:

Patch the header to NT 5.1

Patch the header to NT 5.1 (click to enlarge)

NT 5.1 (0005, 0001) equals Windows XP. Note that the kernel versions 5.0 mean Windows 2000, 5.2 means Server 2003 or XP x64 (slightly more modern). Again, no need to repack anything, just save the file after the modifications have been made and execute updater.exe afterwards, you should be getting this:

Nekopara Vol.3 non-Steam patcher working on XP

And here we have a working patcher (click to enlarge)

Yay! And now, for the Steam version of Nekopara Vol.3…

3. How to make the Steam version work on XP / XP x64

Software required:

  1. [Nekopara Vol.3] on Steam (a censored version)
  2. [Content restoration patch] (optional; only required if you have to do perverted things to the cat girls)
  3. at0ms’ [Steamless]
  4. A Windows Vista or newer machine (needed to run Steamless, can be a virtual machine)
  5. [7-zip] archiver
  6. NTCore [CFF Explorer] (optional; only needed for the content restoration patch)
  7. Olegs’ [patcher]

3a. The main game

First, buy the game on Steam and download it. If you really need the uncensored version (you probably do, heh?), buy the content restoration patch at Denpasoft and download that as well. Of course, running the game as-is won’t work, otherwise we wouldn’t need this article in the first place:

The Steam version of Nekopara Vol.3 breaks on XP as well of course

The Steam version of Nekopara Vol.3 breaks on XP as well of course, due to GetTickCount64() call, a newer and better version of GetTickCount(), see MSDN[1][2].

Now, what I didn’t get at first was that patching the Steam versions’ NEKOPARAvol3.exe can never work out of the box. The reason is, that the offending function calls aren’t plainly there for us to see – the actual game binary cs2.exe is encrypted and packed into a SteamStub binary as its payload data. This is a part of the Steamworks DRM system wrapping our program up.

To be able to patch it, we (unfortunately) need to crack its cryptographic DRM protection system first. Now, let me say this again: I do not condone piracy. Don’t fucking crack and distribute this game. You’re an ass if you do. Removing the DRM part is only being done so we can fix the game on XP, keep that in mind!

Well, let’s start; First, boot up a Vista or newer Windows, and install Steamless on it. I actually tried to compile Steamless for XP, but this is .Net 4.5.2 stuff. To make it work on .Net 4.0 would require modifications of its build files / source code, which is a bit over my head right now. So we’re stuck with needing a modern Windows OS to do this. Copy the problematic NEKOPARAvol3.exe from your Steam game installation directory over to that machine, or just install Steam and the game on the modern Windows OS as well (which is what I actually did).

Launch Steamless, open that .exe and decrypt / unpack it, Steamless will leave your binary alone, and create a new, fixed one, so you don’t need to create a manual backup copy:

Steamless cracking NEKOPARAvol3.exe

Steamless cracking NEKOPARAvol3.exe (click to enlarge)

Copy the fixed file back to XP, and rename it back to NEKOPARAvol3.exe. Create a backup of the original .exe in your Steam game installation directory, while you’re at it.

Unpack Olegs’ patcher in a directory of your choice, and move the NEKOPARAvol3.exe there as well, that’s where files akin to xp_EU4_1.21.cmd and xp_Stellaris_1.6.cmd can be found. Since those patcher scripts aren’t targeted at Nekopara Vol.3, we’ll write our own, call it xp_neko_3.cmd or something, open it in a text editor and enter the following lines:

rundll32.exe zernel32.dll,PatchFile NEKOPARAvol3.exe

Make sure that NEKOPARAvol3.exe, zernel32.dll and xp_neko_3.cmd are together in the same folder, then execute xp_neko_3.cmd either by double-clicking it, or by opening a cmd terminal and executing it from there. Like this:

Olegs' patcher handling the decrypted NEKOPARAvol3.exe

Olegs’ patcher handling the now-decrypted Steam version of NEKOPARAvol3.exe

Copy the fully fixed .exe back into the Steam game installation directory, together with the patchers’ stub libraries zernel32.dll, z3d9.dll, zs2_32.dll and normaliz.dll, which will handle the functions usually missing on XP.

Now, run the game either by executing NEKOPARAvol3.exe, or by launching it from within Steam, and you should be greeted with something like this:

Nekopara Vol.3 running on XP x64 in its Steam version

Nekopara Vol.3 running on XP x64 in its Steam version (click to enlarge)

Great (or something)!

Please be aware that if the binary is ever overwritten by Steam because of some update or whatever, you have to re-do the procedure, meaning the Steamless unpacking plus applying Olegs’ patch. If the game terminates without any error when launched from within Steam, try to run NEKOPARAvol3.exe directly instead, and you’ll see the error messages – Steam tends to suppress them.

3b. The content restoration patch (this also applies to the patches for Nekopara Vol.1 and Vol.2)

So you want to lewd the cat girls? Perverted! Plus, Windows XP / XP x64 won’t let you, because the patch is asking for a newer platform (despite not actually requiring it though):

Nekopara Vol.3 content restoration patch failure on XP

Nekopara Vol.3 content restoration patch failure on XP, due to the patch not being “a valid Win32 application”.

But if you absolutely have to, here’s how. Unpack the nekopara_vol3_Steam_R18DLC.exe you bought and downloaded from Denpasoft using 7-zip. Look for the file SteamPatch.exe, and open it in CFF Explorer:

The Nekopara Vol.3 Content restoration patchs' SteamPatch.exe in CFF Explorer

The Nekopara Vol.3 Content restoration patchs’ SteamPatch.exe in CFF Explorer

Now, this is similar to the procedure described for updater.exe for a non-Steam versions’ patch. The significant (rightmost) numbers in the fields where it days 0006 and 0000 represent Windows NT 6.0, or in other words Windows Vista. Since the patcher doesn’t really need any Vista-specific functions, we’ll just fix the header that is currently asking for a NT 6.0 platform as follows:

The Nekopara Vol.3 Content restoration patchs' SteamPatch.exe in CFF Explorer, fixed for XP

Change the fields to 5.1 (0005 and 0001 respectively) to have it check for XP+ instead, and it’s fixed!

Save the file after modifying it. Just like for the non-Steam version patches, there is no need to repack anything. Just run updater.exe directly, and you’ll now get this:

The Nekopara Vol.3 content restoration patch for the Steam version working on XP x64

The Nekopara Vol.3 content restoration patch for the Steam version working on XP x64. Because you’re in it for the Hentai.

There you go, pervert! You now have the fully restored version of Nekopara Vol.3 on Steam, running on XP or XP x64.

And last but not least: Thanks again, Oleg! I made you touch some weird shit, but you still fixed it and gave me the right ideas about the Steam version as well, yay! ;)

4. Bonus feature: How to make Mechwarrior Online work on XP / XP x64 after their launcher upgrade

While entirely unrelated to the weird Japanese shit above, I’ll just mention this here as well, because it doesn’t deserve its own post, given the simplicity of the “solution”; Piranha Games decided to give Mechwarrior Online (MWO) a new game launcher called “MWO Portal”, that is now built with .Net 4.5.2, just like Steamless, breaking it on XP. Mind you, the game itself would still work just fine, even the 64-bit version on XP x64.

The new MWOPortal launcher

Windows XP / XP x64 users will likely never see this launcher work on their OS (Unless ExtendedXP really takes off, it’s pretty good already, but yeah).

Since hacking .Net 4.5 stuff to run on .Net 4 / .Net 4 CP is not something I can do yet, MWO would be gone from all XP machines. There is an easy fix for this though:

Get the game on Steam! The Steam version doesn’t include the launcher, as Steam itself is handling both the execution and the updates of MWO. Without the launcher, MWO still works just fine! :)

Mar 132017
puTTY logo

Anyone who has logged in to a UNIX or Linux machine remotely coming from a Windows box probably knows puTTY, which is practically “the” SSH and telnet client for Windows. In conjunction with a small X11 server like Xming you can even do Remote X. To my surprise, a new version has been released just last month, as a colleague told me! So there is version 0.68 now, and it comes in both a 32-bit and a 64-bit flavor.

Of course I had to try the 64-bit version on XP x64, and it did fail to execute:

64-bit puTTY failure on XP x64

A classic: 64-bit puTTY failure on XP x64, because it’s “not a valid Win32 application”

Out of curiosity, I fetched the puTTY source code from [here], because I thought I could just compile & link it myself. Building for 32-bit proved to be relatively easy; Just load the corresponding solution file into Microsoft Visual Studio 2010, build the whole project, done. But I wanted 64-bit! So I created a x64 build target and gave it a shot, but it couldn’t find the _addcarry_u64 intrinsic.

After a bit of searching on the web, it became clear that the intrinsics header of Visual Studio didn’t provide it. It’s too old, you need Visual Studio 2013 or newer for that. Funny part is, puTTY only comes with project files for 2010 and 2012, how are they building their x64 version? No idea. Maybe they’re linking against a different library version or something.

One attempt that I was going to make (build it with VS2013, linking against an older platform SDK) isn’t done yet, because I need to prepare my Windows 7 VM for it. I did manage to compile and run puTTY as 64-bit code on XP x64 by hacking up their program though! In the unpacked source tree, open sshbn.h and take a look at line #70:

expand/collapse source code
  1. #elif defined _MSC_VER && defined _M_AMD64
  3.   /*
  4.    * 64-bit BignumInt, using Visual Studio x86-64 compiler intrinsics.
  5.    *
  6.    * 64-bit Visual Studio doesn't provide very much in the way of help
  7.    * here: there's no int128 type, and also no inline assembler giving
  8.    * us direct access to the x86-64 MUL or ADC instructions. However,
  9.    * there are compiler intrinsics giving us that access, so we can
  10.    * use those - though it turns out we have to be a little careful,
  11.    * since they seem to generate wrong code if their pointer-typed
  12.    * output parameters alias their inputs. Hence all the internal temp
  13.    * variables inside the macros.
  14.    */
  16.   #include 
  17.   typedef unsigned char BignumCarry; /* the type _addcarry_u64 likes to use */
  18.   typedef unsigned __int64 BignumInt;
  19.   #define BIGNUM_INT_BITS 64
  20.   #define BignumADC(ret, retc, a, b, c) do                \
  21.       {                                                   \
  22.           BignumInt ADC_tmp;                              \
  23.           (retc) = _addcarry_u64(c, a, b, &ADC_tmp);      \
  24.           (ret) = ADC_tmp;                                \
  25.       } while (0)
  26.   #define BignumMUL(rh, rl, a, b) do              \
  27.       {                                           \
  28.           BignumInt MULADD_hi;                    \
  29.           (rl) = _umul128(a, b, &MULADD_hi);      \
  30.           (rh) = MULADD_hi;                       \
  31.       } while (0)
  32.   #define BignumMULADD(rh, rl, a, b, addend) do                           \
  33.       {                                                                   \
  34.           BignumInt MULADD_lo, MULADD_hi;                                 \
  35.           MULADD_lo = _umul128(a, b, &MULADD_hi);                         \
  36.           MULADD_hi += _addcarry_u64(0, MULADD_lo, (addend), &(rl));     \
  37.           (rh) = MULADD_hi;                                               \
  38.       } while (0)
  39.   #define BignumMULADD2(rh, rl, a, b, addend1, addend2) do                \
  40.       {                                                                   \
  41.           BignumInt MULADD_lo1, MULADD_lo2, MULADD_hi;                    \
  42.           MULADD_lo1 = _umul128(a, b, &MULADD_hi);                        \
  43.           MULADD_hi += _addcarry_u64(0, MULADD_lo1, (addend1), &MULADD_lo2); \
  44.           MULADD_hi += _addcarry_u64(0, MULADD_lo2, (addend2), &(rl));    \
  45.           (rh) = MULADD_hi;                                               \
  46.       } while (0)

I just commented out the entire codeblock using that modern _addcarry_u64 intrinsic, and replaced it with the code being used for the 32-bit version:

  1. #elif defined _MSC_VER && defined _M_AMD64
  3.   /* 32-bit BignumInt, using Visual Studio __int64 as BignumDblInt 
  4.    * This is compatible with VS2010 & VS2012 for building a x86_64
  5.    * version of puTTY (no __int128 with those compilers).
  6.    */
  8.   typedef unsigned int BignumInt;
  9.   #define BIGNUM_INT_BITS  32
  10.   #define DEFINE_BIGNUMDBLINT typedef unsigned __int64 BignumDblInt

I built that and it works, even though I keep thinking I should be using a wide 128-bit data type here (just like the original x64 code), but then we don’t have __int128 in MSVC before 2013, and I’m on 2010. And I don’t know how to use SSE registers in that context with things like __m128, which is why I left it alone. Looking good anyway:

puTTY 64-bit XP x64 version logged in to Windows 2000

puTTY 64-bit XP x64 version logged in to Windows 2000 using a modern SSH server (click to enlarge)


puTTY 64-bit XP x64 version logged in to FreeBSD 10.3 UNIX

puTTY 64-bit XP x64 version logged in to FreeBSD 10.3 UNIX (click to enlarge)

In any case, here is a complete 64-bit build of puTTY that works on NT5.2 operating systems like Windows XP Professional x64 Edition or Windows Server 2003 x64:

  • [puTTY 0.68][1] (x64 version for NT5.2, portable without installer)

Maybe I’ll try to build a version with VS2013 on Windows 7 for the same platform target, we’ll see. But at least this works!

Oh and… No, I don’t really think anyone actually needs a 64-bit version of puTTY ;). Plus the 32-bit one works just fine on XP x64 / Server 2003 out-of-the-box anyway. But hey… You know… :roll:

[1] puTTY is © 1997-2017 Simon Tatham and is licensed under the MIT license

Mar 082017
Firefox ESR dark logo

1.) The end is near for modern browsers on XP and Vista

After Google had stopped supporting Windows XP with Chromium 50.0 (Blink engine 537.36 & JavaScript V8 engine 5.0.71), I wondered for how much longer projects depending on it would last on the old OS. Unsurprisingly, they started dropping XP / XP x64 pretty quickly as well, like Vivaldi, Iron or the new Opera to name a few. Firefox kept support alive however, but of course, the end was looming over our (=XP users’) heads all that time, and now the decision finally has been made!

Mozilla Firefox will cease to support Windows XP, Windows XP x64 Edition and all editions of Windows Vista starting with version 53. If you’re still on 51.0.1, you’ll be provided with not just one, but two consecutive updates:


The reason for this is, that the first update just switches your update channel from “Release” to “ESR” (Extended Support Release). ESR versions are also typically present on Enterprise Linux systems like for instance RedHat Enterprise Linux 5 and 6, etc. After a quick restart, the browser will offer the real, final version for XP: Firefox 52.0 ESR.

After the update, the first thing you get to see is the notification of support ending for Windows XP and Windows Vista:

Firefox is notifying the user of how Vista & XP are no longer going to be supported

Firefox is notifying the user of how Vista & XP are no longer going to be supported (click to enlarge)

A quick check confirms it: This is now Firefox 52.0 ESR:

Firefox 52.0 ESR reporting is version

Firefox 52.0 ESR reporting is version (Click to enlarge)

According to the [Mozilla foundation], security updates will be provided for XP/Vista up until September 2017, and the actual, exact EOL date will be fixed mid-2017.

After that, there will no longer be any modern browser support for XP (NT 5.1), XP x64 & Server 2003 (NT 5.2) as well as Vista and the first edition of Server 2008 (NT 6.0). That is, unless somebody provides patched builds, but I don’t think that’s gonna happen…

2.) Electrolysis / e10s

On top of that, I have reevaluated the functionality of Mozillas’ multiprocessing technology on Windows XP x64 Edition. I tried that before with some 50.x version and failed to have Firefox spawn multiple processes for multiple tabs. This is a feature that makes Firefox more crash-proof and faster as well. I’m happy to announce that it does work with Firefox 52.0 ESR though!

Of course, this is not officially supported, not on XP / XP x64, nor on Vista. So force-enabling Electrolysis can only happen at your own risk! To enable the feature, open about:config, confirm the prompt, and then change the following properties as shown, create them manually if they don’t exist yet:

browser.tabs.remote.autostart     [boolean]   true
browser.tabs.remote.force-enable  [boolean]   true
extensions.e10sBloc­kedByAddons    [boolean]   false
extensions.e10sBloc­ksEnabling     [boolean]   false
dom.ipc.processCount              [integer]   16

You need to be a bit careful with dom.ipc.processCount however; Each Firefox process might consume hundreds of megabytes, and with that property set to 16, Firefox can spawn a total of 17 processes, 1 master process and 16 child processes (=tabs). So tune that value to something your machine can take! If you spawn to many processes on a machine with just 2GB or 4GB of memory, you might run into swapping rather quickly!

Also, you need to test this with your plugins and extensions! Not every plugin / extension will play nicely with e10s! In some cases the browser may even crash completely, or have individual tabs crash. You have been warned!

To test this, open about:support and look for Multiprocess Windows. Depending on how many browsers you have launched, it should show something like 1/1 (Enabled by user) or 2/2 (Enabled by user). Or, just open multiple tabs, load web sites in them (yes, you have to) and watch Firefox spawn additional processes in Task Manager:

Firefox spawning processes on XP x64 thanks to Electrolysis having been force-enabled

Firefox spawning processes on XP x64 thanks to Electrolysis having been force-enabled

And that’s it! Enjoy your security updates for a while longer, and then welcome Firefox into the mausoleum that is Windows XP! :) It might be the last browser you’ll ever use on that platform…

Feb 242017

1.) Introduction & Explanation

This is one thing that has brought to me by two users ([SK1] on [Voodooalert]German flag and [liquidLD] who talked to me about this on IRC), and because I got a bit pissed off by it myself, I decided to look into the matter. Basically, HTML5 video on Windows XP / XP x64. But not just with webm (VP8/VP9), but also with H.264/AVC. Let’s face it, a lot of videos on the web rely on H.264 and sometimes you simply can’t watch certain videos or you won’t get all the available resolutions. Of course you could just rely on Adobe Flash, but since Google basically took over with their Pepperflash plugin and their Chrome browser no longer supports XP, it’s not the best move either. Especially when you think about Adobes’ history with critical security loopholes in Flash. HTML5 is just much, much safer, and free as well, and Firefox still supports XP.

Note that this guide is thus based on Firefox exclusively. Anything starting with version 47 should work, official support came in 49, and I’ll be using the current version, 51.0.1 at the time of writing.

So, why doesn’t it “just work” in the first place? It did a few years back, right? Because H.264 playback relies on a DRM plugin, on Linux it would be the Google Widevine plugin, on Windows it’s the Adobe Primetime plugin. So yes, Firefox does support DRM out of the box. But even if content isn’t signed and encrypted, the browser still relies on those plugins to play H.264. And the problem is, that Adobe found some problems with that plugin on XP, so they disabled support on the platform. Their version 17 plugin is still being rolled out with the browser however, and it is binary-compatible with XP, so let’s show you how to re-enable it!

2.) Making it work

On Windows XP and XP x64, the plugin should reside in the folder:

%USERPROFILE%\Application Data\Mozilla\Firefox\Profiles\<your profile folder>\gmp-eme-adobe\17\

That folder should contain the files eme-adobe.dll, eme-adobe.info and eme-adobe.voucher. If it doesn’t (maybe because you have a DRM-free version of Firefox), just create the folder structure yourself, get the necessary files from [here] and place them in that folder.

Having the files present won’t enable Adobe Primetime for you however as you can see on about:plugins (Note: The Cisco stuff you can see there is just for WebRTC, so it’s unusable for HTML5 <video>), we still need to tweak a few things on the about:config page of Firefox. Look for the following properties and set them to the values shown below. If a property doesn’t exist yet – media.gmp-eme-adobe.forceSupported most likely won’t – just create them yourself, all of them are boolean properties and all of them need to be set to true:

media.gmp-eme-adobe.enabled		true
media.gmp-eme-adobe.forceSupported	true
media.gmp-eme-adobe.visible		true
media.gmp.decoder.enabled		true
media.eme.enabled			true
media.mediasource.mp4.enabled		true
media.mp4.enabled			true

After making those changes, you’ll need to restart Firefox. Now you might already be good to go, but on some configurations, about:plugins might show something like this:

HTML5+H.264 on Firefox not yet working

Adobe Primetime seems enabled, but there is no file information? So it’s not actually loading the eme-adobe.dll yet (click to enlarge)

If that happens, open your preferences menu on the top right, click on “Add-ons”, then “Plugins” or just go to about:addons. What you should be seeing is this:


However, if Adobe Primetime shows a notice saying that it’s going to be “installed shortly”, forget it. Just do it manually on the plugins’ options page you can see on the right image. To do so, click “Check for Updates”. The warning should be gone momentarily. After that, re-check about:plugins, and you should be getting this:

Adobe Primetime fully enabled

Adobe Primetime fully enabled (click to enlarge)

3.) Testing

Now you can do a quick check on the [Youtube HTML5 page], and it should confirm that everything’s working:

Youtube confirming full HTML5 video support

Youtube confirming full HTML5 video support including H.264 and Media Source Extensions (click to enlarge)

With MSE, even Javascript players (like the Flowworks player) bytestreaming H.264 to Firefox should work! Of course, that’s not very thorough. What you’d want is a real playback test, since you can never be sure what you’re getting on Youtube without a bit of extra work. Decent playback tests are currently available on [Quirksmode], and it should look like this:

Firefox playing HTML5 H.264/AVC video in Firefox on Windows XP x64

Firefox playing HTML5 H.264/AVC video on Windows XP x64 (click to enlarge)

With this, even stuff like Netflix works, because you’re getting not just H.264 playback, but also DRM support. Now, whether DRM support is a good thing or not… You’ll have to decide that for yourself. I’m not supportive of DRM content on the web, but if you want to view or listen to such content, you can!

Just one last word of warning though: Adobe has ended their support for XP with a reason, as the Primetime content decryption plugin has shown problems and instabilities on XP! I’ve been using this for about a week now, and I’ve had one case of a video getting stuck, which is a typical symptom of Primetime throwing up on you. Don’t worry though, Firefox won’t crash. Just move the video slider a bit or restart the video, and it’ll work again! You don’t even need to restart the browser, and such occurrences seem to be quite rare, so I’m fine with it.

There you go!

4.) Thanks

Big thanks fly out to [the guys at MSFN] who came up with all of this. I basically got 100% of my information from them, so thank you! You rock! :)

Update: If you update your version of Firefox to the latest and final 52.0 ESR (extended support release), the last version which will be officially supported until 09-2017 for XP, you might notice that Adobe Primetime just disappeared after the update. That’s because the installer may delete the property media.gmp-eme-adobe.visible from your prefs.js. To reenable it, you’ll have to manually recreate the boolean property and set it to true:

media.gmp-eme-adobe.visible		true

Restart Firefox after the change, and the plugin should reappear on about:plugins and about:addons!

Update 2: It seems there is an issue with fresh installations of Adobe Primetime when using Firefox 52.x ESR instead of Firefox 51.x ESR, as reported by [Newb the Newbd]. The solution is to open the URL about:config in Firefox once more and look for media.gmp-manager.url. Its value should look something like this: https://aus5.mozilla.org/update/3/GMP/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml. Edit that configuration option and replace the variable %VERSION% with the string 51.0 to fake an older Firefox version. Now check for updates for Adobe Primetime in the plugins section of about:addons. It should install and start working properly now!

Nov 142016
HP/Compaq nx6310/nc6320 logo

A good while back, I got a free notebook from [The_Plague]German flag, a HP/Compaq nx6310[1][2] which he kinda pulled out of the trash at his company. It’s not exactly “Thinkpad T23” material, but it’s a pretty solid, well-built machine with a good keyboard. I’ve been using the thing as an operating system testbed for a while (Linux, ReactOS, Haiku OS, OpenBSD, Dragonfly BSD, and finally: FreeBSD UNIX). After settling for FreeBSD the machine clearly showed its limitations though, the most problematic being imposed by the very low-end i940GML chipset. That one has limited the machine to a single processor core and a 533MHz data rate FSB.

I did give the machine a Core Duo T2450, but switching dual core on in the BIOS results in a lockup at POST time. Also, the chipset cannot use dual-channel DDR-II and limits the user to 2GiB of memory, making the use of a 64-bit processor rather pointless. Which turned out to be bad, because some code doesn’t even provide full functionality for 32-bit anymore, like x265, which dropped deep color support on 32-bit architectures.

But now, The_Plague pulled another one out of the trash, it’s basically the exact same machine, but a higher-end model, the nc6320. This one has an i945GM chipset, which means dual core support, FSB667 and 4GiB dual-channel RAM capability! It came with a Core 2 Duo T5600 @ 1.83GHz with 2MiB L2 cache. I ordered the largest possible chip for this box from ebay Hong Kong, so now it has a Core 2 Duo T7600 @ 2.33GHz with 4MiB L2 cache. Also, 2×2=4GiB of DDR-II/667 CL4 are on their way already, together with a 12-cell secondary monster battery!

And of course, FreeBSD UNIX again, in its brand new version 11.0-RELEASE:

HP/Compaq nc6320 running FreeBSD 11.0 UNIX

HP/Compaq nc6320 running FreeBSD 11.0 UNIX (click to enlarge)

The CPU upgrade is actually even noticeable when browsing the web, lots of resource-hungry Javascript and CSS3, you know. Luckily, Chromium supports hardware acceleration on the Intel GMA950 GPU on FreeBSD, as the OS comes with a kernel modesetting compliant driver for almost all integrated Intel graphics chips. It’s too slow to do the rasterization stage on the GPU, but it still helps.

Once again, it shall serve mostly as a meeting and sysadmin machine, with a little bit of private-use-fun added on top. Let’s have a look at the software! Oh and by the way, I decided to make the screenshots 8-bit .png images, so some of them will look a bit bad. But still better+smaller than JPEG for that purpose:

Running screenfetch on the nc6320

Running screenfetch on the nc6320 (click to enlarge)

$ screenfetch is showing us some details about the machine, which also makes it clear that everything is “Tokisaki Kurumi”-themed. Since there’s a lot of red color on that girls’ garments it seems at least somewhat fitting for a FreeBSD machine.

Chromium with FVD Speed Dial

Chromium with FVD Speed Dial (click to enlarge)

I’m a [Vivaldi] fan personally, but that browser isn’t available on any BSD yet, so I installed a few extensions to make Chromium work somewhat like Vivaldi; The most important part being the static FVD speed dial you can see above. What you can’t see here are the other extensions that followed it: AdBlockPlus and Ghostery. I hear there are better/faster solutions than ABP for ad blocking these days however, so maybe I’ll revise that.

IBM Lotus Notes via wine 1.8

IBM Lotus Notes 6.5.1 via 32-bit wine 1.8.4 (click to enlarge)

Also, for work I would sometimes need IBM Lotus Notes, as it’s our Universities’ groupware solution (think of that what you will). While I couldn’t get the Linux version to run, our Domino servers still accept connections from older clients, so it’s Lotus Notes 6.5.1 running under a 32-bit [wine], which is a solution IBM officially recommended for running the software on Linux/UNIX a few years ago. And yeah, it still works. And if you have Windows software wine can’t cope with?

XP x64 via VirtualBox on FreeBSD

XP x64 via VirtualBox on FreeBSD (click to enlarge)

For anything that wine can’t handle, the VirtualBox port kicks in, as we can see here. Together with the CPUs VT-x extension and the guest tools, virtualizing Windows on FreeBSD UNIX works relatively well. Not all features are there (like USB passthrough), but it works ok for me. Will need a Windows 7 VM as well I think.

More stuff:

Communicating on FreeBSD

Communicating on FreeBSD (parts are censored, click to enlarge)

One important part is communication! Luckily, there is a version of licq in the ports tree now. It builds well together with its Qt4 UI, so no complaints there. Hexchat for IRC access is also available, but the tricky part was Skype; Not that I really need it, but I wanted to have the linuxulator up and running as well! For those of you who don’t know what the “linuxulator” is: It’s a series of kernel modules that extend FreeBSDs kernel with parts of the Linux kernel interface. On top of that, you can pull parts of Fedora 10 or CentOS 6.8 or some CentOS 7 Linux userspace components from the package servers. Together with the kernel modules those form a kind of runtime environment for executing Linux programs – Skype 4.3 in this case! So I have both wine and linuxulator ready for action, and with it access to ICQ, Jabber, MSN, IRC and Skype. Now, what about multimedia?

Multimedia on FreeBSD

smplayer and xmms on FreeBSD, unfortunately the 8-bit color is a bit too noticeable for this screenshot, my apologies (click to enlarge)

This is a part where the upgraded processor also helps. Here we can see (s)mplayer play the last episode of the Anime Hanayamata in taxing 2.5Mbit H.265/HEVC encoding, paired with AAC-LC audio. The Core 2 Duo T5600 had some issues with this, but the faster T7600 shows now problems. Additionally, xmms is playing a Commodore 64 SID tune using libsidplay2 and the reSID engine. xmms comes with a lot of funny plugins from the FreeBSD ports tree for Gameboy tunes or NES tunes, but the C64 one you need to compile for yourself. Not too hard though, you can fetch libsidplay2 and reSID from packages beforehand to make things easier! What else?


ioquake3, a cleaned up version of the Quake III Arena source code, here in its 64-bit FreeBSD build (click to enlarge)

A pretty fun part: Playing the native Quake3 port [ioquake3] in 64-bit, for whenever you just need to shoot something to blow off some steam. ;) I have to say, I had to tweak it quite a bit to run fluently on the WVA 1400×1050 display of this book given the weak GMA950 GPU, but it runs “rather ok” now. ioquake3 is also available for Windows, OSX and Linux by the way, including a more advanced OpenGL 2 renderer, which gives users access to some advanced graphical effects. And if I get bored by that…

HakuNeko Manga ripper and qComicbook

HakuNeko Manga ripper and qComicbook showing some sweet girls love! (click to enlarge)

Once again, fixing up HakuNekos’ build system and C++ code to work with FreeBSD properly took some time. Unfortunately there is no port for it yet (and I’m too stupid/lazy to create one), so you have to fix it by hand. Lots of replacing sed invocations with gsed, find with gfind etc. and the OS #ifdef parts, which need to be changed in several .cpp files, here’s an example from MangaConnector.cpp:

  1. #ifdef __LINUX__
  2. wxString MCEntry::invalidFileCharacters = wxT("/\r\n\t");
  3. endif

Something like that needs to turn into this to compile on FreeBSD, otherwise you’ll end up with a HakuNeko that can’t do shit (it’ll still compile and run, but like I said, it’d be devoid of function):

  1. #if defined __LINUX__ || __FreeBSD__
  2. wxString MCEntry::invalidFileCharacters = wxT("/\r\n\t");
  3. endif

This is true for the latest version 1.4.1 as well. I guess the modifications should also apply to other operating systems by adding things like __OpenBSD__ or similar.

Now all that’s left is to wait for that massive 12C battery, the RAM capacity+speed upgrade and some FreeBSD case sticker that I ordered from [unixstickers.com] (hint: That’s a referral URL, it’s supposed to give you some $5 coupon upon ordering, I hope it works). Upon my order, a small part was donated to the LLVM project – very fitting, given that I’ve used clang/llvm a lot to compile stuff on FreeBSD as of late. :)

FreeBSD case sticker (preview)

This is what it’s supposed to look like, and it’s going to replace the current Windows XP+Vista sticker

I hope it’ll look as good in real life! :) Ah, I think I’m gonna have a lot of fun with that old piece of junk. ;)

Ah, and thanks fly out to The_Plague, who saved this laptop from the trash bin and gave it to me for free! Prost!

Edit: And the memory is here, two G.Skill “performance” modules doing 4-4-4 latencies at 667MHz data rate, replacing a single Samsung module running 5-5-5. Now I was interested in how much going from single channel CL5 to dual channel CL4 would really affect performance. Let’s just say, it didn’t do too much for CPU processes. However, the effect on the integrated GMA950 GPU (using shared system memory!) was amazing. It seems the graphics chip was held back a lot by the memory interface! Let’s have a quick look at Quake III Arena performance using a quickly recorded demo just for this purpose (ioquake3 can’t play old Quake III Arena demos like the “001” demo):

  • ioquake3 1.36, single channel DDR-II/667 CL5:
  • 30.6fps
  • ioquake3 1.36, dual channel DDR-II/667 CL4:
  • 41.2fps

Roughly +35%!!

Tests were run three times, then three more times after a reboot. After that, an average was taken. For ioquake3 this wouldn’t even have been necessary though, as the results were extremely consistent. It’s amazing how much the added memory speed really affects the game engine! I rebooted and re-ran the tests several times because I couldn’t believe in that massive boost in performance, but it’s actually true and fully reproducible! This reminds me of how well modern AMD APU graphics chips scale with main memory speed and it explains why people were asking for quad-channel DDR4 on those Kaveri APU chips. Its built-in Radeons would’ve probably loved the added bandwidth!

I also kinda felt that browsing web sites got a lot more smooth using Chromium with most of its GPU acceleration turned on. So I tried the graphics-centric browser test [Motionmark] to put that to the test. Parts of the results were inconclusive, but let’s have a look first:

  • Motionmark 1.0 (medium screen profile), single channel DDR-II/667 CL5:
  • Overall result: 13.85 ±22.24%
  • Multiply: 119.26 ±2.95%
  • Canvas Arcs: 19.04 ±68.48%
  • Leaves: 3.00 ±133.33%
  • Paths: 85.30 ±6.57%
  • Canvas Lines: 1.00 ±0.00%
  • Focus: 1.76 ±5.22%
  • Images: 40.58 ±2.56%
  • Design: 18.89 ±8.00%
  • Suits: 24.00 ±37.50%
  • Motionmark 1.0 (medium screen profile), dual channel DDR-II/667 CL4:
  • Overall result: 22.47 ±15.93%
  • Multiply: 124.55 ±1.60%
  • Canvas Arcs: 26.00 ±138.46%
  • Leaves: 65.90 ±16.93%
  • Paths: 37.00 ±16.89%
  • Canvas Lines: 1.00 ±0.00%
  • Focus: 2.00 ±50.00%
  • Images: 41.58 ±3.59%
  • Design: 24.49 ±2.35%
  • Suits: 90.65 ±13.55%

Now first things first: This was just my first pick for any kind of graphics-heavy browser benchmark. I thought I needed something that would make the browser do a lot of stuff on the GPU, given that hardware acceleration was almost fully enabled on FreeBSD UNIX + Chromium + GMA950. However, after repeated runs it showed that the variance was just far too high on the following tests: Leaves, Paths, Suits. Those would also mess up the overall score. The ones that showed consistent performance were: Multiply, Canvas Arcs, Canvas Lines, Focus, Images, Design, so we should focus on those. Well, not all of those tests show promising results (Multiply, Canvas Lines), but some clearly do. It seems my feeling that parts of CSS3 etc. had gotten faster after the memory upgrade was spot-on!

Not bad, not bad at all! And tomorrow morning, the [x264 benchmark] will also have finished, showing how much a classic CPU-heavy task would profit from that upgrade (probably not much, but we’ll see tomorrow).

Edit 2: And here is the rest. Like I thought, the memory upgrade had only minimal impact on CPU performance:

  • x264 benchmark, single channel DDR-II/667 CL5:
  • Runtime: 04:40:08.621
  • x264 benchmark, dual channel DDR-II/667 CL4:
  • Runtime: 04:38:23.851

So yeah it’s faster. But only by a meager +0.62%. Completely negligible. But it’s still a good upgrade given the GPU performance boost and the fact that I can now use more memory for virtual machines. :)

Ah, and here’s the 12-cell ultra capacity battery, which gives me a total of 18 cells in conjunction with the 6-cell primary battery:

Nice hardware actually, you can check it’s charge (roughly) with a button and a 4-LED display, and it has it’s own charging plug. What surprised me most though was this:

$ hwstat | grep -i -e "serial number" -i -e battery
[ACPI Battery (sysctl)]
        Serial number:                  00411 2006/10/12
        Serial number:                  00001 2016/07/29

That probably explains how a still sealed battery could come with a ~25% pre-charge. Manufactured in July 2016, wow. And that for a notebook that’s 10 years old? Ok, it’s an aftermarket battery by [GRS], but that’s just damn fine still! With that I’ll surely have enough battery runtime to make it through longer meetings as well! :)

Edit 3: And today I used the notebook for a sysadmin task, helping our lead developer in debugging a weird problem in a Java-based student exam submission and evaluation system of ours at work. I suspected that the new CuPPIX (=KNOPPIX derivative) distribution I built for this was to blame, but it turned out to be a faulty Java library handling MySQL database access, hence crashing our server software under high parallel loads. In any case, I had the nc6320 with me during the entire morning up until 12:30 or so, walking away with a total charge of 49% left after the developer had fixed the problem. Not stellar given a total of 18 cells, but definitely good enough for me! :)

Edit 4: And my FreeBSD sticker from unixstickers is finally here! They even gave me a bunch of random free stickers to go with it! I gave those to some colleagues for their kids. ;) And here it is:

FreeBSD sticker from unixstickers.com

There was a Windows Vista/XP sticker before, now it shows some UNIX love! (click to enlarge)

The sticker shows some pretty good quality as well, nice stuff! :)

Aug 052016
VirtualDimension logo

Short story: It’s [VirtualDimension].

Long story… It’s most definitely not what Microsoft added in Windows 10. Besides it being limited to Windows 10, it just sucks for a multitude of reasons. And there I was, having hopes for it as well… If you’ve ever used multiple desktops on a graphical, X11-based Linux or UNIX window manager / desktop environment, you’d know what I’m talking about. Usually, what you’d get on those systems, whether KDE, Gnome, Xfce4, LXDE, or whatever is just one small, configurable panel which allows you to control multiple virtual desktops. On my Gnome 2 on CentOS 6.8 Linux, it looks like this (others are very similar):

Virtual desktops on Gnome 2

Virtual desktops on Gnome 2

The leftmost desktop is my usual “Internet” environment, here I chat, read emails, browse the web for anything work-related and so on. The second one is a Linux distribution development desktop. Here I’m building a derivative of Klaus Knoppers’ [Knoppix] distro. Then comes the testing environment for said distribution on desktop #3. Usually some shells and one VMware Player instance. Next to that are two more VM desktops for software testing and for writing user guides for software installation on different operating systems. At the moment that’s MacOS X and a Windows XP x64 software build VM. Usually there’s also a Windows 7 one. One is empty (for arbitrary stuff), then comes the server administration desktop with 9 open shells, one for each server. And the last one is my private desktop with yet another web browser, and some shells for spawning screen sessions for running software compilations, encoding runs and the likes.

Now, I have a 30″ screen both at home and at work, resolution is 2560×1600. But it’s just never enough screen real estate. So I wanted well-integrated virtual desktops for Windows as well, but last time I tried out some software, I couldn’t find a good one. Recently, I tried again for some reason, like “let’s give this one last shot”. And I tried a lot of programs!

Among the software tested were [Dexpot], [Finestra], [VirtuaWin], [WindowsPager], Xilisoft [Multiple Desktops] and the Windows PowerToy predecessor of [Desktops 2.0] written by Windows Hacker Mark Russinovich and Bryce Cogswell. And finally, [VirtualDimension]. Some of those are free and open source software, others are not.

One of my primary requirements was compatibility to Windows XP x64. Of course it’d be nice if it worked on Windows 10 as well. But most of the above had important features missing or were severely misbehaving on XP. Some were just very, very sluggish when switching desktops. Others had missing features to begin with, like previews on the desktop tiles. A blank desktop tile doesn’t help at all, as I need to see roughly what’s running where at a glance.

I’m not gonna make this a lengthy top list or anything, I’m just gonna show you what the software of my choice – VirtualDimension – could do for me, let’s look at the tiles first:

VirtualDimension on XP x64

VirtualDimension on XP x64

We’ll start with my good old XP x64 first. Here you can see my system tray, and Miranda being open. VirtualDimension cannot be embedded into the taskbar properly (damn), but it has an “always on top” feature. Since the contact list in my docked and always-launched Miranda doesn’t go all the way down, there is free and unused space there. Perfect for VirtualDimension! And since it’s always on top, it doesn’t disappear when clicking on Miranda for chatting.

Given the source code is definitely coming from a UNIX or Linux user (given he built it with GCC/Mingw), some features immediately ring a bell. Like “mouse warp”, where you switch desktops by moving your mouse to the border of the screen. I disabled that, don’t like it. But yeah, it’s there.

Important: While it doesn’t give you live window geometry previews, it does give you iconized previews, so you can always identify any desktop quickly by seeing what’s running there. The desktops can also be named, and there is an OSD that you can have pop up on you when switching, like so:

VirtualDimension OSD

OSD showing right after a desktop switch

In this case I had just switched to desktop #2, which is for A/V processing exclusively. This is just the top left part of the screen, where one of my eight transcoding shells was running a x265 benchmark prototype test. Color, display duration, transparency to mouse clicks on the OSD part, font and size are configurable.

Also, you can freely define keyboard shortcuts for switching desktops as well. I chose CTRL+Shift+Right as well as CTRL+Shift+Left for switching desktops and Alt+Right / Alt+Left for pushing a window to the next/previous desktop as those don’t conflict with other shortcuts I’m using.

What else can it do? Let’s right click on one of the icons in the preview tiles:

VirtualDimension iconized window right click

Clicking on a program icon in VirtualDimensions’ preview tiles gives you this menu

The first five options from the top are global ones. However, the ones below are specific to the icon you right-clicked. With “Activate”, you’d switch to the target desktop and put focus on that programs’ window. The others are pretty self-explanatory as well I guess. We also get a graceful “Close” option, and a brutal “Kill” option that’s equivalent to murdering the process in task manager. Maybe useful since it’s faster that way.

And if we click on the free area?

VirtualDimension, right click on the free area of a preview tile

Right-clicking on the free area of a preview tile gives you a list of all programs on that desktop.

Ok, not sure how useful that is, but at least it may help with identifying the windows on a desktop in more detail, as you get the window titles here. For my encoding shells I could get very quick glance at the progress, but not exactly in great detail. So the helpfulness of this is limited.

What else?

Well, it’s extremely fast! That’s one major plus for VirtualDimension, as several of the other solutions (open source ones as well) were abysmally slow, at least on XP x64. But damn, VirtualDimension just flies! And its memory footprint is minimal. I saw less than 12MiB of consumption here. Even if you add a truckload of Desktops (there seems to be no upper limit), it just won’t slow down unless you spawn like 50 CPU intensive processes all over the place killing your CPU or maxing out your RAM. But that wouldn’t have been VirtualDimensions fault then. Its memory footprint will linearly grow by spawning more desktops, so with eight you may see around 20MiB. Still neat.

And what’s bad about it?

Well, sometimes, if you have a lot of windows on one desktop, the icons are’t cut off in the right spot at the bottom of the preview tile, so they overflow just a little bit. Just a cosmetic issue. Also, you should maybe deactivate the shell integration. With this, VirtualDimension hooks itself into all windows (such a DLL hook means entering another processes’ memory area). With that, you can get its functions via right clicking on a windows’ title bar, like on UNIX.

Nice, but dangerous! This can trigger anti-cheat systems in online games, because they really don’t like you stepping into their processes’ memory areas! That’s what cheating tools do to modify a games’ parameters on the fly as well. You don’t wanna be banned because of such a thing!

In my case, I managed to lock myself out of Mechwarrior Online because of this. I wasn’t banned, but the login process wouldn’t even let me launch its window. Disabling the feature, launching MWO, then re-enabling it and trying to log in caused a pretty abnormal process termination:

Mechwarrior Online really doesn't like VirtualDimensions' shell integration feature

Mechwarrior Online really doesn’t like VirtualDimensions’ shell integration feature! And no, there was no “update available”… (click to enlarge)

There is an exception list for this feature, and I added all of MWOs’ .exe files to it, to no avail. Better to stay away from this one.

Now, well, this otherwise beautiful piece of software was dropped by its developer around 2005. About the time my XP x64 came out. Latest alpha build is from some time in 2006. So this is ancient! It even supports Windows 98 and NT 4.0, I mean… So, how about Windows 10 then? I mean, Windows 10 doesn’t even have a GDI UI anymore, this is like one completely different world. Since I do have a Windows 10 machine (yeah, ew), let’s check it out:

VirtualDimension on Windows 10

VirtualDimension on Windows 10 – hey, it really works!?

Miranda seemingly can’t dock properly on Windows 10 anymore. It kinda… floats near the desktop border when docked. It’s strange and it wastes space, but well, I don’t know how to fix that yet. But anyway, I embedded VirtualDimension into Miranda (by just moving the window there, removing its title bar and resizing it properly again). And guess what?

It just works™!

I launched some Metro / Modern UI apps in a window as well, and while those aren’t shown in the preview tiles, they can be controlled with keyboard shortcuts, just like regular windows. Also, it’s just as blazing fast as it is on XP. Ah, and… yeah, it actually does work on all 64-bit x86 Windows versions it seems! It’s amazing, but an ancient piece of 32-bit software that does alter a Windows systems’ usage pattern quite fundamentally still works fine on Windows 10 64-bit. I gotta say, I’m pretty relieved, because Windows 10s’ own solution just sucks – where is my live preview? – and I don’t want to change my usage paradigm too much when switching operating systems (even from Linux/UNIX to Windows and back).

Some of the other solutions like Dexpot or Finestra may be faster on Windows 10 than they are on a just half-supported XP x64, but nah, with this tool, I don’t need them anymore, no matter the operating system.

VirtualDimension is as perfect as it gets, despite its age! Or maybe because of it?

Still, anyone interested in picking up that [VirtualDimension project on SourceForge] and in continuing its development? ;) I guess I can’t touch that code, would probably just mess everything up. Ah, it’s C++ by the way…

A few things could use some fixing, like the icon overflowing issue, Modern UI window detection, certain, rare windows being sticky on all Desktops even if nobody told them to do so (Miranda, X-Chat DCC windows) and that exclusion list for the shell integration, which doesn’t hook into all windows properly when active either anyway.

Would be so nice if somebody could continue working this! :)

Until that happens (I know, it never will), I’ll just continue using v0.95 alpha. ;)