ItemPMT (Item Parameter Table) is the item parameter table shared by the PSO client and server. For every weapon, frame, barrier, unit, Mag and consumable, it defines base stats, name indexes, equipment requirements, descriptions and appearance models. ItemPT and ItemRT determine when items drop and at what probability; they consult ItemPMT for the detailed parameters of the item itself.
ItemPMT is the game’s item dictionary. Given an item ID, it supplies:
This table is used when the client reads saved items, when players inspect item details and when the server checks equipment eligibility.
ItemPMT is a PRS-compressed binary file, with different versions for different PSO releases:
ItemPMT-bb-v4.prs — official PSOBB / EphineaItemPMT-gc-v3.prs — GameCube (Episode I & II)ItemPMT-gc-ep3.prs — Episode III card gameItemPMT-xb-v3.prs — XboxItemPMT-pc-v2.prs — PC v2ItemPMT-dc-v1.prs / ItemPMT-dc-v2.prs — Dreamcast v1/v2Weapon fields fall into three broad groups:
+9 means 9)Frames and barriers share a structure but are stored in separate subtables. Each entry contains:
min–max range for random variation+N)Unit entries are relatively simple:
/ signs (such as HP/Restorate, HP/Resurrect): activation chance or cooldown Some units use behavioural checks rather than numeric bonuses, such as Smartlink, V501/V502, Trap Vision. Their effects are hard-coded by item ID rather than stored as numeric fields in ItemPMT.
Mag parameters are a distinctive part of ItemPMT. Each Mag entry contains:
The Mag feeding rules form a large table in ItemPMT: 8 feeding tables × 11 foods; each Mag type points to one of the tables, and each cell specifies changes to DEF/POW/DEX/MIND/SYNC/IQ.
Tool entries are the simplest, primarily containing:
Technique disks belong to Tools but have a different small structure: Technique ID plus level, with a fixed stack limit of 1.
Weapon specials (Charge / Spirit / Berserk / Geist / Hell / Demon’s / Arrest / Chaos / Blizzard / Burning…) have their own table referenced by ID in ItemPMT. Each entry includes:
Where do common-weapon specials come from?
Instead of reading a weapon’s Special field directly, ItemPT generates a star tier (0–5) based on area, then selects a matching entry in ItemPMT. So a weapon found in the Mines may carry a 1★ Draw, while the same model found in the Ruins may carry a 4★ Gush: the available pool differs by area.
Alongside the main item entries, ItemPMT has smaller auxiliary tables for various game systems:
Recipes record used item × equipped target × result, with additional constraints:
This table is not the attack combo table. PSO’s N-N-H / N-H-H sequence modifiers are hard-coded in the client. The only combo-related ItemPMT field is each weapon’s one-byte behavior_flags, whose bits include a combo prohibition flag (some weapons can attack only once per sequence).
Technique damage or range bonuses on canes and related weapons. Examples include Psycho Wand, which gives Rafoie / Rabarta / Razonde +30% damage, and Glide Divine, which gives Jellen / Zalure +100% range. A weapon’s tech_boost field points to this table.
Actual bonus data referenced by units. The unit stores a boost ID; this table supplies the stat and amount.
Technique level caps for each class. For example, Forces can learn Lv30 Rafoie while Hunters are described here as capped at Lv15. Disks above a class’s cap cannot be used.
The structures below describe PSOBB (V4) ItemPMT. V1/V2/V3 and DC/GC/XB layouts differ slightly but serve the same purposes. Offsets are hexadecimal byte offsets.
TableOffsetsV3V4At the top of the decompressed ItemPMT, each field is a four-byte offset to a subtable. The BB client reads it at startup to locate the other tables.
| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | weapon_table | u32 | Weapon table → [{count, offset → [WeaponV4]}] (0xED entries) |
| 0x04 | armor_table | u32 | Frame/barrier tables (armors and shields) |
| 0x08 | unit_table | u32 | Unit table → [UnitV4] |
| 0x0C | tool_table | u32 | Tool table → [{count, offset → [ToolV4]}] (0x1A entries) |
| 0x10 | mag_table | u32 | Mag table → [MagV4] |
| 0x14 | v1_replacement_table | u32 | PSO v1 → BB item ID replacement table |
| 0x18 | photon_color_table | u32 | Photon colours (0x20 types, 0x24 bytes each) |
| 0x1C | weapon_range_table | u32 | Weapon range/hit-area table |
| 0x20 | weapon_sale_divisor_table | u32 | Weapon sale price divisors → [float] |
| 0x24 | sale_divisor_table | u32 | Non-weapon sale price divisors |
| 0x28 | mag_feed_table | u32 | Mag feeding table |
| 0x2C | star_value_table | u32 | Item ID → star rating (☆ count), 0x330 entries |
| 0x30 | special_data_table | u32 | Special definitions → [Special] |
| 0x34 | weapon_effect_table | u32 | Weapon passive effects (0x10 bytes each) |
| 0x38 | stat_boost_table | u32 | Unit bonus data → [StatBoost] |
| 0x3C | shield_effect_table | u32 | Barrier passive effects (8 bytes each) |
| 0x40 | max_tech_level_table | u32 | Technique level caps per class |
| 0x44 | combination_table | u32 | Combination/upgrade recipes → [ItemCombination] |
| 0x48 | unknown_a1 | u32 | Unknown |
| 0x4C | tech_boost_table | u32 | Technique bonuses → [TechniqueBoost × 3] |
| 0x50 | unwrap_table | u32 | Gift box contents |
| 0x54 | unsealable_table | u32 | Unsealed weapon results |
| 0x58 | ranged_special_table | u32 | Ranged special behaviour |
ItemBaseV4The first 12 bytes of every weapon, frame, unit, Mag and tool entry form this shared header:
| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | id | u32 | Item ID (also the name text string index) |
| 0x04 | type | u16 | Model number (client .nj model ID) |
| 0x06 | skin | u16 | Texture number |
| 0x08 | team_points | u32 | Team point value |
WeaponV4 (0x2C bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | Base header (0x0C bytes) |
| 0x0C | class_flags | u16 | Equip-class bitmap for 12 classes (default 0x00FF, all enabled) |
| 0x0E | atp_min | u16 | Minimum base ATP |
| 0x10 | atp_max | u16 | Maximum base ATP (actual value varies between min and max) |
| 0x12 | atp_required | u16 | Minimum ATP required |
| 0x14 | mst_required | u16 | Minimum MST required |
| 0x16 | ata_required | u16 | Minimum ATA required |
| 0x18 | mst | u16 | Weapon MST bonus |
| 0x1A | max_grind | u8 | Maximum grind (+9 means 9) |
| 0x1B | photon | u8 | Photon type (melee/ranged/Technique) |
| 0x1C | special | u8 | Default special ID (index into special_data_table) |
| 0x1D | ata | u8 | ATA bonus |
| 0x1E | stat_boost_entry_index | u8 | Index into stat_boost_table |
| 0x1F | projectile | u8 | Ranged weapon projectile ID |
| 0x20 | trail1_x / y | i8×2 | Weapon trail start offset |
| 0x22 | trail2_x / y | i8×2 | Weapon trail end offset |
| 0x24 | color | i8 | Colour index into photon_color_table |
| 0x25 | unknown_a1 | u8×3 | Unknown |
| 0x2A | tech_boost | u8 | Technique boost index into tech_boost_table |
| 0x2B | behavior_flags | u8 | Behaviour bits: 0x01 no combos / 0x08 no attributes |
ArmorOrShieldV4 (0x20 bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | Base header |
| 0x0C | dfp | u16 | Base DFP |
| 0x0E | evp | u16 | Base EVP |
| 0x10 | block_particle | u8 | Block particle effect ID |
| 0x11 | block_effect | u8 | Block effect ID |
| 0x12 | class_flags | u16 | Eligible-class bitmap |
| 0x14 | required_level | u8 | Required level |
| 0x15 | efr | u8 | Fire resistance |
| 0x16 | eth | u8 | Lightning resistance |
| 0x17 | eic | u8 | Ice resistance |
| 0x18 | edk | u8 | Dark resistance |
| 0x19 | elt | u8 | Light resistance |
| 0x1A | dfp_range | u8 | Maximum additional DFP (+N limit) |
| 0x1B | evp_range | u8 | Maximum additional EVP |
| 0x1C | stat_boost_entry_index | u8 | stat_boost_table index |
| 0x1D | tech_boost | u8 | Technique bonus index (into tech_boost_table) |
| 0x1E | flags_type | u8 | Behaviour flags (frame 0x01; barrier 0x01/0x02/0x03, etc.) |
UnitV4 (0x14 bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | Base header |
| 0x0C | stat | u16 | Primary stat type (StatBoost codes 01–0F, e.g. 01=ATP) |
| 0x0E | stat_amount | u16 | Primary stat bonus value |
| 0x10 | modifier_amount | i16 | Activation threshold or cooldown for units such as HP/Restorate |
| 0x12 | unused | u8×2 | Padding |
MagV4 (0x1C bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | Base header |
| 0x0C | feed_table | u16 | Feeding response index into mag_feed_table |
| 0x0E | photon_blast | u8 | Default Photon Blast ID |
| 0x0F | activation | u8 | Base event activation probability |
| 0x10 | on_pb_full | u8 | Event ID when PB is full |
| 0x11 | on_low_hp | u8 | Event ID at low HP |
| 0x12 | on_death | u8 | Event ID on death |
| 0x13 | on_boss | u8 | Event ID on entering a boss room |
| 0x14 | on_pb_full_flag | u8 | 0–4 selects the probability formula in combination with synchro |
| 0x15 | on_low_hp_flag | u8 | As above |
| 0x16 | on_death_flag | u8 | As above |
| 0x17 | on_boss_flag | u8 | As above |
| 0x18 | class_flags | u16 | Eligible-class bitmap |
| 0x1A | unused | u8×2 | Padding |
Mag event chance: first convert synchro into step_synchro (tiers of 0/15/25/30/35…), then select the formula by flag: flag=0 uses activation; flag=1 uses activation + step_synchro; flag=2 uses step_synchro…
ToolV4 (0x18 bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | base | ItemBaseV4 | Base header |
| 0x0C | amount | u16 | Amount/effect value (HP restored for mates, Technique level for disks) |
| 0x0E | tech | u16 | Technique ID for Technique tools |
| 0x10 | cost | i32 | Shop price |
| 0x14 | item_flags | u32 | Bit flags: 0x01 usable / 0x08 android-usable / 0x10 usable in town / 0x20 usable in boss rooms / 0x40 usable in Challenge / 0x80 rare |
Special (4 bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | type | u16 | Special type ID (Charge/Spirit/Berserk/Hell…) |
| 0x02 | amount | u16 | Special strength (chance, extra damage, etc.) |
StatBoost (6 bytes)Units, weapons and frames reference an entry via stat_boost_entry_index . Each record can hold two stat bonuses, but Sega changed the loop after the November 2000 DC build to read only one, so only the first is effective.
| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | stats[0..1] | u8×2 | Two stat type IDs (see below) |
| 0x02 | amounts[0..1] | u16×2 | Corresponding bonus values |
Stat type IDs:
| Value | Meaning | Value | Meaning |
|---|---|---|---|
| 0x01 | ATP+ | 0x09 | ATP− |
| 0x02 | ATA+ | 0x0A | ATA− |
| 0x03 | EVP+ | 0x0B | EVP− |
| 0x04 | DFP+ | 0x0C | DFP− |
| 0x05 | MST+ | 0x0D | MST− |
| 0x06 | HP+ | 0x0E | HP− |
| 0x07 | LCK+ | 0x0F | LCK− |
| 0x08 | All + (except HP) | 0x10 | All − (except HP) |
ItemCombination (0x10 bytes)| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | used_item | u8×3 | Used tool ID (data1[0..2]) |
| 0x03 | equipped_item | u8×3 | Equipped target item ID |
| 0x06 | result_item | u8×3 | Resulting item ID |
| 0x09 | mag_level | u8 | Required total Mag level |
| 0x0A | grind | u8 | Required target weapon grind |
| 0x0B | level | u8 | Required character level |
| 0x0C | char_class | u8 | Class restriction |
| 0x0D | unused | u8×3 | Padding |
MagFeedResult (8 bytes)Each of the 8 feeding tables lists the 11 foods. Each cell is a MagFeedResult:
| Offset | Field | Type | Description |
|---|---|---|---|
| 0x00 | def | i8 | DEF change |
| 0x01 | pow | i8 | POW change |
| 0x02 | dex | i8 | DEX change |
| 0x03 | mind | i8 | MIND change |
| 0x04 | iq | i8 | IQ change |
| 0x05 | synchro | i8 | Synchro change |
| 0x06 | unused | u8×2 | Padding |
The search interface could not download. Reload this page to try again.