Giter Site home page Giter Site logo

crashedit's Introduction

This software is deprecated.

A new editor, DRNSF, is being developed to replace CrashEdit.

DRNSF does not yet have adequate replacements for all of the functionality and features in CrashEdit. For this reason, CrashEdit may continue to receive some minor development support such as bugfixes and features.

Below the following links is the previous version of the README file.

CrashEdit

This program is an application designed for modifying the game files of the original Crash Bandicoot video game trilogy.

Supported Games

Note that CrashEdit does not work directly with ISO's, but rather with the NSF files stored on the game discs.

  • SCUS-94900 Crash Bandicoot (no prelude patching)
  • SCES-00344 Crash Bandicoot (no prelude patching)
  • SCPS-10031 クラッシュバンディクー (no prelude patching)
  • US BETA 96/03/08 Crash Bandicoot "Prototype"
  • US BETA 96/05/11 Crash Bandicoot "E3 Demo"
  • SCUS-94154 Crash Bandicoot 2: Cortex Strikes Back
  • SCES-00967 Crash Bandicoot 2: Cortex Strikes Back
  • SCPS-10047 クラッシュバンディクー 2: コルテックスのぎゃくしゅう! (incomplete support)
  • EU BETA 97/09/14 Crash Bandicoot 2: Cortex Strikes Back "Review Copy"
  • SCUS-94244 Crash Bandicoot: Warped
  • SCES-01420 Crash Bandicoot 3: Warped
  • SCPS-10073 クラッシュバンディクー 3: ブッとび! 世界一周 (incomplete support)
  • US BETA 98/08/15 Crash Bandicoot 3: Warped "Alpha Demonstration" (as Crash 3)

Usage

For users acquainted with Microsoft Windows, "directories" are commonly referred to as "folders" on windows. When the term "directory" is used here, think "folder".

Some basic knowledge of how Crash Bandicoot game files are laid out is necessary to use this application. CrashEdit is not designed to work directly on disc images (aka ISO's), but instead on files with the "NSF" file format. This is a custom format created by Naughty Dog and used in the original Crash Bandicoot trilogy (not including CTR).

First, a Crash Bandicoot game CD will have a root directory with contents similar to the following:

  • S0 (directory)
  • S1 (directory)
  • S2 (directory)
  • S3 (directory)
  • SYSTEM.CNF (playstation game boot configuration file)
  • SCUS_949.00 (playstation game exe file, US Crash Bandicoot in this case)

Within the S0/S1/etc directories you will find files named similar to the following:

  • S0000013.NSD (nsd file)
  • S0000013.NSF (nsf file)
  • S0000014.NSD (nsd file)
  • S0000014.NSF (nsf file)
  • S0000015.NSD (nsd file)
  • S0000015.NSF (nsf file)
  • ...

Notice how each filename has an NSD/NSF pair. Each pair corresponds to a specific level in the game, and these files contain the game data for that level. The last two characters before the .NSD or .NSF extension are the "level ID" for that specific level. As an example, the level titled The Lost City has the level ID 20, and its file pair is the following, found in the S2 directory:

  • S0000020.NSD (nsd file)
  • S0000020.NSF (nsf file)

A complete list of level ID's and their associated levels can be found here:

https://docs.google.com/document/d/1yZX49fsW7VpN7ODnFbugFIpSGbajqPsFHUqMdti5IOk/edit

The NSF file contains the actual game data for the level and is what CrashEdit is designed to read and manipulate. An NSF file consists of entries. Each entry has a 5-character name, and represents a game asset such as a sound effect or 3D model. The following entry types are recognized and supported by CrashEdit:

  • Animation Entry: One animation used by a game object. Each frame is a full set of vertices.
  • Model Entry: One model used by a game object. Polygon data is stored in a Model Entry, but vertex data is stored in an Animation Entry.
  • Scenery Entry: One section of the 3D model for a level's scenery.
  • Sort List Entry: A list of values that indicate what polygons should be drawn on-screen and in what order. These require world indexing, which means they'll only operate along with a Zone Entry.
  • Texture Chunk: Not a real entry type. A single 64 KB page whose data will be directly uploaded to VRAM on load. Double-click to open a texture viewer window.
  • Zone Entry: Describes one level "zone", including objects in that zone as well as the zone's camera configuration and collision octrees.
  • GOOL Entry: One dynamically-linked object executable. Contains all object code as GOOL bytecode (and also R3000A MIPS for Crash 2 and 3) for a specified object type as a series of code blocks, including animation references. Crash 3 GOOL is not fully supported.
  • Sound Entry: A sound effect. This entry only contains the raw sound data without any metadata such as the sample rate.
  • Music Entry: A set of music tracks in SEQ format (very similar to MIDI format), and the associated VH file (wavebank header file). Each level zone will refer to a single music entry which will be used for playback while the camera is in that zone.
  • Image Entry: A list of 16x16 bitmaps, meant for use with a Map Entry. Each bitmap can be in one of many formats.
  • Map Entry: Describes a "map", composed of a background image, followed by several "map entities" which are overlayed. CrashEdit only supports the background layer. Right-click the image to save to a file.
  • Pallette Entry: A list of 256-color pallettes, meant for use with 8-bit Image Entries.
  • Wavebank Entry: Part of the level's wavebank data (VB file). Crash music is in MIDI format, but does not use General MIDI (GM) instruments. Instead, a custom instrument set is used for each level theme. The audio data for this instrument set (wavebank) is very large, so it must be split into multiple entries (up to a maximum of 7).
  • Speech Entry: Similar to the sound entry, but localized (supporting multiple languages). Long dialogue or any other streamed audio is often split up into multiple of these entries due to size constraints.

Entries are organized into containers which are referred to as chunks. Each chunk is exactly 64 KB in size, and so it cannot contain more than 64 KB of entry data. (If you attempt to save an NSF file which has a chunk containing more than 64 KB of entry data, a packing error will occur and the save operation will fail.) There are different types of chunks: the normal type and special audio types. (As a general rule, you should keep audio-related entries in their proper chunk types or else the playstation will be unhappy.) There is also a special chunk type, Texture Chunk, which contains raw texture data instead of entries.

The NSD file contains various data used to assist the game in properly accessing the NSF files. Included in the NSD file is a table mapping entries to chunks. If you add chunks, delete chunks, add entries, delete entries, move entries, rename entries, or reorder chunks, you will need to update this table. CrashEdit can automatically patch this table with the Patch NSD button. It will remove any and all prelude data._

System Requirements

Aside from the obvious monitor, keyboard, and mouse. However, a mouse scroll wheel is not required.

  • .NET Framework 4.7 or Mono
  • OpenTK 1.0
  • Preferably at least 64 MB of physical memory available to the application or you may encounter thrashing while loading or saving large files

Known Issues

Incomplete Features

Significant Issues

  • Crash 1 Retail: Saving preludes is not yet supported.
  • Crash 2/3 NTSC-J Retail: Most levels contain special not-yet-supported speech entries.

Insignificant Issues

These issues have no significant effect on the operation of the program, but are still technically issues with the program. This list can be safely ignored by most users.

  • All Games: Any data hidden within unused sections of NSF files may be ignored by the program without warning, and will not be preserved.
  • Crash 1 All: Music entries containing VH data may be saved out with different data in unused sections.
  • Crash 1 Retail: "Patch NSD" does not patch all of the NSD.
  • Crash 2 NTSC-J Retail: A music entry in S000003C.NSF containing VH data may be saved out with different data in unused sections.

Bugs

  • All Games: Exporting VABs in DLS format is currently broken. The workaround is to open and resave the DLS file with Awave Studio.
  • Crash 1 All: Exporting to COLLADA format is currently broken. However, these files can be opened without issue in Noesis.

Broken Game Files

  • Crash 1 All: S0000002.NSF, if present, must be opened as a "1995 Prototype" file. When viewing its zones, press O to fix the octree display.
  • Crash 1 All: S0000010.NSF, if present, must be opened as a "1995 Prototype" file.
  • Crash 1 Retail: S0000038.NSF contains a music entry with an incorrect SEP track count.
  • Crash 1 Retail: S0000004.NSF is actually a beta MAR08/MAY11-format file.
  • Crash 1 Retail: S000000B.NSF is actually a beta MAR08/MAY11-format file.
  • Crash 1 Retail: S000000D.NSF is actually a beta MAR08/MAY11-format file.
  • Crash 1 Beta MAY11: S000001C.NSF contains two demo entries with incorrect magic numbers.

Mono-specific Issues

These are issues you may encounter if you are using Mono instead of the .NET Framework to run this application.

  • Opening a texture chunk invokes an unimplemented feature in Mono which will crash the application. If you are building from source, you may work around this by commenting out the CreateEditor() method in CrashEdit/Controllers/TextureChunkController.cs. You may grep for // MONO USERS to find the specific method.

Installation

Just unzip into a directory and run the exe.

If you are working with the source code, it is a VS 2015 Edition solution which consists of four projects, "Crash", "Crash.UI", "CrashEdit" and "CrashHacks". You will need to set "CrashEdit" as the startup project to run the application. "CrashHacks" is a separate application not documented on this repo and not used by CrashEdit itself.

Where To Get

Precompiled binary files (EXE files) are available at: http://www.cbhacks.com/crashedit.html

The original source code is currently available as a git repository on github at:
https://github.com/cbhacks/CrashEdit/tree/deprecate (deprecate branch)

crashedit's People

Contributors

mandude avatar ughman avatar wurlyfox avatar arahaan avatar airumu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.