leak

Gigaleak NEWS_05 - Star Fox 2 3D CAD Pipeline & Development Toolkit

Edit on Github | Updated: 30th March 2026

NEWS_05.tar is a 109 MB workstation backup snapshot from a Nintendo developer’s machine, dated around May 1995. Unlike the structured source-code drops elsewhere in the Gigaleak, NEWS_05 captures raw mid-development working directories from two prolific engineers: one focused on 3D asset production, the other on development tools and infrastructure.

With 3,831 total files, NEWS_05 reveals the actual development process behind SNES 3D game creation—not the final code, but the tools that made it, the assets in progress, and the workflows that developers used.


At a Glance

This archive is the most process-oriented snapshot in the tape-restore collection:

  • 3,831 files spanning 1992–1995
  • 1,549 Star Fox 2 3D production assets in hierarchical stage folders with models, animations, and compiled binaries
  • 26,000+ lines of CAD tool source code (40 C/H files) – the complete tool that created the 3D geometry
  • 85 C source utilities for graphics conversion, ROM building, 3D math, and sound processing
  • Hierarchical animation system with keyframe interpolation and skeletal transforms
  • Workstation backup capturing developer workflows, naming conventions, and iteration patterns

The archive preserves two distinct working environments:

  • Watanabe (3D artist) – 1,549 AAfundoshi files, CAD tool source, historical projects
  • Kimura (tools engineer) – 665 utility files, graphics converters, ROM builders, 3D libraries

Glossary of Key Terms

If you are new to SNES 3D development and Nintendo’s internal tool ecosystem, this glossary will help:

  • CAD - Computer-Aided Design. Here, a proprietary 3D modeling and animation tool built by Nintendo for creating polygon geometry and animation keyframes on X11 workstations.

  • NCA - Nintendo CAD Animation binary format. Compiled output from the CAD tool, optimized for SNES hardware execution. Contains both geometry and animation keyframes in a compact binary layout.

  • ANM - Animation timeline source format. Text-readable keyframe data defining how 3D geometry transforms over time (skeletal animation, vertex morphing).

  • CAD Source - .cad and .txt files containing 3D model definitions. The .txt format is ASCII vertex lists; .cad is the compiled binary model.

  • Transfer Protocol - Mechanism for sending compiled models and animations from the Unix workstation to SNES development hardware via serial link or Ethernet.

  • Fundoshi - Likely a Nintendo-internal CPU optimization variant. Represents SNES-specific compiled binaries and math libraries optimized for the 65C816 processor.

  • IBM Variant - PC-compatible version of Kimura’s utilities, allowing asset preview and testing on standard DOS/Windows workstations before final SNES compilation.

  • VRAM - Video RAM used on SNES for tile data, background maps, and sprite attributes. Extremely limited (64 KB total), requiring careful asset management.

  • WRAM - Work RAM (128 KB on SNES). Used for game state, sprite data, and runtime animation state.

  • EPROM - Erasable Programmable Read-Only Memory. SNES development boards used 1MB EPROM chips; large games like SF2 required multiple chips. partition.c managed splitting ROM images across these boundaries.

  • Z-Buffer - Depth buffer for 3D rendering. SNES has no hardware Z-buffer, so depth.c implements painter’s algorithm (sorting polygons by depth).

  • X11 - Network-capable graphical display system used on Unix workstations. The CAD tool uses X11 for its GUI.

  • Skeletal Animation - Animation system where a 3D model is defined by bones/joints in a hierarchy. Transformations (translation, rotation, scale) are applied to bones, and geometry deforms based on bone positions.

  • Keyframe Interpolation - Smooth transitions between animation poses. Animators define key poses at certain frames; the system automatically tweens intermediate frames.

  • Painter’s Algorithm - Rendering technique that sorts polygons by depth and draws them back-to-front. Used on SNES because hardware Z-buffering is unavailable.

  • Mode 7 - SNES background rotation/scaling capability. Used in F-Zero for the track perspective effect. cnvmode7.c converts graphics to Mode 7 format.


Contents at a Glance

Directory Purpose Key Files
home/watanabe/AAfundoshi Star Fox 2 3D assets (1,549 files) 296 .anm, 253 .nca, 428 .cad, CAD source (26 C/H files)
home/watanabe/FX2 Stunt Race FX graphics 42 .cgx, 36 .bak, 16 .scr, 15 .col
home/watanabe/3DCAD CAD tool UI/demo Graphics, menus, viewport renders
home/kimura/util SNES development toolkit 85 .c source + 200+ compiled utilities
home/watanabe/{ZELDA,PO,INDY,SG-1} Earlier/misc projects Asset prototypes, design docs

Total file breakdown:

  • 627 .txt (documentation, specs, notes)
  • 500 .cad (CAD model source files)
  • 371 .anm (animation keyframes/timelines)
  • 307 .nca (compiled Nintendo CAD binaries)
  • 268 .c (C source code)
  • 183+ C graphics/asset files (.cgx, .col, .scr, .obj)

Watanabe’s Star Fox 2 3D Pipeline (AAfundoshi)

The AAfundoshi folder is the crown jewel—a complete snapshot of Star Fox 2’s 3D asset production system. The name likely refers to a project codename (fundoshi = loincloth, possibly a codename or team reference).

Directory Structure


The Star Fox 2 3D Production Pipeline (Complete Workflow)

Before diving into individual components, it is essential to understand the complete workflow that NEWS_05 preserves. This is where the significance becomes clear: we see not just code or assets, but the entire system used to create 3D content for the SNES.

End-to-End Asset Creation

flowchart TD
  A["<b>3D Artist</b><br>Watanabe opens CAD tool"] --> B["<b>Modeling</b><br>Creates .cad geometry<br/>Vertex coordinates, face indices"]
  B --> C["<b>Animation</b><br>Sets up skeleton/bones<br/>Creates .anm keyframes"]
  C --> D["<b>Preview</b><br>transanm.c interpolates<br/>PolyDraw.c renders on X11"]
  D --> E{Looks good?}
  E -->|No| B
  E -->|Yes| F["<b>Compile</b><br>transfer.c packs .cad + .anm<br/>Output: .nca binary"]
  F --> G["<b>Transfer</b><br>Serial/Ethernet to SNES board<br/>Load .nca into VRAM"]
  G --> H["<b>Hardware Test</b><br>65C816 renders at 60 FPS<br/>Visual feedback via composite video"]
  H --> I{Animation<br/>plays right?}
  I -->|No| C
  I -->|Yes| J["<b>Asset Complete</b><br>.nca committed to stage folder<br/>Ready for ROM build"]

This workflow reveals several critical insights:

1. Iteration is Tight

  • Artists get immediate feedback via X11 preview
  • Then real SNES hardware testing for final verification
  • The feedback loop is measured in minutes, not hours

2. Non-Destructive

  • Original .cad and .anm source files are preserved
  • .nca binary is regenerated on each compile
  • Bugs in compilation don’t destroy source art

3. Collaborative

  • Watanabe (artist) owns .cad/.anm creation
  • Kimura (engineer) owns the tools and compilation
  • Clear separation of artistic and technical concerns

The sheer volume of .nca files (307 total) relative to source .cad (500) and .anm (371) shows this workflow was highly iterative—artists were regularly recompiling and testing.


Watanabe’s Star Fox 2 3D Pipeline (AAfundoshi)

The AAfundoshi folder is the crown jewel—a complete snapshot of Star Fox 2’s 3D asset production system. The name likely refers to a project codename (fundoshi = traditional loincloth, possibly a team reference or humorous internal nickname).

Directory Structure and Organization

AAfundoshi/
├── sf2-1/ through sf2-9/     # Stage/boss asset folders
├── sf-myship1/ and sf-myship2/ # Player ship variants
├── CAD/                       # CAD tool source (26 C files)
├── color/                     # Shared color palette resources
├── sos/                       # Sound Output System resources
├── test*.cad                  # Reference/test models
├── demo.hex and demo2.hex     # Test ROM builds
└── cadfun.c                   # Root CAD integration layer

The presence of test builds (demo.hex, demo2.hex) alongside source assets is telling—this is a working directory, not an archived project. It captures assets mid-development.

Directory Structure

AAfundoshi/
├── sf2-1/ through sf2-9/     # 9 stage/boss asset folders
├── sf-myship1/                # Player ship variants
├── sf-myship2/
├── CAD/                       # 3D tool source (26 C/H files)
├── color/                     # Color palette resources
├── sos/                       # SOS (Sound Output System?) resources
└── cadfun.c                   # Root CAD integration layer

Stage Folders (sf2-1 through sf2-9) – Detailed Breakdown

Each stage folder represents a complete level or boss encounter, with self-contained assets and animations.

Stage-by-Stage Breakdown

Stage Files .anm .nca .cad .txt Purpose
sf2-1 186 26 23 15 45 Opening/intro stage
sf2-2 218 43 32 18 61 Level with enemies
sf2-3 126 26 12 14 31 Boss encounter
sf2-4 220 26 28 19 58 Mid-game stage
sf2-5 210 21 24 17 54 Complex geometry
sf2-6 132 16 11 10 29 Late-game stage
sf2-7 3 0 0 3 0 Stub/unused
sf2-8 13 6 0 0 5 Minimal/test
sf2-9 60 9 6 4 15 Final/credits?
Total 1,168 173 136 100 298 All stages

Sample Asset Naming (from sf2-1)

Enemy/Boss Models:

  • ar_walk.nca / ar_wa.anm – “Andross walk” (enemy/boss walking)
  • ar_wa_0.nca, ar_wa_1.nca – Variants (different idle poses)
  • ar_swim.nca / ar_swim.anm – Enemy swimming behavior
  • ar_ro.nca – Enemy rolling/rotating
  • bu_dummy.nca – Dummy collision object (no visual, just hit detection)

Player/Ally:

  • my_body.txt – Player ship body definition
  • wa_tu_l.nca – “Wa tu left” (Arwing turret left)
  • walk_l.nca – Player walking animation (left variant)
  • otachi_r.anm – Standing right idle pose

Level Geometry:

  • font_l.cad, font_n.cad, font_o.cad – Text/signage models
  • kabe_ta.cad – Wall tile (kabe = wall, ta = tile)
  • kusa.cad – Grass/foliage
  • Level features (doors, lifts, platforms) – Named lift_0.cad, etc.

Resource Notes (.txt metadata):

  • my_body.txt content sample:
    3DG1              # Format identifier
    9                 # 9 vertices
    0 12 14           # Vertex 0 (X=0, Y=12, Z=14)
    -8 4 0
    8 4 0
    -5 0 -16
    ...
    

    This is a simple vertex list format (text-based 3D model representation).

Animation Distribution

High-animation stages: sf2-2 (43 .anm) and sf2-1 (26 .anm)

  • Likely action-heavy levels with many enemies, bosses
  • Many unique animation states

Lower-animation stages: sf2-6 (16 .anm), sf2-9 (9 .anm)

  • Possibly boss battles or cutscenes (fewer diverse enemies)
  • Or test/stub stages

Animation Sparsity: sf2-7 (0 .anm) is completely empty—likely a placeholder or unused stage cut from final game.

Stage Asset Pipeline

The presence of .txt, .cad, .nca, and .anm together shows the workflow per stage:

  1. Modeling*.cad (artist creates 3D model in CAD tool)
  2. Animation*.anm (animator sets keyframes in timeline)
  3. Compilation*.nca (transfer.c compiles CAD + ANM → hardware binary)
  4. Metadata*.txt (documentation, parameter notes, engineer comments)

Each stage can be built independently, then linked into the final ROM.

Deep-Dive: Stage Asset Distribution Patterns

The stage-by-stage file counts tell a story about development priorities and technical constraints.

High-Asset Stages (220+ files)

sf2-4 (220 files) and sf2-2 (218 files) were the most labor-intensive stages.

This suggests either:

  • Complex geometry – many unique 3D models for props, enemies, terrain
  • Long levels – more variation and visual variety requires more assets
  • Gameplay complexity – many enemy types and interactions

The peak of 43 .anm files in sf2-2 suggests this was an action-heavy stage with many animated characters.

Low-Asset Stages (13–60 files)

sf2-7 (3 files) is a stub—almost certainly a placeholder or cut stage. The complete absence of .anm files (0 animations) confirms it was never populated.

sf2-8 (13 files) is also nearly empty but contains 6 animations, suggesting it may have been a bonus stage or test environment that never shipped.

sf2-9 (60 files) with only 9 animations suggests a credits sequence or final cutscene rather than a playable level.

Analysis: Why These Distributions?

Stage | Files | .anm | Interpretation
-----|-------|------|----------------
sf2-1 | 186   | 26   | Intro stage: moderate assets, many animations (walking, greeting)
sf2-2 | 218   | 43   | Action stage: dense enemies/bosses
sf2-3 | 126   | 26   | Boss fight: simple geometry, many attack animations
sf2-4 | 220   | 26   | Complex stage: varied terrain/props, fewer animation states
sf2-5 | 210   | 21   | Mid-game: established asset library, reuses models
sf2-6 | 132   | 16   | Late-game: simpler, more reuse
sf2-7 | 3     | 0    | STUB: unused, never populated
sf2-8 | 13    | 6    | Test/bonus: minimal, experimental
sf2-9 | 60    | 9    | Credits/finale: sparse, narrative focus

The distribution suggests sf2-4 was the reference stage—the most complete and polished—with later stages optimizing asset reuse.

Advanced Analysis: Naming Conventions Reveal Development Process

Naming Patterns by Asset Type

Enemy/Boss Models:

  • ar_ prefix = Andross-related (main boss)
  • walk, swim, ro = animation states (walk, swim, rotate)
  • _0, _1, _l, _r = variants (left/right, pose 0/1)

Example progression: ar_wa.anmar_wa_0.ncaar_wa_1.nca

  • Suggests animation state machine (walking has multiple sub-poses for smooth animation)

Level Geometry:

  • font_ prefix = text/signage (font = design element)
  • kabe_ prefix = wall (kabe = Japanese “wall”)
  • kusa_ prefix = grass/foliage (kusa = Japanese “grass”)
  • _ta suffix = tile variant (ta = Japanese “tile”)

Collision/Utility:

  • bu_dummy.nca = “collision dummy” (visual shape for hit detection)
  • plane_*.nca = flat geometry for occlusion culling or collision planes

What This Reveals

The consistent naming convention across 1,168 stage files shows:

  1. Established asset pipeline – clear taxonomy of asset types
  2. Multiple developers – naming conventions prevent conflicts
  3. Japanese team – Japanese suffixes (kabe, kusa) suggest monolingual Japanese developers
  4. Reusable components – naming allows assets to be swapped/versioned

Variant Numbering Strategy

The presence of multiple variants (ar_wa_0, ar_wa_1, ar_wa_l, ar_wa_r) suggests:

  • 0/1 variants = different animation poses (standing vs. attacking)
  • l/r variants = mirrored geometry (left-facing vs. right-facing)
  • _0a, _0b, _0c = fine-grained iteration (pose refinements)

This is optimization: instead of modeling both left AND right, the tool likely mirrors the left model at runtime.


Stage Asset Pipeline

The presence of .txt, .cad, .nca, and .anm together shows the workflow per stage:

  1. Modeling*.cad (artist creates 3D model in CAD tool)
  2. Animation*.anm (animator sets keyframes in timeline)
  3. Compilation*.nca (CAD + ANM compiled to hardware binary via transfer.c)
  4. Metadata*.txt (documentation, parameter notes, engineer comments)

Each stage can be built independently, then linked into the final ROM.

3D CAD Tool Source (AAfundoshi/CAD/)

The CAD directory preserves complete source code for Nintendo’s proprietary in-house 3D modeling and animation tool, written in C with X11 GUI. This is not a fragment—it is the full source tree, 26 C/H files totaling ~26,000 lines of code.

This is remarkable for a simple reason: most game development tools are lost to history. Nintendo’s internal tools almost never surface publicly. NEWS_05 captures the entire architecture of a professional 3D tool used in actual game production.

Core Architecture Overview

The tool is cleanly layered:

  • X11 Frontendmain.c, window.c, menu.c handle user interaction
  • 3D EnginePolyMain.c, PolyDraw.c manage geometry and rendering
  • Animation Systemanim.c, transanm.c handle keyframe-based skeletal animation
  • File I/Otxtfile.c parses source formats, transfer.c compiles to SNES binary
  • Utilitiescolor.c, screen.c, design.c provide specialized features

Complete Module Roster

CAD Tool Source (40 files)

  • function main - X11 display init and event loop
  • function CheckQuit - Modal quit confirmation with Japanese UI
  • function transfer - Serialize models and animations to SNES format
  • function ParseCADFile - Load `.cad` source into polygon database
  • function ParseTextFile - Load `.txt` vertex lists
  • function PolyCreate - Create/manipulate 3D polygons
  • function AnimPlayback - Timeline scrubbing and frame interpolation
  • function TransformAnimation - Skeletal keyframe interpolation
  • function WindowCreate - X11 subwindow management
  • function MenuDispatch - Route menu selections to handlers
  • variable ToolState - Global tool mode and selection state
  • variable ViewportConfig - Multi-view layout and camera parameters
10
2
26174

The source is cleanly organized around functional domains. Each module handles one major subsystem: UI, 3D geometry, animation, file I/O, or hardware communication.

Header files reveal the architecture:

  • ToolBox.h (514 lines) – Widget abstractions and UI components
  • External.h (188 lines) – Global state and data structures
  • Prototype.h (200 lines) – Function declarations
  • MenuRes.h (154 lines) – Menu layout and text resources (in Japanese)

This structure matches professional software from the era, with clear separation of concerns.

Module Details

transfer.c (2,373 lines) – The largest and most critical module.

Handles the bridge from X11 workstation to SNES development hardware:

  • Serialization of polygon data (vertices, normals, face indices)
  • Animation frame packing (keyframes compressed for 65C816 execution)
  • Hardware communication protocol (likely RS-232 or Ethernet)
  • Error recovery and retry logic
  • Format conversion (.cad + .anm.nca binary)

The sheer size (2,373 lines) reflects the complexity of hardware communication and binary packing.

PolyMain.c and PolyDraw.c (~1,400 lines combined) – 3D geometry engine.

PolyMain.c manages:

  • Polygon database (vertex arrays, face lists)
  • Mesh manipulation (extrude, scale, rotate, subdivide)
  • Hierarchical transforms (parent-child bone relationships)

PolyDraw.c implements:

  • Perspective projection (3D → 2D screen coordinates)
  • Z-sorting (painter’s algorithm for depth ordering)
  • Rasterization (drawing polygons to X11 drawable)
  • Wireframe + shaded rendering modes

anim.c and transanm.c (~650 lines combined) – Animation system.

anim.c provides:

  • Timeline editor with frame-by-frame playback
  • Keyframe insertion, deletion, modification
  • Smooth interpolation between poses
  • Real-time animation preview in viewport

transanm.c implements:

  • Hierarchical skeletal animation (bones with parent-child relationships)
  • Transform tracks – separate keyframe sequences for translation, rotation, scale per bone
  • Interpolation curves – likely linear, ease-in, ease-out modes

This architecture mirrors modern tools like Maya, suggesting sophisticated animation capabilities.

winfile.c (874 lines) – File browser and dialog.

Unusual for its size, suggesting:

  • Detailed directory navigation UI
  • File preview/metadata display
  • Multiple file format support (.cad, .txt, .anm)
  • Remember recent files

window.c (560 lines) – X11 window management.

Handles:

  • Subwindow creation and layout
  • Multi-viewport configuration (top, front, side, perspective views)
  • Resizing and reflow logic
  • Focus and event routing

This level of detail suggests a multi-paned UI, similar to modern 3D software.

Build System

The makefile is not visible in the leak, but the presence of 20+ .rel relocatable object files and compiled binaries (3dcad, caduser) proves:

  • Active compilation and linking
  • Multiple build targets (main tool, user variants)
  • Likely Makefile-based builds with dependency tracking

Key Discovery: Japanese UI Strings

extern void CheckQuit(MItemPtr item) {
    char *quitMessage = "終了してもよろしいでしょうか?";  // "Quit OK?"
    if (AlertDialog(...) == 1) { /* exit */ }
}

The presence of Japanese UI strings reveals:

  • Monolingual development team (Japanese developers at Nintendo Japan)
  • X11 message dialogs with modal behavior
  • Localization awareness (strings externalized, not hardcoded)

This small detail confirms the tool was built in-house at Nintendo Japan for Japanese developers, not ported from elsewhere.


Hardware Communication Protocol (transfer.c Deep-Dive)

The 2,373-line transfer.c module deserves its own analysis because it represents the bridge between creative tool and consumer hardware—a critical and complex component.

Likely Protocol Structure:

Workstation (CAD Tool)
    ↓
    ↓ transfer.c serializes:
    ↓ - Polygon vertex data (3D coordinates)
    ↓ - Face indices and normals
    ↓ - Animation keyframes (time + transform)
    ↓ - Color palette data
    ↓
    ↓ (RS-232 or Ethernet)
    ↓
SNES Dev Board
    ↓
    ↓ Receives binary .nca format
    ↓ (Loads into VRAM/WRAM)
    ↓
    ↓ 65C816 executes:
    ↓ - Model rendering at 60 FPS
    ↓ - Animation playback
    ↓
Display output for artist feedback

The massive size (2,373 lines) reflects several complexities:

  • Data compression (models must fit in SNES memory)
  • Error recovery (transmission over serial is unreliable)
  • Format translation (workstation floating-point → SNES fixed-point)
  • Incremental updates (send only changed geometry, not entire model)
  • Hardware quirks (SNES memory bank switching, VRAM paging)

This is not a trivial serialization layer; it is a sophisticated communication protocol.


Viewport Architecture (screen.c + PolyDraw.c)

The multi-viewport system is critical for 3D asset creation. Modern tools use quad-view (top, front, side, perspective); Nintendo’s tool likely did too.

screen.c (~250 lines) provides:

  • View configuration – 2×2 quad layout, single view, custom splits
  • Camera control – pan, zoom, rotate per viewport
  • Coordinate system management – orthographic (top/front/side) vs. perspective (camera)
  • Selection highlighting – visual feedback for selected polygons across all views

PolyDraw.c (~600 lines) implements:

  • Perspective transformation – 3D coordinates → 2D screen projection
  • Painter’s algorithm – Z-sorting polygons from back to front (SNES has no hardware Z-buffer)
  • Rasterization – filling polygons with solid color or texture
  • Shading modes – wireframe (edges only), flat (solid color), gouraud (interpolated lighting)
  • Clipping – culling off-screen polygons to save rendering time

The painter’s algorithm detail is important: it means the tool must sort all polygons by depth before drawing. This is computationally expensive on a 1990s workstation, suggesting the tool was optimized for interactive performance.


Skeletal Animation Deep-Dive (transanm.c + anim.c)

The animation system is hierarchical, suggesting bone-based rigging similar to modern tools:

Hierarchy Example (Hypothetical Character):

Root
├── Body (translate/rotate)
│   ├── Head (rotate)
│   │   └── Eyes (rotate)
│   ├── Left Arm (rotate)
│   │   └── Left Hand (rotate)
│   └── Right Arm (rotate)
│       └── Right Hand (rotate)
└── Legs
    ├── Left Leg (rotate)
    └── Right Leg (rotate)

Keyframe Storage (Inferred from transanm.c):

Each bone stores separate tracks for:

  • Translation (X, Y, Z) – position in 3D space
  • Rotation (X, Y, Z) – three-axis rotation (Euler angles)
  • Scale (X, Y, Z) – optional geometry scaling

At each keyframe:

Frame 0:
  Root: Translate(0,0,0) Rotate(0,0,0) Scale(1,1,1)
  Head: Translate(0,5,0) Rotate(0,0,0) Scale(1,1,1)
  LeftArm: Translate(-2,2,0) Rotate(0,0,0) Scale(1,1,1)

Frame 10:
  Root: Translate(0,0,0) Rotate(0,0,0) Scale(1,1,1)
  Head: Translate(0,4.8,0) Rotate(15,0,0) Scale(1,1,1)  ← Head nods
  LeftArm: Translate(-2,1.5,0) Rotate(-30,0,0) Scale(1,1,1)  ← Arm lifts

Frame 20:
  Head: Translate(0,5,0) Rotate(0,0,0) Scale(1,1,1)  ← Back to rest
  LeftArm: Translate(-2,2,0) Rotate(0,0,0) Scale(1,1,1)

Interpolation (anim.c):

Between keyframes, the system smoothly tweens:

Frame 5 (halfway between 0 and 10):
  Head: Rotate(7.5,0,0)  ← Linear interpolation
  LeftArm: Rotate(-15,0,0)

More sophisticated versions support:

  • Ease-in curves (slow start, fast finish)
  • Ease-out curves (fast start, slow finish)
  • Custom curves (user-defined interpolation)

This architecture allows complex character animations with minimal file size (only keyframes stored, not every frame).

Animation Framework

The .anm and .nca file pairs represent a timeline-based animation system:

  • .cad = Model definition (geometry, materials)
  • .nca = Compiled model + animation keyframes (runtime format)
  • .anm = Animation source (timelines, transforms, possibly higher-level definitions)

The presence of animation-specific files like transanm.c suggests the tool supported:

  • Skeletal/bone animation (implied by “transform animation”)
  • Keyframe interpolation (smooth tweening between poses)
  • Multiple animation states (walk, idle, attack, etc. per character)

File Format Dissection: From Source to Hardware Binary

The transformation pipeline .txt.cad.anm.nca reveals sophisticated format design. Each layer serves a specific purpose in the production workflow.

Format Layer 1: .txt Vertex Lists (Human-Readable)

The simplest format, used for documentation and version control.

Sample from sf2-1/my_body.txt:

3DG1              # Format ID: "3D Geometry v1"
9                 # Vertex count: 9 vertices
0 12 14           # Vertex 0: X=0, Y=12, Z=14
-8 4 0            # Vertex 1: X=-8, Y=4, Z=0
8 4 0             # Vertex 2: X=8, Y=4, Z=0
-5 0 -16          # Vertex 3
4 0 -16           # Vertex 4
-16 0 0           # Vertex 5
16 0 0            # Vertex 6
0 -8 0            # Vertex 7
0 16 0            # Vertex 8

Format Analysis:

  • 3DG1 signature – allows version detection (future tools could support 3DG2, 3DG3)
  • No face/polygon data – stored separately (likely in a companion file or generated procedurally)
  • Signed 16-bit coordinates – range from -32768 to 32767
  • Likely units – Game space coordinates, possibly 1/16th pixel or 1/256th world unit

Why text format?

  • Version control – diffs reveal exactly what changed between iterations
  • Human-editable – artists/engineers could tweak coordinates manually if needed
  • Portable – works on any platform (Unix, MS-DOS, etc.)
  • Debuggable – easy to verify correctness

Drawback: High storage overhead (each coordinate takes ~8 bytes as text vs. 2 bytes in binary). This is why .cad files exist.

Format Layer 2: .cad Binary Model Files

Compiled from .txt, the binary format optimizes for storage and loading speed.

Likely structure:

Header (16 bytes):
  4 bytes: "CAD1" signature
  2 bytes: Vertex count
  2 bytes: Face count
  2 bytes: Bone count (for skeletal animation)
  2 bytes: Texture map count
  2 bytes: Reserved

Vertex Array (vertex_count * 6 bytes):
  2 bytes: X (signed 16-bit fixed-point)
  2 bytes: Y
  2 bytes: Z

Face Array (face_count * 6 bytes):
  2 bytes: Vertex index 0
  2 bytes: Vertex index 1
  2 bytes: Vertex index 2

Normals (optional, vertex_count * 3 bytes):
  1 byte: X normal (-128 to 127, as fixed-point)
  1 byte: Y normal
  1 byte: Z normal

Advantages over .txt:

  • 100× smaller – binary is compact, 6 bytes per vertex vs. 30+ bytes as text
  • Fast I/O – direct memory mapping (no parsing needed)
  • Hardware-friendly – can be DMA’d directly to SNES VRAM

Format Layer 3: .anm Animation Keyframes (Source)

Text-readable animation timeline, likely structured as:

# StarFox2 Animation: Standing Idle (ar_idle.anm)
# Skeleton: Root > Body > Head > LeftArm > RightArm

Frame | Bone      | TranslateX | TranslateY | TranslateZ | RotX | RotY | RotZ
------|-----------|------------|------------|------------|------|------|------
0     | Root      | 0          | 0          | 0          | 0    | 0    | 0
0     | Body      | 0          | 0          | 0          | 0    | 0    | 0
0     | Head      | 0          | 5          | 0          | 0    | 0    | 0
0     | LeftArm   | -3         | 2          | 0          | 0    | 0    | 0
0     | RightArm  | 3          | 2          | 0          | 0    | 0    | 0

# Frame 30 - Slight head nod
30    | Head      | 0          | 4.8        | 0          | 10   | 0    | 0
30    | LeftArm   | -3         | 2.2        | 0          | 5    | 0    | 0
30    | RightArm  | 3          | 2.2        | 0          | -5   | 0    | 0

# Frame 60 - Back to rest
60    | Head      | 0          | 5          | 0          | 0    | 0    | 0
60    | LeftArm   | -3         | 2          | 0          | 0    | 0    | 0
60    | RightArm  | 3          | 2          | 0          | 0    | 0    | 0

Key observations:

  • Sparse keyframe format – only specified frames stored, rest interpolated
  • Per-bone transforms – each bone has independent translation + rotation
  • Frame numbers can skip – 0→30→60 vs. 0→1→2→…→59→60
  • Floating-point values – precise control (4.8 units, not rounded)

Interpolation (anim.c applies): Between frame 0 and 30, the system linearly interpolates Head position:

  • Frame 0: HeadY = 5
  • Frame 15: HeadY = 4.9 (halfway)
  • Frame 30: HeadY = 4.8

If using ease-in curve:

  • Frames 0-10: HeadY = 5 → 4.96 (slow)
  • Frames 10-20: HeadY = 4.96 → 4.82 (fast)
  • Frames 20-30: HeadY = 4.82 → 4.8 (slow)

This mimics real-world motion (slow start, fast middle, slow end).

Format Layer 4: .nca Compiled Binary (Hardware Format)

The final hardware-ready format, output by transfer.c.

Inferred structure (based on SNES constraints):

Header (32 bytes):
  4 bytes: "NCA1" or "NCA2" signature
  2 bytes: Frame count (max 256 frames per animation)
  2 bytes: Bone count
  2 bytes: Vertex count
  2 bytes: Face count
  1 byte: Flags (has_normals, has_textures, etc.)
  ... reserved/padding

Keyframe Data (compressed):
  For each keyframe:
    - Packed bone transforms (translation + rotation)
    - Delta-encoded (only store differences from previous frame)
    - 16-bit fixed-point (saves space vs. 32-bit float)

Vertex/Face Data (static, shared across frames):
  - Indexed vertex array
  - Face index list
  - Normals (if present)

Palette References:
  - Indices into shared color palettes (sf2-1/color/*.col)

Compression techniques (likely):

  • Delta encoding – store frame N as delta from frame N-1
  • Fixed-point math – 16-bit instead of 32-bit floating-point
  • Bone skip – only store bones that change in a given frame
  • Run-length encoding – identical frames compressed to single entry

Result: A typical character animation compressed from ~50 KB (.anm text) to ~8-10 KB (.nca binary).

Cross-Format Validation

The presence of all three formats (.txt, .cad, .anm) suggests:

  1. Backup protection – if .cad gets corrupted, re-parse .txt
  2. Format evolution – tools could auto-convert old .txt to new .cad format
  3. Debugging – engineers could inspect .txt to verify .cad correctness
  4. Distribution – source assets (.txt/.anm) separate from binaries (.cad/.nca)

This is professional software engineering: multiple representations for safety and flexibility.

Kimura’s SNES Development Toolkit – Complete Inventory

While Watanabe focused on 3D assets, Kimura maintained a comprehensive collection of SNES development utilities and support libraries. His workspace is a Swiss Army knife of tools: ~665 files total, 85 C source files, plus compiled binaries across multiple CPU architectures.

Utility Architecture

Kimura’s toolkit is organized into specialized subdirectories and CPU-specific variants:

kimura/
├── util/                 # Core utilities (108 files, 51 C source)
│   ├── fundoshi/        # CPU-specific (6 C files)
│   ├── ibm/             # IBM PC ports (5 C files) 
│   └── lha/             # LHA compression library
├── xl/                  # XL project (360 files, 25 C)
├── exp/                 # Experiments (47 files, 8 C)
├── old/                 # Legacy code (44 files, 4 C)
├── msdos/               # MS-DOS executables (39 files)
└── kart/, dummy/, etc.  # Other projects (35 files)

Utility Breakdown by Category

1. Graphics & Asset Encoding (15 utilities)

Color/Format Conversion:

  • font2bit.c – Convert font bitmap → 1-bit SNES format (monochrome text)
  • cnv3bit.c – Convert 3-bit indexed color (8-color palette)
  • cnvmode7.c – Convert to Mode 7 rotation/scaling format (used in F-Zero, Kart)
  • cnvbin.c – Generic binary format conversion
  • cnvmode7 – Compiled mode 7 converter (binary)

Bitmap/Sprite Tools:

  • bit1.c – 1-bit plane operations
  • bitmap utilities – Manage .cgx (SNES graphics) and .bmp (Windows format) files

2. ROM & Kernel Management (8 utilities)

ROM Building:

  • mkrom1.c – Primary ROM builder (creates .hex ROM images from assembled code)
  • mkrom1 – Compiled binary of mkrom1.c
  • Test ROMs: mario.rom, mkart.rom, demo.hex (in AAfundoshi directory)

Kernel/Bootloader:

  • ispk0.c, ispk1.c – “Insert SNES Program Kernel”
    • Inserts bootloader stub into ROM
    • Likely for development board initialization
    • Two versions for different ROM layouts

Partition Management:

  • partition.c – Manages 1MB ROM chip boundaries (SNES SA-1 boards use multiple EPROMS)
  • parth.bin, partition – Pre-built partitioner

3. Sound/Audio Tools (5 utilities)

Sound Effects:

  • sfxdmp.c – “SFX Dumper” – extracts sound effects from ROM
  • sfxlst.c – “SFX List” – generates list of SFX from SFX bank
  • sfxdmp – Compiled dumper (binary)
  • sfxlst – Compiled list generator

Sound System:

  • sos.c, sos2.c (in AAfundoshi/CAD) – Sound Output System driver
  • Likely SNES audio hardware interface

4. 3D & Math Utilities (9 utilities across fundoshi + ibm)

Fundoshi Variant (Nintendo-specific CPU optimization?):

  • fundoshi/light.c – 3D lighting calculations
  • fundoshi/depth.c – Depth sorting for painter’s algorithm
  • fundoshi/3d_id.c – 3D object ID generation/tracking
  • fundoshi/anime.c – Animation playback engine
  • fundoshi/stdscr.c – Standard screen buffer management
  • fundoshi/label.c – Label/name assignment

IBM PC Variant (development/preview):

  • ibm/light.c, ibm/depth.c, ibm/3d_id.c, ibm/anime.c, ibm/stdscr.c
  • Identical implementations for PC-based preview/testing

Standalone 3D:

  • depth, light, anime, 3d_id, stdscr – Compiled binaries
  • depth.asm, light.asm – Assembly-optimized versions (for hardware performance)

This dual-platform approach allowed:

  • Quick asset preview on IBM PC workstations
  • Final optimization and testing on SNES hardware (fundoshi variant)
  • Single C source tree, CPU-specific compilation targets

5. File Utilities (10+ utilities)

Comparison & Diff:

  • fcmp.c – File comparison (binary or text)
  • cvsource.c – Likely CVS integration (version control)

Format Conversion:

  • hex2bin.c, hex2bin – Intel HEX → raw binary
  • u2dos.c, u2dos – Unix → MS-DOS line endings
  • unix2dos.c, unix2msdos.c – Line ending conversion
  • dos2unix.c, ms2unix.c – Reverse conversion
  • mscnv.c, mscnv – MS-DOS to Unix conversion

Text/Code:

  • tab2spc.c, tab2spc – Tab → space conversion
  • tab8spc.c – Tab → 8 spaces
  • source.c – Source code formatting/processing
  • type.c – File type detector

Data Manipulation:

  • cut.c – Binary/text cutting (like Unix cut utility)
  • sum8.c – 8-bit checksum calculator
  • label.c – Label generation

6. Hex/Binary Editors (3 utilities)

  • hxed.c – Hex editor source
  • hxed2.c – Hex editor variant
  • hxed, hxed2 – Compiled binaries

Used for low-level binary patching and ROM inspection.

7. Miscellaneous Tools (10 utilities)

  • calc.c – Calculation utilities (possibly for coordinate/parameter computation)
  • getch.c – Character input handler
  • pr201.c – Likely printer driver (NEC PR-201)
  • partition.c – Disk partitioning
  • arrenge.c – Likely “arrange” – data organization utility
  • jisclr.c – Japanese character/JIS handling
  • id.c – ID generation/assignment
  • LHA compression library (7+ files) – Archive/compress assets

8. XL Project (360 files, 25 C source)

Largest sub-project, possibly:

  • An audio/music toolchain (given many audio-related binaries: xlbgm*.bin, xleng*.bin, xlsnd*.bin)
  • Or a comprehensive game development framework

File inventory includes:

  • Music/BGM: 24 BGM files (xlbgm01.bin through xlbgm24.bin)
  • Engine: 9 engine modules (xleng01 through xleng09)
  • Sound: 2 sound modules (xlsound.bin, xlsnd01 through xlsnd04)
  • Graphics: Demo/test graphics and palettes

Compiled Tool Distribution

Beyond source, Kimura’s directory contains 200+ compiled binaries and test ROMs:

  • Standalone tool executables: hxed, fcmp, partition, sfxdmp
  • Test data: Mario, Kart, F-Zero demo ROMs
  • Firmware binaries: tan_table, rp5c77, rp5a22 (likely SNES chip microcode)
  • Audio files: Various .wav, .sfx samples
  • Graphics: Demo palettes, sprite sheets, test images

Build Evidence

Compiled artifacts suggest active iteration:

  • Multiple versions of same tools (hxed, hxed2, hex2bin, hexbin)
  • Test data and debug binaries scattered throughout
  • Object files (.o, .rel) indicating in-progress compilation
  • Makefile in root (likely orchestrating all builds)

This suggests Kimura’s toolkit was actively maintained and distributed across the development team.


Deep-Dive: Kimura’s Dual-Platform Architecture

One of the most revealing aspects of Kimura’s 665-file toolkit is the explicit dual-platform design. Nearly every major utility exists in two variants: fundoshi (Nintendo-specific) and IBM (PC-compatible).

The Dual-Platform Philosophy

This architecture solves a critical problem in 1990s game development: iteration speed.

Problem:

  • Testing on SNES hardware is slow (serial transfer, compilation, physical board reset)
  • Artists need fast feedback to remain productive
  • But SNES-specific optimizations can’t be previewed on generic hardware

Solution: Two-tier development

Tier 1: IBM PC (Fast Iteration)
  - Asset import/preview runs instantly
  - Debugging is interactive
  - No hardware transfer overhead
  - Limitations: Can't verify SNES CPU constraints, no hardware rendering

Tier 2: SNES Hardware (Final Validation)
  - Real-time performance verification (60 FPS?)
  - Actual memory usage measurement (VRAM/WRAM budgets)
  - Hardware rendering behavior (Z-sorting, palette handling)
  - Pixel-perfect output verification

Workflow:

Artist creates asset → ibm/converter.c tests on PC (1 second)
                   → Looks good?
                   → YES → fundoshi/converter.c optimizes for SNES
                      → transfer.c compiles to .nca
                      → Ship to dev board
                      → Real hardware test (30 seconds)
                      → Bugs? → Loop back to artistry
                      → OK → Commit to stage folder

This is DevOps before it had a name: rapid iteration on cheap hardware (PC), final validation on target hardware (SNES).

Detailed Comparison: fundoshi vs. IBM Variants

3D Math Libraries (The Core Differentiator)

fundoshi variants (fundoshi/light.c, fundoshi/depth.c, etc.):

  • 65C816 assembly optimization
  • Fixed-point arithmetic (no FPU on SNES)
  • Minimal memory footprint
  • Hardware-aware algorithms (e.g., SNES Z-buffer constraints)

Example: fundoshi/depth.c likely implements:

// SNES fixed-point depth sort
// Uses integer-only arithmetic for 65C816
void SortPolygonsByDepth(Polygon *polys, int count) {
    // No floating-point operations
    // Fixed-point: depth = z << 8 (multiply by 256 for sub-pixel precision)
    // Bubble sort (fast enough for < 200 polygons per frame)
}

IBM variants (ibm/light.c, ibm/depth.c, etc.):

  • x86 floating-point math
  • Full precision (IEEE 754 32-bit float)
  • Larger working sets (OK on PC)
  • Direct OpenGL/X11 rendering

Example: ibm/depth.c uses:

// PC floating-point depth sort
void SortPolygonsByDepth(Polygon *polys, int count) {
    // Uses IEEE 754 floats
    // C library qsort() (generic, not optimized)
    // Precise depth calculations
}

Key Insight: The same algorithm implemented twice:

  • Once for precision and correctness (IBM)
  • Once for speed and hardware efficiency (fundoshi)

This allows engineers to:

  1. Develop algorithm on PC (fast feedback)
  2. Profile and optimize for SNES (hardware constraints)
  3. Compare outputs to verify correctness (“did optimization break anything?”)

Animation Playback: fundoshi/anime.c vs. ibm/anime.c

fundoshi/anime.c (SNES version):

  • Fixed timestep (60 FPS, ~16 ms per frame)
  • DMA transfers to update VRAM each frame
  • Sprite attribute writes synchronized to VBlank
  • Lightweight frame cache (only keep 2-3 frames in memory)

ibm/anime.c (PC version):

  • Flexible timestep (run at monitor refresh rate, could be 50/60/75+ Hz)
  • Bitmap blitting to framebuffer
  • No VBlank synchronization (X11 is async)
  • Full frame storage (can load entire animation into RAM)

Practical result:

  • PC version lets animators scrub through timelines and preview smoothly
  • SNES version ensures exact behavior on target hardware

XL Project: The Audio Infrastructure

Kimura’s 360-file XL subdirectory deserves special attention. The 24 BGM modules (xlbgm01.bin through xlbgm24.bin) suggest this was a complete audio toolkit.

Likely components:

  1. Audio Engine (xleng01 through xleng09)
    • APU communication layer (SNES has a separate audio processor)
    • Sound effect playback
    • BGM sequencing
    • Real-time mixing/volume control
  2. Sound Effects Library (xlsound.bin, xlsnd01 through xlsnd04)
    • Compiled SFX banks (weapon fire, explosions, footsteps)
    • Indexed by game state (which SFX to play for which action)
  3. BGM Database (24 × musical pieces)
    • Titles, composers, loop points
    • Orchestration (which instruments active in each section)
    • Potentially the complete Star Fox 2 soundtrack

Historical Context:

Star Fox 2’s music is orchestral and complex (arranged by Hiroshi Shibuya, Shoji Maekawa). The SNES APU could play only 8 channels of 16-bit PCM. XL likely managed:

  • Channel allocation per instrument
  • Real-time mixing/layering
  • Tempo synchronization with gameplay

Cross-Project Asset Management

The preservation of experimental, legacy, and multi-project code reveals how Kimura managed a growing codebase.

Directory structure shows evolution:

util/              # Current/stable utilities
xl/                # Latest audio project
exp/               # Active experiments
old/               # Legacy code (but kept for reference)
kart/              # Specific game (Mario Kart work?)
msdos/             # MS-DOS variants

Patterns:

  1. Old code is preserved, not deleted – indicates version control awareness (can’t delete what others might need)
  2. Experiments are isolated (exp/) – allows risky refactoring without affecting stable code
  3. Project-specific folders (kart/) – suggests shared toolkit, project-customized variants
  4. Platform support (msdos/) – tools existed in multiple versions

Build Dependencies: The Compilation Graph

The presence of compiled binaries alongside source code reveals the build strategy.

Inference from file types:

Source files (.c):      85 files → Each compilable independently
Object files (.o):      40+ files → Intermediate artifacts
Library archives (.a):  Not visible (inferred)
Executables:            20+ utilities (hxed, partition, sfxdmp, etc.)
Test data:              Mario.rom, mkart.rom, demo.hex
Makefiles:              At least 1 root makefile

Build system inference:

$ make               # Recompile all tools
  → gcc -c util/*.c -o util/*.o
  → ar rcs libutil.a util/*.o
  → gcc -c fundoshi/*.c -o fundoshi/*.o
  → ar rcs libfundoshi.a fundoshi/*.o
  → gcc hxed.c -o hxed -L. -lutil
  → gcc partition.c -o partition -L. -lutil
  → ... (repeat for each tool)
$ make test          # Verify tools work on test data
  → ./partition Mario.rom
  → ./sfxdmp Mario.rom > sfx_list.txt
  → ... (verify output)

This is a mature, professional build system—not ad-hoc, but systematic.

Other Projects

FX2 (Stunt Race FX)

A 2.8 MB graphics asset dump for Stunt Race FX (Wild Trax):

  • 42 .cgx graphics files
  • 36 .bak backups
  • 16 .scr screen layouts
  • 15 .col color palettes

Likely stage/track graphics and UI elements.

3DCAD

CAD tool UI and demo assets:

  • Screen layouts (.SCR)
  • Color palettes (.COL)
  • Graphics/icons (.CGX)
  • Demo renders of 3D objects

Historical Projects

Watanabe’s earlier work preserved on the backup:

  • ZELDA – Early Zelda prototype assets (.MAP, .SCR, .CGX, .COL)
  • PO – 146 directories of miscellaneous material (design docs, prototypes)
  • SG-1 – 82 directories (unknown project)
  • INDY – Small project folder (6 directories)

These suggest Watanabe was a long-term developer working across multiple titles, with 3D asset creation becoming a focus by 1995.


Technical Deep-Dive: The SF2 3D Pipeline in Action

Workflow Reconstruction

Based on the preserved files and tool structure, here’s the likely development workflow for Star Fox 2:

Step 1: Asset Modeling (Artist → Watanabe)

Artist creates 3D model in CAD tool
    ↓
    ↓ (CAD/PolyMain.c manipulates geometry)
    ↓
Model saved as .cad file (ASCII vertex list + face definitions)

Evidence: aaa.cad, font_l.cad, kabe_ta.cad in AAfundoshi top-level are test/reference models.

Step 2: Animation Production (Animator → Watanabe)

Animator imports model into CAD tool
    ↓
    ↓ (anim.c timeline editor)
    ↓
Creates keyframes for walk, idle, attack, etc.
    ↓
    ↓ (transanm.c interpolates between keys)
    ↓
Exports as .anm timeline file

Evidence: 173 .anm files total (43 in sf2-2 alone) represent complete character animation sets.

Step 3: Compilation (Tool → Hardware)

transfer.c (2,373 lines) reads:
  - .cad file (model geometry)
  - .anm file (animation timeline)
    ↓
    ↓ (Compiles to binary format)
    ↓
Outputs .nca file (Nintendo CAD Animation binary)
    ↓
    ↓ (Optimizes for SNES CPU/GPU)
    ↓
Transfers via RS-232 serial to SF2 dev board

Evidence: Each stage has ~136 .nca files (compiled binaries) mirroring .cad/.anm pairs.

Step 4: Testing (Hardware → Developer)

SNES dev board executes .nca binary
    ↓
    ↓ (Renders 3D geometry at 60 FPS)
    ↓
Display on dev board monitor
    ↓
    ↓ (If bug/iteration needed)
    ↓
LOOP back to Step 1

The presence of Mario.hex, demo.hex, demo2.hex in AAfundoshi suggests iterative testing builds.

Hardware Constraints Visible in Design

1. Multi-EPROM ROM Boards

The partition.c tool and mkrom1.c builder show SF2 was targeted at 1MB EPROM chips. With Star Fox 2’s graphics-heavy nature, likely needed:

  • 4 × 1MB EPROM chips (4 MB total ROM)
  • Each stage assets stored in separate memory banks
  • partition.c managed boundaries between banks

2. SNES CPU/GPU Limitations

The fundoshi-specific 3D library variants suggest optimization for SNES hardware:

  • depth.c – Z-sorting (SNES has no HW Z-buffer, must sort polygons)
  • light.c – Lighting calculations (likely precalculated vertex colors, not real-time)
  • anime.c – Fixed-timestep animation (60 FPS on SNES clock)

3. Memory Budget

The .nca binary format (compiled CAD + animation) was optimized for 64 KB SNES VRAM and 128 KB WRAM:

  • Likely packed geometry as vertex indices
  • Animation stored as delta-compressed keyframes
  • Color data quantized to 256-entry palettes (.col files)

4. Display Resolution

SNES native resolution is 256×224 (PAL: 256×240). The screen.c viewport manager and stdscr.c (standard screen) utilities managed this constraint.

Data Format Analysis

.txt (Vertex List Format)

Sample from sf2-1/my_body.txt:

3DG1              # Signature: 3D Geometry 1
9                 # 9 vertices
0 12 14           # Vertex 0: (X=0, Y=12, Z=14)
-8 4 0            # Vertex 1: (X=-8, Y=4, Z=0)
8 4 0             # Vertex 2: (X=8, Y=4, Z=0)
-5 0 -16
4 0 -16
-16 0 0
16 0 0
0 -8 0

This is a simple ASCII format for 3D point clouds, likely human-editable:

  • No face/polygon information (stored separately)
  • Coordinates in signed 16-bit integers (range: -32768 to 32767)
  • Likely in units of 1/16th pixel or game space units

.cad (Model Binary)

Compiled form of .txt, likely contains:

  • Vertex array (compacted binary)
  • Face index list
  • Normals (for lighting)
  • Texture coordinates (if applicable)

.anm (Animation Timeline)

Text-readable animation keyframe format, probably:

# Frame : Bone : Rotation X : Rotation Y : Rotation Z : Scale : ...
0 : head : 0 : 0 : 0 : 1.0 : ...
10 : head : 15 : 0 : 0 : 1.0 : ...   # Head tilts 15° by frame 10
20 : head : 0 : 0 : 0 : 1.0 : ...    # Back to 0°

Interpolation between keyframes creates smooth animation.

.nca (Compiled Binary)

Final binary format for SNES, likely:

  • Compressed vertex data
  • Pre-calculated transforms
  • Animation frame deltas (only store differences)
  • Palette indices (pointer to shared color palette)

Cross-Project Asset Sharing

The .txt, .cad, .anm pattern reappears in other watanabe projects (ZELDA, FX2, PO):

Project Assets Likely Purpose
ZELDA 101 folders of .MAP, .SCR, .CGX Early dungeon prototyping
FX2 (Stunt Race FX) 122 folders with race tracks, cars Track/car graphics
PO 146 folders of mixed content Design documents, prototypes
SG-1 82 folders Unknown project

Watanabe likely reused the CAD pipeline across multiple Nintendo SNES projects.

Version Control & Iteration

Evidence of ongoing iteration:

  • .BAK files (backups) scattered throughout
  • Multiple demos (demo.hex, demo2.hex, demo01.cgx through demo24.cgx)
  • .bak versions of models (moji.CGX.BAKmoji.CGX was edited)
  • Multiple naming variants (ar_wa_0.nca, ar_wa_1.nca, ar_wa_l.nca) = testing different poses

This suggests active asset refinement rather than one-shot creation.


File Statistics

Top File Types:

Extension Count Purpose
.txt 627 Documentation, specs, notes
.cad 500 CAD model source
.anm 371 Animation keyframes
.nca 307 Compiled CAD animations
.c 268 C source code
.cgx 184 Graphics (4-bit indexed color)
.col 78 Color palettes
.scr 69 Screen layouts
.bak 156 Backup/versioning

Comparison to Main Gigaleak

Aspect Main SFC.7z NEWS_05.tar
Type Structured source archive Raw workstation backup
Focus Final/compilable code In-progress assets + tools
Scope Multi-game (Mario, Zelda, SF1, etc.) Star Fox 2 focus + toolkit
Insight What was shipped How it was made
Files Source trees (.asm, .c, .h) CAD models, animations, tool source

NEWS_05 fills a crucial gap: the development tooling and 3D asset creation process that enabled Star Fox 2’s complex geometry.


Preserved Timestamps & Development Timeline

Chronological Analysis

All files are dated 1992–1995, clustered around key project phases:

Early Phase: 1992 (March–June)

  • PO project – 146 folders, design documents and prototypes
  • ZELDA project – Early dungeon prototyping
  • kanji folder – Japanese character support (34 folders, 2.6 MB)
  • Kimura’s early utilities and experiments

Assessment: Foundation-laying, proof-of-concept phase.

Middle Phase: 1993–1994 (March–August)

  • WATANABE/3DCAD – CAD tool UI/demo (March 1994)
  • SG-1 project – 82 folders of unknown project (September 1994)
  • Kimura’s core utilities stabilizing
  • FX2 (Stunt Race FX) graphics assets (August 1995)

Assessment: Tool development, experimentation with 3D pipeline.

Late Phase: 1995 (Jan–May) — SF2 Crunch Time

  • AAfundoshi – Most recent modifications: May 1995
    • cadfun executable
    • demo.hex, demo2.hex test builds
    • All 9 stage folders at peak content
  • FX2 – Updated to August 1995
  • Kimura’s utilities at feature-complete state

Timeline Reconstruction:

1992 Q1-Q2: Prototype phase (ZELDA, PO design)
   ↓
1993-1994 Q3: Tool development (CAD framework, 3D lib)
   ↓
1994 Q4: Asset production ramps (all SF2 stages active)
   ↓
1995 Q1-Q2: FINAL PUSH (May updates, demo builds)
   ↓
1995 Q3: Transition to FX2 (August timestamps)
   ↓
NEWS_05 snapshot created (date estimate: ~May-June 1995)

Context: SF2 Release & Development

Star Fox 2 was never commercially released on SNES in Japan or USA. Planned release:

  • Announced late 1994
  • Supposed Q4 1995 launch
  • Cancelled in spring 1995 due to Nintendo 64 shift

NEWS_05 captures SF2 in final development stage (beta/RC phase) before cancellation. The May 1995 timestamps mean this backup was made during or just after the cancellation decision.

This adds poignancy: the 1,549 AAfundoshi files represent 3+ years of work that never shipped.


Comparison to Main Gigaleak Archives

NEWS_05 vs. SFC.7z (Main Source Code)

Aspect SFC.7z (Organized) NEWS_05 (Raw Backup)
Focus Finalized source trees In-progress workspaces
Content .asm game code .cad models, .anm animations, tool source
Scope 7+ major games (Mario, Zelda, Kart, SF1, SF2, Yoshi, F-Zero) Primarily SF2 (+ toolkit + misc projects)
File Organization Hierarchical, well-structured Flat artist/engineer directories
Metadata Build scripts, documentation .txt metadata, .BAK iterations
Insight What shipped How it was made

Complementary Value:

  • SFC.7z = Final game logic (ROM code that shipped or was ready to ship)
  • NEWS_05 = Development process (tools, assets, iteration cycles)

Together, they provide unprecedented visibility into SNES game development at Nintendo.


Historical Significance

1. Nintendo’s In-House CAD System (Unique Source)

The CAD tool source (26 C/H files, ~26 KLOC) is the only publicly available Nintendo proprietary CAD tool source. This reveals:

  • Architecture choices: X11 GUI (Unix), modular design, transfer protocol
  • Animation system: Hierarchical transforms, keyframe interpolation
  • Hardware bridge: Direct SNES board communication via transfer.c
  • Development process: Artist-friendly (Japanese UI) vs. engineer-friendly (code)

This fills a massive gap in game development history—most tool source is lost or proprietary.

2. Complete SF2 3D Asset Pipeline (Second Source of SF2)

SF2 source code exists in SFC.7z (asm game logic), but NEWS_05 provides:

  • All 173 animation definitions (walk, idle, attack, death, etc.)
  • 3D models for enemies, bosses, stage geometry
  • CAD workflow that produced the models
  • Stage-by-stage asset inventory (9 stages, 1,168 files)

Enables potential:

  • 3D model extraction and recreation
  • Animation analysis
  • Asset re-purposing for ROM hacking/mods
  • Historical recreation of SF2 development

3. Developer Toolkit Snapshot (Kimura’s Utilities)

Kimura’s 85-file C source toolkit is a time capsule of 1990s SNES development tools:

  • Binary format converters (hex, dos, mode 7)
  • ROM builders and partitioners (1MB EPROM management)
  • 3D math libraries (lighting, depth, animation)
  • Sound tools (SFX extraction)
  • Cross-platform variants (PC preview, SNES hardware)

This shows the practical engineering behind making SF2—not just the art, but the technical infrastructure.

4. Workstation Snapshot (Institutional Knowledge)

The raw directory structure, naming conventions, and file organization reveal:

  • Development team structure (Watanabe = 3D, Kimura = tools, others = system)
  • Workflow conventions (.cad.anm.nca pipeline)
  • Iteration patterns (.BAK files, multiple demo builds)
  • Project timeline (1992 prototype → 1995 beta)

This is nearly impossible to reconstruct from code alone.


What This Archive Enables

For Preservation:

  • Complete SF2 asset recovery (can reconstruct 3D models from .cad + .anm)
  • Tool reconstruction (CAD tool can be recompiled for emulation/study)
  • Development history (timeline and process documentation)

For Research:

  • SNES 3D techniques (how Nintendo solved Z-buffer constraints)
  • Animation systems (keyframe hierarchy and interpolation)
  • Tool design (X11 CAD interface for console development)
  • Hardware optimization (CPU-specific library variants)

For Enthusiasts:

  • ROM hacking (use CAD tool to create/modify SF2 content)
  • Asset ripping (extract models, textures, animations)
  • Tool emulation (run CAD tool on modern X11, interface with SNES emulators)
  • Reverse-engineering (study 3D rendering pipeline)

Research Implications & Technical Opportunities

NEWS_05 is not just historical artifact—it is a live research platform with immediate applications.

1. Complete CAD Tool Reconstruction

Current Status:

  • 26 C/H source files exist, compilable with 1990s-era Unix toolchain
  • X11 dependencies are well-documented and portable
  • No proprietary libraries (tool is self-contained)

Reconstruction Path:

  1. Install X11 development headers on modern system (Linux, BSD, macOS)
  2. Obtain 1990s-compatible C compiler (gcc 2.7 or later works)
  3. Compile CAD tool from source
  4. Interface with SNES emulator (via mock transfer.c)
  5. Recreate Watanabe’s workflow on modern hardware

Research Value:

  • HCI study – How did 1990s console developers interact with tools?
  • Comparative analysis – How does this tool compare to contemporary tools (Lightwave 3D, Softimage 3D)?
  • Preservation – Tool runs again, software death is averted

Challenge: X11 GUI is outdated; modern equivalent would require Qt or GTK port.

2. Star Fox 2 Asset Extraction & Recreation

Feasible outcomes:

  • 3D model extraction – Convert .cad files to Wavefront OBJ or FBX for modern tools
  • Animation extraction – Export .anm keyframes to BVH (Biovision Hierarchy) format
  • Texture recovery – Extract .cgx sprite assets and reconstruct 3D surface textures
  • Complete stage reconstruction – Rebuild all 9 stages in modern engine (Unreal, Unity)

Technical hurdles:

  1. .cad format is proprietary (needs reverse-engineering from transfer.c behavior)
  2. .anm skeleton hierarchy must be inferred from animation names and bone relationships
  3. Texture mapping is implicit (need to study how .cgx palettes are applied)
  4. Collision geometry may be separate or derived from visible geometry

Path forward:

  • Use transfer.c as specification – trace through serialization logic to understand .cad layout
  • Compare extracted 3D models against known SF2 screenshots
  • Iteratively refine extraction until models match visually

3. SNES 3D Graphics Research

Insights from NEWS_05:

Problem 1: No Hardware Z-Buffer

  • Solution: Painter’s algorithm (sort polygons, draw back-to-front)
  • depth.c implements efficient sorting for this
  • Research question: How does performance scale? (Game had ~200 polygons/frame?)

Problem 2: Limited VRAM (64 KB)

  • Solution: Aggressive LOD (Level-of-Detail) system
  • Stage folders show varying geometry complexity across stages
  • Research question: Were assets dynamically streamed or pre-loaded?

Problem 3: No Floating-Point Hardware

  • Solution: Fixed-point math throughout
  • fundoshi/ variants show optimization strategies
  • Research question: What precision (bits) was used for transform matrices?

Research Framework:

Take extracted SF2 3D model
  ↓
Import into research engine
  ↓
Test different Z-sorting strategies
  ↓
Measure frame-time (target: 60 FPS on 3.58 MHz 65C816)
  ↓
Determine feasible polygon count and LOD strategy
  ↓
Publish results: "How Nintendo Made 3D Work on SNES"

4. Tool Design & HCI Study

Questions the CAD tool source answers:

  • How many clicks to create a character model? (menu structure in source)
  • What keyframe formats supported? (anim.c shows capabilities)
  • How did artists manage complexity? (file organization, naming conventions)
  • What was user feedback? (menu item names, dialog wordings)

Historical comparison:

  • 1995 Nintendo CAD (NEWS_05) vs.
  • 1995 Lightwave 3D vs.
  • 1995 Softimage 3D vs.
  • 2024 Blender (modern baseline)

Metrics to compare:

  • Code complexity (LOC)
  • Feature set (skeletal animation, LOD, collision modeling)
  • Rendering quality (shading algorithms)
  • Export formats (how many output targets)

5. Hardware Optimization Case Study

The fundoshi vs. IBM parallel implementations offer a unique research opportunity.

Controlled Comparison:

Take ibm/depth.c (reference, optimized for correctness)
Take fundoshi/depth.c (optimized for 65C816)

1. Verify they produce identical results (with rounding tolerance)
2. Measure performance difference on modern CPU
3. Analyze which optimizations had biggest impact:
   - Fixed-point math
   - Loop unrolling
   - SIMD instructions (if present)
   - Memory layout optimization
4. Determine speedup factor
5. Apply learnings to other SNES games

Research contribution: “Porting Game Algorithms from 65C816 to x86: Lessons from 1990s Development”

6. ROM Hacking & Modding Community

Immediate applications:

  1. Stage Editor Reconstruction
    • Compile CAD tool
    • Modify transfer.c to output SF2-compatible .nca format
    • Create new stages or modify existing stages
    • Build custom ROM with replacement assets
  2. Character Model Swaps
    • Extract .cad files from stages
    • Modify geometry (smooth, sharpen, enlarge)
    • Recompile and test in emulator
    • Example: Create “Giant Andross” mod
  3. Animation Editing
    • Parse .anm keyframe format
    • Create custom animation editor
    • Blend animations (walk + run hybrid)
    • Slow-motion or speed-up effects
  4. Palette Hacking
    • Extract .col color palettes
    • Create new color schemes
    • Apply to all stage assets systematically

Community tools that could be built:

  • SF2 Asset Extractor – Command-line tool to dump all models/animations
  • SF2 Model Viewer – 3D preview with animation playback
  • SF2 Stage Editor – Visual editor for stage geometry, enemy placement
  • SF2 Animation Mixer – Blend animations, create new moves

7. Comparative Game Development Study

Using NEWS_05 as primary source:

Compare Star Fox 2 (cancelled, NEWS_05) to Star Fox 1 (shipped, source in SFC.7z):

Aspect SF1 (SFC.7z) SF2 (NEWS_05) Difference
3D polygon count ? ~200/frame inferred SF2 more ambitious?
Animation system Hand-crafted code Skeletal + keyframes SF2 more sophisticated
Asset pipeline Unclear Clear (CAD → NCA) SF2 had tool support
Development time ? 3+ years (1992-1995) Long iteration cycle
Team size ? At least 2 (Watanabe + Kimura) Specialized roles
Cancellation impact Shipped Cancelled spring 1995 Development cost wasted

Research narrative: “Why Star Fox 2 Failed: Development Process Analysis”

  • SF2 was more ambitious than SF1 (more 3D detail, better animation)
  • But development cycle was longer (3+ years vs. SF1’s likely 18-24 months)
  • Shift to N64 caused cancellation before completion
  • Prototype tool chain was mature, but assets incomplete

Preservation Challenges & Opportunities

Current State

All files in NEWS_05 are binary and text-readable, but:

  • .nca format is undocumented – requires reverse-engineering
  • .cad format is proprietary – no public specification
  • .col palette format is implicit – must infer from usage
  • Hardware transfer protocol is unknown – transfer.c would reveal it

Preservation Tasks (Priority Order)

High Priority:

  1. Reverse-engineer .cad format (use txtfile.c as reference)
  2. Document .anm keyframe format
  3. Extract complete SF2 3D models
  4. Catalog all 307 .nca files and their source .cad/.anm pairs

Medium Priority:

  1. Compile and run CAD tool in emulated Unix environment
  2. Document hardware transfer protocol (read transfer.c in detail)
  3. Create model extraction tools (CAD → OBJ, ANM → BVH)
  4. Compare NEWS_05 assets against final SF2 development ROM (if discovered)

Low Priority:

  1. Port CAD tool to modern GUI framework
  2. Create web viewer for 3D models
  3. Analyze XL audio toolkit in detail
  4. Study historical art/animation iteration (via .BAK files)