mirror of
https://github.com/morluto/rea.git
synced 2026-11-07 05:56:19 -10:00
* docs(readme): add Roman Urdu edition
Register ur-Latn with a pending website catalog and preserve English command examples.
Script-tag handling follows morluto's shared helper proposed in PR #2043 (c46f606c89).
* test(website): cover completed script-tag page metadata
1094 lines
55 KiB
HTML
1094 lines
55 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Reverse Engineering’s Industrial Revolution — REA</title>
|
||
<meta
|
||
name="description"
|
||
content="N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04."
|
||
/>
|
||
<!-- website:sharing:start -->
|
||
<!-- prettier-ignore -->
|
||
<link rel="canonical" href="https://rea.tools/blog/touhou-reconstruction/" />
|
||
<!-- website:languages:start -->
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="en" href="https://rea.tools/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="zh-CN" href="https://rea.tools/zh-CN/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="zh-TW" href="https://rea.tools/zh-TW/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ja" href="https://rea.tools/ja/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ko" href="https://rea.tools/ko/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="tr" href="https://rea.tools/tr/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ru" href="https://rea.tools/ru/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="vi" href="https://rea.tools/vi/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="th" href="https://rea.tools/th/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="de" href="https://rea.tools/de/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="es" href="https://rea.tools/es/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="fr" href="https://rea.tools/fr/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="uk" href="https://rea.tools/uk/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="pl" href="https://rea.tools/pl/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="pt-BR" href="https://rea.tools/pt-BR/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ar" href="https://rea.tools/ar/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="fa" href="https://rea.tools/fa/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="id" href="https://rea.tools/id/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="it" href="https://rea.tools/it/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="el" href="https://rea.tools/el/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ml" href="https://rea.tools/ml/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="ur-Latn" href="https://rea.tools/ur-Latn/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<link rel="alternate" hreflang="x-default" href="https://rea.tools/blog/touhou-reconstruction/" />
|
||
<!-- website:languages:end -->
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:type" content="website" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:site_name" content="REA" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:title" content="Reverse Engineering’s Industrial Revolution — REA" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:description" content="N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04." />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:url" content="https://rea.tools/blog/touhou-reconstruction/" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:image" content="https://rea.tools/assets/social-card.png" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:image:type" content="image/png" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:image:width" content="1200" />
|
||
<!-- prettier-ignore -->
|
||
<meta property="og:image:height" content="630" />
|
||
<!-- prettier-ignore -->
|
||
<meta
|
||
property="og:image:alt"
|
||
content="REA — Find out how software works. Reverse engineering with your coding agent."
|
||
/>
|
||
<!-- prettier-ignore -->
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<!-- prettier-ignore -->
|
||
<meta name="twitter:title" content="Reverse Engineering’s Industrial Revolution — REA" />
|
||
<!-- prettier-ignore -->
|
||
<meta name="twitter:description" content="N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04." />
|
||
<!-- prettier-ignore -->
|
||
<meta name="twitter:image" content="https://rea.tools/assets/social-card.png" />
|
||
<!-- prettier-ignore -->
|
||
<meta
|
||
name="twitter:image:alt"
|
||
content="REA — Find out how software works. Reverse engineering with your coding agent."
|
||
/>
|
||
<!-- website:sharing:end -->
|
||
<!-- website:theme:start -->
|
||
<meta name="theme-color" content="#ffffff" />
|
||
<!-- Apply the saved theme before styles load, to avoid a flash on navigation. -->
|
||
<script src="../../assets/theme.js"></script>
|
||
<!-- website:theme:end -->
|
||
<link rel="icon" href="../../assets/favicon.svg" type="image/svg+xml" />
|
||
<link rel="stylesheet" href="../../assets/styles.css" />
|
||
<script src="../../assets/main.js" defer></script>
|
||
</head>
|
||
<body id="top" class="blog-article">
|
||
<a class="skip-link" href="#main">Skip to content</a>
|
||
<!-- website:header:start -->
|
||
<!-- prettier-ignore -->
|
||
<header class="site-header">
|
||
<div class="container header-inner">
|
||
<a class="brand" href="../../" aria-label="REA home"
|
||
><span class="brand-name">REA</span
|
||
><span class="brand-caption" data-i18n-skip>Reverse Engineer Anything</span></a
|
||
>
|
||
<nav class="navigation" aria-label="Main navigation">
|
||
<a href="../../get-started/" class="nav-start">Get started</a>
|
||
<a href="../../showcase/">Showcases</a>
|
||
<a href="../../blog/" aria-current="page">Blog</a>
|
||
<a href="../../guides/">Guides</a>
|
||
<a href="../../faq/">FAQ</a>
|
||
<a href="../../contributors/">Contributors</a>
|
||
</nav>
|
||
<div class="header-social">
|
||
<details class="language-picker" data-i18n-skip><summary><span aria-hidden="true">文 / A</span> <span>English</span></summary><nav aria-label="English"><a href="../../blog/touhou-reconstruction/" lang="en" dir="ltr" data-language="en" aria-current="true">English</a><a href="../../zh-CN/blog/touhou-reconstruction/" lang="zh-CN" dir="ltr" data-language="zh-CN">简体中文</a><a href="../../zh-TW/blog/touhou-reconstruction/" lang="zh-TW" dir="ltr" data-language="zh-TW">繁體中文</a><a href="../../ja/blog/touhou-reconstruction/" lang="ja" dir="ltr" data-language="ja">日本語</a><a href="../../ko/blog/touhou-reconstruction/" lang="ko" dir="ltr" data-language="ko">한국어</a><a href="../../tr/blog/touhou-reconstruction/" lang="tr" dir="ltr" data-language="tr">Türkçe</a><a href="../../ru/blog/touhou-reconstruction/" lang="ru" dir="ltr" data-language="ru">Русский</a><a href="../../vi/blog/touhou-reconstruction/" lang="vi" dir="ltr" data-language="vi">Tiếng Việt</a><a href="../../th/blog/touhou-reconstruction/" lang="th" dir="ltr" data-language="th">ไทย</a><a href="../../de/blog/touhou-reconstruction/" lang="de" dir="ltr" data-language="de">Deutsch</a><a href="../../es/blog/touhou-reconstruction/" lang="es" dir="ltr" data-language="es">Español</a><a href="../../fr/blog/touhou-reconstruction/" lang="fr" dir="ltr" data-language="fr">Français</a><a href="../../uk/blog/touhou-reconstruction/" lang="uk" dir="ltr" data-language="uk">Українська</a><a href="../../pl/blog/touhou-reconstruction/" lang="pl" dir="ltr" data-language="pl">Polski</a><a href="../../pt-BR/blog/touhou-reconstruction/" lang="pt-BR" dir="ltr" data-language="pt-BR">Português (Brasil)</a><a href="../../ar/blog/touhou-reconstruction/" lang="ar" dir="rtl" data-language="ar">العربية</a><a href="../../fa/blog/touhou-reconstruction/" lang="fa" dir="rtl" data-language="fa">فارسی</a><a href="../../id/blog/touhou-reconstruction/" lang="id" dir="ltr" data-language="id">Bahasa Indonesia</a><a href="../../it/blog/touhou-reconstruction/" lang="it" dir="ltr" data-language="it">Italiano</a><a href="../../el/blog/touhou-reconstruction/" lang="el" dir="ltr" data-language="el">Ελληνικά</a><a href="../../ml/blog/touhou-reconstruction/" lang="ml" dir="ltr" data-language="ml">മലയാളം</a><a href="../../ur-Latn/blog/touhou-reconstruction/" lang="ur-Latn" dir="ltr" data-language="ur-Latn">Roman Urdu</a></nav></details>
|
||
<button class="theme-toggle" type="button" data-theme-toggle hidden>
|
||
<svg class="theme-moon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
||
<path d="M20.9 13a9 9 0 0 1-9.9-9.9A9 9 0 1 0 20.9 13Z" />
|
||
</svg>
|
||
<svg class="theme-sun" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true" focusable="false">
|
||
<circle cx="12" cy="12" r="4" />
|
||
<path d="M12 2v2m0 16v2M2 12h2m16 0h2M4.93 4.93l1.42 1.42m11.3 11.3 1.42 1.42M4.93 19.07l1.42-1.42m11.3-11.3 1.42-1.42" />
|
||
</svg>
|
||
</button>
|
||
<a
|
||
class="nav-github"
|
||
href="https://github.com/morluto/rea"
|
||
aria-label="REA on GitHub"
|
||
title="REA on GitHub"
|
||
>
|
||
<svg
|
||
width="22"
|
||
height="22"
|
||
viewBox="0 0 16 16"
|
||
aria-hidden="true"
|
||
focusable="false"
|
||
>
|
||
<path
|
||
fill="currentColor"
|
||
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82a7.65 7.65 0 0 1 2-.27c.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"
|
||
/>
|
||
</svg>
|
||
<span class="nav-github-count" hidden aria-hidden="true"></span>
|
||
</a>
|
||
<a
|
||
class="nav-discord"
|
||
href="https://discord.gg/GkcryMnJDM"
|
||
aria-label="Join REA on Discord"
|
||
title="Join REA on Discord"
|
||
>
|
||
<svg
|
||
width="22"
|
||
height="22"
|
||
viewBox="0 0 24 24"
|
||
aria-hidden="true"
|
||
focusable="false"
|
||
>
|
||
<path
|
||
fill="currentColor"
|
||
d="M20.317 4.3698a19.7913 19.7913 0 0 0-4.8851-1.5152.0741.0741 0 0 0-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 0 0-.0785-.037 19.7363 19.7363 0 0 0-4.8852 1.515.0699.0699 0 0 0-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 0 0 .0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 0 0 .0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 0 0-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 0 1-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 0 1 .0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 0 1 .0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 0 1-.0066.1276 12.2986 12.2986 0 0 1-1.873.8914.0766.0766 0 0 0-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 0 0 .0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 0 0 .0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 0 0-.0312-.0286ZM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189Zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
<a
|
||
class="nav-x"
|
||
href="https://x.com/reatools"
|
||
aria-label="Follow REA on X"
|
||
title="Follow REA on X"
|
||
>
|
||
<svg
|
||
width="18"
|
||
height="18"
|
||
viewBox="0 0 24 24"
|
||
aria-hidden="true"
|
||
focusable="false"
|
||
>
|
||
<path
|
||
fill="currentColor"
|
||
d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<!-- website:header:end -->
|
||
<main id="main" class="container">
|
||
<div class="page-heading">
|
||
<p class="breadcrumb">
|
||
<a href="../../">Home</a> / <a href="../">Blog</a> / Touhou
|
||
reconstruction
|
||
</p>
|
||
<p class="eyebrow">Essay · Touhou reconstruction</p>
|
||
<h1>The industrial revolution in reverse engineering.</h1>
|
||
<p class="page-meta">By N0zoM1z0 · 10 October 2026</p>
|
||
<div class="blog-takeaway">
|
||
<p class="eyebrow">Takeaway</p>
|
||
<ul>
|
||
<li>
|
||
<strong>Give agents autonomy over the investigation.</strong> Set
|
||
a clear goal and acceptance criteria, then let the agent decide
|
||
what to try next.
|
||
</li>
|
||
<li>
|
||
<strong>Use the repository and Git as working memory.</strong>
|
||
Keep the reasoning with the code. Git checkpoints let the next
|
||
session continue after the conversation ends.
|
||
</li>
|
||
<li>
|
||
<strong>Let evidence decide what you claim.</strong> A confident
|
||
explanation still needs testing. “Unknown” is a valid answer when
|
||
the evidence is incomplete.
|
||
</li>
|
||
<li>
|
||
<strong>Test the oracle too.</strong> Try cases it should reject.
|
||
If it misses a bug, revisit the earlier results that depended on
|
||
it.
|
||
</li>
|
||
<li>
|
||
<strong
|
||
>We are in the early days of RE's industrial revolution.</strong
|
||
>
|
||
The methods are still taking shape. There is plenty left to
|
||
explore.
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<figure class="reconstruction-flywheel" aria-labelledby="flywheel-title">
|
||
<div class="flywheel-heading">
|
||
<p class="eyebrow" id="flywheel-title">How experience compounds</p>
|
||
<p><strong>Human direction</strong> · Goal and acceptance criteria</p>
|
||
</div>
|
||
<div class="flywheel-diagram">
|
||
<svg
|
||
class="flywheel-arrows"
|
||
viewBox="0 0 720 470"
|
||
preserveAspectRatio="none"
|
||
aria-hidden="true"
|
||
focusable="false"
|
||
>
|
||
<defs>
|
||
<marker
|
||
id="flywheel-forward"
|
||
markerWidth="10"
|
||
markerHeight="10"
|
||
refX="7"
|
||
refY="4"
|
||
orient="auto"
|
||
markerUnits="userSpaceOnUse"
|
||
>
|
||
<path
|
||
d="M 0 0 L 8 4 L 0 8"
|
||
fill="none"
|
||
stroke="#294f82"
|
||
stroke-width="2"
|
||
/>
|
||
</marker>
|
||
<marker
|
||
id="flywheel-revise"
|
||
markerWidth="10"
|
||
markerHeight="10"
|
||
refX="7"
|
||
refY="4"
|
||
orient="auto"
|
||
markerUnits="userSpaceOnUse"
|
||
>
|
||
<path
|
||
d="M 0 0 L 8 4 L 0 8"
|
||
fill="none"
|
||
stroke="#5b6570"
|
||
stroke-width="1.5"
|
||
/>
|
||
</marker>
|
||
</defs>
|
||
<g
|
||
fill="none"
|
||
stroke="#294f82"
|
||
stroke-width="2.5"
|
||
marker-end="url(#flywheel-forward)"
|
||
>
|
||
<path
|
||
class="flywheel-path-desktop"
|
||
d="M 444 115 C 537 111 624 157 627 208"
|
||
/>
|
||
<path d="M 528 365 C 456 437 263 437 191 365" />
|
||
<path
|
||
class="flywheel-path-desktop"
|
||
d="M 99 209 C 94 145 170 97 271 104"
|
||
/>
|
||
<path
|
||
class="flywheel-path-mobile"
|
||
d="M 530 115 C 614 108 681 164 674 215"
|
||
/>
|
||
<path
|
||
class="flywheel-path-mobile"
|
||
d="M 87 198 C 74 143 135 119 190 120"
|
||
/>
|
||
</g>
|
||
<path
|
||
class="flywheel-path-desktop"
|
||
d="M 515 215 C 500 165 450 166 430 127"
|
||
fill="none"
|
||
stroke="#5b6570"
|
||
stroke-width="1.5"
|
||
stroke-dasharray="5 5"
|
||
marker-end="url(#flywheel-revise)"
|
||
/>
|
||
<path
|
||
class="flywheel-path-mobile"
|
||
d="M 510 204 C 404 204 391 187 412 136"
|
||
fill="none"
|
||
stroke="#5b6570"
|
||
stroke-width="1.5"
|
||
stroke-dasharray="5 5"
|
||
marker-end="url(#flywheel-revise)"
|
||
/>
|
||
</svg>
|
||
<div class="flywheel-node flywheel-agent">
|
||
<p class="flywheel-kicker">Autonomy</p>
|
||
<h3>Agent</h3>
|
||
<p>Choose an experiment.<br />Propose a hypothesis.</p>
|
||
</div>
|
||
<div class="flywheel-node flywheel-oracle">
|
||
<p class="flywheel-kicker">Verification</p>
|
||
<h3>Oracle</h3>
|
||
<p>Test against a<br />concrete reference.</p>
|
||
</div>
|
||
<div class="flywheel-node flywheel-memory">
|
||
<p class="flywheel-kicker">Repository</p>
|
||
<h3>Working memory</h3>
|
||
<p>Code, evidence,<br />checks and lessons.</p>
|
||
</div>
|
||
<p class="flywheel-retry">
|
||
Mismatch<br /><strong>Revise the hypothesis</strong>
|
||
</p>
|
||
<p class="flywheel-center">
|
||
A better<br /><strong>starting point</strong>
|
||
</p>
|
||
<p class="flywheel-reuse">Reuse</p>
|
||
<p class="flywheel-pass">
|
||
<strong>Pass</strong> · Keep the result and its evidence
|
||
</p>
|
||
</div>
|
||
<div
|
||
class="flywheel-projects"
|
||
aria-label="Experience carried between projects"
|
||
>
|
||
<a href="#th08">TH08</a><span aria-hidden="true">→</span
|
||
><a href="#th095">TH095</a><span aria-hidden="true">→</span
|
||
><a href="#th04">TH04</a>
|
||
</div>
|
||
<figcaption>
|
||
Each project leaves the next with a better starting point. That
|
||
includes fixing the checks when we discover a gap.
|
||
</figcaption>
|
||
</figure>
|
||
<div class="article-layout">
|
||
<nav class="contents" aria-label="On this page">
|
||
<p>In this article</p>
|
||
<ul>
|
||
<li><a href="#august">August 2026</a></li>
|
||
<li><a href="#th08">TH08: the continuation</a></li>
|
||
<li><a href="#different-approaches">Two approaches</a></li>
|
||
<li><a href="#th095">TH095: compounding</a></li>
|
||
<li><a href="#th04">TH04: across architectures</a></li>
|
||
<li>
|
||
<a href="#semantic-reconstruction">From exact to readable</a>
|
||
</li>
|
||
<li><a href="#industrial-shift">The industrial shift</a></li>
|
||
<li><a href="#possibilities">What becomes possible</a></li>
|
||
</ul>
|
||
</nav>
|
||
<article class="article" aria-label="Touhou reconstruction essay">
|
||
<section class="article-section" id="august">
|
||
<h2>What changed in August 2026</h2>
|
||
<p>
|
||
Before this work, I had done a lot of manual reverse engineering.
|
||
I would inspect a function until I had an explanation, then test
|
||
that explanation against the program. Getting further meant
|
||
spending more of my own time on the next function. It also meant
|
||
keeping an increasingly large picture in my head.
|
||
</p>
|
||
<p>
|
||
Most of my RE work is on games. I reconstruct them so their
|
||
behavior can be understood and eventually carried into a port or a
|
||
mod. That is the experience behind this article. The method can be
|
||
useful elsewhere, but each field needs to establish what it can
|
||
check against a reliable reference.
|
||
</p>
|
||
<p>
|
||
In August 2026, I started exploring agent-driven RE seriously. I
|
||
wanted to see how far an agent could get with access to the
|
||
program and ordinary development tools. Touhou reconstruction gave
|
||
me a substantial project in which to find out.
|
||
</p>
|
||
<p>
|
||
The early progress was startling. An investigation could keep
|
||
moving without me choosing every individual step. A failed
|
||
comparison might send the agent to another caller. It could write
|
||
a small diagnostic and use the result to decide what to try next.
|
||
Giving it that freedom made a difference: I could spend more
|
||
attention on the project's direction and on whether its checks
|
||
were trustworthy.
|
||
</p>
|
||
<p>
|
||
The pace got my attention first. Then I began wondering what would
|
||
survive beyond the current project. Would the next game benefit
|
||
from everything we had just learned?
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="th08">
|
||
<h2>TH08: building on human work</h2>
|
||
<p>
|
||
<a href="https://github.com/N0zoM1z0/th08">TH08</a>, Imperishable
|
||
Night, began as a continuation of
|
||
<a href="https://github.com/GensokyoClub/th08"
|
||
>GensokyoClub's reconstruction</a
|
||
>. Their public source gave me a substantial foundation. It came
|
||
with knowledge of the build and a history of contributions that I
|
||
preserved in the continuation.
|
||
</p>
|
||
<p>
|
||
The imported history ends at the public 10 August checkpoint. My
|
||
independent continuation began on 13 August. By 19 August, the
|
||
ledger recorded source for all 1,107 identified game functions.
|
||
</p>
|
||
<p>
|
||
A playable Linux reconstruction port was committed on 24 August,
|
||
roughly eleven days after the continuation began. A Web edition
|
||
followed. The native Linux 64-bit release arrived on 30 August.
|
||
</p>
|
||
<p>
|
||
What struck me was that the work had reached a program people
|
||
could run. Getting there required following problems beyond an
|
||
individual function. Even when two functions looked correct in
|
||
isolation, they could accidentally use separate copies of state
|
||
that should have been shared.
|
||
</p>
|
||
<p>
|
||
This made reference checks central to the work. I call them
|
||
<strong>oracles</strong>. A code comparison can tell us whether a
|
||
reconstructed function reproduces the original instructions. A
|
||
runtime check can tell us whether an exercised route reaches the
|
||
expected state. The agent proposes an explanation and tests it; a
|
||
mismatch gives it something specific to investigate.
|
||
</p>
|
||
<h3>An exact match with the wrong constant</h3>
|
||
<p>
|
||
An oracle is software someone wrote. TH08 gave me a clear reminder
|
||
of how much can depend on that software.
|
||
</p>
|
||
<p>
|
||
In September, a bug reported by a downstream Switch port led back
|
||
to item auto-collection. The reconstructed source checked player
|
||
power against <code>0.0</code>. The original used
|
||
<code>128.0</code>, the maximum-power threshold.
|
||
</p>
|
||
<p>
|
||
Normal power is non-negative, so the reconstructed power check was
|
||
effectively always satisfied. Above the collection line, the game
|
||
could attract items without requiring maximum power. The other
|
||
exceptions in the condition were correct. This one constant
|
||
changed the behavior.
|
||
</p>
|
||
<p>
|
||
<strong
|
||
>Yet the function had already passed the exact
|
||
comparison.</strong
|
||
>
|
||
</p>
|
||
<p>
|
||
A rebuild can put a constant at a different address. The
|
||
comparison tool accounted for that by adjusting addresses in the
|
||
compiled instructions before comparing them with the original. But
|
||
it never checked the floating-point value stored at the referenced
|
||
address.
|
||
</p>
|
||
<p>
|
||
That left a hole in the check. It could point the reconstructed
|
||
instruction at the original's <code>128.0</code> while the source
|
||
still said <code>0.0</code>. The instruction bytes matched. The
|
||
source meant something different.
|
||
</p>
|
||
<p>
|
||
The
|
||
<a href="https://github.com/N0zoM1z0/th08/pull/11"
|
||
>2 September fix</a
|
||
>
|
||
corrected the source and made the comparison check the referenced
|
||
constant's actual bytes. A
|
||
<a href="https://github.com/N0zoM1z0/th08/pull/13">wider audit</a>
|
||
then examined 1,548 floating-literal references. It found another
|
||
twelve incorrect references across five accepted functions.
|
||
</p>
|
||
<p>
|
||
The comparison now checks every such floating literal. Its tests
|
||
include deliberately wrong values to make sure they are rejected.
|
||
We also had to revisit results that had passed the weaker check.
|
||
</p>
|
||
<p>
|
||
<strong>The oracle needed reconstructing too.</strong> Repairing
|
||
it was part of repairing the game.
|
||
</p>
|
||
<p>
|
||
That matters when the team is mostly one person working with
|
||
agents. I cannot personally inspect every line they produce, so
|
||
much of my confidence rests on their checks. A shared oracle's
|
||
blind spot can affect many investigations before I notice it. I
|
||
have to understand what the checker actually verifies and test it
|
||
against cases that ought to fail.
|
||
</p>
|
||
<p>
|
||
As the work continued, those checks became part of the repository.
|
||
So did the reasons for source changes and notes that let a later
|
||
session pick up where an earlier one stopped.
|
||
<strong
|
||
>The repository was becoming the project's working
|
||
memory.</strong
|
||
>
|
||
</p>
|
||
<p>
|
||
<strong
|
||
>A successful batch gave us both recovered code and a better
|
||
environment for the next batch.</strong
|
||
>
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="different-approaches">
|
||
<h2>Two different ideas of reconstruction</h2>
|
||
<p>
|
||
GensokyoClub's
|
||
<a
|
||
href="https://web.archive.org/web/20260909051514/https://github.com/GensokyoClub/th08#important-notice"
|
||
>public README</a
|
||
>
|
||
makes its disagreement with this kind of work explicit. The notice
|
||
announces that further development will happen privately until
|
||
completion. One passage reads:
|
||
</p>
|
||
<blockquote>
|
||
<p>
|
||
The rise of grifters (AI decompilations and ports) in this space
|
||
taking from our work paints a bad image for future decompilation
|
||
efforts…
|
||
</p>
|
||
</blockquote>
|
||
<p>
|
||
The notice also describes the psychological toll on the
|
||
maintainers. Their contribution policy excludes pull requests
|
||
produced primarily with AI. They have put their free time into
|
||
difficult work, and that work helped make my continuation
|
||
possible. I respect the effort behind it. The disagreement I want
|
||
to discuss is about how reconstruction should proceed and how a
|
||
contribution should be judged.
|
||
</p>
|
||
<p>
|
||
In the manual workflow I knew, developing an understanding of a
|
||
function and reconstructing it usually fell to the same person. A
|
||
project relied heavily on that person's expertise. Trust in the
|
||
contributor mattered because so much of the reasoning happened
|
||
while they worked.
|
||
</p>
|
||
<p>
|
||
Existing projects already preserve knowledge in their source and
|
||
build tools. What changed for me was that an agent could use that
|
||
knowledge to pursue the next investigation on its own.
|
||
</p>
|
||
<p>
|
||
In my continuation, I decide the objective and the standard for
|
||
accepting a result. The agent has broad freedom to investigate.
|
||
Its proposed reconstruction then has to survive the relevant
|
||
checks. I want another person to be able to examine why we chose
|
||
an implementation, even if an agent did most of the work.
|
||
</p>
|
||
<p>
|
||
This can be a difficult transition. Years of careful work may
|
||
become the foundation for a continuation that moves much faster.
|
||
That raises real questions about credit. It also changes what
|
||
maintainers need to know before accepting a contribution.
|
||
</p>
|
||
<p>
|
||
The industrial analogy helps me think about this. In a craft, much
|
||
of the process depends on the skill of the person carrying it out.
|
||
Machinery changes where that skill is needed. Someone still has to
|
||
design the process and recognize when its output is wrong.
|
||
Different communities can choose how much of that change they want
|
||
to take on.
|
||
</p>
|
||
<p>
|
||
My choice is to continue openly, with the inherited work credited
|
||
and its history preserved. I want the new work to be reviewable.
|
||
That gives us a way to ask how far this approach can go and to
|
||
learn from what goes wrong along the way.
|
||
</p>
|
||
<p class="caption">
|
||
Source: GensokyoClub's
|
||
<a
|
||
href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-notice"
|
||
>README notice</a
|
||
>, checked on 10 October 2026, and its
|
||
<a
|
||
href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
|
||
>contribution policy</a
|
||
>. The quotation is a shortened excerpt. TH08's
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-and-provenance"
|
||
>credits and provenance</a
|
||
>
|
||
record the continuation boundary.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="th095">
|
||
<h2>TH095: experience starts compounding</h2>
|
||
<p>
|
||
<a href="https://github.com/N0zoM1z0/th095">TH095</a>, Shoot the
|
||
Bullet, made the value of that experience much easier to see. Its
|
||
repository began on 29 August with zero confirmed game functions
|
||
in the ledger. We still had to learn the game. But we already knew
|
||
much more about how to begin a reconstruction and how to keep it
|
||
moving.
|
||
</p>
|
||
<p>
|
||
By 7 September, all 697 identified game functions had source. By 8
|
||
September, 696 had been accepted as exact comparisons. The whole
|
||
program linked on 9 September. The Windows i386 reconstruction was
|
||
marked playable on 10 September, about twelve days after
|
||
initialization.
|
||
</p>
|
||
<p>
|
||
I found this more exciting than the first project's speed. A fresh
|
||
target could benefit from work done on another game. The
|
||
experience was already present in the tools and in the way the
|
||
project was organized.
|
||
</p>
|
||
<p>
|
||
For example, TH08 had taught us to pay attention to the assembled
|
||
program early. If several recovered functions depend on the same
|
||
state, their isolated comparisons leave an important question
|
||
open. We need to see them working together. That lesson helped
|
||
shape how we approached TH095's whole-program build.
|
||
</p>
|
||
<p>
|
||
A lesson that stays in my head is useful while I am there. Once it
|
||
becomes a check that another session can run, it can keep helping
|
||
after I have moved on. The next agent can use the result without
|
||
repeating the investigation that led to it.
|
||
</p>
|
||
<p>
|
||
The floating-literal bug belongs in that memory too. It explains
|
||
why checking a reference also requires checking the data behind
|
||
it. Keeping that correction with the code helps later projects
|
||
avoid inheriting the old check's blind spot.
|
||
</p>
|
||
<p>
|
||
<strong
|
||
>The method becomes part of the starting material for the next
|
||
game.</strong
|
||
>
|
||
We can spend more of the next project's effort on what is actually
|
||
new about its target.
|
||
</p>
|
||
<p>
|
||
The same benefit is available to people joining later. They can
|
||
inspect a decision and rerun its check before continuing the work.
|
||
They do not have to reconstruct the entire project's history to
|
||
find out why the source looks the way it does.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="th04">
|
||
<h2>TH04: the workflow survives a different architecture</h2>
|
||
<p>
|
||
<a href="https://github.com/N0zoM1z0/th04">TH04</a>, Lotus Land
|
||
Story, took this work into the PC-98 DOS era. The target was now a
|
||
16-bit environment with four cooperating programs. Understanding
|
||
its hardware behavior required different evidence from the Windows
|
||
games. Existing
|
||
<a href="https://github.com/nmlgc/ReC98">ReC98 work</a> gave us
|
||
valuable knowledge and source material here too.
|
||
</p>
|
||
<p>
|
||
The DOS reconstruction is now working. In my manual testing, I
|
||
played complete Normal routes through their endings and checked
|
||
saves. The current work is a native 64-bit port. Establishing a
|
||
working DOS version first gives that port a reference.
|
||
</p>
|
||
<p>
|
||
The architecture changed what we needed to investigate. It also
|
||
changed the compiler and runtime against which we checked our
|
||
work. But the agent could still follow a question through to a
|
||
result and let that result guide the next experiment.
|
||
</p>
|
||
<p>
|
||
Consider the transition from gameplay to an ending. We need to
|
||
know what state carries across that boundary and which program is
|
||
responsible for it. That is something we can investigate against
|
||
the DOS product. Once the evidence and checks are available, an
|
||
agent can work through the question much as it did on a Windows
|
||
title.
|
||
</p>
|
||
<p>
|
||
This is why TH04 matters to the argument. A substantial platform
|
||
change did not force us to start over with a new way of working.
|
||
The architecture defined the problem; the workflow still gave us a
|
||
way to solve it.
|
||
</p>
|
||
<p>
|
||
For the 64-bit port, we can now examine the new implementation
|
||
against behavior already recovered on DOS. The knowledge from
|
||
reconstruction gives the port something to build on.
|
||
</p>
|
||
<p class="caption">
|
||
Project state as of 10 October 2026:
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
|
||
>DOS reconstruction and manual testing</a
|
||
>
|
||
·
|
||
<a href="https://github.com/N0zoM1z0/th04/tree/port/modern-64"
|
||
>64-bit port</a
|
||
>. The port remains in development.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="semantic-reconstruction">
|
||
<h2>From exact code to readable code</h2>
|
||
<p>
|
||
Once a reconstruction works, I want someone else to be able to
|
||
understand it.
|
||
</p>
|
||
<p>
|
||
To me, assembly and raw offsets can feel like old friends. I
|
||
realise this is a slightly unusual definition of “readable.” Most
|
||
people would prefer to follow the game's logic without keeping the
|
||
executable's memory layout in their head.
|
||
</p>
|
||
<p>
|
||
That is where <strong>semantic reconstruction</strong> comes in. A
|
||
recovered field may still be known mainly by its offset. We follow
|
||
how the game uses it until we can explain its role. Then we can
|
||
give it a meaningful name and a type that fits the evidence. We
|
||
keep the reasoning with the source so the next person can see
|
||
where that interpretation came from.
|
||
</p>
|
||
<p>
|
||
This becomes especially important for a port. An absolute address
|
||
tells me where something lived in the old executable. It gives a
|
||
64-bit implementation little help in deciding which object should
|
||
own that state. To move the behavior safely, we need to recover
|
||
the relationship behind the old memory access.
|
||
</p>
|
||
<p>The order I now use is:</p>
|
||
<ol>
|
||
<li>
|
||
<strong>Recover an exact baseline.</strong> Compile the
|
||
reconstructed pieces with the historical compiler. Compare the
|
||
relevant code and data with the original executable. Record
|
||
unresolved differences so the next phase has a clear starting
|
||
point.
|
||
</li>
|
||
<li>
|
||
<strong>Build and play it on the original platform.</strong>
|
||
Link those pieces into the real program using the original
|
||
architecture and compiler. Exercise important gameplay paths.
|
||
This is where we can find problems with shared state or
|
||
initialization that an isolated function comparison missed.
|
||
</li>
|
||
<li>
|
||
<strong
|
||
>Reconstruct the semantics against both references.</strong
|
||
>
|
||
Take one coherent part of the game at a time and establish what
|
||
its recovered source means. Improve its representation while
|
||
preserving the exact comparisons and the playable historical
|
||
build.
|
||
</li>
|
||
<li>
|
||
<strong>Make the modern port.</strong> Move the established
|
||
behavior into the new environment, such as a native 64-bit
|
||
build. The reconstructed original-platform game remains a
|
||
reference for comparing how the port behaves.
|
||
</li>
|
||
</ol>
|
||
<p>
|
||
The playable build from the second stage becomes a
|
||
<strong>second oracle</strong> during the third. The first oracle
|
||
checks whether our changed source still reproduces the relevant
|
||
original code and data. The second checks that the reconstructed
|
||
program still builds and behaves correctly along the paths we
|
||
exercise.
|
||
</p>
|
||
<p>
|
||
They catch different mistakes. A type change can alter the
|
||
generated instructions. An ownership change can leave two parts of
|
||
the game using different copies of state. Keeping both checks
|
||
available gives the agent a concrete failure to investigate before
|
||
carrying a refactor further.
|
||
</p>
|
||
<p>
|
||
A name needs evidence of its own. An exact comparison cannot tell
|
||
us whether a field really means “invulnerability time.” We have to
|
||
establish that from how the game writes and uses it. If the
|
||
meaning remains uncertain, a neutral name is more helpful to the
|
||
next reader than a confident guess.
|
||
</p>
|
||
<p>
|
||
We learned this order through the projects. TH08 already had
|
||
playable ports before some of its later historical-platform
|
||
audits. That made certain defects harder to see. The
|
||
<a
|
||
href="https://github.com/N0zoM1z0/touhou-reconstruction-factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-reconstruction.md"
|
||
>Factory's current workflow</a
|
||
>
|
||
puts the original-platform build first, so semantic work can use
|
||
it as a reference before porting begins.
|
||
</p>
|
||
<p>
|
||
<strong
|
||
>Exact reconstruction gives us a reference. Semantic
|
||
reconstruction makes the recovered knowledge usable.</strong
|
||
>
|
||
A port can then build on both.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="industrial-shift">
|
||
<h2>What makes this an industrial shift</h2>
|
||
<p>
|
||
These projects changed where I spent my attention. Once agents
|
||
could carry much of an investigation forward, improving their
|
||
working environment became one of the most useful things I could
|
||
do. A better tool could help with every later function that needed
|
||
it.
|
||
</p>
|
||
<p>
|
||
Autonomy matters here. The useful next step often becomes clear
|
||
only after a failed experiment. An agent needs enough freedom to
|
||
follow that result somewhere unexpected. If it has to wait for me
|
||
to prescribe each step, much of the work remains tied to my
|
||
attention.
|
||
</p>
|
||
<p>
|
||
I expect the agent to make wrong hypotheses. What matters is
|
||
whether we can test them and learn from the result. A failed check
|
||
should help it understand the mistake well enough to try again. I
|
||
still have to decide whether the accumulated evidence supports a
|
||
project milestone.
|
||
</p>
|
||
<p>
|
||
REA gives the agent access to analysis tools. A question about a
|
||
function's caller can lead straight into inspecting that caller.
|
||
The reconstruction project supplies the compiler and its own
|
||
reference checks. The agent can use those to test the source it
|
||
proposes and see where its explanation holds up.
|
||
</p>
|
||
<p>
|
||
The TH08 bug shows why those checks deserve engineering attention
|
||
of their own. When the same comparison is used across hundreds of
|
||
functions, a gap in it can spread much further than a mistake in
|
||
one implementation. Testing the checker improves the feedback
|
||
available to all that later work.
|
||
</p>
|
||
<p>
|
||
The industrial analogy has a useful historical example here.
|
||
Boulton and Watt introduced a
|
||
<a
|
||
href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-steam-engine-indicator"
|
||
>steam-engine indicator in 1796</a
|
||
>
|
||
to help adjust engine valves. A recording version traced pressure
|
||
through the piston stroke. It made the engine's internal behavior
|
||
available for inspection. Our comparison tools serve a similar
|
||
purpose: they let us examine what the machinery is doing while we
|
||
improve it.
|
||
</p>
|
||
<p>
|
||
<strong
|
||
>We are in the early stages of this industrial shift.</strong
|
||
>
|
||
Much of the infrastructure is still immature. Agents can move
|
||
faster than our checks were designed to support, so the process
|
||
has to develop alongside them. When we find a defect in a shared
|
||
tool, we have to repair it and revisit the results it affected.
|
||
The next project can then inherit a stronger tool.
|
||
</p>
|
||
<p>
|
||
There is also a practical limit to any one conversation. It will
|
||
end before a large reconstruction is finished. The repository has
|
||
to make it possible for another session to continue without losing
|
||
the reason for the last decision.
|
||
</p>
|
||
<p>
|
||
The
|
||
<a
|
||
href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
|
||
>Touhou Reconstruction Factory</a
|
||
>
|
||
grew out of that need. It gives projects a shared way to carry
|
||
their checks and lessons forward. Work on one game can improve the
|
||
starting conditions for another.
|
||
</p>
|
||
<p>
|
||
That is what makes the industrial analogy meaningful to me.
|
||
Experience starts becoming part of tools that others can use.
|
||
Improving those tools changes how much the next person—or the next
|
||
agent—can get done.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="possibilities">
|
||
<h2>The projects we can now consider</h2>
|
||
<p>
|
||
The pace matters because it changes the decision to begin. A game
|
||
could be fascinating to reverse engineer and still demand more of
|
||
my own attention than I could realistically give it. Many projects
|
||
would stay ideas.
|
||
</p>
|
||
<p>
|
||
Now I can see a way to keep such a project moving through repeated
|
||
investigations. Getting a working reconstruction makes a port more
|
||
practical. Recovering readable semantics makes it easier for
|
||
someone else to explore a mod. The effort put into understanding
|
||
the game can keep paying off after the first version runs.
|
||
</p>
|
||
<p>
|
||
I now look at an unfamiliar program and ask:
|
||
<strong
|
||
>what access, feedback and accumulated knowledge would let an
|
||
agent work on this reliably?</strong
|
||
>
|
||
</p>
|
||
<p>
|
||
That question makes me consider projects I would previously have
|
||
left alone. Each one can improve the way we approach the next. I
|
||
want to keep exploring how far that can take us.
|
||
</p>
|
||
</section>
|
||
<section class="article-section" id="sources">
|
||
<details class="native-details">
|
||
<summary>Project milestones and sources</summary>
|
||
<p>
|
||
The dates describe recorded project checkpoints, checked against
|
||
public GitHub history on 10 October 2026. Elapsed time is
|
||
calendar time between commits. Source presence, exact
|
||
comparisons, a build and a runtime result each name a different
|
||
milestone.
|
||
</p>
|
||
<ul>
|
||
<li>
|
||
<strong>TH08:</strong>
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
|
||
>13 August continuation</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
|
||
>19 August source ledger</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
|
||
>24 August Linux port</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
|
||
>26 August Web edition</a
|
||
>, and
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit"
|
||
>30 August 64-bit Linux release</a
|
||
>.
|
||
</li>
|
||
<li>
|
||
<strong>TH095:</strong>
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
|
||
>29 August initial ledger</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
|
||
>7 September source ledger</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
|
||
>8 September comparisons</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
|
||
>9 September linkage</a
|
||
>, and
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
|
||
>10 September playable-build record</a
|
||
>.
|
||
</li>
|
||
<li>
|
||
<strong>TH04:</strong>
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
|
||
>10 October handoff</a
|
||
>
|
||
records the working DOS reconstruction, the maintainer's
|
||
complete Normal-route testing and the current 64-bit phase.
|
||
</li>
|
||
<li>
|
||
<strong>TH08 oracle correction:</strong>
|
||
<a href="https://github.com/N0zoM1z0/th08/issues/10"
|
||
>the reported auto-collection bug</a
|
||
>,
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/commit/7148a76ba224742677895c7160807a68897957d5"
|
||
>the source and comparison fix</a
|
||
>, and
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
|
||
>the full floating-literal audit</a
|
||
>.
|
||
</li>
|
||
<li>
|
||
<strong>Semantic reconstruction:</strong>
|
||
<a
|
||
href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/docs/SEMANTIC_PLAYBOOK.md"
|
||
>TH08's readability playbook</a
|
||
>
|
||
and
|
||
<a
|
||
href="https://github.com/N0zoM1z0/touhou-reconstruction-factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-reconstruction.md"
|
||
>the Factory's phase order and two validation paths</a
|
||
>.
|
||
</li>
|
||
<li>
|
||
<strong>Industrial history:</strong>
|
||
<a
|
||
href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-steam-engine-indicator"
|
||
>the Science Museum Group's steam-engine indicator record</a
|
||
>
|
||
describes the 1796 introduction and the pressure-recording
|
||
mechanism.
|
||
</li>
|
||
<li>
|
||
<strong>Method:</strong> the Factory's
|
||
<a
|
||
href="https://github.com/N0zoM1z0/touhou-reconstruction-factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/agent-autonomy.md"
|
||
>agent autonomy</a
|
||
>
|
||
and
|
||
<a
|
||
href="https://github.com/N0zoM1z0/touhou-reconstruction-factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/knowledge-base.md"
|
||
>cross-game knowledge</a
|
||
>
|
||
documents retain the working principles and lessons.
|
||
</li>
|
||
</ul>
|
||
</details>
|
||
<p>
|
||
<a class="text-link" href="../">More articles</a> ·
|
||
<a class="text-link" href="../../showcase/th04/"
|
||
>Explore a TH04 investigation</a
|
||
>
|
||
</p>
|
||
</section>
|
||
</article>
|
||
</div>
|
||
</main>
|
||
<!-- website:footer:start -->
|
||
<!-- prettier-ignore -->
|
||
<footer class="site-footer">
|
||
<div class="container footer-inner">
|
||
<p>REA · Reverse Engineer Anything</p>
|
||
<div class="footer-links">
|
||
<a href="../../contributors/">Contributors</a
|
||
><a href="https://github.com/morluto/rea">Source</a
|
||
><a href="https://github.com/morluto/rea/blob/main/LICENSE">MIT license</a
|
||
><a href="https://discord.gg/GkcryMnJDM">Join the community</a
|
||
><a href="https://x.com/reatools">Follow us on X</a>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
<p class="sr-only" id="copy-status" role="status" aria-live="polite"></p>
|
||
<a class="back-to-top" href="#top" aria-label="Back to top">
|
||
<span aria-hidden="true">↑</span> Top
|
||
</a>
|
||
<!-- website:footer:end -->
|
||
</body>
|
||
</html>
|