Difference between revisions of "MOTHER 3:Enemy data"

From Data Crystal
Jump to navigation Jump to search
 
(62 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{subpage|game=MOTHER 3:ROM map}}
 
{{Infobox table|name=Enemy data table
 
{{Infobox table|name=Enemy data table
 
|game=MOTHER 3
 
|game=MOTHER 3
Line 12: Line 13:
 
The enemy data table contains the stats for each enemy in the game. It does not include the enemy names; for that, see the [[MOTHER_3:Enemy_names|enemy names table]].
 
The enemy data table contains the stats for each enemy in the game. It does not include the enemy names; for that, see the [[MOTHER_3:Enemy_names|enemy names table]].
  
'''Note:''' for whatever stupid freaking reason, at least one enemy (the Minor Robot) has its battle actions hard-coded. Changing its battle actions in this table seems to have no effect.
+
'''Notes:''' for whatever stupid freaking reason, at least one enemy (the Minor Robot) has its battle actions hard-coded. Changing its battle actions in this table seems to have no effect.
 +
Also, some enemy have hard-coded weakness text too (Miracle Fassad).
  
 
==Format==
 
==Format==
Line 18: Line 20:
  
 
===Field listing===
 
===Field listing===
* <tt>00-09 (0A)</tt> = ''Unclassified data''
+
* <tt>00-03 (04)</tt> = <tt>{{color2|#000000|#43895C|[ A ]}}</tt> Enemy ID
* <tt>0A-0B (02)</tt> = <tt>{{color2|#000000|#87CEEB|[ A ]}}</tt> [[#Battle background|Battle background number]]
+
* <tt>04-07 (04)</tt> = <tt>{{color2|#000000|#BC5EEB|[ B ]}}</tt> [[#Smell type|Smell type number]]
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#90EE90|[ B ]}}</tt> [[#Music numbers|Swirl music number]]
+
* <tt>08-09 (02)</tt> = <tt>{{color2|#000000|#DE9475|[ C ]}}</tt> [[#Overworld sound|Overworld sound]]
* <tt>0E-0F (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ C ]}}</tt> [[#Music numbers|Battle music number]]
+
* <tt>0A-0B (02)</tt> = <tt>{{color2|#000000|#87CEEB|[ D ]}}</tt> [[#Battle background|Battle background number]]
* <tt>10-11 (02)</tt> = <tt>{{color2|#000000|#FAFAD2|[ D ]}}</tt> [[#Music numbers|Win music number]]
+
* <tt>0C-0D (02)</tt> = <tt>{{color2|#000000|#90EE90|[ E ]}}</tt> [[#Music numbers|Swirl music number]]
* <tt>12-13 (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ E ]}}</tt> Level
+
* <tt>0E-0F (02)</tt> = <tt>{{color2|#000000|#FFB6C1|[ F ]}}</tt> [[#Music numbers|Battle music number]]
* <tt>14-17 (04)</tt> = <tt>{{color2|#000000|#B0C4DE|[ F ]}}</tt> HP
+
* <tt>10-11 (02)</tt> = <tt>{{color2|#000000|#FAFAD2|[ G ]}}</tt> [[#Music numbers|Win music number]]
* <tt>18-1B (04)</tt> = <tt>{{color2|#000000|#D3D3D3|[ G ]}}</tt> PP
+
* <tt>12-13 (02)</tt> = <tt>{{color2|#000000|#FFFFE0|[ H ]}}</tt> Level
* <tt>1C-1C (01)</tt> = <tt>{{color2|#000000|#F08080|[ H ]}}</tt> Offense
+
* <tt>14-17 (04)</tt> = <tt>{{color2|#000000|#B0C4DE|[ I ]}}</tt> HP
* <tt>1D-1D (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ I ]}}</tt> Defense
+
* <tt>18-1B (04)</tt> = <tt>{{color2|#000000|#D3D3D3|[ J ]}}</tt> PP
* <tt>1E-1E (01)</tt> = <tt>{{color2|#000000|#ADD8E6|[ J ]}}</tt> IQ
+
* <tt>1C-1C (01)</tt> = <tt>{{color2|#000000|#F08080|[ K ]}}</tt> Offense
* <tt>1F-1F (01)</tt> = <tt>{{color2|#FFFFFF|#00008B|[ K ]}}</tt> Speed
+
* <tt>1D-1D (01)</tt> = <tt>{{color2|#000000|#FFA07A|[ L ]}}</tt> Defense
* <tt>20-23 (04)</tt> = ''Unclassified data''                   
+
* <tt>1E-1E (01)</tt> = <tt>{{color2|#000000|#ADD8E6|[ M ]}}</tt> IQ
* <tt>24-24 (01)</tt> = <tt>{{color2|#FFFFFF|#006400|[ L ]}}</tt> Offense (surprise attack)
+
* <tt>1F-1F (01)</tt> = <tt>{{color2|#FFFFFF|#00008B|[ N ]}}</tt> Speed
* <tt>25-25 (01)</tt> = <tt>{{color2|#FFFFFF|#8B0000|[ M ]}}</tt> Defense (surprise attack)
+
* <tt>20-23 (04)</tt> = <tt>{{color2|#000000|#00D08B|[ O ]}}</tt> Kindness
* <tt>26-26 (01)</tt> = <tt>{{color2|#FFFFFF|#B8860B|[ N ]}}</tt> IQ (surprise attack)
+
* <tt>24-24 (01)</tt> = <tt>{{color2|#FFFFFF|#006400|[ P ]}}</tt> Offense (surprise attack)
* <tt>27-27 (01)</tt> = <tt>{{color2|#FFFFFF|#483D8B|[ O ]}}</tt> Speed (surprise attack)
+
* <tt>25-25 (01)</tt> = <tt>{{color2|#FFFFFF|#8B0000|[ Q ]}}</tt> Defense (surprise attack)
* <tt>28-2B (04)</tt> = ''Unclassified data''                   
+
* <tt>26-26 (01)</tt> = <tt>{{color2|#FFFFFF|#B8860B|[ R ]}}</tt> IQ (surprise attack)
* <tt>2C-53 (28)</tt> = <tt>{{color2|#FFFFFF|#A9A9A9|[ P ]}}</tt> [[#Weakness table|Weakness table]]
+
* <tt>27-27 (01)</tt> = <tt>{{color2|#FFFFFF|#483D8B|[ S ]}}</tt> Speed (surprise attack)
* <tt>54-63 (10)</tt> = <tt>{{color2|#FFFFFF|#000000|[ Q ]}}</tt> [[#Action table|Action table]]
+
* <tt>28-2B (04)</tt> = <tt>{{color2|#FFFFFF|#10708B|[ T ]}}</tt> Kindness (surprise attack)
* <tt>64-65 (02)</tt> = <tt>{{color2|#FFFFFF|#008B8B|[ R ]}}</tt> Attack sound number
+
* <tt>2C-53 (28)</tt> = <tt>{{color2|#FFFFFF|#A9A9A9|[ U ]}}</tt> [[#Weakness table|Weakness table]]
* <tt>66-66 (01)</tt> = <tt>{{color2|#FFFFFF|#FF8C00|[ S ]}}</tt> [[#Encounter and death text|Encounter text number]]
+
* <tt>54-63 (10)</tt> = <tt>{{color2|#FFFFFF|#000000|[ V ]}}</tt> [[#Action table|Action table]]
* <tt>67-67 (01)</tt> = <tt>{{color2|#FFFFFF|#8B008B|[ T ]}}</tt> [[#Encounter and death text|Death text number]]
+
* <tt>64-65 (02)</tt> = <tt>{{color2|#FFFFFF|#008B8B|[ W ]}}</tt> Attack sound number
* <tt>68-77 (10)</tt> = ''Unclassified data''                   
+
* <tt>66-66 (01)</tt> = <tt>{{color2|#FFFFFF|#FF8C00|[ X ]}}</tt> [[#Encounter and death text|Encounter text number]]
* <tt>78-83 (0C)</tt> = <tt>{{color2|#FFFFFF|#9932CC|[ U ]}}</tt> [[#Item drop table|Item drop table]]
+
* <tt>67-67 (01)</tt> = <tt>{{color2|#FFFFFF|#8B008B|[ Y ]}}</tt> [[#Encounter and death text|Death text number]]
* <tt>84-87 (04)</tt> = <tt>{{color2|#FFFFFF|#BDB76B|[ V ]}}</tt> Experience
+
* <tt>68-6B (04)</tt> = <tt>{{color2|#FFFFFF|#23756B|[ Z ]}}</tt> [[#Multi death animation|Death animation (other enemies remaining)]]
* <tt>88-8B (04)</tt> = <tt>{{color2|#FFFFFF|#556B2F|[ W ]}}</tt> Money
+
* <tt>6C-6F (04)</tt> = <tt>{{color2|#000000|#8BD08B|[ α ]}}</tt> [[#In battle sprite height|In battle sprite height]]
* <tt>8C-8F (04)</tt> = ''Unclassified data''
+
* <tt>70-71 (02)</tt> = <tt>{{color2|#FFFFFF|#380BFA|[ β ]}}</tt> [[#Memo sprite height|Battle Memory sprite height Front and Back]]
 +
* <tt>72-73 (02)</tt> = <tt>{{color2|#000000|#FBD08B|[ γ ]}}</tt> [[#In battle sprite height|In battle sprite height Front and Back]]
 +
* <tt>74-74 (01)</tt> = <tt>{{color2|#000000|#1BD08B|[ δ ]}}</tt> [[#Memo turnable|Battle Memory turnable value]]
 +
* <tt>75-75 (01)</tt> = <tt>{{color2|#FFFFFF|#AB408B|[ ε ]}}</tt> [[#Turnable value|Enemy turnable value]]
 +
* <tt>76-77 (02)</tt> = <tt>{{color2|#FFFFFF|#2B008B|[ ζ ]}}</tt> [[#Single death animation|Death animation (no other enemies remaining)]]
 +
* <tt>78-83 (0C)</tt> = <tt>{{color2|#FFFFFF|#4132CC|[ η ]}}</tt> [[#Item drop table|Item drop table]]
 +
* <tt>84-87 (04)</tt> = <tt>{{color2|#FFFFFF|#BDB76B|[ θ ]}}</tt> Experience
 +
* <tt>88-8B (04)</tt> = <tt>{{color2|#FFFFFF|#556B2F|[ ι ]}}</tt> Money
 +
* <tt>8C-8F (04)</tt> = <tt>{{color2|#FFFFFF|#A56B2F|[ κ ]}}</tt> [[#Smell weaknesses pointers|Smell weaknesses]]
  
 
===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|#43895C|[        A        ]}} {{color2|#000000|#BC5EEB|[        B        ]}} {{color2|#000000|#DE9475|[   C  ]}} {{color2|#000000|#87CEEB|[  D   ]}} {{color2|#000000|#90EE90|[  E   ]}} {{color2|#000000|#FFB6C1|[  F   ]}}
  10  | {{color2|#000000|#FAFAD2|[  D   ]}} {{color2|#000000|#FFFFE0|[  E   ]}} {{color2|#000000|#B0C4DE|[        F       ]}} {{color2|#000000|#D3D3D3|[        G       ]}} {{color2|#000000|#F08080|[ H]}} {{color2|#000000|#FFA07A|[ I]}} {{color2|#000000|#ADD8E6|[ J]}} {{color2|#FFFFFF|#00008B|[ K]}}
+
  10  | {{color2|#000000|#FAFAD2|[  G   ]}} {{color2|#000000|#FFFFE0|[  H   ]}} {{color2|#000000|#B0C4DE|[        I       ]}} {{color2|#000000|#D3D3D3|[        J       ]}} {{color2|#000000|#F08080|[ K]}} {{color2|#000000|#FFA07A|[ L]}} {{color2|#000000|#ADD8E6|[ M]}} {{color2|#FFFFFF|#00008B|[ N]}}
  20  | [        ?       ] {{color2|#FFFFFF|#006400|[ L]}} {{color2|#FFFFFF|#8B0000|[ M]}} {{color2|#FFFFFF|#B8860B|[ N]}} {{color2|#FFFFFF|#483D8B|[ O]}} [        ?       ] {{color2|#FFFFFF|#A9A9A9|[        P       ->}}
+
  20  | {{color2|#000000|#00D08B|[        O       ]}} {{color2|#FFFFFF|#006400|[ P]}} {{color2|#FFFFFF|#8B0000|[ Q]}} {{color2|#FFFFFF|#B8860B|[ R]}} {{color2|#FFFFFF|#483D8B|[ S]}} {{color2|#FFFFFF|#10708B|[        T       ]}} {{color2|#FFFFFF|#A9A9A9|[        U       ->}}
  30  | {{color2|#FFFFFF|#A9A9A9|<-                                    P                                     ->}}
+
  30  | {{color2|#FFFFFF|#A9A9A9|<-                                    U                                     ->}}
  40  | {{color2|#FFFFFF|#A9A9A9|<-                                    P                                     ->}}
+
  40  | {{color2|#FFFFFF|#A9A9A9|<-                                    U                                     ->}}
  50  | {{color2|#FFFFFF|#A9A9A9|<-        P       ]}} {{color2|#FFFFFF|#000000|[                            Q                           ->}}
+
  50  | {{color2|#FFFFFF|#A9A9A9|<-        U       ]}} {{color2|#FFFFFF|#000000|[                            V                           ->}}
  60  | {{color2|#FFFFFF|#000000|<-        Q       ]}} {{color2|#FFFFFF|#008B8B|[  R   ]}} {{color2|#FFFFFF|#FF8C00|[ S]}} {{color2|#FFFFFF|#8B008B|[ T]}} [                 ?                ->
+
  60  | {{color2|#FFFFFF|#000000|<-        V       ]}} {{color2|#FFFFFF|#008B8B|[  W   ]}} {{color2|#FFFFFF|#FF8C00|[ X]}} {{color2|#FFFFFF|#8B008B|[ Y]}} {{color2|#FFFFFF|#23756B|[        Z        ]}} {{color2|#000000|#8BD08B|[       α        ]}}
  70  | <-                  ?                ] {{color2|#FFFFFF|#9932CC|[                  U                 ->}}
+
  70  | {{color2|#FFFFFF|#380BFA|[  β  ]}} {{color2|#000000|#FBD08B|[  γ  ]}} {{color2|#000000|#1BD08B|[ δ]}} {{color2|#FFFFFF|#AB408B|[ ε]}} {{color2|#FFFFFF|#2B008B|[  ζ  ]}} {{color2|#FFFFFF|#4132CC|[                  η                 ->}}
  80  | {{color2|#FFFFFF|#9932CC|<-        U       ]}} {{color2|#FFFFFF|#BDB76B|[        V       ]}} {{color2|#FFFFFF|#556B2F|[        W       ]}} [        ?       ]
+
  80  | {{color2|#FFFFFF|#4132CC|<-        η       ]}} {{color2|#FFFFFF|#BDB76B|[        θ       ]}} {{color2|#FFFFFF|#556B2F|[        ι       ]}} {{color2|#FFFFFF|#A56B2F|[        κ       ]}}
  
 +
==Smell type==
 +
Every enemy has a type that's revealed when you smell them. What the game does is simply taking this value, dividing it for 0x100 and adding it 0x01F2 to get the pointer to the correct line from the [[MOTHER_3:Battle_text|battle text]].
 +
 +
==Overworld sound==
 +
If the overworld sprite of the enemy in the [[MOTHER_3:Map_object_table|Object table]] is set to have sounds, these bytes are the pointer which gets read.<br>
 +
 +
These numbers correspond to the [[MOTHER_3:Song_pointer_table|song pointer table]], and ''not'' to the sound player songlist.
 
==Battle background==
 
==Battle background==
 
Each enemy has a battle background associated with it. This number corresponds to the [[MOTHER_3:Battle_background_layer/master_table|battle background master table]].
 
Each enemy has a battle background associated with it. This number corresponds to the [[MOTHER_3:Battle_background_layer/master_table|battle background master table]].
Line 112: Line 129:
 
==Encounter and death text==
 
==Encounter and death text==
 
A particular line of text is shown when you encounter and defeat an enemy; for example, "X suddenly attacked!" and "X became tame!". These values are one byte each, and they correspond to the [[MOTHER_3:Battle_text|battle text table]].
 
A particular line of text is shown when you encounter and defeat an enemy; for example, "X suddenly attacked!" and "X became tame!". These values are one byte each, and they correspond to the [[MOTHER_3:Battle_text|battle text table]].
 +
 +
==Memo sprite height==
 +
Combined with the base value in the [[MOTHER_3:Enemy_memo_placement|Enemy height placement table]] (In Battle Memory), these two bytes will tell the game how much to change the sprite placement value in the Battle Memory menu.<br>
 +
In particular, byte 70 is for the Front sprite and byte 71 is for the Back sprite.
 +
 +
==Multi death animation==
 +
These bytes are the ones the game reads to get what animation to play when an enemy dies if there are still other enemies on the field.<br>
 +
0xA7 (sprite disappears) is for normal enemies and 0xA8 (sprite gets white) is for bosses.
 +
 +
==In battle sprite height==
 +
Byte 6C tells the game where to print in general the enemy sprite in battle. If 00, it will be near the center of the screen, if 01 it will be lower, if 02 it will be at the bottom.<br>
 +
This byte gets then modified by the 72 byte for the front sprite and 73 byte for the back sprite.
 +
These two values tell the game by how many pixels a sprite should be lowered more.
 +
 +
==Turnable value==
 +
If value is 01, it will be possible to turn the enemy, otherwise it won't be possible and the enemies won't turn when you enter battle with a green swirl, instead they will attack.
 +
 +
==Memo turnable==
 +
If value is 01, it will be possible to press R in the Battle Memory to change between Front and Back sprites.
 +
 +
==Single death animation==
 +
These bytes are the ones the game reads to get what animation to play when an enemy dies if there are no other enemies on the field.<br>
 +
0x01 (sprite gets launched to the background) is for normal enemies and 0x00 (sprite gets white) is for bosses.
  
 
==Item drop table==
 
==Item drop table==
Line 118: Line 158:
 
* <tt>01-03 (03)</tt> = Percent chance of being dropped
 
* <tt>01-03 (03)</tt> = Percent chance of being dropped
  
 +
==Smell weaknesses pointers==
 +
Two values of two bytes each.
 +
They are pointers to the [[MOTHER_3:Battle_text|battle text]] that should be printed.
 +
Value "E6 01" is used to prevent printing one or both weakness lines.
 
[[Category:MOTHER 3|Enemy data]]
 
[[Category:MOTHER 3|Enemy data]]

Latest revision as of 19:12, 11 February 2017

Enemy data table
Game MOTHER 3
Start Address 0xD0D28
End Address 0xD9D27
# of Entries 256 (0x100)
Entry Length 144 bytes (0x90)
Total Length 36864 bytes (0x9000)
Back to the ROM map

Overview

The enemy data table contains the stats for each enemy in the game. It does not include the enemy names; for that, see the enemy names table.

Notes: for whatever stupid freaking reason, at least one enemy (the Minor Robot) has its battle actions hard-coded. Changing its battle actions in this table seems to have no effect. Also, some enemy have hard-coded weakness text too (Miracle Fassad).

Format

Each entry in the table uses 144 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   ] [   E   ] [   F   ]
10  | [   G   ] [   H   ] [        I        ] [        J        ] [ K] [ L] [ M] [ N]
20  | [        O        ] [ P] [ Q] [ R] [ S] [        T        ] [        U       ->
30  | <-                                     U                                     ->
40  | <-                                     U                                     ->
50  | <-        U       ] [                            V                           ->
60  | <-        V       ] [   W   ] [ X] [ Y] [        Z        ] [        α        ]
70  | [   β   ] [   γ   ] [ δ] [ ε] [   ζ   ] [                  η                 ->
80  | <-        η       ] [        θ        ] [        ι        ] [        κ        ]

Smell type

Every enemy has a type that's revealed when you smell them. What the game does is simply taking this value, dividing it for 0x100 and adding it 0x01F2 to get the pointer to the correct line from the battle text.

Overworld sound

If the overworld sprite of the enemy in the Object table is set to have sounds, these bytes are the pointer which gets read.

These numbers correspond to the song pointer table, and not to the sound player songlist.

Battle background

Each enemy has a battle background associated with it. This number corresponds to the battle background master table.

Music numbers

Each enemy has three songs associated with it:

  • The swirl music plays when you first touch the enemy, and the swirl animates
  • The battle music plays throughout the battle
  • The win music plays when you win the battle

These numbers correspond to the song pointer table, and not to the sound player songlist.

Weakness table

Each enemy has a table of 20 different weakness values. Each value is 16 bits. The higher the value is, the weaker the enemy is to that particular ailment/ability. The weaknesses are:

00: Poison 0A: Numbness?
01: Paralysis 0B: DCMC
02: Sleep 0C: Wall staple
03: Strange 0D: Apologize
04: Cry 0E: Make laugh
05: Forgetful 0F: PK Love, Starstorm, Ground
06: Nausea 10: PK Fire
07: Fleas 11: PK Freeze
08: Burned 12: PK Thunder
09: Solidified 13: Bomb

Action table

Each enemy has eight battle actions; each action value is 16 bits. The values correspond to the battle actions table.

Encounter and death text

A particular line of text is shown when you encounter and defeat an enemy; for example, "X suddenly attacked!" and "X became tame!". These values are one byte each, and they correspond to the battle text table.

Memo sprite height

Combined with the base value in the Enemy height placement table (In Battle Memory), these two bytes will tell the game how much to change the sprite placement value in the Battle Memory menu.
In particular, byte 70 is for the Front sprite and byte 71 is for the Back sprite.

Multi death animation

These bytes are the ones the game reads to get what animation to play when an enemy dies if there are still other enemies on the field.
0xA7 (sprite disappears) is for normal enemies and 0xA8 (sprite gets white) is for bosses.

In battle sprite height

Byte 6C tells the game where to print in general the enemy sprite in battle. If 00, it will be near the center of the screen, if 01 it will be lower, if 02 it will be at the bottom.
This byte gets then modified by the 72 byte for the front sprite and 73 byte for the back sprite. These two values tell the game by how many pixels a sprite should be lowered more.

Turnable value

If value is 01, it will be possible to turn the enemy, otherwise it won't be possible and the enemies won't turn when you enter battle with a green swirl, instead they will attack.

Memo turnable

If value is 01, it will be possible to press R in the Battle Memory to change between Front and Back sprites.

Single death animation

These bytes are the ones the game reads to get what animation to play when an enemy dies if there are no other enemies on the field.
0x01 (sprite gets launched to the background) is for normal enemies and 0x00 (sprite gets white) is for bosses.

Item drop table

This table has three entries, with four bytes each:

  • 00-00 (01) = Item number
  • 01-03 (03) = Percent chance of being dropped

Smell weaknesses pointers

Two values of two bytes each. They are pointers to the battle text that should be printed. Value "E6 01" is used to prevent printing one or both weakness lines.