Mother 3/PSI data: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
Line 15: Line 15:


==Format==
==Format==
Each entry in the table uses 144 bytes.
Each entry in the table uses 56 bytes.


===Field listing===
===Field listing===

Revision as of 15:56, 16 October 2016

This is a sub-page of Mother 3.

PSI data table
Game MOTHER 3
Start Address 0xE1908
End Address 0xE5107
# of Entries 256 (0x100), only 100 used
Entry Length 56 bytes (0x38)
Total Length 36864 bytes (0x3800)
Back to the ROM map

Overview

The PSI data table contains parameters for each PSI move in the game. The ordering is consistent with the game's internal PSI names listing.

Format

Each entry in the table uses 56 bytes.

Field listing

  • 00-00 (01) = [ A ] PSI number
  • 01-03 (03) = Unclassified data
  • 04-07 (04) = [ B ] Type
  • 08-0B (04) = Unclassified data
  • 0C-0D (02) = [ C ] PP cost
  • 0E-13 (06) = Unclassified data
  • 14-17 (04) = [ D ] Elemental type
  • 18-19 (02) = [ E ] Target
  • 1A-1D (04) = Unclassified data
  • 1E-1F (02) = [ F ] Low amount
  • 20-21 (02) = [ G ] High amount
  • 22-22 (01) = [ H ] Affliction value
  • 23-23 (01) = [ I ] Affliction chance
  • 24-2E (0B) = Unclassified data
  • 2F-2F (01) = [ J ] Animation 1
  • 30-30 (01) = [ K ] Animation 2
  • 31-37 (07) = Unclassified data

Table view

       00   01   02   03   04   05   06   07   08   09   0A   0B   0C   0D   0E   0F
    +--------------------------------------------------------------------------------
00  | [ A] [      ?     ] [        B        ] [        ?        ] [   C   ] [   ?  ->
10  | <-        ?       ] [        D        ] [   E   ] [        ?        ] [   F   ]
20  | [   G   ] [ H] [ I] [                          ?                         ] [ J]
30  | [ K] [                ?               ]

Type

The type value determines in which category it is placed:

00: Offense
01: Recover
02: Assist

Elemental type

There are five elemental damage types, and they correspond to weakness values 0x0F through 0x13 in the enemy weakness table:

00: PK Love, Starstorm, Ground
01: PK Fire
02: PK Freeze
03: PK Thunder
04: Bombs

Target

The target value seems to affect how the ability is targeted. Known values are:

01: One party member
03: All party members
04: Healing Ω
0D: One enemy
0E: All enemies
0F: One strike
10: Two strikes
11: Three strikes
12: Four strikes
13: Multiple strikes (PK Ground)

Low/high amounts

These affect the bounds of damage or recovery for abilities based on such.

Affliction

PSI may afflict a status condition on its target. The affliction value selects an affliction from an enemy's list of weaknesses. Since weakness 0 corresponds to Poison instead of null, you actually need to add 1 here. For instance, PK Freeze has an affliction value of 10, so that it may induce solidification (which is weakness 9).

There is also an affliction chance. Whenever using a PSI spell, the game uses the following formula to determine whether or not an ailment is afflicted:

Let W = enemy weakness value against this affliction
   (W := enemy_weakness_table[affliction_value - 1])

Let C = affliction chance

Let R = random number from 0 to 99, inclusive

If R < (C * W / 100): status afflicted
Else: status not afflicted

For example, say you're using PK Freeze against a Monkalrus. The Monkalrus has a solidification weakness value of 30. PK Freeze's affliction chance is 8. So,

    If R < (8 * 30 / 100)
or, if R < 2.4
or, if R < 2 (the game does not use fractions here; the quotient is always rounded down)

That is, PK Freeze has a 2% chance of solidifying a Monkalrus.

Animations

These affect which visual animations play. It is not fully known how these correspond to the battle animations entry table.