Skip to main content

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

PhaseDescriptionStatus
Phase 1: ExtractionRip existing model, locate data in ROMNot started
Phase 2: ModelingCreate Nyjah Houston model in BlenderNot started
Phase 3: ConversionConvert to N64 formatNot started
Phase 4: InjectionInject into ROM and testNot started

Key Constraints

ParameterLimit
Polygon count300-500 triangles
Texture memory (TMEM)4 KB total
Texture size32x32 or 64x64 pixels (power-of-2)
Color depthCI4 (16 colors) or CI8 (256 colors)
Vertex format16 bytes/vertex (position, UV, normal/color)
SkeletonMust match original bone count & hierarchy exactly
Model data sizeMust fit within original allocation in ROM
ROM checksumMust 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.