diff options
| author | Hunter Kvalevog <hunter@kvog.sh> | 2026-06-09 17:59:08 -0500 |
|---|---|---|
| committer | Hunter Kvalevog <hunter@kvog.sh> | 2026-06-09 17:59:08 -0500 |
| commit | 927c9cf689201b93a26e62fe0a872c92b5a33dd3 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /content/articles | |
| parent | 0e78e35f80a903686dcac5ae81a26d547a7ab7b7 (diff) | |
Diffstat (limited to 'content/articles')
| -rw-r--r-- | content/articles/girlfriend-of-steel-re.md | 149 | ||||
| -rw-r--r-- | content/articles/win7.md | 40 |
2 files changed, 0 insertions, 189 deletions
diff --git a/content/articles/girlfriend-of-steel-re.md b/content/articles/girlfriend-of-steel-re.md deleted file mode 100644 index 49fa18d..0000000 --- a/content/articles/girlfriend-of-steel-re.md +++ /dev/null @@ -1,149 +0,0 @@ -+++ -title = 'Reverse Engineering _Neon Genesis Evangelion: Girlfriend of Steel_' -date = 2026-04-22T20:30:53-05:00 -draft = true -+++ - - - -Last year, I started reverse enginering _Neon Genesis Evangelion: Girlfriend of Steel_ with the intention of writing a replacement engine that runs on modern computers. -I ended up losing interest, but not before cracking a few of the game data formats. I'm going to document them here, that way anyone who takes a similar -interest in restoration or modding can have a head start. - -The source code of the abandoned project is available here: [fantatech-1776908508.tar.gz](/files/girlfriend-of-steel-re/fantatech-1776908508.tar.gz). -It includes [ImHex](https://imhex.werwolv.net/) patterns and rudimentary decoders for some of the formats described below. - -## What game am I talking about? - -I actually looked at two different games. I will share the information I know about the 1997 formats, but the primary focus will be on the 2006 version. -VNDB has a good record of all the available ports and translations here: [https://vndb.org/v556](https://vndb.org/v556). - -**_Neon Genesis Evangelion: Girlfriend of Steel (1997, PC)_**: This is the original release of the game. It's also the most widely available. -I was able to buy a factory sealed copy on eBay. Surprisingly, you can still mount the ISO and run the ~30 year old binaries on Windows 11. It plays mostly -fine with a [Shift-JIS locale emulator](https://github.com/xupefei/Locale-Emulator). -The chunky bitmap graphics and audio, although charming, are considerably lower quality than in the 2006 version. - -**_Neon Genesis Evangelion: Girlfriend of Steel (Special Edition) (2006, PC)_**: Also called _Shin Seiki Evangelion: Koutetsu no Girlfriend Tokubetsu-hen_, is a remake. -It has upgraded sounds and visuals, additional scenarios, and a full-motion video (Cinepak) intro sequence. It's also filled to the brim with DRM that makes it completely -broken on any system that isn't running Windows XP with Direct3D acceleration. -This will only run in VMWare because VirtualBox dropped 3D acceleration support for Windows XP guests. - -I have not been able to find a physical copy of the PC version of Special Edition for sale anywhere. -The PSP version is available, but the image resolutions are smaller than those found in the PC version. - -Luckily, someone in 2020 found a copy and had the foresight to rip the disc and upload it to the The Internet Archive. This is the raw, original disc; DRM and all: -[https://archive.org/details/ssekngpcredump](https://archive.org/details/ssekngpcredump) - [http://redump.org/disc/74520/](http://redump.org/disc/74520/). - -MD5: `536adbefc80a84378b65224fddf122e7` SHA-1: `77a03fb1823cb96189ac50b9afece8930e709c93` - -## Getting around DRM - -Special edition is secured with [SafeDisc](https://en.wikipedia.org/wiki/SafeDisc). It's completely broken on modern Windows, so you'll need to use a virtual machine to run the game. -I had good success with Windows XP in VMWare with 3D acceleration enabled. - -Once the game is running in the VM (lots of fiddling, unfortunately) the executable can be dumped with [Scylla x86](https://x64dbg.com/). -To save you the headache, here's the dump: [mana01_dump.tar.gz](/files/girlfriend-of-steel-re/mana01_dump.tar.gz) - - - -Although it doesn't run, the dump is a correct PE file. -Ghidra is able to create proper data and code cross-references. Here's a function that parses script keywords: - - - -## Custom file types (1997) - -* **LB5**: Lump file -* **BP2**: Image (1997) -* **BP3**: Image (2006) -* **TXT**: Game script -* **ZDF**: Animation data - -## Prior work - -When reverse engineering the 1997 game executable, I found several strings referencing something called "bmpwaku". -This was the name given to the tiled bitmap rasterizer written by programmer RitsurÅ Hashimoto. - -A small portion of the source code is still available on his website to this day: [bmpwaku.cpp](http://www.ritsuro.com/prog1/bmpwaku.html). -This wasn't particularly useful, but it was cool to find. - -Aside from that, here are the existing tools I looked at: -* [evac010](https://www.vector.co.jp/soft/win95/art/se055672.html): BP2 <-> BMP transcoder, likely written when the game came out in the 1990s. -* [mdukat/EvaGOS\_engine](https://github.com/mdukat/EvaGOS_engine): Includes partial documentation of the game scripting language from the 1997 game. -* [lb5\_decode.c](https://d3suu.neocities.org/EvaGOS_engine/lb5_decode.txt): LB5 unpacker, written by either mdukat or roxfan. -* [Durik256/GOS2-Tools](https://github.com/Durik256/GOS2-Tools): Tools for dealing with files found in Girlfriend of Steel 2. Some overlap. - -## LB5 - -These are very basic file archives. It's an `.IDX` file paired with either a `.BIN` or `.LB5`. - -There's no encryption, the idx file just stores the index into the bin/lb5. See ImHex patterns. - -## BP2 image format (1997) - -BP2 image format start with a custom header, followed by the standard bitmap file headers (`BITMAPFILEHEADER`, then `BITMAPINFOHEADER`). -The custom header starts with a 32-bit uint32_t with value `999`. Search for that literal in the decompiler output to find the parser function. - -The 2nd field in the custom header defines the pixel format. -| Value | Format | -| ----- | ---------------------------------------- | -| `1` | `INDEX8` - 8-bit index into palette data | -| `2` | `RGB24` | -| `3` | `GRAY8` | - -If the format is `INDEX8`, then the palette data is next. -The length of the buffer is defined in the custom header. - -The rest of the file is image data encoded into chunks: -```c -struct BP2_Chunk -{ - u32 len; - u8 buf[len]; -}; -``` - -Each chunk is a run-length encoded column of 8 pixels. -To understand the specifics, it's easier to just look at the decompiler output or `ftformat.cc` in the source code linked above. - -## BP3 image format (Special Editioin) - -BP3 is similar. It supports more pixel formats and the image data is compressed into 8x8 blocks instead of 8-tall columns. - -| Value | Format | -| ----- | ------------------- | -| `0` | `SOLID` - One color | -| `2` | `BGR332` | -| `3` | `BGR233` | -| `4` | `GRAY4` | -| `5` | `GRAY8` | -| `6` | `BGR555` | -| `7` | `BGR888` | - -The decoder for BP3 is also in `ftformat.cc`. - -## TXT (1997) - -This is XOR-encrypted Shift_JIS text: - -```c -for (u32 i = 0; i < txt_len; ++i) { - data[i] ^= 0xFF; -} -``` - -## TXT (Special Edition) - -Same thing, but slightly different: - -```c -for (u32 i = 0; i < len; ++i) { - if (data[i] > 0xF) { - data[i] = 0xE - data[i]; - } -} -``` - -## ZDF - -This file starts with a fourcc of `DFS0`. diff --git a/content/articles/win7.md b/content/articles/win7.md deleted file mode 100644 index 31f85ca..0000000 --- a/content/articles/win7.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: 'Updating a fresh Windows 7+SP1 install' -date: 2024-02-05T02:30:19-06:00 -build: - list: never - render: always ---- - -**2026 UPDATE**: Use Atak\_Snajpera's [Windows 7 Image Updater](https://forum.videohelp.com/threads/384921-Windows-7-Image-Updater-SkyLake-KabyLake-CoffeLake-Ryzen-Threadripper) - -## How to update a fresh Windows 7+SP1 install in 2024 - -*Mostly taken from http://www.freenode-windows.org/resources/vista-7/windows-update ([archived](https://web.archive.org/web/20220925214048/http://www.freenode-windows.org/resources/vista-7/windows-update))* - -Windows 7 Ultimate (SP1) SHA1 hash: `36ae90defbad9d9539e649b193ae573b77a71c83` - -## 1. Download rollup updates -First, manually download (but don't install) these updates from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/home.aspx): - -1. [KB3125574](https://www.catalog.update.microsoft.com/Search.aspx?q=KB3125574) -2. [KB3172605](https://www.catalog.update.microsoft.com/Search.aspx?q=KB3172605) -3. [KB3020369](https://www.catalog.update.microsoft.com/Search.aspx?q=KB3020369) - -## 2. Disable Windows Update - -1. Disable the internet connection -2. Disable the Windows Update service (`stop-service wuauserv` in admin PowerShell) -3. Remove cached update files (`remove-item C:\windows\softwaredistribution\WuRedir` in admin PowerShell) - -## 3. Install rollup updates - -1. Install KB3020369 -2. Install KB3172605 and reboot -3. Install KB3125574 and reboot - -## 3. Updating via Windows Update - -Reconnect to the internet and launch the standard Windows Update program. - -Many updates will fail, but if you retry and restart enough, they will eventually succeed. |