Gigaleak NEWS_05 - Star Fox 2 3D CAD Pipeline & Development Toolkit
Edit on Github | Updated: 30th March 2026NEWS_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:
- Tsuyoshi 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 -
.cadand.txtfiles containing 3D model definitions. The.txtformat is ASCII vertex lists;.cadis 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.cmanaged splitting ROM images across these boundaries. - Z-Buffer - Depth buffer for 3D rendering. SNES has no hardware Z-buffer, so
depth.cimplements 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.cconverts graphics to Mode 7 format.
Contents at a Glance
The table below lists the relevant entries.
| 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)
Tsuyoshi 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).
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
.cadand.anmsource files are preserved .ncabinary is regenerated on each compile- Bugs in compilation don’t destroy source art
3. Collaborative
- Watanabe (artist) owns
.cad/.anmcreation - 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.
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.
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
The table below lists the relevant entries.
| 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 behaviorar_ro.nca– Enemy rolling/rotatingbu_dummy.nca– Dummy collision object (no visual, just hit detection)
Player/Ally:
my_body.txt– Player ship body definitionwa_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 modelskabe_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.txtcontent 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:
- Modeling →
*.cad(artist creates 3D model in CAD tool) - Animation →
*.anm(animator sets keyframes in timeline) - Compilation →
*.nca(transfer.c compiles CAD + ANM → hardware binary) - 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.anm → ar_wa_0.nca → ar_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”)_tasuffix = 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:
- Established asset pipeline – clear taxonomy of asset types
- Multiple developers – naming conventions prevent conflicts
- Japanese team – Japanese suffixes (kabe, kusa) suggest monolingual Japanese developers
- 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:
- Modeling →
*.cad(artist creates 3D model in CAD tool) - Animation →
*.anm(animator sets keyframes in timeline) - Compilation →
*.nca(CAD + ANM compiled to hardware binary via transfer.c) - 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 Frontend –
main.c,window.c,menu.chandle user interaction - 3D Engine –
PolyMain.c,PolyDraw.cmanage geometry and rendering - Animation System –
anim.c,transanm.chandle keyframe-based skeletal animation - File I/O –
txtfile.cparses source formats,transfer.ccompiles to SNES binary - Utilities –
color.c,screen.c,design.cprovide 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
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 componentsExternal.h(188 lines) – Global state and data structuresPrototype.h(200 lines) – Function declarationsMenuRes.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 most critical hardware 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→.ncabinary)
Historical Curiosity: transfer.c, sos.c, and sos2.c in this directory are all exactly 2,373 lines of code long, despite having distinct contents and purposes!
PolyMain.c and PolyDraw.c (825 lines combined) – 3D geometry engine.
PolyMain.c (436 lines) manages:
- Polygon database (vertex arrays, face lists)
- Mesh manipulation (extrude, scale, rotate, subdivide)
- Hierarchical transforms (parent-child bone relationships)
PolyDraw.c (389 lines) 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 (1,396 lines combined) – Animation system.
anim.c (1,098 lines) provides:
- Timeline editor with frame-by-frame playback
- Keyframe insertion, deletion, modification
- Smooth interpolation between poses
- Real-time animation preview in viewport
transanm.c (298 lines) 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 build instructions are preserved in an 80-line makefile. Along with the presence of 20+ .o relocatable object files and compiled binaries (3dcad, caduser), the environment clearly involved:
- Active compilation and linking
- Multiple build targets (main tool, user variants)
- Makefile-based builds with dependency tracking directly inside the workspace
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:
- Backup protection – if
.cadgets corrupted, re-parse.txt - Format evolution – tools could auto-convert old
.txtto new.cadformat - Debugging – engineers could inspect
.txtto verify.cadcorrectness - 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
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 conversioncnvmode7– Compiled mode 7 converter (binary)
Bitmap/Sprite Tools:
bit1.c– 1-bit plane operationsbitmap utilities– Manage.cgx(SNES graphics) and.bmp(Windows format) files
ROM & Kernel Management (8 utilities)
ROM Building:
mkrom1.c– Primary ROM builder (creates.hexROM 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
Sound/Audio Tools (5 utilities)
Sound Effects:
sfxdmp.c– “SFX Dumper” – extracts sound effects from ROMsfxlst.c– “SFX List” – generates list of SFX from SFX banksfxdmp– 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
3D & Math Utilities (9 utilities across fundoshi + ibm)
Fundoshi Variant (Nintendo-specific CPU optimization?):
fundoshi/light.c– 3D lighting calculationsfundoshi/depth.c– Depth sorting for painter’s algorithmfundoshi/3d_id.c– 3D object ID generation/trackingfundoshi/anime.c– Animation playback enginefundoshi/stdscr.c– Standard screen buffer managementfundoshi/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 binariesdepth.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
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 binaryu2dos.c,u2dos– Unix → MS-DOS line endingsunix2dos.c,unix2msdos.c– Line ending conversiondos2unix.c,ms2unix.c– Reverse conversionmscnv.c,mscnv– MS-DOS to Unix conversion
Text/Code:
tab2spc.c,tab2spc– Tab → space conversiontab8spc.c– Tab → 8 spacessource.c– Source code formatting/processingtype.c– File type detector
Data Manipulation:
cut.c– Binary/text cutting (like Unix cut utility)sum8.c– 8-bit checksum calculatorlabel.c– Label generation
Hex/Binary Editors (3 utilities)
hxed.c– Hex editor sourcehxed2.c– Hex editor varianthxed,hxed2– Compiled binaries
Used for low-level binary patching and ROM inspection.
Miscellaneous Tools (10 utilities)
calc.c– Calculation utilities (possibly for coordinate/parameter computation)getch.c– Character input handlerpr201.c– Likely printer driver (NEC PR-201)partition.c– Disk partitioningarrenge.c– Likely “arrange” – data organization utilityjisclr.c– Japanese character/JIS handlingid.c– ID generation/assignment- LHA compression library (7+ files) – Archive/compress assets
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.binthroughxlbgm24.bin) - Engine: 9 engine modules (
xleng01throughxleng09) - Sound: 2 sound modules (
xlsound.bin,xlsnd01throughxlsnd04) - 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,.sfxsamples - 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:
- Develop algorithm on PC (fast feedback)
- Profile and optimize for SNES (hardware constraints)
- 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:
- Audio Engine (
xleng01throughxleng09)- APU communication layer (SNES has a separate audio processor)
- Sound effect playback
- BGM sequencing
- Real-time mixing/volume control
- Sound Effects Library (
xlsound.bin,xlsnd01throughxlsnd04)- Compiled SFX banks (weapon fire, explosions, footsteps)
- Indexed by game state (which SFX to play for which action)
- 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:
- Old code is preserved, not deleted – indicates version control awareness (can’t delete what others might need)
- Experiments are isolated (
exp/) – allows risky refactoring without affecting stable code - Project-specific folders (
kart/) – suggests shared toolkit, project-customized variants - 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
.cgxgraphics files - 36
.bakbackups - 16
.scrscreen layouts - 15
.colcolor 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
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.cmanaged boundaries between banks
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)
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 (
.colfiles)
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:
.BAKfiles (backups) scattered throughout- Multiple demos (
demo.hex,demo2.hex,demo01.cgxthroughdemo24.cgx) .bakversions of models (moji.CGX.BAK→moji.CGXwas 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
The table below lists the relevant entries.
| 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
cadfunexecutabledemo.hex,demo2.hextest 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)
The table below lists the relevant entries.
| 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
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.
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
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.
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→.ncapipeline) - Iteration patterns (
.BAKfiles, 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.
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:
- Install X11 development headers on modern system (Linux, BSD, macOS)
- Obtain 1990s-compatible C compiler (gcc 2.7 or later works)
- Compile CAD tool from source
- Interface with SNES emulator (via mock transfer.c)
- 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.
Star Fox 2 Asset Extraction & Recreation
Feasible outcomes:
- 3D model extraction – Convert
.cadfiles to Wavefront OBJ or FBX for modern tools - Animation extraction – Export
.anmkeyframes to BVH (Biovision Hierarchy) format - Texture recovery – Extract
.cgxsprite assets and reconstruct 3D surface textures - Complete stage reconstruction – Rebuild all 9 stages in modern engine (Unreal, Unity)
Technical hurdles:
.cadformat is proprietary (needs reverse-engineering from transfer.c behavior).anmskeleton hierarchy must be inferred from animation names and bone relationships- Texture mapping is implicit (need to study how
.cgxpalettes are applied) - Collision geometry may be separate or derived from visible geometry
Path forward:
- Use
transfer.cas specification – trace through serialization logic to understand.cadlayout - Compare extracted 3D models against known SF2 screenshots
- Iteratively refine extraction until models match visually
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.cimplements 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"
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)
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”
ROM Hacking & Modding Community
Immediate applications:
- Stage Editor Reconstruction
- Compile CAD tool
- Modify transfer.c to output SF2-compatible
.ncaformat - Create new stages or modify existing stages
- Build custom ROM with replacement assets
- Character Model Swaps
- Extract
.cadfiles from stages - Modify geometry (smooth, sharpen, enlarge)
- Recompile and test in emulator
- Example: Create “Giant Andross” mod
- Extract
- Animation Editing
- Parse
.anmkeyframe format - Create custom animation editor
- Blend animations (walk + run hybrid)
- Slow-motion or speed-up effects
- Parse
- Palette Hacking
- Extract
.colcolor palettes - Create new color schemes
- Apply to all stage assets systematically
- Extract
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
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:
.ncaformat is undocumented – requires reverse-engineering.cadformat is proprietary – no public specification.colpalette format is implicit – must infer from usage- Hardware transfer protocol is unknown – transfer.c would reveal it
Preservation Tasks (Priority Order)
High Priority:
- Reverse-engineer
.cadformat (use txtfile.c as reference) - Document
.anmkeyframe format - Extract complete SF2 3D models
- Catalog all 307
.ncafiles and their source.cad/.anmpairs
Medium Priority:
- Compile and run CAD tool in emulated Unix environment
- Document hardware transfer protocol (read transfer.c in detail)
- Create model extraction tools (CAD → OBJ, ANM → BVH)
- Compare NEWS_05 assets against final SF2 development ROM (if discovered)
Low Priority:
- Port CAD tool to modern GUI framework
- Create web viewer for 3D models
- Analyze XL audio toolkit in detail
- Study historical art/animation iteration (via
.BAKfiles)