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

Spyro: Enter the Dragonfly

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Spyro: Enter the Dragonfly

Developers: Equinoxe[1], Check Six Studios[1]
Publisher: Universal Interactive
Platforms: PlayStation 2, GameCube
Released in US: November 4, 2002 (PS2) November 19, 2002 (GCN)
Released in EU: November 29, 2002

AreasIcon.png This game has unused areas.
CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.
MusicIcon.png This game has unused music.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.
Carts.png This game has revisional differences.

ProtoIcon.png This game has a prototype article
PrereleaseIcon.png This game has a prerelease article

This page sucks.
If you could make it suck less, that would be awesome.
Specifically: This page is still a mess of words and unsourced info.
To do:
  • Create a Bugs page, since the game is infamously broken.
  • Rip the actual unused Ripto texture and use that instead of a screenshot.
  • Research the rest of the map types in the "Level Select" debug menu.
  • More unused audio.
  • Add references throughout the article.
  • Plenty of stuff here from Ralf, including a debug menu.

Spyro: Enter the Dragonfly is not only the first home-console Spyro game developed by a studio other than Insomniac Games, but also the only game developed by both Check Six and Equinoxe. It had several major issues during development before its release in 2002.[1] The game is notorious for its many bugs, including one that allows you to skip the entire game and go directly to the final boss.


Read about prototype versions of this game that have been released or dumped.
Prototype Info
Read about prerelease information and/or media for this game.
Prerelease Info
Unused Dialogue

Debug Menus

The game has multiple debug menus, as shown below.

Cheat Menu

The cheat menu in-game.

This menu contains some cheats for navigating the level. Use the following code(s) to access them through the pause menu.

Version Code Notes
PS2 (USA) 002C73A8 000000?? Changes the pause menu into the debug menu.
PS2 (USA) 202C7A94 00000000 Enables the Level Select menu after the press start screen.

For the PS2 version, replace ?? with one of the following:

2D = Cheat Menu
23 = Level Select Menu
Cheat Effect
Fly Cheat Allows you to fly anywhere, like in the speedway minigames.
Return to Start Resets your position to the starting position of the level.
User Camera Mode Doesn't appear to do anything. Displays as "User C" on PS2.
Back Takes you to the pause screen. Is invisible, but still functional on PS2.
(Source: Punk7890 (PS2))
The cheat menu as it appears on PS2.

Level Select

Spyro- Enter the Dragonfly (PlayStation 2)-lvlselect.png

Allows you to select any level in the game, including demos and end credits.


Levels with the prefix "STILL" are still images from various loading screens. Curiously, the still paired with "DEMO 3 - CCC PLATFORM" is an image of Cloud 9.

The start menu behaves slightly differently while on these levels; menu sounds do not play and button icons do not render. The Atlas option simply closes the menu, and choosing Exit Level causes the game to softlock. Choosing Quit Game functions normally.


Levels with the prefix "MOVIE" are cutscenes. The intro and outro cutscenes are split in two, and playing the first cutscene of a pair will automatically follow up with the second. Playing the outro cutscene will also trigger the credits once the outro completes.

Secret Credits

A screenshot of the secret credits.

On the first page of the Atlas, press Circle, D-Pad Up, Circle, Circle, D-Pad Up. This will reveal the secret credits in the back of the Atlas, which includes a list of people who left the development team before the game was finished.

Leftover MAP Files

Present in the root directory of the PS2 version is a leftover linker address map (with the same name as the executable) that contains some original sources.

Download.png Download SLUS_203.15.MAP Linker Address Map
File: Spyro ETD NTSC-U PS2 Map.7z (653 KB) (info)

Early Level Data

Dragonfly Dojo

The level "Dragonfly Dojo" had several name changes and redesigns throughout development. Trees found in the hub refer to a level called "Sparx Pond" which actually turns out to be the original name for Dragonfly Dojo.[2] There are some remnants from this design phase, such as the letters "SP" in the name of textures for sand, palm trees, and leaves.

Luau Island

The level "Luau Island" was originally called "Dragon Keys" as evidenced by an early piece of the script where an NPC asks Spyro to obtain a Rubber Ducky from Dragon Keys. Also, this level was supposed to have a Dragonfly Chest as shown by the chest in Monkey Monastery with "Luau Island" in its name. The appearance of that chest is identical to how it would look in Luau Island.

Monkey Monastery

This level underwent multiple large revisions. The earliest mention of this level is in some unused text in the pre-release, which refers to the level as "Monkey Monk Mountains", whereas in early Atlas text it's called "Monkey Monk Monastery". This name is also seen in most of the final game's code, where it is abbreviated "MMM". These changes could have been made either to make the name closer to the series tradition of two-word level names, or just to make the name less repetitive.

#Monkey Monk Monastery
	{0.1 0.48 Text 364 24}
	{0.9 0.48 PageLink 11}
Page 11
	#Monkey Monk Monastery
	{0.1 0.1 Text 364 24}
	{0.5 0.4 Image "icon_at_mmm.mrb" 22}
	{0.1 0.8 LevelField 1 Completion }

Code for the Atlas entry referring to the level as Monkey Monk Monastery.

Unused Textures

Some unused textures can be found within the game's levels.

GS8P7D a32789cd 14.png GS8P7D 888916d7 14.png

A couple of basic patterns.

EnterTheDragonfly UnusedRiptoTextures.png

Unused textures for Ripto.

Unused 3D Text Characters

EtDA-L3D.jpg EtDM-Z3D.jpg

A complete alphabet of 3D letters is fully modeled. Some of them are not seen in the final game.


Models for just about every symbol on a standard keyboard are also present. The only ones used in-game are . and : for the timers.

Spyro4unusedbuttons native.png

There are models for the buttons on a PlayStation controller, but only the Triangle one is used (and with a different design than the others). All four models are also present in the GameCube version.

Unused Sounds

Early Breath Sounds

Earlier versions of the breath sounds, which were redone in part to remove significant crackling.

Flame Breath

Early Final
File Name Audio File Name Audio

Ice Breath

Early Final
File Name Audio File Name Audio

Electric Breath

Early Final
File Name Audio File Name Audio

Unused Music


Most likely would have been the main theme for Enchanted Forest, considering its place on the audio CD.


Likely intended for a Speedway minigame within Enchanted Forest, considering its BPM and place on the audio CD.


Most likely supposed to be used for the other minigame in Enchanted Forest.


Pirates can be heard playing within two unused clips as well as within a short unused 25-second audio file in the final game. This track would've been part of a removed level known as "Cutthroat Cove" due to the name "Pirates" matching the theme of the level. Although the full song wasn't included in the final game or the game's soundtrack, it was made available with the other unused tracks by Mr. FO1's YouTube post.


Exclusive to the GameCube version: a list of bugs that were apparently going to be fixed.

Date Assigned To Description Reported By Priority Status Comments
5/22/2001 Jimmy Real time Shadows to be implemented Joel 1 Open Currently working on it
5/22/2001 Jimmy Rotate Scaled sprites to be reimplemented Joel 1 Open
7/17/2001 Warren In monkey monk when spyro jumps of a ledge, allot of times he does not glide Alex

Development Text


Present exclusively in the GameCube version in the root directory:

del *.hdl
del *final.txt
del *initial.txt


A .txt file - named "atlas.txt" in the GameCube version - contains a bit of info regarding the game.

# You should have at least 4 pages, and an even number of them.
# Every page should only be linked-to once, because the linking
# page will be used as the return page.

# Each tag number should be unique when it is used to indicate
# the color of the text to be displayed (Text, Goal, Image).

# For a text to highlight, when it is an option, make its flag the Pagelink number
# For a text to be bigger, make its flag 0
# For a text to be smaller, make its flag 99

# Level links will be activated only upon a certain code-activated flag

# Color? Greyed, highligted, darkened
# Flags (Atlas specific)

#	{	x y	tag-type ... }

# HUD Images
# types : 1/Gem 2/Dfly 3/fire 4/ice 5/lightning 6/bubble
#	{	x y	HUDImage type	 <scale> }
# Dragonfly linked to a collection flag 0 200
#	{	0.3 0.61	HUDImage 0	0 200	0.1 }

# I know that you can specify level text files in the level definitions
# but please don't change the corresponding levels, because it is now
# hardcoded in the system that level 0 through 7 are the game levels
# and level 8 is the hub, and if you change that, stuff is gonna go
# haywire.

The rest of the file is miscellaneous code.

Error Messages

A variety of colorful messages can be seen inside start.dol. Many of these are also found in the PS2 version:

c6Texture::PreLoadTextures() Oh crap! I forgot to set that pointer to the sublevel memory context.
c6Texture::PreLoadTextures() Crucify the programmer the screwed this up.
c6Texture::PreLoadTextures() You broke my code. You suck.
Hey! Your %s and PXTs dont match! You're gonna get hosed if you try to use this texture
RESOLVED TEXTURE %d (fileid=%d)
c6Texture::LoadPlatformTexture() ERROR: Unsupported filesystem. You must choose a file system before you load textures.
c6Texture::ResolveTextureAddresses() entry
c6Texture::PreLoadTextures() Unsupported filesystem. You must choose a file system before you load textures.
c6Texture::ResolveTextureAddresses() resolving
Dude! Your %08X.PXT and PXHs dont match! You're gonna get hosed if you try to use this texture
c6Texture::ResolveTextureAddresses() success
c6Texture::LoadTextures() Unsupported filesystem. You must choose a file system before you load textures.
c6Texture::PreLoadTextures() Uh Oh! I was expecting that to be NULL but it isn't.
c6Texture::LoadPSX2Textures() Too many textures: %d is greater than %d
c6Texture::LoadPlatformTextures() entry
c6Texture: The memory context is NULL
c6Texture: Tried to allocate %d bytes of memory
c6Texture: the .CFG did not specify enough %s memory
CScreenFont2D::ParseKerning() couldn't get token %d
CScreenFont2D::ParseUVCoords() couldn't read character number (token %d)
CScreenFont2D::ParseUVCoords() couldn't get token (uvcoord %d, token %d)
CScreenFont2D::ParseUVCoords() couldn't get "END" token
CScreenFont2D::LoadFontData() failed to load %s
CScreenFont2D::Load() Error: could not parse UV coordinates.
CScreenFont2D::Load() Error: could not parse Kerning.
CScreenFont2D::LoadFontTexture() falied to load %s
CScreenText2D::Render_NormalText() go ahead, acid test my code, I dare you!
CScreenText2D::DrawTextComputeBoundingRect() you are a jerk!
 Try initizing the pointers.
CScreenText2D::DrawText() evil fiend, you didnt initialize the pointers!
CScreenText2D::Render() nice try punk ass!
 Now read my comments and initialize the pointers correctly.
Couldn't find specified AGR for Weapon (Type = %d)!!!
WARNING: Two instances of same Spyro Weapon encountered! (%s)
Failed test (%s): outside maximum yaw range (%3.3f,%3.3f)
%s, Failed test (%s): no target located
%s, Failed test (%s): inside minimum target range (%3.3f,%3.3f)
%s, Failed test (%s): outside maximum target range (%3.3f,%3.3f)
Please check your exit state flows for the conversation state. Exiting conversation prematurely!
Size of Scene Memory %d bytes 
Could Not Allocate Scene Memory: Level does not exist
Collide With NonPlayer Entites::UNKNOWN COLLISION TYPE!!
******* Fix me!!! More than %d non-player entities in Spyro_BSPManager!!!
Spyro_ProgressBar::UpdateProgress() You suck
ERROR!!!  InitializeFromPriorEntity should never be called for a MINIGAME ARBITRATOR!!!
J U K E B O X   D I A G N O S T I C S 
%d %s   %d %d %d %d %d    %d %d %d %d
Stream: %x 
%d %s (%s%s%s%s%s%s) -> %d %s
NOTIFY: Used=%d Free=%d Max=%d Peak=%d
T E S T  6  %d
C A L L B A C  K   1  %d
JukeBox_UnitTest7() starting stream 
Pausing Stream 
nPausing Stream 
JukeBox_UnitTest91() restarting stream 
Stopping Stream 
PS2_JukeBox::ForceRecomputeAllSoundVolume() I doubt it will ever happen. -- Paul 7-10-2002
PS2_JukeBox::ForceRecomputeAllSoundVolume() crap what the hell is it?
PS2_JukeBox:: I don't think you are ever going to play a voice over durring the menu! -- Paul 7-10-2002
cn.pSoundTransform != NULL
cn.pSoundTransform == NULL
JUKE BOX ERROR: Unknown Special case, suspect this will never happen.
PLAY SOUND: %d is not in sound list
NGC_JukeBox::PlaySound()  THIS SOUND IS STREAMING %d %s 
voiceDrop()   D R O P P E D   %d
D A N G E R !   D A N G E R !  JUKE BOX FATAL ERROR:  %s sound handle %d is out of range.
JUKE BOX FATAL ERROR: %s sound handle %d not a valid sound
Sound handle %d is invalid. You can not stop a sound using an invalid handle.
StopSound() The is already stopped.
StopSound() marking sound dead %d
NGC_JukeBox::Update() Audio Message  %d Not Supported
NGC_JukeBox::Begin() ERROR sound samples are not loaded
NGC_JukeBox::Begin() ERROR: could not open file %s
NGC_JukeBox::Begin() ERROR: Invalid Audio Assets 
NGC_JukeBox::Begin() ERROR: Expected Audio assets version %d.  Do not know how to load verion %d. 
JukeBox_InitSoundTable() ERROR: sound table is NULL
NGC_JukeBox::Begin() guessing this is music....
... Sound Id = %d, asset = %s
NGC_JukeBox::Begin() found more than one Stereo Streaming Interleaved sound...
 ... don't know if it is supposed to be music. 
NGC_JukeBox::Begin() ERROR: could not guess which Sound Id was supposed to be music
JukeBox_LoadAudioAssets() ERROR: could not open file %s
Audio file size = %d
DMASync(): DMA Address out of range.
Gen_JukeBox::ComputeSoundVolume() Head Transfom is NULL
Gen_JukeBox::ComputeSoundVolume() 3D Sound Transfom is CallbackThis_ARQPostRequest_FillStream() Starting Stream 
CallbackThis_ARQPostRequest_FillStream() ERROR no voice 
DVD  D O N E   W I T H  F I L L  
NGC_AudioStream::StartStream() LOOP IS ON
NGC_AudioStream::StartStream() LOOP IS OFF
StartStream() Loading file 
StartStream() Starting Stream 
Cannot open %s
%s:	 %s 
NGCApplication: initializing the Juke Box
NGCApplication: The NGC Juke Box is initialized
Protecting stack...
Stack: 0x%8.8x down to 0x%8.8x
NGC Main should never exit
ERROR: FUNCTION IS OBSOLETE: bool c6FileSystem::Init( c6s8* filename, bool bUseHost /*= false*/, bool bFlatFileSystem /*= false*/, bool bIOPFileSystem /*= false */ )
USE INSTEAD: bool Init( c6s8* filename /*= NULL*/, c6u32 nType /*= FILESYSTEM_HOST*/ )
ERROR: c6FileSystem::Init() Hierarchical Filesystem is not supported
M E M C A R D   T R A N S I E N T   E V E N T S
Spyro_World: No cameras found in scene
Crap! CACMApplication::InitFileSystem() the levelFileName is NULL
ERROR: Could not initialize H O S T  File System.
ERROR: Could not initialize H O S T  File System.
ERROR: Unknown File System Type.
ERROR: Unknown File System Type.
ERROR: Could not initialize Chunk File System.
ERROR: Could not initialize Chunk File System.
%s Allocated %i	of %i %c%c
%s Allocated %i	of %i 
FILE: %s  DESC: %s
%c%cTotal Memory Used %i of %i Allocated %c%c
Total Memory Used %i of %i Allocated
Total Memory = %d: %d bytes for handles: Anim = %d, Mesh = %d
ERROR: CSpyroApplication::ParseFileSystem() FileSystem must be either Host, Flat, or Iop