Difference between revisions of "Chrono Cross File Structure"

From Chrono Compendium
Jump to: navigation, search
Line 58: Line 58:
 
*002279A8 ~ 00227FFF: Unknown Data
 
*002279A8 ~ 00227FFF: Unknown Data
 
*00228000 ~ 0039EA1F: CF\OUTs 25-74
 
*00228000 ~ 0039EA1F: CF\OUTs 25-74
 +
**237000 ~ 23E21F: Guile's Long Status Screen Portrait
 
*0039EA20 ~ 0039EFFF: Unknown Data
 
*0039EA20 ~ 0039EFFF: Unknown Data
 
*0039F000 ~ 006ED3E7: CD\OUTs 75-125
 
*0039F000 ~ 006ED3E7: CD\OUTs 75-125
 +
**3C8900 ~ 3C9B20: Guile's Status Screen Eyeblink Texture
 
*006ED3E8 ~ 006ED7FF: Unknown Data
 
*006ED3E8 ~ 006ED7FF: Unknown Data
 
*006ED800 ~ 00A57A1F: ROT\OUTs 126-178
 
*006ED800 ~ 00A57A1F: ROT\OUTs 126-178
Line 70: Line 72:
 
*00B50238 ~ 00B507FF: Unknown Data
 
*00B50238 ~ 00B507FF: Unknown Data
 
*00B50800 ~ 00D87A1F: OMCM\OUTs 204-307
 
*00B50800 ~ 00D87A1F: OMCM\OUTs 204-307
 +
**B6D800 ~ B71A20: Guile Overworld Texture 1
 
*00D87A20 ~ 00DA07FF: Unknown Data
 
*00D87A20 ~ 00DA07FF: Unknown Data
 
*00DA0800 ~ 00DA7017: disk1\OUTs 308-321
 
*00DA0800 ~ 00DA7017: disk1\OUTs 308-321
Line 84: Line 87:
 
*0E585220 ~ 0E5857FF: Unknown Data
 
*0E585220 ~ 0E5857FF: Unknown Data
 
*0E585800 ~ 0E60F21F: CTF\OUTs 1993-2084
 
*0E585800 ~ 0E60F21F: CTF\OUTs 1993-2084
 +
**E588800 ~ E589A20: Guile's Small Portrait
 
*0E60F220 ~ 0E60F7FF: Unknown Data
 
*0E60F220 ~ 0E60F7FF: Unknown Data
 
*0E60F800 ~ 0FCFD167: MISC\OUTs 2085-2416
 
*0E60F800 ~ 0FCFD167: MISC\OUTs 2085-2416
Line 191: Line 195:
 
*114C8A78 ~ 114C8FFF: Unknown Data
 
*114C8A78 ~ 114C8FFF: Unknown Data
 
*114C9000 ~ 128D74EF: MISC\OUTs 3055-3707 - Character Battle Models
 
*114C9000 ~ 128D74EF: MISC\OUTs 3055-3707 - Character Battle Models
**114C9000 ~ 114D2467: 3055 - Unknown Header & Serge's battle model texture & eyeball texture
+
**114C9000 ~ 114D2467: 3055 - Texture Header & Serge's battle model texture & eyeball texture
 
**114D2468 ~ 114D27FF: Buffer 00 bytes
 
**114D2468 ~ 114D27FF: Buffer 00 bytes
 
**114D2800 ~ 114DD3DC: 3056 - Serge's battle model
 
**114D2800 ~ 114DD3DC: 3056 - Serge's battle model
 
**14DD3DD ~ 114DD7FF: Buffer 00 bytes
 
**14DD3DD ~ 114DD7FF: Buffer 00 bytes
**114DD800 ~ 114ECCA7: 3057 - Unknown Header & Serge's weapon models & textures
+
**114DD800 ~ 114ECCA7: 3057 - Serge's weapon models & textures
 
**114ECCA8 ~ 114ECFFF: Buffer 00 bytes
 
**114ECCA8 ~ 114ECFFF: Buffer 00 bytes
 
*128D74F0 ~ 128D77FF: Unknown Data
 
*128D74F0 ~ 128D77FF: Unknown Data
Line 484: Line 488:
 
   doesn't necessarily correspond to each color specification; one letter is used to represent  
 
   doesn't necessarily correspond to each color specification; one letter is used to represent  
 
   each nybble for ease of labeling.
 
   each nybble for ease of labeling.
 +
 +
For quick reference, the RG BS CLUT data in a standard TIM typically occur between addresses 0x14 and 0x214.
 
</pre>
 
</pre>
  
Line 496: Line 502:
 
   *I# = Offsets into the CLUT. One byte (8 bits) is required for each pixel because the TIM  
 
   *I# = Offsets into the CLUT. One byte (8 bits) is required for each pixel because the TIM  
 
   header specifies 8 bits-per-pixel.
 
   header specifies 8 bits-per-pixel.
 +
 +
For quick reference, the I# image data in most normal TIMs follow address 0x220
 
</pre>
 
</pre>
  
Line 521: Line 529:
 
   doesn't necessarily correspond to each color specification; one letter is used to represent  
 
   doesn't necessarily correspond to each color specification; one letter is used to represent  
 
   each nybble for ease of labeling.
 
   each nybble for ease of labeling.
 +
 +
For quick reference, the RG BS CLUT data in an Altered Format TIM typically occurs between addresses 0x1C and 0x21C.
 
</pre>
 
</pre>
  
 
IMAGE...<pre>
 
IMAGE...<pre>
?? ?? ?? ?? ?? ?? ?? ?? - I1 I2 I3 I4 .. ..</pre>
+
?? ?? ?? ?? ?? ?? ?? ?? - ?? ?? ?? ?? ?? ?? ?? ??
 +
I1 I2 I3 I4 .. ..
 +
</pre>
  
 
  Absolutely nothing is known about the IMAGE header at this time; it does not seem to   
 
  Absolutely nothing is known about the IMAGE header at this time; it does not seem to   
Line 530: Line 542:
 
  length of the IMAGE element seems to be specified.  
 
  length of the IMAGE element seems to be specified.  
  
 +
For quick reference, the I# image data in an Altered Format TIM usually follows address 0x22C.
  
  

Revision as of 21:40, 11 March 2008

Chrono Cross, released late in the PlayStation's life, was subject to clever data obfuscation by Square. Obfuscation in this sense—the art of hiding data—means at the simplest level that, if you put Chrono Cross in your hard drive, you can't browse directories and view individual assets, like character models and textures. Instead, the game disc is compiled as a unified whole with an index file at the beginning which the PlayStation / Chrono Cross read to find files and operate.

In 2002, Terminus Traduction (specifically, Yazoo, Nemesis, and Manz) successfully audited Chrono Cross and wrote a set of utilities for extracting its data. The first tools (Chrono Cross Hacking Tools) were authored by Yazoo and dump the entire game's assets. The second set of tools (Chrono Cross Translation Tools) are heavily-modified versions of Yazoo's tools primarily coded by Nemesis and his team. They are specifically geared to dump assets (such as text, scripts, images with text, and video captions) needed for translation.

Chrono Cross Hacking Tools

How do I rip proper game images from the Chrono Cross discs?

Game image: A digital copy of your game CD. A game image may be said to exist in one of two formats once it's on your hard drive: 2048 byte-per-sector format or 2352 byte-per-sector format.

Some hacking utilities are hard-coded to recognize only game images with 2352 byte sectors; others work best with 2048 byte sectors. For example, TIMViewer and PSicture interpret data correctly only for 2048 byte-per-sector images, whereas the powerful tools created by Yazoo and Nemesis require 2352 byte sectors. What's the novice hacker to do?

Ripping game images is easy, and luckily with utilities such as IsoBuster you can rip both formats. Here are the IsoBuster commands you need to know:

2048 byte-per-sector format: File -> CD -> Extract CD <Content> -> Extract User Data
2352 byte-per-sector format: File -> CD -> Extract CD <Image> -> RAW

That should put you on good footing to use all the various tools available for hacking Chrono Cross. Remember, you're going to need lots of space on your hard drive for the game images: a 2048 byte-per-sector image for Disc 1 of Chrono Cross weighs in at 611MB (641,437,696 bytes), while a 2352 byte-per-sector image is 702MB (736,651,104 bytes) in size!

Yazoo's Tools Output Folders

Yazoo's Chrono Cross hacking tools creates the following folders, each containing several .OUT files of data. NOTE: Yazoo's tools require a 2352 byte-per-sector (736,651,104 byte) .bin file as input.

  • BF = 2417-2513 BattleFields
  • BS = 2543-3054 Battlescript
  • CD = 75-125 Character Descriptions
  • CF = 25-74 Character Faces
  • CTF = 1993-2084 Character talking face
  • disk1 = 308-321 "It's CDMAKE Dummy!"
  • MISC = 0-24 Misc
  • MISC = 179-185 Misc "It's CDMAKE Dummy!"
  • MISC = 190-203 Misc
  • MISC = 332-355 Misc "It's CDMAKE Dummy!"
  • MISC = 1967-1977 Misc
  • MISC = 2085-2416 Misc
  • MISC = 2514-2542 Misc
  • MISC = 3054-3707 Misc
  • MISC = 3760-5597 Misc
  • OAM = 322-331 OverWorld Alternate Models
  • OMCM = 204-307 OverWorld Main Characters Models
  • ROT = 126-178 Rare objects TIM
  • ROT = 186-189 Rare objects TIM
  • Rooms = 356-1966 Rooms
  • SCL = 3708-3759 Small Character Layer
  • WF = 1978-1992 Windows frame
  • V = 5598-5617 Video

Data Map

This section currently lists where all the OUT directories listed above are located on Disc 1. The offsets are applicable to the physical game CD as well as to any ripped iso that is exactly 641,437,696 bytes long.

As time goes on the offsets will grow more and more specific, perhaps reaching the file-by-file level of detail in the distant future.

  • 00000000 ~ 00012FFF: Unknown Data
  • 00013000 ~ 002279A7: MISC\OUTs 0-24
  • 002279A8 ~ 00227FFF: Unknown Data
  • 00228000 ~ 0039EA1F: CF\OUTs 25-74
    • 237000 ~ 23E21F: Guile's Long Status Screen Portrait
  • 0039EA20 ~ 0039EFFF: Unknown Data
  • 0039F000 ~ 006ED3E7: CD\OUTs 75-125
    • 3C8900 ~ 3C9B20: Guile's Status Screen Eyeblink Texture
  • 006ED3E8 ~ 006ED7FF: Unknown Data
  • 006ED800 ~ 00A57A1F: ROT\OUTs 126-178
  • 00A57A20 ~ 00A57FFF: Unknown Data
  • 00A58000 ~ 00A5B017: MISC\OUTs 179-185
  • 00A5B018 ~ 00A5B7FF: Unknown Data
  • 00A5B800 ~ 00A9D21F: ROT\OUTs 186-189
  • 00A9D220 ~ 00A9D7FF: Unknown Data
  • 00A9D800 ~ 00B50237: MISC\OUTs 190-203
  • 00B50238 ~ 00B507FF: Unknown Data
  • 00B50800 ~ 00D87A1F: OMCM\OUTs 204-307
    • B6D800 ~ B71A20: Guile Overworld Texture 1
  • 00D87A20 ~ 00DA07FF: Unknown Data
  • 00DA0800 ~ 00DA7017: disk1\OUTs 308-321
  • 00DA7018 ~ 00DA77FF: Unknown Data
  • 00DA7800 ~ 00DD9A1F: OAM\OUTs 322-331
  • 00DD9A20 ~ 00DD9FFF: Unknown Data
  • 00DDA000 ~ 00DD5817: OAM\OUTs 332-355
  • 00DD5818 ~ 00DE5FFF: Unknown Data
  • 00DE6000 ~ 0E520C37: Rooms\OUTs 356-1966
  • 0E520C38 ~ 0E520FFF: Unknown Data
  • 0E521000 ~ 0E5508FF: MISC\OUTs 1967-1977
  • 0E550900 ~ 0E550FFF: Unknown Data
  • 0E551000 ~ 0E58521F: WF\OUTs 1978-1992
  • 0E585220 ~ 0E5857FF: Unknown Data
  • 0E585800 ~ 0E60F21F: CTF\OUTs 1993-2084
    • E588800 ~ E589A20: Guile's Small Portrait
  • 0E60F220 ~ 0E60F7FF: Unknown Data
  • 0E60F800 ~ 0FCFD167: MISC\OUTs 2085-2416
  • 0FCFD168 ~ 0FCFD7FF: Unknown Data
  • 0FCFD800 ~ 1128D28F: BF\OUTs 2417-2513 - Battle Fields (TIMs and models)
    • 2417 - Unknown Kid model and Japanese text
    • 2418 - Lizard Rock
    • 2419 - Cape Howl
    • 2420 - Cape Howl (Dusk)
    • 2421 - Fossil Valley
    • 2422 - Shadow Forest
    • 2423 - Shadow Forest Tree Stream
    • 2424 - Viper Manor Bluffs
    • 2425 - Viper Manor Bluffs (Night)
    • 2426 - Viper Manor
    • 2427 - Viper Manor (Night)
    • 2428 - Viper Manor Command
    • 2429 - Viper Manor Command
    • 2430 - Hydra Marshes
    • 2431 - Hydra Marshes Branches
    • 2432 - Hydra Marshes Hollow Tree
    • 2433 - UNKNOWN
    • 2434 - S.S. Invincible
    • 2435 - S.S. Invincible Deck
    • 2436 - Water Dragon Isle
    • 2437 - Water Dragon Isle
    • 2438 - Mt. Pyre
    • 2439 - Fort Dragonia
    • 2440 - Arni
    • 2441 - Earth Dragon Isle
    • 2442 - Earth Dragon Isle Sanctum
    • 2443 - Isle of the Damned
    • 2444 - Isle of the Damned (Garai's Dream)
    • 2445 - Hydra Marshes (Another)
    • 2446 - FATE Island (Clotho)
    • 2447 - Darkness Beyond Time
    • 2448 - Marbule Cave
    • 2449 - El Nido Triangle
    • 2450 - Lucca's Orphanage
    • 2451 - Gaea's Navel
    • 2452 - Gaea's Navel Sanctum
    • 2453 - S.S. Zelbess Grand Slam Ring
    • 2454 - Shadow Forest
    • 2455 - Viper Manor Study
    • 2456 - Guldove
    • 2457 - Marbule
    • 2458 - Mt. Pyre Sanctum
    • 2459 - Fort Dragonia Crystal Room
    • 2460 - Fort Dragonia Crystal Room
    • 2461 - Earth Dragon Isle Sanctum
    • 2462 - Terra Tower Exterior Warp
    • 2463 - Fort Dragonia
    • 2464 - Fort Dragonia
    • 2465 - Fort Dragonia
    • 2466 - Fort Dragonia Dragon Tear Chamber
    • 2467 - Terra Tower
    • 2468 - Terra Tower Exterior Warp
    • 2469 - Terra Tower
    • 2470 - Terra Tower
    • 2471 - Terra Tower
    • 2472 - Viper Manor Basement
    • 2473 - Viper Manor Basement
    • 2474 - UNKNOWN (Clouds)
    • 2475 - UNKNOWN (Water)
    • 2476 - UNKNOWN
    • 2477 - Lucca's Orphanage
    • 2478 - Lucca's Orphanage
    • 2479 - Lucca's Orphanage
    • 2480 - Mt. Pyre
    • 2481 - Mt. Pyre
    • 2482 - Water Dragon Isle Interior
    • 2483 - Water Dragon Isle Sanctum
    • 2484 - FATE Island (Lachesis)
    • 2485 - FATE Island (Atropos)
    • 2486 - Fort Dragonia (Bunyip)
    • 2487 - Lucca's Orphanage (Portraits)
    • 2488 - Terra Tower
    • 2489 - Terra Tower
    • 2490 - Terra Tower
    • 2491 - Terra Tower Dragon God
    • 2492 - Chronopolis
    • 2493 - Chronopolis
    • 2494 - Chronopolis Stairway
    • 2495 - Chronopolis Frozen Flame
    • 2496 - Temporal Vortex
    • 2497 - Temporal Vortex (Escher)
    • 2498 - Viper Manor Ruins
    • 2499 - Dead Sea Highway
    • 2500 - Dead Sea Buildings
    • 2501 - Tower of Geddon Mall
    • 2502 - Tower of Geddon Theater
    • 2503 - Sky Dragon Isle Sanctum
    • 2504 - UNKNOWN
    • 2505 - UNKNOWN
    • 2506 - UNKNOWN
    • 2507 - UNKNOWN
    • 2508 - UNKNOWN
    • 2509 - Sky Dragon Isle Sanctum
    • 2510 - S.S. Invincible Deck (Ghosts)
    • 2511 - Gaea's Navel
    • 2512 - Fort Dragonia
    • 2513 - Fort Dragonia
  • 1128D290 ~ 1128D7FF: Unknown Data
  • 1128D800 ~ 112DB9EF: MISC\OUTs 2514-2542
  • 112DB9F0 ~ 112DBFFF: Unknown Data
  • 112DC000 ~ 114C8A77: BS\OUTs 2543-3054
  • 114C8A78 ~ 114C8FFF: Unknown Data
  • 114C9000 ~ 128D74EF: MISC\OUTs 3055-3707 - Character Battle Models
    • 114C9000 ~ 114D2467: 3055 - Texture Header & Serge's battle model texture & eyeball texture
    • 114D2468 ~ 114D27FF: Buffer 00 bytes
    • 114D2800 ~ 114DD3DC: 3056 - Serge's battle model
    • 14DD3DD ~ 114DD7FF: Buffer 00 bytes
    • 114DD800 ~ 114ECCA7: 3057 - Serge's weapon models & textures
    • 114ECCA8 ~ 114ECFFF: Buffer 00 bytes
  • 128D74F0 ~ 128D77FF: Unknown Data
  • 128D7800 ~ 1293B61F: SCL\OUTs 3708-3759
  • 1293B620 ~ 1293F7FF: Unknown Data
  • 1293F800 ~ 13A5D977: MISC\OUTs 3760-5597
  • 13A5D978 ~ 186B9FFF: Unknown Data
  • 186BA000 ~ 263B9000: V\OUTs 5598-5617 - Videos (STR)
    • 186BA000 ~ 187FEFFF: 5598 - Frozen Flame
    • 187FF000 ~ 18D5E7FF: 5599 - Chrono Cross 2
    • 18D5E800 ~ 1967D07F: 5600 - Fort Dragonia
    • 1967D080 ~ 19D07FFF: 5601 - Dream of Fort Dragonia
    • 19D80000 ~ 1ACE8FFF: 5602 - Crossing Dimensions
    • 1ACE9080 ~ 1AF9FFFF: 5603 - Kid at Cape Howl
    • 1AFA0000 ~ 1B4E5FFF: 5604 - Viper Manor Evening
    • 1B4E6000 ~ 1BE72FFF: 5605 - Dragon Tear Time Crash
    • 1BE73000 ~ 1C273FFF: 5606 - Crossing Dimensions 2
    • 1C274000 ~ 1C9D0FFF: 5607 - Orphanage Fire (Lynx)
    • 1C9D1000 ~ 1CD90FFF: 5608 - Panther Attack
    • 1CD91000 ~ 1D6AFFFF: 5609 - Fort Dragonia 2
    • 1D6B0000 ~ 1DDFDFFF: 5610 - Approaching the Doors
    • 1DDFE000 ~ 1E613FFF: 5611 - Panther Attack 2
    • 1E614000 ~ 1F2ACFFF: 5612 - Lynx and the Dragon Tear
    • 1F2AD000 ~ 20102FFF: 5613 - Lynx Stabs Kid
    • 20103000 ~ 20AADFFF: 5614 - Kid at Opassa
    • 20AAE000 ~ 21A34FFF: 5615 - Dead Sea Destruction
    • 21A35000 ~ 236CCFFF: 5616 - Regaining the Body
    • 236CD000 ~ 2636DFFF: 5617 - Chrono Cross
    • 2636E000 ~ 263B9000: Null (00) data

Character Data Order

All data on the game CD pertaining to player characters occur in the following order.

Serge
Kid
Guile
Norris
Nikki
Viper
Riddel
Karsh
Zoah
Marcy
Korcha
Luccia
Poshul
Razzly
Zappah
Orcha
Radius
Fargo
Macha
Glenn (One Sword)
Leena
Miki
Harle
Janice
Draggy
Starky
Sprigg
Mojo
Turnip
NioFio
Greco
Skelly
Funguy
Irenes
Mel
Leah
Van
Sneff
Steena
Doc
Grobyc
Pierre
Orlha
Pip x 6 variations
Lynx
Glenn (2 swords in battle model data comes afterward)

Chrono Cross Translation Tools

File and Data Types

Character Battle Models

As they exist on the game CD, Chrono Cross character battle models consist of applicable textures followed by the model geometry itself. The model data begin with a header that points to various sections, and the sections have their own subheaders and subsections.

Below Serge's, Kid's, and Guile's models are employed as examples of how the model data (vertices, shaders, animations, etc) are structured within the model file itself. Keep in mind that all data is represented in "Little Endian" Mode, meaning we humans must employ a byte-order reversal technique to understand it. For example, 06 00 00 00 means 0x06, and F8 4E 00 00 means 0x4EF8.

Also keep in mind that offset ranges are relative, meaning pointer tables report locations that are are a certain number of bytes from the beginning of the current header/subheader. This makes no difference in the overall file header when you're looking at the model data file as excised from the game CD, but it most certainly affects the correct interpretation of subheaders. Therefore, the offsets reported in subheader pointer tables are accompanied by (true offsets) from the beginning of the model file.

Example 1: Serge

HEADER...
OFFSETS  OFFSET VALUES
00000000 06 00 00 00 20 00 00 00-F8 4E 00 00 C8 50 00 00
00000010 28 52 00 00 CC A2 00 00-00 00 00 00 DC AB 00 00

SECTION 1 SUBHEADER...
OFFSETS  OFFSET VALUES
00000020 02 00 00 00 14 00 00 00-80 02 00 00 05 02 2B 04
00000030 F9 00 00 00 38 03 00 00-C8 28 00 00 28 42 00 00
00000040 11 00 00 00 00 00 00 00

Split into 4-byte chunks, the header and subheaders can be interpreted in the following way. "Section1," etc., report the beginning offsets of each section:

Header Offset Range: 00 ~ 1F
6 Sections       | Section1 0x20   | Section2 0x4EF8 | Section3 0x50C8
Section4 0x5228  | Section5 0xA2CC | Section6 N/A    | End of File 0xABDC

Section1 Offset Range: 20 ~ 4EF7
SubHeader Offset Range: 20 ~ 47
*Pointer 0x02 | PointerTable Start 0x14(34)| ??? 0x0280              | * 0x042B0205
??? 0xF9      | SubSection2 0x0338(0358)   | SubSection3 0x28C8(28E8)| SubSection4 0x4228(4248)
??? 0x11      | ??? 0x00

SubSection1 Offset Range: 48 ~ 357
SubSection2 (UV Texture Map) Offset Range: 358 ~ 28E7
 SubSection 2 Map...
 0x0358 ~ 0x0FB7: Triangle UV data and pointers (264 triangles)
 0x0FB8 ~ 0x2657: Quad UV data and pointers (362 quads)
 0x2658 ~ 0x26E7: Triangle UV data and pointers (12 triangles)
 0x26E8 ~ 0x28E7: Quad UV data and pointers (32 quads)
  Triangle UV data and pointer setup: U1 V1 U2 V2 U3 V3 P1 P1 - P2 P2 P3 P3
  Quad UV data and pointer setup:     U1 V1 U2 V2 U3 V3 U4 V4 - P1 P1 P2 P2 P3 P3 P4 P4

Rules for interpreting quad pointers... Rule for Positive Pointers (as interpreted in hexadecimal)

  • If you're in one of the first two columns, divide the byte pair value by 0x2, then by 0x8. This value is the index for the vertex to which the UV point is mapped.
  • If you're in one of the last two columns, divide the byte pair value by 0x8. This value is the index for the vertex to which the UV point is mapped.

Rule for Negative Pointers (as interpreted in decimal)

  • If you're in one of the first two columns, divide the byte pair value by 16. Go backward that number of positions into the non-UV data.
  • If you're in one of the last two columns, divide the byte pair value by 8. Go backward that number of positions into the non-UV data.

Rules for interpreting triangle pointers... Rule for Positive Pointers (hex)

  • If you're in the first column, divide the byte pair value by 0x8. This value is the vertex index.
  • If you're in one of the last two columns, divide the byte pair value by 0x2, then by 0x8. This value is the vertex index.

Rule for Negative Pointers (dec)

  • If you're in the first column, divide the byte pair value by 8. Go backward that number of positions into the non-UV data, adding an invisible position to the three extant positions.
  • If you're in one of the last two columns, divide the byte pair value by 16. Go backward that number of positions into the non-UV data, adding an invisible position to the three extant positions.
  • For triangles, switch pointers such that the first UV coordinate gets the second pointer; the second UV coordinate gets the third pointer; the third UV coordinate gets the first pointer. The pointers retain the division properties they had in their original positions.
SubSection3 (Vertex Pool) Offset Range: 28E8 ~ 4247
 SubSection 3 Map...
 0x28E8 ~ 0x324F: "8-byte mode", 301 vertices
 0x3250 ~ 0x3F6F: "16-byte mode", 210 vertices
 0x3F70 ~ 0x3F97: "8-byte mode", 5 vertices
 0x3F98 ~ 0x4247: "16-byte mode", 43 vertices
  "8-byte mode" setup...
   ZZ ** YY ** XX ** 00 00 - ZZ ** YY ** XX ** 01 00
   ZZ ** YY ** XX ** 02 00 - ZZ ** YY ** XX ** 03 00
  "16-byte mode" setup...
   ZZ ** YY ** XX ** 00 00 - ZZ ** YY ** XX ** 00 00
   ZZ ** YY ** XX ** 01 00 - ZZ ** YY ** XX ** 01 00
    Where...
    ZZ: Magnitude of coordinate on the up & down axis on the screen plane
    YY: Magnitude of coordinate on depth axis; toward or away from you with respect to the 
        screen.
    XX: Magnitude of coordinate on right & left axis on the screen plane
    **: A directional reverser byte. If 00, the vertex is placed in one direction on the axis, 
        and if FF, the vertex gets placed on a coordinate the same "magnitude" but opposite  
        direction on that axis. (In actuality, it merely specifies whether the value is 
        positive or negative in hex).
 ?? ??: The vertex index; two bytes per vertex.

    16-byte mode appears to come into play when a vertex is associated with more than one bone.
    * The first eight bytes represent the vertex's location relative to the first bone it is 
      associated with.
    * The second eight bytes represent the vertex's location relative to the second bone it is 
      associated with.

SubSection4 Offset Range: 4248 ~ 4EF7
 SubSection4 Pattern...
 ?? ?? ?? 00 ?? ?? ?? 00 - ?? ?? ?? 00 ?? ?? ?? 00
 ?? ?? ?? 00 ?? ?? ?? 00 - ?? ?? ?? 00 ?? ?? ?? 00
  The purpose of this SubSection is unknown; all data can be safely 00'd out and not affect   
  Serge's model shape or animations.

Example 2: Kid

HEADER...
OFFSETS  OFFSET VALUES
00000000 06 00 00 00 20 00 00 00-B4 4D 00 00 C4 50 00 00
00000010 24 52 00 00 F0 C6 00 00-00 00 00 00 00 D0 00 00

SECTION 1 SUBHEADER...
OFFSETS  OFFSET VALUES
00000020 02 00 00 00 14 00 00 00-38 02 00 00 D9 01 07 04
00000030 26 02 00 00 74 03 00 00-04 2C 00 00 64 42 00 00
00000040 17 00 00 00 00 00 00 00

Split into 4-byte chunks, the header and subheaders can be interpreted in the following way. "Section1," etc., report the beginning offsets of each section:

Header Offset Range: 00 ~ 1F
6 sections      | Section1 0x20    | Section2 0x4DB4   | Section3 0x50C4
Section4 0x5224 | Section5 0xC6F0  | Section6 N/A      | End of File 0xD000

Section1 Offset Range: 20 ~ 4DB3 
SubHeader Offset Range: 20 ~ 47
*Pointer 0x02 | PointerTableStart 0x14(34)| ??? 0x0238              | * 0x040701D9
??? 0x0226    | SubSection2 0x0374(0394)  | SubSection3 0x2C04(2C24)| SubSection4 0x4264(4284)'
??? 0x17      | ??? 0x00

SubSection1 Offset Range: 48 ~ 393
SubSection2 (UV Texture Map) Offset Range: 394 ~ 2C23
SubSection3 (Vertex Pool) Offset Range: 2C24 ~ 4283
SubSection4 Offset Range: 4284 ~ 4DB3

Example 3: Guile

HEADER...
OFFSETS  OFFSET VALUES
00000000 06 00 00 00 20 00 00 00-3C 4C 00 00 10 4F 00 00
00000010 70 50 00 00 1C E4 00 00-00 00 00 00 2C ED 00 00

SECTION 1 SUBHEADER...
OFFSETS  OFFSET VALUES
00000020 05 00 00 00 20 00 00 00-D8 00 00 00 C6 01 00 00
00000030 B8 01 00 00 5C 02 00 00-4B 03 9A 04 BE 02 00 00
00000040 3C 03 00 00 38 2A 00 00-D0 40 00 00 0D 00 00 00
00000050 00 00 00 00 

Split into 4-byte chunks, the header and subheaders can be interpreted in the following way. "Section1," etc., report the beginning offsets of each section:

Header Offset Range: 00 ~ 1F
6 Sections       | Section1 0x20    | Section2 0x4C3C  | Section3 0x4F10
Section4 0x5070  | Section5 0xE41C  | Section6 N/A     | End of File 0xED2C

Section1 Offset Range: 20 ~ 4C3B
SubHeader Offset Range: 20 ~ 53
*Pointer 0x05              | PointerTableStart 0x20(40)| ??? 0xD8                 | ??? 0x016C
??? 0x01B8                 | ??? 0x025C                | * 0x049A034B             | ??? 0x02BE
SubSection2 0x033C(035C)   | SubSection3: 0x2A38(2A58) | SubSection4: 0x40D0(40F0)| ??? 0x0D
??? 0x00

SubSection1 Offset Range: 54 ~ 35B
SubSection2 (UV Texture Map) Offset Range: 35C ~ 2A57
SubSection3 (Vertex Pool) Offset Range: 2A58 ~ 40EF
SubSection4 Offset Range: 40F0 ~ 4C3B

DISCLAIMER: This is still a working entry. All interpretations are subject to change with time.

SPECIAL THANKS: To Gemini for identifying the battle textures that led us to the models; to Luminaire85 for finding and interpreting the headers and subheaders, fine-tuning various theories, and coding the model viewer; to MDenham for figuring out how the pointers and Section 1-1 work; and to Halkun, Cyberman and yaz0r for providing constant advice and guidance.

TIM Textures

Type "0" Normal TIM

These are the classic PlayStation TIM type. Detailed info about the format is available at wiki.qhimm.com, but let's have a brief run-through here, as this will help us compare the classic TIM format to the abnormal TIM format used in Chrono Cross battle models.

The basic structure of a classic TIM is HEADER CLUT IMAGE. The HEADER gives basic info about the file. It is directly followed by the CLUT, or color lookup table. Then comes the IMAGE data, which is usually going to be a series of offsets into the CLUT.

HEADER...
10 00 00 00 ?? ?? ?? ??

  ?? ?? ?? ?? specifies bit depth and whether a CLUT is present. For more, see 
  http://wiki.qhimm.com/PSX/TIM_file
CLUT...
CL CL CL CL CX CX CY CY - CW CW CH CH RG BS RG BS
RG BS .. ..

 Where...
  *CL = CLUT Length in bytes.
  *CX, CY, CW, and CH are beyond the scope of this entry; for more, see
   http://wiki.qhimm.com/PSX/TIM_file
  *RG BS are the red, green, blue, and special transparency values for each color in the CLUT.
   Note that these byte pairs are read as their constituent bits, so one nybble (half-byte)   
   doesn't necessarily correspond to each color specification; one letter is used to represent 
   each nybble for ease of labeling.

For quick reference, the RG BS CLUT data in a standard TIM typically occur between addresses 0x14 and 0x214.
IMAGE...
IL IL IL IL IX IX IY IY - IW IW IH IH I1 I2 I3 I4
.. ..

 Where...
  *IL = Length of the IMAGE data in bytes.
  *IX, IY, IW, and IH are beyond the scope of this entry. Once again, check the qhimm wiki for 
   more in-depth info.
  *I# = Offsets into the CLUT. One byte (8 bits) is required for each pixel because the TIM 
   header specifies 8 bits-per-pixel.

For quick reference, the I# image data in most normal TIMs follow address 0x220

Altered Format TIM

The .TIM files used for battle model textures differ from the classic format, preventing tools like TIMViewer and PSicture from detecting them. Like the classic TIMs, the altered format TIMs consist of a HEADER, CLUT, and IMAGE data -- only the headers for each element are different. Thus it should be possible to run a bitmap through TIMViewer and turn it into a classic TIM, then take the "flesh" of the CLUT and IMAGE data from that classic TIM and insert it around the "skeleton" of an existing altered format TIM's headers. The resulting chimera TIM should be usable by the game for battle models. This method will be attempted for the Compendium's Make Your Magus project.

HEADER...
02 00 00 00 ?? ?? ?? ??
CLUT...
CL CL CL CL ?? ?? ?? ?? - ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? RG BS RG BS

 Where...
  *CL = CLUT Length in bytes.
  *?? appear to express all the information contained in a classic TIM CLUT header, but with  
   an additional 8 bytes of unknown function interspersed. 
  *RG BS are the red, green, blue, and special transparency values for each color in the CLUT.
   Note that these byte pairs are read as their constituent bits, so one nybble (half-byte)   
   doesn't necessarily correspond to each color specification; one letter is used to represent 
   each nybble for ease of labeling.

For quick reference, the RG BS CLUT data in an Altered Format TIM typically occurs between addresses 0x1C and 0x21C.
IMAGE...
?? ?? ?? ?? ?? ?? ?? ?? - ?? ?? ?? ?? ?? ?? ?? ??
I1 I2 I3 I4 .. ..
Absolutely nothing is known about the IMAGE header at this time; it does not seem to  
communicate any of the same information as the IMAGE header in a classic TIM -- not even the
length of the IMAGE element seems to be specified. 

For quick reference, the I# image data in an Altered Format TIM usually follows address 0x22C.


Debug Mode

With the room modifier code 8007E6E8 000E enabled, ZeaLitY restored a savestate in ePSXe immediately following the defeat of the Time Devourer on a new game plus in disc one. The game shifted to the Hydra Marshes, but strangely, this savestate (and only this savestate) booted the location with a debug mode menu active. Thanks to this completely accidental discovery, the game's debug mode is being mapped. Here is the Time Devourer battle savestate (to be used with that room modifier code):

Savestate Image

Here is a savestate with the debug mode enabled:

Savestate Image

Menu Layout

Several of these break the four-line height of text boxes, and the options as a result go well below the textbox. However, the decisions scroll down to the end of the string. So, if something has 8 choices (like the main menu), the first option will highlight the name of the fifth (since only 5-8 will be displayed). To get to the actual fifth and beyond, you have to go below the textbox to the invisible options.

Adjust Screen's RGB
	Start Changes
	   "Mode: 00
		R: 0
		G: 0
		B: 0"
		Input Red: 000

		Next
		Input Red again!
			(If >255) "Max is 255, stupid!"
		~
		Input Green again!
			(If >255) "Max is 255, silly!"
		~
		Input Blue again!
			(If >255) "Max is 255, dope!"
		~
		Select Mode: 000
			(If >3) "Range is 0 to 3!"
		End
		Select Mode again!
	Default
	Return
	Quit
Adjust Underwater RGB
	Start Changes
	   "Mode: 00
		R: 0
		G: 0
		B: 0"
		Input Red: 000

		Next
		Input Red again!
			(If >255) "Max is 255, stupid!"
		~
		Input Green again!
			(If >255) "Max is 255, silly!"
		~
		Input Blue again!
			(If >255) "Max is 255, dope!"
	Default
	Return
	Quit
Adjust Chara.'s RGB
	Start Changes
	   "Mode: 00
		R: 0
		G: 0
		B: 0"
		Input Red: 000

		Next
		Input Red again!
			(If >255) "Max is 255, stupid!"
		~
		Input Green again!
			(If >255) "Max is 255, silly!"
		~
		Input Blue again!
			(If >255) "Max is 255, dope!"
	Default
	Return
	Quit
Adjust Chara.'s rot
	Start Changes
	   "Current Values...
		X:0
		Z:0
		Y:0"
		Set rotx = 0000
			(If >4096) "Max is 4096!"
		~
		Next
		Set rotx again
		~
		Set rotz again
		~
		Set roty again
	Default
	Return
	Quit
Adjust Chara.'s scale
   "Scale what?"
	All
		00/10
			(If 0 "A number other than 0!")
	X
	Z
	Y
	Cancel
Set Rect.
	Rect. Size
		rectsizeX 0000
		~
		rectsizeZ 0000
	Go away!
Return
	YOU'RE AT MAP NO. 9!
		Map Jump
		This Map
		Before Jump
		Next Map
		Previous Map
		Planners' Rooms
		Special
		Exit Menu/Return
Quit

For the demo scenes, a map parameter of 0 or 1 starts one at one of two exits with static characters. Moving takes one to the title screen. A parameter of 2 plays the demo scenes. A parameter of more than that acts like 0 or 1 except that no characters are loaded.

Map Digits

000 - Crash
001 - Crash
002 - Crash
003 - Crash
004 - Crash
005 - Black screen
006 - Crash
007 - Crash
008 - Title screen
009 - Game Over screen
010 - Demo scene - Shadow Forest Entrance
011 - Demo scene - Shadow Forest Giant Tree
012 - Demo scene - Viper Manor Study Bridge (Night)
013 - Demo scene - Viper Manor Study with Harle
014 - Demo scene - Hydra Marshes (bg music - Dilemma) with Solt and Peppor
015 - Demo scene - Hydra Marshes (bg music - Dilemma)
016 - Demo scene - Termina Entrance
017 - Demo scene - Termina Fortune Teller
018 - Demo scene - Lucca's Orphanage (unused?)
019 - Demo scene - S.S. Invincible
020 - Demo scene - Cape Howl Sunset
021 - Demo scene - Viper Manor (Night)
022 - Fort Dragonia - Second Story Elevator Lobby
023 - Fort Dragonia - Second Story Teleporter Room
024 - Fort Dragonia - Second Story Side-Staircase
025 - Fort Dragonia - Second Story Crystal
026 - Fort Dragonia - Dragon Tear Chamber Station
027 - Arni (Home World)
028 - Arni (Another World)
029 - Arni - Serge's House Living Room (Home)
030 - Arni - Serge's House Living Room (Another)
031 - Arni - Serge's Room (Home)
032 - Arni - Serge's Room (Another)
033 - Arni - Chief's Meadow (Home)
034 - Arni - Chief's Meadow (Another)
035 - Arni - Chief's Hut (Home)
036 - Arni - Chief's Hut (Another)
037 - Arni Dock (Home)
038 - Arni Dock (Another)
039 - Arni - Belcha's Kitchen (Home)
040 - Arni - Cafe Fleur (Another)
041 - Arni - Belcha's Kitchen Bed (Home)
042 - Arni - Cafe Fleur Bed (Another)
043 - Arni - Kiki's Dad's Room (Home)
044 - Arni - Kiki's Dad's Room (Another)
045 - Arni - Leena's House (Home)
046 - Arni - Leena's House (Another)
047 - Arni - Kiki's House (Home)
048 - Arni - Kiki's House (Another)
049 - SCENE - Sea of Eden - Wazuki takes Serge to Chronopolis
050 - Lizard Rock Entrance (Home)
051 - Lizard Rock Entrance (Another)
052 - Lizard Rock East (Home)
053 - Lizard Rock East (Another)
054 - Lizard Rock South (Home)
055 - Lizard Rock South (Another)
056 - Opassa Beach (Home)
057 - Opassa Beach (Another)
058 - Cape Howl Entrance (Home)
059 - Cape Howl Entrance (Another)
060 - Cape Howl Cape (Home)
061 - Cape Howl Cape (Another)
062 - Cape Howl Cape Sunset (Another)
063 - Cape Howl Rock (Home)
064 - Cape Howl Grave (Another)
065 - Cape Howl Grave Sunset (Another)
066 - Fossil Valley Entrance (Home)
067 - Fossil Valley Entrance (Another)
068 - Fossil Valley Skeleton (Home)
069 - Fossil Valley Skeleton (Another)
070 - Fossil Valley Entrance Post-Lynx Invasion (Another)
071 - Termina Cemetery (Home)
072 - Termina Cemetery (Another)
073 - Termina Fortune Teller (Home)
074 - Termina Fortune Teller (Another)
075 - Termina Dragoon Quarter (Home)
076 - Termina Dragoon Quarter (Another)
077 - Termina Entrance (Home)
078 - Termina Entrance (Another)
079 - Termina Dock (Home)
080 - Termina Dock (Another)
081 - Termina - Lisa's Element Shop (Home)
082 - Termina - Lisa's Element Shop (Another)
083 - Termina - Lisa's Element Shop Bed (Home)
084 - Termina - Lisa's Element Shop Bed (Another)
085 - Termina - Dragon's Tail Bar (Home)
086 - Termina - Dragon's Tail Bar (Another)
087 - Termina - Dragon's Tail Bar Back Room (Home)
088 - Termina - Dragon's Tail Bar Back Room (Another)
089 - Termina - Sick Girl's House (Home)
090 - Termina - Sick Girl's House (Another)
091 - Termina - Skelly's House (Home)
092 - Termina - Skelly's House (Another)
093 - Termina - Zappa's House (Home)
094 - Termina - Zappa's House (Another)
095 - Termina - Zappa's Guest Room (Home)
096 - Termina - Zappa's Guest Room (Another)
097 - Termina - Glenn's House (Home)
098 - Termina - Glenn's House (Another)
099 - Termina Cemetery House (Home)
100 - Termina Cemetery House (Another)
101 - Termina Inn (Home)
102 - Termina Inn (Another)
103 - Termina Inn Suite One (Home)
104 - Termina Inn Suite One (Another)
105 - Termina Inn Suite Two (Home)
106 - Termina Inn Suite Two (Another)
107 - Termina - Van's Room (Home)
108 - Termina - Van's Room (Another)
109 - Termina - Van's House (Home)
110 - Termina - Gogh's Room (Another)
111 - Termina - Van's House (Another)
112 - Termina Fortune Teller (Before Viper Manor Break-in) (Another)
113 - Termina Cemetery (Another)
114 - Termina Dock (Another)
115 - Termina - Magical Dreamers Ship Deck (Another)
116 - Termina - Magical Dreamers Ship - Nikki's Room (Another)
117 - Termina - Magical Dreamers Ship - Miki's Room (Another)
118 - Termina Entrance (Post-Invasion) (Another)
119 - SCENE - Karsh thinks of Riddel in the Dragoon Quarter
120 - Termina Dragoon Quarter (Disabled Exits) (Another)
121 - SCENE - The party sails through the Dragoon Quarter to Viper Manor
122 - Shadow Forest (Home)
123 - Shadow Forest (Another)
124 - Shadow Forest Second Shade (Home)
125 - Shadow forest Second Shade (Another)
126 - Shadow Forest Waterfall (Home)
127 - Shadow Forest Waterfall (Another)
128 - Shadow Forest Grotto (Home)
129 - Shadow Forest Grotto (Another)
130 - Shadow Forest Giant Tree (Home)
131 - Shadow Forest Giant Tree (Another)
132 - Shadow Forest Waterfall (Before Viper Manor) (Another)
133 - Shadow Forest Tree River (Home)
134 - Shadow Forest Tree River (Another)
135 - Shadow Forest River Current (Home)
136 - Shadow Forest River Current (Another)
137 - Shadow Forest Well Base (Home)
138 - Shadow Forest Well Base (Another)
139 - Viper Manor Drainage Duct (Home)
140 - Viper Manor Drainage Duct (Another)
141 - Viper Manor Gate (Home)
142 - Viper Manor Gate (Another)
143 - Viper Manor Bluffs Dock (Home)
144 - Viper Manor Bluffs Dock (Another)
145 - Viper Manor Bluffs Second Ascent (Home)
146 - Viper Manor Bluffs Second Ascent (Another)
147 - Viper Manor Bluffs Final Ascent (Home)
148 - Viper Manor Bluffs Final Ascent (Another)
149 - Viper Manor Courtyard (Home)
150 - Viper Manor Courtyard (Another)
151 - Viper Manor Stable Courtyard (Another)
152 - Viper Manor Stables
153 - Viper Manor Foyer
154 - Viper Manor - Karsh's Room
155 - Viper Manor - ZOAH'S ROOM
156 - Viper Manor - Norris's Room
157 - Viper Manor - Harle's Room
158 - Viper Manor - Throne Room
159 - Viper Manor - Bridge to Study
160 - Viper Manor - Bridge to Study (Night)
161 - Viper Manor Study
162 - Viper Manor Balcony (Night)
163 - Viper Manor - Executive Hallway
164 - Viper Manor Balcony
165 - Viper Manor - Viper's Room
166 - Viper Manor - Riddel's Room
167 - Viper Manor Basement Hall
168 - Viper Manor Barracks
169 - Viper Manor Mess Hall
170 - Viper Manor Treasury
171 - Viper Manor Armament
172 - Viper Manor Jail Cells (Home)
173 - Viper Manor Jail Cells (Another)
174 - Viper Manor - Fargo's Cell
175 - Viper Manor - Interrogation Chamber (Home)
176 - Viper Manor - Interrogation Chamber (Another)
177 - Viper Manor Sewers - Main Complex (Home)
178 - Viper Manor Sewers - Main Complex (Another)
179 - Viper Manor Sewers - Pump Controls (Home)
180 - Viper Manor Sewers - Pump Controls (Another)
181 - Viper Manor Sewers - Entrance (Home)
182 - Viper Manor Sewers - Entrance (Another)
183 - Viper Manor - Bridge to Treasure Tower
184 - Viper Manor - Treasure Tower
185 - SCENE - Belthasar explains dimensions
186 - Viper Manor Balcony Edge (Night)
187 - Viper Manor - Jail Cell
188 - Viper Manor - Throne Room (After Invasion)
189 - Viper Manor Foyer (Escape from Porre)
190 - Viper Manor Stables Courtyard (Escape from Porre)
191 - Viper Manor Basement Hall (During Break-In)
192 - Viper Manor Foyer (During Break-In)
193 - Viper Manor Treasury (After Invasion?)
194 - Viper Manor Gates (After Invasion)
195 - Viper Manor Courtyard (After Invasion)
196 - Viper Manor Study (After Invasion)
197 - Viper Manor Gates (Dario's Restoration) (Home)
198 - Viper Manor Courtyard (Dario's Restoration) (Home)
199 - Viper Manor - Viper's Room (After Invasion)
200 - Viper Manor - Neo Epoch
201 - Viper Manor - Executive Wing (Disabled Exits)
202 - Viper Manor Mess Hall (After Invasion)
203 - Guldove Dock (Home)
204 - Guldove Dock (Before Going with Macha) (Another)
205 - Guldove Shop Exterior (Home)
206 - Guldove Shop Exterior (Another)
207 - Guldove - Macha's Tent Upper Exterior (Home)
208 - Guldove - Macha's Tent Upper Exterior (Another)
209 - Guldove - Chief's Tent Exterior (Home)
210 - Guldove - Chief's Tent Exterior (Another)
211 - Guldove - Doc's House (Home)
212 - Guldove - Doc's House (Another)
213 - Guldove - Doc's Beds (Home)
214 - Guldove - Doc's Beds (Another)
215 - Guldove - Element Shop (Home)
216 - Guldove - Element Shop (Another)
217 - Guldove Bar (Home)
218 - Guldove Bar (Another)
219 - Guldove - Macha's Tent (Home)
220 - Guldove - Macha's Tent (Another)
221 - Guldove - Macha's Tent Lower Level (Home)
222 - Guldove - Macha's Tent Lower Level (Another)
223 - Guldove - Chief's Tent (Home)
224 - Guldove - Chief's Tent (Another)
225 - Guldove - Doc's House (After Lynx) (Another)
226 - Guldove - Doc's Beds (After Lynx) (Home)
227 - SCENE - Discussion with Kid and Korcha after escape from Lynx
228 - Guldove Dock (Another)
229 - SCENE - Orlha battles Porre soldiers
230 - Hydra Marshes Entrance (Home)
231 - Hydra Marshes Entrance (Another)
232 - Hydra Marshes Northeast of Entrance (Home)
233 - Hydra Marshes Northeast of Entrance (Another)
234 - Hydra Marshes Upper Area (Home)
235 - Hydra Marshes Upper Area (Another)
236 - Hydra Marshes Northwest of Entrance (Home)
237 - Hydra Marshes Northwest of Entrance (Another)
238 - Hydra Marshes - Branches (Home)
239 - Hydra Marshes - Branches (Another)
240 - Hydra Marshes - Beeba Pad (Home)
241 - Hydra Marshes - Beeba Pad (Another)
242 - Hydra Marshes - Wingapede Pad (Home)
243 - Hydra Marshes - Wingapede Pad (Another)
244 - Hydra Marshes - Hollow Tree (Home)
245 - Hydra Marshes - Hollow Tree (Another)
246 - Hydra Marshes - Quadffid Pool (Home)
247 - Hydra Marshes - Quadffid Pool (Another)
248 - Hydra Marshes - Hydra Pool (Home)
249 - Hydra Marshes - Hydra Pool (Another)
250 - El Nido (Home)
251 - El Nido (Another)
252 - El Nido Main Island (Home)
253 - El Nido Main Island (Another)
254 - Dead Sea
255 - Sea of Eden (Defense Activated)
256 - Divine Dragon Falls Cave (Home)
257 - Divine Dragon Falls Cave (Another)
258 - Sea of Eden (Home)
259 - Sea of Eden (Chronopolis Exposed) (Another)
260 - Divine Dragon Falls (Home)
261 - Divine Dragon Falls (Another)
262 - S.S. Invincible Deck
263 - S.S. Invincible First Level (During Ghost Siege)
264 - S.S. Invincible Second Level
265 - S.S. Invincible Hull (During Ghost Siege)
266 - S.S. Invincible Kitchen
267 - S.S. Invincible Storage (During Ghost Siege)
268 - S.S. Invincible Cannon Hold
269 - S.S. Invincible Hull
270 - S.S. Invincible Hammocks
271 - S.S. Invincible Special Deck SCENE - Fargo reminisces
272 - S.S. Invincible Deck (With Ghost Ship)
273 - S.S. Invincible First Level
274 - S.S. Invincible Mess Hall
275 - S.S. Invincible First Level Beds
276 - S.S. Invincible Second Level Beds
277 - S.S. Invincible Storage
278 - S.S. Invincible - Captain's Quarters
279 - Hermit's Hideaway (Home)
280 - Hermit's Hideaway (Another)
281 - Hermit's Hideaway Interior (Home)
282 - Hermit's Hideaway Interior (Another)
283 - Hermit's Hideaway Interior (Another)
284 - Hermit's Hideaway (Home)
285 - Water Dragon Isle (Home)
286 - Water Dragon Isle (Another)
287 - Water Dragon Isle Fairy Tree (Dwarf Attack) (Home)
288 - Water Dragon Isle Fairy Tree (Another)
289 - Water Dragon Isle Interior (Dwarf Attack) (Home)
290 - Water Dragon Isle Falls (Dwarf Attack) (Home)
291 - Water Dragon Isle Water Dragon (Home)
292 - Water Dragon Isle Fairy Tree (Home)
293 - Water Dragon Isle Interior (Home)
294 - Water Dragon Isle Falls (Home)
295 - Water Dragon Isle Campfire SCENE - Kid talks to Serge
296 - SCENE - The fairies criticize the humans at sundown
297 - Mt. Pyre (Home)
298 - Mt. Pyre (Another)
299 - Mt. Pyre Second Area (Home)
300 - Mt. Pyre Second Area (Another)
301 - Mt. Pyre Third Area (Home)
302 - Mt. Pyre Third Area (Another)
303 - Mt. Pyre Slide Falls (Home)
304 - Mt. Pyre Slide Falls (Another)
305 - Mt. Pyre Lower Passage (Home)
306 - Mt. Pyre Lower Passage (Another)
307 - Mt. Pyre Dragon (Home)
308 - Mt. Pyre Dragon (Another)
309 - Mt. Pyre Slide Falls (Frozen) (Home)
310 - Mt. Pyre Slide Falls (Frozen) (Another)
311 - Fort Dragonia (Home)
312 - Fort Dragonia (Another)
313 - Fort Dragonia Main Bridge (Home)
314 - Fort Dragonia Main Bridge (Another)
315 - Fort Dragonia West Bridge (Home)
316 - Fort Dragonia West Bridge (Another)
317 - Fort Dragonia Northwest Bridge (Home)
318 - Fort Dragonia Northwest Bridge (Another)
319 - Fort Dragonia Northeast Bridge (Home)
320 - Fort Dragonia Northeast Bridge (Another)
321 - Fort Dragonia East Bridge (Home)
322 - Fort Dragonia East Bridge (Another)
323 - Fort Dragonia Lobby (Home)
324 - Fort Dragonia Lobby (Another)
325 - Fort Dragonia Northeast (Home)
326 - Fort Dragonia Northeast (Another)
327 - Fort Dragonia Northeast Second Area (Home)
327 - Fort Dragonia Northeast Second Area (Another)
329 - Fort Dragonia Northeast Third Area (Home)
330 - Fort Dragonia Northeast Third Area (Another)
331 - Fort Dragonia Northeast Crystal (Home)
332 - Fort Dragonia Northeast Crystal (Another)
333 - Fort Dragonia Northwest Area (Home)
334 - Fort Dragonia Northwest Area (Another)
335 - Fort Dragonia Northwest Right Room (Home)
336 - Fort Dragonia Northwest Right Room (Another)
337 - Fort Dragonia Northwest Left Room (Home)
338 - Fort Dragonia Northwest Left Room (Another)
339 - Fort Dragonia Northwest Crystal (Home)
340 - Fort Dragonia Northwest Crystal (Another)
341 - Fort Dragonia West Maze (Home)
342 - Fort Dragonia West Maze (Another)
343 - Fort Dragonia Dragon Tear Chamber (SCENE - Crystal activations) (Home)
344 - Fort Dragonia Dragon Tear Chamber (SCENE - Crystal activations) (Another)
345 - S.S. Zelbess Special Deck (SCENE - Nikki tells Kid about the Magical Dreamers)
346 - Fort Dragonia Dragon Tear Chamber with Broken Statues (SCENE - Karsh, ZOAH, and Marcy find General Viper)
347 - Fort Dragonia West Arrangement Room (Home)
348 - Fort Dragonia West Arrangement Room (Another)
349 - Fort Dragonia East Area (Home)
350 - Fort Dragonia East Area (Another)
351 - Fort Dragonia East Area Selection (Home)
352 - Fort Dragonia East Area Selection (Another)
353 - Fort Dragonia East Area Crystal (Home)
354 - Fort Dragonia East Area Crystal (Another)
355 - Fort Dragonia Central Elevator (Home)
356 - Fort Dragonia Central Elevator (Another)
357 - Fort Dragonia - Second Story Elevator Lobby (Home)
358 - Fort Dragonia - Second Story Elevator Lobby (Another)
359 - Fort Dragonia - Second Story Teleporter Room (Home)
360 - Fort Dragonia - Second Story Teleporter Room (Another)
361 - Fort Dragonia - Second Story Side-Staircase (Home)
362 - Fort Dragonia - Second Story Side-Staircase (Another)
363 - Fort Dragonia - Second Story Crystal (Home)
364 - Fort Dragonia - Second Story Crystal (Another)
365 - Fort Dragonia - Dragon Tear Chamber Station (Home)
366 - Fort Dragonia - Dragon Tear Chamber Station (Another)
367 - Fort Dragonia - Dragon Tear Chamber (Home)
368 - Fort Dragonia - Dragon Tear Chamber (SCENE - Serge confronts Lynx and Viper) (Another)
369 - Fort Dragonia Basement (Home)
370 - Fort Dragonia Basement (Another)
371 - Temporal Vortex
372 - Temporal Vortex - Sprigg's House
373 - Temporal Vortex - Confusion Complex
374 - Temporal Vortex - Chaos
375 - S.S. Zelbess Deck
376 - S.S. Zelbess First Level
377 - S.S. Zelbess Second Level
378 - S.S. Zelbess Inn
379 - S.S. Zelbess Restaurant
380 - S.S. Zelbess Demi-human Room
381 - S.S. Zelbess Hold
382 - S.S. Zelbess Hull (SCENE (05) - Party walks to boat with Magical Dreamers theme)
383 - S.S. Zelbess Comedy Backstage
384 - Crash
385 - S.S. Zelbess - Captain's Quarters
386 - S.S. Zelbess - Casino
387 - S.S. Zelbess - Magical Dreamers Stage (SCENE - Magical Dreamers concert)
388 - S.S. Zelbess - Magical Dreamers Ship Deck
389 - S.S. Zelbess - Magical Dreamers Ship - Nikki's Room
390 - S.S. Zelbess - Magical Dreamers Ship - Miki's Room
391 - S.S. Zelbess - Grand Slam
392 - S.S. Zelbess - Deck (After Marbule Failure)
393 - S.S. Zelbess - Hull (SCENE (05) - Demi-humans begin to row)
394 - SCENE - Magical Dreamers stage opens up to S.S. Zelbess
395 - S.S. Zelbess Inn Attic (SCENE - Demi-human manipulates Casino)
396 - Marbule (Before Restoration) (Home)
397 - Marbule (Another)
398 - Marbule - Black Dragon Cave (Home)
399 - Marbule - Black Dragon Cave (Another)
400 - Marbule - Chief's Cave (Home)
401 - Marbule - Chief's Cave (Another)
402 - Marbule - Witch Doctor's Cave (Home)
403 - Marbule - Witch Doctor's Cave (Another)
404 - Marbule - Bro. of G's Shop (Home)
405 - Marbule - Bro. of G's Shop (Disabled Exits)
406 - Marbule - Mermaid Pirate House (Home)
407 - Marbule - Mermaid Pirate House (Disabled Exits)
408 - Marbule - Child Demi-human's Cave
409 - Marbule (After Restoration) (Home)
410 - Death's Door
411 - Pearly Gates
412 - Earth Dragon Isle (Home)
413 - Earth Dragon Isle (Another)
414 - Earth Dragon Isle Underground (Home)
415 - Earth Dragon Isle Underground (Another)
416 - Earth Dragon Isle Sand Boil (Home)
417 - Earth Dragon Isle Sand Boil (Another)
418 - Earth Dragon Isle - Earth Dragon (Home)
419 - Earth Dragon Isle - Criosphinx (Another)
420 - Isle of the Damned (Home)
421 - Isle of the Damned (Another)
422 - Isle of the Damned Dragon Bones (Home)
423 - Isle of the Damned Dragon Bones (Another)
424 - Isle of the Damned WightKnight (Home)
425 - Isle of the Damned WightKnight (Another)
426 - Isle of the Damned Grave (Home)
427 - Isle of the Damned Grave (Another)
428 - SCENE - Karsh battles the corrupted Dario
429 - Crash (Forbidden Island (Home)?)
430 - Forbidden Island Cabin (Home)
431 - Forbidden Island (Another)
432 - Forbidden Island Cabin (Another)
433 - Sky Dragon Isle (Home)
434 - Sky Dragon Isle (Another)
435 - Sky Dragon Isle Stairway (Home)
436 - Sky Dragon Isle Stairway (Another)
437 - Sky Dragon Isle Summit (Home)
438 - Sky Dragon Isle Summit (Another)
439 - Crash
440 - Crash
441 - Black screen
442 - Crash
443 - El Nido Triangle (Home)
444 - El Nido Triangle (Another)
445 - El Nido Triangle First Area (Home)
446 - Crash
447 - El Nido Triangle Second Area (Home)
448 - Crash
449 - Crash
450 - Gaea's Navel (Home)
451 - Gaea's Navel (After Beating Monsters) (Home)
452 - Gaea's Navel Right from Entrance (Home)
453 - Gaea's Navel Right from Entrance (Another)
454 - Gaea's Navel Right from Last (Home)
455 - Gaea's Navel Right from Last (Another)
456 - Gaea's Navel Green Dragon (Home)
457 - Gaea's Navel Green Dragon (Another)
458 - Dead Sea - Highway Ruins -South-
459 - Dead Sea - Highway Ruins -North-
460 - Dead Sea - City Ruins
461 - Dead Sea - City Ruins - Lithosphere Investigation Report #27
462 - Dead Sea - Tower of Gheddon (SCENE - The party looks up and enters(
463 - Dead Sea - Tower of Gheddon Mall
464 - Dead Sea - Tower of Gheddon Transit
465 - Dead Sea - Tower of Gheddon Theater
466 - Dead Sea - Tower of Gheddon Ruins
467 - Dead Sea - Tower of Gheddon Distortion
468 - Dead Sea - Leene Square
469 - Dead Sea - Nadia's Bell
470 - Dead Sea Special Entrance (SCENE - The party enters the Dead Sea)
471 - Fate Distortion
472 - Marbule Coast (SCENE - The Sky Dragon drops the party off)
473 - Nadia's Bell (SCENE - FATE destroys the Dead Sea)
474 - Crash
475 - Crash
476 - Crash
477 - Chronopolis Lobby (SCENE (02) - Wazuki takes Serge)
478 - Black screen
479 - Crash
480 - Crash
481 - Crash
482 - Crash
483 - Crash
484 - Crash
485 - Crash
486 - Black screen
487 - Crash
488 - SCENE - General Kid ending (Arni)
489 - SCENE - General Kid ending (Viper Manor Executive Wing)
490 - SCENE - General Kid ending (Viper Manor Throne Room)
491 - Black screen
492 - SCENE - Onward, Dragoons! ending (Viper Manor Throne Room)
493 - SCENE - The True Hero ending (Termina - Lisa's Element Shop)
494 - SCENE - The Magical Dreamers ending (Magical Dreamers Stage)
495 - SCENE - The Magical Dreamers ending (Termina Dock)
496 - Black screen
497 - Crash
498 - SCENE - The True Hero ending (Fort Dragonia - Second Story Elevator Lobby)
499 - SCENE - The True Hero ending (Fort Dragonia - Dragon Tear Chamber Station)
500 - SCENE - Onward, Dragoons! ending (S.S. Invincible Special Deck)
501 - SCENE - Onward, Dragoons! ending (S.S. Invincible First Level)
502 - SCENE - Onward, Dragoons! ending (Marbule Witch Doctor's Cave)
503 - SCENE - The True Hero ending (Viper Manor Mess Hall)
504 - SCENE - New Beginnings ending (Marbule (After Restoration))
505 - SCENE - New Beginnings ending (Pearly Gates)
506 - Black screen
507 - Black screen
508 - Crash
509 - Crash
510 - Crash

Appendix

Explanation of Obfuscation

Halkun of QHIMM.com explains the process of compressing files by narrating Square's probable actions for creating Final Fantasy VII.

  1. All uncompressed data was preloaded in a particular data structure (like how it was originally).
  2. Compiling - The executables are built and the compiled structure's length is recorded. These can be dynamic; my theory is that there's no sector data here.
  3. PSX data creation - The ANI, TIM, RSD, HRC, and all the other PSX data is created from source assets.
  4. Compression - Pass 1 - GZIP - All the files that are not sector critical are GZipped. Compressed and uncompressed lengths are recorded.
  5. Compression - Pass 2 - LZS - All the files that are going to be sector critical are compressed in LZS and their lengths recorded.
  6. Concentration - Headers are made for all the files that need to be stuck together. They are then done so. Sector locations are kept blank.
  7. File finalization - All files are manifested in their final form, minus sector information.
  8. Cool preburn - A disk image is created on a blank hard drive. Blank indexes are written first. Then, when a file is copied to this image, sector information is written in the files that need it, and recorded in the master index. Each file gets this treatment.
  9. Burn - The disk is mastered.

The most location-important files accumulate at the beginning of the data, and the index is usually first (or perhaps last on a disc).

From: Games
From: Modification

Thanks to halkun for explanation of Square practices