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.
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.
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.
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.
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.
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
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.
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.
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
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 |
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:
Offset | Size | Description |
---|---|---|
0x0 | 0x480 | 24x24 icon bitmap |
0x480 | 0x10 | image info |
0x490 | (varies) | image data |
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. |
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.
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.
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 |
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 |
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 | ?? |
Entries are 17 bytes each
Offset | Size | Description |
---|---|---|
0x0 | 0x2 | vertex 1 |
0x2 | 0x2 | vertex 2 |
0x4 | 0x2 | vertex 3 |
0x6 | 0x8 | ?? |
(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:
Offset | Size | Description |
---|---|---|
0x0 | 0x480 | 24x24 icon bitmap |
0x480 | 0x10 | image info |
0x490 | (varies) | image data |
Offset | Size | Description |
---|---|---|
0x0 | 0x1 | Unknown |
0x1 | 0x1 | Number of frames |
0x2 | 0x2 | Unknown |
0x4 | 0xC | Garbage? |
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.
©2016 jrra