Difference between revisions of "FF7/Field/Encounter"
my_wiki>Synergy Blades m (→Section 7 (Terrence Ferguson)) |
my_wiki>Synergy Blades (Rewrite.) |
||
Line 1: | Line 1: | ||
− | + | Section 7 provides encounter data for the field by referencing [[FF7/Battle/Battle_Scenes|battle IDs]] and providing probabilites for each type of encounter required. The section consists of two ''encounter tables'' that hold sets of these battle configurations; these tables may be switched between using field scripting. The two encounter tables are contiguous and follow directly after the section's length description; due to the presence of the two encounter tables regardless of whether they are used or not, the section length is always 48 bytes. | |
− | + | <cpp> | |
+ | struct SECTION_ENCOUNTER | ||
+ | { | ||
+ | u32 section_length; /* 0x30 */ | ||
+ | ENC_TABLE tables[2]; | ||
+ | }; | ||
+ | </cpp> | ||
− | |||
− | + | == Encounter Table Structure == | |
− | + | ||
− | + | <cpp> | |
− | + | struct ENC_TABLE | |
− | + | { | |
− | + | u8 enabled; | |
+ | u8 rate; | ||
+ | ENCOUNTER enc_standard[6]; | ||
+ | ENCOUNTER enc_special[4]; | ||
+ | u16 _pad; | ||
+ | } | ||
+ | </cpp> | ||
+ | |||
+ | The first byte of the table provides a switch to signify whether this table is used or not. If set to ''0'' encounters will not be used, regardless of the table contents; ''1'' signifies the table will be used. The second byte signifies the main encounter rate, and ranges from 0xFE (battles occur infrequently) to 0x01 (battles occur very frequently). | ||
+ | |||
+ | Following these are the ten encounter structures; these are divided into two groups of six and four, as detailed below. There is also a further two-byte "padding" value, used for alignment. | ||
+ | |||
+ | |||
+ | == Encounter Structure == | ||
+ | |||
+ | <cpp> | ||
+ | struct ENCOUNTER /* pseudo */ | ||
+ | { | ||
+ | bit prob[6]; | ||
+ | bit encounter_id[10]; | ||
+ | } | ||
+ | |||
+ | // Create from two-byte value | ||
+ | u16 enc_entry; /* holds the read value */ | ||
+ | u8 prob = enc_entry >> 10; | ||
+ | u8 encounter_id = enc_entry & 0x03FF; | ||
+ | |||
+ | </cpp> | ||
+ | |||
+ | Each individual two-byte encounter entry is further split into two groups of bits. | ||
+ | |||
+ | The first six bits denote the probability for this encounter; the sum of all the probabilites for the standard encounters is 64, though this is not the case for the special battles. For further information on how encounter probabilities are used and calculated, Terence Fergusson's [http://db.gamefaqs.com/console/psx/file/final_fantasy_vii_enemy_mech.txt Battle Mechanics Guide] contains detailed information. | ||
+ | |||
+ | The second ten bits denote the [[FF7/Battle/Battle_Scenes|ID]] of the battle. | ||
+ | |||
+ | |||
+ | == Battle Entry Types == | ||
+ | |||
+ | The set of ten battles is split into two groups. The first six battles are generic battles, intended for general use, and whose probabilities must total 64. The final four battles are intended to be used in the following order: | ||
+ | |||
+ | * Back Attack 1 | ||
+ | * Back Attack 2 | ||
+ | * Pre-Emptive Attack | ||
+ | * Attack From Both Sides |
Revision as of 17:08, 1 February 2007
Section 7 provides encounter data for the field by referencing battle IDs and providing probabilites for each type of encounter required. The section consists of two encounter tables that hold sets of these battle configurations; these tables may be switched between using field scripting. The two encounter tables are contiguous and follow directly after the section's length description; due to the presence of the two encounter tables regardless of whether they are used or not, the section length is always 48 bytes.
<cpp> struct SECTION_ENCOUNTER {
u32 section_length; /* 0x30 */ ENC_TABLE tables[2];
}; </cpp>
Encounter Table Structure
<cpp> struct ENC_TABLE {
u8 enabled; u8 rate; ENCOUNTER enc_standard[6]; ENCOUNTER enc_special[4]; u16 _pad;
} </cpp>
The first byte of the table provides a switch to signify whether this table is used or not. If set to 0 encounters will not be used, regardless of the table contents; 1 signifies the table will be used. The second byte signifies the main encounter rate, and ranges from 0xFE (battles occur infrequently) to 0x01 (battles occur very frequently).
Following these are the ten encounter structures; these are divided into two groups of six and four, as detailed below. There is also a further two-byte "padding" value, used for alignment.
Encounter Structure
<cpp> struct ENCOUNTER /* pseudo */ {
bit prob[6]; bit encounter_id[10];
}
// Create from two-byte value u16 enc_entry; /* holds the read value */ u8 prob = enc_entry >> 10; u8 encounter_id = enc_entry & 0x03FF;
</cpp>
Each individual two-byte encounter entry is further split into two groups of bits.
The first six bits denote the probability for this encounter; the sum of all the probabilites for the standard encounters is 64, though this is not the case for the special battles. For further information on how encounter probabilities are used and calculated, Terence Fergusson's Battle Mechanics Guide contains detailed information.
The second ten bits denote the ID of the battle.
Battle Entry Types
The set of ten battles is split into two groups. The first six battles are generic battles, intended for general use, and whose probabilities must total 64. The final four battles are intended to be used in the following order:
- Back Attack 1
- Back Attack 2
- Pre-Emptive Attack
- Attack From Both Sides