Qhimm.com Forums
Miscellaneous Forums => Scripting and Reverse Engineering => Topic started by: The SaiNt on 2001-11-25 12:23:00
-
Strain your eyes...
And see if you can spot the interesting thing I'm trying to point out.
I'm not giving any clues... :wink:
http://zhenjock.digitalrice.com/newworldmap.png
PS- Fice : Don't tell them so soon :grin:
-
Wow! Cool! You figured out the world map!
1 question though... How do I get into the cave? :wink:
Sephiroth 3D
"I don't understand..." "You don't have to understand." - Final Fantasy: The Spirits Within
Sephiroth 3D.com (http://www.sephiroth3d.com)
[email protected]
-
all i c that is different is a dot in the top left hand corner of the map. unless uve created a new location?
-
Now you can strain your eyes on my pictures instead.
First of all, take a look at this:
http://hal2k.no-ip.com:9880/ficedula/vwm1.png
Now take a look at these two:
http://hal2k.no-ip.com:9880/ficedula/vwm2.png
http://hal2k.no-ip.com:9880/ficedula/vwm3.png
Interesting? I think it might be...
-
Haha, fice we might have just stumbled across the same information at the same time. I was just gonna make a post about what I found out, looks like you beat me to it :wink:
Should we exchange notes then?
I doubt I have more than you cause I'm busy rushing to finish my 3 assignments which are due next week! :sad:
-
Actually, you may well have more than me; I'm extracting information in a hacky, unreliable way. My way is what I'd regard as a last resort; if we can't extract world map info in any other way...
So, yes, we need to compare notes! I'll be on ICQ (well Trillian) for a while today, and most of tomorrow (planning to stay in and get stuff done on Wednesday).
-
MAP FILES
---------
Each block consists of 0xB800 bytes.
The MAP files & the BOT files are next to identical.
This leads me to believe that they are in fact World Map's for different discs.
WM0 is divided into 70 Blocks.
The world Map is Drawn like this:-
+----+----+----+----+----+----+----+----+----+
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
+----+----+----+----+----+----+----+----+----+
| 10 | 11 Duplicates Until End |
+----+----+----+----+----+----+----+----+----+
| 12 Duplicates| 13 | Etc Etc... Haven't Looked at It yet
+----+----+----+----+
Obviously, the data for which block goes where, seems to be stored in another file.
Each block starts with at 0x40 byte header.
These are the Section Offsets.
Each Section offset is 4 bytes long.
So, in total, a Block has 64 Sections.
So, from the 70 Blocks above, if I decide to enlarge Block 1,
-------------------
!Enlarged Block 01!
-------------------
+----+----+----+----+----+----+----+----+
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
+----+----+----+----+----+----+----+----+
| 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
+----+----+----+----+----+----+----+----+
| 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
+----+----+----+----+----+----+----+----+
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
+----+----+----+----+----+----+----+----+
| 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
+----+----+----+----+----+----+----+----+
| 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
+----+----+----+----+----+----+----+----+
| 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
+----+----+----+----+----+----+----+----+
| 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
+----+----+----+----+----+----+----+----+
Each section begins with a 4 byte value that indicates the size of the section.
However,
[Beginning Offset of Section 1] + [Section Size of Section 1] + 4 != [Beginning Offset of Section 2]
You might encounter some byte(s) of 00 at the end!
Therefore, it is more reliable to read the the offsets for sections from the Section Offset Header instead.
A header follows, but I'm not sure how long the header is, or rather I haven't had the time to check where it is.
From one Section that I have tested so far, the
-------------------------------------------------------------
This Section is Completely Theoratical or Experimental! Start
-------------------------------------------------------------
If the vertexes start in different places, then the likely things are
offset 0x1F indicates the number of vertexes.
offset 0X20 indicates the offset where the vertex section begins.
or
the vertex pool should start at 0x26
or
something else that I'm not sure of.
-----------------------------------------------------------
This Section is Completely Theoratical or Experimental! End
-----------------------------------------------------------
To give an illustration about what I'm talking about, take a look at this picture
http://www.arcticnetwork.net/nextff/zhenjock/Empty.png
This is a screenshot of one section of the world map in RAW Mode.
See the section in the center where there are even blocks of white?
Well, that's the vertex pool.
A note : Although each block shares vertexes internally, they do not share vertexes with each other.
So you can actually have very "sharp" edges for a block.
Anyway,in the vertex pool, the values are *usually* 12 bytes apart.
Meaning 3 X 4 bytes of Coordinate X/Y/Z respectively.
There are exceptions though and I haven't looked at them yet.
I don't know what the last few bytes represent yet.
That's pretty much how much I know at the moment.
Please tell me if you get anything new, ok?
-
I'm moving this thread out to tech related soon, unless there are any objections.
Please do reply even if agree ok?
-
Sure, go ahead.
-
There, done!
-
Yay! wait a minute....
-
Hmmm... I thought it was weird that it was out here... Oh well.
Sephiroth 3D
"I don't understand..." "You don't have to understand." - Final Fantasy: The Spirits Within
Sephiroth 3D.com (http://www.sephiroth3d.com)
[email protected]
-
If you look at the vertex pool, this is one of the possible cases you will see. There are a few more exceptions but they work more or less in the same way:-
+--------------------------------------Length Indicator (73 for 10 values)
|
| +--------Texture For Triangle. (This also determines the walkability)
| |
| |
73 01 02 00 00 F7 F4 0A 02 0B 01 06----Unknown
| | | | | | | | |
| | | | | | +--+--+-----------Vertices to use to for the Triangle (Center Value is the vertice defined)
| | | | | |
| | | | +--+--------------------Z-Coordinate
| | +--+--------------------------Y-Coordinate
+--+--------------------------------X-Coordinate
Length Indicator
02 11 Values
03 10 Values
[edited] 1 2001-12-18 14:56
[edited] 1 2001-12-18 14:57
[edited] 1 2001-12-18 14:57
[edited] 1 2001-12-18 14:58
[edited] 1 2001-12-18 14:59
[edited] 1 2001-12-18 14:59
[edited] 1 2001-12-18 14:59
-
Ok, just to divide experimental stuff and the facts, I'm gonna list down the facts. If anything here is different from above, trust the facts available in this post.
The world map is stored in WM0.MAP
Segments
--------------
There are 70 "Segments" in the world map.
Each segment is 0xB800 bytes in size.
Imagine the world map as a square piece of paper with grids.
Each segment represents the data for one grid.
Everything is relative to the segment, so this means you can switch one segment with another.
Segment Header
------------------------
Each segment has a 0x40 byte header.
The header represents the offsets of 16 "Sections".
Sections
------------
The first 4 bytes of a section are the size.
Imagine that each section is another paper with grids.
Each section is one grid in a "segment".
Currently, I'm playing with the vertex pools within each section. I probably won't release more information till I get everything confirmed. If you're interested the post just above this one is "part" of what I'm researching now.
So, till then here's a pic for all of you ;)
Now which Island was it again? (http://zhenjock.digitalrice.com/wherewasit.png)
-
Sounds cool! (if I understood what you said... Damn my lack of programming skills!)
Actually, I've been thinking about this, and wouldn't all the FF worlds be donut shaped? Think about it... The top & the bottom have to be connected, so you get a cylinder right there, but then the sides have to touch, so you wrap it around so the two remaining sides are touching, and you get a donut shape...
I just thought that was interesting...
Sephiroth 3D
"I don't understand..." "You don't have to understand." - Final Fantasy: The Spirits Within
Sephiroth 3D.com (http://www.sephiroth3d.com)
[email protected]
-
No, I'm pretty sure it just makes it a square that "wraps" at the edges to the opposite side. Wouldn't work in reality, but that doesn't really matter ;)
-
if (location <= leftside)
location = rightside;
i always thought of i like that
-
No Fice... I'm talking about reality... in real life, if such a world existed, it would have to be donut-shaped in order for the sides to work as they do in the game.
That's what I was trying to say...
Sephiroth 3D
"I don't understand..." "You don't have to understand." - Final Fantasy: The Spirits Within
Sephiroth 3D.com (http://www.sephiroth3d.com)
[email protected]
-
Oh, sorry, I get you. Yes, you're quite right.