Difference between revisions of "Chrono Cross File Structure"
(→Chrono Cross Translation Tools) |
|||
Line 169: | Line 169: | ||
Exit Menu/Return | Exit Menu/Return | ||
Quit</pre> | Quit</pre> | ||
+ | |||
+ | 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== | ||
+ | |||
+ | <pre> | ||
+ | 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 (reverts to title screen) | ||
+ | 011 - Demo scene - Shadow Forest Giant Tree (reverts to title screen) | ||
+ | 012 - Demo scene - Viper Manor Study Bridge (Night) (reverts to title screen) | ||
+ | 013 - Demo scene - Viper Mano Study with Harle (reverts to title screen) | ||
''From'': [[Games]]<Br /> | ''From'': [[Games]]<Br /> | ||
''From'': [[Modification]] | ''From'': [[Modification]] | ||
− | ''Thanks to halkun for explanation of Square practices'' | + | ''Thanks to halkun for explanation of Square practices''</pre> |
Revision as of 04:13, 22 October 2007
Chrono Cross, released late in the PlayStation's life, was subject to clever obfuscation by Square. Obfuscation—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. Halkun of QHIMM.com explains by narrating Square's probable process for creating Final Fantasy VII.
- All uncompressed data was preloaded in a particular data structure (like how it was originally).
- 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.
- PSX data creation - The ANI, TIM, RSD, HRC, and all the other PSX data is created from source assets.
- Compression - Pass 1 - GZIP - All the files that are not sector critical are GZipped. Compressed and uncompressed lengths are recorded.
- Compression - Pass 2 - LZS - All the files that are going to be sector critical are compressed in LZS and their lengths recorded.
- Concentration - Headers are made for all the files that need to be stuck together. They are then done so. Sector locations are kept blank.
- File finalization - All files are manifested in their final form, minus sector information.
- 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.
- 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). In 2002, Terminus Traduction (specifically, Yazoo, Nemesis, and Manz) successfully audited Chrono Cross and wrote a set of utilities for extracting its data.
Contents
Chrono Cross Hacking Tools
Yazoo's Chrono Cross hacking tools creates the following folders, each containing several .OUT files of data.
- BF = 2415-2513 BattleFields
- BS = 2543-3054 Battlescript
- CD = 75- 125 Character Descriptions
- CF = 25- 74 Character Faces
- CTF = 1993-2084 Character talking face
- MISC = 0- 24 Misc
- MISC = 179- 185 Misc
- MISC = 190- 203 Misc
- MISC = 332- 355 Misc
- 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- 321 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-5918 Video
Chrono Cross Translation Tools
File and Data Types
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):
Here is a savestate with the debug mode enabled:
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 (reverts to title screen) 011 - Demo scene - Shadow Forest Giant Tree (reverts to title screen) 012 - Demo scene - Viper Manor Study Bridge (Night) (reverts to title screen) 013 - Demo scene - Viper Mano Study with Harle (reverts to title screen) ''From'': [[Games]]<Br /> ''From'': [[Modification]] ''Thanks to halkun for explanation of Square practices''