Jump to content

Cutscenes


DeathBasket
 Share

Recommended Posts

Odd thing I just read in another thread.

 

"Also, dunno if you've ever heard about the thing where you pour the fish out on top of the steps in sacred forest meadow, and when you start the cutscene where you learn Saria's Song, the fish teleports onto Saria's lap, but would it be possible to find out if that was on purpose?"

Link to comment
Share on other sites

Odd thing I just read in another thread.

 

"Also, dunno if you've ever heard about the thing where you pour the fish out on top of the steps in sacred forest meadow, and when you start the cutscene where you learn Saria's Song, the fish teleports onto Saria's lap, but would it be possible to find out if that was on purpose?"

You start that cutscene when you enter the area... as for the fish warping to Saria's lap, how would that be on purpose?

 

Perhaps Saria  and the fish share the same positioning code because Saria will appear when you enter the proximity.

Link to comment
Share on other sites

I really wish I understood what was being talked about. I don't understand how you guys know what to change. ;~; I'll learn eventually, but it's intimidating.

 

JSA. If you can make a tool that edits cutscenes easly, I'd be all over that.

Link to comment
Share on other sites

I really wish I understood what was being talked about. I don't understand how you guys know what to change. ;~; I'll learn eventually, but it's intimidating.

 

JSA. If you can make a tool that edits cutscenes easly, I'd be all over that.

A good start is to pick a scene that you want to test a certain cutscene, and lok down the list in hex. The list is very neatly divided into two sections which are easy to seperate...

 

The first half of the cutscene info (for one cutscene) is alot of segments split up into random hex of 0-F, the easiest value to find for actor control is 0000000A for Link. If you start with that, the 4 bytes after tell you how many segments. Each segment after those is 3 lines per segement, so if you get say: 0000000A 00000003 <-- the last 4 bytes is how many segements, and in this case it's 3x3 segment lines, which is 9 lines total after before the next actor segment for cutscene control.

 

Each 3 lines is split up into start frame to end frame. Your code might look like this at the start:

 

0000000A 00000003 0000 000A 00C7 0000

 

000A and 00C7 are your start and end frames for that segment (the first one in this example). After the first 8 bytes of that first segment will be 4-byte values per that actor's x, y, and z start positions, then the next three 4 byte chunks after that will be the destination x, y, z for the last frame 00C7.

 

So, for another example, say it looks something like this:

 

0000000A 00000003 0000 000A 00C7 0000

????????? 00000000 00000000 00000000

FFFFFFFF FFFFFFFF FFFFFFFF XXXXXXXX

XXXXXXXX XXXXXXXX

 

In the second line (the 00000000's) will be the starting x, y, z of the start of frame 000A of the cutscene animation, and the other three 4-byte chuncks will be where actor 0000000A (Link in this case) will be at the last frame 00C7.

 

You can use a map editor to find these positions, and if you would like, here are some sites I use to calculate hex values:

http://www.statman.info/conversions/hexadecimal.html  (hex to decimal converter)

and http://www.squarebox.co.uk/hcalc.html (hex calculator)

 

The last 3 XXXXXXXX's are normals, or something, but they don't seem to affect what the actor does in the animation.

 

The rest is figuring out what you want to do.

 

For the second section of the cutscene, it's all camera actions. After each value, say it's the camera actor value with 2 segments, then it might look like this:

00000001 00000002

 

That would be the start of it, which includes the start and end frames before each line for each camera positions.

 

The values are shifted around, but it might have some 4X values in it, but the start of each line can be 000000XX usually. I found out that this value determines the speed of the camera movement. The higher the value, the slower the camera moves. You can even reverse its direction if you change the last four digits to something higher than 8000 (but 8000 would be super slow in the opposite direction).

 

After that 000000XX value is a 4XXXXXXX value, maybe sometimes 3XXXXXXX or 5XXXXXXX (not sure), but you will see four 4-byte chunks, and the last two 4-byte chunks are split into 2-byte sections that determine your x, y, z, and something else (to be determined).

 

So it will be segmented into lines that look something like this:

 

000000?? 4??????? XXXX YYYY ZZZZ ????

 

Your x, y, z values for that part are listed, and the camera lists several lines for movement, and more than likely other actions that are yet to be determined.

 

Finding which cutscene to edit could be a trail-and-error test. I would recommend making backups of your scene files before you make a mistake.

  • Like 1
Link to comment
Share on other sites

 

I really wish I understood what was being talked about. I don't understand how you guys know what to change. ;~; I'll learn eventually, but it's intimidating.

 

JSA. If you can make a tool that edits cutscenes easly, I'd be all over that.

A good start is to pick a scene that you want to test a certain cutscene, and lok down the list in hex. The list is very neatly divided into two sections which are easy to seperate...

 

The first half of the cutscene info (for one cutscene) is alot of segments split up into random hex of 0-F, the easiest value to find for actor control is 0000000A for Link. If you start with that, the 4 bytes after tell you how many segments. Each segment after those is 3 lines per segement, so if you get say: 0000000A 00000003 <-- the last 4 bytes is how many segements, and in this case it's 3x3 segment lines, which is 9 lines total after before the next actor segment for cutscene control.

 

Each 3 lines is split up into start frame to end frame. Your code might look like this at the start:

 

0000000A 00000003 0000 000A 00C7 0000

 

000A and 00C7 are your start and end frames for that segment (the first one in this example). After the first 8 bytes of that first segment will be 4-byte values per that actor's x, y, and z start positions, then the next three 4 byte chunks after that will be the destination x, y, z for the last frame 00C7.

 

So, for another example, say it looks something like this:

 

0000000A 00000003 0000 000A 00C7 0000

????????? 00000000 00000000 00000000

FFFFFFFF FFFFFFFF FFFFFFFF XXXXXXXX

XXXXXXXX XXXXXXXX

 

In the second line (the 00000000's) will be the starting x, y, z of the start of frame 000A of the cutscene animation, and the other three 4-byte chuncks will be where actor 0000000A (Link in this case) will be at the last frame 00C7.

 

You can use a map editor to find these positions, and if you would like, here are some sites I use to calculate hex values:

http://www.statman.info/conversions/hexadecimal.html  (hex to decimal converter)

and http://www.squarebox.co.uk/hcalc.html (hex calculator)

 

The last 3 XXXXXXXX's are normals, or something, but they don't seem to affect what the actor does in the animation.

 

The rest is figuring out what you want to do.

 

For the second section of the cutscene, it's all camera actions. After each value, say it's the camera actor value with 2 segments, then it might look like this:

00000001 00000002

 

That would be the start of it, which includes the start and end frames before each line for each camera positions.

 

The values are shifted around, but it might have some 4X values in it, but the start of each line can be 000000XX usually. I found out that this value determines the speed of the camera movement. The higher the value, the slower the camera moves. You can even reverse its direction if you change the last four digits to something higher than 8000 (but 8000 would be super slow in the opposite direction).

 

After that 000000XX value is a 4XXXXXXX value, maybe sometimes 3XXXXXXX or 5XXXXXXX (not sure), but you will see four 4-byte chunks, and the last two 4-byte chunks are split into 2-byte sections that determine your x, y, z, and something else (to be determined).

 

So it will be segmented into lines that look something like this:

 

000000?? 4??????? XXXX YYYY ZZZZ ????

 

Your x, y, z values for that part are listed, and the camera lists several lines for movement, and more than likely other actions that are yet to be determined.

 

Finding which cutscene to edit could be a trail-and-error test. I would recommend making backups of your scene files before you make a mistake.

 

 

*OR* you could just use the cutscene tool.

 

I'll upload it again when I get home.

Link to comment
Share on other sites

Ughhh... I hate cutscenes. I was hoping writing some sort of visualizer would help me understand them better, but... it just gets more confusing instead. Doesn't help that I'm probably not parsing them 100% correctly, AND doesn't help that there's no rhyme or reason to the "commands" either <.<

 

Posted Image

 

This is... camera data for... stupid fairy bumps into fence... maybe?

Link to comment
Share on other sites

According to the Wiki, one is the camera position (0x00000001) while the other is the camera focus (i.e. what point the camera is looking at?, 0x00000002), I just forgot what color I gave which...

You should make a visual diagram with photoshop to help you remember that... some arrows pointing to things with text descriptions.

Link to comment
Share on other sites

Ughhh... I hate cutscenes. I was hoping writing some sort of visualizer would help me understand them better, but... it just gets more confusing instead. Doesn't help that I'm probably not parsing them 100% correctly, AND doesn't help that there's no rhyme or reason to the "commands" either <.<

 

Posted Image

 

This is... camera data for... stupid fairy bumps into fence... maybe?

 

I'm impressed.  What can I say, XDaniel can do pretty much anything.

 

 

Anyhow

 

http://www.fileconvoy.com/dfl.php?id=gc43d6ec0aad819f1999283125e750c148469dd703

 

All it does is break the command lines down so they are easier to edit, eand read.  You edit the text files, and then use the tool to put it back into the ROM.

 

It's not much, but it makes swapping cutscene actors easier, and breaks down the lines so that you can edit the rotations, paths, ect. 

 

I've built new scenes using this and the Debug Camera, but it's not real easy to do yet.

 

I'll put out a version that breaks the lines down to something 100% readable in the very near future.  (If XDaniel dosn't beat me to it.)  For now though, eveything is already documented well enough to edit cutscenes.  I personally haven't seen anything superising in the format yet.

Link to comment
Share on other sites

It's possible that the other path, that isn't the camera, is just a reference pointer, kind of like how Link becomes a reference point for the camera during gameplay.

 

So if you want the camera to "rotate", the pointer would have to be placed circling around the camera itself.

Link to comment
Share on other sites

JSA, I thought your tool was difficult to use? If it's user friendly, then sure, but I've asked about it before and I've been told it's a bit hard to use. I can give it a shot though and see.

 

It's still easier than using a hex editor.

 

I'll put out a better version soon which breaks the lines down to something thats 100% readable/editable.

  • Like 1
Link to comment
Share on other sites

World creation cutscene, the part with the rocks and the fog...?

 

...and to curb any potential high-flying hopes for this: If anything, it'll be a glorified hex viewer with some OpenGL stuff bolted on. This will NOT allow cutscene editing, this will NOT be very user-friendly, this WILL have bugs. It's just an experiment.

 

Posted Image

 

Link to comment
Share on other sites

http://magicstone.de/dzd/random/ECDV-1.rar

 

Keep going JSA, I think I'm pretty much done with this. I'll try to get one more thing working - namely simulating camera movement according to the position and focus points in the 3D view - and will release the source in a few days or so, regardless of that feature working or not.

 

Posted Image

 

Link to comment
Share on other sites

I'm interested in using 115 cutscene 06 as my opening cutscene for the game. It's really neat, has a nice dynamic camera angle of Ganondorf's horse running through flames.

 

But the end of the scene puts you into the title screen.

 

Is there a way to have one cutscene go into another cutscene? Say after the opening scene with the Ganondorf horse, it starts out with the fairy flying into Link's house.

Link to comment
Share on other sites

I'm interested in using 115 cutscene 06 as my opening cutscene for the game. It's really neat, has a nice dynamic camera angle of Ganondorf's horse running through flames.

 

But the end of the scene puts you into the title screen.

 

Is there a way to have one cutscene go into another cutscene? Say after the opening scene with the Ganondorf horse, it starts out with the fairy flying into Link's house.

You probably just need to edit your exit values for that map/area (nothing to do with scenes).

Link to comment
Share on other sites

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 usey = start framez = end frame (seems to be repeated)

Edit: Think I found the scene/cutscene values, also think that either the machine code pointers starts 4 bytes earlier than stated, -1 is subtracted from the index, or 67h *4 != 19Ch.Edit 2: set 810669FE to 00EE
Link to comment
Share on other sites

Believe I discovered a new cutscene command.

 

00000009 00000001 XXXXXXXX YYYYYYYY ZZZZZZZZ? No clue what it could be. Found near the end of the dispelled barrier cutscene (offset 1DA40 from start of the Inside Ganon's Castle scene in v1.0)

Link to comment
Share on other sites

I'd imagine it's the number of entries for this command to follow, like with the actor commands (0000000A 0000xxxx [etc]), the difference being that the commands with 00000001 there don't expect / cannot use more than one entry? Would probably make it easier to parse by the game, if every command has the same kind of "header"...

 

EDIT: Also, source for that cutscene visualizer thingy I posted before: http://magicstone.de/dzd/random/ECDV-source.rar

Edited by xdaniel
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
 Share

×
×
  • Create New...

Important Information

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