Changes

Jump to navigation Jump to search

FF8/WorldMap wmsetxx

2,105 bytes added, 00:24, 14 January 2021
Section 35: World Map draw points
Every single byte is regionID used for example in section1 for encounters.
=== Section 3: UNKNOWN World Map Encounters Flags ===
UNKNOWNOne byte per encounter group in section 4. Always 0 on railways/roads, always 12 on forests, 128 on Island closest to Hell/Heaven, 3 in Galbadia Desert (day and night) and 2 for everything else.
=== Section 4: World Map Encounters ===
! style="background:rgb(204,204,204)" | Description
|-
| section1.ESI * 816| 8 16 bytes| 2 * 8 bytes of encounters from scene.out
|}
It's as simple as that:
Squall makes step on worldmap, game gets Squall position and tests it with section2 containing region, then loops through section1 and tests groundID and regionID to find ESI multiplier, if random number generates battle, then game gets to section4 using ESI determined earlier with Squall step on world map and plays randomly one of the eight encounters (because one ESI/encounterEntry is 8 16 bytes, where first four words are the most common, other 2 medium and last 2 rarest)
=== Section 5: UNUSED Encounter Flags (after Lunar Cry) ===
Unused in-game
One byte (always 8 here) per encounter group in section 6. Analog to section 3, but for Lunar Cry encounters. === Section 6: World Map Encounters (after Lunar Cry) ===  Same format as Section 4, but only with Lunar Cry encounters.You can use the section 1 to obtain ground, this way: search in section 1 for region == 10 (Esthar), and substract 80 from the esi value, you will obtain the correct esi for the section 6. === Section 7-8: roads, train track, bridge === Related with Section 39. Maybe scripts in section 8. (like sections 10, 12 and 32) Script format (ScriptsCount must be guessed): {| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"! style="background:rgb(204,204,204)" | Offset! style="background:rgb(204,204,204)" | Length! style="background:rgb(204,204,204)" | Description|-| 0| 4 * ScriptsCount + 4| List of script positions, not always sorted (ended with 0x00000000)|-| 4 * ScriptsCount + 4| Varies + 4| Scripts data (ended with 0x00000000)|} In script data you have 4-bytes opcodes, the first byte is the identifier, and the last two bytes are the parameter (the second byte is always 0xFF).Scripts always start with 0x01 opcode, and finish with 0x16 opcode. There is always one 0x04 opcode inside.For now most is unknown, I only understood that 0x2B opcode refer to scene ID in its parameter (you can find UFO, Koyo-K and Lac Obel battles in Section 32). === Section 9: UNKNOWN === === Section 10-11: UNKNOWN (Related to Squall model) === Maybe scripts in section 10. (like sections 8, 12 and 32) === Section 12-13: UNKNOWN === Maybe scripts in section 12. (like sections 8, 10 and 32)
=== Section 14: Side quests texts/tialogs ===
PointLunatic Pandora Laboratory1:Airstation1 Sorceress Memorial
=== Section 33-34: UNKNOWN Light related ===UNKNOWN
=== Section 35: World Map draw points===
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
|-
| 0x00
| WORDBYTE
| World block X
|-
| 0x01
| BYTE
| World block Y
|-
| 0x02
| WORD
| World block YMagic ID
|}
X = rowBlockAmount, which is 4 times segment amount so 4 * 32 = 128 or 0x80. The last bit tells which row of the two we are on, first or second. The range of top row is from 0x00 - 0x7F and second row's 0x80 - 0xFF.
Y is incremented whenever X goes over 0xFF.
=== Section 36-37: UNKNOWN ===
UNKNOWNMaybe scripts in section 37. (like sections 8, 10 and 12)
=== Section 38: World map textures archive ===
|}
=== Section 43-47: UNKNOWN Sound/music related ===
UNKNOWNStarts with AKAO === Section 44: Music related === Starts with AKAO
=== Section 45-48: AKAO frame Sound/music related ===
Starts with AKAO
17
edits

Navigation menu