The Touhou PC-98 Restoration Project
(Refer to the initial release of this fork for a description of what this fork is about, and how to run this binary.)
Just a minor release, featuring ½ of a push worth of small bug fixes:
ANNIV.EXE
now runs ZUNSOFT.COM
together with MDRV98 if the latter isn't resident at startup time. With the ZUN Soft logo animation included, ANNIV.EXE
is now fully independent of GAME.BAT
.
The optional AUTOEXEC.BAT
is now correctly encoded in Shift-JIS instead of accidentally being UTF-8. This fixes the mojibake in its final ECHO
line seen in the previous two releases.
The stage selection debug feature (anniv s
) now works reliably. ZUN's original code forgot to initialize the internal debug flag for the s
mode, which caused game s
to only work if a specific byte in conventional DOS RAM was written to before starting the game. This happens on a certain widely circulated .HDI copy of TH01 that boots MS-DOS 3.30C, which might be the whole reason why game s
is widely documented to trigger a stage selection to begin with.
All bugs in the 1×1 particle system during the Mima fight have been fixed:
The score popups for flipped cards are now displayed without flickering.
The flashing ドカーン image in the 地獄/Jigoku Bad Ending is now displayed without tearing. Both of the images in this effect are now shown for two frames each, matching the intention of ZUN's code. With some new image display optimizations, the whole animation is now also way more likely to complete within ZUN's defined amount of frames, slightly speeding up this ending compared to the original game.
See https://rec98.nmlgc.net/blog/2022-06-17 for a documentation of the original bug.
The bomb
value shown in the lowest line of the in-game debug mode output is now right-aligned together with the rest of the values. This ensures that the game always writes a consistent number of characters to TRAM, regardless of the magnitude of the bomb
value, preventing the seemingly wrong timer
values that appeared in the original game whenever the value of the bomb
variable changed to a lower number of digits.
Source code: https://github.com/nmlgc/ReC98/tree/anniversary Full changelog compared to the previous release: https://github.com/nmlgc/ReC98/compare/c7bdc1a...P0239 Previous release: https://github.com/nmlgc/ReC98/releases/tag/P0234-1 Summary blog post: https://rec98.nmlgc.net/blog/2023-05-01
(Refer to the initial release of this fork for a description of what this fork is about, and how to run this binary.)
Small fix for a (non-ZUN) bug introduced in P0234. When defeating Sariel's first form, a previously undocumented ZUN quirk causes all pellets in a delay cloud state to be carried over to the second form. Being unaware of this quirk, I didn't keep it in mind when rewriting the pellet rendering code, which accidentally ended up rendering such pellets as white streaks across their trajectory once their delay cloud animation finished:
This issue is fixed in this build. Thanks to mu021 for reporting!
Source code: https://github.com/nmlgc/ReC98/tree/anniversary Full changelog compared to the previous release: https://github.com/nmlgc/ReC98/compare/P0234...P0234-1 Previous release: https://github.com/nmlgc/ReC98/releases/tag/P0234 Summary blog post: https://rec98.nmlgc.net/blog/2023-03-14
First release of the TH01 東方靈異伝 ~ The Highly Responsive to Prayers Anniversary Edition: a bugfixed and optimized version of the original game with smoother rendering and less flicker. All improvements are purely visual; gameplay remains unmodified compared to ZUN's original release.
Interlaced pellet rendering was removed from the Stage 15 and 20 boss fights, effectively doubling their perceived frame rate. During these stages, the original game separated all active pellets into two halves which it rendered on alternate frames, resulting in a noticeably choppy game performance. This was likely done to work around the enormous amount of wasted CPU cycles in the original pellet rendering code, and to reduce tearing due to the game being single-buffered. By optimizing the renderer, this build solves the root problem, and easily manages twice the number of pellets without flickering.
Flickering from pellets that overlap other sprites has been significantly reduced, and is now limited to a correct 8×8 rectangle instead of using a 16×8 or even 32×8 rectangle depending on the pellet position.
The Sariel fight features two animations that are not displayed in the original game because of type confusion bugs:
Both animations were restored in this build. See https://rec98.nmlgc.net/blog/2022-01-31 for comparison videos.
The game now stores its main code in a single binary instead of splitting it up into three executables (OP.EXE
, REIIDEN.EXE
, and FUUIN.EXE
). After removing a bit of bloat, the new ANNIV.EXE
ended up even smaller than the original REIIDEN.EXE
.
Drop ANNIV.EXE
into the directory of an existing TH01 installation, and run this file from the DOS prompt to play the game.
If you run the game from an .HDI image, use image editing tools like DiskExplorer to modify your installation. In this case, you can also copy the included AUTOEXEC.BAT
to automatically boot into the Anniversary Edition, showing the ZUN Soft logo before the main menu.
To simplify distribution and reduce clutter in the game directory, ANNIV.EXE
performs advanced witchcraft to automatically launch MDRV98.COM
if necessary, without needing a batch file. Doing this is technically impossible and prone to hypothetical failure, and thus only recommended for development. Repacks should create a custom version of the original GAME.BAT
that replaces the call to OP.EXE
with ANNIV.EXE
.
ANNIV.EXE
preserves all command-line features of the original three executables:
anniv t
, and anniv d
, respectively.anniv fuuin t1
and anniv fuuin t
. Requires an externally launched MDRV98, just like the original binary.Source code: https://github.com/nmlgc/ReC98/tree/anniversary Summary blog post: https://rec98.nmlgc.net/blog/2023-03-05