ROM Modding: THPS Character Replacement
Project Goal
Replace Tony Hawk's character model in Tony Hawk's Pro Skater (N64) with a custom Nyjah Houston model, making him a playable character in the classic game.
ROM Details
- File:
Tony Hawk's Pro Skater (USA) (Rev 1).z64 - Format: Big-endian N64 ROM (12 MB)
- Developer: Edge of Reality (N64 port), Neversoft (original)
- Engine: Adapted "Big Guns" engine using F3DEX2 display lists
- Location:
/repos/n64-mods/
Project Phases
| Phase | Description | Status |
|---|---|---|
| Phase 1: Extraction | Rip existing model, locate data in ROM | Not started |
| Phase 2: Modeling | Create Nyjah Houston model in Blender | Not started |
| Phase 3: Conversion | Convert to N64 format | Not started |
| Phase 4: Injection | Inject into ROM and test | Not started |
Key Constraints
| Parameter | Limit |
|---|---|
| Polygon count | 300-500 triangles |
| Texture memory (TMEM) | 4 KB total |
| Texture size | 32x32 or 64x64 pixels (power-of-2) |
| Color depth | CI4 (16 colors) or CI8 (256 colors) |
| Vertex format | 16 bytes/vertex (position, UV, normal/color) |
| Skeleton | Must match original bone count & hierarchy exactly |
| Model data size | Must fit within original allocation in ROM |
| ROM checksum | Must be recalculated after any modification |
How N64 Models Work
N64 games render 3D models using F3DEX2 display lists — sequences of 8-byte commands interpreted by the RSP (Reality Signal Processor). These commands load vertices, set textures, and draw triangles.
Characters in THPS use rigid body segmented animation:
- Each body part (head, torso, arms, legs, etc.) is a separate mesh
- Parts are connected by a bone hierarchy
- Each bone stores rotation per frame (no smooth vertex skinning)
- Animations are keyframe arrays of bone rotations (16-bit quaternion components)
This means a replacement model must have the same number of bones in the same hierarchy for existing animations to work.