Jump to content

Cutscenes


DeathBasket
 Share

Recommended Posts

also

and

 

Yes so I've been looking at cutscene data a little (pointed to be the 0x17 command in the scene header) and here's what I know:

nothing

 

Text:

00000013 0000xxxx

xxxx = number of entries

 

text entries (follows one of two formats):

 

FFFF xxxx yyyy FFFF FFFF FFFF

x = start frame

y = end frame

(no text displayed)

 

or

 

zzzz xxxx yyyy 0000 0000 0000

z = message number

x = start frame

y = end frame (waits for text to finish before continuing cutscene)

 

 

Camera Positions:

00000001wwwwxxxxyyyyzzzz

w = ?

x = start frame?

y = end frame?

z = ?

 

following that:

ww00 [????] [????????] [xxxxyyyyzzzz] [????]

ww = ? FF on last entry

xxxx = x position

yyyy = y position

zzzz = z position

 

 

Camera Focus:

00000002wwwwxxxxyyyyzzzz

ww = ?

xxxx = start frame?

yyyy = end frame?

zzzz = ?

 

following that:

ww00 [????] [????????] [xxxxyyyyzzzz] [????]

ww = ? FF on last entry

xxxx = x position

yyyy = y position

zzzz = z position

The camera will look towards the coordinates specified.

 

There's still a load of unknowns (and other data I haven't even started looking at) so if anybody wants to contribute anything, go ahead.

Link to comment
Share on other sites

I wanted to take a break of stuff like this... Oh well. Hope this helps? ...uh, see Twili's post below, much better than mine :P

 

Animation? -> Navi

0000003E 0000xxxx

xxxx = number of entries

 

Animation? -> Link

0000000A 0000xxxx

xxxx = number of entries

 

Entry format (ex. Navi, Link's house)

aaaa bbbb cccc dddd <--------- eeee ---------> <--------- ffff ---------> <--------- gggg ---------> hhhh iiii

0001 0000 0001 0000 00000000 FFFFFFFE 00000028 FFFFFF49 FFFFFFFE 00000028 FFFFFF49 00000000 00000000 0000 0000

0002 0001 003D 0071 00000000 FFFFFFFE 00000028 FFFFFF49 00000000 0000001E 00000000 3D088889 BE2AAAAB BD08 8889

aaaa = animation

bbbb = start frame?

cccc = end frame?

dddd = ?

eeee = X/Y/Z coords 1, 32-bit?

ffff = X/Y/Z coords 2, 32-bit?

gggg = X/Y/Z coords 3, 32-bit?

hhhh = ?

iiii = ?

 

Incomplete and probably not all that accurate, but whatever. Try switching Link's and Navi's 0x0000000A and 0x0000003E (0x1080 and 0x1208 in Link's house's scene, I think); you can make Link act like Navi and vice versa in that cutscene.

Edited by xdaniel
Link to comment
Share on other sites

0x27E5308 in the debug rom (0xF308 into spot00_scene or 0xD18 into its cutscene at 0xE5F0):

 

00 00 00 0A 00 00 00 13

 

00 00 00 0A = Marker.

00 00 00 13 = Number of paths for Link (hex). The entries are immediately after, 0x30 in length each:

 

00 01 00 00 01 90 94 3A 00 00 00 00 00 00 00 FC

00 00 00 00 00 00 07 3A FF FF FF FE 00 00 00 00

00 00 05 65 BF 22 8F 5C 00 00 00 00 3F 22 8F 5C

 

00 01 = Current action. Zeth made a list of these that was to be redone.

 

00 00 = Starting frame for path.

01 90 = Ending frame for path.

 

94 3A 00 00 00 00 = Unknown.

 

00 00 00 FC = X coordinate of path start vertex.

00 00 00 00 = Y coordinate of path start vertex.

00 00 07 3A = Z coordinate of path start vertex.

 

FF FF FF FE = X coordinate of path end vertex.

00 00 00 00 = Y coordinate of path end vertex.

00 00 05 65 = Z coordinate of path end vertex.

 

BF 22 8F 5C 00 00 00 00 3F 22 8F 5C = Appears to be a vertex normal for the path, single precision floats. Changing them doesn't have any obvious effect.

 

Posted Image

 

There is a table for those actions that I discovered at 0xC239B8 in the rom. You can see that the last 4 bytes are always 00 00 00 00, a "virtual offset", or a gameplay_keep pointer to an animation header for Link. I put Zeth's list against these:

00 00 00 00 00 00 00 00 | 00 does nothing

FF 00 00 00 80 85 15 A4 | 01 Normal still stance

02 00 00 00 04 00 27 90 | 02 Looks back real quick

00 00 00 00 00 00 00 00 | 03 Runs like hell (Beta and broken)

00 00 00 00 00 00 00 00 | 04 Normal still stance

03 00 00 00 04 00 27 40 | 05 Surprised :P

00 00 00 00 00 00 00 00 | 06 Froze x.x

00 00 00 00 00 00 00 00 | 07 does nothing

FF 00 00 00 80 85 15 A4 | 08 stand still

02 00 00 00 04 00 27 78 | 09 turn around surprised

FF 00 00 00 80 85 17 88 | 0A walk into warp

03 00 00 00 04 00 28 60 | 0B preparing to warp

FF 00 00 00 80 85 18 DC | 0C beta side stance

07 00 00 00 04 00 23 48 | 0D beta holding something

05 00 00 00 04 00 23 50 | 0E got an item

05 00 00 00 04 00 23 58 | 0F got an item reversed?

05 00 00 00 04 00 23 B0 | 10 Getting up from sitting

07 00 00 00 04 00 23 B8 | 11 sitting on the ground

FF 00 00 00 80 85 19 EC | 12 pulling mastersword out

02 00 00 00 04 00 27 28 | 13 getting magic from faries

02 00 00 00 04 00 27 38 | 14 Hold shield? o.o

00 00 00 00 00 00 00 00 | 15 freezes link no crash

FF 00 00 00 80 85 1B 90 | 16 legs stuck out

03 00 00 00 04 00 27 A8 | 17 Faries blessing?

09 00 00 00 04 00 2D B0 | 18 Link falls forward

 

And more.

Link to comment
Share on other sites

  • 3 weeks later...

Some more stuff I found:

 

Screen transition effects:

 

0000002D 00000001 xxxx yyyy zzzz zzzz?

x = transition (probably the same as entrance/exit transitions)

y = start frame

z = end frame (seems to be repeated)

 

Exits:

000003E8 00000001 xxxx yyyy zzzz zzzz?

 

x = index for a list of addresses at 8013AF78, the machine code at these addresses sets the exit number to use

y = start frame

z = end frame (seems to be repeated)

 

End of cutscene data:

FFFFFFFF

 

I'll update the wiki page with this too in a bit.

Link to comment
Share on other sites

  • 7 months later...

Woah, I didn't know this topic was here! I think I can lend a hand.

 

I don't know what method you're using to test this stuff, but I can tell you how I've been doing it.

 

I'll also say mapping out of more cutscene camera data may be a waste of time.

 

But more on that later in the post. First...

 

₪ DeathBasket'" data-cid="9274" data-time="1309990631">

Camera Positions:

00000001wwwwxxxxyyyyzzzz

w = ?

x = start frame?

y = end frame?

z = ?

 

following that:

ww00 [????] [????????] [xxxxyyyyzzzz] [????]

ww = ? FF on last entry

xxxx = x position

yyyy = y position

zzzz = z position

 

 

Camera Focus:

00000002wwwwxxxxyyyyzzzz

ww = ?

xxxx = start frame?

yyyy = end frame?

zzzz = ?

 

following that:

ww00 [????] [????????] [xxxxyyyyzzzz] [????]

ww = ? FF on last entry

xxxx = x position

yyyy = y position

zzzz = z position

The camera will look towards the coordinates specified.

 

First off, I got the wiki version of this posting, and the 01 camera data got me going in the right direction. That said, I think your 00000002 information is incorrect.

 

following that:

ww00 [????] [????????] [xxxxyyyyzzzz] [????]

ww = ? FF on last entry

xxxx = x position

yyyy = y position

zzzz = z position

The camera will look towards the coordinates specified.

 

I don't think X,Y,Z is camera position, I think it's camera rotation.

 

Camera data appears to be paired off into 2 sections, 1 for coordinates(00000001), and 1 for rotation(00000002). It's a lot less obvious in the in game cutscenes, but is more dirrectly observed in cutscenes recorded and saved with the Demo Camera.

 

The pairings get VERY messy in the in game cutscenes though since the data is split up, and the frames for camera position can be completely independent from the frames for camera rotation.

 

That and the rotation data doesn't translate directly, it's something along the lines of +4 for every degree of rotation. Worse yet the number is signed.

 

Here's my method for mapping.

 

Method:

 

Nothing special, but I've been using Demo Camera sequences to test with. I make a sequence, and save it to the memory card plugged into controller 3. I open the memory card file in hex editor, and examine the recorded sequence.

 

If you follow the Debug ROM guide(is it still around?) you can follow all the advanced camera tricks, and map out the values.

 

But like I said, mapping of all cutscene camera data may not even be necessary. For the purposes of Zelda's Birthday 2, I plan on recording my cutscenes in demo camera, and inserting them over the camera data of existing scenes.

 

So I'd be less concerned with the camera, and concentrate more on the other "commands"

 

There may be more to replacing existing camera in cutscene data than just simple cut and paste. Since as I said the camera position, and rotation do not appear as 1-for-1 listing within the in game scenes. Some null or do nothing filler "commands" could make up the difference in inserting different camera data into existing cutscenes.

 

I've found another "command" which I'll post later. Other than that, I don't have much to add yet.

Link to comment
Share on other sites

Thanks for your input. I wasn't too sure if that was for where the camera is looking or for its rotation because usually it would make little or no difference when I changed the values, I assumed the former because I didn't get things like the camera being upside down happening.

An interesting point is that in a few completely custom cutscenes I made the camera would simply refuse to move at all. That may have been a problem with the way I was doing it but iirc other things like text would work normally. For now using the debug camera as you say to create the data is most likely the best way to go, I was just trying to figure out how the data is set up so that one day (in the distant future) we might have a cutscene editor.

Link to comment
Share on other sites

More "commands' as promised. Found it while working on ZB2.

 

End Cutscene (drop back to normal gameplay?)

 

00 00 00 03 00 00 00 EE 00 0C xxxx yyyy

 

EE:Number of listings

xxxx : Ending Frame

yyyy: Ending Frame repeated

 

 

Light source?

 

00 00 00 04 00 00 00 EE

 

I didn't bring my notes on 04 "actors" with me, but it does seem to create an actor which effects lighting.

 

Which brings me to an important development. Most unknowns fit within the Cutscene actor format of 00 00 00 AA 00 00 00 EE where

 

AA : Actor Number

EE: Number of listings

 

So, I've made a tool that pulls cutscenes apart. The working title is Zelda64 Cutscene Discombobulator in honor of the Super Mario Brothers 2 level editing tool.

 

Here's a sample of what it does so far:

 

'Header Command @ 8DA0

0000001000000BB8

'Actor # 15 @ 8DA8

0000001500000001

000100000BB8000000000000000000000000000FFFFFFFDE000000000000000FFFFFFFDE000000000000000000000000

'Actor # A @ 8DE0

0000000A00000001

000500000BB80000560B000000000B2900000000FFFFFDAE00000B2900000000FFFFFDAE000000000000000000000001

'Cutscene Exit @ 8E18

000003E80000000100010235023F023F

'Camera Position @ 8E28

000000010001000004430000

00000000427000000ADF00DBFE2C00FA

00000000427000000ADF00DBFE2C0000

00000000427000000ADF00DBFE2C0000

00000000427000000ADF00DBFE2C0000

FF000000427000000ADF00DBFE2CF050

'Camera Position @ 8E84

000000010001008205880000

00000000427000000ADF00DBFE2C9748

00000000427000000ADF00DBFE2C2A90

00000000427000000ADF00DBFE2C65F0

00000000427000000A600056FE803FAA

00000000424BFFF70A0D002FFEC70000

000000004237FFF20A0D002FFEC7FFFF

000000004237FFF20A0D002FFEC70000

000000004237FFF20A0D002FFEC73C18

FF0000004237FFF20A0D002FFEC741DC

'Camera Position @ 8F20

000000010001017C09890000

00000000427000000B68003AFD8F9748

00000000427000000B68003AFD8F2A90

00000000427000000B68003AFD8F65F0

00000000427000000B68003AFD8F3FAA

FF000000427000000B68003AFD8F0000

'Camera Position @ 8F7C

00000001000101C206D70000

00000000427000000A8F0028FE899748

000000004235998B0A8F0028FE892A90

000000004235998B0A8F0028FE8965F0

000000004235998B0B6E002FFDF43FAA

000000004235998B0D09003EFCE10000

000000004235998B0EDA000AFBAAFFFF

0000000041A4CC7E0EDA000AFBAA0000

FF00000041A4CC7E0EDA000AFBAA3C18

'Camera Rotation @ 9008

000000020001000004600000

0000001E427000000B100081FDEE9748

0000001E427000000B100081FDEE2A90

000003E8427000000B100081FDEE65F0

0000001E427000000B100081FDEE3FAA

FF00001E427000000B100081FDEE0000

'Camera Rotation @ 9064

000000020001008205A50000

0000002D427000000B100081FDEE9748

0000002D427000000B100081FDEE2A90

0000002D427000000B0F0081FDEF65F0

0000002D425E66620AB80056FE413FAA

0000002D4237FFF20A66003DFE870000

0000001E4237FFF20A66003CFE87FFFF

000003E84237FFF20A66003CFE870000

0000001E4237FFF20A65003CFE883C18

FF00001E4237FFF20A65003CFE8841DC

'Camera Rotation @ 9100

000000020001017C099C0000

0000001E427000000B09000EFDBB9748

0000001E427000000B09000EFDBB2A90

000003E8427000000B09000EFDBB65F0

000003E8427000000B09000EFDBB3FAA

FF000014427000000B09000EFDBB0000

'Camera Rotation @ 915C

00000002000101C206F40000

0000001E4235998B0AEC0035FE489748

0000001E4235998B0AEC0035FE482A90

000000464235998B0AEC0035FE4965F0

00000046420D99810BCB0036FDB63FAA

0000004641DCCC8C0D66003AFCA30000

000003E841A666180F35FFF4FB6EFFFF

0000001E41A4CC7E0F33FFF6FB6F0000

FF00001E41A4CC7E0F32FFF7FB703C18

'Actor # 2E @ 91E8

0000002E00000001

000100000A6C00000000000000000000FFFFFFC00000003500000000FFFFFFC000000035000000000000000000000000

'Actor # 3E @ 9220

0000003E00000003

00010000000300000000000000000B1F0000012CFFFFFDB700000B1F0000012CFFFFFDB7000000000000000000000000

00040003004900000000000000000B1F0000012CFFFFFDB700000B1F0000002DFFFFFDB700000000C069249200000000

000400490BB800000000000000000B1F0000002DFFFFFDB700000B1F0000002DFFFFFDB7000000000000000000000000

'Text Command @ 92B8

0000001300000008

FFFF00000064FFFFFFFFFFFF

1024006400780000FFFFFFFF

FFFF00780118FFFFFFFFFFFF

1091011801720000FFFFFFFF

FFFF01720186FFFFFFFFFFFF

1092018601B80001FFFF1026

FFFF01B801C7FFFFFFFFFFFF

102701C702210000FFFFFFFF

'Actor # 56 @ 9320

0000005600000001

004C00B400B5000000000000000000000000001D0000009F000000000000001D0000009F000000000000000000000000

'Actor # 57 @ 9358

0000005700000001

004C00000001000000000000FFFFFF990000000000000070FFFFFF990000000000000070000000000000000000000000

'End of Cutscene Marker @ 9390

FFFFFFFF

 

Everything so far works like an actor, or is one of the known commands like camera, text, exit, ect. If we use the debug camera for easy replacement of camera sequences, and someone posts the information actor animations again, total customized cutscenes will be possible. Maybe even simple.

Link to comment
Share on other sites

A program which extracts and labels data held within cutscenes, you say? Now that'll be something to look foward to.

 

It's a little better than that. Zelda64 Cutscene Discombobulator is done. It can now both dump and label cutscene data, and reinsert modified cutscenes.

 

I plan on releasing it after I finish a demo cutscene. I'll want feed back on how to break down the data for easiest editing.

 

₪ Twili'" data-cid="9276" data-time="1309996078">

BF 22 8F 5C 00 00 00 00 3F 22 8F 5C = Appears to be a vertex normal for the path, single precision floats. Changing them doesn't have any obvious effect.

 

Ok, I know I'm getting lazy(er) but can anyone give me a formula or some pseudocode to calculate this?

Link to comment
Share on other sites

Great! I'm looking forward to seeing what this tool can do.

I may not be so busy over the weekend so I might be able to help out with calculating those numbers. It would be really helpful if you could send me some examples since I don't currently have any of the things I need to find the information myself. :)

Link to comment
Share on other sites

Here's a simple demo of what this tool can do. If someone would upload a youtube video of the patch below in action, then I I'll release the tool.

 

http://www.mediafire...f8vi401dap7p4m2

 

1. Apply the .pff patch(yeah, yeah I know we're not suppose to be using .ppf anymore but, I didn't have the time to find the new patching tool)

2. Run Cutscene 01 of Hyrule Field.

 

I could have gotten the cutscene a little more polished, but I didn't see the point. It shows that you can edit existing cutscenes with minimal effort.

 

The tool is nothing fancy. Also, I could use some feedback on how best to break down cutscene listings for the easiest editing.

Link to comment
Share on other sites

Thank you Sanguinett.

 

 

Your expectations might be a little high compared to the current quality of this tool...

 

http://www.mediafire...784ths2f8vqcvld

 

It's a start though.

 

!IMPORTANT! READ BEFORE USING

 

DO NOT REMOVE OR ALTER THE HEADER LINE:

 

'Header Command @

 

You can add/remove/alter any commented out line EXCEPT this one.

 

I know it's commented out, but the program currently uses it to identify cutscene files. I'll fix it in a later release. The address supplied in this line is were the cutscene data will be written to.

 

Other than that the tool is very dumb. All it does is check for the address at the start of the .txt file, and write whatever data it finds in the .txt file to the ROM supplied in the romname.ini.

 

Still it's very useful, the .txt files produced by the discombobulator:

 

.Breaks the data down in a much easier to read format than trying to work this stuff up in a Hex editor.

.Allows you to add comment lines by proceeding them with '

.Comments aids in directly mapping out cutscene data

.It allows for easy cut and paste of lines from other cutscenes

.You can use Demo Camera to make all new camera data you can simply cut and paste in

 

Rest is up to you right now. Comments welcome. More later.

Link to comment
Share on other sites

Perfect JSA!

But i need a little more information about how to use the tool... :-(

(where the camera is positioned, and others ..)

 

EDIT:

a good information would be a README.txt explaining,

which . txt belongs to the corresponding scene,

so know which scene i'm editing.

 

Well this is an alpha release. Reading further up in this very post will get you all the info you need right now.

 

I'll put together a decent readme later. For now the scene # is in the file name.

 

51_Cutscene_00.txt

 

Is scene 0x51, hyrule field. Cutscene is 0.

 

Use the scene list from ZLE/ZLE2/ZAP2 or the wiki to find out which scene is which.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

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