Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Super Mario 64 (Nintendo 64DD)

From The Cutting Room Floor
Jump to: navigation, 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.


We could only wish we were playing this right now... maybe...
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 reached store shelves.

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. It was displayed on a 64DD demo unit at the Nintendo Shoshinkai 1996 show.

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/JP release counterparts that store each sound effect only once.

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

Hmmm...
To do:
Upload audio for "Bye-Bye!" sound effect.

Classic Debug Display

Version GameShark Code
Disk 804A7768 0059

Debug Resource Meter

Version GameShark Code
Disk 804A7764 0001

Debug Spawn

Version GameShark Code
Disk 804AAC54 0038
804B7C8F 0001

Complex Debug Display

Version GameShark code
Disk 8033BEF3 0001
D0339C30 0008
8032FF34 0001
D0339C30 0001
8032FF34 0002
D0339C30 0004
8032FF34 0003
D0339C30 0002
8032FF34 0004
D0339C31 0020

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 an unknown Nintendo employee, probably one of the programmers.

SM64DD picture5.pngSM64DD picture6.png

A couple of renders from Mario Kart 64.

(Source: Kobosuke, eientei95, LuigiBlood, etc.)

Differences from N64 Release

Audio Differences

The Nintendo 64 version of Super Mario 64 contains 35 audio sequences used for music. There are 36 sequences in the 64DD version, with the extra sequence containing an alternate introduction with a slightly-modified jingle. This jingle is used in the PAL release.

N64 Intro 64DD Intro

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

Nintendo 64 Nintendo 64DD

Text Differences

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.

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 add-on.

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