N64 Games And Hardware You Didn't Know About



64DD



The 64DD is a disk drive attachment. The drive connects to the expansion port on the bottom of the N64.

When the drive is attached, the N64 will check on powerup if a game cartridge is in the top slot. If there is, then the game is started as usual. Otherwise, the N64 boots from a 4mbyte IPL ROM inside the 64DD. This contains a menu program that shows the N64 logo on-screen and allows the onboard clock to be set. If a disk is inserted at any time, the program will load a program from the disk and run it.

There are a number of accessories that are specific to this device, some of which are covered below.

N64 Mouse

This a standard 2-button ball mouse. A few 64DD games support it:

Most other N64 games see the mouse as a controller, and a few of them are playable like this. Mouse movements register as analog stick movements. The left button maps to the A button, and the right mouse button maps to B.

There is a single microcontroller that handles everything.

This mouse appears to be based on contemporary Mitsumi PS/2 mice, which have nearly identical guts.

N64 Keyboard

There is an N64 keyboard. It seems to be used exclusively by one game, the Randnet Disk, which is a web browser and email client.

64DD Modem

The 64DD came with a modem cart. It fits into the cart slot, right where a game would go. There is a green light on the front to show when the modem is active.

Inside the modem is an ASIC and a ROM. The ROM had to be dumped the "hard way", by removing the ROM chip from the board and connecting it to a reader. The ROM is 32mbits and has a base address of 0x18000000, with a mirror at 0x18400000. It begins with a standard 64-byte cart header, followed by three ELF files at 0x40, 0x10000, and 0x20000. Each ELF appears to implement a softmodem. It is not clear why there are three different versions.

The Randnet Disk doesn't recognize the modem if its ROM is physically removed from the board.

Both the Randnet Disk and the Communication Kit dial a built-in phone number that cannot be changed: 03-3568-5050. This number is no longer in service.

Trivia: this is one of the few N64 accessories that uses triwing screws.

64DD Capture Cassette

This cart was included with a disk game called Mario Artist: Talent Studio. It's a composite video capture device. The cart comes with a microphone, which plugs into the small port on the left of the cart in the above pictures.

There's just one ASIC on the board that appears to handle everything.

Trivia: this is one of the few N64 accessories that uses triwing screws.

Doubutsu no Mori

Also known as Animal Crossing, this game makes heavy use of the passage of real time. The N64 version of this game includes a real-time clock chip inside the cartridge. It's located at the bottom left of the board, labeled RTCK-NUS. No other games used this chip.

As far as I can tell, this chip was first documented by Zoinkity. Support for this chip was added to Mupen64Plus in version 1.99.5, via this patch.

Bonus picture of the back, as requested by Lord Nightmare: back

Morita Shogi 64

This is a shogi game. Shogi is a chess-like game from Japan. Morita Shogi 64 is unique for having a modem built into its cartridge for online play.

Seta Bio Sensor

The bio sensor is a controller pak accessory from Seta. It reads the player's heart rate via photoplethysmography: it shines infrared light into the player's earlobe, then measures the amount of light passing through the earlobe using a photodiode. If the amount of light begins to decrease, then it is assumed that there is more blood in the tissue which is absorbing the light, and so a heartbeat must have just occurred.

The bio sensor is only used by the game Tetris 64. This game has a special mode called Bio Tetris, which adjusts its speed depending on the player's heart rate.

Mario Artist file formats

Nintendo released a series of games for 64DD under the Mario Artist label. These games included such gameplay as coloring pictures, making 3D models, and creating skits similar to Taiwan news CGI re-enactments.

These games save files to disk and they are all more-or-less compatible with each other, allowing each game to read files from the other. The games use a number of different file formats, some of which are described below.

Mario Artist file icon
MA2D1 Format
MA3D1 Format
PSPPM Format

Mario Artist file icon

Every file begins with a bitmap icon which is displayed in the file browser. It is a 24x24 bitmap, RGBA5551, big-endian.

Offset Size Description
0x0 0x480 24x24 icon bitmap
0x480 (varies) the rest of the file

MA2D1 Format

An MA2D1 file is an image saved by Mario Artist: Paint Studio. It's a pretty basic bitmap image format with optional compression. A viewer for this format is available in leotools.

The pixel format is RGBA5551, big-endian. The alpha bit is used. The file has three parts:

Format Overview

Offset Size Description
0x0 0x480 24x24 icon bitmap
0x480 0x10 image info
0x490 (varies) image data

Image info block

Offset Size Description
0x0 0x4 Image type (either "NCMP" or "RGBA")
0x4 0x3 X-dimension in ascii (for example "216")
0x7 0x3 Y-dimension in ascii (for example "202")
0xA 0x6 size of image data in ascii (for example "021233"). Should be filesize - 1168.

Image Data

The image is stored in one of two ways. For "RGBA"-type images, the image data is a raw, uncompressed bitmap. For "NCMP"-type images, the image data is compressed with Yay1. Yay1 looks similar to Yay0, and may be compatible with it, but I have not tested this.

An implementation of a Yay1 decoder in C may be found here.

MA3D1 Format

mario's head imported into blender

A MA3D1 file is a 3d model file. This file type is created by Mario Artist: Polygon Studio. It can contain multiple components (submodels), each with vertex and triangle definitions, as well as an uncompressed texture.

This format is only partially described here.

Format Overview

Offset Size Description
0x0 0x480 24x24 thumbnail bitmap
0x480 0x4 model count
0x484 0x4 vertex count
0x488 0x4 triangle count
0x48C 0x4 offset of modeldef, relative to start of file
0x490 0x4 size of modeldef
0x494 0x4 tex_start
0x498 0x4 tex_size
0x5A4 0x4 0xF000A3D1

modeldefs

Offset Size Description
0x0 0x4 vertex count
0x4 0x4 ??
0x8 0x4 triangle count
0xC 0x4 ??
0x10 0x4 offset of vertdefs, relative to start of first modeldef
0x14 0x4 size of vertdefs
0x18 0x4 offset of structB
0x1C 0x4 size of structB
0x20 0x4 offset of tridefs, relative to start of first modeldef
0x24 0x4 size of tridefs
0x28 0x4 ??
0x2C 0x4 ?? texture size in bytes
0x30 0x4 size of this modeldef / offset to next modeldef
0x34 0x4 ?? number of faces

vertdefs

Offset Size Description
0x0 0x2 vertex position X
0x2 0x2 vertex position Y
0x4 0x2 vertex position Z
0x6 0x1 vertex normal X
0x7 0x1 vertex normal Y
0x8 0x1 vertex normal Z
0x9 0x1 ??

structB

Entries are 17 bytes each

tridefs

Offset Size Description
0x0 0x2 vertex 1
0x2 0x2 vertex 2
0x4 0x2 vertex 3
0x6 0x8 ??

PSPPM Format

(note: this section is based on just one sample file)

A PSPPM file is an animated bitmap. I think this type of file is created by Paint Studio. The pixel format is RGBA5551, big-endian. The alpha bit is used. The file has three parts:

Format Overview

Offset Size Description
0x0 0x480 24x24 icon bitmap
0x480 0x10 image info
0x490 (varies) image data

Image info block

Offset Size Description
0x0 0x1 Unknown
0x1 0x1 Number of frames
0x2 0x2 Unknown
0x4 0xC Garbage?

Image Data

The frames are stored as a series of uncompressed bitmaps, one after the other, with nothing in between. Each frame is 216x202 pixels in size.

The End

©2016 jrra