Jump to content

Oni (PlayStation 2): Difference between revisions

→‎Binary differences: tablification etc
m (→‎Patches: a caution about outro)
(→‎Binary differences: tablification etc)
Line 34: Line 34:
* The text of the PS2 credits is somewhat different; see [[Quotes/Credits#PS2_outro_differences|HERE]] for details.
* The text of the PS2 credits is somewhat different; see [[Quotes/Credits#PS2_outro_differences|HERE]] for details.


==Binary differences==
==Data storage: similarities, discrepancies, anomalies==
The game files in PS2 Oni are structured similarly to PC Oni, but with some notable differences.
The root directory of the PS2 Oni CD is roughly equivalent to the [[Oni_(folder)|Oni folder]] of a PC or Mac installation. This isn't clear at first, though, as the names of most files and folders are reduced to single- or double-digit codes. Actual names are reconstituted at runtime (by the game engine SLUS_200.64) using binary lookup tables named INDEX.DIR, which are present in every directory that has been subjected to reindexation. Possibly this was done to accommodate a file system such as MS-DOS on one of the machines involved in making the CD (MS-DOS filenames are case-insensitive, with a maximum of 8 characters for the filename and 3 characters for the "extension"). After decoding, the directory tree is as follows.
* The disc contains duplicate copies of a strangely-small persist.dat, at the paths /PERSIST.DAT and /2. (Note that Oni (PS2) saves its progress to the memory card like every other game, so these files are vestigial.)
{|border=1 cellspacing=0 style="font-size:75%"
* Renamed files. It appears that PS2 file naming is subject to the 8+3 limit seen in DOS. In order to work around this for the longer names used in [[IGMD]], the files are simply named with consecutive numbers on disc, and the real names are given in INDEX.DIR files in the same directory. Here is the overall structure of the directory with decoded names and commentary:
|-
** 1/ - GameDataFolder/
!Actual name on disk
*** 1/ - IGMD/, with the same unused level scripts found in [[OBD:Localization/German|German Mac Oni]]
!Decoded name if any
*** 2 - intro.bik (unused by game)
!Notes
*** 3/…17/ - the game's .dat files, but the corresponding .raw and .sep files have been moved to the subdirectories 20/ and 21/
|-valign=top
*** 18 - outro.bik (unused by game)
|
*** 19/ - .pal ("palette") files
*1/
*** 20/ - contains the .raw files which go along with the .dat files in this directory
**1/
*** 21/ - contains the .sep files which go along with the .dat files in this directory
***...
** 2 - persist.dat (PC version, unused)
**19/
** 3 - Preferences (another vestigial file, pointing to a GameDataFolder on someone's hard drive)
***<nowiki>#</nowiki> (#=1-15)
** ICONS/ - contains one icon, the Oni icon, apparently in a PS2 format
**20/
** INTRO1.PSS and INTRO2.PSS, discussed under "Visual differences"
***<nowiki>#</nowiki> (#=1-15)
** LOADING.RAW - a new data file for the Main Menu loading screen added to PS2 Oni
**21/
** MODULES/ - standard libraries for a PS2 game
***<nowiki>#</nowiki> (#=1-15)
** OUTRO.PSS - the outro animation and credits, discussed under "Visual differences"
**1,2
** PERSIST.DAT (PC version, unused)
**<nowiki>#</nowiki> (#=3-17)
** SLUS_200.64 - the game binary
|
** SOUNDS/ - it appears that all sound data has been broken out into a new set of .dat/.raw/.sep files
*GameDataFolder/
** SYSTEM.CNF - standard boot information for a PS2 game
**IGMD/
 
***...
* It's surprising to note that the original .bik movies from PC Oni are taking up space on the CD-ROM considering the game cannot play them and the PSS (PlayStation 2 video format) versions of these movies are already taking up 33% of the total space on the volume. It would seem like the GDF is a straight copy-and-paste from the PC version, except that it's not because all the game data was repacked and restructured.
**pal/
***level#_palette.pal (#=0-4,6,8-14,18-19)
**raw/
***level#_Final.raw (#=0-4,6,8-14,18-19)
**sep/
***level#_Final.sep (#=0-4,6,8-14,18-19)
**intro.bik, outro.bik
**level#_Final.dat (#=0-4,6,8-14,18-19)
|
*Main game data container (c.f. [[GameDataFolder]])
**Level logic scripts written in [[BSL]]
***(see [[IGMD]] for an expanded list)
*Palette folder
**Palette files referenced by a level's [[OBD:TXMP|TXMP]]
*Raw data folder
**.raw files referenced from the respective .dat
*Separate data folder
**.sep files referenced from the respective .dat
*[[Intro]] and [[Outro]] sequences in Bink video format (unused)
*[[OBD:Instance_file_format|Instance files]] (main game data structures, c.f. [[OBD:Oni_Binary_Data|OBD]])
|-valign=top
|colspan=2|
*ICONS/
**ONI1.ICO
*MODULES/
**IOPRP16.IMG
**LIBSD.IRX, MCMAN.IRX, MCSERV.IRX,<br />PADMAN.IRX, SDRDRV.IRX, SIO2MAN.IRX
**ONISS2.IRX
*SOUNDS/
**LEVEL#/ (#=0-4,6,8-14,18,19)
***SOUND.DAT, SOUND.RAW, SOUND.SEP
**BINK#.VAG (#=0,1,2)
*INTRO1.PSS, INTRO2.PSS, OUTRO.PSS
*LOADING.RAW
*PERSIST.DAT
|
*Icons folder. The 18.12.2000 dev build has an additional "icons" folder (empty)
**Oni icon. The 18.12.2000 dev build instead has SLIME#.ICO (#=1,2,3)
*Standard folder for application modules (hardware drivers etc)
**An "image" module (the 18.12.2000 dev build also has IOPRP165.IMG)
**Six standard modules typical of PS2 games (the 18.12.2000 dev build<br />has ten more such modules, and one more in a separate OLD folder)
**A custom module specific to the game (Oni's "Sound System 2")
*A separate folder containing the waveform data of all the sounds.
**Per-level folders
***SOUND.DAT referenced from level#_Final.dat, .SEP looked up from .DAT
**Three short sounds of unclear purpose.
*Intro and outro video sequences (18.12.2000 dev build has INTRO.PSS and OUTRO.PSS).
*Some data for the loading screen interface (absent for the 18.12.2000 dev build).
*A savegame/preference file inherited from a PC build (unused).
|-valign=top
|
*2
*3
|
*persist.dat
*Preferences.txt
|
:A duplicate of PERSIST.DAT (also unused).
:A vestigial file listing hard drive locations (absent for 18.12.2000 dev build).
|-
|colspan=2|
*SLUS_200.64
*SYSTEM.CNF
|
:The game binary (a.k.a. executable a.k.a. engine)
:Standard boot information for a PS2 game.
|}
;Notes
*We find the familiar [[GameDataFolder]] at the expected location, as well as the [[IGMD]] subtree (level logic scripts) and the instance files ('''level#_Final.dat'''). Raw and separate files ('''level#_Final.raw''' and '''level#_Final.sep''') are fundamentally the same as for Mac and PC demo, except that they are tucked away into '''raw''' and '''sep''' directories. There is also a '''pal''' directory holding a set of '''level#_palette.pal''' files (one per level); in PS2 Oni, all the textures (TXMP files) use compact 8-bit storage (i.e., each pixel is an index into a palette of 256 colors), as opposed to PC and Mac TXMPs which typically use 16- or 24-bit color.
*'''intro.bik''' and '''outro.bik''' are not used by the engine (they're superseded by '''INTRO2.PSS''' and '''OUTRO.PSS'''); mostly they are just taking up 56 MB of storage space for nothing (the .PSS versions take up 188 MB).
*persist.dat and PERSIST.DAT are [[Oni_(folder)/persist.dat|savegame/preference files]] of the Little Endian variety (i.e., created by a PC version of Oni), abnormally small. The PS2 engine doesn't use them, and relies on memory cards instead.
*Sounds are encoded using Sony's VAG format/codec, and (unlike for other Oni versions) their waveform data isn't stored in '''level#_Final.raw''' (see [[OBD:SNDD#PS2_implementation|SNDD]]). Instead the SNDD instances in '''level#_Final.dat''' contain links to '''SOUNDS/LEVEL#/SOUND.DAT''', which in turn references waveform data stored in '''SOUNDS/LEVEL#/SOUND.SEP''' (which contain raw VAG data without a header). The purpose of '''SOUNDS/LEVEL#/SOUND.RAW''' is not known (it is raw VAG data as well, with a size of about 1MB per chapter). Both the '''SOUND#.RAW''' files and the '''BINK#.VAG''' files are referenced from '''ONISS2.IRX''' directly, without involving the SNDD entries from '''level#_Final.dat''' files.
*LOADING.RAW (absent for the 18.12.2000 dev build) appears to hold data for the loading screen.
;Scripts
:The PS2 level scripts are similar to [[OBD:Localization/German|some Mac Oni versions]] or the Japanese PC version, in that they include some pre-beta folders (script logic intended for now-missing chapters and test levels).
;Binary data
:The internal structure of '''level#_Final.dat''' and the corresponding '''.raw''' and '''.sep''', is compliant with the "VR31" iteration of instance files, although many resources were optimized for minimal storage space (textures use indexed colors, character animations has been split into a trimmed-down TRAM and an "extra" instance TREX that only exists for combat moves and such, etc). The few discrepancies between the PS2 implementation and the previously documented PC and Mac versions are covered by the [[OBD:Oni_Binary_Database|OBD]] documentation.


==Patches==
==Patches==