Shops & vendors
Every merchant in the game and everything they sell - browsable by town, with each item's price, category and what it actually does. No disc image needed; click any item for its detail panel.
Vendor browser
How to read it: pick a town on the left; the middle column lists each vendor in
it. A shop's stock changes as the story moves on, so some vendors appear more than once with a
phase note. NEW marks items a walkthrough singles out as first
available there. Casino and fishing prize counters sit under the shops: they charge coins or
points instead of gold. Add ?town=Rim+Elm to the URL to open on a town.
Where this data comes from, and how to read it off your own disc
The prices and effects here are the project's curated game-data tables, mined from public walkthroughs. They are the ground truth the reverse engineering checks itself against: on the disc a shop is just a list of item ids and prices, and a trustworthy human-readable table is what confirms a decoded record. Each item's panel names the table row it validates.
Read it off your own disc
This page tells you what the shops sell. asset shop-stock tells you what the
disc says they sell - and when the two agree, both are confirmed.
asset shop-stock --prot extracted/PROT.DAT --scus extracted/SCUS_942.54 \
--cdname extracted/CDNAME.TXT # every shop on the disc
asset shop-stock --prot extracted/PROT.DAT --scus extracted/SCUS_942.54 \
--cdname extracted/CDNAME.TXT --scene bylon # one scene
The data is in two unrelated files. There is no shop table: a town's stock is written inline into that town's own event script, next to its chests and doors, while the item names and prices live in a static table in the executable. The command opens both and joins them.
Two numbers are reported per shop on purpose - "decodes 10 ids, sells 7". The on-disc count includes a trailing run of unsellable placeholder ids the in-game shop never displays, so the listing flags that tail rather than hiding it. Shops are also found by scanning for the shop instruction rather than walking the script in order: a vendor hidden behind a dialogue choice desyncs a linear reader, which would then report one shop too few with no error.
The same applies to inns: there is no inn price table either - each inn's charge is a literal in its town's script.
Full walkthrough, with the byte offsets and the CDNAME index shift: Extracting assets.