Hi Markus,
I have been building DQ4 PSX tooling on top of your documentation
and wanted to send you what came out of it:
https://github.com/RadMageIRL/DQIV_PSX_TOOLS
Two things you may care about specifically. There is a per-block
phrase dictionary in 189 of the 1,528 text blocks, pointed to by
the sixth header int, which is 24 in exactly those 189 and 0 in the
other 1,339. Text from those blocks decodes with unexpanded 0x7Exx
codes unless it is handled. And your disassembly note about one
tree pointer targeting the start and another the middle turned out
to be the whole topology, which is what made the decoder work.
The repo is stdlib only Python with a gate suite you can run
against your own disc, and every format claim carries either a gate
number or an explicit INFERRED or UNKNOWN label. Round trip is
byte-exact on all 1,528 text sub-blocks.
Your documentation is the reason any of this was findable.
Thanks for putting it up.
RadMageIRL
Hi Markus,
I have been building DQ4 PSX tooling on top of your documentation
and wanted to send you what came out of it:
https://github.com/RadMageIRL/DQIV_PSX_TOOLS
Two things you may care about specifically. There is a per-block
phrase dictionary in 189 of the 1,528 text blocks, pointed to by
the sixth header int, which is 24 in exactly those 189 and 0 in the
other 1,339. Text from those blocks decodes with unexpanded 0x7Exx
codes unless it is handled. And your disassembly note about one
tree pointer targeting the start and another the middle turned out
to be the whole topology, which is what made the decoder work.
The repo is stdlib only Python with a gate suite you can run
against your own disc, and every format claim carries either a gate
number or an explicit INFERRED or UNKNOWN label. Round trip is
byte-exact on all 1,528 text sub-blocks.
Your documentation is the reason any of this was findable.
Thanks for putting it up.
RadMageIRL