Changes

Jump to navigation Jump to search

FF8/BattleStructure

11,621 bytes removed, 01:30, 6 January 2020
no edit summary
This file is an archive By JeMaCheHi Scene.out contains enemy placement data and flags for each of the contains 117 filesgame's battle encounters. I created map by reading [[FF8/Menu_mngrphd_bin|mngrphd.bin]] and filling in data from [ See the corresponding thread: http://forums.qhimm.com/index.php?topic=1709915816.0 FF8 - mngrp.bin by JWP]. ==Mapped DataFile Structure==Scene.out contains no header. It is a raw list of 1024 encounters. Each encounter block consists of 128 bytes and has the following structure: 
{| class="wikitable"
|-! Pos! Seek! SizeOffset! FilenameLength
! Description
|-
! align="left" | 00x00| 0x01| 0x800| [[FF8/Menu_tkmnmes|tkmnmes1Battle scenario. The value here corresponds to the number in the a0stg???.x files (into battle.fs file).bin]]| Encoded string archiveStarts with padding values<br/>Has location values before strings<br/>Strings end with '''0x00'''You have to convert it to hex
|-
! align="left" | 0x01
| 1
| 0x800| 0x1800| [[FF8/Menu_tkmnmes|tkmnmes2.bin]]| Encoded string archiveStarts with padding values<br/>Has location values before strings<br/>Strings end with '''0x00'''Refers to some battle aspects and it works like 8 binary switches (see below)
|-
! align="left" | 20x02| 0x20001| 0x2000| [[FF8/Menu_tkmnmes|tkmnmes3Still don't know, but I suspect that it has something to do with camera movement.bin]]| Encoded string archiveStarts with padding values<br/>Has location values before strings<br/>Strings end with '''0x00'''If you set it to 0xFF camera will always be fixed
|-
! align="left" | 3| 0x4000| 0xE0000x03|1|unkonwn
|-
! align="left" | 4| 0x12000| 0x10000x04|1|Visible enemies. Shows an enemy for each bit in the byte. (see below for "enemy switches")
|-
! align="left" | 50x05| 0x130001| 0x6800| [[FF8/Menu_sp2#Content_of_face1Loaded enemies.tex_and_face2Show the enemies that are been actually fought.tex|face1Loaded enemies will attack you.tim]]| Character portraits
|-
! align="left" | 60x06| 0x198001| 0x6800| [[FF8/Menu_sp2#Content_of_face1Targetable enemies.tex_and_face2Show the enemies which will apear in the target window.tex|face2Careful with this, if you put untargetable enemies battle will never end.tim]]| GF portraits(see "enemy switches" too)
|-
! align="left" | 70x07| 0x200001| 0x800| magitaNumber of enemies. Also works like eight binary switches.tim| Tutorial/Magazine background textureSee below
|-
! align="left" | 0x08
| 48
| Enemy coordinates. Its a set of 6x8 bytes which describes each enemy's coordinate in (x,y,z) format. So, first 6 bytes would be enemy 1's coords, next 6 enemy 2's ones, and so on.
|-
! align="left" | 0x38
| 8
| 0x20800| 0xE000| start00_and_start01Enemies. Each byte represents an enemy. To know what enemy you're working with, you can check the c0m???.dat files in battle.fs. You just have to convert it to hex and add 0x10. Be careful, if you put numbers under 0x10 as enemies, battle will crush.tim| Title screen logo
|-
! align="left" | 90x40| 0x2E80016| 0xC800| [[ff8/Menu_mag_textures|mag00.tim]]| Weapons Monthly, 1st Issueunknown
|-
! align="left" | 100x50| 0x3B00016| 0xC800| [[ff8/Menu_mag_textures|mag07.tim]]| Pet Pals|-| 11| 0x47800| 0xC800| [[ff8/Menu_mag_textures|mag00.tim]]| Weapons Monthly, 1st Issueduplicate of 0x2E800|-| 12| 0x54000| 0xC800| [[ff8/Menu_mag_textures|mag01.tim]]| Weapons Monthly, March Issue|-| 13| 0x60800| 0xC800| [[ff8/Menu_mag_textures|mag02.tim]]| Weapons Monthly, April Issue|-| 14| 0x6D000| 0xC800| [[ff8/Menu_mag_textures|mag03.tim]]| Weapons MonthlyStill under research, May Issue|-| 15| 0x79800| 0xC800| [[ff8/Menu_mag_textures|mag04but this is usually the same as the previous field's value.tim]]| Weapons Monthly, June Issue
|-
! align="left" | 0x60
| 16
| 0x86000| 0xC800| [[ff8/Menu_mag_textures|mag05.tim]]| Weapons Monthly, July Issueunknown
|-
! align="left" | 170x70| 0x928008| 0xC800| [[ff8/Menu_mag_textures|mag06.tim]]| Weapons Monthly, August Issueunknown
|-
! align="left" | 180x78| 0x9F0008| 0xC800| [[ff8/Menu_mag_textures|mag08Enemy level.tim]]| Occult Fan I & II|-| 19| 0xAB800| 0xC800| [[ff8/Menu_mag_textures|mag09Each enemy level is 1 byte.tim]]| Occult Fan III & IV|-| 20| 0xB8000| 0xC800| [[FF8/Menu_sp2#Content_of_mc00Numbers from 1 to 100 are fixed levels.tex-mc09.tex|mc00.tim]]| Card textures for menus|-| 21| 0xC4800| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc01.tim]]| Card textures for menus|-| 22| 0xD1000| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc02.tim]]| Card textures for menus|-| 23| 0xDD800| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc03.tim]]| Card textures for menus|-| 24| 0xEA000| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc04.tim]]| Card textures for menus|-| 25| 0xF6800| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc05.tim]]| Card textures for menus|-| 26| 0x103000| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc06.tim]]| Card textures for menus|-| 27| 0x10F800| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc07.tim]]| Card textures for menus|-| 28| 0x11C000| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc08.tim]]| Card textures for menus|-| 29| 0x128800| 0xC800| [[FF8/Menu_sp2#Content_of_mc00.tex-mc09.tex|mc09.tim]]| Card textures for menus|-| 30| 0x135000| 0x11800| PSX_Controller00.tim| Field controls tutorial image|-| 31| 0x146800| 0x11800| PSX_Controller01.tim| World map controls tutorial image|-| 32| 0x158000| 0x11800| PSX_Controller02.tim| Battle controls tutorial image|-| 33| 0x169800| 0xC800| [[ff8/Menu_mag_textures|mag10.tim]]| Triple Triad tutorial|-| 34| 0x176000| 0xC800| [[ff8/Menu_mag_textures|mag11.tim]]| Triple Triad tutorial|-| 35| 0x182800| 0xC800| [[ff8/Menu_mag_textures|mag12.tim]]| Triple Triad tutorial|-| 36| 0x18F000| 0xC800| [[ff8/Menu_mag_textures|mag13.tim]]| Battle tutorial|-| 37| 0x19B800| 0xC800| [[ff8/Menu_mag_textures|mag14.tim]]| Battle tutorial|-| 38| 0x1A8000| 0x3000| [[FF8/Menu_mngrp_strings_locations|strings_locations00.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 39| 0x1AB000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations01.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 40| 0x1AB800| 0x1000| [[FF8/Menu_mngrp_strings_locations|strings_locations02.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 41| 0x1AC800| 0x1000| [[FF8/Menu_mngrp_strings_locations|strings_locations03.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 42| 0x1AD800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations04.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 43| 0x1AE000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations05.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 44| 0x1AE800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations06.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 45| 0x1AF000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations07.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 46| 0x1AF800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations08.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 47| 0x1B0000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations09.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 48| 0x1B0800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations10.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 49| 0x1B1000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations11.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 50| 0x1B1800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations12.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 51| 0x1B2000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations13.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 52| 0x1B2800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations14.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 53| 0x1B3000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations15.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 54| 0x1B3800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations16.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 55| 0x1B4000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations17.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 56| 0x1B4800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations18.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 57| 0x1B5000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations19.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 58| 0x1B5800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations20.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 59| 0x1B6000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations21.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 60| 0x1B6800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations22.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 61| 0x1B7000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations23.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 62| 0x1B7800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations24.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 63| 0x1B8000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations25.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 64| 0x1B8800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations26.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 65| 0x1B9000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations27.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 66| 0x1B9800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations28.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 67| 0x1BA000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations29.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 68| 0x1BA800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations30.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 69| 0x1BB000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations31.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 70| 0x1BB800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations32.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 71| 0x1BC000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations33.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 72| 0x1BC800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations34.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 73| 0x1BD000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations35.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 74| 0x1BD800| 0x800| [[FF8/Menu_mngrp_complex_strings|Complex_Map.bin]]| Map for Complex Strings 00-05|-| 75| 0x1BE000| 0x4800| [[FF8/Menu_mngrp_complex_strings|Complex_Strings00.bin]]| Encoded string archive.|-| 76| 0x1C2800| 0x4000| [[FF8/Menu_mngrp_complex_strings|Complex_Strings01.bin]]| Encoded string archive.|-| 77| 0x1C6800| 0x4800| [[FF8/Menu_mngrp_complex_strings|Complex_Strings02.bin]]| Encoded string archive.|-| 78| 0x1CB000| 0x4000| [[FF8/Menu_mngrp_complex_strings|Complex_Strings03.bin]]| Encoded string archive.|-| 79| 0x1CF000| 0x2800| [[FF8/Menu_mngrp_complex_strings|Complex_Strings04.bin]]| Encoded string archive.|-| 80| 0x1D1800| 0x4800| [[FF8/Menu_mngrp_complex_strings|Complex_Strings05.bin]]| Encoded string archive.|-| 81| 0x1D6000| 0x1000| [[FF8/Menu_mngrp_strings_locations|strings_locations36.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 82| 0x1D7000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations37.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 83| 0x1D7800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations38.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 84| 0x1D8000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations39.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 85| 0x1D8800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations40.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 86| 0x1D9000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations41.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 87| 0x1D9800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations42.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 88| 0x1DA000| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations43.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 89| 0x1DA800| 0x800|-| 90| 0x1DB000| 0x800|-| 91| 0x1DB800| 0x800|-| 92| 0x1DC000| 0x800|-| 93| 0x1DC800| 0x800|-| 94| 0x1DD000| 0x800|-| 95| 0x1DD800| 0x800|-| 96| 0x1DE000| 0x800|-| 97| 0x1DE800| 0x800|-| 98| 0x1DF000| 0x800|| text with binary dataGF names some misspelled/truncated |-| 99| 0x1DF800| 0x800|-| 100| 0x1E0000| 0x800|| text with binary dataGF names some misspelled/truncated<BR/>Very similar From 101 to 0x1DF000|-| 101| 0x1E0800| 0xC800| [[ff8/Menu_mag_textures|mag15.tim]]| Chocobo world cartoon|-| 102| 0x1ED000| 0xC800| [[ff8/Menu_mag_textures|mag16.tim]]| Tutorial image|-| 103| 0x1F9800| 0xC800| [[ff8/Menu_mag_textures|mag17.tim]]| Tutorial image|-| 104| 0x206000| 0xC800| [[ff8/Menu_mag_textures|mag18.tim]]| Chocobo world sketch cartoon|-| 105| 0x212800| 0xC800| [[ff8/Menu_mag_textures|mag19.tim]]| Chocobo world sketch cartoon<br/>Duplicate of 0x206000|-| 106| 0x21F000| 0x800| [[FF8/Menu_m000_m004|m000.bin]]| Locations for msg fileand Refine values.|-| 107| 0x21F800| 0x800| [[FF8/Menu_m000_m004|m001.bin]]| Locations for msg fileand Refine values.|-| 108| 0x220000| 0x800| [[FF8/Menu_m000_m004|m002.bin]]| Locations for msg fileand Refine values.|-| 109| 0x220800| 0x800| [[FF8/Menu_m000_m004|m003199 are max levels fixed (min level remains 1).bin]]| Locations for msg fileand Refine valuesWhen 255, it is disabled (standard behaviour).|-| 110| 0x221000| 0x800| [[FF8/Menu_m000_m004|m004And 215 (Deep Sea), 210 (Deep Sea), 251 (Final Bosses), 252 (Ultimecia Castle), 254 (Scripted battles).bin]]| Locations for msg fileand Refine values.|-| 111| 0x221800| 0x1800| [[FF8/Menu_m000_m004|m000.msg]]| Strings end with Still don'''0x00'''|-| 112| 0x223000| 0x2000| [[FF8/Menu_m000_m004|m001t know.msg]]| Strings end with '''0x00'''|-| 113| 0x225000| 0x800| [[FF8/Menu_m000_m004|m002.msg]]| Strings end with '''0x00'''|-| 114| 0x225800| 0x800| [[FF8/Menu_m000_m004|m003.msg]]| Strings end with '''0x00'''|-| 115| 0x226000| 0x1800| [[FF8/Menu_m000_m004|m004.msg]]| Strings end with '''0x00'''|-| 116| 0x227800| 0x800| [[FF8/Menu_mngrp_strings_locations|strings_locations44.bin]]| Encoded string archive.Has location values before strings<br/>Strings end with '''0x00'''|-| 117| 0x228000| 0x800
|}
 
==Notes==
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 switches. Here's what I've found:
 
In 0x01:
{{:FF8/Field/Script/Opcodes/069 BATTLE}}
 
In 0x04, 0x05, 0x06, and 0x07
:+128: 1st enemy relative
:+64: 2nd enemy relative
:+32: 3rd enemy relative
:+16: 4th enemy relative
:+8: 5th enemy relative
:+4: 6th enemy relative
:+2: 7th enemy relative
:+1: 8th enemy relative
 
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 think) that summoning is scripted in its AI (in c9m???.dat)
17
edits

Navigation menu