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.
This archive is the most process-oriented snapshot in the tape-restore collection:
The archive preserves two distinct working environments:
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.
| 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:
.txt (documentation, specs, notes).cad (CAD model source files).anm (animation keyframes/timelines).nca (compiled Nintendo CAD binaries).c (C source code).cgx, .col, .scr, .obj)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).
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.
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
2. Non-Destructive
.cad and .anm source files are preserved.nca binary is regenerated on each compile3. Collaborative
.cad/.anm creationThe 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.
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).
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.
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
Each stage folder represents a complete level or boss encounter, with self-contained assets and animations.
| 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 |
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 poseLevel Geometry:
font_l.cad, font_n.cad, font_o.cad – Text/signage modelskabe_ta.cad – Wall tile (kabe = wall, ta = tile)kusa.cad – Grass/foliagelift_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).
High-animation stages: sf2-2 (43 .anm) and sf2-1 (26 .anm)
Lower-animation stages: sf2-6 (16 .anm), sf2-9 (9 .anm)
Animation Sparsity: sf2-7 (0 .anm) is completely empty—likely a placeholder or unused stage cut from final game.
The presence of .txt, .cad, .nca, and .anm together shows the workflow per stage:
*.cad (artist creates 3D model in CAD tool)*.anm (animator sets keyframes in timeline)*.nca (transfer.c compiles CAD + ANM → hardware binary)*.txt (documentation, parameter notes, engineer comments)Each stage can be built independently, then linked into the final ROM.
The stage-by-stage file counts tell a story about development priorities and technical constraints.
sf2-4 (220 files) and sf2-2 (218 files) were the most labor-intensive stages.
This suggests either:
The peak of 43 .anm files in sf2-2 suggests this was an action-heavy stage with many animated characters.
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.
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.
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
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 planesThe consistent naming convention across 1,168 stage files shows:
The presence of multiple variants (ar_wa_0, ar_wa_1, ar_wa_l, ar_wa_r) suggests:
This is optimization: instead of modeling both left AND right, the tool likely mirrors the left model at runtime.
The presence of .txt, .cad, .nca, and .anm together shows the workflow per stage:
*.cad (artist creates 3D model in CAD tool)*.anm (animator sets keyframes in timeline)*.nca (CAD + ANM compiled to hardware binary via transfer.c)*.txt (documentation, parameter notes, engineer comments)Each stage can be built independently, then linked into the final ROM.
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.
The tool is cleanly layered:
main.c, window.c, menu.c handle user interactionPolyMain.c, PolyDraw.c manage geometry and renderinganim.c, transanm.c handle keyframe-based skeletal animationtxtfile.c parses source formats, transfer.c compiles to SNES binarycolor.c, screen.c, design.c provide specialized featuresThe 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.
transfer.c (2,373 lines) – The largest and most critical module.
Handles the bridge from X11 workstation to SNES development hardware:
.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:
PolyDraw.c implements:
anim.c and transanm.c (~650 lines combined) – Animation system.
anim.c provides:
transanm.c implements:
This architecture mirrors modern tools like Maya, suggesting sophisticated animation capabilities.
winfile.c (874 lines) – File browser and dialog.
Unusual for its size, suggesting:
.cad, .txt, .anm)window.c (560 lines) – X11 window management.
Handles:
This level of detail suggests a multi-paned UI, similar to modern 3D software.
The makefile is not visible in the leak, but the presence of 20+ .rel relocatable object files and compiled binaries (3dcad, caduser) proves:
extern void CheckQuit(MItemPtr item) {
char *quitMessage = "終了してもよろしいでしょうか?"; // "Quit OK?"
if (AlertDialog(...) == 1) { /* exit */ }
}
The presence of Japanese UI strings reveals:
This small detail confirms the tool was built in-house at Nintendo Japan for Japanese developers, not ported from elsewhere.
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:
This is not a trivial serialization layer; it is a sophisticated communication protocol.
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:
PolyDraw.c (~600 lines) implements:
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.
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:
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:
This architecture allows complex character animations with minimal file size (only keyframes stored, not every frame).
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:
The transformation pipeline .txt → .cad → .anm → .nca reveals sophisticated format design.
Each layer serves a specific purpose in the production workflow.
.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:
Why text format?
Drawback: High storage overhead (each coordinate takes ~8 bytes as text vs. 2 bytes in binary).
This is why .cad files exist.
.cad Binary Model FilesCompiled 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:
.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:
Interpolation (anim.c applies): Between frame 0 and 30, the system linearly interpolates Head position:
If using ease-in curve:
This mimics real-world motion (slow start, fast middle, slow end).
.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):
Result: A typical character animation compressed from ~50 KB (.anm text) to ~8-10 KB (.nca binary).
The presence of all three formats (.txt, .cad, .anm) suggests:
.cad gets corrupted, re-parse .txt.txt to new .cad format.txt to verify .cad correctness.txt/.anm) separate from binaries (.cad/.nca)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.
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)
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) filesROM Building:
mkrom1.c – Primary ROM builder (creates .hex ROM images from assembled code)mkrom1 – Compiled binary of mkrom1.cmario.rom, mkart.rom, demo.hex (in AAfundoshi directory)Kernel/Bootloader:
ispk0.c, ispk1.c – “Insert SNES Program Kernel”
Partition Management:
partition.c – Manages 1MB ROM chip boundaries (SNES SA-1 boards use multiple EPROMS)parth.bin, partition – Pre-built partitionerSound 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 generatorSound System:
sos.c, sos2.c (in AAfundoshi/CAD) – Sound Output System driverFundoshi 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 assignmentIBM PC Variant (development/preview):
ibm/light.c, ibm/depth.c, ibm/3d_id.c, ibm/anime.c, ibm/stdscr.cStandalone 3D:
depth, light, anime, 3d_id, stdscr – Compiled binariesdepth.asm, light.asm – Assembly-optimized versions (for hardware performance)This dual-platform approach allowed:
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 conversionText/Code:
tab2spc.c, tab2spc – Tab → space conversiontab8spc.c – Tab → 8 spacessource.c – Source code formatting/processingtype.c – File type detectorData Manipulation:
cut.c – Binary/text cutting (like Unix cut utility)sum8.c – 8-bit checksum calculatorlabel.c – Label generationhxed.c – Hex editor sourcehxed2.c – Hex editor varianthxed, hxed2 – Compiled binariesUsed for low-level binary patching and ROM inspection.
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/assignmentLargest sub-project, possibly:
xlbgm*.bin, xleng*.bin, xlsnd*.bin)File inventory includes:
xlbgm01.bin through xlbgm24.bin)xleng01 through xleng09)xlsound.bin, xlsnd01 through xlsnd04)Beyond source, Kimura’s directory contains 200+ compiled binaries and test ROMs:
hxed, fcmp, partition, sfxdmptan_table, rp5c77, rp5a22 (likely SNES chip microcode).wav, .sfx samplesCompiled artifacts suggest active iteration:
hxed, hxed2, hex2bin, hexbin).o, .rel) indicating in-progress compilationThis suggests Kimura’s toolkit was actively maintained and distributed across the development team.
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).
This architecture solves a critical problem in 1990s game development: iteration speed.
Problem:
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).
fundoshi variants (fundoshi/light.c, fundoshi/depth.c, etc.):
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.):
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:
This allows engineers to:
fundoshi/anime.c (SNES version):
ibm/anime.c (PC version):
Practical result:
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:
xleng01 through xleng09)
xlsound.bin, xlsnd01 through xlsnd04)
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:
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:
exp/) – allows risky refactoring without affecting stable codekart/) – suggests shared toolkit, project-customized variantsmsdos/) – tools existed in multiple versionsThe 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)
A 2.8 MB graphics asset dump for Stunt Race FX (Wild Trax):
.cgx graphics files.bak backups.scr screen layouts.col color palettesLikely stage/track graphics and UI elements.
CAD tool UI and demo assets:
.SCR).COL).CGX)Watanabe’s earlier work preserved on the backup:
.MAP, .SCR, .CGX, .COL)These suggest Watanabe was a long-term developer working across multiple titles, with 3D asset creation becoming a focus by 1995.
Based on the preserved files and tool structure, here’s the likely development workflow for Star Fox 2:
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.
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.
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.
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.
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:
partition.c managed boundaries between banksThe 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)The .nca binary format (compiled CAD + animation) was optimized for 64 KB SNES VRAM and 128 KB WRAM:
.col files)SNES native resolution is 256×224 (PAL: 256×240). The screen.c viewport manager and stdscr.c (standard screen) utilities managed this constraint.
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:
Compiled form of .txt, likely contains:
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.
Final binary format for SNES, likely:
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.
Evidence of ongoing iteration:
.BAK files (backups) scattered throughoutdemo.hex, demo2.hex, demo01.cgx through demo24.cgx).bak versions of models (moji.CGX.BAK → moji.CGX was edited)ar_wa_0.nca, ar_wa_1.nca, ar_wa_l.nca) = testing different posesThis suggests active asset refinement rather than one-shot creation.
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 |
| 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.
All files are dated 1992–1995, clustered around key project phases:
Assessment: Foundation-laying, proof-of-concept phase.
Assessment: Tool development, experimentation with 3D pipeline.
cadfun executabledemo.hex, demo2.hex test buildsTimeline 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)
Star Fox 2 was never commercially released on SNES in Japan or USA. Planned release:
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.
| 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:
Together, they provide unprecedented visibility into SNES game development at Nintendo.
The CAD tool source (26 C/H files, ~26 KLOC) is the only publicly available Nintendo proprietary CAD tool source. This reveals:
transfer.cThis fills a massive gap in game development history—most tool source is lost or proprietary.
SF2 source code exists in SFC.7z (asm game logic), but NEWS_05 provides:
Enables potential:
Kimura’s 85-file C source toolkit is a time capsule of 1990s SNES development tools:
This shows the practical engineering behind making SF2—not just the art, but the technical infrastructure.
The raw directory structure, naming conventions, and file organization reveal:
.cad → .anm → .nca pipeline).BAK files, multiple demo builds)This is nearly impossible to reconstruct from code alone.
.cad + .anm)NEWS_05 is not just historical artifact—it is a live research platform with immediate applications.
Current Status:
Reconstruction Path:
Research Value:
Challenge: X11 GUI is outdated; modern equivalent would require Qt or GTK port.
Feasible outcomes:
.cad files to Wavefront OBJ or FBX for modern tools.anm keyframes to BVH (Biovision Hierarchy) format.cgx sprite assets and reconstruct 3D surface texturesTechnical hurdles:
.cad format is proprietary (needs reverse-engineering from transfer.c behavior).anm skeleton hierarchy must be inferred from animation names and bone relationships.cgx palettes are applied)Path forward:
transfer.c as specification – trace through serialization logic to understand .cad layoutInsights from NEWS_05:
Problem 1: No Hardware Z-Buffer
depth.c implements efficient sorting for thisProblem 2: Limited VRAM (64 KB)
Problem 3: No Floating-Point Hardware
fundoshi/ variants show optimization strategiesResearch 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"
Questions the CAD tool source answers:
Historical comparison:
Metrics to compare:
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”
Immediate applications:
.nca format.cad files from stages.anm keyframe format.col color palettesCommunity tools that could be built:
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”
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 usageHigh Priority:
.cad format (use txtfile.c as reference).anm keyframe format.nca files and their source .cad/.anm pairsMedium Priority:
Low Priority:
.BAK files)