Oni (PlayStation 2)

From OniGalore
Revision as of 14:56, 8 December 2022 by Geyser (talk | contribs) (→‎Data storage: scripts)
Jump to navigation Jump to search

Midway through Oni's development, in 1999, Take-Two Interactive purchased a stake in Bungie and became the publisher for the upcoming game. In addition to their investment, T2 stipulated that a PlayStation 2 port would be released alongside Oni for Windows and Macintosh. That port was created by Rockstar Toronto (known at the time as Rockstar Canada), and because the game had been designed for a PC with a hard drive, changes had to be made in order to load the game more quickly from CD-ROM. Even after this work, the PS2 version has been noted for its long load times.

Today, Oni runs well in the emulator PCSX2. When using this emulator, load times are greatly reduced by placing an ISO of the game disc on your hard drive. You can also easily apply patches from within PCSX2 instead of having to buy a cheat device for your PS2, so this is the best way to run the game.

Gameplay differences

  • Cheats are entered differently; see HERE. Also, they do not require the game to be beaten first, which is extremely helpful since the console controls make this version harder.
  • The cooldown exploit has been fixed.
  • The AI for the androids in Training is glitchy or overly aggressive. They might try to attack you after beating Karen, and the training bots sometimes forget the defense/offense program they're supposed to be following and wantonly attack you. It remains to be seen if this is an overall glitch with AI in the PS2 version.
  • In the opening cutscene for Chapter 13, Konoko fires two or three times at the glass in the ceiling instead of once. (This probably means you have fewer bullets in your clip when the level starts.)

Visual differences

[pictures coming later]

  • The intro and outro movies are 30 fps (NTSC) or 25 fps (PAL) instead of 15 fps, and intro in particular looks better on PS2. (These movies were turned into mod packages for PC Oni called "HQ Movies (Mac)" and "HQ Intro Movie (Windows)".)
  • The intro on PC starts with the Bungie logo sequence and then plays the anime intro as part of one movie, but on PS2 there are two intro movies: the first contains an added Rockstar logo sequence (with a special Konoko-based presentation) and the original PC Bungie logo sequence; this movie is unskippable (but see "Patches" for a movie-skipping patch). The second movie contains the original anime intro.
  • Different Main Menu.
  • When loading a level, instead of a progress bar against a black background, PS2 Oni has a proper loading screen – the game cycles through three different backgrounds for these.
  • The splashscreens for each level use the same images as on PC, but the title overlay has a different style.
  • The text used for subtitles is larger. Character names in the fly-in portraits are also redone to be much larger.
  • Lighting is handled differently; there seems to be a higher gamma to the graphical output.
  • Karen in Training is using the dark-haired female cop model, probably a result of Rockstar's efforts to conserve resources due to limited memory.
  • Some of Shinatama's un-subtitled instructions in the PC version of Training are subtitled on PS2, but not all. Some of these PS2 subtitles are abbreviated transcriptions:
    • SNDD: "00_01_76 Be careful, Konoko! Some attacks are so powerful that they can stagger you even if you block them. Some super moves are so strong they can't be blocked at all!"
    • SUBT: "00_01_76 Some powerful attacks can stagger you. Supermoves cannot be blocked."
    • SNDD: "00_01_89 I'll activate a training drone to walk up and down the firing range. Fire at it to disable it."
    • SUBT: "00_01_89 Fire at the moving training drone to disable it."
  • ...and some wording has been re-distributed between SUBTs. Presumably these changes were due to limited screen space.
    • SNDDs:
"00_01_86 Shinatama: Perfect!"
"00_01_88 Shinatama: Let's try firing at some moving targets. Walk over to the table on the right. See the weapon lying there? That's a plasma rifle. Pick it up."
  • SUBTs:
"00_01_86 Shinatama: Perfect! Let's try firing on some moving targets."
"00_01_88 Shinatama: Walk over to the table on the right. See the weapon lying there? That's a plasma rifle. Pick it up."
  • Instead of using "Trailer" and "Farewell" for the credits, the PS2 credits have completely different music. This is probably because the PC credits sequence is 171 seconds long (that is, the textual credits, not the whole outro), but the NTSC version of the PS2 credits is 156 seconds and the PAL version is 204 seconds. (The differing frame rate of PAL's 25 fps vs. NTSC's 30 fps cannot account for this 48-second time difference, and the credits themselves are identical; the PAL version simply scrolls the credits 30% slower for some reason.) To cover these credit sequences of differing length, a new backing track with a house beat was composed by Rockstar Canada staff. The NTSC version's music fades out arbitrarily as the credits end, whereas the track behind the longer PAL version continues on an extended (and eyebrow-raising) riff on female pain sounds from the game and ends with an actual coda.
  • The text of the PS2 credits is somewhat different; see HERE for details.

Data storage

The root directory of the PS2 CD-ROM is roughly equivalent to the Oni folder of a Windows or Mac installation. This isn't clear at first, as the names of the files and folders that would be found in a PC installation are represented by numbers due to the PS2 file system being limited to 8+3 naming. The actual names for these files are given in plain-text directory listings named INDEX.DIR alongside the renamed files. After assigning these names, the directory tree is as follows.

Name on disk Indexed name Notes
  • 1/
    • 1/
      • ...
    • 19/
      • # (#=1-15)
    • 20/
      • # (#=1-15)
    • 21/
      • # (#=1-15)
    • 1,2
    • # (#=3-17)
  • GameDataFolder/
    • IGMD/
      • ...
    • 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 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)
  • Instance files (game data files)
  • ICONS/
    • ONI1.ICO
  • MODULES/
    • IOPRP16.IMG
    • LIBSD.IRX, MCMAN.IRX, MCSERV.IRX, 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 also has an empty "icons" folder)
    • Oni icon (the 18.12.2000 dev build instead has SLIME[1-3].ICO)
  • 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 has ten more modules,
      plus one in an OLD folder)
    • A custom module specific to the game (Oni's "SoundSystem2")
  • A separate folder containing the sound data
    • Per-level folders
      • SOUND.DAT referenced from level#_Final.dat, .SEP and .RAW looked up from .DAT
    • Three short beep-like sounds (purpose unclear)
  • Intro and outro video sequences (18.12.2000 dev build has INTRO.PSS and OUTRO.PSS)
  • Game data for the loading screen interface (absent for the 18.12.2000 dev build)
  • A savegame/preference file (unused; see "File notes" below)
  • 2
  • 3
  • persist.dat
  • Preferences.txt
  • A duplicate of PERSIST.DAT (also unused, see "File notes" below)
  • A vestigial file listing locations for the game data (absent in 18.12.2000 dev build)
  • SLUS_200.64
  • SYSTEM.CNF
  • The game binary (a.k.a. executable)
  • Standard boot information for a PS2 game


File 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 Windows 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 Windows 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); they're just taking up 56 MB of storage space for nothing (the .PSS versions take up another 188 MB).
  • persist.dat and PERSIST.DAT are savegame/preference files of the little-endian variety (i.e., created in Windows or by the PS2) and are byte-identical to each other. Actual save data is stored in a standard PS2 format on the memory card (obviously the game cannot write to files on disc anyway). They might be a development relic of the PS2 port since they are much smaller than a PC persist.dat (also, one is named in all-caps like the other files Rockstar added to the game directory).
Scripts
The PS2 level scripts are similar to Big Blue Box Mac version, in that they include some pre-beta folders (script logic intended for now-missing chapters and test levels). Some "test" subfolders are present for EnvWarehouse and manplant, with backups of the scripts for levels 1 and 2.
When it comes to the PC/Mac discrepancy (in the tctf_ii folder), the scripts match the PC version. However PS2 scripts have discrepancies of their own (to be documented later).
The PS2 version of BSL implements at least two new script variables, psx2_ambient2 and psx2_directional2 (both of them floats). They appear to be white light intensities (i.e., shades of gray) used for the Gouraud shading of characters and other M3GM (powerups, weapons, furniture, animated objects). In PC/Mac Oni there is no possibility to adjust ambient or directional light intensities through scripts: the main directional light has intensity 0.7, the auxiliary directional light (turned on at higher quality settings) has intensity 0.3, and the ambient intensity is either 0.65 or 0.55 (larger is one directional light, smaller if two directional lights).
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 Windows/Mac versions are covered by the OBD:PS2 page.
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 SNDD). Instead the SNDD instances in level#_Final.dat contain links to SOUNDS/LEVEL#/SOUND.DAT, which in turn references waveform data stored either in SOUNDS/LEVEL#/SOUND.SEP (raw VAG data without any headers) or SOUNDS/LEVEL#/SOUND.RAW (raw VAG data with minimal headers to allow the lookup of each sound). The three BINK#.VAG files are beep-like sounds picked from Oni's game data; they have a VAG header and are valid sounds for VAG-capable apps.

Patches

Punk7890 of TCRF (The Cutting Room Floor) found that a number of Dev Mode features were still present in the PS2 port. Some need hex-patching in order to activate them, and some can be toggled using the controller once activated, showing that Rockstar found these features useful during their port work. The patches (for the U.S. release of the game) are found HERE.

In order to apply the patches on a PS2, you would use a cheat device like GameShark, which few people have. If you're running Oni in PCSX2, you'll have an easy time adapting these patches. Create a plain-text file called FD9CD8FC.pnach (that's the CRC of the U.S. release of the game), and make sure there's no ".txt" at the end of the name. Place it in the "cheats" directory for PCSX2, and inside the file, create a line of text for each patch you want to use, using the following guide to convert the patch on the TCRF wiki:

TCRF wiki .pnach file
0033A904
00000001
becomes patch=1,EE,0033A904,word,00000001 # FPS counter

The comment at the end of the .pnach file's line is optional, but you will definitely want to label your patches.

An additional patch for skipping the intro movies is below, courtesy of Iritscen. Place this patch in a .pnach file to disable the movie-playing function so that the game skips right to the loading screen for the Main Menu. Make sure not to have this active when finishing the game or you won't see the outro movie and credits.

patch=1,EE,001C726C,word,00000000 # no movies