Anonymous

Changes

From Final Fantasy Inside

FF8/BattleStructure

3,019 bytes added, 14:55, 1 August 2015
no edit summary
! align="left" | 0x01
| 1
| Refers Flags to configure some battle aspects parameters and it works like 8 binary switches flags (see below)
|-
! align="left" | 0x02
| 1
| Still donMain camera animation. This is for the battle entrance animation (when the party and the monsters appear). The first nibble represents the '''camera number'''t know, but I suspect that it has something to do with camera movementthe second one the '''animation number'''. If you set it to 0xFF camera will always be fixed(See below about cameras)
|-
! align="left" | 0x03
| 1
| unkonwnSecondary camera. Works exactly the same as the main camera, but this one will be used less frecuently.(See below about cameras)
|-
! align="left" | 0x04
| 1
| Visible Hidden enemies. Shows Hides an enemy for each activated bit in the byte. (see below for "enemy switchesflags")
|-
! align="left" | 0x05
| 1
| Loaded enemies. Show the enemies that are been actually fought. Loaded enemies will attack you(also, refer to "enemy flags").
|-
! align="left" | 0x06
| 1
| Targetable enemies. Show the enemies which will apear appear in the target window. Careful with this, if you put untargetable enemies battle will never end. (see "enemy switchesflags" too)
|-
! align="left" | 0x07
| 1
| Number of Enabled enemies. Also works like eight binary switchesflags. Each activated flag is an enabled enemy. If the flag for a certain enemy is disabled, the three previous sections will be ignored. See below
|-
! align="left" | 0x08
! align="left" | 0x40
| 16
| unknownUnknown. A certain enemy also has always the same value (f.e G-Soldier -> 0x7f70), and some of this values can be repeated between enemies. Slots with no enemies (with a dummy) always have the value 0x00C8.
|-
! align="left" | 0x50
| 16
| Still under research, but this is usually Unknown. It always has the same value as the previous field's valuesection.
|-
! align="left" | 0x60
| 16
| unknownUnknown. A certain enemy has always the same value but different from the two previous sections. Slots with no enemies always have the value 0xEA60
|-
! align="left" | 0x70
| 8
| unknownUnknown. Once more, A certain enemy has always the same value but different from previous sections.
|-
! align="left" | 0x78
|}
==NotesAbout flags==
Each 128block can have up to 8 enemies, but if more than 4 are shown at the same time, the game will crash. This could seem stupid, but it's not. If you think about some battles, like the final battle (where we have 8 enemies), all the monsters are present, but only one or two are shown at any given time. The rest appear through scripting.
Some byte fields are just 8 switchesflags contained in a byte. To configure it you just have to sum the values you need. Here's what I've found:
In 0x01(battle configuration flags):{{:FF8/Field/Script/Opcodes/069 BATTLE}}+0x80: Not random fight. Every scripted battle has this one enabled.:+0x40: Force back attack (you will be back attacked, not the enemy).:+0x20: Force surprise attack (as before, you are the one surprise attacked).:+0x10: Doesn't show exp screen at end.:+0x08: No exp will be gained at the end of battle (like in boss battles).:+0x04: Shows the timer on battle. Like in dollet withdraw combats, or missile base.:+0x02: This disables victory fanfare.:+0x01: Can't escape.
In 0x04, 0x05, 0x06, and 0x07(hidden/loaded/targetable/enabled enemies).:+1280x80: 1st enemy relativeflag:+640x40: 2nd enemy relativeflag:+320x20: 3rd enemy relativeflag:+160x10: 4th enemy relativeflag:+80x08: 5th enemy relativeflag:+40x04: 6th enemy relativeflag:+20x02: 7th enemy relativeflag:+10x01: 8th enemy relativeflag
An important note: If you put an enemy that "summons" another one (Ultimecia summoning Griever, Sphinxara summoning jelleye...) it will summon the enemy from certain slot. This means that if you put that enemy in another battle, it will still summon that slot, because (I thinkIt's now confirmed) that summoning is scripted in its AI (in c9m???.dat)as an enemy ability. ==About Cameras==Each encounter has two cameras, as explained above. Each camera is represented by a byte, but each byte stores two things: The camera number, and the camera animation. The camera number is stored on the most significant nibble of the byte (4 bits) and the animation is stored on the less significant nibble of the byte. I called it "Camera number" because I had to name it somehow, but I'm not even sure if they're different cameras, or just are "sets" of animations. Anyway, we'll call it that way until we find a better one.  The game engine will use one or other camera randomly, but will use the main one way more frequently (in my tests, for each 5 battles, the game used the main camera around 4 times) Also, a few considerations about these camera parameters: :-Camera number. It can take values from 0 to 3. The original scene.out never has greater values. Values greater than 3 will result in no camera animations, having a fixed camera. Some stages have less than 3 camera numbers. This leads me to think that this camera stuff is really stored on .x files, and this values are just pointers, or indexes, or something of the kind.:-Camera animation. It can take values from 0 to 7. The original scene.out never has greater values. Values higher than that will result in the same as that value minus 8. This is because the last bit of the nibble is ignored (still don't know why). Sometimes the camera has less animations than 7. In that case, if you use a number greater than actual animations, taking into account that the 4th bit is ignored, will result in a fixed scene.
Anonymous user