Mother 3/PSI data: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(22 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{subpage|game=MOTHER 3:ROM map}}
{{subpage|game=Mother 3}}
{{Infobox table
{{Infobox table
|name=PSI data table
|name=PSI data table
|game=MOTHER 3
|game=Mother 3
|loc=ROM
|loc=ROM
|start=0xE1908
|start=0xE1908
Line 12: Line 12:


==Overview==
==Overview==
The PSI data table contains parameters for each PSI move in the game. The ordering is consistent with the game's internal [[MOTHER_3:PSI_names|PSI names]] listing.
The PSI data table contains parameters for each PSI move in the game. The ordering is consistent with the game's internal [[Mother 3/PSI names|PSI names]] listing.<br>
PSI are programmed not to have smashes.


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


===Field listing===
===Field listing===
* <tt>00-00 (01)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> PSI number
* <tt>00-03 (04)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> PSI number
* <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> = <tt>{{color2|#FFFFFF|#5466BF|[ C ]}}</tt> [[#Overworld usable|Usable in overworld]]              
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> PP cost
* <tt>0C-0F (04)</tt> = <tt>{{color2|#000000|#FFB6C1|[ D ]}}</tt> PP cost
* <tt>0E-13 (06)</tt> = ''Unclassified data''
* <tt>10-37 (28)</tt> = <tt>{{color2|#FFFFFF|#053656|[ E ]}}</tt> [[#Info chunk|PSI/Item/Actions Info Chunk]]
* <tt>14-17 (04)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Elemental type|Elemental type]]
* <tt>18-19 (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> [[#Target|Target]]
* <tt>1A-1D (04)</tt> = ''Unclassified data''                   
* <tt>1E-1F (02)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> [[#Low/high amounts|Low amount]]
* <tt>20-21 (02)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> [[#Low/high amounts|High amount]]
* <tt>22-22 (01)</tt> = <tt>{{color2|#000000|#F08080|[ H ]}}</tt> [[#Affliction|Affliction value]]
* <tt>23-23 (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ I ]}}</tt> [[#Affliction|Affliction chance]]
* <tt>24-2E (0B)</tt> = ''Unclassified data''                   
* <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''


===Table view===
===Table view===
         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        ]}} [        ?        ] {{color2|#000000|#FFB6C1|[   C   ]}} [  ?  ->
  00  | {{color2|#000000|#87CEEB|[       A       ]}} {{color2|#000000|#90EE90|[        B        ]}} {{color2|#FFFFFF|#5466BF|[       C       ]}} {{color2|#000000|#FFB6C1|[        D        ]}}
10  | <-        ?      ] {{color2|#000000|#FAFAD2|[        D        ]}} {{color2|#000000|#FFFFE0|[   E   ]}} [        ?        ] {{color2|#000000|#B0C4DE|[  F  ]}}
10  | {{color2|#FFFFFF|#053656|[                                     E                                     ->}}
  20  | {{color2|#000000|#D3D3D3|[  G  ]}} {{color2|#000000|#F08080|[ H]}} {{color2|#000000|#FFA07A|[ I]}} [                          ?                        ] {{color2|#000000|#ADD8E6|[ J]}}
  20  | {{color2|#FFFFFF|#053656|<-                                    E                                    ->}}
  30  | {{color2|#FFFFFF|#00008B|[ K]}} [               ?              ]
  30  | {{color2|#FFFFFF|#053656|<-                E                  ]}}
===About PP cost===
Even though the game considers only the first two bytes of PP cost, the developers left two more bytes.<br>
This was probably done so the table has the same structure as the [[Mother 3/Level-up stats table|Level-up stats table]].


==Type==
==Type==
Line 56: Line 48:
|}
|}


==Elemental type==
==Overworld usable==
There are five elemental damage types, and they correspond to weakness values 0x0F through 0x13 in the [[MOTHER_3:Enemy_data#Weakness_table|enemy weakness table]]:
If these bytes have a total value different from 03, the PSI won't be usable in the overworld.


{|
==Info chunk==
|-
[[Mother 3/PSI data|PSI data]], [[Mother 3/Item data|Item data]], [[Mother 3/Battle skills table|Battle skills table]] and [[Mother 3/Battle actions table|Battle actions table]] all share this group of 0x28 (40) bytes.<br><br>
| <tt>00</tt>: PK Love, Starstorm, Ground
It is called [[Mother 3/Battle tables info chunk|Battle Info chunk]].<br><br>
|-
| <tt>01</tt>: PK Fire
|-
| <tt>02</tt>: PK Freeze
|-
| <tt>03</tt>: PK Thunder
|-
| <tt>04</tt>: Bombs
|}
 
==Target==
The target value seems to affect how the ability is targeted. Known values are:
 
{|
|-
| <tt>01</tt>: One party member
|-
| <tt>03</tt>: All party members
|-
| <tt>04</tt>: Healing Ω
|-
| <tt>0D</tt>: One enemy
|-
| <tt>0E</tt>: All enemies
|-
| <tt>0F</tt>: One strike
|-
| <tt>10</tt>: Two strikes
|-
| <tt>11</tt>: Three strikes
|-
| <tt>12</tt>: Four strikes
|-
| <tt>13</tt>: 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 [[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==
These affect which visual animations play. It is not fully known how these correspond to the [[MOTHER_3:Battle_animations_entry_table|battle animations entry table]].


[[Category:MOTHER 3|PSI data]]
[[Category:Mother 3|PSI data]]

Latest revision as of 02:38, 20 May 2024

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.
PSI are programmed not to have smashes.

Format

Each entry in the table uses 56 bytes.

Field listing

Table view

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

About PP cost

Even though the game considers only the first two bytes of PP cost, the developers left two more bytes.
This was probably done so the table has the same structure as the Level-up stats table.

Type

The type value determines in which category it is placed:

00: Offense
01: Recover
02: Assist

Overworld usable

If these bytes have a total value different from 03, the PSI won't be usable in the overworld.

Info chunk

PSI data, Item data, Battle skills table and Battle actions table all share this group of 0x28 (40) bytes.

It is called Battle Info chunk.