File Formats used to distribute PS1 Discs
A Playstation One CD can either be directly put into your PC via the CD-ROM drive or mounting a .BIN/.ISO file. All of these are just ways to be able to see the contents of a PS1 Disc similar to a folder of files.
| Extension | Description |
|---|---|
| .BIN | A BIN file needs a .CUE file in order to be useful, it is the raw binary contents of a PS1 disc |
| .CUE | A CUE sheet describes a .BIN file and can be mounted on a pc to reveal the file system of the disc |
| .ISO | A ISO file can be mounted on a pc to reveal the file system of the disc |
| .CHD | Compressed Hunks of Data (CHD) format intiially created by MAME can be used in most PS1 emulators |
| .PBP | Playstation Boot Package - PS1 games that run on the PSP (and also PS Classic) |
File formats Located on the PS1 Disc
After mounting a PS1 Disc ISO/BIN/CUE you can view the file system of the Disc and you will see files with a variety of extensions, some of these extensions are standard across games and are listed in the table below.
| Extension | Description |
|---|---|
| .STR | Streaming Movie |
| .BS | MDEC Stream |
| .XA | Streaming CD-ROM Vocals |
| .RSD | 3D Model files |
| .TMD | 3D Model files (for PSYQ libraries) |
| .PMD | High speed Modelling data |
| .TOD | Animation Data |
| .HMD | Hierarchical 3D Model plus animation and other data |
| .TIM | 2D Image file |
| .SDF | Sprite Editor Project File |
| .PXL | Pixel Image Data |
| .CLT | Palette Data |
| .ANM | Animation informaton for 2D |
| .TSQ | Animation Time sequence for 2D |
| .CEL | Cell Data |
| .BGD | Background Map Data |
| .SEQ | Audio Sequence file |
| .SEP | Multi-Track Audio Sequence file |
| .VAG | Audio Wavefile |
| .VAB | Audio Source Data |
| .DA | CD-DA Data |
| .FAT | Memory Card File |
3D Model Formats (RSD Formats)
These formats tend to be only available in source code and relate to 3D models.
Most of these are human readable ASCII files apart from TMD which is optimised for the game itself and DXF which is generated by the original 3D modeeling application (e.g 3D Studio).
You can convert DXF to RSD formats using the tool DXF2RSD provided in the PSQ SDK.
| Format | Description |
|---|---|
| DXF | Drawing Exchange Format, Standard 3D model format used in a variety of 3D software such as AutoCAD and 3D Studio |
| RSD | Format used in the 3D Graphics Tools while artists are editing |
| PLY | Polygon vertices information (coordinates) |
| MAT | Material (Texture) Information |
| GRP | Group of Polygon information |
| MSH | Mesh, information on how polygons are linked together |
| PVT | Pivot file used for rotation information |
| COD | Coordinate for Vertex data |
| MOT | Animation information |
| OGP | Vertex grouping information |
| TMD | Format used by the game itself, MD is Modelling Data (What does the T stand for?) |
Recovering Raw Overlay Load Addresses
An overlay is code loaded when needed, often into memory also used by other overlays at different times. A raw overlay need not carry the load-address header found in a main executable. The decomp.wtf overlay importer investigates files using code patterns and whether calls land on candidate function starts 1.
A Candidate Base from an Internal Call
For an uncompressed, unrelocated image copied contiguously into memory, a function at file offset F has address B + F, where B is the candidate load base.
Suppose a call targets 0x80123400 and a plausible callee begins at file offset 0x3400.
That pairing suggests B = 0x80120000.
A second target at 0x80125600 paired with offset 0x5600 supports the same base.
This Python example checks those two hypothetical pairings:
pairs = [(0x80123400, 0x3400), (0x80125600, 0x5600)]
bases = {target - offset for target, offset in pairs}
assert bases == {0x80120000}
This is a hypothesis about which calls are internal, not a way to subtract any call target from any prologue.
Calls into resident code should not be forced into the overlay.
For MIPS jal, the destination combines the instruction’s 26-bit index shifted left by two with the upper four bits of PC + 4; a disassembly at the wrong base can therefore mislead you.
The project’s segment-placement implementation searches candidate placements using multiple call targets and function-start patterns 2.
Verify the Mapping Against the Loader
Find the disc read, copy or decompression operation and verify its destination and length in an emulator. Compression or relocation invalidates a direct file-offset-to-RAM mapping until those transformations are accounted for. Keep separate analysis segments for overlays sharing an address; record which one is loaded during each trace.
The importer’s prologue and return-pattern filters can miss small or unusual code regions. A file it does not recognise is not proven to be data 1. For executable overlays with headers, see the PS2 overlay notes.