Difference between revisions of "MOTHER 3:PSI data"

From Data Crystal
Jump to: navigation, search
m
Line 16: Line 16:
  
 
===Field listing===
 
===Field listing===
* <tt>00-03 (04)</tt> = ''Unclassified data''
+
* <tt>00-00 (01)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> PSI number
* <tt>04-04 (01)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> [[#Type|Type]]
+
* <tt>01-03 (03)</tt> = ''Unclassified data''
* <tt>05-0B (07)</tt> = ''Unclassified data''
+
* <tt>04-07 (04)</tt> = <tt>{{color2|#000000|#90EE90|[ B ]}}</tt> [[#Type|Type]]
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#90EE90|[ B ]}}</tt> PP cost
+
* <tt>08-0B (04)</tt> = ''Unclassified data''                    
* <tt>0E-17 (0A)</tt> = ''Unclassified data''
+
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> PP cost
* <tt>18-18 (01)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> [[#Target|Target]]
+
* <tt>0E-17 (0A)</tt> = ''Unclassified data''                    
* <tt>19-1D (05)</tt> = ''Unclassified data''
+
* <tt>18-18 (01)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Target|Target]]
* <tt>1E-1F (02)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Low/high amounts|Low amount]]
+
* <tt>19-1D (05)</tt> = ''Unclassified data''                    
* <tt>20-21 (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> [[#Low/high amounts|High amount]]
+
* <tt>1E-1F (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> [[#Low/high amounts|Low amount]]
* <tt>22-2E (0D)</tt> = ''Unclassified data''
+
* <tt>20-21 (02)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> [[#Low/high amounts|High amount]]
* <tt>2F-2F (01)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> [[#Animations|Animation 1]]
+
* <tt>22-22 (01)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> [[#Affliction|Affliction value]]
* <tt>30-30 (01)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> [[#Animations|Animation 2]]
+
* <tt>23-23 (01)</tt> = <tt>{{color2|#000000|#F08080|[ H ]}}</tt> [[#Affliction|Affliction chance]]
 +
* <tt>24-2E (0B)</tt> = ''Unclassified data''
 +
* <tt>2F-2F (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ I ]}}</tt> [[#Animations|Animation 1]]
 +
* <tt>30-30 (01)</tt> = <tt>{{color2|#000000|#ADD8E6|[ J ]}}</tt> [[#Animations|Animation 2]]
 
* <tt>31-37 (07)</tt> = ''Unclassified data''
 
* <tt>31-37 (07)</tt> = ''Unclassified data''
  
Line 33: Line 36:
 
         00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
 
         00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
 
     +--------------------------------------------------------------------------------
 
     +--------------------------------------------------------------------------------
  00  | [       ?       ] {{color2|#000000|#87CEEB|[ A]}} [               ?               ] {{color2|#000000|#90EE90|[  B   ]}} [  ?  ->
+
  00  | {{color2|#000000|#87CEEB|[ A]}} [      ?     ] {{color2|#000000|#90EE90|[       B        ]}} [       ?       ] {{color2|#000000|#FFB6C1|[  C   ]}} [  ?  ->
  10  | <-                  ?                ] {{color2|#000000|#FFB6C1|[ C]}} [          ?          ] {{color2|#000000|#FAFAD2|[  D   ]}}
+
  10  | <-                  ?                ] {{color2|#000000|#FAFAD2|[ D]}} [          ?          ] {{color2|#000000|#FFFFE0|[  E   ]}}
  20  | {{color2|#000000|#FFFFE0|[  E   ]}} [                               ?                             ] {{color2|#000000|#B0C4DE|[ F]}}
+
  20  | {{color2|#000000|#B0C4DE|[  F   ]}} {{color2|#000000|#D3D3D3|[ G]}} {{color2|#000000|#F08080|[ H]}} [                         ?                         ] {{color2|#000000|#FFA07A|[ I]}}
  30  | {{color2|#000000|#D3D3D3|[ G]}} [                ?              ]
+
  30  | {{color2|#000000|#ADD8E6|[ J]}} [                ?              ]
  
 
==Type==
 
==Type==
Line 78: Line 81:
 
==Low/high amounts==
 
==Low/high amounts==
 
These affect the bounds of damage or recovery for abilities based on such.
 
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 [[MOTHER_3:Enemy_data#Weakness_table|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==
 
==Animations==

Revision as of 03:59, 10 August 2013

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 144 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-17 (0A) = Unclassified data
  • 18-18 (01) = [ D ] Target
  • 19-1D (05) = Unclassified data
  • 1E-1F (02) = [ E ] Low amount
  • 20-21 (02) = [ F ] High amount
  • 22-22 (01) = [ G ] Affliction value
  • 23-23 (01) = [ H ] Affliction chance
  • 24-2E (0B) = Unclassified data
  • 2F-2F (01) = [ I ] Animation 1
  • 30-30 (01) = [ J ] 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   ]
20  | [   F   ] [ G] [ H] [                          ?                         ] [ I]
30  | [ J] [                ?               ]

Type

The type value determines in which category it is placed:

00: Offense
01: Recover
02: Assist

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.