- 📝 Posted:
- 🚚 Summary of:
- P0063
- ⌨ Commits:
034ae4b...8dbb450
- 💰 Funded by:
- -Tom-
- 🏷 Tags:
Almost!
Just like most of the time, it was more sensible to cover
GENSOU.SCR
, the last structure missing in TH05's
OP.EXE
,
everywhere it's used, rather than just rushing out OP.EXE
position independence. I did have to look into all of the functions to
fully RE it after all, and to find out whether the unused fields actually
are unused. The only thing that kept this push from yielding even
more above-average progress was the sheer inconsistency in how the games
implemented the operations on this PC-98 equivalent of score*.dat
:
OP.EXE
declares two structure instances, for simultaneous access to both Reimu and Marisa scores. TH05 with its 4 playable characters instead uses a single one, and overwrites it successively for each character when drawing the high score menu – meaning, you'd only see Yuuka's scores when looking at the structure inside the rendered high score menu. However, it still declares the TH04 "Marisa" structure as a leftover… and also decodes it and verifies its checksum, despite nothing being ever loaded into itMAIN.EXE
uses a separate ASM implementation of the decoding and encoding functions- TH05's
MAIN.EXE
also reimplements the basic loading functions in ASM – without the code to regenerateGENSOU.SCR
with default data if the file is missing or corrupted. That actually makes sense, since any regeneration is already done inOP.EXE
, which always has to load that file anyway to check how much has been cleared - However, there is a regeneration function in TH05's
MAINE.EXE
… which actually generates different default data:OP.EXE
consistently sets Extra Stage records to Stage 1, whileMAINE.EXE
uses the same place-based stage numbering that both versions use for the regular ranks
Technically though, TH05's OP.EXE
is
position-independent now, and the rest are (should be?
) merely false positives. However, TH04's is
still missing another structure, in addition to its false
positives. So, let's wait with the big announcement until the next push…
which will also come with a demo video of what will be possible then.