the cutting room mirror

The Legend of Zelda: Collector's Edition

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

The Legend of Zelda: Collector's Edition is a collection of the two NES titles (The Legend of Zelda and Zelda II: The Adventure of Link) and the two Nintendo 64 titles (Ocarina of Time and Majora's Mask), as well as a 20-minute demo of The Wind Waker.

Unfortunately, the emulation quality prevents this from being an ideal way to play the games, with Majora's Mask in particular suffering from constant freezing issues that were not present in the original N64 game, sometimes leading to full-on lockups (which, due to the original game's quicksave feature, makes the journey much more difficult). In addition, the ending cutscene for Ocarina of Time was made into a 450 MB pre-recorded video file, since the music would get de-synchronized as a result of the slowdown being different in the emulator (later releases would instead correct this by patching the cutscene timings directly).

As an interesting aside, this is also the first game released in PAL territories to completely ditch 50Hz support, and one of only three GameCube games to do so (the others being Metroid Prime 2: Echoes and Geist).

Hidden Banner and Text#

The tgc disc images USA_NES_ZELDA1.tgc, USA_NES_ZELDA2.tgc, JPN_JPN_ZELDA0.tgc, and JPN_JPN_ZELDA2.tgc; for The Legend of Zelda and The Adventure of Link actually contain their own banners and text for the GameCube menu. The text is rather crude, so they most likely weren't meant to be visible, as the disc images for Ocarina of Time and Majora's Mask lack any info. The banners themselves are still used on the save files for the respective games. The text for Adventure of Link is actually too long and gets cut off. It should end with "adventure some quest yet..."

The Legend of Zelda

The Adventure of Link

The Japanese Zelda Collection still has a banner with text for both games, but for some bizarre reason uses the name and copyright for The Adventure of Link and text describing The Legend of Zelda for both. The banner itself also has a different design, possibly an earlier version. The text is slightly different, written in all-caps English and has less pretty formatting.

The descriptions for the Japanese disc images are actually much longer and contain the text for The Adventure of Link! At least, what seems to be left of it, anyway.

AFTER GANON WAS DESTROYED, LINK SET OUT ON HIS
MOST ADVENTURES

(Source: Original TCRF research)

Hidden Credits#

Zelda-CE-MM-HiddenCredits.png

Majora's Mask contains hidden credits for the emulator developers. The screen can be accessed with the following button code while holding L + R + Z and using D-pad for the directions:

  • Up, Up, Down, Down, Left, Right, Left, Right
  • X, Y, B, A
  • Up, Left, Down, Right
  • A, Start

Pressing B will close the screen and resume the game.

(Source: Yanis)

Debug Text#

The game has a ludicrous amount of debugging and SDK messages, such as references to N64 accessories. Due to the game's structure, they are duplicated multiple times throughout the filesystem.

Development Text#

Ocarina of Time#

80137A58        ENTRY-LO0
80137A64        ENTRY-LO1
80137A70        PAGE-MASK
80137A7C        (RESERVED-7)
80137A8C        BAD-VADDR
80137A98        ENTRY-HI
80137AA4        WATCH-LO
80137AB0        WATCH-HI
80137ABC        X-CONTEXT
80137AC8        (RESERVED-21)
80137AD8        (RESERVED-22)
80137AE8        (RESERVED-23)
80137AF8        (RESERVED-24)
80137B08        (RESERVED-25)
80137B18        CACHE-ERROR-EPC 
80137B30        (RESERVED-31)

80137BC0        FCR1 (RESERVED)
80137BD0        FCR2 (RESERVED)
80137BE0        FCR3 (RESERVED)
80137BF0        FCR4 (RESERVED)
80137C00        FCR5 (RESERVED)
80137C10        FCR6 (RESERVED)
80137C20        FCR7 (RESERVED)
80137C30        FCR8 (RESERVED)
80137C40        FCR9 (RESERVED)
80137C50        FCR10 (RESERVED)
80137C64        FCR11 (RESERVED)
80137C78        FCR12 (RESERVED)
80137C8C        FCR13 (RESERVED)
80137CA0        FCR14 (RESERVED)
80137CB4        FCR15 (RESERVED)
80137CC8        FCR16 (RESERVED)
80137CDC        FCR17 (RESERVED)
80137CF0        FCR18 (RESERVED)
80137D04        FCR19 (RESERVED)
80137D18        FCR20 (RESERVED)
80137D2C        FCR21 (RESERVED)
80137D40        FCR22 (RESERVED)
80137D54        FCR23 (RESERVED)
80137D68        FCR24 (RESERVED)
80137D7C        FCR25 (RESERVED)
80137D90        FCR26 (RESERVED)
80137DA4        FCR27 (RESERVED)
80137DB8        FCR28 (RESERVED)
80137DCC        FCR29 (RESERVED)
80137DE8        FCR30 (RESERVED)

80138344        start=%p, end=%p (%d) (size: %d)
80138368        tree range (%p - %p)
80138380        total nodes: %d (tree height: %d %d)
801383A8        total memory: %d

801384D0        _cpuGCN.c

80138C3C        ERROR in cpuNextInstruction() with opcode %p at %p
80138C70        CALLED: ceil_w single (%p)
80138C8C        CALLED: floor_w single (%p)
80138CAC        ERROR: CVT_S_S
80138CBC        CALLED: ceil_w double (%p)
80138CD8        CALLED: floor_w double (%p)
80138CF8        ERROR: CVT_S_D
80138D08        ERROR: ADD_W
80138D18        ERROR: SUB_W
80138D28        ERROR: MUL_W
80138D38        ERROR: DIV_W
80138D48        ERROR: SQRT_W
80138D58        ERROR: ABS_W
80138D68        ERROR: MOVE_W
80138D78        ERROR: NEG_W
80138D88        ERROR: ROUND_W_W
80138D9C        ERROR: TRUNC_W_W
80138DB0        ERROR: CEIL_W_W
80138DC4        ERROR: FLOOR_W_W
80138DD8        ERROR: CVT_W_W
80138DE8        ERROR: C.F_W
80138DF8        ERROR: C.UN_W
80138E08        ERROR: C.EQ_W
80138E18        ERROR: C.UEQ_W
80138E28        ERROR: C.OLT_W
80138E38        ERROR: C.ULT_W
80138E48        ERROR: C.OLE_W
80138E58        ERROR: C.ULE_W
80138E68        ERROR: C.SF_W
80138E78        ERROR: C.NGLE_W
80138E8C        ERROR: C.SEQ_W
80138E9C        ERROR: C.NGL_W
80138EAC        ERROR: C.LT_W
80138EBC        ERROR: C.NGE_W
80138ECC        ERROR: C.CLE_W
80138EDC        ERROR: C.NGT_W
80138EEC        ERROR: ADD_L
80138EFC        ERROR: SUB_L
80138F0C        ERROR: MUL_L
80138F1C        ERROR: DIV_L
80138F2C        ERROR: SQRT_L
80138F3C        ERROR: ABS_L
80138F4C        ERROR: MOVE_L
80138F5C        ERROR: NEG_L
80138F6C        ERROR: ROUND_W_L
80138F80        ERROR: TRUNC_W_L
80138F94        ERROR: CEIL_W_L
80138FA8        ERROR: FLOOR_W_L
80138FBC        ERROR: CVT_W_L
80138FCC        ERROR: C.F_L
80138FDC        ERROR: C.UN_L
80138FEC        ERROR: C.EQ_L
80138FFC        ERROR: C.UEQ_L
8013900C        ERROR: C.OLT_L
8013901C        ERROR: C.ULT_L
8013902C        ERROR: C.OLE_L
8013903C        ERROR: C.ULE_L
8013904C        ERROR: C.SF_L
8013905C        ERROR: C.NGLE_L
80139070        ERROR: C.SEQ_L
80139080        ERROR: C.NGL_L
80139090        ERROR: C.LT_L
801390A0        ERROR: C.NGE_L
801390B0        ERROR: C.CLE_L
801390C0        ERROR: C.NGT_L

80139964        Exception:#### INTERNAL ERROR #### Cannot match exception-handler!

8013A218        ROMS.TAG
8013A224        urazle.tpl
8013A230        urazlf.tpl
8013A23C        urazlg.tpl
8013A248        urazlj.tpl
8013A254        urazli.tpl
8013A260        urazls.tpl

8013A5AC        FrameComplete: Yield task pending...
8013AAB8        Get: DRAM Address: WRITE-ONLY?
8013AAD8        Get: CONTROL: WRITE-ONLY?
8013AE30        OS-LIBRARY

8013AF4C        send_mesg
8013AF58        __osEnqueueAndYield
8013AF6C        __osEnqueueThread
8013AF80        __osPopThread
8013AF90        __osDispatchThread
8013AFA4        osGetMemSize
8013AFB4        osInvalDCache
8013AFC4        osInvalICache
8013AFD4        osWritebackDCache
8013AFE8        osWritebackDCacheAll
8013B000        __osDisable
8013B020        __osSpSetStatus
8013B030        osVirtualToPhysical
8013B044        osPhysicalToVirtual
8013B058        guMtxF2L
8013B064        guMtxCatF
8013B070        guMtxIdentF
8013B07C        guMtxIdent
8013B088        guOrthoF
8013B094        guPerspectiveF
8013B0A4        guPerstective
8013B0B4        guScaleF
8013B0C0        guRotateF
8013B0CC        guRotate
8013B0D8        guTranslateF
8013B0E8        guTranslate
8013B0F4        guLookAtF
8013B100        guLookAt
8013B10C        guLookAtHiliteF
8013B11C        guLookAtHilite
8013B12C        guLookAtReflectF
8013B140        guLookAtReflect
8013B150        osAiSetFrequency
8013B164        osAiSetNextBuffer
8013B178        __osEepStatus
8013B188        osEepromRead
8013B198        osEepromWrite
8013B1A8        osEepromLongRead
8013B1BC        osEepromLongWrite
8013B1D0        starfoxCopy
8013B1DC        GenPerspective
8013B1EC        pictureSnap_Zelda2
8013B200        dmaSoundRomHandler_ZELDA1
8013B21C        osViSwapBuffer_Entry
8013B234        zeldaLoadSZS_Entry
8013B248        zeldaLoadSZS_Exit
8013B25C        8013AF4C
8013B260        800978BC

NES Emulator#

Present at 0x7D644 in main.dol for The Legend of Zelda and 0x9D544 for The Adventure of Link is some build info and a hidden credit for the NES emulator. The version number appears to be a date indicating it was built on August 7, 2003.

QFC v030807 [hayakawa@srd] (C)2001-2003 Nintendo

Present at 0x7D72C in main.dol for The Legend of Zelda and 0x9D62C for Zelda II: The Adventures of Link is some debug text for the NES emulator.

*******-------- HVC Sound Emulator 
*******-------- NTSC/MPAL/EU60 
*******-------- Unknown TV format... 
*******-------- PAL50 
 Unsupported SoundRead %x
=== HVC Sound Emulator [AI direct version] ===
=========== AI init =========-

Present at 0x837B0 in main.dol for The Legend of Zelda and 0xA36B0 for The Adventure of Link is a string likely left over from Tetris 2 + Bombliss.

BomBliss

(Source: Original TCRF research)

Nintendo 64 Emulator#

Present at various locations in the emulator's executable are the names and GameIDs of some other Nintendo 64 games explicitly supported by the emulator. Interestingly, the unreleased Panel de Pon is among this list. The GameIDs are used to identify the ROM when setting up various aspects of the emulator configuration, like controller bindings and where save data is stored, among other things. The games' full titles are used when generating GameCube save data.

0xEAA28 in main.dol (USA) for Ocarina of Time and 0xF0B40 for Majora's Mask:

Mario 64
Zelda: Collector's Edition
The Legend of Zelda Debug
Legend of Zelda
Pilotwings
Animal Forest
Cruise 'n USA
Dr. Mario
Mario Kart
Mario Party 1
Mario Party 2
Mario Party 3
PaperMario
Paper Mario
PAPERMARIO
PokemonStadium
Pokemon Stadium
POKEMONSTADIUM
Panel de Pon
YoshiStory

0xF35B0 in main.dol (USA) for Ocarina of Time and 0xFB160 for Majora's Mask

NSME
NSMJ
MARIO
CZLE
CZLJ
ZELDA1
ZELDAX
ZELDA
ZELDAD
NZSJ
NZSE
ZELDA3
NPWE
PILOT
NAFJ
AF
NBCE
NBKE
NGEE
NFUE
NBYE
NCUE
CRUISE
NDNE
NDOE
NN6E
NN6J
DRMARIO
CFZE
NLRE
NMFE
NKTE
KART
NK4E
CLBE
MP1
NMWE
MP2
NMVE
MP3
NM3E
NRIE
NMQE
NPOE
NQKE
NRSE
NRZE
NFXE
NFXJ
STARFOX
Starfox
NGUJ
NALE
NTEA
1080
NTPE
NEPE
NM8E
NYLJ
PANEL
NTUE
NWRE
NYSE
NBNJ

(Source: Original TCRF research)

Regional Differences#

Progressive Scan Screen#

US

Japan

In the US version, the progressive scan prompt has a darker look consistent with the rest of the game. In the Japanese version, it appears following the Club Nintendo logo sequence.

The Legend of Zelda: The Wind Waker 20-Minute Playable Demo#

US

Japan

The Legend of Zelda#

US

Japan

US

Japan

The Legend of Zelda: Ocarina of Time#

US

Japan

The Legend of Zelda: Majora's Mask#

US

Japan

Zelda_collection_us_The_Legend_of_Zelda_Majora's_Mask.png
Zelda_collection_jp_The_Legend_of_Zelda_Majora's_Mask.png

Title Screen#

US

Japan

The_Legend_of_Zelda_Collector's_Edition_Title_Screen.png

Special Movie#

US

Japan

International

Japan

The international versions play the Hyrule Field theme from The Legend of Zelda: Ocarina of Time Bonus Disc. A new arrangement of the overworld theme from the first Zelda game was created for the Japanese version.

Additionally, the Japanese version gives more specific release dates for each game.

References#


  1. GameFAQs↩︎
  2. MobyGames↩︎