Mother 3/PSI data: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
No edit summary
Line 17: Line 17:
===Field listing===
===Field listing===
* <tt>00-00 (01)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> PSI number
* <tt>00-00 (01)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> PSI number
* <tt>01-03 (03)</tt> = ''Unclassified data''
* <tt>01-03 (03)</tt> = ''Unclassified data''                    
* <tt>04-07 (04)</tt> = <tt>{{color2|#000000|#90EE90|[ B ]}}</tt> [[#Type|Type]]
* <tt>04-07 (04)</tt> = <tt>{{color2|#000000|#90EE90|[ B ]}}</tt> [[#Type|Type]]
* <tt>08-0B (04)</tt> = ''Unclassified data''                     
* <tt>08-0B (04)</tt> = ''Unclassified data''                     
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> PP cost
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> PP cost
* <tt>0E-17 (0A)</tt> = ''Unclassified data''                    
* <tt>0E-13 (06)</tt> = ''Unclassified data''
* <tt>18-18 (01)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Target|Target]]
* <tt>14-17 (04)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Damage type|Damage type]]
* <tt>19-1D (05)</tt> = ''Unclassified data''                     
* <tt>18-19 (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> [[#Target|Target]]
* <tt>1E-1F (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> [[#Low/high amounts|Low amount]]
* <tt>1A-1D (04)</tt> = ''Unclassified data''                     
* <tt>20-21 (02)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> [[#Low/high amounts|High amount]]
* <tt>1E-1F (02)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> [[#Low/high amounts|Low amount]]
* <tt>22-22 (01)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> [[#Affliction|Affliction value]]
* <tt>20-21 (02)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> [[#Low/high amounts|High amount]]
* <tt>23-23 (01)</tt> = <tt>{{color2|#000000|#F08080|[ H ]}}</tt> [[#Affliction|Affliction chance]]
* <tt>22-22 (01)</tt> = <tt>{{color2|#000000|#F08080|[ H ]}}</tt> [[#Affliction|Affliction value]]
* <tt>24-2E (0B)</tt> = ''Unclassified data''
* <tt>23-23 (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ I ]}}</tt> [[#Affliction|Affliction chance]]
* <tt>2F-2F (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ I ]}}</tt> [[#Animations|Animation 1]]
* <tt>24-2E (0B)</tt> = ''Unclassified data''                    
* <tt>30-30 (01)</tt> = <tt>{{color2|#000000|#ADD8E6|[ J ]}}</tt> [[#Animations|Animation 2]]
* <tt>2F-2F (01)</tt> = <tt>{{color2|#000000|#ADD8E6|[ J ]}}</tt> [[#Animations|Animation 1]]
* <tt>30-30 (01)</tt> = <tt>{{color2|#FFFFFF|#00008B|[ K ]}}</tt> [[#Animations|Animation 2]]
* <tt>31-37 (07)</tt> = ''Unclassified data''
* <tt>31-37 (07)</tt> = ''Unclassified data''


Line 37: Line 38:
     +--------------------------------------------------------------------------------
     +--------------------------------------------------------------------------------
  00  | {{color2|#000000|#87CEEB|[ A]}} [      ?    ] {{color2|#000000|#90EE90|[        B        ]}} [        ?        ] {{color2|#000000|#FFB6C1|[  C  ]}} [  ?  ->
  00  | {{color2|#000000|#87CEEB|[ A]}} [      ?    ] {{color2|#000000|#90EE90|[        B        ]}} [        ?        ] {{color2|#000000|#FFB6C1|[  C  ]}} [  ?  ->
  10  | <-                 ?                 ] {{color2|#000000|#FAFAD2|[ D]}} [           ?         ] {{color2|#000000|#FFFFE0|[  E   ]}}
  10  | <-       ?       ] {{color2|#000000|#FAFAD2|[       D       ]}} {{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]}}
  20  | {{color2|#000000|#D3D3D3|[  G   ]}} {{color2|#000000|#F08080|[ H]}} {{color2|#000000|#FFA07A|[ I]}} [                          ?                        ] {{color2|#000000|#ADD8E6|[ J]}}
  30  | {{color2|#000000|#ADD8E6|[ J]}} [                ?              ]
  30  | {{color2|#FFFFFF|#00008B|[ K]}} [                ?              ]


==Type==
==Type==
Line 51: Line 52:
|-
|-
| <tt>02</tt>: Assist
| <tt>02</tt>: Assist
|}
==Damage type==
There are four damage types, and they correspond to weakness values 0x0F through 0x12 in the [[MOTHER_3:Enemy_data#Weakness_table|enemy weakness table]]:
{|
|-
| <tt>00</tt>: PK Love, Starstorm, Ground
|-
| <tt>01</tt>: PK Fire
|-
| <tt>02</tt>: PK Freeze
|-
| <tt>03</tt>: PK Thunder
|}
|}



Revision as of 20:52, 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-13 (06) = Unclassified data
  • 14-17 (04) = [ D ] Damage 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

Damage type

There are four damage types, and they correspond to weakness values 0x0F through 0x12 in the enemy weakness table:

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

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.