Update README.md
This commit is contained in:
70
README.md
70
README.md
@@ -1,6 +1,9 @@
|
|||||||
# SplashEdit
|
# SplashEdit
|
||||||
|
|
||||||
SplashEdit is a Unity Package that converts your Unity scenes into authentic PSX worlds by exporting binary data loadable in a PlayStation 1 game. It streamlines the export process for your scenes and offers additional tools for VRAM management and texture quantization.
|
SplashEdit is a Unity Package that converts your Unity scenes into authentic PSX worlds by exporting binary data loadable in a PlayStation 1 as a binary fileformat called **SPLASHPACK**. It streamlines the export process for your scenes and offers additional tools for VRAM management and texture quantization.
|
||||||
|
|
||||||
|
## Important: Instructions in this readme are writen terribly (PR welcome, please I suck at writing these) REFER TO THE VIDEO DOWN BELOW FOR USAGE
|
||||||
|
https://youtu.be/1JJFYptDTk0
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
@@ -8,6 +11,10 @@ SplashEdit is a Unity Package that converts your Unity scenes into authentic PSX
|
|||||||
Export your scene with a single click using the PSX Scene Exporter component. This process automatically packs textures into the PSX's 2D VRAM.
|
Export your scene with a single click using the PSX Scene Exporter component. This process automatically packs textures into the PSX's 2D VRAM.
|
||||||
- **Texture Packing & Quantization:**
|
- **Texture Packing & Quantization:**
|
||||||
Convert and preview your textures in a PSX-compatible format with built-in quantization tools.
|
Convert and preview your textures in a PSX-compatible format with built-in quantization tools.
|
||||||
|
- **Light baking**
|
||||||
|
Prebakes any lights in the Scene into the output mesh data
|
||||||
|
- **Navmesh generation**
|
||||||
|
Generates a navmesh for FPS movement in your scene
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -29,13 +36,21 @@ If you only need to export the scene, follow these steps:
|
|||||||
|
|
||||||
1. **PSX Object Exporter:**
|
1. **PSX Object Exporter:**
|
||||||
- Attach the **PSX Object Exporter** component to every GameObject you wish to export.
|
- Attach the **PSX Object Exporter** component to every GameObject you wish to export.
|
||||||
|
- This GameObject **must** have a mesh filter on it with a viable mesh
|
||||||
|
- The GameObject **must** have a texture on it. Colored polygons are not yet supported
|
||||||
- Set the desired bit depth for each object's texture in the component settings.
|
- Set the desired bit depth for each object's texture in the component settings.
|
||||||
|
|
||||||
2. **PSX Scene Exporter:**
|
2. **PSX Scene Exporter:**
|
||||||
- Add the **PSX Scene Exporter** component to a GameObject in your scene (using an empty GameObject is recommended for organization).
|
- Add the **PSX Scene Exporter** component to a GameObject in your scene (using an empty GameObject is recommended for organization).
|
||||||
- Click the export button in the PSX Scene Exporter. You will be prompted to choose an output file location.
|
- Click the **Export** button in the PSX Scene Exporter. You will be prompted to choose an output file location for the splashpack.
|
||||||
- The exporter will automatically handle texture packing into the PSX's 2D VRAM.
|
- The exporter will automatically handle texture packing into the PSX's 2D VRAM.
|
||||||
|
|
||||||
|
3. **PSX Navmesh**
|
||||||
|
- Add the **PSX Navmesh** component to a GameObject in your scene.
|
||||||
|
- A Navmesh surface will get automatically generated and exported into your splashpack upon scene export.
|
||||||
|
- **Important:** a PSX Player component is required within the scene for Navmesh exporting to work correctly.
|
||||||
|
- **Important:** due to a scaling and overflow bug which is currently being worked on, you may encounter some Navmesh issues. To mitigate these, turn up the GTE scaling on the scene exporter to a higher value.
|
||||||
|
|
||||||
### Additional Features
|
### Additional Features
|
||||||
|
|
||||||
SplashEdit also includes extra tools to enhance your workflow:
|
SplashEdit also includes extra tools to enhance your workflow:
|
||||||
@@ -58,56 +73,12 @@ SplashEdit also includes extra tools to enhance your workflow:
|
|||||||
All textures must have dimensions that are a power of two (e.g., 64x64, 128x128, 256x256) with a maximum size of **256x256**.
|
All textures must have dimensions that are a power of two (e.g., 64x64, 128x128, 256x256) with a maximum size of **256x256**.
|
||||||
- **No Automatic Downscaling:**
|
- **No Automatic Downscaling:**
|
||||||
SplashEdit does not automatically downscale textures that exceed these limits.
|
SplashEdit does not automatically downscale textures that exceed these limits.
|
||||||
- **READ/WRITE Enabled:**
|
|
||||||
Ensure all textures have **READ/WRITE enabled** in Unity.
|
|
||||||
|
|
||||||
## Output Format
|
## Output Format
|
||||||
|
You can use the [Imhex project file](https://github.com/psxsplash/splashedit/blob/main/tools/imhex.hexproj) file to learn about the binary format
|
||||||
|
|
||||||
The binary file output by SplashEdit is structured as follows.
|
## I have a splashpack file. What now?
|
||||||
|
You can preview it using [psxsplash](https://github.com/psxsplash/psxsplash).
|
||||||
1. **VRAM Data (1 MB):**
|
|
||||||
- The file begins with a 1 MB block of VRAM data.
|
|
||||||
- This data is generated by iterating through a 2D array in row-major order.
|
|
||||||
|
|
||||||
2. **Object Count:**
|
|
||||||
- Immediately following the VRAM data, a 2-byte unsigned short is written indicating the number of exported objects (PSXObjectExporters).
|
|
||||||
|
|
||||||
3. **Per-Object Data:**
|
|
||||||
For each exported object, the following data is written sequentially:
|
|
||||||
|
|
||||||
- **Triangle Count (2 bytes):**
|
|
||||||
An unsigned short representing the number of triangles in the object's mesh.
|
|
||||||
|
|
||||||
- **Texture Information:**
|
|
||||||
- **Bit Depth (1 byte):**
|
|
||||||
The bit depth of the object's texture.
|
|
||||||
- **Texpage Coordinates (2 bytes total):**
|
|
||||||
Two 1-byte values for `TexpageX` and `TexpageY`.
|
|
||||||
- **CLUT Packing (4 bytes total):**
|
|
||||||
Two unsigned shorts (2 bytes each) for `ClutPackingX` and `ClutPackingY`.
|
|
||||||
|
|
||||||
- **Packing Byte (1 byte):**
|
|
||||||
|
|
||||||
|
|
||||||
- **Triangles Data:**
|
|
||||||
For each triangle in the object's mesh, data for its three vertices is written in sequence. Each vertex consists of:
|
|
||||||
|
|
||||||
- **Position (6 bytes):**
|
|
||||||
Three signed shorts (2 bytes each) representing `vx`, `vy`, and `vz`.
|
|
||||||
- **Normal (6 bytes):**
|
|
||||||
Three signed shorts representing `nx`, `ny`, and `nz`.
|
|
||||||
- **Texture Coordinates (2 bytes):**
|
|
||||||
- **U coordinate (1 byte):**
|
|
||||||
The U coordinate relative to texpage start
|
|
||||||
- **V coordinate (1 byte):**
|
|
||||||
The V coordinate relative to texpage start
|
|
||||||
- **Color (3 bytes):**
|
|
||||||
Three bytes representing the RGB values.
|
|
||||||
- **Padding (7 bytes):**
|
|
||||||
Seven bytes of zero padding.
|
|
||||||
|
|
||||||
Each vertex is 24 bytes in total, making each triangle 72 bytes (3 vertices × 24 bytes).
|
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
@@ -116,6 +87,7 @@ Contributions are welcome! To contribute:
|
|||||||
1. Fork the repository.
|
1. Fork the repository.
|
||||||
3. Submit a pull request with your changes.
|
3. Submit a pull request with your changes.
|
||||||
|
|
||||||
|
Please use branches.
|
||||||
For major changes, please open an issue first to discuss your ideas.
|
For major changes, please open an issue first to discuss your ideas.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user