If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Super Mario 64 (Nintendo 64DD)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Super Mario 64: Disk Version

Developer: Nintendo
Platform: Nintendo 64DD


DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
SoundIcon.png This game has unused sounds.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.


This game was stuffed away in a cardboard box and found 30 years later in a garage
This game was never completed and/or given a public release.
As a result of this, keep in mind that the developers might have used or deleted some of the content featured here, had the game actually been released.

Hiddenpalace.org logo.png  This prototype is documented on Hidden Palace.

The 64DD version of Super Mario 64 would've taken the Nintendo 64 version and made the purchase of the expensive disk drive really worth it. Definitely.

It was displayed on a 64DD demo unit during Shoshinkai 1996, but considering the game's primitive nature and strong lack of changes compared to the original version, it's likely that this was only meant to be a tech demo and that no public release was ever planned.

This version has much longer load times, but that's to be expected since it runs from the proprietary disk format rather than a cartridge.

Duplicate Sound Effects

In Nintendo 64 games, the audiotable is the file that contains all of the raw binary sound effects and instruments a game uses. The 64DD version of Super Mario 64 is unique because it contains two copies of the audiotable, possibly indicating the developers might not have been concerned about optimizing 64DD disk space. These audiotables also contain duplicate sound effects for particular sounds, which varies from the US/Japanese release counterparts that store each sound effect only once.

The sound effect of Mario saying "Bye-Bye!" that was introduced in the 1997 Japanese Shindou edition also exists in this version:

Unused Graphics

A handful of graphics are scattered around the disk in RGBA5551 format. These include...

SM64DD picture1.png
A cable car in San Francisco.

SM64DD picture2.pngSM64DD picture3.pngSM64DD picture4.png
Found around 0x1BBF50, three pictures of Nintendo employee Atsushi Watanabe - part of Integrated Research and Development Division Design Technology Group.

SM64DD picture5.pngSM64DD picture6.png
A couple of renders from Mario Kart 64 - Wario and Yoshi.

(Source: Kobosuke, eientei95, LuigiBlood, etc.)
(developer identification: Iwata Asks)

Differences From N64 Release

Audio Differences

The N64 cartridge version of Super Mario 64 contains 35 audio sequences used for music. The 64DD version has 36 sequences, with the extra sequence containing an alternate introduction with a slightly-modified jingle. This jingle is used in the European version:

N64 64DD

The audio sequence for the Peach's Castle music contains notes that are less staccato than the Nintendo 64 release:

N64 64DD

The sequence for the star door sound in the 64DD version plays the same noise twice instead of 2 different noises:

N64 64DD

Text Differences

Acactussayswhat?
Please elaborate.
Having more detail is always a good thing.
Specifically: How does this differ?

The 64DD version has the Japanese text saved to the disk twice, which varies from the retail release that contains the Japanese script just once.

Gameplay Differences

Entering the inside of the island in Tiny-Huge Island, where Wiggler and red coins reside, will crash the game. This makes collecting all 120 Stars impossible on this version.

When Wiggler is initialized, his health value is 2048 for a single frame - like all objects - before being reset to 4. Wiggler uses his health to index into a table to get his speed (to move faster when at lower health); 2048 causes it to index out of range and read a denormalized floating-point number as his health, which causes an unimplemented operation exception since the N64 does not implement any operations on denormalized floats except comparisons. The original Japanese and US releases do not crash from this programming oversight as a coincidence.

(Source: Ukikipedia)

Error Messages

Found at 0x120320 and repeated at 0xB08560 are several error messages. Many of these seem to have come from Mario Kart 64, while others are related to the 64DD itself.

Terminate-Canceled Channel %d,Phase %d
Copy %d
%d->%d
pitch %x: delaybytes %d : olddelay %d
cont %x: delaybytes %d : olddelay %d
Warning:Kill Note  %x 
Kill Voice %d (ID %d) %d
Warning: Running Sequence's data disappear!
Audio:Memory:Heap OverFlow : Not Allocate %d!
Audio:Memory:DataHeap Not Allocate
StayHeap Not Allocate %d
AutoHeap Not Allocate %d
Status ID0 : %d  ID1 : %d
id 0 is Stopping
id 0 is Stop
id 1 is Stopping
id 1 is Stop
WARNING: NO FREE AUTOSEQ AREA.
WARNING: NO STOP AUTO AREA
AND TRY FORCE TO STOP SIDE 
Check ID0  (seq ID %d) Useing ...
Check ID1  (seq ID %d) Useing ...
No Free Seq area.
CH %d: ID %d
TWO SIDES ARE LOADING...
ALLOC CANCELED.
WARNING: Before Area Overlaid After.
WARNING: After Area Overlaid Before.
MEMORY:SzHeapAlloc ERROR: sza->side %d
Audio:MEMORY:SzHeap Overflow error. (%d bytes)
Auto Heap Unhit for ID %d
Heap Reconstruct Start %x
AHPBASE %x
AHPCUR  %x
HeapTop %x
SynoutRate %d / %d 
FXSIZE %d
FXCOMP %d
FXDOWN %d
WaveCacheLen: %d
SpecChange Finished
Fbank Seq %x
Already Load Type %d,ID %d
Warning:Emem Over,not alloc %d
Write %d
Check Wave Bank ID %d Wave ID %d
This Table is DISK-ROM 
Already Table is staying. %x
Diskcopy %x -> %x ,size %x
Diskcopy end
Slow Diskcopy %x -> %x ,size %x
Slow Diskcopy end
Slow 4096Diskcopy %x -> %x ,size %x
Slow 4096Diskcopy End
Wave-Load from %x size %x 
Error: No Wave Load Memory.
Table Load from ROM %x to RDRAM %x SIZE %x Count %d, %d
INSTTOP    %x
INSTMAP[0] %x
already flags %d
already flags %d
Offset %x / TableBase %x 
CAUTION:WAVE CACHE FULL %d
LOAD  Rom :%x -> Ram :%x  Len:%x
BASE %x %x
LOAD %x %x %x
INSTTOP    %x
INSTMAP[0] %x
already flags %d
already flags %d
ERR:SLOW BANK DMA BUSY
ERR:SLOW DMA BUSY
Check %d  bank %d
Cache Check
NO BANK ERROR
BANK %d LOADING START
BANK %d LOAD MISS (NO MEMORY)!
BANK %d ALREADY CACHED
Table  is none. Bank and Wave Reload
BANK LOAD MISS! FOR %d
Seq %d Loading Start
Heap Overflow Error
SEQ  %d ALREADY CACHED
Ok,one bank slow load Start 
Sorry,too many %d bank is none.fast load Start 
Seq %d:Default Load Id is %d
Seq Loading Start
Error:Before Sequence-SlowDma remain
      Cancel Seq Start.
SEQ  %d ALREADY CACHED
Clear Workarea %x -%x size %x 
AudioHeap is %x
Heap reset.Synth Change %x 
Heap %x %x %x
Main Heap Initialize
---------- Init Completed. ------------
Syndrv    :[%6d]
Seqdrv    :[%6d]
audiodata :[%6d]
---------------------------------------
Audio: setvol: volume minus %f
Audio: setvol: volume overflow %f
Audio: setpitch: pitch minus %f
Audio: voiceman: No bank error %d
Audio: voiceman: progNo. overflow %d,%d
Audio: voiceman: progNo. undefined %d,%d
Audio: voiceman: No bank error %d
Audio: voiceman: Percussion Overflow %d,%d
Audio: voiceman: Percussion table pointer (bank %d) is irregular
Audio: voiceman: Percpointer NULL %d,%d
--4 %x
Stoped Voice
CAUTION:SUB IS SEPARATED FROM GROUP
Error:Wait Track disappear
Slow Release Batting
@ 
Audio:Wavemem: Bad voiceno (%d)
Audio: C-Alloc : Dealloc voice is NULL
Alloc Error:Dim voice-Alloc %d
Error:Same List Add
Already Cut
Audio: C-Alloc : lowerPrio is NULL
Sub Limited Warning: Drop Voice
Warning: Drop Voice
Warning: Drop Voice
Warning: Drop Voice
Env-Clear 0
Audio:Envp: overflow  %f
Audio:Track:Warning: No Free Notetrack
SUBTRACK DIM
Audio:Track: Warning :SUBTRACK had been stolen by other Group
SEQID %d,BANKID %d
ERR:SUBTRACK %d NOT ALLOCATED
Error:Same List Add
Macro Level Over Error!
Macro Level Over Error!
WARNING: NPRG: cannot change %d
Audio:Track:NOTE:UNDEFINED NOTE COM. %x
Audio: Note:Velocity Error %d
Error: Subtrack no prg
ERR %x
Error: Your assignchannel is stolen
Audio:Track :Call Macro Level Over Error!
Audio:Track :Loops Macro Level Over Error!
SUB:ERR:BANK %d NOT CACHED
SUB:ERR:BANK %d NOT CACHED
Audio:Track: CTBLCALL Macro Level Over Error!
[%2x] 
Err :Sub %x ,address %x:Undefined SubTrack Function %x
Disappear Sequence or Bank %d
Macro Level Over Error!
Macro Level Over Error!
Group:Undefine upper C0h command (%x)
Group:Undefined Command

Messages For N64 Libraries

Found at 0x1255C0 and 0xB0D800 are several strings related to N64 libraries. Several of these strings exist in the original release of Super Mario 64, but many are unique to the 64DD version.

AUTOSEQ
AUTOBNK
STAYSEQ [%2x] <%5x / %5x>%2x \
STAYBNK [%2x] <%5x / %5x>%2x     
0123456789ABCDEF0123456789ABCDEF01234567
--------------------------------------------
SEQ %1x
BNK %1x
FIXHEAP %4x / %4x
DRVHEAP %5x / %5x
DMACACHE  %4d Blocks
CHANNELS  %2d / MAX %3d 
TEMPOMAX  %d
TEMPO G0  %d
TEMPO G1  %d
TEMPO G2  %d
DEBUGFLAG  %8x
COUNT %8d
Error : Queue is not empty ( %x ) 
specchg error
Opening Voice Canceled
Stage Change Start %d
ActiveCourse %d
ActiveLevel  %d
ActiveScene  %d
ActiveStage  %d
Second1 
Load 
Start
Second2 
Load 
Start
Second3 
Load 
Start
DAC:Lost 1 Frame
DMA: Request queue over( %d )
DMA [ %d lines] TIMEOUT
Warning: WaveDmaQ contains %d msgs
Audio:now-max tasklen is %d / %d
Audio:Warning:ABI Tasklist length over (%d)
AudioSend: %d -> %d (%d)
Undefined Port Command
mq != NULL
/io/viseteventcmodep != NULL
/io/visetmode.c
frameBufPtr != NULL
/io/viswapbuf.c
ASSERTION FAULT: 
(devAddr & 0x7) == 0
/io/sprawdma.c
((u32)dramAddr & 0x7) == 0
/io/sprawdma.c(size & 0x7) == 0
/io/sprawdma.c
(devAddr & 0x3) == 0
/io/sirawread.c
data != NULL
/io/sirawread.c
(devAddr & 0x3) == 0
/io/sirawwrite.c
data != NULL
/io/pirawread.c
((u32)dramAddr & 0x3) == 0
/io/sirawdma.c
data != NULL
/io/epirawread.c
NaNInf0
ReadMem @ %08x for %d
WriteMem
Long unaligned write
RCP write not an integral number of words
ListProcesses
LoadProgram
GetExeNameimemrmon
GetRegionCount
GetRegions
StopThreads %d
Couldn't stop thread %d
Couldn't stop thread %d
ListThreads
ThreadStatus %d 
method %d
StopThread %d
RunThread %d
SetFault
PANIC!!
SetComm
GetGRegisters
SetGRegisters
GetFRegisters
SetFRegisters
GetSRegisters
SetSRegisters
GetVRegisters
SetVRegs
Set temp BP at %08x and %08x
ClearTempBreak @ %08x
ClearTempBreak @ %08x
SetBreak at %08x, method %d* 
(%08x) = %08x (was %08x)
ListBreak
ClearBreak
SingleStep
Break %d in thread %d
HitBreak
Hit SP Break
HitCpuFault
Brk in thread %d @ %08x, inst %08x
rmon: Thread %d created
rmon: Thread %d destroyed
(devAddr & 0x3) == 0
/io/sprawwrite.c
(devAddr & 0x3) == 0
/io/sprawreadcdata != NULL
/io/sprawread.c