Ovl title

From CloudModding OoT Wiki
Jump to: navigation, search

ovl_title is the backing code for the Game State that runs the N64 Logo animation.

ovl_title
VersionVRam
Debug8000000080000B90
NTSC 1.0803B4640803B5000
NTSC 1.2803B4640803B5000

Notes

The Nintendo 64 logo intro in the beginning works like this: The logo is always 100% visible, rather the fading in and out is done by a black colored rectangle that covers everything. The rectangle starts fully visible at FF, then is decremented by 3 or 4? until it reaches 00. It stays invisible for 60 increments, and then the Black Rectangle fades in from 00 to FF incrementing by 3. Once the logo is fully covered, the "logo flag" changes to 1 and current game state is swapped to ovl_opening. A shimmer animation plays over the NINTENDO 64 texture continuously incrementing by 01 and rotating through 00 to 7F.

nintendo_rogo_static stores the texture for the Nintendo 64 logo and the instructions for drawing and coloring the rotating N.

As per other game state overlays, ovl_title is allocated at the end of the main heap, while the instance variables are allocated at the start of the main heap (or in other words, the "global context" address)

Majora's Mask is pretty much the same, but the fade in/fade out animation is much faster.

NTSC 1.0 Notes

Instance

0x01C7 = Opacity of a black rectangle used to fade the logo in/out

Overlay

0x0818 = Start of reference to nintendo_rogo_static. A3 = File Start, T0 = File End, A1 = File Size


MQ Debug Notes

Instance

0x01D6 short //black rectangle alpha
0x01DC short //shimmer 1
0x01DE short //shimmer 2
0x01E1 byte //Logo flag, 01 = Completed, 00 = Still running

Overlay/Other

Functions

80800128 (Reloc 80400418) //Sets Instance + 0x01E1 to 01

Offset Value Description
B77F6F 01 (in code) The Verbose flag, 02 makes "NOT MARIO CLUB VERSION" show with the Logo
BCF600 -- Branch for the loop to set up the Display Info for the Logo
BCF604 -- Loads the alpha for the Black Rectangle that covers the Intro Logo
BCF624 -- First of two store commands that stores the Black Rectangle alpha
BCF877 FF Hardcoded value to ignore whether a controller is plugged in, 00FF = Plugged In, FEDC = Not
BCF88C 14 One of the timing values
BCF893 FF Initial alpha value for the black rectangle
BCF8F0 -- The text for "NOT MARIO CLUB VERSION"
BCF9F4 -- The Overlay Table

By default, the logo flag is set to completed so the boot logo never loads. The code to control the black rectangle fading, to control the animated shimmer over NINTENDO 64 and to flip the Logo flag is missing. The best place for the missing code is in between the loading of the alpha value for the black rectangle and the storing of it. In the Debug RAM, the black rectangle alpha is stored in 2 bytes at 802121F6, the shimmer value is pulled from 2 bytes at 802121FC and stored in 2 bytes at 802121FE.

All Gamecube versions of Ocarina of Time/Master Quest and Majora's Mask can have the intro restored using the same code with minor variations for Majora's Mask's timing and storage locations. The only offsets that are important are those listed in the MQ Debug notes.

Restoring No Controller

There is a single byte 00/01 flag at 80166B68 (Debug RAM) that defines whether a controller is connected (01). The existing code stores 00FF to 8015F9B4 no matter what. If FEDC is stored instead, "No Controller" will replace "Press Start" in the title sequence. If the replacement code is less than 4 words, it can fit by pushing the code after it down into the 00000000's at the end. The "No Controller" code is disabled in all NTSC-U and PAL versions of the GameCube ROMs, but not the NTSC-J versions.