Jump to content

Majora's Mask Scene Commands


fkualol
 Share

Recommended Posts

Pasting more unfinished notes.

 

0x02 - Cameras used for the 0x1B command.02xx0000 yyyyyyyyxx = number of entriesyy = offsetxxxxyyyy zzzzzzzzxx = camera type?yy = unknownzz = offsetxxxxyyyy zzzzpppp qqqqrrrr FFFFFFFF FFFFxx = x positionyy = y positionzz = z positionpp = x rotationqq = y rotationrr = z rotation

 

I'm gonna have to look into pqr some more as I may be wrong about it.

 

0x1B - Used by actors to decide what camera to use/cutscene to play.uuuutttt bbbbcccc nnnnssuu uuuuddeett = length (FFFF = constantly playing)bb = camera to use  FFF5 = Mask Transformation  FFF6 = opening a large chest  FFF7 = ???  FFF8 = ???  FFF9 = ???  FFFA = Song of Soaring  FFFB = using event item  FFFC = drinking bottle  FFFD = playing ocarina  FFFE = receiving item from small chest  FFFF = null  0000+ = additional cameras (see 0x02 command)cc = cutscene to play  FFFF = nullnn = next entry?ss = puzzle sound effect to play afterdd = camera position after  00 = keep current position  01 = place behind link  02 = rotate until behind linkee = size of black bars  80 = maxuu = unknown

 

-change actor's y rotation to link with 0x1B entry

  • Like 2
Link to comment
Share on other sites

  • 1 month later...

Pasting what I had on the 0x1C command:

 

xxxxxxxx yyyyzzzzxx = pointer to datayy = zoomzz = unknownaaaaxxxx yyyyzzzz bbbbaa = mini mapxx = x positionyy = y positionzz = z positionbb = unknown

 

Values for the mini map are 0100-0164 iirc.

Link to comment
Share on other sites

  • 2 weeks later...

0x17 - Cutscenes

 

17xx0000 yyyyyyyy

 

xx = number of cutscenes

yy = offset

 

Entries

xxxxxxxx yyyyuutt

xx = Offset of cutscene data
yy = Exit
uu = Entrance cutscene activates at
tt = Event flag

 

Cutscene Header
xxxxxxxx yyyyyyyy

xx = Number of markers
yy = Length (Frames)

 

Small list of cutscene markers:

0000000A Text
0000005A Camera data
00000066 Zelda
00000070 Epona
00000078 Romani
00000082 Happy mask man
00000096 Sound effects?
00000097 ???
00000098 Screen Transition
00000099 Motion blur?
0000009B ???
0000009C ???
000000C8 Link
000000C9 Tatl
0000012C Play song
0000015E End Cutscene

 

The formats for these markers should be the same as they are in OoT, except for the camera data.

 

I'll add more info hopefully some time next week.

Link to comment
Share on other sites

  • 3 weeks later...

Writing this up really quick. Hopefully next time I won't procrastinate as much.

 

Camera Data Marker

 

0000005A xxxxxxxx

 

xx = size of data

 

xxxxyyyy zzzzzzzz

 

xx = number of camera points

yy = size

zz = length (frames)

 

Camera Points

 

The first part of the data is for the camera focus, the second part is for the camera positions. The last part is for the angle of view.

 

aabbcccc xxxxyyyy zzzz0000

 

aa = camera behaviour (use 05 if you don't know what to use)

bb = FACTOR (?) <--- What the camera debug calls it. 0x64 seems to be the default
cc = unknown (something to do with the number of frames?)
xx = x position
yy = y position
zz = z position

 

xxxx0000 yyyy0000

xx = TIME (?) <--- what the camera debug calls it
yy = angle of view

 

 

 

 

I'll either work on a bigger list of all the markers or look into the 0x1A command next.

Link to comment
Share on other sites

  • 3 weeks later...

Cutscene actor markers that I have discovered so far:

 

 

00000064 En_Elfgrp00000065 En_Dnp (Deku Princess)00000066 Dm_Zl (Zelda)00000067 Bg_Dy_Yoseizo00000068 Bg_Ctower_Gear00000069 En_Dnq (Deku King)0000006B Dm_Stk (Skullkid)0000006C En_Ge30000006D Dm_Char0500000070 En_Horse (Epona)00000073 Dm_Opstage00000077 En_Gg00000078 En_Ma_Yts, En_Ma4 (Romani)00000079 En_Ge10000007C Bg_Open_Shutter0000007D Bg_Open_Spot0000007E En_Dnk0000007F En_Mk (Professor)00000082 En_Osn (Happy Mask Man)00000083 Dm_Char0200000084 Obj_Tokeidai00000086 Obj_Tokei_Step00000087 Dm_Char0100000088 Dm_Char03000000C8 Player (Link)000000C9 En_Elf (Tatl)000001C9 En_Zoraegg000001CF Dm_Char06000001D5 Bg_Haka_Curtain000001D6 En_Jg000001D7 En_Zog000001D8 En_Dai000001DA Dm_Char08000001DB En_Dno000001DC En_Ge2000001DF En_Gk000001E0 Eff_Kamejima_Wave000001E2 En_Po_Composer000001E3 Obj_Hgdoor000001E4 En_Hg000001E5 En_Pamera000001E6 En_Hgo000001F4 En_Zob000001F5 En_Zos000001F6 Eff_Kamejima_Wave000001F7 Dm_Char09000001F8 En_Zov000001F9 En_Test6000001FA En_Test3000001FF Obj_Boat00000200 Eff_Stk00000201 Dm_Stk (Skullkid)00000202 Dm_Tsg00000203 En_Zod0000020D En_Toto0000020E En_Gm0000020F Eff_Zoraband00000214 En_Bsb00000228 Obj_Usiyane0000022C En_Ma_Yto (Cremia)0000022D En_An, Dm_An, Dm_Gm00000232 Dm_Al, Dm_Ah, Dm_Nb00000235 En_And00000238 Dm_Bal00000239 Door_Warp1000002C8 En_Dns (Deku Palace Scrub)

 

 

I haven't tested most of them but I'm 90% sure that these are all correct.

Link to comment
Share on other sites

Haha, it's rather neat to see that a lot of the files names are still exactly the same or similar to their OoT Counterparts. Romani and Cremia still being called Ma (as in Malon) is rather interesting.

 

Now how did you find these? Is there similar data like this in OoT with Cutscene Markers?

Link to comment
Share on other sites

Actors are programmed to check for a specific value.

 

In each actor's source file (http://spinout182.com/mmde/a.html) I searched for:

	jal             external_func_8010B11C

if there was a match then usually before or after that instruction there would be:

	li              a1,x

Where x is the decimal value of the marker

 

This doesn't work all of the time as there are some actors like En_Giant which have a lhu instruction instead.

 

You could try doing something similar with Ocarina of Time's actors, but I'm not sure what you would have to search.

 

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Exit Values

 

xxyz

 

xx = Exit number - Divide by two to get its entry in the exit table (list)

xy = Entrance Number

z = Variable?

 

Examples:

 

D800 will take you to exit 0x6C (South Clock Town) at entrance 0x00

 

1500 will take you to exit 0x0A (Grottos) at entrance 0x10

 

4650 will take you to exit 0x23 (Fairy Fountain) at entrance 0x05

Link to comment
Share on other sites

Exit Values

 

xxyz

 

xx = Exit number - Divide by two to get it's entry in the exit table (list)

xy = Entrance Number

z = Variable?

 

Examples:

 

D800 will take you to exit 0x6C (South Clock Town) at entrance 0x00

 

1500 will take you to exit 0x0A (Grottos) at entrance 0x10

 

4650 will take you to exit 0x23 (Fairy Fountain) at entrance 0x05

These are the entries in the exit list within the scene? As opposed to being indexes within a list in code, like OoT.

And wouldn't it be more like:

SSSSSSSS SSSSSSSE EEEEEEEE zzzzzzzz

In a bitwise manner, that is:

scene = exit_val>>17

entrance = (exit_val >>8) & 0x1F

?

 

Nevertheless, this thread is full of win. Would there be opposition to me putting the data on the wiki?

Link to comment
Share on other sites

These are the entries in the exit list within the scene? As opposed to being indexes within a list in code, like OoT.

There's an entrance table at 0x00C5BC60 in a decompressed MM (U) ROM and the format goes:

 

xx000000 yyyyyyyy zzzzzzzz

 

xx = Number of Entrances

yy = RAM Offset

zz = Scene Name RAM Offset

 

To get the data for an individual entrance you would go to

 

RAM Offset + (Entrance Number * 4)

 

take the address written there and add (Variable * 4)

 

The data here seems to be in the same format as OoT

 

aabbccdd

 

aa = Scene Number (Signed Byte)

bb = Entrance Number

cc = Variable

dd = Fade 

And wouldn't it be more like:

SSSSSSSS SSSSSSSE EEEEEEEE zzzzzzzz

In a bitwise manner, that is:

scene = exit_val>>17

entrance = (exit_val >>8) & 0x1F

?

 

Yes, that seems to be about right.

 

Nevertheless, this thread is full of win. Would there be opposition to me putting the data on the wiki?

Feel free to do so. I would have added it myself but I can't seem to log in with OpenID. 

Link to comment
Share on other sites

0x1A command- used to animate textures

 

Maps with mesh that use animated textures will use the DE000000 aa000000 display list command where aa = 08+.

 

Format

 

1A000000 xxxxxxxx

 

xx = offset

 

then it's

 

xx00yyyy zzzzzzzz

xx = animated mesh entry (take aa value in DE command and subtract 07 (last entry needs to be negative)
yy = type
  00 = one layer
  01 = two layers
zz = pointer

 

then

 

aabbccdd

aa = x velocity factor
bb = y velocity factor
cc = unknown - use 0x20 if unsure
dd = unknown - use 0x20 if unsure


 

  • Like 1
Link to comment
Share on other sites

Awesome! Now if only we could figure out how exactly OoT animates its textures in maps. That way we don't have to use engine hacks to do it and can use what the game already provides.

I found a table at 0xBA0BB0 in the OoT Debug ROM that goes

 

aaaaaaaa bbbbbbbb cccccccc dddddddd eeffgghh

 

aa = scene start address

bb = scene end address

cc = scene name start address

dd = scene name end address

ee = unknown

ff = something to do with the scene's animated textures

gg = unknown

hh = unknown

 

If you set ff to 00 then the scene won't animate any of the map's textures. There's probably another table that needs to be found, or it might be hard-coded. I'm not sure.

 

 

EDIT: Er... just realised this is the scene table and that this information is already available.

Link to comment
Share on other sites

  • 1 month later...

I haven't really been doing anything related to MM lately but i might as well mention a few things

 

The first 0x12 scenes or so in http://spinout182.com/mmde/s.html are using the wrong names.

 

The 0x02 command seems to use the same format as http://wiki.spinout182.com/w/Zelda_64:_Collision_Format#Camera_Data

 

MM Camera Types

 

00 NONE01 NORMAL002 NORMAL303 CIRCLE504 HORSE005 ZORA006 PREREND007 PREREND108 DOORC09 DEMO00A FREE00B FUKAN00C NORMAL10D NANAME0E CIRCLE00F FIXED010 SPIRAL11 DUNGEON012 ITEM013 ITEM114 ITEM215 ITEM316 NAVI17 WARP018 DEATH19 REBIRTH1A TREASURE1B TRANSFORM1C ATTENTION1D WARP11E DUNGEON11F FIXED120 FIXED221 MAZE22 REMOTEBOMB23 CIRCLE124 CIRCLE225 CIRCLE326 CIRCLE427 FIXED328 TOWER029 PARALLEL02A NORMALD2B SUBJECTD2C START02D START22E STOP02F JCRUISING30 CLIMEMAZE31 SIDED32 DUNGEON233 BOSS_SHIGE34 KEEPBACK35 CIRCLE636 CIRCLE737 CHUBOSS38 RFIXED139 TRESURE13A BOMBBASKET3B CIRCLE83C FUKAN13D DUNGEON33E TELESCOPE3F ROOM040 RCIRC041 CIRCLE942 ONTHEPOLE43 INBUSH44 BOSS_LAST45 BOSS_INI46 BOSS_HAK47 BOSS_KON48 CONNECT049 MORAY4A NORMAL24B BOMBBOWL4C CIRCLEa4D WHIRLPOOL4E KOKKOGAME4F GIANT50 SCENE051 ROOM152 WATER253 SOKONASI54 FORCEKEEP55 PARALLEL156 START157 ROOM258 NORMAL459 SHELL5A DUNGEON4

 

 

OoT Camera Types

 

00 NONE01 NORMAL002 NORMAL103 DUNGEON004 DUNGEON105 NORMAL306 HORSE007 BOSS_GOMA08 BOSS_DODO09 BOSS_BARI0A BOSS_FGANON0B BOSS_BAL0C BOSS_SHADES0D BOSS_MOF0E BOSS_TWIN00F BOSS_TWIN110 BOSS_GANON111 BOSS_GANON212 TOWER013 TOWER114 FIXED015 FIXED116 CIRCLE017 CIRCLE218 CIRCLE319 PREREND01A PREREND11B PREREND31C DOORC1D RAIL31E START01F START120 FREE021 FREE222 CIRCLE423 CIRCLE524 DEMO025 DEMO126 MORI127 ITEM028 ITEM129 DEMO32A DEMO42B UFOBEAN2C LIFTBEAN2D SCENE02E SCENE12F HIDAN130 HIDAN231 MORI232 MORI333 TAKO34 SPOT05A35 SPOT05B36 HIDAN337 ITEM238 CIRCLE639 NORMAL23A FISHING3B DEMOC3C UO_FIBER3D DUNGEON23E TEPPEN3F CIRCLE740 NORMAL4

 

 

MM Scene Table Format

 

 

xxxxxxxx yyyyyyyy aaaabbbb 00000000

 

xx = Scene Start

yy = Scene End

aa = Message Number

bb = Scene Configuration (01 if you want to use the 0x1A command. Goes up to 0x0D IIRC)

 

 

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.