A WIP decompilation of Space Station Silicon Valley (SSSV) for N64. Checkout the wiki for more information.
Note: To use this repository, you must already have a copy of the game.
The assumption is that you will be using Ubuntu 20.04
, either natively, via WSL2, or via Docker.
Please check the Dockerfile for the necessary prerequisites.
Clone the repository; note the --recursive
flag to fetch submodules at the same time:
git clone git@github.com:mkst/sssv.git --recursive
Navigate into the freshly cloned repo
cd sssv
Place the US 1.0 SSSV ROM in the root of this repository, name it baserom.us.z64
, and then run the first make
command to extract the ROM:
make extract
Now build the ROM:
make --jobs
If you did everything correctly, you'll be greeted with the following:
build/sssv.us.z64: OK
There are 5 known versions of the ROM:
Country Code | CRC1 | CRC2 | ROM SHA1 | Notes | Version |
---|---|---|---|---|---|
E - North America | BFE23884 |
EF48EAAF |
e5e09205aa743a9e5043a42df72adc379c746b0b |
US 1.0 | 1.37 |
J - Japanese | BFE23884 |
EF48EAAF |
7320f08474c011fc7781093bf1a6818c37ce51e2 |
JP (Unreleased) | 1.37 |
E - North America | FC70E272 |
08FFE7AA |
c968bba6a90db9ecbd957e910684a80726b0497d |
US 1.1 | 1.37 |
P - European (basic spec.) | FC70E272 |
08FFE7AA |
23710541bb3394072740b0f0236a7cb1a7d41531 |
EU | 1.37 |
??? | ??? | ??? | ??? | NES World | 1.26B |
Only US and EU versions were released. If you are in possession of the Prototype ROM, let me know - mkst#4741
.
Place baserom.eu.z64
in the root of the repository, and suffix each make
command with VERSION=eu
.
The layout of the ROM is work-in-progress. Three sections of code have been identified along with a mix of compressed and non-compressed data.
Uses RNC for a number of assets.
Compression is partially matching; 250/263 files match after compression.
A handful of files are compressed twice.
There appears to be a level of obfuscation going on in the ROM. For example, the F3DEX microcode is not obvious within the ROM, but it is present in RAM.
asm/ ; assembly files split by splat (not checked in)
bin/ ; binary files split by splat (not checked in)
build/ ; build folder (not checked in)
include/
2.0I/ ; libultra 2.0I headers
src/
core/ ; core code
lib/libultra/ ; libultra code
sssv/ ; game code
tools/
ido5.3_recomp/ ; static recompilation of IDO 5.3 compiler
- asm-processor; allows
GLOBAL_ASM
pragma - replacing assembly inside C files - asm-differ; rapidly diff between source/target assembly
- decomp-permuter; tweaks code, rebuilds, scores; helpful for weird regalloc issues
- ido-static-recomp; no need to use qemu-irix anymore!
- mips2c; assembly to C code translator
- rnc_propack_source; open-source compressor/decompressor for RNC file format
- splat; successor to n64split