the cutting room mirror

Diddy Kong Racing DS

This article has a talk page!
view on tcrf.net

Possible Debug Menu And Test Maps#

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: See if it's still possible to access these, check other regions, USA for sure has it.

Present in the game directory are a number of files with names that suggest a debug menu along with some test maps are present in the game.

  • ARTUROTESTLEVEL.lev
  • BENTESTLEVEL.lev
  • LEVEL_DEBUG_MENU.lev
  • LEVEL_DWC_TEST.lev
  • LEVEL_MB_TEST.lev
  • LEVEL_TEXT_MENU.lev
  • ROBTESTLEVEL.lev
  • SFXTESTLEVEL.lev
  • TREVTESTLEVEL.lev
  • wish_race_test.lev

ROBTESTLEVEL.lev#

ROBTESTLEVEL.lev seems to be the only test map that still contains track model data in assets.bin. However, its collision is faulty, as most of the road geometry is treated as walls and cannot be driven on.

Watch on YouTube

(Source: Atlas)

Unused Sprites#

T.T. Frame#

Files with IDs 09B3 and 09B4 from assets.bin respectively form the top and bottom of an unused frame that depicts T.T., using file 09B2 (also unused) as its palette data.

(Source: Atlas)

Early Menu Buttons#

DKRDS_Early_Adventure_Button.pngDKRDS_Early_Adventure_2_Button.pngDKRDS_Early_Sound_Settings_Button.pngDKRDS_Early_Battle_Button.pngDKRDS_Early_Title_Button.pngDKRDS_Early_Item_Mode_1_Button.pngDKRDS_Early_Item_Mode_2_Button.pngDKRDS_Early_Multi-Card_Mode_Button.pngDKRDS_Early_Single-Card_Mode_Button.pngDKRDS_Early_New_Button.pngDKRDS_Early_Locked_Option_Button.pngDKRDS_Early_Control_Options_Button.pngDKRDS_Early_Coin_Challenge_Race_Button.pngDKRDS_Early_Share_Data_Button.pngDKRDS_Early_Single_Player_Button.pngDKRDS_Early_Single_Race_Button.pngDKRDS_Early_Token_Tussle_Button.pngDKRDS_Early_Trophy_Race_Button.pngDKRDS_Early_WFC_Game_Button.pngDKRDS_Early_Wish_Race_Button.pngDKRDS_Early_Debug_Mode_Button.pngDKRDS_Early_Unknown_Mode_Button.png

File with ID 0CCD from assets.bin contains unused early buttons for the main menu.

(Source: Atlas)

Forest Background#

Files with IDs 0817, 0818, 0819 and 081A from assets.bin form a background tile layout of what appears to be some kind of forest area. The final image resolution implies the image is supposed to be split to be displayed in both of the DS's screens. It looks similar to the character selection screen from the original game, so it may have served the same purpose here.

(Source: Atlas)

Unused Emotes#

To do:
Find a way to export the animations to GIF or load them and record in-game.

DKRDS_Drumstick_Angry_Emote.pngDKRDS_Drumstick_Laughing_Emote.pngDKRDS_Drumstick_Sad_Emote.png DKRDS_Wizpig_Angry_Emote.pngDKRDS_Wizpig_Laughing_Emote.pngDKRDS_Wizpig_Sad_Emote.png DKRDS_Taj_Angry_Emote.pngDKRDS_Taj_Laughing_Emote.pngDKRDS_Taj_Sad_Emote.png

Animated emote/reaction sprites for the unlockable characters Drumstick (IDs 0C09, 0C0A, 0C0B), Wizpig (IDs 14CC, 14CD, 14CE) and Taj (IDs 14D0, 14D1, 14D2) when they are hit, they hit you or you overtake them are present and loaded in the game, but ultimately never used since these require offline opponents to use these characters, which they never do.

(Source: Atlas)

Unused Sounds#

Yoshi#

Two voice clips of Yoshi, likely leftover from a devkit as they're at a much higher bitrate than the rest of the character voices.

Jingle#

An unused jingle.

(Source: Ferrox)

DK Island#

An announcer clip for DK Island. Presumably the four DS-exclusive tracks were originally intended to have their own sub-area in Adventure Mode, and this clip would have been used upon entering.

Unused Music#

This song was used in the original game during the cutscene that plays when you defeat Wizpig in Future Fun Land but isn't used here.

(Source: Ferrox)

Inaudible Notes#

Some of the sequenced songs contain note data, which are not played because either the respective sample is missing or the respective instrument is missing its setup in the sound bank.
Unlike certain other cases, this may be intentional in order to save storage space or to remove instruments as a finishing touch without having to convert the MIDI files again.

Darkmoon Caverns#

Used

With reactivated instruments

Darkmoon Caverns contains the most unused notes. These are many additional percussion notes, some of which were present in the Nintendo 64 version.

Hidden Triangles#

Outside the level boundaries of Walrus Cove are two blue triangles which cannot be seen normally.

(Source: Ferrox)

Crash Debugger#

If the game crashes, it will display a simple crash debug screen.

(Source: Ferrox)

Debugging Text#

Present at 0x149388 in the ROM is some wifi-related text along with the text for the crash debugger.

ArrayNth
ArrayNew
ArrayFree
ArrayGrow
ArrayAppend
ArrayRemoveAt
ArrayDeleteAt
ArrayInsertAt
ArrayReplaceAt
ArrayMapBackwards
ArrayInsertSorted
ArrayMapBackwards2
array->list darray.c
array
elemSize
(n >= 0) && (n < array->count)
(n >= 0) && (n <= array->count)
comparator
fn
TableNew2
TableFree
TableEnter
TableCount
TableRemove
TableLookup
TableMapSafe
TableMapSafe2
hashFn
hashtable.c
compFn
elemSize
nBuckets
table
table->buckets
fn%02x
time
current_time
OS_IsTickAvailable()
TRUE
nonport.c
localhost
gpGetBuddyStatus
Invalid func.
No callback.
The connection has already been disconnected.
Invalid reason.
\addbuddy\
\sesskey\
\newprofileid\
\reason\
\final\
Invalid status.
Invalid index.
buddyStatus gp.c
Invalid statusString.
Invalid locationString.
\status\
\statstring\
\locstring\
Invalid message.
gpiProcess
*************gpiInitialize
CM
There was an error reading from the server.
\final\
CMD: %s
Out of memory.
\id\
No matching operation found for id %d
\bm\
\ka\
Received an unrecognized, unsolicited message.
The server has closed the connection.
(iconnection->connectState == GPI_NOT_CONNECTED)
(iconnection->connectState == GPI_CONNECTING)
(iconnection->connectState == GPI_NEGOTIATING)
(iconnection->connectState == GPI_CONNECTED)
(iconnection->connectState == GPI_DISCONNECTED)
gpi.c
gpiDeleteBuddy
\authadd\
\sesskey\
\fromprofileid\
\sig\
Unexpected data was received from the server.
\f\
\date\
Out of memory.
\msg\
|signed|
|s|
|ss|
|ls|
|ip|
|p|
|l|
\t\
Invalid profile.
\delbuddy\
\delprofileid\
index >= 0
gpiBuddy.c
iconnection->profileList.numBuddies >= 0
gpiRecvToBuffer
gpiSendFromBuffer
gpiSendOrBufferChar
gpiAppendCharToBuffer
gpiSendOrBufferStringLen
gpiAppendStringToBufferLen
outputBuffer != NULL
gpiBuffer.c Out of memory.
string != NULL
stringLen >= 0  %d
There was an error sending on a socket.
SENDXXXX(%s): Connection closed
peer->outputBuffer.buffer != NULL
PT  sock != INVALID_SOCKET
inputBuffer != NULL
bytesRead != NULL
connClosed != NULL
There was an error reading from a socket.
RECVXXXX(%s): Connection closed
RECVTOTL(%s): %d
len >= 0
pos >= 0
pos <= len
\msg\
\m\
\len\
gpiCallCallback
gpiCallErrorCallback
iconnection != NULL
gpiCallback.c
result != GP_NO_ERROR
(fatal == GP_FATAL)
(fatal == GP_NON_FATAL)
Out of memory.
data->callback.callback != NULL
data->arg != NULL
gpiStartConnect
gpiCheckConnect
gpcm.gs.nintendowifi.net
There was an error creating a socket.
There was an error making a socket non-blocking
There was an error binding a socket.
There was an error listening on a socket.
There was an error getting a socket's addres.
Could not resolve connection mananger host name.
address.sin_addr.s_addr != 0
gpiConnect.c
There was an error connecting a socket.
Invalid connection
Invalid firewall.
Out of memory. %s@%s %s%s%s%s%s%s
\login\
\challenge\
\authtoken\
\uniquenick\
\user\
\userid\
\profileid\
\response\
\firewall\1
\port\
\productid\
\gamename\
\namespaceid\
\id\1
\final\
\newuser\
\email\
\nick\
\passwordenc\
\cdkeyenc\
\pid\
\fatal\
\lc\1
Unexpected data was received from the server.
\nur\
\lc\2
\sesskey\
\lt\
\proof\
Could not authenticate server.
The server has refused the connection.
state == GPI_CONNECTED
\logout\
\sesskey\
CM
gpiIntToDate
gpiProcessGetInfo
gpiInfo.c
Invalid date.
gpiIsValidDate(d, m, y)
\pi\
\profileid\
profileid > 0
\nick\
\uniquenick\
\email\
\firstname\
\lastname\
\icquin\
\homepage\
\zipcode\
\countrycode\
\lon\
\lat\
\loc\
\birthday\
\sex\
\pmask\
\aim\
\pic\
\occ\
\ind\
\inc\
\mar\
\chc\
\i1\
\o1\
\conn\
\sig\
\updatepro\
\sesskey\
\final\
\updateui\
Invalid zipcode.
Invalid sex.
\cpubrandid\
\cpuspeed\
\memory\
\videocard1ram\
\videocard2ram\
\connectionid\
\connectionspeed\
\hasnetwork\
Invalid info.
Invalid value.
\password\
Invalid countrycode.
\videocard1string\
\videocard2string\
\osstring\
\getprofile\
\sesskey\
\id\
gpiDestroyOperation
gpiFailedOpCallback
gpiProcessOperation
connection != NULL
gpiOperation.c
*connection != NULL
operation != NULL
iconnection->numSearches >= 0
gpiProcessOperation was passed an operation with an invalid type (%d)
gpiRemovePeer
gpiProcessPeer
gpiPeerAddMessage
gpiPeerStartTransferMessage
gpiPeerFinishTransferMessage
gpiProcessPeerAcceptingConnection
gpiProcessPeerInitiatingConnection
Error connecting to a peer.
\auth\
\pid\
\nick\
\sig\
\final\ PR
\anack\
Error getting buddy authorization.
\aack\
Error parsing buddy message.
gpiPeer.c
peer->state == GPI_PEER_WAITING %s%d%d
peer->state != GPI_PEER_NOT_CONNECTED
peer != NULL
Tried to remove peer not in list.
There was an error creating a socket.
There was an error making a socket non-blocking.
There was an error connecting a socket.
message != NULL
\m\
\len\
\msg\
transferID \m\%d\xfer\%d %u %u
\len\%d\msg\
gpiProfileListAdd
\npr\
Unexpected data was received from the server.
\profileid\
id > 0
gpiProfile.c
gpiProcessSearch
gpiProcessSearches
gpiStartProfileSearch
gpsp.gs.nintendowifi.net
Could not resolve search mananger host name.
address.sin_addr.s_addr != 0
gpiSearch.c
No search criteria.
Could not connect to the search manager.
\search\
\sesskey\
\profileid\
\namespaceid\
\nick\
\uniquenick\
\email\
\firstname\
\lastname\
\icquin\
\skip\
\valid\
\nicks\
\pass\
\pmatch\
\productid\
\check\
\newuser\
\productID\
\cdkey\
\others\
\uniquesearch\
\preferrednick\
\gamename\
\final\
There was an error reading from the server.
bsrdone more
bsr nick
uniquenick
firstname
lastname
email
Error reading from the search server.
vr
nr
ndone
psrdone
psrstatus
statuscode
cur
\pid\
nur
others
odone
first
last
us
usdone
count == arg->numSuggestedNicks
num < iconnection->numSearches
\version\%d\result\%d
\xfer\  %d %u %u
\rn\
strzcpy
gpiValueForKey
gpiReadKeyAndValue
dest != NULL
gpiUtility.c
src != NULL
\error\
\err\
\errmsg\
\fatal\
command != NULL
key != NULL
value != NULL
len > 0
Error connecting
There was an error checking for a completed connection.
Connection rejected
Connection accepted
buffer != NULL
Parse Error.
DoFind
BucketNew
BucketConcat
set gbucket.c
pbucket->type
bt_string
ameSpy3D
projectAphex
pauthr
lid
errmsg
getpidr
getpdr
pid mod length
\data\
setpdr
\pauthr\
\getpidr\
\getpdr\
\setpdr\
%s_t%d  %s_%d
gti2GetChallenge
3b8dd8995f7c40a9a5c5b7dd5b481341
buffer
gt2Auth.c
gti2BufferShorten
gti2BufferWriteData
gti2BufferWriteByte
gti2BufferWriteUShort
buffer->len
buffer->size
gt2Buffer.c
(buffer->len + 2) => buffer->size
(buffer->len + len) <= buffer->size
start <= buffer->len
shortenBy <= (buffer->len - start)
gti2DumpCallback
gti2PingCallback
gti2ClosedCallback
gti2ReceivedCallback
gti2ConnectedCallback
gti2SendFilterCallback
gti2SocketErrorCallback
gti2ReceiveFilterCallback
gti2ConnectAttemptCallback
gti2UnrecognizedMessageCallback
gt2Callback.c
gt2SetConnectionData
gt2GetConnectionData
gt2Main.c
gti2EndReliableMessage
time
len > 0 gt2Message.c
gt2StringToAddress
%s:%d   %s  :%d
len < GTI2_STACK_HOSTLEN_MAX
gt2Utility.c
%s.%s
natneg1.gs.nintendowifi.net
natneg2.gs.nintendowifi.net
%s.master.gs.nintendowifi.net
No challenge value was received from the master server. %d
255.255.255.255
%08X%04X
unknown
%s%d
final\\queryid\1.1
localip%d
localport
natneg
statechanged
gamename
publicip
publicport
pid_
ping_
team_
score_
team_t
skill_
groupid deaths_
gamever player_
score_t
mapname
gamename
hostport
password
gametype
numteams
gamemode
teamplay
hostname
fraglimit
timelimit
roundtime
numplayers
maxplayers
gamevariant
timeelapsed
roundelapsed
teamfraglimit
rom N/A
WM_STATECODE_MP_IND
WM_STATECODE_DCF_IND
WM_STATECODE_MP_START
WM_STATECODE_CONNECTED
WM_STATECODE_MPEND_IND
WM_STATECODE_MPACK_IND
WM_STATECODE_DCF_START
WM_STATECODE_PORT_SEND
WM_STATECODE_PORT_RECV
WM_STATECODE_FIFO_ERROR
WM_STATECODE_SCAN_START
WM_STATECODE_BEACON_SENT
WM_STATECODE_BEACON_LOST
WM_STATECODE_BEACON_RECV
WM_STATECODE_REASSOCIATE
DWCi_MOV_WH_SYSSTATE_STOP
DWCi_MOV_WH_SYSSTATE_IDLE
WM_STATECODE_PARENT_START
WM_STATECODE_PARENT_FOUND
WM_STATECODE_DISCONNECTED
DWCi_MOV_WH_SYSSTATE_BUSY
WM_STATECODE_DISASSOCIATE
WM_STATECODE_AUTHENTICATE
DWCi_MOV_WH_SYSSTATE_ERROR
WM_STATECODE_CONNECT_START
WM_STATECODE_PARENT_NOT_FOUND
DWCi_MOV_WH_SYSSTATE_SCANNING
DWCi_MOV_WH_SYSSTATE_CONNECTED
DWCi_MOV_WH_SYSSTATE_KEYSHARING
DWCi_MOV_WH_SYSSTATE_DATASHARING
DWCi_MOV_WH_SYSSTATE_CONNECT_FAIL
DWCi_MOV_WH_SYSSTATE_MEASURECHANNEL
DWCi_MOV_WH_SYSSTATE_IDLE
DWCi_MOV_WH_Finalize, state = %d
DWCi_MOV_WH_StepDataSharing - Warning No Child
DWCi_MOV_WH_StepDataSharing - Warning No DataSet
recv buffer size = %d
send buffer size = %d
unknown connect mode %d
DWCi_MOV_WH_StateInStartChildKeyShare failed
DWCi_MOV_WH_StateOutStartChildMP
WM_StartDataSharing OK
unknown indicate
state = %d
Connect to Parent
DWCi_MOV_WH_StateInStartChildMP
failed Disconnected from Parent
unknown state %d, %s
DWCi_MOV_WH_StateInStartChild : already connected?
DWCi_MOV_WH_StateOutSetChildWEPKey : startchild failed
DWCi_MOV_WH_StateInEndParent failed %s ->   %s
Alloc Failed (ID %d)
Why: Heap Corruption!
Why: Ran out of memory! Req: %db [%dkb] Avail: %db [%dkb]
Why: Unknown!

(Source: Ferrox)

Unused Text#

An unused placeholder copyright message.

Placeholder copyright message

(Source: Ferrox)

References#


  1. MobyGames↩︎