z_demo documentation (#1327)

* commit old stuff

* progress

* progress

* progress

* progress

* more progress, renaming cues next

* small changes

* enum values added for all actions

* hardcoded values removed when possible

* commands renamed

* first pass of action -> cue

* fix some matches

* some more cleanup

* scriptPtr

* forgot one

* remove cue rot union

* more changes

* some more stuff

* more stuff

* fix matching issues

* some more things

* progress, starting to rename destinations

* small changes

* name some destinations

* more names

* need to switch branch

* progress

* first pass of destination names

* usages fixed

* use destination enum

* fix csdis

* format

* command descriptions

* revert accidental zap changes

* forgot some things

* use a single macro for CutsceneCameraPoint (idk why i didnt think of this sooner)

* typo

* review1

* clarify ruby/sapphire comment

* remove endframe for commands that dont use it

* some more review

* most review, but not all

* scriptPtr -> script, and another small change

* ocarina action

* remove +1 from light settings command, change comment

* actionIndex -> cueIdTemp (i guess)

* _SetCueX -> _SetXFromCue

* format

* tweak fade out seq arg names

* use spline terminology

* more dragorn and engineer review

* misc start/end frame note

* cleanup StartPosRotFromCue vs PosRotFromCue

* cleanup spline terminology

* sPrevCamId -> sReturnToCamId

* comment on debug cs data address

* Cutscene_Init -> Cutscene_InitContext

* single point types are not a list

* remove todo comment

* some more review

* rumble struct names

* some review

* more review

* missed one

* reword pointer comment

* even more review

* match transition terminology with z_play

* change condition and format

* frame count

* command specific structs with alignment

* anon review

* remove unneeded arg from time macro

* yeet `CsCmdGeneric`

* remove unused from single point types

* typo

* compromise attempt -- name endFrame everywhere

* fixes

* fix again

* copied the wrong note

* cutscene data note

* review, format

* compat defines

* idk whats going on man

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
fig02
2022-12-24 13:55:17 -05:00
committed by GitHub
parent 92e03cf747
commit 7927e7b330
130 changed files with 6392 additions and 5954 deletions
+147 -147
View File
@@ -324,155 +324,155 @@ ovl_En_Jj: Rom 00E3E3D0:00E3F9E0 VRam 80A87800:80A88E10 Offset 000964
static CutsceneData D_80A88164[] = {
CS_BEGIN_CUTSCENE(26, 1629),
CS_PLAYER_ACTION_LIST(4),
CS_PLAYER_ACTION(0x0005, 0, 240, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0003, 240, 255, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0006, 255, 285, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0020, 285, 300, 0x0000, 0xC000, 0x0000, -1732, 52, -44, -1537, 109, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_NPC_ACTION_LIST(68, 4),
CS_NPC_ACTION(0x0001, 0, 234, 0x0000, 0x4000, 0x0000, -1665, 52, -44, -1665, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_NPC_ACTION(0x0002, 234, 241, 0x41F8, 0x0000, 0x0000, -1665, 52, -44, -1603, 130, -47, 8.857142448425293f, 11.142857551574707f, -8.857142448425293f),
CS_NPC_ACTION(0x0002, 241, 280, 0x4031, 0x0000, 0x0000, -1603, 130, -47, -549, 130, -52, 27.0256404876709f, 0.0f, -27.0256404876709f),
CS_NPC_ACTION(0x0003, 280, 300, 0x0000, 0x0000, 0x0000, -549, 130, -52, -549, 130, -52, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(67, 5),
CS_NPC_ACTION(0x0001, 0, 93, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 93, 121, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0001, 121, 146, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 146, 241, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0001, 241, 441, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(69, 3),
CS_NPC_ACTION(0x0001, 0, 90, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -33, 9, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 90, 330, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -62, 22, 0.0f, -0.12083332985639572f, 0.0f),
CS_NPC_ACTION(0x0003, 330, 380, 0x0000, 0x0000, 0x0000, 0, -62, 22, 0, -62, 22, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(4),
CS_PLAYER_CUE(0x0005, 0, 240, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0003, 240, 255, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0006, 255, 285, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0020, 285, 300, 0x0000, 0xC000, 0x0000, -1732, 52, -44, -1537, 109, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_ACTOR_CUE_LIST(68, 4),
CS_ACTOR_CUE(0x0001, 0, 234, 0x0000, 0x4000, 0x0000, -1665, 52, -44, -1665, 52, -44, 1.1393037197548209e-29f, 0.0f, 1.401298464324817e-45f),
CS_ACTOR_CUE(0x0002, 234, 241, 0x41F8, 0x0000, 0x0000, -1665, 52, -44, -1603, 130, -47, 8.857142448425293f, 11.142857551574707f, -8.857142448425293f),
CS_ACTOR_CUE(0x0002, 241, 280, 0x4031, 0x0000, 0x0000, -1603, 130, -47, -549, 130, -52, 27.0256404876709f, 0.0f, -27.0256404876709f),
CS_ACTOR_CUE(0x0003, 280, 300, 0x0000, 0x0000, 0x0000, -549, 130, -52, -549, 130, -52, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(67, 5),
CS_ACTOR_CUE(0x0001, 0, 93, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 93, 121, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 121, 146, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 146, 241, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 241, 441, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(69, 3),
CS_ACTOR_CUE(0x0001, 0, 90, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -33, 9, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 90, 330, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -62, 22, 0.0f, -0.12083332985639572f, 0.0f),
CS_ACTOR_CUE(0x0003, 330, 380, 0x0000, 0x0000, 0x0000, 0, -62, 22, 0, -62, 22, 0.0f, 0.0f, 0.0f),
CS_MISC_LIST(1),
CS_MISC(0x000C, 1095, 1161, 0x0000, 0x00000000, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0x00000000, 0x00000000, 0x00000000),
CS_SCENE_TRANS_FX(0x0009, 0, 10),
CS_PLAYER_ACTION_LIST(1),
CS_PLAYER_ACTION(0x0035, 300, 1629, 0x0000, 0x0000, 0x0000, -1630, 52, -52, -1630, 52, -52, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_LIST(0, 1091),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x015C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x016D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x017E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0223),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x7065),
CS_CAM_EYE_LIST(60, 1151),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x015C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x016D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x017E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x0223),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x7065),
CS_CAM_EYE_LIST(90, 351),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0164),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0xAD78),
CS_CAM_EYE_LIST(220, 392),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_EYE_LIST(240, 1331),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0xAC10),
CS_CAM_EYE_LIST(280, 1371),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0xAC10),
CS_CAM_EYE_LIST(310, 1421),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1717, 83, -59, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1717, 83, -59, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1649, 177, -59, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1533, 224, -59, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -1243, 180, -59, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0164),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0xAD78),
CS_CAM_EYE_LIST(355, 1466),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_AT_LIST(0, 1120),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.39994430541992f, -1724, -5, -45, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0xAC10),
CS_CAM_AT_LIST(60, 1180),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.39994430541992f, -1440, 241, 134, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0xAC10),
CS_CAM_AT_LIST(90, 380),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1610, 348, 373, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1610, 348, 373, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 45.39994430541992f, -1610, 348, 373, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 35.399906158447266f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0164),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0xAD78),
CS_CAM_AT_LIST(220, 421),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 70, 45.39994430541992f, -1724, -5, -45, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 45.39994430541992f, -1724, -5, -45, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 6, 45.79994583129883f, -1593, 150, -146, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0x0000),
CS_CAM_AT_LIST(240, 1360),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945068359375f, -1712, 74, -37, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0xAC10),
CS_CAM_AT_LIST(280, 1400),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945068359375f, -1619, 99, -50, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0xAC10),
CS_CAM_AT_LIST(310, 1450),
CS_CAM_AT(CS_CMD_CONTINUE, 0x0B, 30, 90.99960327148438f, -1610, 141, -59, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x09, 10, 90.79960632324219f, -1599, 114, -57, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0xFC, 10, 90.39961242675781f, -1528, 192, -54, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 90.599609375f, -1427, 164, -54, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0xCB, 10, 90.39961242675781f, -1138, 119, -37, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x20, 10, 90.39961242675781f, -832, 50, -51, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.39994430541992f, -836, 35, -51, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39994430541992f, -836, 35, -51, 0x0164),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39994430541992f, -836, 35, -51, 0xAD78),
CS_CAM_AT_LIST(355, 1495),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.60000228881836f, -1706, 111, -6, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.60000228881836f, -1706, 111, -6, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.60000228881836f, -1706, 111, -6, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.60000228881836f, -1721, 82, -42, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_SCENE_TRANS_FX(0x000B, 335, 342),
CS_TERMINATOR(JABU_JABU_INTRO, 345, 395),
CS_NPC_ACTION_LIST(62, 1),
CS_NPC_ACTION(0x0001, 305, 494, 0x0000, 0x0000, 0x0000, -1399, 452, -53, -1399, 452, -53, 0.0f, 0.0f, 0.0f),
CS_TRANSITION(0x0009, 0, 10),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(0x0035, 300, 1629, 0x0000, 0x0000, 0x0000, -1630, 52, -52, -1630, 52, -52, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x015C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x016D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x017E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0223),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x7065),
CS_CAM_EYE_SPLINE(60, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x015C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x016D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x017E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x0223),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39994430541992f, -1532, 251, 222, 0x7065),
CS_CAM_EYE_SPLINE(90, 351),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1698, 382, 455, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 32.99989700317383f, -1694, 380, 451, 0xAD78),
CS_CAM_EYE_SPLINE(220, 392),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39994430541992f, -1641, 95, -41, 0x0000),
CS_CAM_EYE_SPLINE(240, 1331),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945068359375f, -1810, 65, -15, 0xAC10),
CS_CAM_EYE_SPLINE(280, 1371),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945068359375f, -1531, 95, -7, 0xAC10),
CS_CAM_EYE_SPLINE(310, 1421),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1717, 83, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1717, 83, -59, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1649, 177, -59, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1533, 224, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -1243, 180, -59, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39994430541992f, -953, 71, -55, 0xAD78),
CS_CAM_EYE_SPLINE(355, 1466),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.60000228881836f, -1830, 103, 18, 0x0000),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.39994430541992f, -1724, -5, -45, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0xAC10),
CS_CAM_AT_SPLINE(60, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.39994430541992f, -1440, 241, 134, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39994430541992f, -1440, 241, 134, 0xAC10),
CS_CAM_AT_SPLINE(90, 380),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1610, 348, 373, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1610, 348, 373, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 45.39994430541992f, -1610, 348, 373, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 35.399906158447266f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 32.99989700317383f, -1614, 338, 367, 0xAD78),
CS_CAM_AT_SPLINE(220, 421),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 70, 45.39994430541992f, -1724, -5, -45, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 45.39994430541992f, -1724, -5, -45, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 6, 45.79994583129883f, -1593, 150, -146, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39994430541992f, -1531, 152, -75, 0x0000),
CS_CAM_AT_SPLINE(240, 1360),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945068359375f, -1712, 74, -37, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945068359375f, -1712, 74, -37, 0xAC10),
CS_CAM_AT_SPLINE(280, 1400),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945068359375f, -1619, 99, -50, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945068359375f, -1619, 99, -50, 0xAC10),
CS_CAM_AT_SPLINE(310, 1450),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x0B, 30, 90.99960327148438f, -1610, 141, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x09, 10, 90.79960632324219f, -1599, 114, -57, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0xFC, 10, 90.39961242675781f, -1528, 192, -54, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 90.599609375f, -1427, 164, -54, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0xCB, 10, 90.39961242675781f, -1138, 119, -37, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x20, 10, 90.39961242675781f, -832, 50, -51, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.39994430541992f, -836, 35, -51, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39994430541992f, -836, 35, -51, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39994430541992f, -836, 35, -51, 0xAD78),
CS_CAM_AT_SPLINE(355, 1495),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.60000228881836f, -1706, 111, -6, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.60000228881836f, -1706, 111, -6, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.60000228881836f, -1706, 111, -6, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.60000228881836f, -1721, 82, -42, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.60000228881836f, -1721, 82, -42, 0x0000),
CS_TRANSITION(0x000B, 335, 342),
CS_DESTINATION(CS_DEST_JABU_JABU, 345, 395),
CS_ACTOR_CUE_LIST(62, 1),
CS_ACTOR_CUE(0x0001, 305, 494, 0x0000, 0x0000, 0x0000, -1399, 452, -53, -1399, 452, -53, 0.0f, 0.0f, 0.0f),
CS_END(),
};
```
+8 -8
View File
@@ -377,7 +377,7 @@ void func_80A87CEC(EnJj *this, PlayState *play) {
sp1C = temp_v1;
play = play;
func_80A87800(this, &func_80A87EF0);
play->csCtx.segment = &D_80A88164;
play->csCtx.script = &D_80A88164;
gSaveContext.cutsceneTrigger = (u8)1U;
func_8003EBF8(play, &play->colCtx.dyna, (s32) temp_v1->bgId);
func_8005B1A4(play->cameraPtrs[play->activeCamId]);
@@ -415,7 +415,7 @@ void func_80A87CEC(EnJj *this, PlayState *play) {
return;
}
func_80A87800(this, func_80A87EF0);
play->csCtx.segment = &D_80A88164;
play->csCtx.script = &D_80A88164;
gSaveContext.cutsceneTrigger = 1;
func_8003EBF8(play, &play->colCtx.dyna, child->bgId);
func_8005B1A4(GET_ACTIVE_CAM(play));
@@ -434,7 +434,7 @@ void func_80A87CEC(EnJj* this, PlayState* play) {
this->unk_30C--;
} else {
func_80A87800(this, func_80A87EF0);
play->csCtx.segment = &D_80A88164;
play->csCtx.script = &D_80A88164;
gSaveContext.cutsceneTrigger = 1;
func_8003EBF8(play, &play->colCtx.dyna, child->bgId);
func_8005B1A4(GET_ACTIVE_CAM(play));
@@ -516,12 +516,12 @@ This has several problems: firstly, the action function is called with the wrong
`unk40` of an array of `Vec3s`s is `0x40 = 0x6 * 0xA + 0x4`, so is actually `this->skelAnime.jointTable[10].z`
Lastly, what is `play->unk1D94`? It is at `play->csCtx + 0x30`, or `play->csCtx.npcActions + 0x8`, which is `play->csCtx.npcActions[2]` since this is an array of pointers. Hence it is a pointer, and so should be compared to `NULL`. Looking up the sfx Id again, we end up with
Lastly, what is `play->unk1D94`? It is at `play->csCtx + 0x30`, or `play->csCtx.actorCues + 0x8`, which is `play->csCtx.actorCues[2]` since this is an array of pointers. Hence it is a pointer, and so should be compared to `NULL`. Looking up the sfx Id again, we end up with
```C
void EnJj_Update(Actor *thisx, PlayState *play) {
EnJj* this = THIS;
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[2] != NULL)) {
func_80A87D94(this, play);
} else {
this->actionFunc(this, play);
@@ -703,7 +703,7 @@ At the top we have
if (temp_v0 != 2) {
if (temp_v0 != 3) {
```
Firstly, we are now comparing with the value of `play->unk1D94`, not just using a pointer, so we need the first thing in `play->csCtx.npcActions[2]`. This turns out to be `play->csCtx.npcActions[2]->action`.
Firstly, we are now comparing with the value of `play->unk1D94`, not just using a pointer, so we need the first thing in `play->csCtx.actorCues[2]`. This turns out to be `play->csCtx.actorCues[2]->id`.
The if structure here is another classic indicator of a switch: nested, with the same variable compared multiple times. If you were to diff this as-is, you would find that the code is in completely the wrong order. Reading how the ifs work, we see that if `temp_v0` is `1`, it executes the outermost else block, if it is `2`, the middle, if `3`, the innermost, and if it is anything else, the contents of the innermost if. Hence this becomes
```C
@@ -719,7 +719,7 @@ void func_80A87D94(EnJj *this, PlayState *play) {
u16 temp_v1_3;
u16 phi_v1;
switch (play->csCtx.npcActions[2]->action) {
switch (play->csCtx.actorCues[2]->id) {
case 1:
temp_v1_3 = this->unk_30A;
phi_v1 = temp_v1_3;
@@ -785,7 +785,7 @@ As usual, most of the remaining temps look fake. The only one that does not is p
```C
void func_80A87D94(EnJj* this, PlayState* play) {
switch (play->csCtx.npcActions[2]->action) {
switch (play->csCtx.actorCues[2]->id) {
case 1:
if ((this->unk_30A & 2) != 0) {
this->unk_30E = 0;
+11 -11
View File
@@ -770,14 +770,14 @@ DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX,
f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type,
GraphicsContext* gfxCtx);
void DebugDisplay_DrawObjects(PlayState* play);
void func_8006450C(PlayState* play, CutsceneContext* csCtx);
void func_80064520(PlayState* play, CutsceneContext* csCtx);
void func_80064534(PlayState* play, CutsceneContext* csCtx);
void func_80064558(PlayState* play, CutsceneContext* csCtx);
void func_800645A0(PlayState* play, CutsceneContext* csCtx);
void Cutscene_InitContext(PlayState* play, CutsceneContext* csCtx);
void Cutscene_StartManual(PlayState* play, CutsceneContext* csCtx);
void Cutscene_StopManual(PlayState* play, CutsceneContext* csCtx);
void Cutscene_UpdateManual(PlayState* play, CutsceneContext* csCtx);
void Cutscene_UpdateScripted(PlayState* play, CutsceneContext* csCtx);
void Cutscene_HandleEntranceTriggers(PlayState* play);
void Cutscene_HandleConditionalTriggers(PlayState* play);
void Cutscene_SetSegment(PlayState* play, void* segment);
void Cutscene_SetScript(PlayState* play, void* script);
void* MemCpy(void* dest, const void* src, s32 len);
void GetItem_Draw(PlayState* play, s16 drawId);
void SfxSource_InitAll(PlayState* play);
@@ -786,10 +786,10 @@ void SfxSource_PlaySfxAtFixedWorldPos(PlayState* play, Vec3f* worldPos, s32 dura
u16 QuestHint_GetSariaTextId(PlayState* play);
u16 QuestHint_GetNaviTextId(PlayState* play);
u16 Text_GetFaceReaction(PlayState* play, u32 reactionSet);
void Flags_UnsetAllEnv(PlayState* play);
void Flags_SetEnv(PlayState* play, s16 flag);
void Flags_UnsetEnv(PlayState* play, s16 flag);
s32 Flags_GetEnv(PlayState* play, s16 flag);
void CutsceneFlags_UnsetAll(PlayState* play);
void CutsceneFlags_Set(PlayState* play, s16 flag);
void CutsceneFlags_Unset(PlayState* play, s16 flag);
s32 CutsceneFlags_Get(PlayState* play, s16 flag);
s32 func_8006CFC0(s32 sceneId);
void func_8006D074(PlayState* play);
void func_8006D0AC(PlayState* play);
@@ -1667,7 +1667,7 @@ OcarinaStaff* AudioOcarina_GetPlayingStaff(void);
OcarinaStaff* AudioOcarina_GetPlaybackStaff(void);
void AudioOcarina_MemoryGameInit(u8 minigameRound);
s32 AudioOcarina_MemoryGameNextNote(void);
void AudioOcarina_PlayLongScarecrowAfterCredits(void);
void AudioOcarina_PlayLongScarecrowSong(void);
void AudioDebug_Draw(GfxPrint* printer);
void AudioDebug_ScrPrt(const char* str, u16 num);
void func_800F3054(void);
+1
View File
@@ -200,6 +200,7 @@
#define R_ENABLE_PLAY_LOGS HREG(63)
#define R_EN_GOROIWA_SPEED mREG(12)
#define R_NAVI_MSG_REGION_ALPHA nREG(87)
#define R_USE_DEBUG_CUTSCENE dREG(95)
#define R_HREG_MODE HREG(80) // see `HRegMode` for mode options
+8 -6
View File
@@ -98,7 +98,7 @@ extern u64 gMojiFontTex[]; // original name: "font_ff"
extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX];
extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;
extern u8 gBossMarkState;
extern void* D_8012D1F0;
extern void* gDebugCutsceneScript;
extern s32 gScreenWidth;
extern s32 gScreenHeight;
extern Mtx gMtxClear;
@@ -168,10 +168,12 @@ extern u8 gSampleBankTable[];
extern SaveContext gSaveContext;
extern RegEditor* gRegEditor;
extern u16 D_8015FCC0;
extern u16 D_8015FCC2;
extern u16 D_8015FCC4;
extern u8 D_8015FCC8;
extern u16 gCamAtSplinePointsAppliedFrame;
extern u16 gCamEyePointAppliedFrame;
extern u16 gCamAtPointAppliedFrame;
extern u8 gUseCutsceneCam;
extern u8 gCustomLensFlareOn;
extern Vec3f gCustomLensFlarePos;
extern s16 gLensFlareScale;
@@ -182,7 +184,7 @@ extern MapData* gMapData;
extern f32 gBossMarkScale;
extern PauseMapMarksData* gLoadedPauseMarkDataTable;
extern s32 gTrnsnUnkState;
extern Color_RGBA8_u32 D_801614B0;
extern Color_RGBA8_u32 gVisMonoColor;
extern PreNmiBuff* gAppNmiBufferPtr;
extern Scheduler gScheduler;
extern uintptr_t gSegments[NUM_SEGMENTS];
+15 -15
View File
@@ -342,19 +342,19 @@ typedef struct {
typedef struct {
/* 0x00 */ char unk_00[0x4];
/* 0x04 */ void* segment;
/* 0x08 */ u8 state;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ u16 frames;
/* 0x12 */ u16 unk_12;
/* 0x14 */ s32 subCamId;
/* 0x18 */ u16 unk_18;
/* 0x1A */ u8 unk_1A;
/* 0x1B */ u8 unk_1B;
/* 0x1C */ CutsceneCameraPoint* subCamLookAtPoints;
/* 0x20 */ CutsceneCameraPoint* subCamEyePoints;
/* 0x24 */ CsCmdActorAction* linkAction;
/* 0x28 */ CsCmdActorAction* npcActions[10]; // "npcdemopnt"
/* 0x04 */ void* script;
/* 0x08 */ u8 state;
/* 0x0C */ f32 timer;
/* 0x10 */ u16 curFrame; // current frame of the script that is running
/* 0x12 */ u16 unk_12; // set but never used
/* 0x14 */ s32 subCamId;
/* 0x18 */ u16 camEyeSplinePointsAppliedFrame; // stores the frame the cam eye spline points data was last applied on
/* 0x1A */ u8 camAtReady; // cam `at` data is ready to be applied
/* 0x1B */ u8 camEyeReady; // cam `eye` data is ready to be applied
/* 0x1C */ CutsceneCameraPoint* camAtPoints;
/* 0x20 */ CutsceneCameraPoint* camEyePoints;
/* 0x24 */ CsCmdActorCue* playerCue;
/* 0x28 */ CsCmdActorCue* actorCues[10]; // "npcdemopnt"
} CutsceneContext; // size = 0x50
typedef struct {
@@ -1146,7 +1146,7 @@ typedef struct PlayState {
/* 0x11DE0 */ Mtx* billboardMtx;
/* 0x11DE4 */ u32 gameplayFrames;
/* 0x11DE8 */ u8 linkAgeOnLoad;
/* 0x11DE9 */ u8 unk_11DE9;
/* 0x11DE9 */ u8 haltAllActors;
/* 0x11DEA */ u8 spawn;
/* 0x11DEB */ u8 numActorEntries;
/* 0x11DEC */ u8 numRooms;
@@ -1169,7 +1169,7 @@ typedef struct PlayState {
/* 0x11E5D */ s8 bombchuBowlingStatus; // "bombchu_game_flag"
/* 0x11E5E */ u8 transitionType;
/* 0x11E60 */ CollisionCheckContext colChkCtx;
/* 0x120FC */ u16 envFlags[20];
/* 0x120FC */ u16 cutsceneFlags[20];
/* 0x12124 */ PreRender pauseBgPreRender;
/* 0x12174 */ char unk_12174[0x53];
/* 0x121C7 */ s8 unk_121C7;
+487 -259
View File
@@ -3,140 +3,6 @@
#include "ultra64.h"
typedef struct {
/* 0x00 */ u16 entrance; // entrance index upon which the cutscene should trigger
/* 0x02 */ u8 ageRestriction; // 0 for adult only, 1 for child only, 2 for both ages
/* 0x03 */ u8 flag; // eventChkInf flag bound to the entrance cutscene
/* 0x04 */ void* segAddr; // segment offset location of the cutscene
} EntranceCutscene; // size = 0x8
typedef struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
/* 0x02 */ u16 nextPointFrame;
/* 0x04 */ f32 viewAngle; // in degrees
/* 0x08 */ Vec3s pos;
} CutsceneCameraPoint; // size = 0x10
typedef struct {
/* 0x00 */ Vec3f at;
/* 0x0C */ Vec3f eye;
/* 0x18 */ s16 roll;
/* 0x1A */ s16 fov;
} CutsceneCameraDirection; // size = 0x1C
typedef struct {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 relativeToPlayer;
} CutsceneCameraMove; // size = 0xC
typedef struct {
/* 0x00 */ u16 base;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdBase; // size = 0x6
typedef struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 setting;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdEnvLighting; // size = 0x6
typedef struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 sequence;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdMusicChange; // size = 0x6
typedef struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
} CsCmdMusicFade; // size = 0x6
typedef struct {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u8 unk_06;
/* 0x07 */ u8 unk_07;
/* 0x08 */ u8 unk_08;
} CsCmdUnknown9; // size = 0xA
typedef struct {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u8 hour;
/* 0x07 */ u8 minute;
} CsCmdDayTime; // size = 0x8
typedef struct {
/* 0x00 */ u16 base;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u16 type;
/* 0x08 */ u16 textId1;
/* 0x0A */ u16 textId2;
} CsCmdTextbox; // size = 0xC
typedef struct {
/* 0x00 */ u16 action; // "dousa"
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
union {
/* 0x06 */ Vec3s rot;
/* 0x06 */ Vec3us urot;
};
/* 0x0C */ Vec3i startPos;
/* 0x18 */ Vec3i endPos;
/* 0x24 */ Vec3i normal;
} CsCmdActorAction; // size = 0x30
typedef enum {
CS_STATE_IDLE,
CS_STATE_SKIPPABLE_INIT,
CS_STATE_SKIPPABLE_EXEC,
CS_STATE_UNSKIPPABLE_INIT,
CS_STATE_UNSKIPPABLE_EXEC
} CutsceneState;
typedef enum {
CS_CMD_00 = 0x0000,
CS_CMD_CAM_EYE = 0x0001,
CS_CMD_CAM_AT = 0x0002,
CS_CMD_MISC = 0x0003,
CS_CMD_SET_LIGHTING = 0x0004,
CS_CMD_CAM_EYE_REL_TO_PLAYER = 0x0005,
CS_CMD_CAM_AT_REL_TO_PLAYER = 0x0006,
CS_CMD_07 = 0x0007,
CS_CMD_08 = 0x0008,
CS_CMD_09 = 0x0009,
CS_CMD_TEXTBOX = 0x0013,
CS_CMD_SET_PLAYER_ACTION = 0x000A,
CS_CMD_SET_ACTOR_ACTION_1 = 0x000F,
CS_CMD_SET_ACTOR_ACTION_2 = 0x000E,
CS_CMD_SET_ACTOR_ACTION_3 = 0x0019,
CS_CMD_SET_ACTOR_ACTION_4 = 0x001D,
CS_CMD_SET_ACTOR_ACTION_5 = 0x001E,
CS_CMD_SET_ACTOR_ACTION_6 = 0x002C,
CS_CMD_SET_ACTOR_ACTION_7 = 0x001F,
CS_CMD_SET_ACTOR_ACTION_8 = 0x0031,
CS_CMD_SET_ACTOR_ACTION_9 = 0x003E,
CS_CMD_SET_ACTOR_ACTION_10 = 0x008F,
CS_CMD_SCENE_TRANS_FX = 0x002D,
CS_CMD_NOP = 0x000B,
CS_CMD_PLAYBGM = 0x0056,
CS_CMD_STOPBGM = 0x0057,
CS_CMD_FADEBGM = 0x007C,
CS_CMD_SETTIME = 0x008C,
CS_CMD_TERMINATOR = 0x03E8,
CS_CMD_END = 0xFFFF
} CutsceneCmd;
/**
* Special type for blocks of cutscene data, asm-processor checks
* arrays for CutsceneData type and converts floats within the array
@@ -158,131 +24,493 @@ typedef union CutsceneData {
s8 b[4];
} CutsceneData;
#define CS_CMD_CONTINUE 0
#define CS_CMD_STOP -1
// TODO confirm correctness, clarify names
typedef enum {
/* 0x00 */ INVALID_DESTINATION_0,
/* 0x01 */ CUTSCENE_MAP_GANON_HORSE,
/* 0x02 */ CUTSCENE_MAP_THREE_GODESSES_POST_DEKU_TREE,
/* 0x03 */ GERUDO_VALLEY_DIN,
/* 0x04 */ DEATH_MOUNTAIN_TRAIL_NAYRU,
/* 0x05 */ KOKIRI_FOREST_FARORE,
/* 0x06 */ CUTSCENE_MAP_TRIFORCE_CREATION,
/* 0x07 */ KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD,
/* 0x08 */ TEMPLE_OF_TIME_AFTER_USE_MS,
/* 0x09 */ GERUDO_VALLEY_DIN_2,
/* 0x0A */ LINKS_HOUSE_INTRO,
/* 0x0B */ KOKIRI_FOREST_INTRO,
/* 0x0C */ DEATH_MOUNTAIN_TRAIL_AFTER_GORON_RUBY,
/* 0x0D */ ZORAS_FOUNTAIN_AFTER_ZORAS_SAPPHIRE,
/* 0x0E */ KOKIRI_FOREST_AFTER_KOKIRI_EMERALD,
/* 0x0F */ TEMPLE_OF_TIME_KOKIRI_EMERALD, //unused
/* 0x10 */ TEMPLE_OF_TIME_GORON_RUBY, //unused
/* 0x11 */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE, //unused
/* 0x12 */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST,
/* 0x13 */ DEATH_MOUNTAIN_TRAIL_AFTER_INTRO,
/* 0x14 */ INVALID_DESTINATION_14,
/* 0x15 */ LAKE_HYLIA_WATER_RISES,
/* 0x16 */ DESERT_COLOSSUS_REQUIEM,
/* 0x17 */ CUTSCENE_MAP_CURSE_YOU,
/* 0x18 */ JABU_JABU_INTRO,
/* 0x19 */ CHAMBER_OF_SAGES_LIGHT_MEDALLION,
/* 0x1A */ TEMPLE_OF_TIME_KOKIRI_EMERALD_2, //duplicate of 0x000F
/* 0x1B */ TEMPLE_OF_TIME_GORON_RUBY_2, //duplicate of 0x0010
/* 0x1C */ TEMPLE_OF_TIME_ZORAS_SAPPHIRE_2, //duplicate of 0x0011
/* 0x1D */ CHAMBER_OF_SAGES_FOREST_MEDALLION,
/* 0x1E */ CHAMBER_OF_SAGES_FIRE_MEDALLION,
/* 0x1F */ CHAMBER_OF_SAGES_WATER_MEDALLION,
/* 0x20 */ HYRULE_FIELD_FLASHBACK, //lacs part 4
/* 0x21 */ HYRULE_FIELD_AFTER_LAKE_HYLIA_OWL,
/* 0x22 */ CUTSCENE_MAP_GANON_AFTER_USE_MS,
/* 0x23 */ HYRULE_FIELD_INTRO_ZELDA_ESCAPE,
/* 0x24 */ INVALID_DESTINATION_24,
/* 0x25 */ INVALID_DESTINATION_25,
/* 0x26 */ CUTSCENE_MAP_SHEIKAH_LEGEND, //lacs part 2
/* 0x27 */ TEMPLE_OF_TIME_ZELDA_REVEAL, //lacs part 3
/* 0x28 */ TEMPLE_OF_TIME_GET_LIGHT_ARROWS, //lacs part 5
/* 0x29 */ LAKE_HYLIA_AFTER_BLUE_WARP,
/* 0x2A */ KAKARIKO_VILLAGE_DRAIN_WELL,
/* 0x2B */ WINDMILL_AFTER_DRAIN_WELL,
/* 0x2C */ TEMPLE_OF_TIME_AFTER_DOOR_OF_TIME_OPENS,
/* 0x2D */ INVALID_DESTINATION_2D,
/* 0x2E */ TEMPLE_OF_TIME_AFTER_USE_MS_FIRST_2, // duplicate of 0x0012
/* 0x2F */ KAKARIKO_VILLAGE_NOCTURNE_PART_2,
/* 0x30 */ DESERT_COLOSSUS_AFTER_REQUIEM,
/* 0x31 */ TEMPLE_OF_TIME_AFTER_LIGHT_ARROWS,
/* 0x32 */ KAKARIKO_VILLAGE_AFTER_NOCTURNE,
/* 0x33 */ HYRULE_FIELD_IMPA_ESCORT_CS,
/* 0x34 */ TEMPLE_OF_TIME_SONG_OF_TIME,
/* 0x35 */ HYRULE_FIELD_AFTER_SONG_OF_TIME,
/* 0x36 */ GERUDO_VALLEY_CREDITS,
/* 0x37 */ GERUDO_FORTRESS_CREDITS,
/* 0x38 */ KAKARIKO_VILLAGE_CREDITS,
/* 0x39 */ DEATH_MOUNTAIN_TRAIL_CREDITS_1,
/* 0x3A */ GORON_CITY_CREDITS, // unused?
/* 0x3B */ LAKE_HYLIA_CREDITS,
/* 0x3C */ ZORAS_FOUNTAIN_CREDITS, // unused
/* 0x3D */ ZORAS_DOMAIN_CREDITS,
/* 0x3E */ KOKIRI_FOREST_CREDITS_1,
/* 0x3F */ KOKIRI_FOREST_CREDITS_2,
/* 0x40 */ HYRULE_FIELD_CREDITS,
/* 0x41 */ LON_LON_RANCH_CREDITS_1,
/* 0x42 */ KAKARIKO_VILLAGE_AFTER_TRAIL_OWL,
/* 0x43 */ HTRULE_FIELD_UNUSED_ENTRANCE,
/* 0x44 */ CUTSCENE_MAP_FIRE,
/* 0x45 */ KOKIRI_FOREST_POST_FOREST_MEDALLION,
/* 0x46 */ DEATH_MOUNTAIN_TRAIL_CREDITS_2,
/* 0x47 */ TEMPLE_OF_TIME_CREDITS,
/* 0x48 */ ZELDAS_COURTYARD_CREDITS,
/* 0x49 */ LON_LON_RANCH_CREDITS_1_2, // duplicate of 0x0041
/* 0x4A */ LON_LON_RANCH_CREDITS_2,
/* 0x4B */ LON_LON_RANCH_CREDITS_3,
/* 0x4C */ LON_LON_RANCH_CREDITS_4,
/* 0x4D */ LON_LON_RANCH_CREDITS_5,
/* 0x4E */ LON_LON_RANCH_CREDITS_6,
/* 0x4F */ LON_LON_RANCH_NO_CS_1,
/* 0x50 */ LON_LON_RANCH_NO_CS_2,
/* 0x51 */ LON_LON_RANCH_NO_CS_3,
/* 0x52 */ LON_LON_RANCH_NO_CS_4,
/* 0x53 */ LON_LON_RANCH_NO_CS_5,
/* 0x54 */ LON_LON_RANCH_NO_CS_6,
/* 0x55 */ LON_LON_RANCH_NO_CS_7,
/* 0x56 */ LON_LON_RANCH_NO_CS_8,
/* 0x57 */ LON_LON_RANCH_NO_CS_9,
/* 0x58 */ LON_LON_RANCH_NO_CS_10,
/* 0x59 */ LON_LON_RANCH_NO_CS_11,
/* 0x5A */ LON_LON_RANCH_NO_CS_12,
/* 0x5B */ LON_LON_RANCH_NO_CS_13,
/* 0x5C */ LON_LON_RANCH_NO_CS_14,
/* 0x5D */ LON_LON_RANCH_NO_CS_15,
/* 0x5E */ LON_LON_RANCH_NO_CS_EPONAS_SONG,
/* 0x5F */ CONDITIONAL_DESTINATION, // TODO more descriptive name?
/* 0x60 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP,
/* 0x61 */ GRAVEYARD_AFTER_SHADOW_BLUE_WARP,
/* 0x62 */ DEATH_MOUNTAIN_CRATER_AFTER_FIRE_BLUE_WARP,
/* 0x63 */ SACRED_FOREST_MEADOW_AFTER_FOREST_BLUE_WARP,
/* 0x64 */ KOKIRI_FOREST_AFTER_FOREST_BLUE_WARP,
/* 0x65 */ DESERT_COLOSSUS_AFTER_SILVER_GAUNTLETS,
/* 0x66 */ TEMPLE_OF_TIME_FRONT_OF_PEDESTAL,
/* 0x67 */ HYRULE_FIELD_TITLE_SCREEN,
/* 0x68 */ SPIRIT_TEMPLE_BOSS_TITLE_SCREEN,
/* 0x69 */ GRAVEYARD_SUNS_SONG,
/* 0x6A */ ROYAL_FAMILYS_TOMB_SUNS_SONG,
/* 0x6B */ GANONS_CASTLE_AFTER_FOREST_TRIAL,
/* 0x6C */ GANONS_CASTLE_AFTER_WATER_TRIAL,
/* 0x6D */ GANONS_CASTLE_AFTER_SHADOW_TRIAL,
/* 0x6E */ GANONS_CASTLE_AFTER_FIRE_TRIAL,
/* 0x6F */ GANONS_CASTLE_AFTER_LIGHT_TRIAL,
/* 0x70 */ GANONS_CASTLE_AFTER_SPIRIT_TRIAL,
/* 0x71 */ GANONS_CASTLE_DISPEL_BARRIER_IF_CONDITIONS,
/* 0x72 */ HYRULE_FIELD_INTRO,
/* 0x73 */ HYRULE_FIELD_AFTER_IMPA_ESCORT,
/* 0x74 */ DESERT_COLOSSUS_SPIRIT_BLUE_WARP_2,
/* 0x75 */ HYRULE_FIELD_SKY,
/* 0x76 */ GANON_BATTLE_TOWER_COLLAPSE,
/* 0x77 */ ZELDAS_COURTYARD_RECEIVE_LETTER
} CutsceneTerminatorDestination;
/* 0 */ CS_STATE_IDLE,
/* 1 */ CS_STATE_START,
/* 2 */ CS_STATE_RUN,
/* 3 */ CS_STATE_STOP,
/* 4 */ CS_STATE_RUN_UNSTOPPABLE
} CutsceneState;
typedef enum {
/* 0x0001 */ CS_CMD_CAM_EYE_SPLINE = 0x01,
/* 0x0002 */ CS_CMD_CAM_AT_SPLINE,
/* 0x0003 */ CS_CMD_MISC,
/* 0x0004 */ CS_CMD_LIGHT_SETTING,
/* 0x0005 */ CS_CMD_CAM_EYE_SPLINE_REL_TO_PLAYER,
/* 0x0006 */ CS_CMD_CAM_AT_SPLINE_REL_TO_PLAYER,
/* 0x0007 */ CS_CMD_CAM_EYE,
/* 0x0008 */ CS_CMD_CAM_AT,
/* 0x0009 */ CS_CMD_RUMBLE_CONTROLLER,
/* 0x000A */ CS_CMD_PLAYER_CUE,
/* 0x000B */ CS_CMD_UNIMPLEMENTED_B,
/* 0x000D */ CS_CMD_UNIMPLEMENTED_D = 0x0D,
/* 0x000E */ CS_CMD_ACTOR_CUE_1_0,
/* 0x000F */ CS_CMD_ACTOR_CUE_0_0,
/* 0x0010 */ CS_CMD_ACTOR_CUE_1_1,
/* 0x0011 */ CS_CMD_ACTOR_CUE_0_1,
/* 0x0012 */ CS_CMD_ACTOR_CUE_0_2,
/* 0x0013 */ CS_CMD_TEXT,
/* 0x0015 */ CS_CMD_UNIMPLEMENTED_15 = 0x15,
/* 0x0016 */ CS_CMD_UNIMPLEMENTED_16,
/* 0x0017 */ CS_CMD_ACTOR_CUE_0_3,
/* 0x0018 */ CS_CMD_ACTOR_CUE_1_2,
/* 0x0019 */ CS_CMD_ACTOR_CUE_2_0,
/* 0x001B */ CS_CMD_UNIMPLEMENTED_1B = 0x1B,
/* 0x001C */ CS_CMD_UNIMPLEMENTED_1C,
/* 0x001D */ CS_CMD_ACTOR_CUE_3_0,
/* 0x001E */ CS_CMD_ACTOR_CUE_4_0,
/* 0x001F */ CS_CMD_ACTOR_CUE_6_0,
/* 0x0020 */ CS_CMD_UNIMPLEMENTED_20,
/* 0x0021 */ CS_CMD_UNIMPLEMENTED_21,
/* 0x0022 */ CS_CMD_ACTOR_CUE_0_4,
/* 0x0023 */ CS_CMD_ACTOR_CUE_1_3,
/* 0x0024 */ CS_CMD_ACTOR_CUE_2_1,
/* 0x0025 */ CS_CMD_ACTOR_CUE_3_1,
/* 0x0026 */ CS_CMD_ACTOR_CUE_4_1,
/* 0x0027 */ CS_CMD_ACTOR_CUE_0_5,
/* 0x0028 */ CS_CMD_ACTOR_CUE_1_4,
/* 0x0029 */ CS_CMD_ACTOR_CUE_2_2,
/* 0x002A */ CS_CMD_ACTOR_CUE_3_2,
/* 0x002B */ CS_CMD_ACTOR_CUE_4_2,
/* 0x002C */ CS_CMD_ACTOR_CUE_5_0,
/* 0x002D */ CS_CMD_TRANSITION,
/* 0x002E */ CS_CMD_ACTOR_CUE_0_6,
/* 0x002F */ CS_CMD_ACTOR_CUE_4_3,
/* 0x0030 */ CS_CMD_ACTOR_CUE_1_5,
/* 0x0031 */ CS_CMD_ACTOR_CUE_7_0,
/* 0x0032 */ CS_CMD_ACTOR_CUE_2_3,
/* 0x0033 */ CS_CMD_ACTOR_CUE_3_3,
/* 0x0034 */ CS_CMD_ACTOR_CUE_6_1,
/* 0x0035 */ CS_CMD_ACTOR_CUE_3_4,
/* 0x0036 */ CS_CMD_ACTOR_CUE_4_4,
/* 0x0037 */ CS_CMD_ACTOR_CUE_5_1,
/* 0x0039 */ CS_CMD_ACTOR_CUE_6_2 = 0x39,
/* 0x003A */ CS_CMD_ACTOR_CUE_6_3,
/* 0x003B */ CS_CMD_UNIMPLEMENTED_3B,
/* 0x003C */ CS_CMD_ACTOR_CUE_7_1,
/* 0x003D */ CS_CMD_UNIMPLEMENTED_3D,
/* 0x003E */ CS_CMD_ACTOR_CUE_8_0,
/* 0x003F */ CS_CMD_ACTOR_CUE_3_5,
/* 0x0040 */ CS_CMD_ACTOR_CUE_1_6,
/* 0x0041 */ CS_CMD_ACTOR_CUE_3_6,
/* 0x0042 */ CS_CMD_ACTOR_CUE_3_7,
/* 0x0043 */ CS_CMD_ACTOR_CUE_2_4,
/* 0x0044 */ CS_CMD_ACTOR_CUE_1_7,
/* 0x0045 */ CS_CMD_ACTOR_CUE_2_5,
/* 0x0046 */ CS_CMD_ACTOR_CUE_1_8,
/* 0x0047 */ CS_CMD_UNIMPLEMENTED_47,
/* 0x0048 */ CS_CMD_ACTOR_CUE_2_6,
/* 0x0049 */ CS_CMD_UNIMPLEMENTED_49,
/* 0x004A */ CS_CMD_ACTOR_CUE_2_7,
/* 0x004B */ CS_CMD_ACTOR_CUE_3_8,
/* 0x004C */ CS_CMD_ACTOR_CUE_0_7,
/* 0x004D */ CS_CMD_ACTOR_CUE_5_2,
/* 0x004E */ CS_CMD_ACTOR_CUE_1_9,
/* 0x004F */ CS_CMD_ACTOR_CUE_4_5,
/* 0x0050 */ CS_CMD_ACTOR_CUE_1_10,
/* 0x0051 */ CS_CMD_ACTOR_CUE_2_8,
/* 0x0052 */ CS_CMD_ACTOR_CUE_3_9,
/* 0x0053 */ CS_CMD_ACTOR_CUE_4_6,
/* 0x0054 */ CS_CMD_ACTOR_CUE_5_3,
/* 0x0055 */ CS_CMD_ACTOR_CUE_0_8,
/* 0x0056 */ CS_CMD_START_SEQ,
/* 0x0057 */ CS_CMD_STOP_SEQ,
/* 0x0058 */ CS_CMD_ACTOR_CUE_6_4,
/* 0x0059 */ CS_CMD_ACTOR_CUE_7_2,
/* 0x005A */ CS_CMD_ACTOR_CUE_5_4,
/* 0x005D */ CS_CMD_ACTOR_CUE_0_9 = 0x5D,
/* 0x005E */ CS_CMD_ACTOR_CUE_1_11,
/* 0x0069 */ CS_CMD_ACTOR_CUE_0_10 = 0x69,
/* 0x006A */ CS_CMD_ACTOR_CUE_2_9,
/* 0x006B */ CS_CMD_ACTOR_CUE_0_11,
/* 0x006C */ CS_CMD_ACTOR_CUE_3_10,
/* 0x006D */ CS_CMD_UNIMPLEMENTED_6D,
/* 0x006E */ CS_CMD_ACTOR_CUE_0_12,
/* 0x006F */ CS_CMD_ACTOR_CUE_7_3,
/* 0x0070 */ CS_CMD_UNIMPLEMENTED_70,
/* 0x0071 */ CS_CMD_UNIMPLEMENTED_71,
/* 0x0072 */ CS_CMD_ACTOR_CUE_7_4,
/* 0x0073 */ CS_CMD_ACTOR_CUE_6_5,
/* 0x0074 */ CS_CMD_ACTOR_CUE_1_12,
/* 0x0075 */ CS_CMD_ACTOR_CUE_2_10,
/* 0x0076 */ CS_CMD_ACTOR_CUE_1_13,
/* 0x0077 */ CS_CMD_ACTOR_CUE_0_13,
/* 0x0078 */ CS_CMD_ACTOR_CUE_1_14,
/* 0x0079 */ CS_CMD_ACTOR_CUE_2_11,
/* 0x007B */ CS_CMD_ACTOR_CUE_0_14 = 0x7B,
/* 0x007C */ CS_CMD_FADE_OUT_SEQ,
/* 0x007D */ CS_CMD_ACTOR_CUE_1_15,
/* 0x007E */ CS_CMD_ACTOR_CUE_2_12,
/* 0x007F */ CS_CMD_ACTOR_CUE_3_11,
/* 0x0080 */ CS_CMD_ACTOR_CUE_4_7,
/* 0x0081 */ CS_CMD_ACTOR_CUE_5_5,
/* 0x0082 */ CS_CMD_ACTOR_CUE_6_6,
/* 0x0083 */ CS_CMD_ACTOR_CUE_1_16,
/* 0x0084 */ CS_CMD_ACTOR_CUE_2_13,
/* 0x0085 */ CS_CMD_ACTOR_CUE_3_12,
/* 0x0086 */ CS_CMD_ACTOR_CUE_7_5,
/* 0x0087 */ CS_CMD_ACTOR_CUE_4_8,
/* 0x0088 */ CS_CMD_ACTOR_CUE_5_6,
/* 0x0089 */ CS_CMD_ACTOR_CUE_6_7,
/* 0x008A */ CS_CMD_ACTOR_CUE_0_15,
/* 0x008B */ CS_CMD_ACTOR_CUE_0_16,
/* 0x008C */ CS_CMD_TIME,
/* 0x008D */ CS_CMD_ACTOR_CUE_1_17,
/* 0x008E */ CS_CMD_ACTOR_CUE_7_6,
/* 0x008F */ CS_CMD_ACTOR_CUE_9_0,
/* 0x0090 */ CS_CMD_ACTOR_CUE_0_17,
/* 0x03E8 */ CS_CMD_DESTINATION = 0x03E8,
/* 0xFFFF */ CS_CMD_END = 0xFFFF
} CutsceneCmd;
typedef enum {
/* 0x00 */ CS_MISC_UNIMPLEMENTED_0,
/* 0x01 */ CS_MISC_RAIN,
/* 0x02 */ CS_MISC_LIGHTNING,
/* 0x03 */ CS_MISC_SET_CSFLAG_0, // also sets flag 2 if in Temple of Time
/* 0x04 */ CS_MISC_UNIMPLEMENTED_4,
/* 0x05 */ CS_MISC_UNIMPLEMENTED_5,
/* 0x06 */ CS_MISC_LIFT_FOG,
/* 0x07 */ CS_MISC_CLOUDY_SKY,
/* 0x08 */ CS_MISC_FADE_KOKIRI_GRASS_ENV_ALPHA,
/* 0x09 */ CS_MISC_SNOW,
/* 0x0A */ CS_MISC_SET_CSFLAG_1,
/* 0x0B */ CS_MISC_DEKU_TREE_DEATH,
/* 0x0C */ CS_MISC_STOP_CUTSCENE,
/* 0x0D */ CS_MISC_TRIFORCE_FLASH,
/* 0x0E */ CS_MISC_SET_LOCKED_VIEWPOINT,
/* 0x0F */ CS_MISC_SHOW_TITLE_CARD,
/* 0x10 */ CS_MISC_QUAKE_START,
/* 0x11 */ CS_MISC_QUAKE_STOP,
/* 0x12 */ CS_MISC_STOP_STORM_AND_ADVANCE_TO_DAY,
/* 0x13 */ CS_MISC_SET_FLAG_FAST_WINDMILL,
/* 0x14 */ CS_MISC_SET_FLAG_WELL_DRAINED,
/* 0x15 */ CS_MISC_SET_FLAG_LAKE_HYLIA_RESTORED,
/* 0x16 */ CS_MISC_VISMONO_BLACK_AND_WHITE,
/* 0x17 */ CS_MISC_VISMONO_SEPIA,
/* 0x18 */ CS_MISC_HIDE_ROOM,
/* 0x19 */ CS_MISC_TIME_ADVANCE_TO_NIGHT,
/* 0x1A */ CS_MISC_SET_TIME_BASED_LIGHT_SETTING,
/* 0x1B */ CS_MISC_RED_PULSATING_LIGHTS,
/* 0x1C */ CS_MISC_HALT_ALL_ACTORS,
/* 0x1D */ CS_MISC_RESUME_ALL_ACTORS,
/* 0x1E */ CS_MISC_SET_CSFLAG_3,
/* 0x1F */ CS_MISC_SET_CSFLAG_4,
/* 0x20 */ CS_MISC_SANDSTORM_FILL,
/* 0x21 */ CS_MISC_SUNSSONG_START,
/* 0x22 */ CS_MISC_FREEZE_TIME,
/* 0x23 */ CS_MISC_LONG_SCARECROW_SONG
} CutsceneMiscType;
typedef enum {
/* 0x00 */ CS_TEXT_NORMAL,
/* 0x01 */ CS_TEXT_CHOICE,
/* 0x02 */ CS_TEXT_OCARINA_ACTION,
/* 0x03 */ CS_TEXT_GORON_RUBY, // use `altTextId1` in the ruby cutscene if sapphire is already obtained
/* 0x04 */ CS_TEXT_ZORA_SAPPHIRE // use `altTextId1` in the sapphire cutscene if ruby is already obtained
} CutsceneTextType;
typedef enum {
/* 0x03 */ CS_FADE_OUT_FANFARE = 3,
/* 0x04 */ CS_FADE_OUT_BGM_MAIN
} CutsceneFadeOutSeqPlayer;
typedef enum {
/* 0x01 */ CS_TRANS_GRAY_FILL_IN = 1, // has hardcoded sounds for some scenes
/* 0x02 */ CS_TRANS_BLUE_FILL_IN,
/* 0x03 */ CS_TRANS_RED_FILL_OUT,
/* 0x04 */ CS_TRANS_GREEN_FILL_OUT,
/* 0x05 */ CS_TRANS_GRAY_FILL_OUT,
/* 0x06 */ CS_TRANS_BLUE_FILL_OUT,
/* 0x07 */ CS_TRANS_RED_FILL_IN,
/* 0x08 */ CS_TRANS_GREEN_FILL_IN,
/* 0x09 */ CS_TRANS_TRIGGER_INSTANCE, // used with `TRANS_MODE_INSTANCE_WAIT`
/* 0x0A */ CS_TRANS_BLACK_FILL_OUT,
/* 0x0B */ CS_TRANS_BLACK_FILL_IN,
/* 0x0C */ CS_TRANS_BLACK_FILL_OUT_TO_HALF, // used with `TRANS_MODE_CS_BLACK_FILL`
/* 0x0D */ CS_TRANS_BLACK_FILL_IN_FROM_HALF
} CutsceneTransitionType;
typedef enum {
/* 0x00 */ CS_DEST_UNIMPLEMENTED_0,
/* 0x01 */ CS_DEST_CUTSCENE_MAP_GANON_HORSE,
/* 0x02 */ CS_DEST_CUTSCENE_MAP_THREE_GODDESSES,
/* 0x03 */ CS_DEST_GERUDO_VALLEY_DIN_PART_1,
/* 0x04 */ CS_DEST_DEATH_MOUNTAIN_TRAIL_NAYRU,
/* 0x05 */ CS_DEST_KOKIRI_FOREST_FARORE,
/* 0x06 */ CS_DEST_CUTSCENE_MAP_TRIFORCE_CREATION,
/* 0x07 */ CS_DEST_KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD,
/* 0x08 */ CS_DEST_TEMPLE_OF_TIME_FROM_MASTER_SWORD,
/* 0x09 */ CS_DEST_GERUDO_VALLEY_DIN_PART_2,
/* 0x0A */ CS_DEST_LINKS_HOUSE_INTRO,
/* 0x0B */ CS_DEST_KOKIRI_FOREST_INTRO,
/* 0x0C */ CS_DEST_DEATH_MOUNTAIN_TRAIL_FROM_GORON_RUBY,
/* 0x0D */ CS_DEST_ZORAS_FOUNTAIN_FROM_ZORAS_SAPPHIRE,
/* 0x0E */ CS_DEST_KOKIRI_FOREST_FROM_KOKIRI_EMERALD,
/* 0x0F */ CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED, // unused
/* 0x10 */ CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED, // unused
/* 0x11 */ CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED, // unused
/* 0x12 */ CS_DEST_TEMPLE_OF_TIME_AFTER_LIGHT_MEDALLION,
/* 0x13 */ CS_DEST_DEATH_MOUNTAIN_TRAIL, // unused
/* 0x14 */ CS_DEST_UNIMPLEMENTED_14,
/* 0x15 */ CS_DEST_LAKE_HYLIA_WATER_RESTORED,
/* 0x16 */ CS_DEST_DESERT_COLOSSUS_REQUIEM, // unused
/* 0x17 */ CS_DEST_CUTSCENE_MAP_GANONDORF_DEFEATED_CREDITS,
/* 0x18 */ CS_DEST_JABU_JABU,
/* 0x19 */ CS_DEST_CHAMBER_OF_SAGES_LIGHT_MEDALLION,
/* 0x1A */ CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED_2, // unused
/* 0x1B */ CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED_2, // unused
/* 0x1C */ CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED_2, // unused
/* 0x1D */ CS_DEST_CHAMBER_OF_SAGES_FOREST_MEDALLION,
/* 0x1E */ CS_DEST_CHAMBER_OF_SAGES_FIRE_MEDALLION,
/* 0x1F */ CS_DEST_CHAMBER_OF_SAGES_WATER_MEDALLION,
/* 0x20 */ CS_DEST_HYRULE_FIELD_FLASHBACK,
/* 0x21 */ CS_DEST_HYRULE_FIELD_FROM_ZELDA_ESCAPE,
/* 0x22 */ CS_DEST_CUTSCENE_MAP_GANONDORF_FROM_MASTER_SWORD, // unused
/* 0x23 */ CS_DEST_HYRULE_FIELD_INTRO_DREAM,
/* 0x24 */ CS_DEST_UNIMPLEMENTED_24,
/* 0x25 */ CS_DEST_UNIMPLEMENTED_25,
/* 0x26 */ CS_DEST_CUTSCENE_MAP_SHEIKAH_LEGEND,
/* 0x27 */ CS_DEST_TEMPLE_OF_TIME_ZELDA_REVEAL,
/* 0x28 */ CS_DEST_TEMPLE_OF_TIME_GET_LIGHT_ARROWS,
/* 0x29 */ CS_DEST_LAKE_HYLIA_FROM_LAKE_RESTORED,
/* 0x2A */ CS_DEST_KAKARIKO_VILLAGE_DRAIN_WELL,
/* 0x2B */ CS_DEST_WINDMILL_FROM_WELL_DRAINED,
/* 0x2C */ CS_DEST_TEMPLE_OF_TIME_FROM_ALL_STONES_RESTORED,
/* 0x2D */ CS_DEST_UNIMPLEMENTED_2D,
/* 0x2E */ CS_DEST_TEMPLE_OF_TIME_AFTER_LIGHT_MEDALLION_ALT, // unused, uses a different transition
/* 0x2F */ CS_DEST_KAKARIKO_VILLAGE_NOCTURNE_PART_2,
/* 0x30 */ CS_DEST_DESERT_COLOSSUS_FROM_REQUIEM,
/* 0x31 */ CS_DEST_TEMPLE_OF_TIME_FROM_LIGHT_ARROWS,
/* 0x32 */ CS_DEST_KAKARIKO_VILLAGE_FROM_NOCTURNE,
/* 0x33 */ CS_DEST_HYRULE_FIELD_FROM_ZELDAS_COURTYARD,
/* 0x34 */ CS_DEST_TEMPLE_OF_TIME_SONG_OF_TIME,
/* 0x35 */ CS_DEST_HYRULE_FIELD_FROM_SONG_OF_TIME,
/* 0x36 */ CS_DEST_GERUDO_VALLEY_CREDITS,
/* 0x37 */ CS_DEST_GERUDO_FORTRESS_CREDITS,
/* 0x38 */ CS_DEST_KAKARIKO_VILLAGE_CREDITS,
/* 0x39 */ CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_1,
/* 0x3A */ CS_DEST_GORON_CITY_CREDITS,
/* 0x3B */ CS_DEST_LAKE_HYLIA_CREDITS,
/* 0x3C */ CS_DEST_ZORAS_FOUNTAIN_CREDITS, // unused, crashes
/* 0x3D */ CS_DEST_ZORAS_DOMAIN_CREDITS,
/* 0x3E */ CS_DEST_KOKIRI_FOREST_CREDITS_PART_1,
/* 0x3F */ CS_DEST_KOKIRI_FOREST_CREDITS_PART_2,
/* 0x40 */ CS_DEST_HYRULE_FIELD_CREDITS,
/* 0x41 */ CS_DEST_LON_LON_RANCH_CREDITS_PART_1_ALT, // unused
/* 0x42 */ CS_DEST_KAKARIKO_VILLAGE_FROM_TRAIL_OWL,
/* 0x43 */ CS_DEST_HYRULE_FIELD_FROM_LAKE_HYLIA_OWL,
/* 0x44 */ CS_DEST_CUTSCENE_MAP_DEKU_SPROUT_PART_2,
/* 0x45 */ CS_DEST_KOKIRI_FOREST_DEKU_SPROUT_PART_3,
/* 0x46 */ CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_2,
/* 0x47 */ CS_DEST_TEMPLE_OF_TIME_CREDITS,
/* 0x48 */ CS_DEST_ZELDAS_COURTYARD_CREDITS,
/* 0x49 */ CS_DEST_LON_LON_RANCH_CREDITS_PART_1,
/* 0x4A */ CS_DEST_LON_LON_RANCH_CREDITS_PART_2,
/* 0x4B */ CS_DEST_LON_LON_RANCH_CREDITS_PART_3,
/* 0x4C */ CS_DEST_LON_LON_RANCH_CREDITS_PART_4,
/* 0x4D */ CS_DEST_LON_LON_RANCH_CREDITS_PART_5,
/* 0x4E */ CS_DEST_LON_LON_RANCH_CREDITS_PART_6,
/* 0x4F */ CS_DEST_LON_LON_RANCH_1, // unused
/* 0x50 */ CS_DEST_LON_LON_RANCH_2, // unused
/* 0x51 */ CS_DEST_LON_LON_RANCH_3, // unused
/* 0x52 */ CS_DEST_LON_LON_RANCH_4, // unused
/* 0x53 */ CS_DEST_LON_LON_RANCH_5, // unused
/* 0x54 */ CS_DEST_LON_LON_RANCH_6, // unused
/* 0x55 */ CS_DEST_LON_LON_RANCH_7, // unused
/* 0x56 */ CS_DEST_LON_LON_RANCH_8, // unused
/* 0x57 */ CS_DEST_LON_LON_RANCH_9, // unused
/* 0x58 */ CS_DEST_LON_LON_RANCH_10, // unused
/* 0x59 */ CS_DEST_LON_LON_RANCH_11, // unused
/* 0x5A */ CS_DEST_LON_LON_RANCH_12, // unused
/* 0x5B */ CS_DEST_LON_LON_RANCH_13, // unused
/* 0x5C */ CS_DEST_LON_LON_RANCH_14, // unused
/* 0x5D */ CS_DEST_LON_LON_RANCH_15, // unused
/* 0x5E */ CS_DEST_LON_LON_RANCH_FROM_EPONAS_SONG,
/* 0x5F */ CS_DEST_STONES_RESTORED_CONDITIONAL, // unused
/* 0x60 */ CS_DEST_DESERT_COLOSSUS_FROM_CHAMBER_OF_SAGES,
/* 0x61 */ CS_DEST_GRAVEYARD_FROM_CHAMBER_OF_SAGES,
/* 0x62 */ CS_DEST_DEATH_MOUNTAIN_CRATER_FROM_CHAMBER_OF_SAGES,
/* 0x63 */ CS_DEST_SACRED_FOREST_MEADOW_WARP_PAD, // unused
/* 0x64 */ CS_DEST_KOKIRI_FOREST_FROM_CHAMBER_OF_SAGES,
/* 0x65 */ CS_DEST_DESERT_COLOSSUS_FROM_NABOORU_CAPTURE,
/* 0x66 */ CS_DEST_TEMPLE_OF_TIME_FRONT_OF_PEDESTAL, // unused
/* 0x67 */ CS_DEST_HYRULE_FIELD_TITLE_SCREEN,
/* 0x68 */ CS_DEST_TITLE_SCREEN_DEMO,
/* 0x69 */ CS_DEST_GRAVEYARD_SUNS_SONG_PART_2,
/* 0x6A */ CS_DEST_ROYAL_FAMILYS_TOMB_SUNS_SONG_PART_3,
/* 0x6B */ CS_DEST_GANONS_CASTLE_DISPEL_FOREST_BEAM,
/* 0x6C */ CS_DEST_GANONS_CASTLE_DISPEL_WATER_BEAM,
/* 0x6D */ CS_DEST_GANONS_CASTLE_DISPEL_SHADOW_BEAM,
/* 0x6E */ CS_DEST_GANONS_CASTLE_DISPEL_FIRE_BEAM,
/* 0x6F */ CS_DEST_GANONS_CASTLE_DISPEL_LIGHT_BEAM,
/* 0x70 */ CS_DEST_GANONS_CASTLE_DISPEL_SPIRIT_BEAM,
/* 0x71 */ CS_DEST_GANONS_CASTLE_DISPEL_BARRIER_CONDITONAL,
/* 0x72 */ CS_DEST_HYRULE_FIELD_FROM_FAIRY_OCARINA,
/* 0x73 */ CS_DEST_HYRULE_FIELD_FROM_IMPA_ESCORT,
/* 0x74 */ CS_DEST_FROM_RAURU_FINAL_MESSAGE_CONDITIONAL,
/* 0x75 */ CS_DEST_HYRULE_FIELD_CREDITS_SKY,
/* 0x76 */ CS_DEST_GANON_BATTLE_TOWER_COLLAPSE,
/* 0x77 */ CS_DEST_ZELDAS_COURTYARD_RECEIVE_LETTER
} CutsceneDestination;
typedef union {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
};
s32 _words[2];
} CsCmdCam; // size = 0x8
typedef union {
struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
};
s32 _words[12];
} CsCmdMisc; // size = 0x30
typedef union {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 settingPlusOne;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
};
s32 _words[12];
} CsCmdLightSetting; // size = 0x30
typedef union {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 seqIdPlusOne;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
};
s32 _words[12];
} CsCmdStartSeq; // size = 0x30
typedef union {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 seqIdPlusOne;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
};
s32 _words[12];
} CsCmdStopSeq; // size = 0x30
typedef union {
struct {
/* 0x00 */ u16 seqPlayer;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
};
s32 _words[12];
} CsCmdFadeOutSeq; // size = 0x30
typedef union {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
/* 0x06 */ u8 sourceStrength;
/* 0x07 */ u8 duration;
/* 0x08 */ u8 decreaseRate;
};
s32 _words[3];
} CsCmdRumble; // size = 0xC
typedef union {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
/* 0x06 */ u8 hour;
/* 0x07 */ u8 minute;
};
s32 _words[3];
} CsCmdTime; // size = 0xC
typedef union {
struct {
/* 0x00 */ u16 destination;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame; // unused
};
s32 _words[2];
} CsCmdDestination; // size = 0x8
typedef union {
struct {
/* 0x00 */ u16 textId; // can also be an ocarina action for `CS_TEXT_OCARINA_ACTION`
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ u16 type;
/* 0x08 */ u16 altTextId1;
/* 0x0A */ u16 altTextId2;
};
s32 _words[3];
} CsCmdText; // size = 0xC
#define CS_TEXT_ID_NONE 0xFFFF
typedef union {
struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
};
s32 _words[2];
} CsCmdTransition; // size = 0x8
typedef union {
struct {
/* 0x00 */ u16 id; // "dousa"
/* 0x02 */ u16 startFrame;
/* 0x04 */ u16 endFrame;
/* 0x06 */ Vec3us rot;
/* 0x0C */ Vec3i startPos;
/* 0x18 */ Vec3i endPos;
};
s32 _words[12];
} CsCmdActorCue; // size = 0x30
typedef union {
struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
/* 0x02 */ u16 nextPointFrame;
/* 0x04 */ f32 viewAngle; // in degrees
/* 0x08 */ Vec3s pos;
};
s32 _words[4];
} CutsceneCameraPoint; // size = 0x10
#define CS_CAM_CONTINUE 0
#define CS_CAM_STOP -1
// todo: remove after ZAPD is updated
#define CS_CMD_CONTINUE CS_CAM_CONTINUE
#define CS_CMD_STOP CS_CAM_STOP
#define CS_CAM_DATA_NOT_APPLIED 0xFFFF
typedef struct {
/* 0x00 */ Vec3f at;
/* 0x0C */ Vec3f eye;
/* 0x18 */ s16 roll;
/* 0x1A */ s16 fov;
} CutsceneCameraDirection; // size = 0x1C
typedef struct {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 relativeToPlayer;
} CutsceneCameraMove; // size = 0xC
#endif
+230 -377
View File
@@ -4,6 +4,23 @@
#include "command_macros_base.h"
#include "z64cutscene.h"
/**
* Cutscene scripts are arrays of `CutsceneData` words, including bit-packed integers and floats.
*
* Most command macros have unused arguments. This is to account for the vanilla assets setting specific values
* that don't end up being used by any code. They can safely be set to anything, as they aren't used in the
* implementation.
*
* It is believed the original tool used for cutscenes handled most commands the same way, using similar
* fields, and the code would have accessed them using common structs. Given this, the unused values observed in vanilla
* assets may appear to map to a variable that makes sense, even if it doesn't end up being used in the code. It
* probably isn't garbage data.
*
* This codebase goes with specialized structs and macros to make it easier to follow the code.
* Note this common struct design is still partially reflected in all commands having a `startFrame` and `endFrame`,
* when sometimes only the `startFrame` matters (as documented).
*/
#ifdef __GNUC__
#define CMD_F(a) {.f = (a)}
#else
@@ -11,445 +28,281 @@
#endif
/**
* ARGS
* s32 totalEntries (e), s32 endFrame (n)
* FORMAT
* eeeeeeee nnnnnnnn
* size = 0x8
* Marks the beginning of a cutscene script.
*/
#define CS_BEGIN_CUTSCENE(totalEntries, endFrame) CMD_W(totalEntries), CMD_W(endFrame)
#define CS_BEGIN_CUTSCENE(totalEntries, frameCount) CMD_W(totalEntries), CMD_W(frameCount)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* 00000001 0001ssss eeee0000
* size = 0xC
* Defines data for `CutsceneCameraPoint`, which can be used with any of the `eye` or `at` camera commands.
*/
#define CS_CAM_POS_LIST CS_CAM_EYE_LIST
#define CS_CAM_EYE_LIST(startFrame, endFrame) \
#define CS_CAM_POINT(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* Declares a list of camera `eye` points that form a spline.
* The points of the spline are interpolated over time to create smooth camera movements.
*/
#define CS_CAM_EYE_SPLINE(startFrame, endFrame) \
CS_CMD_CAM_EYE_SPLINE, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* Declares a list of camera `at` points that form a spline.
* The points of the spline are interpolated over time to create smooth camera movements.
*/
#define CS_CAM_AT_SPLINE(startFrame, endFrame) \
CS_CMD_CAM_AT_SPLINE, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* Declares a list of camera `eye` points that form a spline.
* The points of the spline are interpolated over time to create smooth camera movements.
* The points are relative to the player's position and yaw.
*/
#define CS_CAM_EYE_SPLINE_REL_TO_PLAYER(startFrame, endFrame) \
CS_CMD_CAM_EYE_SPLINE_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* Declares a list of camera `at` points that form a spline.
* The points of the spline are interpolated over time to create smooth camera movements.
* The points are relative to the player's position and yaw.
*/
#define CS_CAM_AT_SPLINE_REL_TO_PLAYER(startFrame, endFrame) \
CS_CMD_CAM_AT_SPLINE_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* Declares a single `eye` point that will be set on the specified frame, without any interpolation.
* Should only contain a single point, not a list.
* This feature is not used in the final game and lacks polish, it is recommended to use splines in all cases.
*/
#define CS_CAM_EYE(startFrame, endFrame) \
CS_CMD_CAM_EYE, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
* Declares a single `at` point that will be set on the specified frame, without any interpolation.
* Should only contain a single point, not a list.
* This feature is not used in the final game and lacks polish, it is recommended to use splines in all cases.
*/
#define CS_CAM_POS CS_CAM_EYE
#define CS_CAM_EYE(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* 00000002 0001ssss eeee0000
* size = 0xC
*/
#define CS_CAM_FOCUS_POINT_LIST CS_CAM_AT_LIST
#define CS_CAM_AT_LIST(startFrame, endFrame) \
#define CS_CAM_AT(startFrame, endFrame) \
CS_CMD_CAM_AT, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
* Declares a list of `CS_MISC` entries.
*/
#define CS_CAM_FOCUS_POINT CS_CAM_AT
#define CS_CAM_AT(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
#define CS_MISC_LIST(entries) \
CS_CMD_MISC, CMD_W(entries)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000003 eeeeeeee
* size = 0x8
* Various miscellaneous commands.
* @see `CutsceneMiscType` enum for the different types of commands.
* @note setting `endFrame` to same value as `startFrame` will not behave as expected.
* For commands that only need to last one frame, set `endFrame` to `startFrame + 1`.
*/
#define CS_MISC_LIST(entries) CS_CMD_MISC, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* uuuussss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
* size = 0x30
*/
#define CS_MISC(unk, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10) \
CMD_HH(unk, startFrame), CMD_HH(endFrame, unused0), \
#define CS_MISC(type, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10) \
CMD_HH(type, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), CMD_W(unused8), CMD_W(unused9), CMD_W(unused10)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000004 eeeeeeee
* size = 0x8
* Declares a list of `CS_LIGHT_SETTING` entries.
*/
#define CS_LIGHTING_LIST(entries) CS_CMD_SET_LIGHTING, CMD_W(entries)
#define CS_LIGHT_SETTING_LIST(entries) \
CS_CMD_LIGHT_SETTING, CMD_W(entries)
/**
* ARGS
* s16 setting (m), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* mmmmssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
* Changes the environment lights to the specified setting.
* The lighting change will take place immediately with no blending.
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_LIGHTING(setting, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(setting, startFrame), CMD_HH(endFrame, unused0), \
#define CS_LIGHT_SETTING(lightSetting, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_BBH(0, (lightSetting + 1), startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , may be consistently zero
* 00000005 0001ssss eeee0000
* size = 0xC
* Declares a list of `CS_RUMBLE_CONTROLLER` entries.
*/
#define CS_CAM_POS_PLAYER_LIST CS_CAM_EYE_REL_TO_PLAYER_LIST
#define CS_CAM_EYE_REL_TO_PLAYER_LIST(startFrame, endFrame) \
CS_CMD_CAM_EYE_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
#define CS_RUMBLE_CONTROLLER_LIST(entries) \
CS_CMD_RUMBLE_CONTROLLER, CMD_W(entries)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_POS_PLAYER CS_CAM_EYE_REL_TO_PLAYER
#define CS_CAM_EYE_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
* Rumble the controller.
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_RUMBLE_CONTROLLER(unused0, startFrame, endFrame, sourceStrength, duration, decreaseRate, unused1, unused2) \
CMD_HH(unused0, startFrame), CMD_HBB(endFrame, sourceStrength, duration), CMD_BBH(decreaseRate, unused1, unused2)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , may be consistently zero
* 00000006 0001ssss eeee0000
* size = 0xC
* Declares a list of `CS_ACTOR_CUE` entries.
*/
#define CS_CAM_FOCUS_POINT_PLAYER_LIST CS_CAM_AT_REL_TO_PLAYER_LIST
#define CS_CAM_AT_REL_TO_PLAYER_LIST(startFrame, endFrame) \
CS_CMD_CAM_AT_REL_TO_PLAYER, CMD_HH(0x0001, startFrame), CMD_HH(endFrame, 0x0000)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
*/
#define CS_CAM_FOCUS_POINT_PLAYER CS_CAM_AT_REL_TO_PLAYER
#define CS_CAM_AT_REL_TO_PLAYER(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
#define CS_ACTOR_CUE_LIST(cmdType, entries) \
CMD_W(cmdType), CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* 00000007 uuuussss eeeeUUUU
* size = 0xC
* Defines a cue that an actor can listen for.
* The actor can choose whether or not to use the position and rotation data supplied to it.
* The cue `id` is a number that has an actor-specific meaning.
*/
#define CS_CMD_07_LIST(unk, startFrame, endFrame, unused) \
CS_CMD_07, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
#define CS_ACTOR_CUE(id, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, unused0, unused1, unused2) \
CMD_HH(id, startFrame), CMD_HH(endFrame, rotX), CMD_HH(rotY, rotZ), \
CMD_W(startX), CMD_W(startY), CMD_W(startZ), \
CMD_W(endX), CMD_W(endY), CMD_W(endZ), \
CMD_F(unused0), CMD_F(unused1), CMD_F(unused2)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
* Declares a list of `CS_PLAYER_CUE` entries.
*/
#define CS_CMD_07(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
#define CS_PLAYER_CUE_LIST(entries) \
CS_CMD_PLAYER_CUE, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* 00000008 uuuussss eeeeUUUU
* size = 0xC
* A player cue is the same as `CS_ACTOR_CUE` but is specifically for player.
*/
#define CS_CMD_08_LIST(unk, startFrame, endFrame, unused) \
CS_CMD_08, CMD_HH(unk, startFrame), CMD_HH(endFrame, unused)
#define CS_PLAYER_CUE(id, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, unused0, unused1, unused2) \
CS_ACTOR_CUE(id, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, unused0, unused1, unused2)
/**
* ARGS
* s8 continueFlag (c), s8 roll (r), s16 frame (f), f32 viewAngle (a),
* s16 xPos (x), s16 yPos (y), s16 zPos (z)
* FORMAT
* Capital U is Unused
* ccrrffff aaaaaaaa xxxxyyyy zzzzUUUU
* size = 0x10
* Declares a list of `CS_TEXT_*` entries.
*/
#define CS_CMD_08(continueFlag, roll, frame, viewAngle, xPos, yPos, zPos, unused) \
CMD_BBH(continueFlag, roll, frame), CMD_F(viewAngle), CMD_HH(xPos, yPos), CMD_HH(zPos, unused)
#define CS_TEXT_LIST(entries) \
CS_CMD_TEXT, CMD_W(entries)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000009 eeeeeeee
* size = 0x8
* Starts a textbox at the specified time.
* For `CS_TEXT_OCARINA_ACTION`, `textId` is used as an ocarina action.
* For a choice textbox, `altTextId1` is the top text id to branch to and `altTextId2` is the bottom.
*/
#define CS_CMD_09_LIST(entries) CS_CMD_09, CMD_W(entries)
#define CS_TEXT(textId, startFrame, endFrame, type, altTextId1, altTextId2) \
CMD_HH(textId, startFrame), CMD_HH(endFrame, type), CMD_HH(altTextId1, altTextId2)
#define CS_TEXT_NONE(startFrame, endFrame) \
CS_TEXT(CS_TEXT_ID_NONE, startFrame, endFrame, 0xFFFF, CS_TEXT_ID_NONE, CS_TEXT_ID_NONE)
#define CS_TEXT_OCARINA_ACTION(ocarinaAction, startFrame, endFrame, messageId) \
CS_TEXT(ocarinaAction, startFrame, endFrame, CS_TEXT_OCARINA_ACTION, messageId, CS_TEXT_ID_NONE)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s16 unk2 (v), s16 unk3 (w), s16 unk4 (x)
* FORMAT
* Capital U is Unused
* uuuussss eeeevvww xxUUUUUU
* size = 0xC
* Controls various types of screen transitions.
* @see `CutsceneTransitionType` for type options.
*/
#define CS_CMD_09(unk, startFrame, endFrame, unk2, unk3, unk4, unused0, unused1) \
CMD_HH(unk, startFrame), CMD_HBB(endFrame, unk2, unk3), CMD_BBH(unk4, unused0, unused1)
#define CS_TRANSITION(type, startFrame, endFrame) \
CS_CMD_TRANSITION, 0x00000001, CMD_HH(type, startFrame), CMD_HH(endFrame, endFrame)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
* Declares a list of `CS_START_SEQ` entries.
*/
#define CS_START_SEQ_LIST(entries) \
CS_CMD_START_SEQ, CMD_W(entries)
/**
* Starts a sequence at the specified time.
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_START_SEQ(seqId, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH((seqId + 1), startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* Declares a list of `CS_STOP_SEQ` entries.
*/
#define CS_STOP_SEQ_LIST(entries) \
CS_CMD_STOP_SEQ, CMD_W(entries)
/**
* Stops a sequence at the specified time.
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_STOP_SEQ(seqId, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH((seqId + 1), startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* Declares a list of `CS_FADE_OUT_SEQ` entries.
*/
#define CS_FADE_OUT_SEQ_LIST(entries) \
CS_CMD_FADE_OUT_SEQ, CMD_W(entries)
/**
* Fade out the sequence that is playing on the specified sequence player, over the specified frame range.
* @see `CutsceneFadeOutSeqPlayer`
*/
#define CS_FADE_OUT_SEQ(seqPlayer, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(seqPlayer, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* Declares a list of `CS_TIME` entries.
*/
#define CS_TIME_LIST(entries) \
CS_CMD_TIME, CMD_W(entries)
/**
* Sets the time of day.
* Both the day time and skybox time are set by this command.
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_TIME(unused0, startFrame, endFrame, hour, min) \
CMD_HH(unused0, startFrame), CMD_HBB(endFrame, hour, min), CMD_W(0)
/**
* Sends the player to a new destination.
* `destination` maps to a custom block of code that must implement the scene transition on its own.
* This custom code can also do other tasks like changing age, setting flags, or any other setup that is needed
* before going to the next destination.
*
* @see `CutsceneDestination`
* @note `endFrame` is not used in the implementation of the command, so its value does not matter
*/
#define CS_DESTINATION(destination, startFrame, endFrame) \
CS_CMD_DESTINATION, 1, CMD_HH(destination, startFrame), CMD_HH(endFrame, endFrame)
/**
* Marks the end of a cutscene script.
*/
#define CS_END() 0xFFFFFFFF, 0x00000000
// most instances of this look like unimplemented actor cues.
// after confirming this, can probably switch those over and delete this
#define CS_UNK_DATA_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
/**
* ARGS
* s32 unk1 (a), s32 unk2 (b), s32 unk3 (c), s32 unk4 (d), s32 unk5 (e), s32 unk6 (f),
* s32 unk7 (g), s32 unk8 (h), s32 unk9 (i), s32 unk10 (j), s32 unk11 (k), s32 unk12 (l)
* FORMAT
* aaaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll
* size = 0x30
*/
#define CS_UNK_DATA(unk1, unk2, unk3, unk4, unk5, unk6, unk7, unk8, unk9, unk10, unk11, unk12) \
CMD_W(unk1), CMD_W(unk2), CMD_W(unk3), CMD_W(unk4), CMD_W(unk5), CMD_W(unk6), \
CMD_W(unk7), CMD_W(unk8), CMD_W(unk9), CMD_W(unk10), CMD_W(unk11), CMD_W(unk12)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
*/
#define CS_NPC_ACTION_LIST(cmdType, entries) CMD_W(cmdType), CMD_W(entries)
// TODO: Fix ZAPD and delete these
#define CS_CAM_POS_LIST CS_CAM_EYE_SPLINE
#define CS_CAM_POS CS_CAM_POINT
#define CS_CAM_FOCUS_POINT_LIST CS_CAM_AT_SPLINE
#define CS_CAM_FOCUS_POINT CS_CAM_POINT
#define CS_CAM_POS_PLAYER_LIST CS_CAM_EYE_SPLINE_REL_TO_PLAYER
#define CS_CAM_POS_PLAYER CS_CAM_POINT
#define CS_CAM_FOCUS_POINT_PLAYER_LIST CS_CAM_AT_SPLINE_REL_TO_PLAYER
#define CS_CAM_FOCUS_POINT_PLAYER CS_CAM_POINT
#define CS_NPC_ACTION_LIST CS_ACTOR_CUE_LIST
#define CS_NPC_ACTION CS_ACTOR_CUE
#define CS_PLAYER_ACTION_LIST CS_PLAYER_CUE_LIST
#define CS_PLAYER_ACTION CS_PLAYER_CUE
#define CS_LIGHTING_LIST CS_LIGHT_SETTING_LIST
#define CS_CMD_09_LIST CS_RUMBLE_CONTROLLER_LIST
#define CS_CMD_09 CS_RUMBLE_CONTROLLER
#define CS_TEXT_DISPLAY_TEXTBOX CS_TEXT
#define CS_TEXT_LEARN_SONG CS_TEXT_OCARINA_ACTION
#define CS_SCENE_TRANS_FX CS_TRANSITION
#define CS_PLAY_BGM_LIST CS_START_SEQ_LIST
#define CS_STOP_BGM_LIST CS_STOP_SEQ_LIST
#define CS_FADE_BGM_LIST CS_FADE_OUT_SEQ_LIST
#define CS_FADE_BGM CS_FADE_OUT_SEQ
#define CS_TERMINATOR CS_DESTINATION
/**
* ARGS
* s16 npcAction (a), s16 startFrame (s), s16 endFrame (e),
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
* s32 startX (i), s32 startY (j), s32 startZ (k),
* s32 endX (l), s32 endY (m), s32 endZ (n),
* f32 normX (x), f32 normY (y), f32 normZ (z),
* FORMAT
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
* size = 0x30
*/
#define CS_NPC_ACTION(npcAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
CMD_HH(npcAction, startFrame), CMD_HH(endFrame, rotX), CMD_HH(rotY, rotZ), \
CMD_W(startX), CMD_W(startY), CMD_W(startZ), \
CMD_W(endX), CMD_W(endY), CMD_W(endZ), \
CMD_F(normX), CMD_F(normY), CMD_F(normZ)
#define CS_PLAY_BGM(seqId, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CS_START_SEQ((seqId)-1, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7)
/**
* ARGS
* s32 cmdType (c), s32 entries (e)
* FORMAT
* cccccccc eeeeeeee
* size = 0x8
*/
#define CS_PLAYER_ACTION_LIST(entries) CS_CMD_SET_PLAYER_ACTION, CMD_W(entries)
#define CS_STOP_BGM(seqId, frame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8) \
CS_STOP_SEQ((seqId)-1, frame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8)
/**
* ARGS
* s16 linkAction (a), s16 startFrame (s), s16 endFrame (e),
* s16 rotX (u), s16 rotY (v), s16 rotZ (w),
* s32 startX (i), s32 startY (j), s32 startZ (k),
* s32 endX (l), s32 endY (m), s32 endZ (n),
* f32 normX (x), f32 normY (y), f32 normZ (z),
* FORMAT
* aaaassss eeeeuuuu vvvvwwww iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmm nnnnnnnn xxxxxxxx yyyyyyyy zzzzzzzz
* size = 0x30
*/
#define CS_PLAYER_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ) \
CS_NPC_ACTION(linkAction, startFrame, endFrame, rotX, rotY, rotZ, startX, startY, startZ, endX, endY, endZ, normX, normY, normZ)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000013 eeeeeeee
* size = 0x8
*/
#define CS_TEXT_LIST(entries) CS_CMD_TEXTBOX, CMD_W(entries)
/**
* ARGS
* s16 messageId (i), s16 startFrame (s), s16 endFrame (e), s16 type (o),
* s16 topOptionBranch (y), s16 bottomOptionBranch (n)
* FORMAT
* iiiissss eeeeoooo yyyynnnn
* size = 0xC
*/
#define CS_TEXT_DISPLAY_TEXTBOX(messageId, startFrame, endFrame, type, topOptionBranch, bottomOptionBranch) \
CMD_HH(messageId, startFrame), CMD_HH(endFrame, type), CMD_HH(topOptionBranch, bottomOptionBranch)
/**
* ARGS
* s16 startFrame (s), s16 endFrame (e)
* FORMAT
* FFFFssss eeeeFFFF FFFFFFFF
* size = 0xC
*/
#define CS_TEXT_NONE(startFrame, endFrame) \
CS_TEXT_DISPLAY_TEXTBOX(0xFFFF, startFrame, endFrame, 0xFFFF, 0xFFFF, 0xFFFF)
/**
* ARGS
* s16 ocarinaSongAction (o), s16 startFrame (s), s16 endFrame (e), s16 topOptionBranch (i)
* FORMAT
* oooossss eeee0002 iiiiFFFF
* size = 0xC
*/
#define CS_TEXT_LEARN_SONG(ocarinaSongAction, startFrame, endFrame, messageId) \
CS_TEXT_DISPLAY_TEXTBOX(ocarinaSongAction, startFrame, endFrame, 0x0002, messageId, 0xFFFF)
/**
* ARGS
* s16 transitionType (t), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , endFrame duplicate
* 0000002D 00000001 ttttssss eeeeUUUU
* size = 0x10
*/
#define CS_SCENE_TRANS_FX(transitionType, startFrame, endFrame) \
CS_CMD_SCENE_TRANS_FX, 0x00000001, CMD_HH(transitionType, startFrame), CMD_HH(endFrame, endFrame)
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000056 eeeeeeee
* size = 0x8
*/
#define CS_PLAY_BGM_LIST(entries) CS_CMD_PLAYBGM, CMD_W(entries)
/**
* ARGS
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* qqqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_PLAY_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 00000057 eeeeeeee
* size = 0x8
*/
#define CS_STOP_BGM_LIST(entries) CS_CMD_STOPBGM, CMD_W(entries)
/**
* ARGS
* s16 sequence (q), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* uuqqssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_STOP_BGM(sequence, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(sequence, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 0000007C eeeeeeee
* size = 0x8
*/
#define CS_FADE_BGM_LIST(entries) CS_CMD_FADEBGM, CMD_W(entries)
/**
* ARGS
* s16 fadeType (t), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused
* ttttssss eeeeUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU 00000000 00000000 00000000
* size = 0x30
*/
#define CS_FADE_BGM(fadeType, startFrame, endFrame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7) \
CMD_HH(fadeType, startFrame), CMD_HH(endFrame, unused0), \
CMD_W(unused1), CMD_W(unused2), CMD_W(unused3), CMD_W(unused4), CMD_W(unused5), \
CMD_W(unused6), CMD_W(unused7), 0x00000000, 0x00000000, 0x00000000
/**
* ARGS
* s32 entries (e)
* FORMAT
* 0000008C eeeeeeee
* size = 0x8
*/
#define CS_TIME_LIST(entries) CS_CMD_SETTIME, CMD_W(entries)
/**
* ARGS
* s16 unk (u), s16 startFrame (s), s16 endFrame (e), s8 hour (h), s8 min (m)
* FORMAT
* Capital U is Unused
* uuuussss eeeehhmm UUUUUUUU
* size = 0xC
*/
#define CS_TIME(unk, startFrame, endFrame, hour, min, unused) \
CMD_HH(unk, startFrame), \
CMD_HBB(endFrame, hour, min), \
CMD_W(unused)
/**
* ARGS
* CutsceneTerminatorDestination dest (d), s16 startFrame (s), s16 endFrame (e)
* FORMAT
* Capital U is Unused , endFrame duplicate
* 000003E8 00000001 ddddssss eeeeUUUU
* size = 0x10
*/
#define CS_TERMINATOR(dest, startFrame, endFrame) \
CS_CMD_TERMINATOR, 0x00000001, CMD_HH(dest, startFrame), CMD_HH(endFrame, endFrame)
/**
* Marks the end of a cutscene
*/
#define CS_END() 0xFFFFFFFF, 0x00000000
#define CS_LIGHTING(lightSetting, frame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8) \
CS_LIGHT_SETTING((lightSetting)-1, frame, unused0, unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8)
#endif
+1 -1
View File
@@ -632,7 +632,7 @@ typedef struct Player {
/* 0x0440 */ Actor* rideActor;
/* 0x0444 */ u8 csMode;
/* 0x0445 */ u8 prevCsMode;
/* 0x0446 */ u8 unk_446;
/* 0x0446 */ u8 cueId;
/* 0x0447 */ u8 unk_447;
/* 0x0448 */ Actor* unk_448;
/* 0x044C */ char unk_44C[0x004];
+9 -9
View File
@@ -1,33 +1,33 @@
#include "global.h"
void Flags_UnsetAllEnv(PlayState* play) {
void CutsceneFlags_UnsetAll(PlayState* play) {
u8 i;
for (i = 0; i < ARRAY_COUNT(play->envFlags); i++) {
play->envFlags[i] = 0;
for (i = 0; i < ARRAY_COUNT(play->cutsceneFlags); i++) {
play->cutsceneFlags[i] = 0;
}
}
void Flags_SetEnv(PlayState* play, s16 flag) {
void CutsceneFlags_Set(PlayState* play, s16 flag) {
s16 index = flag / 16;
s16 bit = flag % 16;
s16 mask = 1 << bit;
play->envFlags[index] |= mask;
play->cutsceneFlags[index] |= mask;
}
void Flags_UnsetEnv(PlayState* play, s16 flag) {
void CutsceneFlags_Unset(PlayState* play, s16 flag) {
s16 index = flag / 16;
s16 bit = flag % 16;
s16 mask = (1 << bit) ^ 0xFFFF;
play->envFlags[index] &= mask;
play->cutsceneFlags[index] &= mask;
}
s32 Flags_GetEnv(PlayState* play, s16 flag) {
s32 CutsceneFlags_Get(PlayState* play, s16 flag) {
s16 index = flag / 16;
s16 bit = flag % 16;
s16 mask = 1 << bit;
return play->envFlags[index] & mask;
return play->cutsceneFlags[index] & mask;
}
+2 -1
View File
@@ -33,7 +33,8 @@ s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s
progress = 0.0f;
}
if ((point[key].continueFlag == -1) || (point[key + 1].continueFlag == -1) || (point[key + 2].continueFlag == -1)) {
if ((point[key].continueFlag == CS_CAM_STOP) || (point[key + 1].continueFlag == CS_CAM_STOP) ||
(point[key + 2].continueFlag == CS_CAM_STOP)) {
return true;
}
+1 -1
View File
@@ -2259,7 +2259,7 @@ void AudioOcarina_Update(void) {
AudioOcarina_UpdateRecordingStaff();
}
void AudioOcarina_PlayLongScarecrowAfterCredits(void) {
void AudioOcarina_PlayLongScarecrowSong(void) {
static u8 sScarecrowAfterCreditsState = 0;
static u8 sScarecrowAfterCreditsIntrumentId = OCARINA_INSTRUMENT_DEFAULT;
static u16 sScarecrowAfterCreditsTimer = 1200;
+7 -7
View File
@@ -252,7 +252,7 @@ s32 func_800B4088(DbCamera* dbCamera, Camera* cam) {
position = &dbCamera->sub.position[dbCamera->sub.unkIdx];
lookAt = &dbCamera->sub.lookAt[dbCamera->sub.unkIdx];
position->continueFlag = -1;
position->continueFlag = CS_CAM_STOP;
lookAt->continueFlag = position->continueFlag;
position->nextPointFrame = 0;
lookAt->nextPointFrame = 30;
@@ -268,10 +268,10 @@ s32 func_800B4088(DbCamera* dbCamera, Camera* cam) {
}
for (i = 0; i < (dbCamera->sub.nPoints - 2); i++) {
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = 0;
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = CS_CAM_CONTINUE;
}
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = -1;
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = CS_CAM_STOP;
return dbCamera->sub.unkIdx;
}
@@ -299,7 +299,7 @@ s32 func_800B42C0(DbCamera* dbCamera, Camera* cameraPtr) {
CutsceneCameraPoint* position = &dbCamera->sub.position[dbCamera->sub.unkIdx];
CutsceneCameraPoint* lookAt = &dbCamera->sub.lookAt[dbCamera->sub.unkIdx];
position->continueFlag = lookAt->continueFlag = 0;
position->continueFlag = lookAt->continueFlag = CS_CAM_CONTINUE;
if (dbCamera->sub.mode != 1) {
DbCamera_Vec3FToS(&dbCamera->eye, &position->pos);
@@ -352,10 +352,10 @@ void func_800B44E0(DbCamera* dbCamera, Camera* cam) {
sDbCamAnim.unk_04 = 0;
for (i = 0; i < (dbCamera->sub.nPoints - 2); i++) {
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = 0;
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = CS_CAM_CONTINUE;
}
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = -1;
dbCamera->sub.position[i].continueFlag = dbCamera->sub.lookAt[i].continueFlag = CS_CAM_STOP;
}
if (dbCamera->sub.nPoints < 6) {
@@ -2155,7 +2155,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
}
if (CHECK_BTN_ALL(sPlay->state.input[1].press.button, BTN_CRIGHT)) {
D_8015FCC8 = 0;
gUseCutsceneCam = false;
gSaveContext.cutsceneIndex = 0xFFFD;
gSaveContext.cutsceneTrigger = 1;
sDbCamAnim.curFrame = 0.0f;
+1 -1
View File
@@ -7716,7 +7716,7 @@ Vec3s Camera_Update(Camera* camera) {
if (gDbgCamEnabled) {
DbgCamera_Enable(&D_8015BD80, camera);
} else if (camera->play->csCtx.state != CS_STATE_IDLE) {
func_80064534(camera->play, &camera->play->csCtx);
Cutscene_StopManual(camera->play, &camera->play->csCtx);
}
}
+1028 -741
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -417,7 +417,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
cREG(12) = 0;
cREG(13) = 0;
cREG(14) = 0;
D_8015FCC8 = 1;
gUseCutsceneCam = true;
for (i = 0; i < ARRAY_COUNT(sLightningBolts); i++) {
sLightningBolts[i].state = LIGHTNING_BOLT_INACTIVE;
@@ -426,8 +426,8 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
play->roomCtx.unk_74[0] = 0;
play->roomCtx.unk_74[1] = 0;
for (i = 0; i < ARRAY_COUNT(play->csCtx.npcActions); i++) {
play->csCtx.npcActions[i] = 0;
for (i = 0; i < ARRAY_COUNT(play->csCtx.actorCues); i++) {
play->csCtx.actorCues[i] = NULL;
}
if (Object_GetIndex(&play->objectCtx, OBJECT_GAMEPLAY_FIELD_KEEP) < 0 && !play->envCtx.sunMoonDisabled) {
+82 -82
View File
@@ -1,118 +1,118 @@
#include "global.h"
static CutsceneCameraPoint D_8012013C[14] = {
{ CS_CMD_CONTINUE, 25, 40, 70.79991f, { -1814, 533, -1297 } },
{ CS_CMD_CONTINUE, 20, 40, 70.99991f, { -1805, 434, -1293 } },
{ CS_CMD_CONTINUE, 10, 30, 60.0f, { -1794, 323, -1280 } },
{ CS_CMD_CONTINUE, 5, 25, 60.0f, { -1817, 218, -1270 } },
{ CS_CMD_CONTINUE, 3, 20, 60.0f, { -1836, 168, -1243 } },
{ CS_CMD_CONTINUE, 0, 20, 60.0f, { -1905, 115, -1193 } },
{ CS_CMD_CONTINUE, 0, 30, 55.0f, { -1969, 58, -1212 } },
{ CS_CMD_CONTINUE, 0, 30, 55.0f, { -1969, 31, -1164 } },
{ CS_CMD_CONTINUE, 0, 30, 60.0f, { -1969, 54, -1209 } },
{ CS_CMD_CONTINUE, 0, 30, 60.0f, { -1973, 35, -1206 } },
{ CS_CMD_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CMD_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CMD_STOP, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CMD_STOP, 0, 30, 60.0f, { -1974, 12, -1179 } },
{ CS_CAM_CONTINUE, 25, 40, 70.79991f, { -1814, 533, -1297 } },
{ CS_CAM_CONTINUE, 20, 40, 70.99991f, { -1805, 434, -1293 } },
{ CS_CAM_CONTINUE, 10, 30, 60.0f, { -1794, 323, -1280 } },
{ CS_CAM_CONTINUE, 5, 25, 60.0f, { -1817, 218, -1270 } },
{ CS_CAM_CONTINUE, 3, 20, 60.0f, { -1836, 168, -1243 } },
{ CS_CAM_CONTINUE, 0, 20, 60.0f, { -1905, 115, -1193 } },
{ CS_CAM_CONTINUE, 0, 30, 55.0f, { -1969, 58, -1212 } },
{ CS_CAM_CONTINUE, 0, 30, 55.0f, { -1969, 31, -1164 } },
{ CS_CAM_CONTINUE, 0, 30, 60.0f, { -1969, 54, -1209 } },
{ CS_CAM_CONTINUE, 0, 30, 60.0f, { -1973, 35, -1206 } },
{ CS_CAM_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CAM_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CAM_STOP, 0, 50, 60.0f, { -1974, 12, -1179 } },
{ CS_CAM_STOP, 0, 30, 60.0f, { -1974, 12, -1179 } },
};
static CutsceneCameraPoint D_8012021C[14] = {
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -1751, 604, -1233 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -1752, 516, -1233 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -1751, 417, -1233 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -1767, 306, -1219 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -1776, 257, -1205 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -1881, 147, -1149 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -1969, 72, -1077 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -1969, 7, -1048 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -1969, 1, -1030 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -1987, 17, -1076 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } },
{ CS_CMD_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CMD_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -1751, 604, -1233 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1752, 516, -1233 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -1751, 417, -1233 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1767, 306, -1219 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -1776, 257, -1205 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1881, 147, -1149 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 72, -1077 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 7, -1048 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 1, -1030 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1987, 17, -1076 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } },
{ CS_CAM_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CAM_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } },
};
static s16 D_801202FC = 13;
static s16 D_80120300 = 210;
static s16 D_80120304 = 0;
static CutsceneCameraPoint sCrawlspaceAtPoints[9] = {
{ CS_CMD_CONTINUE, 0, 10, 40.0f, { 0, 4, 0 } }, { CS_CMD_CONTINUE, 0, 10, 40.000004f, { 0, 4, 0 } },
{ CS_CMD_CONTINUE, 0, 10, 50.0f, { 0, 9, 0 } }, { CS_CMD_CONTINUE, 0, 12, 55.0f, { 0, 12, 0 } },
{ CS_CMD_CONTINUE, 0, 15, 61.0f, { 0, 18, 0 } }, { CS_CMD_CONTINUE, 0, 20, 65.0f, { 0, 29, 0 } },
{ CS_CMD_CONTINUE, 0, 40, 60.0f, { 0, 34, 0 } }, { CS_CMD_STOP, 0, 40, 60.0f, { 0, 34, 0 } },
{ CS_CMD_STOP, 0, 10, 60.0f, { 0, 34, 0 } },
{ CS_CAM_CONTINUE, 0, 10, 40.0f, { 0, 4, 0 } }, { CS_CAM_CONTINUE, 0, 10, 40.000004f, { 0, 4, 0 } },
{ CS_CAM_CONTINUE, 0, 10, 50.0f, { 0, 9, 0 } }, { CS_CAM_CONTINUE, 0, 12, 55.0f, { 0, 12, 0 } },
{ CS_CAM_CONTINUE, 0, 15, 61.0f, { 0, 18, 0 } }, { CS_CAM_CONTINUE, 0, 20, 65.0f, { 0, 29, 0 } },
{ CS_CAM_CONTINUE, 0, 40, 60.0f, { 0, 34, 0 } }, { CS_CAM_STOP, 0, 40, 60.0f, { 0, 34, 0 } },
{ CS_CAM_STOP, 0, 10, 60.0f, { 0, 34, 0 } },
};
static CutsceneCameraPoint sCrawlspaceForwardsEyePoints[9] = {
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 9, 45 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 8, 50 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 17, 58 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 21, 78 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 46, 109 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 58, 118 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 63, 119 } }, { CS_CMD_STOP, 0, 0, 60.0f, { 0, 62, 119 } },
{ CS_CMD_STOP, 0, 0, 60.0f, { 0, 62, 119 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, 45 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 8, 50 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 17, 58 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 21, 78 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 46, 109 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 58, 118 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 63, 119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, 119 } },
{ CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, 119 } },
};
static s16 sCrawlspaceUnused = 9;
static s16 sCrawlspaceTimer = 90;
static s16 sCrawlspaceActionParam = 1;
static CutsceneCameraPoint sCrawlspaceBackwardsEyePoints[10] = {
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 8, -50 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 17, -58 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 21, -78 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 46, -109 } },
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 58, -118 } }, { CS_CMD_CONTINUE, 0, 0, 60.0f, { 0, 63, -119 } },
{ CS_CMD_STOP, 0, 0, 60.0f, { 0, 62, -119 } }, { CS_CMD_STOP, 0, 0, 60.0f, { 0, 62, -119 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 8, -50 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 17, -58 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 21, -78 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 46, -109 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 58, -118 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 63, -119 } },
{ CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, -119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, -119 } },
};
static CutsceneCameraPoint D_801204D4[14] = {
{ CS_CMD_CONTINUE, -15, 40, 80.600006f, { -60, 332, 183 } },
{ CS_CMD_CONTINUE, -22, 30, 80.600006f, { -60, 332, 183 } },
{ CS_CMD_CONTINUE, -20, 38, 80.600006f, { -118, 344, 41 } },
{ CS_CMD_CONTINUE, -18, 32, 80.600006f, { -80, 251, -8 } },
{ CS_CMD_CONTINUE, -12, 28, 80.600006f, { -64, 259, -28 } },
{ CS_CMD_CONTINUE, -8, 22, 80.600006f, { -79, 200, -342 } },
{ CS_CMD_CONTINUE, -5, 10, 65.80005f, { -110, 140, -549 } },
{ CS_CMD_CONTINUE, -2, 8, 65.2f, { -74, 109, -507 } },
{ CS_CMD_CONTINUE, 0, 10, 65.80002f, { -32, 78, -680 } },
{ CS_CMD_CONTINUE, 0, 20, 85.199936f, { 25, 127, -950 } },
{ CS_CMD_CONTINUE, 0, 30, 85.199936f, { 25, 127, -950 } },
{ CS_CMD_CONTINUE, 0, 40, 85.199936f, { 25, 127, -950 } },
{ CS_CMD_STOP, 6, 30, 85.199936f, { 25, 127, -950 } },
{ CS_CMD_STOP, 0, 30, 85.199936f, { 25, 127, -950 } },
{ CS_CAM_CONTINUE, -15, 40, 80.600006f, { -60, 332, 183 } },
{ CS_CAM_CONTINUE, -22, 30, 80.600006f, { -60, 332, 183 } },
{ CS_CAM_CONTINUE, -20, 38, 80.600006f, { -118, 344, 41 } },
{ CS_CAM_CONTINUE, -18, 32, 80.600006f, { -80, 251, -8 } },
{ CS_CAM_CONTINUE, -12, 28, 80.600006f, { -64, 259, -28 } },
{ CS_CAM_CONTINUE, -8, 22, 80.600006f, { -79, 200, -342 } },
{ CS_CAM_CONTINUE, -5, 10, 65.80005f, { -110, 140, -549 } },
{ CS_CAM_CONTINUE, -2, 8, 65.2f, { -74, 109, -507 } },
{ CS_CAM_CONTINUE, 0, 10, 65.80002f, { -32, 78, -680 } },
{ CS_CAM_CONTINUE, 0, 20, 85.199936f, { 25, 127, -950 } },
{ CS_CAM_CONTINUE, 0, 30, 85.199936f, { 25, 127, -950 } },
{ CS_CAM_CONTINUE, 0, 40, 85.199936f, { 25, 127, -950 } },
{ CS_CAM_STOP, 6, 30, 85.199936f, { 25, 127, -950 } },
{ CS_CAM_STOP, 0, 30, 85.199936f, { 25, 127, -950 } },
};
static CutsceneCameraPoint D_801205B4[14] = {
{ CS_CMD_CONTINUE, 0, 0, 60.0f, { -225, 785, -242 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -245, 784, -242 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -288, 485, -379 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -250, 244, -442 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -163, 21, -415 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -98, 86, -520 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -86, 31, -816 } },
{ CS_CMD_CONTINUE, -21, 0, 80.600006f, { -74, 18, -931 } },
{ CS_CMD_CONTINUE, 1, 0, 80.600006f, { -91, 80, -1220 } },
{ CS_CMD_CONTINUE, 0, 0, 85.199936f, { 14, 153, -1340 } },
{ CS_CMD_CONTINUE, 0, 0, 85.199936f, { 28, 125, -1340 } },
{ CS_CMD_CONTINUE, 0, 0, 85.199936f, { 48, 124, -1340 } },
{ CS_CMD_STOP, 0, 0, 85.199936f, { 48, 124, -1502 } },
{ CS_CMD_STOP, 0, 0, 85.199936f, { 48, 124, -1262 } },
{ CS_CAM_CONTINUE, 0, 0, 60.0f, { -225, 785, -242 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -245, 784, -242 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -288, 485, -379 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -250, 244, -442 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -163, 21, -415 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -98, 86, -520 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -86, 31, -816 } },
{ CS_CAM_CONTINUE, -21, 0, 80.600006f, { -74, 18, -931 } },
{ CS_CAM_CONTINUE, 1, 0, 80.600006f, { -91, 80, -1220 } },
{ CS_CAM_CONTINUE, 0, 0, 85.199936f, { 14, 153, -1340 } },
{ CS_CAM_CONTINUE, 0, 0, 85.199936f, { 28, 125, -1340 } },
{ CS_CAM_CONTINUE, 0, 0, 85.199936f, { 48, 124, -1340 } },
{ CS_CAM_STOP, 0, 0, 85.199936f, { 48, 124, -1502 } },
{ CS_CAM_STOP, 0, 0, 85.199936f, { 48, 124, -1262 } },
};
static s16 D_80120694 = 14;
static s16 D_80120698 = 190;
static s16 D_8012069C = 8;
static CutsceneCameraPoint D_801206A0[12] = {
{ CS_CMD_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } }, { CS_CMD_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } },
{ CS_CMD_CONTINUE, 6, 20, 70.0f, { -70, 35, 150 } }, { CS_CMD_CONTINUE, 5, 10, 60.0f, { -57, 34, 133 } },
{ CS_CMD_CONTINUE, 4, 25, 65.0f, { -22, 32, 110 } }, { CS_CMD_CONTINUE, 3, 12, 60.0f, { -9, 33, 98 } },
{ CS_CMD_CONTINUE, 3, 5, 65.0f, { -3, 29, 87 } }, { CS_CMD_CONTINUE, 2, 10, 65.0f, { -1, 15, 84 } },
{ CS_CMD_CONTINUE, 1, 200, 65.0f, { 0, 17, 82 } }, { CS_CMD_CONTINUE, 1, 500, 65.0f, { 0, 18, 82 } },
{ CS_CMD_STOP, 8, 50, 65.0f, { 0, 18, 82 } }, { CS_CMD_STOP, 11, 60, 65.0f, { 0, 18, 82 } },
{ CS_CAM_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } }, { CS_CAM_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } },
{ CS_CAM_CONTINUE, 6, 20, 70.0f, { -70, 35, 150 } }, { CS_CAM_CONTINUE, 5, 10, 60.0f, { -57, 34, 133 } },
{ CS_CAM_CONTINUE, 4, 25, 65.0f, { -22, 32, 110 } }, { CS_CAM_CONTINUE, 3, 12, 60.0f, { -9, 33, 98 } },
{ CS_CAM_CONTINUE, 3, 5, 65.0f, { -3, 29, 87 } }, { CS_CAM_CONTINUE, 2, 10, 65.0f, { -1, 15, 84 } },
{ CS_CAM_CONTINUE, 1, 200, 65.0f, { 0, 17, 82 } }, { CS_CAM_CONTINUE, 1, 500, 65.0f, { 0, 18, 82 } },
{ CS_CAM_STOP, 8, 50, 65.0f, { 0, 18, 82 } }, { CS_CAM_STOP, 11, 60, 65.0f, { 0, 18, 82 } },
};
static CutsceneCameraPoint D_80120760[12] = {
{ CS_CMD_CONTINUE, 6, 0, 80.0f, { -50, 10, 180 } }, { CS_CMD_CONTINUE, 6, 0, 80.0f, { -50, 20, 180 } },
{ CS_CMD_CONTINUE, 6, 0, 70.0f, { -40, 30, 177 } }, { CS_CMD_CONTINUE, 5, 0, 65.0f, { 0, 35, 172 } },
{ CS_CMD_CONTINUE, 4, 0, 65.0f, { 34, 35, 162 } }, { CS_CMD_CONTINUE, 3, 0, 65.0f, { 61, 32, 147 } },
{ CS_CMD_CONTINUE, 3, 0, 65.0f, { 72, 30, 128 } }, { CS_CMD_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } },
{ CS_CMD_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CMD_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } },
{ CS_CMD_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CMD_STOP, 0, 0, 65.0f, { 75, 10, 122 } },
{ CS_CAM_CONTINUE, 6, 0, 80.0f, { -50, 10, 180 } }, { CS_CAM_CONTINUE, 6, 0, 80.0f, { -50, 20, 180 } },
{ CS_CAM_CONTINUE, 6, 0, 70.0f, { -40, 30, 177 } }, { CS_CAM_CONTINUE, 5, 0, 65.0f, { 0, 35, 172 } },
{ CS_CAM_CONTINUE, 4, 0, 65.0f, { 34, 35, 162 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 61, 32, 147 } },
{ CS_CAM_CONTINUE, 3, 0, 65.0f, { 72, 30, 128 } }, { CS_CAM_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } },
{ CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } },
{ CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } },
};
static CutsceneCameraPoint D_80120820[12] = {
{ CS_CMD_CONTINUE, 6, 0, 80.0f, { 85, 5, 170 } }, { CS_CMD_CONTINUE, 6, 0, 80.0f, { 85, 10, 170 } },
{ CS_CMD_CONTINUE, 6, 0, 70.0f, { 80, 20, 167 } }, { CS_CMD_CONTINUE, 5, 0, 65.0f, { 74, 25, 165 } },
{ CS_CMD_CONTINUE, 4, 0, 65.0f, { 63, 30, 162 } }, { CS_CMD_CONTINUE, 3, 0, 65.0f, { 66, 34, 147 } },
{ CS_CMD_CONTINUE, 3, 0, 65.0f, { 72, 34, 128 } }, { CS_CMD_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } },
{ CS_CMD_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CMD_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } },
{ CS_CMD_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CMD_STOP, 0, 0, 65.0f, { 75, 10, 122 } },
{ CS_CAM_CONTINUE, 6, 0, 80.0f, { 85, 5, 170 } }, { CS_CAM_CONTINUE, 6, 0, 80.0f, { 85, 10, 170 } },
{ CS_CAM_CONTINUE, 6, 0, 70.0f, { 80, 20, 167 } }, { CS_CAM_CONTINUE, 5, 0, 65.0f, { 74, 25, 165 } },
{ CS_CAM_CONTINUE, 4, 0, 65.0f, { 63, 30, 162 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 66, 34, 147 } },
{ CS_CAM_CONTINUE, 3, 0, 65.0f, { 72, 34, 128 } }, { CS_CAM_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } },
{ CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } },
{ CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } },
};
static s16 D_801208E0 = 12;
static s16 D_801208E4 = 90;
+2 -2
View File
@@ -4301,12 +4301,12 @@ void Interface_Update(PlayState* play) {
gSaveContext.nextDayTime = NEXT_TIME_NIGHT;
play->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
play->unk_11DE9 = true;
play->haltAllActors = true;
} else {
gSaveContext.nextDayTime = NEXT_TIME_DAY;
play->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
play->unk_11DE9 = true;
play->haltAllActors = true;
}
if (play->sceneId == SCENE_HAUNTED_WASTELAND) {
+19 -16
View File
@@ -2,17 +2,17 @@
#include "quake.h"
#include "terminal.h"
void* D_8012D1F0 = NULL;
void* gDebugCutsceneScript = NULL;
UNK_TYPE D_8012D1F4 = 0; // unused
Input* D_8012D1F8 = NULL;
TransitionUnk sTrnsnUnk;
s32 gTrnsnUnkState;
VisMono D_80161498;
Color_RGBA8_u32 D_801614B0;
Color_RGBA8_u32 gVisMonoColor;
FaultClient D_801614B8;
s16 sTransitionFillTimer;
u64 D_801614D0[0xA00];
u64 sDebugCutsceneScriptBuf[0xA00];
void Play_SpawnScene(PlayState* this, s32 sceneId, s32 spawn);
@@ -266,7 +266,7 @@ void Play_Init(GameState* thisx) {
EffectSs_InitInfo(this, 0x55);
CollisionCheck_InitContext(this, &this->colChkCtx);
AnimationContext_Reset(&this->animationCtx);
func_8006450C(this, &this->csCtx);
Cutscene_InitContext(this, &this->csCtx);
if (gSaveContext.nextCutsceneIndex != 0xFFEF) {
gSaveContext.cutsceneIndex = gSaveContext.nextCutsceneIndex;
@@ -371,7 +371,7 @@ void Play_Init(GameState* thisx) {
this->transitionTrigger = TRANS_TRIGGER_END;
this->unk_11E16 = 0xFF;
this->unk_11E18 = 0;
this->unk_11DE9 = false;
this->haltAllActors = false;
if (gSaveContext.gameMode != GAMEMODE_TITLE_SCREEN) {
if (gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT) {
@@ -391,8 +391,8 @@ void Play_Init(GameState* thisx) {
TransitionFade_SetColor(&this->transitionFadeFlash, RGBA8(160, 160, 160, 255));
TransitionFade_Start(&this->transitionFadeFlash);
VisMono_Init(&D_80161498);
D_801614B0.a = 0;
Flags_UnsetAllEnv(this);
gVisMonoColor.a = 0;
CutsceneFlags_UnsetAll(this);
osSyncPrintf("ZELDA ALLOC SIZE=%x\n", THA_GetRemaining(&this->state.tha));
zAllocSize = THA_GetRemaining(&this->state.tha);
@@ -436,10 +436,13 @@ void Play_Init(GameState* thisx) {
AnimationContext_Update(this, &this->animationCtx);
gSaveContext.respawnFlag = 0;
if (dREG(95) != 0) {
D_8012D1F0 = D_801614D0;
osSyncPrintf("\nkawauso_data=[%x]", D_8012D1F0);
DmaMgr_DmaRomToRam(0x03FEB000, D_8012D1F0, sizeof(D_801614D0));
if (R_USE_DEBUG_CUTSCENE) {
gDebugCutsceneScript = sDebugCutsceneScriptBuf;
osSyncPrintf("\nkawauso_data=[%x]", gDebugCutsceneScript);
// This hardcoded ROM address extends past the end of the ROM file.
// Presumably the ROM was larger at a previous point in development when this debug feature was used.
DmaMgr_DmaRomToRam(0x03FEB000, gDebugCutsceneScript, sizeof(sDebugCutsceneScriptBuf));
}
}
@@ -888,15 +891,15 @@ void Play_Update(PlayState* this) {
PLAY_LOG(3637);
if (!this->unk_11DE9) {
if (!this->haltAllActors) {
Actor_UpdateAll(this, &this->actorCtx);
}
PLAY_LOG(3643);
func_80064558(this, &this->csCtx);
Cutscene_UpdateManual(this, &this->csCtx);
PLAY_LOG(3648);
func_800645A0(this, &this->csCtx);
Cutscene_UpdateScripted(this, &this->csCtx);
PLAY_LOG(3651);
Effect_UpdateAll(this);
@@ -1096,8 +1099,8 @@ void Play_Draw(PlayState* this) {
TransitionFade_Draw(&this->transitionFadeFlash, &gfxP);
if (D_801614B0.a > 0) {
D_80161498.primColor.rgba = D_801614B0.rgba;
if (gVisMonoColor.a > 0) {
D_80161498.primColor.rgba = gVisMonoColor.rgba;
VisMono_Draw(&D_80161498, &gfxP);
}
+2 -2
View File
@@ -443,8 +443,8 @@ void Scene_CommandAlternateHeaderList(PlayState* play, SceneCmd* cmd) {
}
void Scene_CommandCutsceneData(PlayState* play, SceneCmd* cmd) {
osSyncPrintf("\ngame_play->demo_play.data=[%x]", play->csCtx.segment);
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(cmd->cutsceneData.data);
osSyncPrintf("\ngame_play->demo_play.data=[%x]", play->csCtx.script);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(cmd->cutsceneData.data);
}
// Camera & World Map Area
@@ -250,7 +250,7 @@ void BgBreakwall_Wait(BgBreakwall* this, PlayState* play) {
if ((wallType == BWALL_DC_ENTRANCE) && !Flags_GetEventChkInf(EVENTCHKINF_B0)) {
Flags_SetEventChkInf(EVENTCHKINF_B0);
Cutscene_SetSegment(play, gDcOpeningCs);
Cutscene_SetScript(play, gDcOpeningCs);
gSaveContext.cutsceneTrigger = 1;
Audio_PlaySfxGeneral(NA_SE_SY_CORRECT_CHIME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
@@ -256,30 +256,30 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
if (play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
switch (this->fountainType) {
case FAIRY_SPELL_FARORES_WIND:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyFaroresWindCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyFaroresWindCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_SPELL_DINS_FIRE:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDinsFireCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyDinsFireCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_SPELL_NAYRUS_LOVE:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyNayrusLoveCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyNayrusLoveCs);
gSaveContext.cutsceneTrigger = 1;
break;
}
} else {
switch (this->fountainType) {
case FAIRY_UPGRADE_MAGIC:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyMagicCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyMagicCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_UPGRADE_DOUBLE_MAGIC:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleMagicCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleMagicCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_UPGRADE_DOUBLE_DEFENSE:
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleDefenseCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleDefenseCs);
gSaveContext.cutsceneTrigger = 1;
break;
}
@@ -567,7 +567,7 @@ void BgDyYoseizo_Vanish(BgDyYoseizo* this, PlayState* play) {
void BgDyYoseizo_SetupSpinGrow_Reward(BgDyYoseizo* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
if ((play->csCtx.npcActions[0] != NULL) && (play->csCtx.npcActions[0]->action == 2)) {
if ((play->csCtx.actorCues[0] != NULL) && (play->csCtx.actorCues[0]->id == 2)) {
this->actor.draw = BgDyYoseizo_Draw;
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->finishedSpinGrow = false;
@@ -628,7 +628,7 @@ void BgDyYoseizo_SpinGrowSetupGive_Reward(BgDyYoseizo* this, PlayState* play) {
}
if ((play->csCtx.state != CS_STATE_IDLE) &&
((play->csCtx.npcActions[0] != NULL) && (play->csCtx.npcActions[0]->action == 3))) {
((play->csCtx.actorCues[0] != NULL) && (play->csCtx.actorCues[0]->id == 3))) {
this->finishedSpinGrow = this->animationChanged = false;
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
this->frameCount = Animation_GetLastFrame(&gGreatFairyGivingUpgradeAnim);
@@ -657,7 +657,7 @@ static u8 sItemIds[] = { ITEM_FARORES_WIND, ITEM_DINS_FIRE, ITEM_NAYRUS_LOVE };
void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
f32 curFrame = this->skelAnime.curFrame;
Player* player = GET_PLAYER(play);
s16 actionIndex;
s16 cueIdTemp;
s16 demoEffectParams;
Vec3f itemPos;
@@ -682,19 +682,20 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
this->animationChanged = true;
}
if (play->csCtx.npcActions[0]->action == 13) {
if (play->csCtx.actorCues[0]->id == 13) {
this->actionFunc = BgDyYoseizo_SetupSpinShrink;
return;
}
if ((play->csCtx.npcActions[0]->action >= 4) && (play->csCtx.npcActions[0]->action < 7)) {
actionIndex = play->csCtx.npcActions[0]->action - 4;
if ((play->csCtx.actorCues[0]->id >= 4) && (play->csCtx.actorCues[0]->id < 7)) {
cueIdTemp = play->csCtx.actorCues[0]->id - 4;
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
actionIndex++;
BgDyYoseizo_SpawnEffects(this, play, actionIndex);
cueIdTemp++;
BgDyYoseizo_SpawnEffects(this, play, cueIdTemp);
} else if (!this->lightBallSpawned) {
demoEffectParams = ((s16)(sDemoEffectLightColors[actionIndex] << 0xC) | DEMO_EFFECT_LIGHT);
demoEffectParams = ((s16)(sDemoEffectLightColors[cueIdTemp] << 0xC) | DEMO_EFFECT_LIGHT);
Actor_Spawn(&play->actorCtx, play, ACTOR_DEMO_EFFECT, this->actor.world.pos.x, this->actor.world.pos.y,
this->actor.world.pos.z, 0, 0, 0, (s32)demoEffectParams);
this->lightBallSpawned = true;
@@ -703,11 +704,11 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
BgDyYoseizo_SpawnEffects(this, play, 0);
}
if ((play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action >= 10) &&
(play->csCtx.npcActions[0]->action < 13)) {
actionIndex = play->csCtx.npcActions[0]->action - 10;
if ((play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.actorCues[0]->id >= 10) &&
(play->csCtx.actorCues[0]->id < 13)) {
cueIdTemp = play->csCtx.actorCues[0]->id - 10;
switch (actionIndex) {
switch (cueIdTemp) {
case FAIRY_UPGRADE_MAGIC:
gSaveContext.isMagicAcquired = true;
gSaveContext.magicFillTarget = MAGIC_NORMAL_METER;
@@ -733,15 +734,15 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
if (!this->healing) {
gSaveContext.healthAccumulator = 0x140;
this->healing = true;
if (actionIndex == 2) {
if (cueIdTemp == 2) {
Magic_Fill(play);
}
}
}
if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action >= 14) &&
(play->csCtx.npcActions[0]->action < 17)) {
actionIndex = play->csCtx.npcActions[0]->action - 14;
if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.actorCues[0]->id >= 14) &&
(play->csCtx.actorCues[0]->id < 17)) {
cueIdTemp = play->csCtx.actorCues[0]->id - 14;
if (!this->itemSpawned) {
itemPos.x = player->actor.world.pos.x;
@@ -749,7 +750,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
itemPos.z = player->actor.world.pos.z;
this->item = (EnExItem*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_EX_ITEM, itemPos.x,
itemPos.y, itemPos.z, 0, 0, 0, sExItemTypes[actionIndex]);
itemPos.y, itemPos.z, 0, 0, 0, sExItemTypes[cueIdTemp]);
if (this->item != NULL) {
if (!gSaveContext.isMagicAcquired) {
@@ -761,8 +762,8 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
this->itemSpawned = true;
gSaveContext.healthAccumulator = 0x140;
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_HEARTS_MAGIC);
gSaveContext.itemGetInf[ITEMGETINF_18_19_1A_INDEX] |= sItemGetFlags[actionIndex];
Item_Give(play, sItemIds[actionIndex]);
gSaveContext.itemGetInf[ITEMGETINF_18_19_1A_INDEX] |= sItemGetFlags[cueIdTemp];
Item_Give(play, sItemIds[cueIdTemp]);
}
} else {
this->item->actor.world.pos.x = player->actor.world.pos.x;
@@ -773,13 +774,13 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
}
}
if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action == 17) &&
if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.actorCues[0]->id == 17) &&
(this->item != NULL)) {
Actor_Kill(&this->item->actor);
this->item = NULL;
}
if ((play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action == 18)) {
if ((play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.actorCues[0]->id == 18)) {
this->giveDefenseHearts = true;
}
@@ -789,11 +790,10 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
}
}
if ((play->csCtx.npcActions[0]->action >= 19) && (play->csCtx.npcActions[0]->action < 22) &&
!this->warpEffectSpawned) {
actionIndex = play->csCtx.npcActions[0]->action - 11;
if ((play->csCtx.actorCues[0]->id >= 19) && (play->csCtx.actorCues[0]->id < 22) && !this->warpEffectSpawned) {
cueIdTemp = play->csCtx.actorCues[0]->id - 11;
Actor_Spawn(&play->actorCtx, play, ACTOR_DOOR_WARP1, player->actor.world.pos.x, player->actor.world.pos.y,
player->actor.world.pos.z, 0, 0, 0, actionIndex);
player->actor.world.pos.z, 0, 0, 0, cueIdTemp);
this->warpEffectSpawned = true;
}
BgDyYoseizo_Bob(this, play);
@@ -821,19 +821,19 @@ void BgDyYoseizo_Update(Actor* thisx, PlayState* play2) {
if (play->csCtx.state != CS_STATE_IDLE) {
sfx = 0;
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
if ((play->csCtx.frames == 32) || (play->csCtx.frames == 291) || (play->csCtx.frames == 426) ||
(play->csCtx.frames == 851)) {
if ((play->csCtx.curFrame == 32) || (play->csCtx.curFrame == 291) || (play->csCtx.curFrame == 426) ||
(play->csCtx.curFrame == 851)) {
sfx = 1;
}
if (play->csCtx.frames == 101) {
if (play->csCtx.curFrame == 101) {
sfx = 2;
}
} else {
if ((play->csCtx.frames == 35) || (play->csCtx.frames == 181) || (play->csCtx.frames == 462) ||
(play->csCtx.frames == 795)) {
if ((play->csCtx.curFrame == 35) || (play->csCtx.curFrame == 181) || (play->csCtx.curFrame == 462) ||
(play->csCtx.curFrame == 795)) {
sfx = 1;
}
if (play->csCtx.frames == 90) {
if (play->csCtx.curFrame == 90) {
sfx = 2;
}
}
@@ -74,15 +74,15 @@ void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, PlayState* play) {
(INV_CONTENT(ITEM_ARROW_LIGHT) == ITEM_ARROW_LIGHT) && (player->actor.world.pos.x > -70.0f) &&
(player->actor.world.pos.x < 300.0f) && (player->actor.world.pos.y > 1340.0f) &&
(player->actor.world.pos.z > 1340.0f) && (player->actor.world.pos.z < 1662.0f) && !Play_InCsMode(play)) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gRainbowBridgeCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gRainbowBridgeCs);
gSaveContext.cutsceneTrigger = 1;
this->actionFunc = BgGjyoBridge_SpawnBridge;
}
}
void BgGjyoBridge_SpawnBridge(BgGjyoBridge* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL) &&
(play->csCtx.npcActions[2]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[2] != NULL) &&
(play->csCtx.actorCues[2]->id == 2)) {
this->dyna.actor.draw = BgGjyoBridge_Draw;
DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
SET_EVENTCHKINF(EVENTCHKINF_4D);
@@ -52,7 +52,7 @@ void BgInGate_Init(Actor* thisx, PlayState* play) {
Actor_SetScale(&this->dyna.actor, 0.1f);
if (((this->dyna.actor.params & 1) != 0) && (GET_EVENTINF_HORSES_STATE() == EVENTINF_HORSES_STATE_6)) {
play->csCtx.frames = 0;
play->csCtx.curFrame = 0;
BgInGate_SetupAction(this, func_80892890);
} else {
BgInGate_SetupAction(this, BgInGate_DoNothing);
@@ -70,15 +70,15 @@ void func_80892890(BgInGate* this, PlayState* play) {
s16 phi1;
s16 csFrames;
if (play->csCtx.frames >= 50) {
if (play->csCtx.curFrame >= 50) {
phi0 = 0x4000;
if ((this->dyna.actor.params & 2) == 0) {
phi0 = -0x4000;
}
this->dyna.actor.shape.rot.y = this->dyna.actor.world.rot.y + phi0;
BgInGate_SetupAction(this, BgInGate_DoNothing);
} else if (play->csCtx.frames >= 10) {
csFrames = play->csCtx.frames - 10;
} else if (play->csCtx.curFrame >= 10) {
csFrames = play->csCtx.curFrame - 10;
csFrames *= 400;
phi1 = csFrames;
if (csFrames > 0x4000) {
@@ -179,7 +179,7 @@ void func_808A932C(BgRelayObjects* this, PlayState* play) {
}
void func_808A939C(BgRelayObjects* this, PlayState* play) {
if (Flags_GetEnv(play, 5)) {
if (CutsceneFlags_Get(play, 5)) {
SET_EVENTCHKINF(EVENTCHKINF_65);
}
if (GET_EVENTCHKINF(EVENTCHKINF_65)) {
@@ -140,7 +140,7 @@ void BgSpot00Hanebasi_DrawbridgeWait(BgSpot00Hanebasi* this, PlayState* play) {
if (IS_CUTSCENE_LAYER || !CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) || !CHECK_QUEST_ITEM(QUEST_GORON_RUBY) ||
!CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) || GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (this->dyna.actor.shape.rot.x != 0) {
if (Flags_GetEnv(play, 0) || (!IS_CUTSCENE_LAYER && IS_DAY)) {
if (CutsceneFlags_Get(play, 0) || (!IS_CUTSCENE_LAYER && IS_DAY)) {
this->actionFunc = BgSpot00Hanebasi_DrawbridgeRiseAndFall;
this->destAngle = 0;
child->destAngle = 0;
@@ -151,14 +151,14 @@ s32 BgSpot01Idohashira_NotInCsMode(PlayState* play) {
return false;
}
CsCmdActorAction* BgSpot01Idohashira_GetNpcAction(PlayState* play, s32 actionIdx) {
CsCmdActorCue* BgSpot01Idohashira_GetCue(PlayState* play, s32 cueChannel) {
s32 pad[2];
CsCmdActorAction* npcAction = NULL;
CsCmdActorCue* cue = NULL;
if (!BgSpot01Idohashira_NotInCsMode(play)) {
npcAction = play->csCtx.npcActions[actionIdx];
cue = play->csCtx.actorCues[cueChannel];
}
return npcAction;
return cue;
}
void func_808AB18C(BgSpot01Idohashira* this) {
@@ -185,7 +185,7 @@ f32 func_808AB1DC(f32 arg0, f32 arg1, u16 arg2, u16 arg3, u16 arg4) {
}
s32 func_808AB29C(BgSpot01Idohashira* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
Vec3f* thisPos;
f32 endX;
f32 temp_f0;
@@ -195,17 +195,17 @@ s32 func_808AB29C(BgSpot01Idohashira* this, PlayState* play) {
f32 tempY;
f32 tempZ;
npcAction = BgSpot01Idohashira_GetNpcAction(play, 2);
if (npcAction != NULL) {
temp_f0 = Environment_LerpWeight(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames);
cue = BgSpot01Idohashira_GetCue(play, 2);
if (cue != NULL) {
temp_f0 = Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame);
initPos = this->dyna.actor.home.pos;
endX = npcAction->endPos.x;
tempY = ((kREG(10) + 1100.0f) / 10.0f) + npcAction->endPos.y;
endZ = npcAction->endPos.z;
endX = cue->endPos.x;
tempY = ((kREG(10) + 1100.0f) / 10.0f) + cue->endPos.y;
endZ = cue->endPos.z;
thisPos = &this->dyna.actor.world.pos;
thisPos->x = ((endX - initPos.x) * temp_f0) + initPos.x;
thisPos->y =
func_808AB1DC(initPos.y, tempY, npcAction->endFrame, npcAction->startFrame, play->csCtx.frames) + initPos.y;
thisPos->y = func_808AB1DC(initPos.y, tempY, cue->endFrame, cue->startFrame, play->csCtx.curFrame) + initPos.y;
thisPos->z = ((endZ - initPos.z) * temp_f0) + initPos.z;
if (temp_f0 >= 1.0f) {
@@ -235,15 +235,16 @@ void func_808AB414(BgSpot01Idohashira* this, PlayState* play) {
}
void func_808AB444(BgSpot01Idohashira* this, PlayState* play) {
CsCmdActorAction* npcAction = BgSpot01Idohashira_GetNpcAction(play, 2);
u32 action;
u32 currentNpcAction;
CsCmdActorCue* cue = BgSpot01Idohashira_GetCue(play, 2);
u32 nextCueId;
u32 currentCueId;
if (npcAction != NULL) {
action = npcAction->action;
currentNpcAction = this->npcAction;
if (action != currentNpcAction) {
switch (action) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_808AB3E8(this);
break;
@@ -256,7 +257,8 @@ void func_808AB444(BgSpot01Idohashira* this, PlayState* play) {
default:
osSyncPrintf("Bg_Spot01_Idohashira_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->npcAction = action;
this->cueId = nextCueId;
}
}
}
@@ -13,7 +13,7 @@ typedef struct BgSpot01Idohashira {
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ s32 action;
/* 0x0168 */ s32 drawConfig;
/* 0x016C */ u32 npcAction;
/* 0x016C */ u32 cueId;
/* 0x0170 */ s32 unk_170;
} BgSpot01Idohashira; // size = 0x0174
@@ -128,7 +128,7 @@ void func_808AC908(BgSpot02Objects* this, PlayState* play) {
Vec3f pos;
if (play->csCtx.state != 0) {
if (play->csCtx.npcActions[3] != NULL && play->csCtx.npcActions[3]->action == 2) {
if (play->csCtx.actorCues[3] != NULL && play->csCtx.actorCues[3]->id == 2) {
Actor_PlaySfx(&this->dyna.actor, NA_SE_EV_GRAVE_EXPLOSION);
SET_EVENTCHKINF(EVENTCHKINF_1D);
this->timer = 25;
@@ -156,7 +156,7 @@ void func_808ACA08(BgSpot02Objects* this, PlayState* play) {
Actor_Kill(&this->dyna.actor);
}
if (play->csCtx.frames == 402) {
if (play->csCtx.curFrame == 402) {
if (!LINK_IS_ADULT) {
Player_PlaySfx(player, NA_SE_VO_LI_DEMO_DAMAGE_KID);
} else {
@@ -199,7 +199,7 @@ void BgSpot02Objects_Draw(Actor* thisx, PlayState* play) {
}
void func_808ACC34(BgSpot02Objects* this, PlayState* play) {
if (play->csCtx.state != 0 && play->csCtx.npcActions[0] != NULL && play->csCtx.npcActions[0]->action == 2) {
if (play->csCtx.state != 0 && play->csCtx.actorCues[0] != NULL && play->csCtx.actorCues[0]->id == 2) {
this->unk_16A++;
if (this->unk_16A >= 12) {
@@ -207,7 +207,7 @@ void func_808ACC34(BgSpot02Objects* this, PlayState* play) {
}
}
if (play->csCtx.frames == 245 || play->csCtx.frames == 351) {
if (play->csCtx.curFrame == 245 || play->csCtx.curFrame == 351) {
func_800788CC(NA_SE_EV_LIGHTNING);
}
}
@@ -225,7 +225,7 @@ void func_808ACCB8(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_bg_spot02_objects.c", 600);
if (play->csCtx.state != 0 && play->csCtx.npcActions[0] != NULL && play->csCtx.npcActions[0]->action == 2) {
if (play->csCtx.state != 0 && play->csCtx.actorCues[0] != NULL && play->csCtx.actorCues[0]->id == 2) {
if (this->unk_16A < 5) {
rate = (this->unk_16A / 5.0f);
redPrim = greenPrim = bluePrim = 255;
@@ -242,11 +242,11 @@ void func_808ACCB8(Actor* thisx, PlayState* play) {
blueEnv = 100.0f + (100.0f * rate);
}
Matrix_Translate(play->csCtx.npcActions[0]->startPos.x, play->csCtx.npcActions[0]->startPos.y,
play->csCtx.npcActions[0]->startPos.z, MTXMODE_NEW);
Matrix_RotateX(BINANG_TO_RAD(play->csCtx.npcActions[0]->urot.x), MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD(play->csCtx.npcActions[0]->urot.y), MTXMODE_APPLY);
Matrix_RotateZ(BINANG_TO_RAD(play->csCtx.npcActions[0]->urot.z), MTXMODE_APPLY);
Matrix_Translate(play->csCtx.actorCues[0]->startPos.x, play->csCtx.actorCues[0]->startPos.y,
play->csCtx.actorCues[0]->startPos.z, MTXMODE_NEW);
Matrix_RotateX(BINANG_TO_RAD(play->csCtx.actorCues[0]->rot.x), MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD(play->csCtx.actorCues[0]->rot.y), MTXMODE_APPLY);
Matrix_RotateZ(BINANG_TO_RAD(play->csCtx.actorCues[0]->rot.z), MTXMODE_APPLY);
Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
@@ -265,7 +265,7 @@ void func_808ACCB8(Actor* thisx, PlayState* play) {
}
void func_808AD3D4(BgSpot02Objects* this, PlayState* play) {
if (play->csCtx.state != 0 && play->csCtx.npcActions[2] != NULL && play->csCtx.npcActions[2]->action == 2) {
if (play->csCtx.state != 0 && play->csCtx.actorCues[2] != NULL && play->csCtx.actorCues[2]->id == 2) {
if (this->timer == 2) {
Actor_PlaySfx(&this->dyna.actor, NA_SE_IT_EXPLOSION_ICE);
}
@@ -285,8 +285,8 @@ void func_808AD450(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_bg_spot02_objects.c", 736);
if (play->csCtx.state != 0 && play->csCtx.npcActions[2] != NULL) {
u16 temp_v1 = CAM_BINANG_TO_DEG(play->csCtx.npcActions[2]->urot.z);
if (play->csCtx.state != 0 && play->csCtx.actorCues[2] != NULL) {
u16 temp_v1 = CAM_BINANG_TO_DEG(play->csCtx.actorCues[2]->rot.z);
if (this->unk_170 != temp_v1) {
if (this->unk_170 == 0xFFFF) {
@@ -298,15 +298,15 @@ void func_808AD450(Actor* thisx, PlayState* play) {
}
}
lerp = Environment_LerpWeight(play->csCtx.npcActions[2]->endFrame, play->csCtx.npcActions[2]->startFrame,
play->csCtx.frames);
lerp = Environment_LerpWeight(play->csCtx.actorCues[2]->endFrame, play->csCtx.actorCues[2]->startFrame,
play->csCtx.curFrame);
// should be able to remove & 0xFFFF with some other change
if ((play->csCtx.npcActions[2]->action & 0xFFFF) == 2) {
Matrix_Translate(play->csCtx.npcActions[2]->startPos.x, play->csCtx.npcActions[2]->startPos.y,
play->csCtx.npcActions[2]->startPos.z, MTXMODE_NEW);
Matrix_RotateX(BINANG_TO_RAD(play->csCtx.npcActions[2]->urot.x), MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD(play->csCtx.npcActions[2]->urot.y), MTXMODE_APPLY);
if ((play->csCtx.actorCues[2]->id & 0xFFFF) == 2) {
Matrix_Translate(play->csCtx.actorCues[2]->startPos.x, play->csCtx.actorCues[2]->startPos.y,
play->csCtx.actorCues[2]->startPos.z, MTXMODE_NEW);
Matrix_RotateX(BINANG_TO_RAD(play->csCtx.actorCues[2]->rot.x), MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD(play->csCtx.actorCues[2]->rot.y), MTXMODE_APPLY);
Matrix_Scale(0.9f, 0.9f, (((this->unk_170 - this->unk_172) * lerp) + this->unk_172) * 0.1f, MTXMODE_APPLY);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
@@ -94,7 +94,7 @@ void func_808B2970(BgSpot11Oasis* this) {
}
void func_808B2980(BgSpot11Oasis* this, PlayState* play) {
if (Flags_GetEnv(play, 5) && func_808B280C(play)) {
if (CutsceneFlags_Get(play, 5) && func_808B280C(play)) {
OnePointCutscene_Init(play, 4150, -99, &this->actor, CAM_ID_MAIN);
func_808B29E0(this);
}
@@ -92,8 +92,8 @@ void BgSpot16Doughnut_Update(Actor* thisx, PlayState* play) {
} else {
this->envColorAlpha = 255;
}
} else if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[2] != NULL &&
play->csCtx.npcActions[2]->action == 2) {
} else if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[2] != NULL &&
play->csCtx.actorCues[2]->id == 2) {
if (this->envColorAlpha >= 6) {
this->envColorAlpha -= 5;
} else {
@@ -96,16 +96,16 @@ void func_808BAF40(BgTokiSwd* this, PlayState* play) {
if (!GET_EVENTCHKINF(EVENTCHKINF_4F) && !IS_CUTSCENE_LAYER &&
Actor_IsFacingAndNearPlayer(&this->actor, 800.0f, 0x7530) && !Play_InCsMode(play)) {
SET_EVENTCHKINF(EVENTCHKINF_4F);
play->csCtx.segment = D_808BBD90;
play->csCtx.script = D_808BBD90;
gSaveContext.cutsceneTrigger = 1;
}
if (!LINK_IS_ADULT || GET_EVENTCHKINF(EVENTCHKINF_55)) {
if (Actor_HasParent(&this->actor, play)) {
if (!LINK_IS_ADULT) {
Item_Give(play, ITEM_SWORD_MASTER);
play->csCtx.segment = D_808BB2F0;
play->csCtx.script = D_808BB2F0;
} else {
play->csCtx.segment = D_808BB7A0;
play->csCtx.script = D_808BB7A0;
}
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_MASTER_SWORD);
@@ -146,7 +146,7 @@ void func_808BB0AC(BgTokiSwd* this, PlayState* play) {
}
void func_808BB128(BgTokiSwd* this, PlayState* play) {
if (Flags_GetEnv(play, 1) && (play->roomCtx.unk_74[0] < 0xFF)) {
if (CutsceneFlags_Get(play, 1) && (play->roomCtx.unk_74[0] < 0xFF)) {
play->roomCtx.unk_74[0] += 5;
}
}
@@ -4,76 +4,76 @@
// clang-format off
CutsceneData D_808BB2F0[] = {
CS_BEGIN_CUTSCENE(9, 425),
CS_PLAYER_ACTION_LIST(1),
CS_PLAYER_ACTION(0x000C, 0, 256, 0x0000, 0x0000, 0x0000, 0, 54, 52, 0, 54, 52, 0.0f, 0.0f, 0.0f),
CS_LIGHTING_LIST(1),
CS_LIGHTING(0x0002, 110, 111, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(0x000C, 0, 256, 0x0000, 0x0000, 0x0000, 0, 54, 52, 0, 54, 52, 0.0f, 0.0f, 0.0f),
CS_LIGHT_SETTING_LIST(1),
CS_LIGHT_SETTING(0x0001, 110, 111, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5),
CS_MISC_LIST(1),
CS_MISC(0x000A, 110, 111, 0x0000, 0x00000000, 0x00000000, 0x0000002E, 0xFFFFFFE6, 0x00000000, 0x0000002E, 0xFFFFFFE6, 0x00000000, 0x00000000, 0x00000000),
CS_TERMINATOR(TEMPLE_OF_TIME_AFTER_USE_MS, 230, 231),
CS_SCENE_TRANS_FX(0x0001, 210, 230),
CS_CAM_EYE_LIST(0, 241),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x018C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x019D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x01AE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x02A8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x007A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0064),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0074),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -42, 72, -39, 0x005F),
CS_CAM_EYE_LIST(80, 406),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x2F73),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6B2F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6169),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0005),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 129, -34, 0x7961),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 173, -19, 0x742F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -17, 217, -20, 0x2E64),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -24, 328, -12, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -27, 509, -2, 0x2F73),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -41, 813, 10, 0x6B2F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -60, 1285, 38, 0x6D61),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -58, 1910, 91, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -53, 2526, 133, 0x0005),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -33, 3445, 193, 0x7961),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 3960, 225, 0x742F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 7, 4317, 245, 0x6565),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x2F73),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, 7, 4316, 245, 0x6B2F),
CS_CAM_AT_LIST(0, 270),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2F73),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6B2F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6169),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0005),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x7961),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x742F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2E64),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_AT_LIST(80, 425),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x2F73),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6B2F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6169),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -1, 112, 7, 0x0005),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x2E64),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6D61),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0005),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6565),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_AT(CS_CMD_STOP, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_MISC(CS_MISC_SET_CSFLAG_1, 110, 111, 0x0000, 0x00000000, 0x00000000, 0x0000002E, 0xFFFFFFE6, 0x00000000, 0x0000002E, 0xFFFFFFE6, 0x00000000, 0x00000000, 0x00000000),
CS_DESTINATION(CS_DEST_TEMPLE_OF_TIME_FROM_MASTER_SWORD, 230, 231),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 210, 230),
CS_CAM_EYE_SPLINE(0, 241),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x018C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x019D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x01AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x02A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x007A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0064),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0074),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -42, 72, -39, 0x005F),
CS_CAM_EYE_SPLINE(80, 406),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 129, -34, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 173, -19, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -17, 217, -20, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -24, 328, -12, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -27, 509, -2, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -41, 813, 10, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -60, 1285, 38, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -58, 1910, 91, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -53, 2526, 133, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -33, 3445, 193, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 3960, 225, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4317, 245, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, 7, 4316, 245, 0x6B2F),
CS_CAM_AT_SPLINE(0, 270),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2E64),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_AT_SPLINE(80, 425),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -1, 112, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_END(),
};
// clang-format on
@@ -4,96 +4,96 @@
// clang-format off
CutsceneData D_808BB7A0[] = {
CS_BEGIN_CUTSCENE(9, 368),
CS_CAM_EYE_LIST(0, 126),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1, 101, -110, 0x616D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x6964),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x00FB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x0111),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 101, -109, 0x012D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 71, -110, 0x0033),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x2F68),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.0f, -1, 72, -110, 0x612F),
CS_CAM_EYE_LIST(58, 339),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -9, 106, -3, 0xA1BC),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5F3),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5EB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5A2),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xBAEE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xC9B8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xA5A4),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -83, 102, -42, 0xA5E1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -116, 81, -19, 0xA5D0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -118, 81, 54, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -106, 78, 116, 0xA5A6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -27, 75, 226, 0xA5E5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 121, 82, 312, 0xC0AE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 296, 76, 374, 0xA5E5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 565, 80, 257, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 614, 80, -1, 0xA5EB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 594, 80, -145, 0xA5E1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 475, 80, -380, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 323, 80, -513, 0xA5E1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 192, 80, -574, 0xA5D0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -45, 80, -604, 0x0020),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -142, 80, -589, 0xA5A6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -228, 80, -562, 0xA5E5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -376, 93, -477, 0xC0AE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -584, 95, -183, 0xA5E5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -613, 95, -34, 0x0020),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -595, 95, 161, 0xA5EB),
CS_CAM_AT_LIST(0, 155),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 40.4f, -1, 111, 5, 0xA1BC),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5F3),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5EB),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xA5A2),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xBAEE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 40.0f, -1, 104, 8, 0xC9B8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0xA5A4),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.0f, -1, 104, 8, 0xA5E1),
CS_CAM_AT_LIST(58, 368),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.000004f, 0, 120, 12, 0xA1BC),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5F3),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5EB),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, 0, 120, 12, 0xA5A2),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xBAEE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xC9B8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xA5A4),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5EB),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -3, 95, 8, 0xA5EB),
CS_PLAYER_ACTION_LIST(1),
CS_PLAYER_ACTION(0x000C, 0, 180, 0x0000, 0x0000, 0x0000, 0, 28, -10, 0, -14, 9, 0.0f, -0.23333333f, 0.0f),
CS_LIGHTING_LIST(1),
CS_LIGHTING(0x0002, 90, 91, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF2, 0x00000024, 0x00000000, 0xFFFFFFF2, 0x00000024),
CS_CAM_EYE_SPLINE(0, 126),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 101, -110, 0x616D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x6964),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x0111),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -109, 0x012D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 71, -110, 0x0033),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x2F68),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.0f, -1, 72, -110, 0x612F),
CS_CAM_EYE_SPLINE(58, 339),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -9, 106, -3, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -83, 102, -42, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -116, 81, -19, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -118, 81, 54, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -106, 78, 116, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -27, 75, 226, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 121, 82, 312, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 296, 76, 374, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 565, 80, 257, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 614, 80, -1, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 594, 80, -145, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 475, 80, -380, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 323, 80, -513, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 192, 80, -574, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -45, 80, -604, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -142, 80, -589, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -228, 80, -562, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -376, 93, -477, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -584, 95, -183, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -613, 95, -34, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -595, 95, 161, 0xA5EB),
CS_CAM_AT_SPLINE(0, 155),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.4f, -1, 111, 5, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 104, 8, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.0f, -1, 104, 8, 0xA5E1),
CS_CAM_AT_SPLINE(58, 368),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.000004f, 0, 120, 12, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 0, 120, 12, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -3, 95, 8, 0xA5EB),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(0x000C, 0, 180, 0x0000, 0x0000, 0x0000, 0, 28, -10, 0, -14, 9, 0.0f, -0.23333333f, 0.0f),
CS_LIGHT_SETTING_LIST(1),
CS_LIGHT_SETTING(0x0001, 90, 91, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF2, 0x00000024, 0x00000000, 0xFFFFFFF2, 0x00000024),
CS_MISC_LIST(1),
CS_MISC(0x000A, 90, 91, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF8, 0xFFFFFFDD, 0x00000000, 0xFFFFFFF8, 0xFFFFFFDD, 0x00000000, 0x00000000, 0x00000000),
CS_SCENE_TRANS_FX(0x0001, 190, 210),
CS_TERMINATOR(TEMPLE_OF_TIME_AFTER_USE_MS, 210, 211),
CS_MISC(CS_MISC_SET_CSFLAG_1, 90, 91, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF8, 0xFFFFFFDD, 0x00000000, 0xFFFFFFF8, 0xFFFFFFDD, 0x00000000, 0x00000000, 0x00000000),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 190, 210),
CS_DESTINATION(CS_DEST_TEMPLE_OF_TIME_FROM_MASTER_SWORD, 210, 211),
CS_END(),
};
// clang-format on
@@ -6,91 +6,91 @@ CutsceneData D_808BBD90[] = {
CS_BEGIN_CUTSCENE(11, 3000),
CS_UNK_DATA_LIST(0x00000021, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFF8, 0xFFFFFFFF, 0x00000000, 0xFFFFFFF8, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x0005, 0, 1, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 820, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_ACTION(0x0002, 1, 16, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_ACTION(0x0005, 16, 176, 0x0000, 0x8000, 0x0000, 0, 0, 720, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_NPC_ACTION_LIST(62, 3),
CS_NPC_ACTION(0x0004, 40, 70, 0x7D74, 0x0000, 0x0000, -1, 49, 719, 1, 47, 687, 0.06666667f, -0.06666667f, -0.06666667f),
CS_NPC_ACTION(0x0004, 70, 220, 0x8010, 0x0000, 0x0000, 1, 47, 687, 0, 134, 21, -0.006666667f, 0.58f, 0.006666667f),
CS_NPC_ACTION(0x0002, 220, 272, 0x8000, 0x0000, 0x0000, 0, 134, 21, 0, 101, 2, 0.0f, -0.63461536f, 0.0f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x0005, 0, 1, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 820, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(0x0002, 1, 16, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(0x0005, 16, 176, 0x0000, 0x8000, 0x0000, 0, 0, 720, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_ACTOR_CUE_LIST(62, 3),
CS_ACTOR_CUE(0x0004, 40, 70, 0x7D74, 0x0000, 0x0000, -1, 49, 719, 1, 47, 687, 0.06666667f, -0.06666667f, -0.06666667f),
CS_ACTOR_CUE(0x0004, 70, 220, 0x8010, 0x0000, 0x0000, 1, 47, 687, 0, 134, 21, -0.006666667f, 0.58f, 0.006666667f),
CS_ACTOR_CUE(0x0002, 220, 272, 0x8000, 0x0000, 0x0000, 0, 134, 21, 0, 101, 2, 0.0f, -0.63461536f, 0.0f),
CS_MISC_LIST(1),
CS_MISC(0x000C, 340, 341, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_STOP_CUTSCENE, 340, 341, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000),
CS_TEXT_LIST(6),
CS_TEXT_NONE(0, 50),
CS_TEXT_DISPLAY_TEXTBOX(0x70E6, 50, 60, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x70E6, 50, 60, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(60, 250),
CS_TEXT_DISPLAY_TEXTBOX(0x70E7, 250, 260, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x70E7, 250, 260, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(260, 290),
CS_TEXT_DISPLAY_TEXTBOX(0x70E8, 290, 320, 0x0000, 0x0000, 0x0000),
CS_CAM_EYE_LIST(0, 251),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0222),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x00FA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x2D70),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0085),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x01E6),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_EYE_LIST(90, 331),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0222),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x00FA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -154, 92, 236, 0x2D70),
CS_CAM_EYE_LIST(220, 491),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x0222),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x00FA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 102, 39, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 90, 39, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x2D70),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.000004f, -2, 81, 62, 0x0085),
CS_CAM_AT_LIST(0, 280),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x0222),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x00FA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x2D70),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x0085),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x01E6),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, 62, 85, 721, 0x0000),
CS_CAM_AT_LIST(90, 360),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -105, 83, 366, 0x0222),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -104, 83, 364, 0x00FA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -63, 83, 339, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -16, 99, 255, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -30, 111, 177, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -80, 112, 121, 0x2D70),
CS_CAM_AT_LIST(220, 520),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x0222),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x00FA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 117, -55, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 105, -55, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x2D70),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.000004f, 0, 98, -31, 0x0085),
CS_TEXT(0x70E8, 290, 320, 0x0000, 0x0000, 0x0000),
CS_CAM_EYE_SPLINE(0, 251),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_EYE_SPLINE(90, 331),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -154, 92, 236, 0x2D70),
CS_CAM_EYE_SPLINE(220, 491),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 102, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 90, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.000004f, -2, 81, 62, 0x0085),
CS_CAM_AT_SPLINE(0, 280),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 62, 85, 721, 0x0000),
CS_CAM_AT_SPLINE(90, 360),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -105, 83, 366, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -104, 83, 364, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -63, 83, 339, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -16, 99, 255, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -30, 111, 177, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -80, 112, 121, 0x2D70),
CS_CAM_AT_SPLINE(220, 520),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 117, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 105, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.000004f, 0, 98, -31, 0x0085),
CS_END(),
};
// clang-format on
@@ -90,14 +90,14 @@ void BgTreemouth_Destroy(Actor* thisx, PlayState* play) {
}
void func_808BC65C(BgTreemouth* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[0];
if (npcAction != NULL) {
if (npcAction->action == 2) {
cue = play->csCtx.actorCues[0];
if (cue != NULL) {
if (cue->id == 2) {
BgTreemouth_SetupAction(this, func_808BC80C);
} else if (npcAction->action == 3) {
} else if (cue->id == 3) {
Audio_PlaySfxGeneral(NA_SE_EV_WOODDOOR_OPEN, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
BgTreemouth_SetupAction(this, func_808BC6F8);
@@ -115,7 +115,7 @@ void func_808BC6F8(BgTreemouth* this, PlayState* play) {
this->unk_168 = 1.0f;
}
if ((gSaveContext.sceneLayer == 6) && (play->csCtx.frames >= 0x2BD) && (play->state.frames % 8 == 0)) {
if ((gSaveContext.sceneLayer == 6) && (play->csCtx.curFrame > 700) && (play->state.frames % 8 == 0)) {
sp34.x = (Rand_ZeroOne() * 1158.0f) + 3407.0f;
sp34.y = 970.0f;
sp34.z = (Rand_ZeroOne() * 2026.0f) + -2163.0f;
@@ -145,14 +145,14 @@ void func_808BC8B8(BgTreemouth* this, PlayState* play) {
this->dyna.actor.flags |= ACTOR_FLAG_0;
if (this->dyna.actor.isTargeted) {
this->dyna.actor.flags &= ~ACTOR_FLAG_0;
play->csCtx.segment = D_808BD2A0;
play->csCtx.script = D_808BD2A0;
gSaveContext.cutsceneTrigger = 1;
BgTreemouth_SetupAction(this, func_808BC9EC);
}
}
} else if (Actor_IsFacingAndNearPlayer(&this->dyna.actor, 1658.0f, 0x4E20)) {
Flags_SetEventChkInf(EVENTCHKINF_0C);
play->csCtx.segment = D_808BCE20;
play->csCtx.script = D_808BCE20;
gSaveContext.cutsceneTrigger = 1;
BgTreemouth_SetupAction(this, func_808BC9EC);
}
@@ -165,43 +165,46 @@ void func_808BC8B8(BgTreemouth* this, PlayState* play) {
void func_808BC9EC(BgTreemouth* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (play->csCtx.state == CS_STATE_UNSKIPPABLE_INIT) {
if (play->csCtx.state == CS_STATE_STOP) {
if (Actor_IsFacingAndNearPlayer(&this->dyna.actor, 350.0f, 0x7530)) {
player->actor.world.pos.x = 3827.0f;
player->actor.world.pos.y = -161.0f;
player->actor.world.pos.z = -1142.0f;
}
play->csCtx.frames = 0;
play->csCtx.unk_18 = 0xFFFF;
D_8015FCC0 = 0xFFFF;
D_8015FCC2 = 0xFFFF;
D_8015FCC4 = 0xFFFF;
play->csCtx.unk_1A = 0;
play->csCtx.unk_1B = 0;
play->csCtx.state = CS_STATE_SKIPPABLE_EXEC;
play->csCtx.curFrame = 0;
play->csCtx.camEyeSplinePointsAppliedFrame = CS_CAM_DATA_NOT_APPLIED;
gCamAtSplinePointsAppliedFrame = CS_CAM_DATA_NOT_APPLIED;
gCamEyePointAppliedFrame = CS_CAM_DATA_NOT_APPLIED;
gCamAtPointAppliedFrame = CS_CAM_DATA_NOT_APPLIED;
play->csCtx.camAtReady = false;
play->csCtx.camEyeReady = false;
play->csCtx.state = CS_STATE_RUN;
if (play->msgCtx.choiceIndex == 0) {
play->csCtx.segment = D_808BD520;
play->csCtx.script = D_808BD520;
Flags_SetEventChkInf(EVENTCHKINF_05);
BgTreemouth_SetupAction(this, func_808BCAF0);
} else {
play->csCtx.segment = D_808BD790;
play->csCtx.frames = 0;
play->csCtx.script = D_808BD790;
play->csCtx.curFrame = 0;
BgTreemouth_SetupAction(this, func_808BC8B8);
}
}
}
void func_808BCAF0(BgTreemouth* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[0];
if (npcAction != NULL) {
if (npcAction->action == 2) {
cue = play->csCtx.actorCues[0];
if (cue != NULL) {
if (cue->id == 2) {
BgTreemouth_SetupAction(this, func_808BC80C);
} else if (npcAction->action == 3) {
} else if (cue->id == 3) {
Audio_PlaySfxGeneral(NA_SE_EV_WOODDOOR_OPEN, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
BgTreemouth_SetupAction(this, func_808BC6F8);
@@ -6,59 +6,59 @@ CutsceneData D_808BCE20[] = {
CS_BEGIN_CUTSCENE(12, 3000),
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_PLAYER_ACTION_LIST(2),
CS_PLAYER_ACTION(0x0002, 0, 33, 0x54B2, 0x0000, 0x0000, 2614, 0, -451, 2808, 0, -559, 5.878788f, 0.0f, -5.878788f),
CS_PLAYER_ACTION(0x0004, 33, 42, 0x5945, 0x0000, 0x0000, 2808, 0, -559, 2857, 0, -594, 5.4444447f, 0.0f, -5.4444447f),
CS_CAM_EYE_LIST(0, 1091),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x59A8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20B8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x6430),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_EYE_LIST(60, 1271),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x44B8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x8080),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2705, 67, -302, 0x2D9A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x005E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x5B80),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 47.199955f, 2596, 127, -195, 0x7805),
CS_CAM_AT_LIST(0, 1120),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x2D9A),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 47.199955f, 2787, 23, -453, 0x005E),
CS_CAM_AT_LIST(60, 1300),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2777, 72, -378, 0x2D9A),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x005E),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 47.199955f, 2673, 127, -267, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x5B80),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 47.199955f, 2673, 127, -267, 0x7805),
CS_PLAYER_CUE_LIST(2),
CS_PLAYER_CUE(0x0002, 0, 33, 0x54B2, 0x0000, 0x0000, 2614, 0, -451, 2808, 0, -559, 5.878788f, 0.0f, -5.878788f),
CS_PLAYER_CUE(0x0004, 33, 42, 0x5945, 0x0000, 0x0000, 2808, 0, -559, 2857, 0, -594, 5.4444447f, 0.0f, -5.4444447f),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x59A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x6430),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_EYE_SPLINE(60, 1271),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2705, 67, -302, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 47.199955f, 2596, 127, -195, 0x7805),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x2D9A),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 47.199955f, 2787, 23, -453, 0x005E),
CS_CAM_AT_SPLINE(60, 1300),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2777, 72, -378, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 47.199955f, 2673, 127, -267, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 47.199955f, 2673, 127, -267, 0x7805),
CS_TEXT_LIST(4),
CS_TEXT_NONE(0, 40),
CS_TEXT_DISPLAY_TEXTBOX(0x107D, 40, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_TEXT(0x107D, 40, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_TEXT_NONE(60, 160),
CS_TEXT_DISPLAY_TEXTBOX(0x1015, 160, 170, 0x0000, 0xFFFF, 0xFFFF),
CS_TEXT(0x1015, 160, 170, 0x0000, 0xFFFF, 0xFFFF),
CS_MISC_LIST(1),
CS_MISC(0x000C, 180, 200, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(46, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -41, -28, 0, -41, -28, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(62, 4),
CS_NPC_ACTION(0x0001, 0, 1, 0x0000, 0x0000, 0x0000, 2668, 46, -490, 2668, 46, -490, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 1, 50, 0x5479, 0x0000, 0x0000, 2668, 46, -490, 2890, 43, -612, 4.5306125f, -0.06122449f, -4.5306125f),
CS_NPC_ACTION(0x0004, 50, 100, 0x505C, 0x0000, 0x0000, 2890, 43, -612, 3109, 121, -705, 4.38f, 1.56f, -4.38f),
CS_NPC_ACTION(0x0001, 100, 2084, 0x0000, 0x0000, 0x0000, 3109, 121, -705, 3109, 121, -705, 0.0f, 0.0f, 0.0f),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x004C, 140, 141, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFBA, 0x00000094, 0x00000000, 0xFFFFFFBA, 0x00000094),
CS_FADE_BGM_LIST(1),
CS_FADE_BGM(0x0004, 0, 20, 0x0000, 0x00000000, 0xFFFFFFA2, 0x00000000, 0x00000027, 0xFFFFFFA2, 0x00000000, 0x00000027),
CS_MISC(CS_MISC_STOP_CUTSCENE, 180, 200, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -41, -28, 0, -41, -28, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(62, 4),
CS_ACTOR_CUE(0x0001, 0, 1, 0x0000, 0x0000, 0x0000, 2668, 46, -490, 2668, 46, -490, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 1, 50, 0x5479, 0x0000, 0x0000, 2668, 46, -490, 2890, 43, -612, 4.5306125f, -0.06122449f, -4.5306125f),
CS_ACTOR_CUE(0x0004, 50, 100, 0x505C, 0x0000, 0x0000, 2890, 43, -612, 3109, 121, -705, 4.38f, 1.56f, -4.38f),
CS_ACTOR_CUE(0x0001, 100, 2084, 0x0000, 0x0000, 0x0000, 3109, 121, -705, 3109, 121, -705, 0.0f, 0.0f, 0.0f),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_DEKU_TREE_CS, 140, 141, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFBA, 0x00000094, 0x00000000, 0xFFFFFFBA, 0x00000094),
CS_FADE_OUT_SEQ_LIST(1),
CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 0, 20, 0x0000, 0x00000000, 0xFFFFFFA2, 0x00000000, 0x00000027, 0xFFFFFFA2, 0x00000000, 0x00000027),
CS_END(),
};
@@ -67,38 +67,38 @@ CutsceneData D_808BD2A0[] = {
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_MISC_LIST(1),
CS_MISC(0x000C, 90, 172, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(46, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -27, 26, 0, -27, 26, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_LIST(0, 1091),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x7065),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6167),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6D5D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0xF348),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.999928f, 3740, -141, -530, 0x9D94),
CS_CAM_EYE_REL_TO_PLAYER_LIST(60, 1151),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x7065),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6167),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6D5D),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0xF348),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.0f, -4, 5, 49, 0x9D94),
CS_CAM_AT_LIST(0, 1120),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x7065),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x6167),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 40.999928f, 3776, -89, -605, 0x6D5D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3776, -89, -605, 0xF348),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.999928f, 3776, -89, -604, 0x9D94),
CS_CAM_AT_REL_TO_PLAYER_LIST(60, 1180),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x7065),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x6167),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.0f, 1, 35, -36, 0x6D5D),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0xF348),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.0f, 1, 35, -36, 0x9D94),
CS_MISC(CS_MISC_STOP_CUTSCENE, 90, 172, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -27, 26, 0, -27, 26, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.999928f, 3740, -141, -530, 0x9D94),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(60, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -4, 5, 49, 0x9D94),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.999928f, 3776, -89, -605, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3776, -89, -605, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.999928f, 3776, -89, -604, 0x9D94),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(60, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.0f, 1, 35, -36, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 1, 35, -36, 0x9D94),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT_DISPLAY_TEXTBOX(0x1016, 20, 80, 0x0000, 0xFFFF, 0xFFFF),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x004C, 0, 1, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFAC, 0x0000007E, 0x00000000, 0xFFFFFFAC, 0x0000007E),
CS_TEXT(0x1016, 20, 80, 0x0000, 0xFFFF, 0xFFFF),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_DEKU_TREE_CS, 0, 1, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFAC, 0x0000007E, 0x00000000, 0xFFFFFFAC, 0x0000007E),
CS_END(),
};
@@ -106,34 +106,34 @@ CutsceneData D_808BD520[] = {
CS_BEGIN_CUTSCENE(8, 3000),
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(46, 2),
CS_NPC_ACTION(0x0001, 0, 20, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 20, 357, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_LIST(0, 1151),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x00FB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x010C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x0198),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x019A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x01AB),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.999928f, 3739, -141, -530, 0x01BC),
CS_CAM_AT_LIST(0, 1180),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00FB),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x010C),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x0198),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 40.999928f, 3763, -126, -621, 0x019A),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x01AB),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.999928f, 3765, -118, -617, 0x01BC),
CS_ACTOR_CUE_LIST(46, 2),
CS_ACTOR_CUE(0x0001, 0, 20, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 20, 357, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_SPLINE(0, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.999928f, 3739, -141, -530, 0x01BC),
CS_CAM_AT_SPLINE(0, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.999928f, 3763, -126, -621, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.999928f, 3765, -118, -617, 0x01BC),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT_DISPLAY_TEXTBOX(0x1017, 20, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_TEXT(0x1017, 20, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_MISC_LIST(1),
CS_MISC(0x000C, 100, 150, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF5, 0x00000010, 0x00000000, 0xFFFFFFF5, 0x00000010, 0x00000000, 0x00000000, 0x00000000),
CS_STOP_BGM_LIST(1),
CS_STOP_BGM(0x004C, 90, 91, 0x0000, 0x00000000, 0xFFFFFFAC, 0x00000000, 0x00000034, 0xFFFFFFAC, 0x00000000, 0x00000034),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x003D, 99, 100, 0x0000, 0x00000000, 0xFFFFFFD0, 0x00000000, 0x00000041, 0xFFFFFFD0, 0x00000000, 0x00000041),
CS_MISC(CS_MISC_STOP_CUTSCENE, 100, 150, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF5, 0x00000010, 0x00000000, 0xFFFFFFF5, 0x00000010, 0x00000000, 0x00000000, 0x00000000),
CS_STOP_SEQ_LIST(1),
CS_STOP_SEQ(NA_BGM_DEKU_TREE_CS, 90, 91, 0x0000, 0x00000000, 0xFFFFFFAC, 0x00000000, 0x00000034, 0xFFFFFFAC, 0x00000000, 0x00000034),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_KOKIRI, 99, 100, 0x0000, 0x00000000, 0xFFFFFFD0, 0x00000000, 0x00000041, 0xFFFFFFD0, 0x00000000, 0x00000041),
CS_END(),
};
@@ -141,29 +141,29 @@ CutsceneData D_808BD790[] = {
CS_BEGIN_CUTSCENE(8, 3000),
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(46, 1),
CS_NPC_ACTION(0x0001, 0, 119, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_LIST(0, 1091),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x54EC),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x555C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x55CC),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x563C),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x56AC),
CS_CAM_AT_LIST(0, 1120),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x54EC),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x555C),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 75.59984f, 3769, 718, -1186, 0x55CC),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x563C),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x56AC),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 119, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x56AC),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 75.59984f, 3769, 718, -1186, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x56AC),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT_DISPLAY_TEXTBOX(0x1018, 20, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_TEXT(0x1018, 20, 60, 0x0000, 0xFFFF, 0xFFFF),
CS_MISC_LIST(1),
CS_MISC(0x000C, 80, 110, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEA, 0x00000006, 0x00000000, 0xFFFFFFEA, 0x00000006, 0x00000000, 0x00000000, 0x00000000),
CS_STOP_BGM_LIST(1),
CS_STOP_BGM(0x004C, 70, 71, 0x0000, 0x00000000, 0xFFFFFFB7, 0x00000000, 0x00000044, 0xFFFFFFB7, 0x00000000, 0x00000044),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x003D, 79, 80, 0x0000, 0x00000000, 0xFFFFFFE8, 0x00000000, 0x0000003A, 0xFFFFFFE8, 0x00000000, 0x0000003A),
CS_MISC(CS_MISC_STOP_CUTSCENE, 80, 110, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEA, 0x00000006, 0x00000000, 0xFFFFFFEA, 0x00000006, 0x00000000, 0x00000000, 0x00000000),
CS_STOP_SEQ_LIST(1),
CS_STOP_SEQ(NA_BGM_DEKU_TREE_CS, 70, 71, 0x0000, 0x00000000, 0xFFFFFFB7, 0x00000000, 0x00000044, 0xFFFFFFB7, 0x00000000, 0x00000044),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_KOKIRI, 79, 80, 0x0000, 0x00000000, 0xFFFFFFE8, 0x00000000, 0x0000003A, 0xFFFFFFE8, 0x00000000, 0x0000003A),
CS_END(),
};
// clang-format on
@@ -268,7 +268,7 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) {
}
break;
case 1:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
Play_ClearAllSubCameras(play);
this->subCamId = Play_CreateSubCamera(play);
@@ -416,7 +416,7 @@ void BossDodongo_IntroCutscene(BossDodongo* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossDodongo_SetupWalk(this);
this->unk_1DA = 50;
@@ -1304,7 +1304,7 @@ void BossDodongo_DeathCutscene(BossDodongo* this, PlayState* play) {
switch (this->csState) {
case 0:
this->csState = 5;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
@@ -1614,7 +1614,7 @@ void BossDodongo_DeathCutscene(BossDodongo* this, PlayState* play) {
this->subCamId = SUB_CAM_ID_DONE;
this->csState = 100;
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, -890.0f, -1523.76f, -3304.0f,
0, 0, 0, WARP_DUNGEON_CHILD);
+2 -2
View File
@@ -311,7 +311,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
(fabsf(player2->actor.world.pos.x - 340.0f) < 60.0f)) {
this->introState = BFD_CS_START;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -537,7 +537,7 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
Play_ReturnToMainCam(play, this->subCamId, 0);
// BFD_CS_NONE / BOSSFD_FLY_MAIN / SUB_CAM_ID_DONE
this->introState = this->introFlyState = this->subCamId = 0;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->actionFunc = BossFd_Wait;
this->handoffSignal = FD2_SIGNAL_GROUND;
@@ -652,7 +652,7 @@ void BossFd2_Death(BossFd2* this, PlayState* play) {
switch (this->deathState) {
case DEATH_START:
this->deathState = DEATH_RETREAT;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -780,7 +780,7 @@ void BossFd2_Death(BossFd2* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 100.0f, 0.0f, 0, 0, 0,
WARP_DUNGEON_ADULT);
@@ -557,7 +557,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
this->actor.shape.yOffset = -7000.0f;
this->actor.shape.rot.y = 0;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1127,7 +1127,7 @@ void BossGanon_IntroCutscene(BossGanon* this, PlayState* play) {
mainCam->at = this->csCamAt;
Play_ReturnToMainCam(play, this->csCamIndex, 0);
this->csState = this->csCamIndex = 0;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossGanon_SetupWait(this, play);
}
@@ -1233,7 +1233,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
switch (this->csState) {
case 0:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1504,7 +1504,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
break;
case 100:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->csCamIndex = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1791,7 +1791,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
Play_ReturnToMainCam(play, this->csCamIndex, 0);
this->csState = 109;
this->csCamIndex = 0;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Flags_SetSwitch(play, 0x37);
}
@@ -195,7 +195,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
case 0:
objectIdx = Object_GetIndex(&play->objectCtx, OBJECT_GANON_ANIME3);
if (Object_IsLoaded(&play->objectCtx, objectIdx)) {
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -323,7 +323,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
camera->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 5;
this->unk_398 = 0;
@@ -335,7 +335,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
Message_CloseTextbox(play);
this->unk_39C = 10;
this->unk_398 = 0;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -876,7 +876,7 @@ void func_808FD5F4(BossGanon2* this, PlayState* play) {
camera->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 0;
this->unk_337 = 1;
@@ -1295,7 +1295,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
switch (this->unk_39C) {
case 0:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -1347,13 +1347,13 @@ void func_80900890(BossGanon2* this, PlayState* play) {
mainCam2->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 3;
}
break;
case 10:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -1380,7 +1380,7 @@ void func_80900890(BossGanon2* this, PlayState* play) {
this->unk_39C = 3;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
@@ -1481,7 +1481,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
switch (this->unk_39C) {
case 0:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -1625,7 +1625,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->unk_39C = 6;
}
@@ -1637,7 +1637,7 @@ void func_8090120C(BossGanon2* this, PlayState* play) {
temp_a0_2 = Math_Atan2S(temp_f12, temp_f14) - player->actor.shape.rot.y;
if ((ABS(temp_a0_2) < 0x2000) && (sqrtf(SQ(temp_f14) + SQ(temp_f12)) < 70.0f) &&
(player->meleeWeaponState != 0) && (player->heldItemAction == PLAYER_IA_SWORD_MASTER)) {
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -955,7 +955,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
switch (this->deathState) {
case DEATH_START:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1117,7 +1117,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, GND_BOSSROOM_CENTER_X, GND_BOSSROOM_CENTER_Y,
GND_BOSSROOM_CENTER_Z + 200.0f, 0, 0, 0, 0);
@@ -628,7 +628,7 @@ void BossGoma_SetupEncounterState4(BossGoma* this, PlayState* play) {
player = GET_PLAYER(play);
this->actionState = 4;
this->actor.flags |= ACTOR_FLAG_0;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
@@ -693,7 +693,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
break;
case 1: // player entered the room
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
osSyncPrintf("MAKE CAMERA !!! 1 !!!!!!!!!!!!!!!!!!!!!!!!!!\n");
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -767,7 +767,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->actionState = 3;
}
@@ -963,7 +963,7 @@ void BossGoma_Encounter(BossGoma* this, PlayState* play) {
BossGoma_SetupFloorMain(this);
this->disableGameplayLogic = false;
this->patienceTimer = 200;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
@@ -1052,7 +1052,7 @@ void BossGoma_Defeated(BossGoma* this, PlayState* play) {
switch (this->actionState) {
case 0:
this->actionState = 1;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3);
@@ -1180,7 +1180,7 @@ void BossGoma_Defeated(BossGoma* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
Actor_Kill(&this->actor);
}
+6 -6
View File
@@ -774,7 +774,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
this->mashCounter = 0;
this->sfxTimer = 30;
Audio_ResetIncreasingTranspose();
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -901,7 +901,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
mainCam2->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
}
}
for (indS1 = 0; indS1 < 41; indS1++) {
@@ -1224,7 +1224,7 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) {
((fabsf(player->actor.world.pos.z - -180.0f) < 40.0f) &&
(fabsf(player->actor.world.pos.x - -180.0f) < 40.0f))) {
// checks if Link is on one of the four platforms
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1445,7 +1445,7 @@ void BossMo_IntroCs(BossMo* this, PlayState* play) {
Play_ReturnToMainCam(play, this->subCamId, 0);
// MO_BATTLE / SUB_CAM_ID_DONE
this->csState = this->subCamId = 0;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
}
break;
@@ -1510,7 +1510,7 @@ void BossMo_DeathCs(BossMo* this, PlayState* play) {
switch (this->csState) {
case MO_DEATH_START:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1680,7 +1680,7 @@ void BossMo_DeathCs(BossMo* this, PlayState* play) {
mainCam->at = this->subCamAt;
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sMorphaTent1->actor.world.pos.y = -1000.0f;
}
@@ -370,7 +370,7 @@ void BossSst_HeadSetupIntro(BossSst* this, PlayState* play) {
player->fallStartHeight = 0;
player->stateFlags1 |= PLAYER_STATE1_5;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
sSubCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -403,7 +403,7 @@ void BossSst_HeadIntro(BossSst* this, PlayState* play) {
sHands[RIGHT]->actor.flags |= ACTOR_FLAG_0;
sHands[LEFT]->actor.flags |= ACTOR_FLAG_0;
player->stateFlags1 &= ~PLAYER_STATE1_5;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sSubCamAt.y += 30.0f;
sSubCamAt.z += 300.0f;
@@ -1025,7 +1025,7 @@ void BossSst_HeadSetupDeath(BossSst* this, PlayState* play) {
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_ACTIVE);
Play_CopyCamera(play, sSubCamId, CAM_ID_MAIN);
func_8002DF54(play, &player->actor, PLAYER_CSMODE_8);
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
Math_Vec3f_Copy(&sSubCamEye, &GET_ACTIVE_CAM(play)->eye);
this->actionFunc = BossSst_HeadDeath;
}
@@ -1188,7 +1188,7 @@ void BossSst_HeadFinish(BossSst* this, PlayState* play) {
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
Play_ClearCamera(play, sSubCamId);
func_8002DF54(play, &GET_PLAYER(play)->actor, PLAYER_CSMODE_7);
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
Actor_Kill(&this->actor);
Actor_Kill(&sHands[LEFT]->actor);
Actor_Kill(&sHands[RIGHT]->actor);
+6 -6
View File
@@ -1498,7 +1498,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
switch (this->csState2) {
case 0:
this->csState2 = 1;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -1714,7 +1714,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
this->csState2 = this->subCamId;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
this->work[TW_PLLR_IDX] = 0;
this->targetPos = sTwinrovaPillarPos[0];
@@ -1794,7 +1794,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
if (SQ(player->actor.world.pos.x) + SQ(player->actor.world.pos.z) < SQ(150.0f)) {
player->actor.world.pos.x = player->actor.world.pos.z = .0f;
this->csState2 = 1;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_57);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -2277,7 +2277,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
Play_ReturnToMainCam(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
this->csState2 = this->subCamId;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
BossTw_SetupWait(this, play);
}
@@ -2681,7 +2681,7 @@ void BossTw_TwinrovaDeathCS(BossTw* this, PlayState* play) {
switch (this->csState2) {
case 0:
this->csState2 = 1;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_8);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
@@ -2809,7 +2809,7 @@ void BossTw_TwinrovaDeathCS(BossTw* this, PlayState* play) {
Play_ReturnToMainCam(play, this->subCamId, 0);
this->csState2 = 4;
this->subCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_BOSS_CLEAR);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 600.0f, 230.0f, 0.0f, 0, 0, 0,
+6 -6
View File
@@ -645,7 +645,7 @@ void BossVa_Init(Actor* thisx, PlayState* play2) {
play->envCtx.screenFillColor[1] = 0xDC;
play->envCtx.screenFillColor[2] = 0xBE;
play->envCtx.screenFillColor[3] = 0xD2;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
sSubCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_ACTIVE);
@@ -786,7 +786,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
sCsState++;
break;
case INTRO_LOOK_DOOR:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
if (sSubCamId == SUB_CAM_ID_DONE) {
sSubCamId = Play_CreateSubCamera(play);
}
@@ -828,7 +828,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
sCsState++;
break;
case INTRO_SPAWN_BARI:
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
if (sSubCamId == SUB_CAM_ID_DONE) {
sSubCamId = Play_CreateSubCamera(play);
}
@@ -1010,7 +1010,7 @@ void BossVa_BodyIntro(BossVa* this, PlayState* play) {
if (this->timer == 0) {
Play_ClearCamera(play, sSubCamId);
sSubCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
func_8002DF54(play, &this->actor, PLAYER_CSMODE_7);
sCsState++;
@@ -1531,7 +1531,7 @@ void BossVa_BodyDeath(BossVa* this, PlayState* play) {
switch (sCsState) {
case DEATH_START:
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
sSubCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, sSubCamId, CAM_STAT_ACTIVE);
@@ -1626,7 +1626,7 @@ void BossVa_BodyDeath(BossVa* this, PlayState* play) {
if (this->timer == 0) {
Play_ClearCamera(play, sSubCamId);
sSubCamId = SUB_CAM_ID_DONE;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_ACTIVE);
mainCam->eyeNext = mainCam->eye = sSubCamEye;
+28 -28
View File
@@ -35,7 +35,7 @@ void func_8096865C(Actor* thisx, PlayState* play);
void func_809688C4(Actor* thisx, PlayState* play2);
void func_80968B70(Actor* thisx, PlayState* play);
void func_80968FB0(Actor* thisx, PlayState* play);
void func_809691BC(Demo6K* this, PlayState* play, s32 params);
void func_809691BC(Demo6K* this, PlayState* play, s32 cueChannel);
ActorInit Demo_6K_InitVars = {
ACTOR_DEMO_6K,
@@ -206,27 +206,27 @@ void func_80966DB0(Demo6K* this, PlayState* play) {
}
void func_80966E04(Demo6K* this, PlayState* play) {
if (play->csCtx.frames > 214) {
if (play->csCtx.curFrame > 214) {
func_8002F948(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
if (play->csCtx.frames > 264) {
if (play->csCtx.curFrame > 264) {
func_8002F948(&this->actor, NA_SE_EV_GOD_LIGHTBALL_2 - SFX_FLAG);
}
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[6] != NULL) &&
(play->csCtx.npcActions[6]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[6] != NULL) &&
(play->csCtx.actorCues[6]->id == 2)) {
Demo6K_SetupAction(this, func_80966E98);
}
}
void func_80966E98(Demo6K* this, PlayState* play) {
if (play->csCtx.frames < 353) {
if (play->csCtx.curFrame < 353) {
func_8002F948(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
func_8002F948(&this->actor, NA_SE_EV_GOD_LIGHTBALL_2 - SFX_FLAG);
}
if (play->csCtx.frames == 342) {
if (play->csCtx.curFrame == 342) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_SAGE_SEAL);
}
@@ -288,8 +288,8 @@ void func_8096712C(Demo6K* this, PlayState* play) {
this->actor.scale.x = 0.1f;
}
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[6] != NULL) &&
(play->csCtx.npcActions[6]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[6] != NULL) &&
(play->csCtx.actorCues[6]->id == 2)) {
Demo6K_SetupAction(this, func_809670AC);
this->timer1 = 0;
this->actor.scale.x = 0.1f;
@@ -299,7 +299,7 @@ void func_8096712C(Demo6K* this, PlayState* play) {
this->timer2++;
if ((play->sceneId == SCENE_INSIDE_GANONS_CASTLE) && (play->csCtx.frames < D_8096932C[this->actor.params - 3])) {
if ((play->sceneId == SCENE_INSIDE_GANONS_CASTLE) && (play->csCtx.curFrame < D_8096932C[this->actor.params - 3])) {
func_8002F974(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
}
@@ -333,7 +333,7 @@ void func_80967244(Demo6K* this, PlayState* play) {
if (play->sceneId == SCENE_TEMPLE_OF_TIME) {
scale = 6000;
} else if (play->csCtx.frames < 419) {
} else if (play->csCtx.curFrame < 419) {
scale = 6000;
} else {
scale = 18000;
@@ -343,16 +343,16 @@ void func_80967244(Demo6K* this, PlayState* play) {
}
void func_80967410(Demo6K* this, PlayState* play) {
s32 params = this->actor.params - 14;
s32 cueChannel = this->actor.params - 14;
this->timer2++;
Actor_SetScale(&this->actor, 0.2f);
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[params] != NULL)) {
func_809691BC(this, play, params);
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[cueChannel] != NULL)) {
func_809691BC(this, play, cueChannel);
if (play->csCtx.npcActions[params]->action == 3) {
if (play->csCtx.actorCues[cueChannel]->id == 3) {
this->flags &= ~1;
func_80967244(this, play);
} else {
@@ -462,8 +462,8 @@ void func_80967A04(Demo6K* this, s32 i) {
void func_80967AD0(Demo6K* this, PlayState* play) {
s32 i;
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[1] != NULL)) {
if (play->csCtx.npcActions[1]->action == 2) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[1] != NULL)) {
if (play->csCtx.actorCues[1]->id == 2) {
this->unk_170++;
func_8002F948(&this->actor, NA_SE_EV_RAINBOW_SHOWER - SFX_FLAG);
}
@@ -688,8 +688,8 @@ void func_809688C4(Actor* thisx, PlayState* play2) {
u32 frames = play->state.frames;
s32 i;
if ((i = (play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[1] != NULL)) &&
(play->csCtx.npcActions[1]->action != 1)) {
if ((i = (play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[1] != NULL)) &&
(play->csCtx.actorCues[1]->id != 1)) {
OPEN_DISPS(play->state.gfxCtx, "../z_demo_6k.c", 1277);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
@@ -796,21 +796,21 @@ void func_80968FB0(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_6k.c", 1411);
}
void func_809691BC(Demo6K* this, PlayState* play, s32 params) {
void func_809691BC(Demo6K* this, PlayState* play, s32 cueChannel) {
Vec3f startPos;
Vec3f endPos;
f32 temp;
CsCmdActorAction* csAction = play->csCtx.npcActions[params];
CsCmdActorCue* cue = play->csCtx.actorCues[cueChannel];
startPos.x = csAction->startPos.x;
startPos.y = csAction->startPos.y;
startPos.z = csAction->startPos.z;
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = csAction->endPos.x;
endPos.y = csAction->endPos.y;
endPos.z = csAction->endPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
temp = Environment_LerpWeight(csAction->endFrame, csAction->startFrame, play->csCtx.frames);
temp = Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame);
this->actor.world.pos.x = LERP(startPos.x, endPos.x, temp);
this->actor.world.pos.y = LERP(startPos.y, endPos.y, temp);
+64 -64
View File
@@ -102,41 +102,41 @@ void DemoDu_UpdateBgCheckInfo(DemoDu* this, PlayState* play) {
Actor_UpdateBgCheckInfo(play, &this->actor, 75.0f, 30.0f, 30.0f, UPDBGCHECKINFO_FLAG_0 | UPDBGCHECKINFO_FLAG_2);
}
CsCmdActorAction* DemoDu_GetNpcAction(PlayState* play, s32 idx) {
CsCmdActorCue* DemoDu_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[idx];
return play->csCtx.actorCues[cueChannel];
}
return NULL;
}
s32 DemoDu_IsNpcDoingThisAction(DemoDu* this, PlayState* play, u16 action, s32 idx) {
CsCmdActorAction* npcAction = DemoDu_GetNpcAction(play, idx);
s32 DemoDu_CheckForCue(DemoDu* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoDu_GetCue(play, cueChannel);
if ((npcAction != NULL) && (npcAction->action == action)) {
if ((cue != NULL) && (cue->id == cueId)) {
return true;
}
return false;
}
s32 DemoDu_IsNpcNotDoingThisAction(DemoDu* this, PlayState* play, u16 action, s32 idx) {
CsCmdActorAction* npcAction = DemoDu_GetNpcAction(play, idx);
s32 DemoDu_CheckForNoCue(DemoDu* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoDu_GetCue(play, cueChannel);
if ((npcAction != NULL) && (npcAction->action != action)) {
if ((cue != NULL) && (cue->id != cueId)) {
return true;
}
return false;
}
void DemoDu_MoveToNpcPos(DemoDu* this, PlayState* play, s32 idx) {
CsCmdActorAction* npcAction = DemoDu_GetNpcAction(play, idx);
void DemoDu_SetStartPosRotFromCue(DemoDu* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoDu_GetCue(play, cueChannel);
s32 pad;
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
@@ -198,7 +198,7 @@ void DemoDu_CsFireMedallion_AdvanceTo01(DemoDu* this, PlayState* play) {
Player* player = GET_PLAYER(play);
this->updateIndex = CS_FIREMEDALLION_SUBSCENE(1);
play->csCtx.segment = D_8096C1A4;
play->csCtx.script = D_8096C1A4;
gSaveContext.cutsceneTrigger = 2;
Item_Give(play, ITEM_MEDALLION_FIRE);
@@ -208,9 +208,9 @@ void DemoDu_CsFireMedallion_AdvanceTo01(DemoDu* this, PlayState* play) {
void DemoDu_CsFireMedallion_AdvanceTo02(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 1)) {
if ((cue != NULL) && (cue->id != 1)) {
this->updateIndex = CS_FIREMEDALLION_SUBSCENE(2);
this->drawIndex = 1;
DemoDu_CsFireMedallion_SpawnDoorWarp(this, play);
@@ -227,9 +227,9 @@ void DemoDu_CsFireMedallion_AdvanceTo03(DemoDu* this) {
void DemoDu_CsFireMedallion_AdvanceTo04(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 2)) {
if ((cue != NULL) && (cue->id != 2)) {
Animation_Change(&this->skelAnime, &gDaruniaItemGiveAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gDaruniaItemGiveAnim), 2, 0.0f);
this->updateIndex = CS_FIREMEDALLION_SUBSCENE(4);
@@ -247,9 +247,9 @@ void DemoDu_CsFireMedallion_AdvanceTo05(DemoDu* this, s32 animFinished) {
void DemoDu_CsFireMedallion_AdvanceTo06(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[6];
CsCmdActorCue* cue = play->csCtx.actorCues[6];
if ((npcAction != NULL) && (npcAction->action == 2)) {
if ((cue != NULL) && (cue->id == 2)) {
this->updateIndex = CS_FIREMEDALLION_SUBSCENE(6);
func_80969F38(this, play);
}
@@ -309,7 +309,7 @@ void DemoDu_CsPlaySfx_GoronLanding(DemoDu* this) {
// Cutscene: Darunia gives Link the Goron's Ruby.
// Sfx played when Darunia is falling at the start of the cutscene.
void DemoDu_CsPlaySfx_DaruniaFalling(PlayState* play) {
if (play->csCtx.frames == 160) {
if (play->csCtx.curFrame == 160) {
func_800788CC(NA_SE_EV_OBJECT_FALL);
}
}
@@ -332,7 +332,7 @@ void DemoDu_CsPlaySfx_HitBreast(DemoDu* this) {
// Cutscene: Darunia gives Link the Goron's Ruby.
// Sfx played when Link is escaping from the gorons at the end of the scene.
void DemoDu_CsPlaySfx_LinkEscapeFromGorons(PlayState* play) {
if (play->csCtx.frames == 1400) {
if (play->csCtx.curFrame == 1400) {
Player* player = GET_PLAYER(play);
Audio_PlaySfxGeneral(NA_SE_VO_LI_FALL_L_KID, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
@@ -343,7 +343,7 @@ void DemoDu_CsPlaySfx_LinkEscapeFromGorons(PlayState* play) {
// Cutscene: Darunia gives Link the Goron's Ruby.
// Sfx played when Link is surprised by Darunia falling from the sky.
void DemoDu_CsPlaySfx_LinkSurprised(PlayState* play) {
if (play->csCtx.frames == 174) {
if (play->csCtx.curFrame == 174) {
Player* player = GET_PLAYER(play);
Audio_PlaySfxGeneral(NA_SE_VO_LI_SURPRISE_KID, &player->actor.projectedPos, 4U, &gSfxDefaultFreqAndVolScale,
@@ -352,7 +352,7 @@ void DemoDu_CsPlaySfx_LinkSurprised(PlayState* play) {
}
void DemoDu_CsGoronsRuby_UpdateFaceTextures(DemoDu* this, PlayState* play) {
u16* frames = &play->csCtx.frames;
u16* frames = &play->csCtx.curFrame;
if (*frames < 260) {
DemoDu_UpdateEyes(this);
@@ -438,21 +438,21 @@ void DemoDu_CsGoronsRuby_DaruniaFalling(DemoDu* this, PlayState* play) {
CutsceneContext* csCtx = &play->csCtx;
if (csCtx->state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = csCtx->npcActions[2];
CsCmdActorCue* cue = csCtx->actorCues[2];
Vec3f startPos;
Vec3f endPos;
Vec3f* pos = &this->actor.world.pos;
if (npcAction != NULL) {
f32 traveledPercent = Environment_LerpWeight(npcAction->endFrame, npcAction->startFrame, csCtx->frames);
if (cue != NULL) {
f32 traveledPercent = Environment_LerpWeight(cue->endFrame, cue->startFrame, csCtx->curFrame);
startPos.x = npcAction->startPos.x;
startPos.y = npcAction->startPos.y;
startPos.z = npcAction->startPos.z;
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = npcAction->endPos.x;
endPos.y = npcAction->endPos.y;
endPos.z = npcAction->endPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
pos->x = LERP(startPos.x, endPos.x, traveledPercent);
pos->y = LERP(startPos.y, endPos.y, traveledPercent);
@@ -467,9 +467,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo01(DemoDu* this, PlayState* play) {
void DemoDu_CsGoronsRuby_AdvanceTo02(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 1)) {
if ((cue != NULL) && (cue->id != 1)) {
Animation_Change(&this->skelAnime, &gDaruniaStandUpAfterFallingAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gDaruniaStandUpAfterFallingAnim), 2, 0.0f);
this->updateIndex = CS_GORONSRUBY_SUBSCENE(2);
@@ -483,9 +483,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo03(DemoDu* this, PlayState* play) {
CutsceneContext* csCtx = &play->csCtx;
if (csCtx->state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = csCtx->npcActions[2];
CsCmdActorCue* cue = csCtx->actorCues[2];
if ((npcAction != NULL) && (csCtx->frames >= npcAction->endFrame)) {
if ((cue != NULL) && (csCtx->curFrame >= cue->endFrame)) {
this->updateIndex = CS_GORONSRUBY_SUBSCENE(3);
func_8096A630(this, play);
}
@@ -494,9 +494,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo03(DemoDu* this, PlayState* play) {
void DemoDu_CsGoronsRuby_AdvanceTo04(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 2)) {
if ((cue != NULL) && (cue->id != 2)) {
this->updateIndex = CS_GORONSRUBY_SUBSCENE(4);
}
}
@@ -512,9 +512,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo05(DemoDu* this, s32 animFinished) {
void DemoDu_CsGoronsRuby_AdvanceTo06(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 3)) {
if ((cue != NULL) && (cue->id != 3)) {
Animation_Change(&this->skelAnime, &gDaruniaHitBreastAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gDaruniaHitBreastAnim), 2, -4.0f);
this->updateIndex = CS_GORONSRUBY_SUBSCENE(6);
@@ -532,9 +532,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo07(DemoDu* this, s32 animFinished) {
void DemoDu_CsGoronsRuby_AdvanceTo08(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 4)) {
if ((cue != NULL) && (cue->id != 4)) {
Animation_Change(&this->skelAnime, &gDaruniaHitLinkAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gDaruniaHitLinkAnim), 2, 0.0f);
this->updateIndex = CS_GORONSRUBY_SUBSCENE(8);
@@ -560,9 +560,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo10(DemoDu* this, s32 animFinished) {
void DemoDu_CsGoronsRuby_AdvanceTo11(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 5)) {
if ((cue != NULL) && (cue->id != 5)) {
Animation_Change(&this->skelAnime, &gDaruniaItemGiveAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gDaruniaItemGiveAnim), 2, 0.0f);
this->updateIndex = CS_GORONSRUBY_SUBSCENE(11);
@@ -580,9 +580,9 @@ void DemoDu_CsGoronsRuby_AdvanceTo12(DemoDu* this, s32 animFinished) {
void DemoDu_CsGoronsRuby_AdvanceTo13(DemoDu* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction = play->csCtx.npcActions[2];
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if ((npcAction != NULL) && (npcAction->action != 6)) {
if ((cue != NULL) && (cue->id != 6)) {
Animation_Change(&this->skelAnime, &gDaruniaIdleAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gDaruniaIdleAnim),
ANIMMODE_LOOP, 0.0f);
this->updateIndex = CS_GORONSRUBY_SUBSCENE(13);
@@ -718,7 +718,7 @@ void DemoDu_CsAfterGanon_SpawnDemo6K(DemoDu* this, PlayState* play) {
}
void DemoDu_CsAfterGanon_AdvanceTo01(DemoDu* this, PlayState* play) {
if (DemoDu_IsNpcDoingThisAction(this, play, 4, 2)) {
if (DemoDu_CheckForCue(this, play, 4, 2)) {
this->updateIndex = CS_CHAMBERAFTERGANON_SUBSCENE(1);
this->drawIndex = 2;
this->shadowAlpha = 0;
@@ -732,7 +732,7 @@ void DemoDu_CsAfterGanon_AdvanceTo02(DemoDu* this, PlayState* play) {
f32* unk_1A4 = &this->unk_1A4;
s32 shadowAlpha = 255;
if (DemoDu_IsNpcDoingThisAction(this, play, 4, 2)) {
if (DemoDu_CheckForCue(this, play, 4, 2)) {
*unk_1A4 += 1.0f;
if (*unk_1A4 >= kREG(5) + 10.0f) {
this->updateIndex = CS_CHAMBERAFTERGANON_SUBSCENE(2);
@@ -759,7 +759,7 @@ void DemoDu_CsAfterGanon_AdvanceTo02(DemoDu* this, PlayState* play) {
}
void DemoDu_CsAfterGanon_BackTo01(DemoDu* this, PlayState* play) {
if (DemoDu_IsNpcNotDoingThisAction(this, play, 4, 2)) {
if (DemoDu_CheckForNoCue(this, play, 4, 2)) {
this->updateIndex = CS_CHAMBERAFTERGANON_SUBSCENE(1);
this->drawIndex = 2;
this->unk_1A4 = kREG(5) + 10.0f;
@@ -850,7 +850,7 @@ void DemoDu_CsCredits_UpdateShadowAlpha(DemoDu* this) {
}
void DemoDu_CsCredits_AdvanceTo01(DemoDu* this, PlayState* play) {
DemoDu_MoveToNpcPos(this, play, 2);
DemoDu_SetStartPosRotFromCue(this, play, 2);
this->updateIndex = CS_CREDITS_SUBSCENE(1);
this->drawIndex = 2;
}
@@ -879,15 +879,15 @@ void DemoDu_CsCredits_BackTo02(DemoDu* this, s32 animFinished) {
}
}
void DemoDu_CsCredits_HandleSubscenesByNpcAction(DemoDu* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoDu_GetNpcAction(play, 2);
void DemoDu_CsCredits_HandleCues(DemoDu* this, PlayState* play) {
CsCmdActorCue* cue = DemoDu_GetCue(play, 2);
if (npcAction != NULL) {
s32 action = npcAction->action;
s32 lastAction = this->lastAction;
if (cue != NULL) {
s32 nextCueId = cue->id;
s32 currentCueId = this->cueId;
if (action != lastAction) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 9:
DemoDu_CsCredits_AdvanceTo01(this, play);
break;
@@ -902,13 +902,13 @@ void DemoDu_CsCredits_HandleSubscenesByNpcAction(DemoDu* this, PlayState* play)
osSyncPrintf("Demo_Du_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
break;
}
this->lastAction = action;
this->cueId = nextCueId;
}
}
}
void DemoDu_UpdateCs_CR_00(DemoDu* this, PlayState* play) {
DemoDu_CsCredits_HandleSubscenesByNpcAction(this, play);
DemoDu_CsCredits_HandleCues(this, play);
}
void DemoDu_UpdateCs_CR_01(DemoDu* this, PlayState* play) {
@@ -923,14 +923,14 @@ void DemoDu_UpdateCs_CR_02(DemoDu* this, PlayState* play) {
DemoDu_UpdateBgCheckInfo(this, play);
DemoDu_UpdateSkelAnime(this);
DemoDu_UpdateEyes(this);
DemoDu_CsCredits_HandleSubscenesByNpcAction(this, play);
DemoDu_CsCredits_HandleCues(this, play);
}
void DemoDu_UpdateCs_CR_03(DemoDu* this, PlayState* play) {
DemoDu_UpdateBgCheckInfo(this, play);
DemoDu_UpdateSkelAnime(this);
DemoDu_UpdateEyes(this);
DemoDu_CsCredits_HandleSubscenesByNpcAction(this, play);
DemoDu_CsCredits_HandleCues(this, play);
}
void DemoDu_UpdateCs_CR_04(DemoDu* this, PlayState* play) {
+1 -1
View File
@@ -18,7 +18,7 @@ typedef struct DemoDu {
/* 0x01A4 */ f32 unk_1A4;
/* 0x01A8 */ s32 shadowAlpha;
/* 0x01AC */ s32 demo6KSpawned;
/* 0x01B0 */ s32 lastAction;
/* 0x01B0 */ s32 cueId;
} DemoDu; // size = 0x01B4
// This is the parameter of this actor,
@@ -6,182 +6,182 @@ static CutsceneData D_8096C1A4[] = {
CS_BEGIN_CUTSCENE(31, 3000),
CS_UNK_DATA_LIST(0x00000020, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(31, 5),
CS_NPC_ACTION(0x0001, 0, 546, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 546, 547, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 547, 616, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 616, 667, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 82, 0, 0.0f, -2.627451f, 0.0f),
CS_NPC_ACTION(0x0003, 667, 2834, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x000D, 0, 280, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0005, 280, 531, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0013, 531, 1716, 0x0000, 0xEAAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_NPC_ACTION_LIST(41, 3),
CS_NPC_ACTION(0x0001, 0, 170, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 170, 465, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 465, 2915, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(49, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -16, -121, 0, -16, -121, 0.0f, 0.0f, 0.0f),
CS_SCENE_TRANS_FX(0x0001, 530, 539),
CS_SCENE_TRANS_FX(0x0005, 540, 570),
CS_LIGHTING_LIST(2),
CS_LIGHTING(0x0001, 0, 10, 0x0000, 0x00000000, 0xFFFFFFDC, 0x00000000, 0x00000018, 0xFFFFFFDC, 0x00000000, 0x00000018),
CS_LIGHTING(0x0001, 10, 3000, 0x0000, 0x00000000, 0xFFFFFFDC, 0x00000000, 0x00000018, 0xFFFFFFDC, 0x00000000, 0x00000018),
CS_NPC_ACTION_LIST(39, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, 0, -2, 0, 0, -2, 0.0f, 0.0f, 0.0f),
CS_SCENE_TRANS_FX(0x0001, 805, 835),
CS_NPC_ACTION_LIST(62, 1),
CS_NPC_ACTION(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, 32, 80, -51, 32, 80, -51, 0.0f, 0.0f, 0.0f),
CS_TERMINATOR(DEATH_MOUNTAIN_CRATER_AFTER_FIRE_BLUE_WARP, 905, 1030),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x0044, 615, 616, 0x0000, 0x00000000, 0xFFFFFF97, 0x00000000, 0x00000030, 0xFFFFFF97, 0x00000000, 0x00000030),
CS_FADE_BGM_LIST(1),
CS_FADE_BGM(0x0004, 500, 550, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC3, 0x0000006E, 0x00000000, 0xFFFFFFC3, 0x0000006E),
CS_ACTOR_CUE_LIST(31, 5),
CS_ACTOR_CUE(0x0001, 0, 546, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 546, 547, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 547, 616, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 216, -10, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 616, 667, 0x0000, 0x0000, 0x0000, 0, 216, -10, 0, 82, 0, 0.0f, -2.627451f, 0.0f),
CS_ACTOR_CUE(0x0003, 667, 2834, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x000D, 0, 280, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0005, 280, 531, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0013, 531, 1716, 0x0000, 0xEAAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_ACTOR_CUE_LIST(41, 3),
CS_ACTOR_CUE(0x0001, 0, 170, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 170, 465, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 465, 2915, 0x0000, 0x0000, 0x0000, 98, 6, -169, 98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(49, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -16, -121, 0, -16, -121, 0.0f, 0.0f, 0.0f),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 530, 539),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 540, 570),
CS_LIGHT_SETTING_LIST(2),
CS_LIGHT_SETTING(0x0000, 0, 10, 0x0000, 0x00000000, 0xFFFFFFDC, 0x00000000, 0x00000018, 0xFFFFFFDC, 0x00000000, 0x00000018),
CS_LIGHT_SETTING(0x0000, 10, 3000, 0x0000, 0x00000000, 0xFFFFFFDC, 0x00000000, 0x00000018, 0xFFFFFFDC, 0x00000000, 0x00000018),
CS_ACTOR_CUE_LIST(39, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, 0, -2, 0, 0, -2, 0.0f, 0.0f, 0.0f),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 805, 835),
CS_ACTOR_CUE_LIST(62, 1),
CS_ACTOR_CUE(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, 32, 80, -51, 32, 80, -51, 0.0f, 0.0f, 0.0f),
CS_DESTINATION(CS_DEST_DEATH_MOUNTAIN_CRATER_FROM_CHAMBER_OF_SAGES, 905, 1030),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_MEDALLION_GET, 615, 616, 0x0000, 0x00000000, 0xFFFFFF97, 0x00000000, 0x00000030, 0xFFFFFF97, 0x00000000, 0x00000030),
CS_FADE_OUT_SEQ_LIST(1),
CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 500, 550, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC3, 0x0000006E, 0x00000000, 0xFFFFFFC3, 0x0000006E),
CS_TEXT_LIST(10),
CS_TEXT_NONE(0, 310),
CS_TEXT_DISPLAY_TEXTBOX(0x303C, 310, 323, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x303C, 310, 323, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(323, 344),
CS_TEXT_DISPLAY_TEXTBOX(0x3045, 344, 394, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x3045, 344, 394, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(394, 415),
CS_TEXT_DISPLAY_TEXTBOX(0x3046, 415, 465, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x3046, 415, 465, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(465, 800),
CS_TEXT_DISPLAY_TEXTBOX(0x003C, 800, 805, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x003C, 800, 805, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(805, 865),
CS_TEXT_DISPLAY_TEXTBOX(0x303D, 865, 875, 0x0000, 0x0000, 0x0000),
CS_CAM_EYE_LIST(0, 1361),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, -85, 3211, 795, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, -85, 3211, 795, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, -85, 2925, 795, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 70, 974, 497, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 320, 268, 296, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 312, 190, 150, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x013F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x014E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x015F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.4f, 261, 61, -65, 0x0161),
CS_CAM_EYE_LIST(263, 509),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 29.399885f, 89, 30, -103, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00E8),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.2f, 89, 30, -103, 0x00EA),
CS_CAM_EYE_LIST(333, 1424),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00E8),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.999947f, 114, 50, -116, 0x00EA),
CS_CAM_EYE_LIST(403, 1494),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00E8),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945f, 26, 45, -10, 0x00EA),
CS_CAM_EYE_LIST(443, 1624),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 11, 23, -17, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 11, 23, -17, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 27, 31, -45, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x013F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, 45, 40, -76, 0x002E),
CS_CAM_EYE_LIST(473, 1604),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x013F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x002E),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 70.39992f, 192, 278, -246, 0x0063),
CS_CAM_EYE_LIST(539, 881),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x013F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x002E),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0063),
CS_CAM_EYE_REL_TO_PLAYER_LIST(615, 1796),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C8),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x00D7),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00E8),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00EA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013D),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x002E),
CS_CAM_AT_LIST(0, 1390),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 60, 60.4f, -115, 3163, 585, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 60, 60.4f, -115, 3163, 585, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 60, 60.4f, -115, 2877, 585, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4f, 27, 824, 348, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.4f, 197, 143, 174, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.4f, 147, 100, 55, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.4f, 55, 35, -65, 0x013F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.4f, 55, 35, -65, 0x014E),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4f, 55, 35, -65, 0x015F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.4f, 56, 35, -65, 0x0161),
CS_CAM_AT_LIST(263, 538),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 78.99979f, 87, 157, -391, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 82, 78.79979f, 87, 157, -391, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 103, 70.79991f, 87, 157, -391, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.2f, 87, 157, -391, 0x00E8),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.2f, 87, 157, -391, 0x00EA),
CS_CAM_AT_LIST(333, 1453),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.999947f, -52, 127, -309, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00E8),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.999947f, -52, 127, -309, 0x00EA),
CS_CAM_AT_LIST(403, 1523),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945f, -269, 186, 13, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00E8),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945f, -269, 186, 13, 0x00EA),
CS_CAM_AT_LIST(443, 1653),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 163, 70, -283, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 163, 70, -283, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 177, 74, -309, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 193, 92, -337, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 193, 92, -337, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, 192, 91, -336, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 192, 91, -336, 0x013F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, 192, 91, -336, 0x002E),
CS_CAM_AT_LIST(473, 1633),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -53, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -53, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -54, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 45.999947f, -8, 57, -54, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 70.39992f, 149, 547, -205, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 70.39992f, 149, 547, -205, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 70.39992f, 149, 547, -205, 0x013F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.39992f, 149, 547, -205, 0x002E),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.39992f, 149, 547, -205, 0x0063),
CS_CAM_AT_LIST(539, 930),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x002E),
CS_CAM_AT(CS_CMD_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0063),
CS_CAM_AT_REL_TO_PLAYER_LIST(615, 1825),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x00C6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x00C8),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x00D7),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00E8),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00EA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x013D),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x013F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x002E),
CS_TEXT(0x303D, 865, 875, 0x0000, 0x0000, 0x0000),
CS_CAM_EYE_SPLINE(0, 1361),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, -85, 3211, 795, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, -85, 3211, 795, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, -85, 2925, 795, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 70, 974, 497, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 320, 268, 296, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 312, 190, 150, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x014E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4f, 261, 61, -65, 0x015F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.4f, 261, 61, -65, 0x0161),
CS_CAM_EYE_SPLINE(263, 509),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 29.399885f, 89, 30, -103, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.2f, 89, 30, -103, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.2f, 89, 30, -103, 0x00EA),
CS_CAM_EYE_SPLINE(333, 1424),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.999947f, 114, 50, -116, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.999947f, 114, 50, -116, 0x00EA),
CS_CAM_EYE_SPLINE(403, 1494),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 26, 45, -10, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945f, 26, 45, -10, 0x00EA),
CS_CAM_EYE_SPLINE(443, 1624),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 11, 23, -17, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 11, 23, -17, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 27, 31, -45, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 45, 40, -76, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, 45, 40, -76, 0x002E),
CS_CAM_EYE_SPLINE(473, 1604),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, 192, 29, -246, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.39992f, 192, 278, -246, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.39992f, 192, 278, -246, 0x0063),
CS_CAM_EYE_SPLINE(539, 881),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0063),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(615, 1796),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x002E),
CS_CAM_AT_SPLINE(0, 1390),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 60, 60.4f, -115, 3163, 585, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 60, 60.4f, -115, 3163, 585, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 60, 60.4f, -115, 2877, 585, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4f, 27, 824, 348, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.4f, 197, 143, 174, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.4f, 147, 100, 55, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.4f, 55, 35, -65, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.4f, 55, 35, -65, 0x014E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4f, 55, 35, -65, 0x015F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.4f, 56, 35, -65, 0x0161),
CS_CAM_AT_SPLINE(263, 538),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 78.99979f, 87, 157, -391, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 82, 78.79979f, 87, 157, -391, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 103, 70.79991f, 87, 157, -391, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.2f, 87, 157, -391, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.2f, 87, 157, -391, 0x00EA),
CS_CAM_AT_SPLINE(333, 1453),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.999947f, -52, 127, -309, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.999947f, -52, 127, -309, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.999947f, -52, 127, -309, 0x00EA),
CS_CAM_AT_SPLINE(403, 1523),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945f, -269, 186, 13, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -269, 186, 13, 0x00E8),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945f, -269, 186, 13, 0x00EA),
CS_CAM_AT_SPLINE(443, 1653),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 163, 70, -283, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 163, 70, -283, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 177, 74, -309, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 193, 92, -337, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 193, 92, -337, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, 192, 91, -336, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 192, 91, -336, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, 192, 91, -336, 0x002E),
CS_CAM_AT_SPLINE(473, 1633),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -53, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -53, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 45.199944f, -9, 57, -54, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 45.999947f, -8, 57, -54, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 70.39992f, 149, 547, -205, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 70.39992f, 149, 547, -205, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 70.39992f, 149, 547, -205, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.39992f, 149, 547, -205, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.39992f, 149, 547, -205, 0x0063),
CS_CAM_AT_SPLINE(539, 930),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0063),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(615, 1825),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x002E),
CS_END(),
};
// clang-format on
+38 -33
View File
@@ -332,23 +332,23 @@ void DemoEc_UseAnimationObject(DemoEc* this, PlayState* play) {
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[animObjBankIndex].segment);
}
CsCmdActorAction* DemoEc_GetNpcAction(PlayState* play, s32 actionIndex) {
CsCmdActorCue* DemoEc_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[actionIndex];
return play->csCtx.actorCues[cueChannel];
} else {
return NULL;
}
}
void DemoEc_SetNpcActionPosRot(DemoEc* this, PlayState* play, s32 actionIndex) {
CsCmdActorAction* npcAction = DemoEc_GetNpcAction(play, actionIndex);
void DemoEc_SetStartPosRotFromCue(DemoEc* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoEc_GetCue(play, cueChannel);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
@@ -823,20 +823,21 @@ void func_8096F26C(DemoEc* this, s32 arg1) {
}
}
void func_8096F2B0(DemoEc* this, PlayState* play, s32 arg2) {
CsCmdActorAction* npcAction;
s32 sp18;
void func_8096F2B0(DemoEc* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoEc_GetCue(play, cueChannel);
npcAction = DemoEc_GetNpcAction(play, arg2);
if (cue != NULL) {
s32 nextCueId = cue->id;
s32 currentCueId = this->cueId;
if (npcAction != NULL) {
sp18 = npcAction->action;
if (sp18 != this->npcAction) {
if (this->npcAction) {}
if (sp18 == 2) {
func_8096F224(this, play);
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 2:
func_8096F224(this, play);
break;
}
this->npcAction = sp18;
this->cueId = nextCueId;
}
}
}
@@ -844,7 +845,7 @@ void func_8096F2B0(DemoEc* this, PlayState* play, s32 arg2) {
void DemoEc_UpdateKingZora(DemoEc* this, PlayState* play) {
DemoEc_UpdateSkelAnime(this);
func_8096D594(this, play);
DemoEc_SetNpcActionPosRot(this, play, 6);
DemoEc_SetStartPosRotFromCue(this, play, 6);
DemoEc_UpdateBgFlags(this, play);
func_8096F2B0(this, play, 6);
}
@@ -897,19 +898,23 @@ void func_8096F544(DemoEc* this, s32 changeAnim) {
}
}
void func_8096F578(DemoEc* this, PlayState* play, s32 arg2) {
CsCmdActorAction* npcAction;
s32 sp18;
void func_8096F578(DemoEc* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue;
npcAction = DemoEc_GetNpcAction(play, arg2);
if (npcAction != NULL) {
sp18 = npcAction->action;
if (sp18 != this->npcAction) {
if (this->npcAction) {}
if (sp18 == 2) {
func_8096F4FC(this, play);
cue = DemoEc_GetCue(play, cueChannel);
if (cue != NULL) {
s32 nextCueId = cue->id;
s32 currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 2:
func_8096F4FC(this, play);
break;
}
this->npcAction = sp18;
this->cueId = nextCueId;
}
}
}
@@ -917,7 +922,7 @@ void func_8096F578(DemoEc* this, PlayState* play, s32 arg2) {
void DemoEc_UpdateMido(DemoEc* this, PlayState* play) {
DemoEc_UpdateSkelAnime(this);
func_8096D594(this, play);
DemoEc_SetNpcActionPosRot(this, play, 7);
DemoEc_SetStartPosRotFromCue(this, play, 7);
DemoEc_UpdateBgFlags(this, play);
func_8096F578(this, play, 7);
}
+1 -1
View File
@@ -17,7 +17,7 @@ typedef struct DemoEc {
/* 0x0192 */ s16 blinkTimer;
/* 0x0194 */ s32 updateMode;
/* 0x0198 */ s32 drawConfig;
/* 0x019C */ s32 npcAction;
/* 0x019C */ s32 cueId;
/* 0x01A0 */ s32 drawObjBankIndex;
/* 0x01A4 */ s32 animObjBankIndex;
} DemoEc; // size = 0x01A8
@@ -57,10 +57,10 @@ void DemoEffect_UpdateTimeWarpReturnFromChamberOfSages(DemoEffect* this, PlaySta
void DemoEffect_UpdateTimeWarpPullMasterSword(DemoEffect* this, PlayState* play);
void DemoEffect_UpdateTimeWarpTimeblock(DemoEffect* this, PlayState* play);
s32 DemoEffect_CheckCsAction(DemoEffect* this, PlayState* play, s32 csActionCompareId);
void DemoEffect_InitPositionFromCsAction(DemoEffect* this, PlayState* play, s32 csActionIndex);
void DemoEffect_MoveToCsEndpoint(DemoEffect* this, PlayState* play, s32 csActionId, s32 shouldUpdateFacing);
void DemoEffect_MoveGetItem(DemoEffect* this, PlayState* play, s32 csActionId, f32 speed);
s32 DemoEffect_CheckForCue(DemoEffect* this, PlayState* play, s32 cueId);
void DemoEffect_SetStartPosFromCue(DemoEffect* this, PlayState* play, s32 cueChannel);
void DemoEffect_SetPosRotFromCue(DemoEffect* this, PlayState* play, s32 cueChannel, s32 shouldUpdateFacing);
void DemoEffect_MoveTowardCuePos(DemoEffect* this, PlayState* play, s32 cueChannel, f32 speed);
ActorInit Demo_Effect_InitVars = {
ACTOR_DEMO_EFFECT,
@@ -115,28 +115,23 @@ static Color_RGB8 sJewelSparkleColors[5][2] = {
{ { 223, 0, 0 }, { 0, 0, 0 } },
};
/**
* Sets up the update function.
*/
void DemoEffect_SetupUpdate(DemoEffect* this, DemoEffectFunc updateFunc) {
this->updateFunc = updateFunc;
}
/**
* Gives a number on the range of 0.0f - 1.0f representing current cutscene action completion percentage.
* Gives a number on the range of 0.0f - 1.0f representing current cue completion percentage.
*/
f32 DemoEffect_InterpolateCsFrames(PlayState* play, s32 csActionId) {
f32 interpolated = Environment_LerpWeight(play->csCtx.npcActions[csActionId]->endFrame,
play->csCtx.npcActions[csActionId]->startFrame, play->csCtx.frames);
f32 DemoEffect_InterpolateCsFrames(PlayState* play, s32 cueChannel) {
f32 interpolated = Environment_LerpWeight(play->csCtx.actorCues[cueChannel]->endFrame,
play->csCtx.actorCues[cueChannel]->startFrame, play->csCtx.curFrame);
if (interpolated > 1.0f) {
interpolated = 1.0f;
}
return interpolated;
}
/**
* Initializes information for Jewel/Spritual Stone actors.
*/
void DemoEffect_InitJewel(PlayState* play, DemoEffect* this) {
this->initDrawFunc = DemoEffect_DrawJewel;
if (!LINK_IS_ADULT) {
@@ -149,7 +144,7 @@ void DemoEffect_InitJewel(PlayState* play, DemoEffect* this) {
} else {
Actor_SetScale(&this->actor, 0.10f);
}
this->csActionId = 1;
this->cueChannel = 1;
this->actor.shape.rot.x = 16384;
DemoEffect_InitJewelColor(this);
this->jewel.alpha = 0;
@@ -157,22 +152,15 @@ void DemoEffect_InitJewel(PlayState* play, DemoEffect* this) {
sSfxJewelId[0] = 0;
}
/**
* Initializes information for Get Item actors.
* These are the Medal and Light Arrow actors.
*/
void DemoEffect_InitGetItem(DemoEffect* this) {
this->getItem.isPositionInit = 0;
this->getItem.isLoaded = 0;
this->initDrawFunc = DemoEffect_DrawGetItem;
this->initUpdateFunc = DemoEffect_UpdateGetItem;
Actor_SetScale(&this->actor, 0.25f);
this->csActionId = 6;
this->cueChannel = 6;
}
/**
* Main Actor Init function
*/
void DemoEffect_Init(Actor* thisx, PlayState* play2) {
PlayState* play = play2;
DemoEffect* this = (DemoEffect*)thisx;
@@ -301,7 +289,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->envXluColor[2] = 0;
break;
}
this->csActionId = 7;
this->cueChannel = 7;
Actor_SetScale(thisx, 0.0f);
break;
@@ -323,7 +311,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->godLgt.type = GOD_LGT_DIN;
this->godLgt.rotation = 0;
this->initUpdateFunc = DemoEffect_UpdateGodLgtDin;
this->csActionId = 0;
this->cueChannel = 0;
break;
case DEMO_EFFECT_GOD_LGT_NAYRU:
@@ -344,7 +332,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->godLgt.rotation = 0;
this->godLgt.lightRingSpawnTimer = 0;
this->initUpdateFunc = DemoEffect_UpdateGodLgtNayru;
this->csActionId = 1;
this->cueChannel = 1;
break;
case DEMO_EFFECT_GOD_LGT_FARORE:
@@ -363,7 +351,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->godLgt.type = GOD_LGT_FARORE;
this->godLgt.rotation = 0;
this->initUpdateFunc = DemoEffect_UpdateGodLgtFarore;
this->csActionId = 2;
this->cueChannel = 2;
break;
case DEMO_EFFECT_LIGHTRING_EXPANDING:
@@ -380,7 +368,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->lightRing.timer = 20;
this->lightRing.timerIncrement = 4;
this->lightRing.alpha = 0;
this->csActionId = 4;
this->cueChannel = 4;
break;
case DEMO_EFFECT_LIGHTRING_SHRINKING:
@@ -399,7 +387,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->triforceSpot.triforceSpotOpacity = 0;
this->triforceSpot.rotation = 0;
this->primXluColor[0] = 0;
this->csActionId = 3;
this->cueChannel = 3;
Actor_SetScale(&this->actor, 0.020f);
@@ -502,7 +490,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
this->initDrawFunc = NULL;
this->initUpdateFunc = DemoEffect_UpdateDust;
this->dust.timer = 0;
this->csActionId = 2;
this->cueChannel = 2;
break;
default:
@@ -514,9 +502,6 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
DemoEffect_SetupUpdate(this, DemoEffect_Wait);
}
/**
* Main Actor Destroy function
*/
void DemoEffect_Destroy(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
s32 effectType = (this->actor.params & 0x00FF);
@@ -548,7 +533,6 @@ void DemoEffect_Wait(DemoEffect* this, PlayState* play) {
*/
void DemoEffect_UpdatePositionToParent(DemoEffect* this, PlayState* play) {
if (this->actor.parent != NULL) {
// Struct copy affects regalloc
this->actor.world.pos.x = this->actor.parent->world.pos.x;
this->actor.world.pos.y = this->actor.parent->world.pos.y;
this->actor.world.pos.z = this->actor.parent->world.pos.z;
@@ -566,9 +550,6 @@ void DemoEffect_UpdateCrystalLight(DemoEffect* this, PlayState* play) {
this->actor.world.pos.y += 14.0f;
}
/**
* Spawns sparkle effects for Medals
*/
void DemoEffect_MedalSparkle(DemoEffect* this, PlayState* play, s32 isSmallSpawner) {
Vec3f velocity;
Vec3f accel;
@@ -610,16 +591,16 @@ void DemoEffect_MedalSparkle(DemoEffect* this, PlayState* play, s32 isSmallSpawn
/**
* Update function for the GetItem Actors.
* Medals and Light Arrows.
* It spawns Medal Sparkle Effects and scales/moves the Actor based on the current Cutscene Action
* It spawns Medal Sparkle Effects and scales/moves the Actor based on the current cue
*/
void DemoEffect_UpdateGetItem(DemoEffect* this, PlayState* play) {
Actor* thisx = &this->actor;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
if (this->getItem.isPositionInit) {
DemoEffect_MoveGetItem(this, play, this->csActionId, 0.1f);
DemoEffect_MoveTowardCuePos(this, play, this->cueChannel, 0.1f);
} else {
DemoEffect_InitPositionFromCsAction(this, play, this->csActionId);
DemoEffect_SetStartPosFromCue(this, play, this->cueChannel);
this->getItem.isPositionInit = 1;
}
@@ -632,7 +613,7 @@ void DemoEffect_UpdateGetItem(DemoEffect* this, PlayState* play) {
Actor_SetScale(thisx, 0.20f);
if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) {
switch (play->csCtx.npcActions[this->csActionId]->action) {
switch (play->csCtx.actorCues[this->cueChannel]->id) {
case 2:
DemoEffect_MedalSparkle(this, play, 0);
break;
@@ -641,7 +622,7 @@ void DemoEffect_UpdateGetItem(DemoEffect* this, PlayState* play) {
break;
}
}
switch (play->csCtx.npcActions[this->csActionId]->action) {
switch (play->csCtx.actorCues[this->cueChannel]->id) {
case 2:
if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) {
Actor_PlaySfx(thisx, NA_SE_EV_MEDAL_APPEAR_L - SFX_FLAG);
@@ -715,7 +696,7 @@ void DemoEffect_InitTimeWarp(DemoEffect* this, PlayState* play) {
* It changes the Background Music and updates its SkelCurve animation.
*/
void DemoEffect_UpdateTimeWarpPullMasterSword(DemoEffect* this, PlayState* play) {
if (Flags_GetEnv(play, 1)) {
if (CutsceneFlags_Get(play, 1)) {
if (!(this->effectFlags & 0x2)) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_SWORD_GLOW);
this->effectFlags |= 0x2;
@@ -828,10 +809,10 @@ void DemoEffect_InitTimeWarpTimeblock(DemoEffect* this, PlayState* play) {
void DemoEffect_UpdateTriforceSpot(DemoEffect* this, PlayState* play) {
this->triforceSpot.rotation += 0x03E8;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 0);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 0);
if (play->csCtx.npcActions[this->csActionId]->action == 2) {
if (play->csCtx.actorCues[this->cueChannel]->id == 2) {
if (this->primXluColor[0] < 140) {
this->primXluColor[0]++;
}
@@ -853,7 +834,7 @@ void DemoEffect_UpdateTriforceSpot(DemoEffect* this, PlayState* play) {
}
if (gSaveContext.entranceIndex == ENTR_CUTSCENE_MAP_0 && gSaveContext.sceneLayer == 6 &&
play->csCtx.frames == 143) {
play->csCtx.curFrame == 143) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_RING_EXPLOSION);
}
}
@@ -905,7 +886,6 @@ void DemoEffect_UpdateLightRingExpanding(DemoEffect* this, PlayState* play) {
/**
* Update function for the Lightring Actor that expands. This is a special version for the Triforce Actor.
* This version spawns a blue orb when the cutscene action state is set to 2.
* Once the Blue Orb Actor is spawned the Update Function is changed to the regular Light Ring Expanding Update Func.
*/
void DemoEffect_UpdateLightRingTriforce(DemoEffect* this, PlayState* play) {
@@ -914,7 +894,7 @@ void DemoEffect_UpdateLightRingTriforce(DemoEffect* this, PlayState* play) {
DemoEffect_UpdatePositionToParent(this, play);
if (play->csCtx.state != CS_STATE_IDLE) {
if (play->csCtx.npcActions[this->csActionId] != NULL && play->csCtx.npcActions[this->csActionId]->action == 2) {
if (play->csCtx.actorCues[this->cueChannel] != NULL && play->csCtx.actorCues[this->cueChannel]->id == 2) {
blueOrb = (DemoEffect*)Actor_Spawn(&play->actorCtx, play, ACTOR_DEMO_EFFECT, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0,
DEMO_EFFECT_BLUE_ORB);
@@ -1033,14 +1013,14 @@ void DemoEffect_UpdateBlueOrbGrow(DemoEffect* this, PlayState* play) {
* This function updates the position and scale of the actor based on the current cutscene command.
*/
void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
u16 action;
u16 pad;
s32 isLargeSize;
isLargeSize = ((this->actor.params & 0x0F00) >> 8);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 0);
switch (play->csCtx.npcActions[this->csActionId]->action) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 0);
switch (play->csCtx.actorCues[this->cueChannel]->id) {
case 2:
if (this->light.rotation < 240) {
if (!isLargeSize) {
@@ -1068,15 +1048,15 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
break;
}
if (play->sceneId == SCENE_KOKIRI_FOREST && gSaveContext.sceneLayer == 6 && play->csCtx.frames == 197) {
if (play->sceneId == SCENE_KOKIRI_FOREST && gSaveContext.sceneLayer == 6 && play->csCtx.curFrame == 197) {
Actor_PlaySfx(&this->actor, NA_SE_EV_WHITE_OUT);
}
if (play->sceneId == SCENE_DEATH_MOUNTAIN_TRAIL && gSaveContext.sceneLayer == 5) {
if (!DemoEffect_CheckCsAction(this, play, 1)) {
if (!DemoEffect_CheckForCue(this, play, 1)) {
Actor_PlaySfx(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
if (play->csCtx.frames == 640) {
if (play->csCtx.curFrame == 640) {
Actor_PlaySfx(&this->actor, NA_SE_EV_WHITE_OUT);
}
@@ -1084,10 +1064,10 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
}
if (play->sceneId == SCENE_ZORAS_FOUNTAIN && gSaveContext.sceneLayer == 4) {
if (!DemoEffect_CheckCsAction(this, play, 1)) {
if (!DemoEffect_CheckForCue(this, play, 1)) {
Actor_PlaySfx(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
if (play->csCtx.frames == 648) {
if (play->csCtx.curFrame == 648) {
Actor_PlaySfx(&this->actor, NA_SE_EV_WHITE_OUT);
}
@@ -1098,13 +1078,13 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
if (play->sceneId == SCENE_TEMPLE_OF_TIME && gSaveContext.sceneLayer == 14) {
if (1) {}
if (play->csCtx.npcActions[this->csActionId]->action == 2) {
if (play->csCtx.actorCues[this->cueChannel]->id == 2) {
Actor_PlaySfx(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
}
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC || play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS) {
if (play->csCtx.npcActions[this->csActionId]->action == 2) {
if (play->csCtx.actorCues[this->cueChannel]->id == 2) {
Actor_PlaySfx(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
}
}
@@ -1137,10 +1117,10 @@ void DemoEffect_UpdateLgtShower(DemoEffect* this, PlayState* play) {
void DemoEffect_UpdateGodLgtDin(DemoEffect* this, PlayState* play) {
DemoEffect* fireBall;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 1);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 1);
if (play->csCtx.npcActions[this->csActionId]->action == 3) {
if (play->csCtx.actorCues[this->cueChannel]->id == 3) {
fireBall = (DemoEffect*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT,
this->actor.world.pos.x, this->actor.world.pos.y,
this->actor.world.pos.z, 0, 0, 0, DEMO_EFFECT_FIRE_BALL);
@@ -1154,22 +1134,22 @@ void DemoEffect_UpdateGodLgtDin(DemoEffect* this, PlayState* play) {
if (gSaveContext.entranceIndex == ENTR_CUTSCENE_MAP_0) {
switch (gSaveContext.sceneLayer) {
case 4:
if (play->csCtx.frames == 288) {
if (play->csCtx.curFrame == 288) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_PASS);
}
if (play->csCtx.frames == 635) {
if (play->csCtx.curFrame == 635) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_PASS);
}
break;
case 6:
if (play->csCtx.frames == 55) {
if (play->csCtx.curFrame == 55) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
case 11:
if (play->csCtx.frames == 350) {
if (play->csCtx.curFrame == 350) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
@@ -1187,10 +1167,10 @@ void DemoEffect_UpdateGodLgtDin(DemoEffect* this, PlayState* play) {
void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, PlayState* play) {
DemoEffect* lightRing;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 1);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 1);
if (play->csCtx.npcActions[this->csActionId]->action == 3) {
if (play->csCtx.actorCues[this->cueChannel]->id == 3) {
if (this->godLgt.lightRingSpawnTimer != 0) {
this->godLgt.lightRingSpawnTimer--;
} else {
@@ -1209,19 +1189,19 @@ void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, PlayState* play) {
if (gSaveContext.entranceIndex == ENTR_CUTSCENE_MAP_0) {
switch (gSaveContext.sceneLayer) {
case 4:
if (play->csCtx.frames == 298) {
if (play->csCtx.curFrame == 298) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_PASS);
}
break;
case 6:
if (play->csCtx.frames == 105) {
if (play->csCtx.curFrame == 105) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
case 11:
if (play->csCtx.frames == 360) {
if (play->csCtx.curFrame == 360) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
@@ -1229,10 +1209,10 @@ void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, PlayState* play) {
}
if (gSaveContext.entranceIndex == ENTR_DEATH_MOUNTAIN_TRAIL_0 && gSaveContext.sceneLayer == 4) {
if (play->csCtx.frames == 72) {
if (play->csCtx.curFrame == 72) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
if (play->csCtx.frames == 80) {
if (play->csCtx.curFrame == 80) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_NAYRU_MAGIC);
}
}
@@ -1248,10 +1228,10 @@ void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, PlayState* play) {
void DemoEffect_UpdateGodLgtFarore(DemoEffect* this, PlayState* play) {
DemoEffect* lgtShower;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 1);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL) {
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 1);
if (play->csCtx.npcActions[this->csActionId]->action == 3) {
if (play->csCtx.actorCues[this->cueChannel]->id == 3) {
lgtShower = (DemoEffect*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT,
this->actor.world.pos.x, this->actor.world.pos.y - 150.0f,
this->actor.world.pos.z, 0, 0, 0, DEMO_EFFECT_LGT_SHOWER);
@@ -1269,19 +1249,19 @@ void DemoEffect_UpdateGodLgtFarore(DemoEffect* this, PlayState* play) {
if (gSaveContext.entranceIndex == ENTR_CUTSCENE_MAP_0) {
switch (gSaveContext.sceneLayer) {
case 4:
if (play->csCtx.frames == 315) {
if (play->csCtx.curFrame == 315) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_PASS);
}
break;
case 6:
if (play->csCtx.frames == 80) {
if (play->csCtx.curFrame == 80) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
case 11:
if (play->csCtx.frames == 370) {
if (play->csCtx.curFrame == 370) {
Actor_PlaySfx(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
break;
@@ -1290,18 +1270,12 @@ void DemoEffect_UpdateGodLgtFarore(DemoEffect* this, PlayState* play) {
}
}
/**
* Moves this actor towards the target position with a given speed.
*/
void DemoEffect_MoveTowardTarget(Vec3f targetPos, DemoEffect* this, f32 speed) {
this->actor.world.pos.x += (targetPos.x - this->actor.world.pos.x) * speed;
this->actor.world.pos.y += (targetPos.y - this->actor.world.pos.y) * speed;
this->actor.world.pos.z += (targetPos.z - this->actor.world.pos.z) * speed;
}
/**
* Initializes Jewel colors.
*/
void DemoEffect_InitJewelColor(DemoEffect* this) {
u8 jewelType = this->jewel.type;
@@ -1440,17 +1414,17 @@ void DemoEffect_MoveJewelActivateDoorOfTime(DemoEffect* this, PlayState* play) {
f32 frameDivisor;
f32 degrees;
f32 radius;
s32 csActionId;
s32 cueChannel = this->cueChannel;
csActionId = this->csActionId;
startPos.x = play->csCtx.npcActions[csActionId]->startPos.x;
startPos.y = play->csCtx.npcActions[csActionId]->startPos.y;
startPos.z = play->csCtx.npcActions[csActionId]->startPos.z;
endPos.x = play->csCtx.npcActions[csActionId]->endPos.x;
endPos.y = play->csCtx.npcActions[csActionId]->endPos.y;
endPos.z = play->csCtx.npcActions[csActionId]->endPos.z;
startPos.x = play->csCtx.actorCues[cueChannel]->startPos.x;
startPos.y = play->csCtx.actorCues[cueChannel]->startPos.y;
startPos.z = play->csCtx.actorCues[cueChannel]->startPos.z;
frameDivisor = DemoEffect_InterpolateCsFrames(play, csActionId);
endPos.x = play->csCtx.actorCues[cueChannel]->endPos.x;
endPos.y = play->csCtx.actorCues[cueChannel]->endPos.y;
endPos.z = play->csCtx.actorCues[cueChannel]->endPos.z;
frameDivisor = DemoEffect_InterpolateCsFrames(play, cueChannel);
switch (this->jewel.type) {
case DEMO_EFFECT_JEWEL_KOKIRI:
@@ -1480,9 +1454,6 @@ void DemoEffect_MoveJewelActivateDoorOfTime(DemoEffect* this, PlayState* play) {
DemoEffect_MoveJewelSpherical(degrees, frameDivisor, startPos, endPos, radius, this->jewelCsRotation, this);
}
/**
* Spawns Sparkle Effects for the Jewel Actor.
*/
void DemoEffect_JewelSparkle(DemoEffect* this, PlayState* play, s32 spawnerCount) {
Vec3f velocity;
Vec3f accel;
@@ -1521,7 +1492,7 @@ void DemoEffect_JewelSparkle(DemoEffect* this, PlayState* play, s32 spawnerCount
* The sSfxJewelId global variable is used to ensure only one Jewel Actor is playing SFX when all are spawned.
*/
void DemoEffect_PlayJewelSfx(DemoEffect* this, PlayState* play) {
if (!DemoEffect_CheckCsAction(this, play, 1)) {
if (!DemoEffect_CheckForCue(this, play, 1)) {
if (this->actor.params == sSfxJewelId[0]) {
func_8002F974(&this->actor, NA_SE_EV_SPIRIT_STONE - SFX_FLAG);
} else if (sSfxJewelId[0] == 0) {
@@ -1551,13 +1522,13 @@ void DemoEffect_UpdateJewelAdult(DemoEffect* this, PlayState* play) {
* This also updates the Jewel's position based on different cutscenes.
*/
void DemoEffect_UpdateJewelChild(DemoEffect* this, PlayState* play) {
s32 hasCmdAction;
s32 hasCue;
Actor* thisx = &this->actor;
this->jewel.timer++;
if (play->csCtx.state && play->csCtx.npcActions[this->csActionId]) {
switch (play->csCtx.npcActions[this->csActionId]->action) {
if (play->csCtx.state && play->csCtx.actorCues[this->cueChannel]) {
switch (play->csCtx.actorCues[this->cueChannel]->id) {
case 3:
if (GET_EVENTCHKINF(EVENTCHKINF_4B)) {
SET_EVENTCHKINF(EVENTCHKINF_4B);
@@ -1569,13 +1540,13 @@ void DemoEffect_UpdateJewelChild(DemoEffect* this, PlayState* play) {
break;
case 4:
if (this->jewel.isPositionInit) {
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 0);
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 0);
DemoEffect_MoveJewelSplit(&thisx->world, this);
if ((play->gameplayFrames & 1) == 0) {
DemoEffect_JewelSparkle(this, play, 1);
}
} else {
DemoEffect_InitPositionFromCsAction(this, play, this->csActionId);
DemoEffect_SetStartPosFromCue(this, play, this->cueChannel);
DemoEffect_MoveJewelSplit(&thisx->world, this);
this->jewel.isPositionInit = 1;
}
@@ -1584,7 +1555,7 @@ void DemoEffect_UpdateJewelChild(DemoEffect* this, PlayState* play) {
Actor_Kill(thisx);
return;
default:
DemoEffect_MoveToCsEndpoint(this, play, this->csActionId, 0);
DemoEffect_SetPosRotFromCue(this, play, this->cueChannel, 0);
if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) {
DemoEffect_MoveJewelSplit(&thisx->world, this);
}
@@ -1594,8 +1565,9 @@ void DemoEffect_UpdateJewelChild(DemoEffect* this, PlayState* play) {
if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) {
if (!GET_EVENTCHKINF(EVENTCHKINF_4B)) {
hasCmdAction = play->csCtx.state && play->csCtx.npcActions[this->csActionId];
if (!hasCmdAction) {
hasCue = (play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[this->cueChannel] != NULL);
if (!hasCue) {
this->effectFlags |= 0x1;
return;
}
@@ -1617,8 +1589,8 @@ void DemoEffect_UpdateDust(DemoEffect* this, PlayState* play) {
Vec3f velocity;
Vec3f accel;
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL &&
play->csCtx.npcActions[this->csActionId]->action == 2) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL &&
play->csCtx.actorCues[this->cueChannel]->id == 2) {
pos = this->actor.world.pos;
pos.y += 600.0f;
@@ -1639,29 +1611,20 @@ void DemoEffect_UpdateDust(DemoEffect* this, PlayState* play) {
}
}
/**
* This is the main Actor Update Function.
*/
void DemoEffect_Update(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
this->updateFunc(this, play);
}
/**
* Check if the current cutscene action matches the passed in cutscene action ID.
*/
s32 DemoEffect_CheckCsAction(DemoEffect* this, PlayState* play, s32 csActionCompareId) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->csActionId] != NULL &&
play->csCtx.npcActions[this->csActionId]->action == csActionCompareId) {
s32 DemoEffect_CheckForCue(DemoEffect* this, PlayState* play, s32 cueId) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->cueChannel] != NULL &&
play->csCtx.actorCues[this->cueChannel]->id == cueId) {
return 1;
}
return 0;
}
/**
* Draw function for the Jewel Actor.
*/
void DemoEffect_DrawJewel(Actor* thisx, PlayState* play2) {
DemoEffect* this = (DemoEffect*)thisx;
PlayState* play = play2;
@@ -1669,7 +1632,7 @@ void DemoEffect_DrawJewel(Actor* thisx, PlayState* play2) {
OPEN_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2543);
if (!DemoEffect_CheckCsAction(this, play, 1)) {
if (!DemoEffect_CheckForCue(this, play, 1)) {
if (1) {}
if (!(this->effectFlags & 0x1)) {
@@ -1721,9 +1684,6 @@ void DemoEffect_DrawJewel(Actor* thisx, PlayState* play2) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2620);
}
/**
* Draw function for the Crystal Light Actor.
*/
void DemoEffect_DrawCrystalLight(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
DemoEffect* parent = (DemoEffect*)this->actor.parent;
@@ -1769,9 +1729,6 @@ void DemoEffect_DrawCrystalLight(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2688);
}
/**
* Draw function for the Fire Ball Actor.
*/
void DemoEffect_DrawFireBall(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
u32 frames = play->gameplayFrames;
@@ -1791,7 +1748,6 @@ void DemoEffect_DrawFireBall(Actor* thisx, PlayState* play) {
}
/**
* Draw function for the God Lgt Actors.
* This draws either Din, Nayru, or Farore based on the colors set in the DemoEffect struct.
*/
void DemoEffect_DrawGodLgt(Actor* thisx, PlayState* play) {
@@ -1801,10 +1757,10 @@ void DemoEffect_DrawGodLgt(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2737);
if (!DemoEffect_CheckCsAction(this, play, 2)) {
if (!DemoEffect_CheckForCue(this, play, 2)) {
if (gSaveContext.entranceIndex == ENTR_CUTSCENE_MAP_0) {
if (gSaveContext.sceneLayer == 4) {
if (play->csCtx.frames <= 680) {
if (play->csCtx.curFrame <= 680) {
func_80078914(&this->actor.projectedPos, NA_SE_EV_GOD_FLYING - SFX_FLAG);
}
} else {
@@ -1850,9 +1806,6 @@ void DemoEffect_DrawGodLgt(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2829);
}
/**
* Draw function for the Light Effect Actor.
*/
void DemoEffect_DrawLightEffect(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
u8* alpha;
@@ -1860,7 +1813,7 @@ void DemoEffect_DrawLightEffect(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2842);
if (!DemoEffect_CheckCsAction(this, play, 1)) {
if (!DemoEffect_CheckForCue(this, play, 1)) {
if (this->light.flicker == 0) {
this->light.flicker = 1;
@@ -1892,9 +1845,6 @@ void DemoEffect_DrawLightEffect(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2881);
}
/**
* Draw function for the Blue Orb Actor.
*/
void DemoEffect_DrawBlueOrb(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
s32 pad2;
@@ -1912,9 +1862,6 @@ void DemoEffect_DrawBlueOrb(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2907);
}
/**
* Draw function for the Lgt Shower Actor.
*/
void DemoEffect_DrawLgtShower(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
s32 pad;
@@ -1933,9 +1880,6 @@ void DemoEffect_DrawLgtShower(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2942);
}
/**
* Draw function for the Light Ring Actor.
*/
void DemoEffect_DrawLightRing(Actor* thisx, PlayState* play2) {
DemoEffect* this = (DemoEffect*)thisx;
PlayState* play = play2;
@@ -1956,9 +1900,6 @@ void DemoEffect_DrawLightRing(Actor* thisx, PlayState* play2) {
CLOSE_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2978);
}
/**
* Draw function for the Triforce Spot Actor.
*/
void DemoEffect_DrawTriforceSpot(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
s32 pad;
@@ -1966,7 +1907,7 @@ void DemoEffect_DrawTriforceSpot(Actor* thisx, PlayState* play) {
u32 frames = play->gameplayFrames;
OPEN_DISPS(play->state.gfxCtx, "../z_demo_effect.c", 2994);
if (gSaveContext.entranceIndex != ENTR_CASTLE_COURTYARD_ZELDA_0 || play->csCtx.frames < 885) {
if (gSaveContext.entranceIndex != ENTR_CASTLE_COURTYARD_ZELDA_0 || play->csCtx.curFrame < 885) {
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
if (this->triforceSpot.lightColumnOpacity > 0) {
@@ -2022,12 +1963,11 @@ void DemoEffect_DrawTriforceSpot(Actor* thisx, PlayState* play) {
}
/**
* Draw function for the Get Item Actors.
* This is either Medals or Light Arrows based on the drawId.
*/
void DemoEffect_DrawGetItem(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
if (!DemoEffect_CheckCsAction(this, play, 1) && !DemoEffect_CheckCsAction(this, play, 4)) {
if (!DemoEffect_CheckForCue(this, play, 1) && !DemoEffect_CheckForCue(this, play, 4)) {
if (!this->getItem.isLoaded) {
this->getItem.isLoaded = 1;
return;
@@ -2038,9 +1978,6 @@ void DemoEffect_DrawGetItem(Actor* thisx, PlayState* play) {
}
}
/**
* Callback for the SkelCurve system to draw the animated limbs.
*/
s32 DemoEffect_OverrideLimbDrawTimeWarp(PlayState* play, SkelCurve* skelCurve, s32 limbIndex, void* thisx) {
s32 pad;
DemoEffect* this = (DemoEffect*)thisx;
@@ -2066,16 +2003,13 @@ s32 DemoEffect_OverrideLimbDrawTimeWarp(PlayState* play, SkelCurve* skelCurve, s
return true;
}
/**
* Draw function for the Time Warp Actors.
*/
void DemoEffect_DrawTimeWarp(Actor* thisx, PlayState* play) {
DemoEffect* this = (DemoEffect*)thisx;
GraphicsContext* gfxCtx = play->state.gfxCtx;
u8 effectType = (this->actor.params & 0x00FF);
if (effectType == DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE || effectType == DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL ||
Flags_GetEnv(play, 1) || IS_CUTSCENE_LAYER || gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_4) {
CutsceneFlags_Get(play, 1) || IS_CUTSCENE_LAYER || gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_4) {
OPEN_DISPS(gfxCtx, "../z_demo_effect.c", 3201);
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_25);
@@ -2087,10 +2021,7 @@ void DemoEffect_DrawTimeWarp(Actor* thisx, PlayState* play) {
}
}
/**
* Faces/rotates the Actor towards the current cutscene action end point.
*/
void DemoEffect_FaceToCsEndpoint(DemoEffect* this, Vec3f startPos, Vec3f endPos) {
void DemoEffect_FaceTowardPoint(DemoEffect* this, Vec3f startPos, Vec3f endPos) {
s32 pad;
f32 x = endPos.x - startPos.x;
f32 z = endPos.z - startPos.z;
@@ -2100,52 +2031,44 @@ void DemoEffect_FaceToCsEndpoint(DemoEffect* this, Vec3f startPos, Vec3f endPos)
this->actor.shape.rot.x = RAD_TO_BINANG(Math_FAtan2F(-(endPos.y - startPos.y), xzDistance));
}
/**
* Moves the Actor towards the current cutscene action end point.
* Will only update the Actor's facing/rotation if the shouldUpdateFacing argument is true.
* The speed is based on the current progress in the cutscene action.
*/
void DemoEffect_MoveToCsEndpoint(DemoEffect* this, PlayState* play, s32 csActionId, s32 shouldUpdateFacing) {
void DemoEffect_SetPosRotFromCue(DemoEffect* this, PlayState* play, s32 cueChannel, s32 shouldUpdateFacing) {
Vec3f startPos;
Vec3f endPos;
f32 speed;
startPos.x = play->csCtx.npcActions[csActionId]->startPos.x;
startPos.y = play->csCtx.npcActions[csActionId]->startPos.y;
startPos.z = play->csCtx.npcActions[csActionId]->startPos.z;
endPos.x = play->csCtx.npcActions[csActionId]->endPos.x;
endPos.y = play->csCtx.npcActions[csActionId]->endPos.y;
endPos.z = play->csCtx.npcActions[csActionId]->endPos.z;
startPos.x = play->csCtx.actorCues[cueChannel]->startPos.x;
startPos.y = play->csCtx.actorCues[cueChannel]->startPos.y;
startPos.z = play->csCtx.actorCues[cueChannel]->startPos.z;
speed = DemoEffect_InterpolateCsFrames(play, csActionId);
endPos.x = play->csCtx.actorCues[cueChannel]->endPos.x;
endPos.y = play->csCtx.actorCues[cueChannel]->endPos.y;
endPos.z = play->csCtx.actorCues[cueChannel]->endPos.z;
speed = DemoEffect_InterpolateCsFrames(play, cueChannel);
this->actor.world.pos.x = ((endPos.x - startPos.x) * speed) + startPos.x;
this->actor.world.pos.y = ((endPos.y - startPos.y) * speed) + startPos.y;
this->actor.world.pos.z = ((endPos.z - startPos.z) * speed) + startPos.z;
if (shouldUpdateFacing) {
DemoEffect_FaceToCsEndpoint(this, startPos, endPos);
DemoEffect_FaceTowardPoint(this, startPos, endPos);
}
}
/**
* Moves a GetItem actor towards the current cutscene action's endpoint.
*/
void DemoEffect_MoveGetItem(DemoEffect* this, PlayState* play, s32 csActionId, f32 speed) {
void DemoEffect_MoveTowardCuePos(DemoEffect* this, PlayState* play, s32 cueChannel, f32 speed) {
Vec3f endPos;
endPos.x = play->csCtx.npcActions[csActionId]->endPos.x;
endPos.y = play->csCtx.npcActions[csActionId]->endPos.y;
endPos.z = play->csCtx.npcActions[csActionId]->endPos.z;
endPos.x = play->csCtx.actorCues[cueChannel]->endPos.x;
endPos.y = play->csCtx.actorCues[cueChannel]->endPos.y;
endPos.z = play->csCtx.actorCues[cueChannel]->endPos.z;
DemoEffect_MoveTowardTarget(endPos, this, speed);
}
/**
* Initializes the Actor's position to the current cutscene action's start point.
*/
void DemoEffect_InitPositionFromCsAction(DemoEffect* this, PlayState* play, s32 csActionIndex) {
f32 x = play->csCtx.npcActions[csActionIndex]->startPos.x;
f32 y = play->csCtx.npcActions[csActionIndex]->startPos.y;
f32 z = play->csCtx.npcActions[csActionIndex]->startPos.z;
void DemoEffect_SetStartPosFromCue(DemoEffect* this, PlayState* play, s32 cueChannel) {
f32 x = play->csCtx.actorCues[cueChannel]->startPos.x;
f32 y = play->csCtx.actorCues[cueChannel]->startPos.y;
f32 z = play->csCtx.actorCues[cueChannel]->startPos.z;
this->actor.world.pos.x = x;
this->actor.world.pos.y = y;
@@ -100,7 +100,7 @@ typedef struct DemoEffect {
DemoEffectDust dust;
};
/* 0x018A */ s16 effectFlags;
/* 0x018C */ s16 csActionId;
/* 0x018C */ s16 cueChannel;
/* 0x018E */ Vec3s jewelCsRotation;
/* 0x0194 */ DemoEffectFunc initUpdateFunc;
/* 0x0198 */ ActorFunc initDrawFunc;
+21 -20
View File
@@ -50,10 +50,11 @@ void DemoExt_PlayVortexSFX(DemoExt* this) {
}
}
CsCmdActorAction* DemoExt_GetNpcAction(PlayState* play, s32 npcActionIndex) {
CsCmdActorCue* DemoExt_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[npcActionIndex];
return play->csCtx.actorCues[cueChannel];
}
return NULL;
}
@@ -63,13 +64,13 @@ void DemoExt_SetupWait(DemoExt* this) {
}
void DemoExt_SetupMaintainVortex(DemoExt* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoExt_GetNpcAction(play, 5);
CsCmdActorCue* cue = DemoExt_GetCue(play, 5);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
this->action = EXT_MAINTAIN;
this->drawMode = EXT_DRAW_VORTEX;
@@ -87,17 +88,17 @@ void DemoExt_FinishClosing(DemoExt* this) {
}
}
void DemoExt_CheckCsMode(DemoExt* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction = DemoExt_GetNpcAction(play, 5);
s32 csAction;
s32 previousCsAction;
void DemoExt_HandleCues(DemoExt* this, PlayState* play) {
CsCmdActorCue* cue = DemoExt_GetCue(play, 5);
s32 nextCueId;
s32 currentCueId;
if (csCmdNPCAction != NULL) {
csAction = csCmdNPCAction->action;
previousCsAction = this->previousCsAction;
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (csAction != previousCsAction) {
switch (csAction) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
DemoExt_SetupWait(this);
break;
@@ -112,7 +113,7 @@ void DemoExt_CheckCsMode(DemoExt* this, PlayState* play) {
osSyncPrintf("Demo_Ext_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
break;
}
this->previousCsAction = csAction;
this->cueId = nextCueId;
}
}
}
@@ -145,13 +146,13 @@ void DemoExt_SetColorsAndScales(DemoExt* this) {
}
void DemoExt_Wait(DemoExt* this, PlayState* play) {
DemoExt_CheckCsMode(this, play);
DemoExt_HandleCues(this, play);
}
void DemoExt_MaintainVortex(DemoExt* this, PlayState* play) {
DemoExt_PlayVortexSFX(this);
DemoExt_SetScrollAndRotation(this);
DemoExt_CheckCsMode(this, play);
DemoExt_HandleCues(this, play);
}
void DemoExt_DispellVortex(DemoExt* this, PlayState* play) {
@@ -13,7 +13,7 @@ typedef struct DemoExt {
/* 0x0000 */ Actor actor;
/* 0x014C */ s32 action;
/* 0x014C */ s32 drawMode;
/* 0x0154 */ s32 previousCsAction;
/* 0x0154 */ s32 cueId;
/* 0x015E */ s16 scrollIncr[4];
/* 0x0160 */ s16 curScroll[4];
/* 0x0168 */ s16 rotationPitch;
+43 -30
View File
@@ -49,22 +49,25 @@ ActorInit Demo_Go_InitVars = {
(ActorFunc)DemoGo_Draw,
};
s32 func_8097C870(DemoGo* this) {
s32 DemoGo_GetCueChannel(DemoGo* this) {
s32 ret;
switch (this->actor.params) {
case 0:
ret = 3;
break;
case 1:
ret = 4;
break;
default:
if (1) {
ret = 5;
}
break;
}
return ret;
}
@@ -126,26 +129,31 @@ void func_8097CB0C(DemoGo* this, PlayState* play) {
Actor* thisx = &this->actor;
PosRot* world = &thisx->world;
CutsceneContext* csCtx = &play->csCtx;
CsCmdActorAction* npcAction;
f32 temp_ret;
CsCmdActorCue* cue;
f32 lerp;
s32 pad;
Vec3f startPos;
Vec3f endPos;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = csCtx->npcActions[func_8097C870(this)];
if (npcAction != NULL) {
temp_ret = Environment_LerpWeight(npcAction->endFrame, npcAction->startFrame, csCtx->frames);
startPos.x = npcAction->startPos.x;
startPos.y = npcAction->startPos.y;
startPos.z = npcAction->startPos.z;
endPos.x = npcAction->endPos.x;
endPos.y = npcAction->endPos.y;
endPos.z = npcAction->endPos.z;
world->pos.x = (endPos.x - startPos.x) * temp_ret + startPos.x;
world->pos.y = (endPos.y - startPos.y) * temp_ret + startPos.y;
world->pos.z = (endPos.z - startPos.z) * temp_ret + startPos.z;
world->rot.y = thisx->shape.rot.y = npcAction->rot.y;
cue = csCtx->actorCues[DemoGo_GetCueChannel(this)];
if (cue != NULL) {
lerp = Environment_LerpWeight(cue->endFrame, cue->startFrame, csCtx->curFrame);
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
world->pos.x = (endPos.x - startPos.x) * lerp + startPos.x;
world->pos.y = (endPos.y - startPos.y) * lerp + startPos.y;
world->pos.z = (endPos.z - startPos.z) * lerp + startPos.z;
world->rot.y = thisx->shape.rot.y = cue->rot.y;
}
}
}
@@ -166,24 +174,27 @@ void func_8097CCC0(DemoGo* this) {
}
void func_8097CCE0(DemoGo* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
Actor* thisx = &this->actor;
s32 rotYDelta;
s32 newRotY;
s32 thisRotY;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[func_8097C870(this)];
if (npcAction != NULL) {
cue = play->csCtx.actorCues[DemoGo_GetCueChannel(this)];
if (cue != NULL) {
thisRotY = thisx->world.rot.y;
rotYDelta = npcAction->rot.y - thisRotY;
rotYDelta = (s16)cue->rot.y - thisRotY;
if ((rotYDelta > -(kREG(16) + 0x96)) && (rotYDelta < kREG(16) + 0x96)) {
newRotY = npcAction->rot.y;
newRotY = (s16)cue->rot.y;
} else if (rotYDelta > 0) {
newRotY = (thisRotY + kREG(16)) + 0x96;
} else {
newRotY = (thisRotY - kREG(16)) - 0x96;
}
thisx->shape.rot.y = newRotY;
thisx->world.rot.y = newRotY;
}
@@ -194,15 +205,16 @@ s32 DemoGo_UpdateSkelAnime(DemoGo* this) {
return SkelAnime_Update(&this->skelAnime);
}
s32 func_8097CDB0(DemoGo* this, PlayState* play, u16 npcAction) {
s32 func_8097CDB0(DemoGo* this, PlayState* play, u16 cueId) {
CutsceneContext* csCtx = &play->csCtx;
s32 actionIdx = func_8097C870(this);
s32 cueChannel = DemoGo_GetCueChannel(this);
if ((csCtx->state != CS_STATE_IDLE) && (csCtx->npcActions[actionIdx] != NULL) &&
(csCtx->npcActions[actionIdx]->action == npcAction)) {
return 1;
if ((csCtx->state != CS_STATE_IDLE) && (csCtx->actorCues[cueChannel] != NULL) &&
(csCtx->actorCues[cueChannel]->id == cueId)) {
return true;
}
return 0;
return false;
}
void func_8097CE10(DemoGo* this, PlayState* play) {
@@ -220,11 +232,12 @@ void func_8097CE20(DemoGo* this, PlayState* play) {
void func_8097CE78(DemoGo* this, PlayState* play) {
CutsceneContext* csCtx = &play->csCtx;
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = csCtx->npcActions[func_8097C870(this)];
if (npcAction != NULL && csCtx->frames >= npcAction->endFrame) {
cue = csCtx->actorCues[DemoGo_GetCueChannel(this)];
if (cue != NULL && csCtx->curFrame >= cue->endFrame) {
func_8097CA78(this, play);
this->action = 3;
}
+97 -96
View File
@@ -289,7 +289,7 @@ void func_8097E454(PlayState* play, Vec3f* spawnerPos, Vec3f* velocity, Vec3f* a
}
}
u8 func_8097E69C(PlayState* play) {
u8 DemoGt_IsCutsceneIdle(PlayState* play) {
if (play->csCtx.state == CS_STATE_IDLE) {
return true;
} else {
@@ -297,29 +297,29 @@ u8 func_8097E69C(PlayState* play) {
}
}
CsCmdActorAction* DemoGt_GetNpcAction(PlayState* play, u32 actionIdx) {
CsCmdActorCue* DemoGt_GetCue(PlayState* play, u32 cueChannel) {
s32 pad[2];
CsCmdActorAction* ret = NULL;
CsCmdActorCue* cue = NULL;
if (!func_8097E69C(play)) {
ret = play->csCtx.npcActions[actionIdx];
if (!DemoGt_IsCutsceneIdle(play)) {
cue = play->csCtx.actorCues[cueChannel];
}
return ret;
return cue;
}
u8 func_8097E704(PlayState* play, u16 arg1, s32 arg2) {
CsCmdActorAction* action = DemoGt_GetNpcAction(play, arg2);
u8 func_8097E704(PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoGt_GetCue(play, cueChannel);
if ((action != NULL) && (action->action == arg1)) {
if ((cue != NULL) && (cue->id == cueId)) {
return true;
} else {
return false;
}
}
void func_8097E744(DemoGt* this, PlayState* play, u32 actionIdx) {
CsCmdActorAction* npcAction = DemoGt_GetNpcAction(play, actionIdx);
void func_8097E744(DemoGt* this, PlayState* play, u32 cueChannel) {
CsCmdActorCue* cue = DemoGt_GetCue(play, cueChannel);
Vec3f* pos = &this->dyna.actor.world.pos;
f32 startX;
f32 startY;
@@ -327,21 +327,22 @@ void func_8097E744(DemoGt* this, PlayState* play, u32 actionIdx) {
f32 endX;
f32 endY;
f32 endZ;
f32 someFloat;
f32 lerp;
if (npcAction != NULL) {
someFloat =
Environment_LerpWeightAccelDecel(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames, 8, 0);
startX = npcAction->startPos.x;
startY = npcAction->startPos.y;
startZ = npcAction->startPos.z;
endX = npcAction->endPos.x;
endY = npcAction->endPos.y;
endZ = npcAction->endPos.z;
if (cue != NULL) {
lerp = Environment_LerpWeightAccelDecel(cue->endFrame, cue->startFrame, play->csCtx.curFrame, 8, 0);
pos->x = ((endX - startX) * someFloat) + startX;
pos->y = ((endY - startY) * someFloat) + startY;
pos->z = ((endZ - startZ) * someFloat) + startZ;
startX = cue->startPos.x;
startY = cue->startPos.y;
startZ = cue->startPos.z;
endX = cue->endPos.x;
endY = cue->endPos.y;
endZ = cue->endPos.z;
pos->x = ((endX - startX) * lerp) + startX;
pos->y = ((endY - startY) * lerp) + startY;
pos->z = ((endZ - startZ) * lerp) + startZ;
}
}
@@ -430,9 +431,9 @@ void func_8097E824(DemoGt* this, s32 arg1) {
pos->z += tempf3;
}
void func_8097ED64(DemoGt* this, PlayState* play, s32 actionIdx) {
func_8097E744(this, play, actionIdx);
func_8097E824(this, actionIdx);
void func_8097ED64(DemoGt* this, PlayState* play, s32 cueChannel) {
func_8097E744(this, play, cueChannel);
func_8097E824(this, cueChannel);
}
u8 DemoGt_IsCutsceneLayer(void) {
@@ -483,9 +484,9 @@ void func_8097EEA8_Init0(DemoGt* this, PlayState* play) {
}
void func_8097EF00(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 527) {
if (csCurFrame == 527) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_TOWER_COLLAPSE);
}
}
@@ -494,7 +495,7 @@ void func_8097EF34(DemoGt* this, PlayState* play) {
}
void func_8097EF40(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
s32 pad1[3];
Vec3f dustPos;
Vec3f velocity = { 0.0f, -16.0f, 0.0f };
@@ -502,7 +503,7 @@ void func_8097EF40(DemoGt* this, PlayState* play) {
Vec3f* pos = &this->dyna.actor.world.pos;
s32 pad;
if ((kREG(1) == 20) || (frames == 220)) {
if ((kREG(1) == 20) || (csCurFrame == 220)) {
dustPos.x = pos->x + 256.0f;
dustPos.y = pos->y + 679.0f;
dustPos.z = pos->z + 82.0f;
@@ -522,17 +523,17 @@ void func_8097F0AC(DemoGt* this, PlayState* play) {
Vec3f sp38;
s16 pad1[3];
Vec3f sp24;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
s32 pad2;
if ((frames == 140) || (kREG(1) == 19)) {
if ((csCurFrame == 140) || (kREG(1) == 19)) {
sp38.x = this->dyna.actor.world.pos.x + 260.0f;
sp38.y = this->dyna.actor.world.pos.y + 340.0f;
sp38.z = this->dyna.actor.world.pos.z + 45.0f;
DemoGt_SpawnExplosionWithSound(play, &sp38, 2.0f);
}
if (frames == 176) {
if (csCurFrame == 176) {
sp24.x = this->dyna.actor.world.pos.x + 260.0f;
sp24.y = this->dyna.actor.world.pos.y + 840.0f;
sp24.z = this->dyna.actor.world.pos.z + 45.0f;
@@ -563,7 +564,7 @@ void func_8097F280(DemoGt* this, PlayState* play) {
s32* unk198 = this->unk_198;
f32 temp_f0;
if (play->csCtx.frames < 160) {
if (play->csCtx.curFrame < 160) {
unk178[0] = 100;
unk178[1] = 255;
unk178[2] = 200;
@@ -574,8 +575,8 @@ void func_8097F280(DemoGt* this, PlayState* play) {
unk198[0]++;
unk198[1]--;
} else if (play->csCtx.frames < 170) {
temp_f0 = Environment_LerpWeightAccelDecel(170, 160, play->csCtx.frames, 0, 0);
} else if (play->csCtx.curFrame < 170) {
temp_f0 = Environment_LerpWeightAccelDecel(170, 160, play->csCtx.curFrame, 0, 0);
unk178[0] = (temp_f0 * -63.0f) + 163.0f;
unk178[1] = (temp_f0 * -155.0f) + 255.0f;
@@ -703,9 +704,9 @@ void func_8097F96C(DemoGt* this, PlayState* play) {
s32 pad[4];
Vec3f pos;
Actor* actor;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (((frames > 1059) && (frames < 1062)) || kREG(1) == 17) {
if (((csCurFrame > 1059) && (csCurFrame < 1062)) || kREG(1) == 17) {
pos.x = this->dyna.actor.world.pos.x;
pos.y = this->dyna.actor.world.pos.y + 612.0f;
pos.z = this->dyna.actor.world.pos.z;
@@ -724,12 +725,12 @@ void func_8097F96C(DemoGt* this, PlayState* play) {
void func_8097FA1C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { -12.0f, -17.0, 5.0 };
s32 pad1[3];
if (((frames > 502) && !(frames >= 581)) || (kREG(1) == 5)) {
if (((csCurFrame > 502) && !(csCurFrame >= 581)) || (kREG(1) == 5)) {
dustPos.x = pos->x + 300.0f;
dustPos.y = pos->y + 360.0f;
dustPos.z = pos->z - 377.0f;
@@ -746,17 +747,17 @@ void func_8097FAFC(DemoGt* this, PlayState* play) {
static s32 arg7 = 1;
static s16 life = 3;
s32 pad[2];
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f pos;
f32 new_var = -200.0;
if (((frames > 582) && (frames < 683)) || (kREG(1) == 6)) {
if (((csCurFrame > 582) && (csCurFrame < 683)) || (kREG(1) == 6)) {
pos = this->dyna.actor.world.pos;
pos.y += 680.0f;
if (frames == 682) {
if (csCurFrame == 682) {
velocity.y += new_var;
} else if (frames == 681) {
} else if (csCurFrame == 681) {
accel.y += new_var;
}
@@ -767,12 +768,12 @@ void func_8097FAFC(DemoGt* this, PlayState* play) {
void func_8097FC1C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -16.0f, -16.0f };
s32 pad1[3];
if (frames > 682 || kREG(1) == 7) {
if (csCurFrame > 682 || kREG(1) == 7) {
dustPos.x = pos->x + 260.0f;
dustPos.y = pos->y + 360.0f;
dustPos.z = pos->z + 260.0f;
@@ -783,9 +784,9 @@ void func_8097FC1C(DemoGt* this, PlayState* play) {
void func_8097FCE4(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f vec;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 0x1F7 || kREG(1) == 4) {
if (csCurFrame == 0x1F7 || kREG(1) == 4) {
vec.x = this->dyna.actor.world.pos.x + 300.0f;
vec.y = this->dyna.actor.world.pos.y + 560.0f;
vec.z = this->dyna.actor.world.pos.z - 377.0f;
@@ -806,14 +807,14 @@ void func_8097FDDC(DemoGt* this, PlayState* play) {
s32* unk178 = this->unk_178;
s32* unk198 = this->unk_198;
if (play->csCtx.frames < 610) {
if (play->csCtx.curFrame < 610) {
unk178[0] = 163;
unk178[1] = 193;
unk178[2] = 193;
unk198[0]++;
unk198[1]--;
} else if (play->csCtx.frames < 620) {
f32 temp_f0 = Environment_LerpWeightAccelDecel(620, 610, play->csCtx.frames, 0, 0);
} else if (play->csCtx.curFrame < 620) {
f32 temp_f0 = Environment_LerpWeightAccelDecel(620, 610, play->csCtx.curFrame, 0, 0);
unk178[0] = (temp_f0 * (-13.0f)) + 163.0f;
unk178[1] = (temp_f0 * (-43.0f)) + 193.0f;
@@ -885,7 +886,7 @@ void func_80980184(DemoGt* this, PlayState* play) {
Vec3f pos;
Actor* actor;
if ((play->csCtx.frames > 1027) && (play->csCtx.frames < 1031)) {
if ((play->csCtx.curFrame > 1027) && (play->csCtx.curFrame < 1031)) {
pos.x = this->dyna.actor.world.pos.x;
pos.y = this->dyna.actor.world.pos.y + 247.0f;
pos.z = this->dyna.actor.world.pos.z;
@@ -907,7 +908,7 @@ void func_80980218(DemoGt* this, PlayState* play) {
Vec3f pos;
Actor* actor;
if ((play->csCtx.frames > 997) && (play->csCtx.frames < 1001)) {
if ((play->csCtx.curFrame > 997) && (play->csCtx.curFrame < 1001)) {
pos.x = this->dyna.actor.home.pos.x;
pos.y = this->dyna.actor.home.pos.y + 38.0f;
pos.z = this->dyna.actor.home.pos.z;
@@ -926,12 +927,12 @@ void func_80980218(DemoGt* this, PlayState* play) {
void func_809802AC(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 0.0f, 0.0f, -10.0f };
s32 pad1[3];
if (frames > 109 && frames < 140) {
if (csCurFrame > 109 && csCurFrame < 140) {
dustPos.x = pos->x - 100.0f;
dustPos.y = pos->y + 1260.0f;
dustPos.z = pos->z - 323.0f;
@@ -942,12 +943,12 @@ void func_809802AC(DemoGt* this, PlayState* play) {
void func_8098036C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* world = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -3.0f, 0.0f };
s32 pad1[3];
if ((frames > 284) && (frames < 421)) {
if ((csCurFrame > 284) && (csCurFrame < 421)) {
dustPos.x = world->x + 760.0f;
dustPos.y = world->y - 40.0f;
dustPos.z = world->z - 240.0f;
@@ -958,12 +959,12 @@ void func_8098036C(DemoGt* this, PlayState* play) {
void func_80980430(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
s32 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -3.0f, 0.0f };
s32 pad1[3];
if (frames > 709 || kREG(1) == 8) {
if (csCurFrame > 709 || kREG(1) == 8) {
dustPos.x = pos->x + 760.0f;
dustPos.y = pos->y - 40.0f;
dustPos.z = pos->z - 240.0f;
@@ -974,12 +975,12 @@ void func_80980430(DemoGt* this, PlayState* play) {
void func_80980504(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -16.0f, -16.0f };
s32 pad1[3];
if ((frames > 704) || kREG(1) == 9) {
if ((csCurFrame > 704) || kREG(1) == 9) {
dustPos.x = pos->x + 830.0f;
dustPos.y = pos->y + 60.0f;
dustPos.z = pos->z + 390.0f;
@@ -990,12 +991,12 @@ void func_80980504(DemoGt* this, PlayState* play) {
void func_809805D8(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* homePos = &this->dyna.actor.home.pos;
Vec3f velOffset = { 15.0f, -26.0, 0.0f };
s32 pad1[3];
if (((frames > 739) && (frames < 781)) || kREG(1) == 11) {
if (((csCurFrame > 739) && (csCurFrame < 781)) || kREG(1) == 11) {
dustPos.x = homePos->x + 550.0f;
dustPos.y = homePos->y - 110.0f;
dustPos.z = homePos->z + 50.0f;
@@ -1006,12 +1007,12 @@ void func_809805D8(DemoGt* this, PlayState* play) {
void func_809806B8(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -16.0f, -16.0f };
s32 pad1[3];
if ((frames > 964) || (kREG(1) == 12)) {
if ((csCurFrame > 964) || (kREG(1) == 12)) {
dustPos.x = pos->x + 460.0f;
dustPos.y = pos->y + 60.0f;
dustPos.z = pos->z + 760.0f;
@@ -1022,12 +1023,12 @@ void func_809806B8(DemoGt* this, PlayState* play) {
void func_8098078C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
Vec3f velOffset = { 5.0f, -16.0f, -16.0f };
s32 pad1[3];
if ((frames > 939) || (kREG(1) == 14)) {
if ((csCurFrame > 939) || (kREG(1) == 14)) {
dustPos.x = pos->x + 360.0f;
dustPos.y = pos->y + 70.0f;
dustPos.z = pos->z - 640.0f;
@@ -1038,20 +1039,20 @@ void func_8098078C(DemoGt* this, PlayState* play) {
void func_8098085C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f sp28;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f* pos = &this->dyna.actor.world.pos;
if ((frames == 58) || (kREG(1) == 1)) {
if ((csCurFrame == 58) || (kREG(1) == 1)) {
sp28.x = pos->x + 900.0f;
sp28.y = pos->y - 50.0f;
sp28.z = pos->z + 93.0f;
DemoGt_SpawnExplosionWithSound(play, &sp28, 2.0f);
} else if (frames == 80) {
} else if (csCurFrame == 80) {
sp28.x = pos->x + 810.0f;
sp28.y = pos->y + 200.0f;
sp28.z = pos->z - 37.0f;
DemoGt_SpawnExplosionWithSound(play, &sp28, 0.9f);
} else if (frames == 90) {
} else if (csCurFrame == 90) {
sp28.x = pos->x - 220.0f;
sp28.y = pos->y + 1350.0f;
sp28.z = pos->z - 287.0f;
@@ -1063,11 +1064,11 @@ void func_809809C0(DemoGt* this, PlayState* play2) {
PlayState* play = play2;
DemoGt* this2 = this;
s32 gameplayFrames = play->gameplayFrames;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
Vec3f sp54;
s16 pad[3];
if (((frames > 469) && (frames < 481)) || (kREG(1) == 3)) {
if (((csCurFrame > 469) && (csCurFrame < 481)) || (kREG(1) == 3)) {
Vec3f sp40 = { 20.0f, 6.0f, 0.0f };
Vec3f sp34 = { 0.0f, 0.0f, 0.0f };
s16 pad2[3];
@@ -1085,9 +1086,9 @@ void func_809809C0(DemoGt* this, PlayState* play2) {
void func_80980AD4(DemoGt* this, PlayState* play) {
s32 pad[4];
Vec3f pos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if ((frames == 477) || (kREG(2) == 1)) {
if ((csCurFrame == 477) || (kREG(2) == 1)) {
pos.x = this->dyna.actor.world.pos.x + 790.0f;
pos.y = this->dyna.actor.world.pos.y + 60.0f;
pos.z = this->dyna.actor.world.pos.z + 23.0f;
@@ -1100,9 +1101,9 @@ void func_80980AD4(DemoGt* this, PlayState* play) {
void func_80980B68(DemoGt* this, PlayState* play) {
s32 pad[4];
Vec3f pos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if ((frames == 317) || (kREG(3) == 1)) {
if ((csCurFrame == 317) || (kREG(3) == 1)) {
pos.x = this->dyna.actor.world.pos.x + 980.0f;
pos.y = this->dyna.actor.world.pos.y + 410.0f;
pos.z = this->dyna.actor.world.pos.z - 177.0f;
@@ -1114,9 +1115,9 @@ void func_80980B68(DemoGt* this, PlayState* play) {
void func_80980BFC(DemoGt* this, PlayState* play) {
s32 pad[4];
Vec3f pos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if ((frames == 740) || (kREG(4) == 1)) {
if ((csCurFrame == 740) || (kREG(4) == 1)) {
pos.x = this->dyna.actor.world.pos.x + 790.0f;
pos.y = this->dyna.actor.world.pos.y + 60.0f;
pos.z = this->dyna.actor.world.pos.z + 23.0f;
@@ -1185,9 +1186,9 @@ void func_80980F00_Init5(DemoGt* this, PlayState* play) {
}
void func_80980F58(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 244) {
if (csCurFrame == 244) {
func_80078914(&this->dyna.actor.projectedPos, NA_SE_EV_TOWER_PARTS_BROKEN - SFX_FLAG);
}
}
@@ -1196,9 +1197,9 @@ void func_80980F8C(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f sp58;
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if ((frames > 259) && (frames < 289)) {
if ((csCurFrame > 259) && (csCurFrame < 289)) {
Vec3f velOfset = { 0.0f, -17.0f, 0.0f };
s32 pad[3];
@@ -1244,7 +1245,7 @@ void DemoGt_Update16(DemoGt* this, PlayState* play) {
void DemoGt_Draw4(DemoGt* this, PlayState* play2) {
GraphicsContext* gfxCtx;
PlayState* play = play2;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
s32 pad;
s16 sp76;
f32 sp70;
@@ -1257,7 +1258,7 @@ void DemoGt_Draw4(DemoGt* this, PlayState* play2) {
Vec3f sp48;
f32 sp44;
if (frames < 301) {
if (csCurFrame < 301) {
sp76 = this->unk_172;
sp70 = fabsf(BINANG_TO_RAD(sp76));
@@ -1308,9 +1309,9 @@ void func_809813CC_Init6(DemoGt* this, PlayState* play) {
}
void func_80981424(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 789) {
if (csCurFrame == 789) {
func_80078914(&this->dyna.actor.projectedPos, NA_SE_EV_TOWER_PARTS_BROKEN - SFX_FLAG);
}
}
@@ -1319,9 +1320,9 @@ void func_80981458(DemoGt* this, PlayState* play) {
s32 pad[3];
Vec3f sp58;
Vec3f dustPos;
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (((frames > 855) && (frames < 891)) || (kREG(1) == 13)) {
if (((csCurFrame > 855) && (csCurFrame < 891)) || (kREG(1) == 13)) {
Vec3f velOffset = { 0.0f, -30.0f, 0.0f };
s32 pad1[3];
@@ -1426,9 +1427,9 @@ void func_809818A4_Init7(DemoGt* this, PlayState* play) {
}
void func_809818FC(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 845) {
if (csCurFrame == 845) {
func_80078914(&this->dyna.actor.projectedPos, NA_SE_EV_TOWER_PARTS_BROKEN - SFX_FLAG);
}
}
@@ -1517,9 +1518,9 @@ void func_80981C94_Init23(DemoGt* this, PlayState* play) {
}
void func_80981CEC(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 183) {
if (csCurFrame == 183) {
func_80078914(&this->dyna.actor.projectedPos, NA_SE_EV_TOWER_PARTS_BROKEN - SFX_FLAG);
}
}
@@ -1608,9 +1609,9 @@ void func_80982054_Init24(DemoGt* this, PlayState* play) {
}
void func_809820AC(DemoGt* this, PlayState* play) {
u16 frames = play->csCtx.frames;
u16 csCurFrame = play->csCtx.curFrame;
if (frames == 154) {
if (csCurFrame == 154) {
func_80078914(&this->dyna.actor.projectedPos, NA_SE_EV_TOWER_PARTS_BROKEN - SFX_FLAG);
}
}
+25 -25
View File
@@ -34,17 +34,17 @@ s32 DemoIk_UpdateSkelAnime(DemoIk* this) {
return SkelAnime_Update(&this->skelAnime);
}
CsCmdActorAction* DemoIk_GetCue(PlayState* play, s32 index) {
CsCmdActorCue* DemoIk_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[index];
return play->csCtx.actorCues[cueChannel];
}
return NULL;
}
s32 DemoIk_CheckCue(PlayState* play, u16 action, s32 index) {
CsCmdActorAction* cue = DemoIk_GetCue(play, index);
s32 DemoIk_CheckForCue(PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoIk_GetCue(play, cueChannel);
if ((cue != NULL) && (cue->action == action)) {
if ((cue != NULL) && (cue->id == cueId)) {
return 1;
}
return 0;
@@ -73,7 +73,7 @@ Gfx* DemoIk_SetColors(GraphicsContext* gfxCtx, u8 primR, u8 primG, u8 primB, u8
return head;
}
s32 DemoIk_GetIndexFromParams(s32 params) {
s32 DemoIk_GetCueChannel(s32 params) {
s32 ret;
if (params == 0) {
@@ -116,18 +116,18 @@ void DemoIk_SpawnDeadDb(DemoIk* this, PlayState* play) {
{ -6.0f, 13.0f, -5.0f }, { 1.0f, 9.0f, 3.0f }, { -10.0f, 9.0f, 1.0f },
};
s32 i;
s32 index = DemoIk_GetIndexFromParams(this->actor.params);
s32 cueChannel = DemoIk_GetCueChannel(this->actor.params);
if (DemoIk_CheckCue(play, 5, index)) {
if (DemoIk_CheckForCue(play, 5, cueChannel)) {
Vec3f pos;
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
s32 startIndex;
s32 endIndex;
if (index == 5) {
if (cueChannel == 5) {
startIndex = 0;
endIndex = 4;
} else if (index == 7) {
} else if (cueChannel == 7) {
startIndex = 4;
endIndex = 8;
} else {
@@ -143,8 +143,8 @@ void DemoIk_SpawnDeadDb(DemoIk* this, PlayState* play) {
}
}
void DemoIk_MoveToStartPos(DemoIk* this, PlayState* play, s32 index) {
CsCmdActorAction* cue = DemoIk_GetCue(play, index);
void DemoIk_MoveToStartPos(DemoIk* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoIk_GetCue(play, cueChannel);
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
@@ -190,7 +190,7 @@ void func_8098393C(DemoIk* this) {
void func_8098394C(DemoIk* this, PlayState* play) {
DemoIk_EndMove(this);
DemoIk_MoveToStartPos(this, play, DemoIk_GetIndexFromParams(this->actor.params));
DemoIk_MoveToStartPos(this, play, DemoIk_GetCueChannel(this->actor.params));
this->actionMode = 1;
this->drawMode = 1;
this->actor.shape.shadowAlpha = 255;
@@ -205,14 +205,14 @@ void func_809839AC(DemoIk* this) {
}
void func_809839D0(DemoIk* this, PlayState* play) {
CsCmdActorAction* cue = DemoIk_GetCue(play, DemoIk_GetIndexFromParams(this->actor.params));
CsCmdActorCue* cue = DemoIk_GetCue(play, DemoIk_GetCueChannel(this->actor.params));
if (cue != NULL) {
s32 nextCsAction = cue->action;
s32 csAction = this->csAction;
s32 nextCueId = cue->id;
s32 currentCueId = this->cueId;
if (nextCsAction != csAction) {
switch (nextCsAction) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_8098393C(this);
break;
@@ -232,7 +232,7 @@ void func_809839D0(DemoIk* this, PlayState* play) {
// "there is no such action"
osSyncPrintf("Demo_Ik_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->csAction = nextCsAction;
this->cueId = nextCueId;
}
}
}
@@ -359,14 +359,14 @@ void func_8098402C(DemoIk* this) {
}
void func_80984048(DemoIk* this, PlayState* play) {
CsCmdActorAction* cue = DemoIk_GetCue(play, 4);
CsCmdActorCue* cue = DemoIk_GetCue(play, 4);
if (cue != NULL) {
s32 nextCsAction = cue->action;
s32 csAction = this->csAction;
s32 nextCueId = cue->id;
s32 currentCueId = this->cueId;
if (nextCsAction != csAction) {
switch (nextCsAction) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_80983FDC(this);
break;
@@ -383,7 +383,7 @@ void func_80984048(DemoIk* this, PlayState* play) {
// "there is no such action"
osSyncPrintf("Demo_Ik_inFace_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->csAction = nextCsAction;
this->cueId = nextCueId;
}
}
}
+1 -1
View File
@@ -16,7 +16,7 @@ typedef struct DemoIk {
/* 0x019C */ Vec3s morphTable[2];
/* 0x01A8 */ s32 actionMode;
/* 0x01AC */ s32 drawMode;
/* 0x01B0 */ s32 csAction;
/* 0x01B0 */ s32 cueId;
} DemoIk; // size = 0x01B4
#endif
+67 -66
View File
@@ -214,7 +214,7 @@ s32 DemoIm_UpdateSkelAnime(DemoIm* this) {
return SkelAnime_Update(&this->skelAnime);
}
s32 DemoIm_IsCsStateIdle(PlayState* play) {
s32 DemoIm_IsCutsceneIdle(PlayState* play) {
if (play->csCtx.state == CS_STATE_IDLE) {
return true;
} else {
@@ -222,57 +222,58 @@ s32 DemoIm_IsCsStateIdle(PlayState* play) {
}
}
CsCmdActorAction* DemoIm_GetNpcAction(PlayState* play, s32 actionIdx) {
CsCmdActorCue* DemoIm_GetCue(PlayState* play, s32 cueChannel) {
s32 pad[2];
CsCmdActorAction* ret = NULL;
CsCmdActorCue* cue = NULL;
if (!DemoIm_IsCsStateIdle(play)) {
ret = play->csCtx.npcActions[actionIdx];
if (!DemoIm_IsCutsceneIdle(play)) {
cue = play->csCtx.actorCues[cueChannel];
}
return ret;
return cue;
}
s32 func_809850E8(DemoIm* this, PlayState* play, u16 action, s32 actionIdx) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, actionIdx);
s32 func_809850E8(DemoIm* this, PlayState* play, u16 action, s32 cueChannel) {
CsCmdActorCue* cue = DemoIm_GetCue(play, cueChannel);
if (npcAction != NULL) {
if (npcAction->action == action) {
if (cue != NULL) {
if (cue->id == action) {
return true;
}
}
return false;
}
s32 func_80985134(DemoIm* this, PlayState* play, u16 action, s32 actionIdx) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, actionIdx);
s32 func_80985134(DemoIm* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoIm_GetCue(play, cueChannel);
if (npcAction != NULL) {
if (npcAction->action != action) {
if (cue != NULL) {
if (cue->id != cueId) {
return true;
}
}
return false;
}
void func_80985180(DemoIm* this, PlayState* play, s32 actionIdx) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, actionIdx);
void func_80985180(DemoIm* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoIm_GetCue(play, cueChannel);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
void func_80985200(DemoIm* this, PlayState* play, s32 actionIdx) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, actionIdx);
void func_80985200(DemoIm* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoIm_GetCue(play, cueChannel);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
@@ -329,7 +330,7 @@ void func_8098544C(DemoIm* this, PlayState* play) {
Player* player = GET_PLAYER(play);
this->action = 1;
play->csCtx.segment = D_8098786C;
play->csCtx.script = D_8098786C;
gSaveContext.cutsceneTrigger = 2;
Item_Give(play, ITEM_MEDALLION_SHADOW);
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
@@ -337,8 +338,8 @@ void func_8098544C(DemoIm* this, PlayState* play) {
}
void func_809854DC(DemoIm* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[5] != NULL) &&
(play->csCtx.npcActions[5]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[5] != NULL) &&
(play->csCtx.actorCues[5]->id == 2)) {
Animation_Change(&this->skelAnime, &gImpaIdleAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gImpaIdleAnim),
ANIMMODE_LOOP, 0.0f);
this->action = 2;
@@ -355,8 +356,8 @@ void func_8098557C(DemoIm* this) {
}
void func_809855A8(DemoIm* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[5] != NULL) &&
(play->csCtx.npcActions[5]->action == 3)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[5] != NULL) &&
(play->csCtx.actorCues[5]->id == 3)) {
Animation_Change(&this->skelAnime, &gImpaRaiseArmsAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gImpaRaiseArmsAnim),
ANIMMODE_ONCE, 4.0f);
this->action = 4;
@@ -372,8 +373,8 @@ void func_80985640(DemoIm* this, s32 arg1) {
}
void func_809856AC(DemoIm* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[6] != NULL) &&
(play->csCtx.npcActions[6]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[6] != NULL) &&
(play->csCtx.actorCues[6]->id == 2)) {
this->action = 6;
func_809853B4(this, play);
}
@@ -543,7 +544,7 @@ void func_80985E60(DemoIm* this, PlayState* play) {
}
void func_80985EAC(DemoIm* this, PlayState* play) {
if ((play->csCtx.frames >= 80) && (play->csCtx.frames < 243)) {
if ((play->csCtx.curFrame >= 80) && (play->csCtx.curFrame < 243)) {
func_80984F10(this, play);
} else {
func_80984DB8(this);
@@ -606,14 +607,14 @@ void func_80986148(DemoIm* this) {
}
void func_809861C4(DemoIm* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, 5);
CsCmdActorCue* cue = DemoIm_GetCue(play, 5);
if (npcAction != NULL) {
u32 action = npcAction->action;
u32 unk_274 = this->unk_274;
if (cue != NULL) {
u32 nextCueId = cue->id;
u32 currentCueId = this->cueId;
if (action != unk_274) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 9:
func_80986148(this);
break;
@@ -625,13 +626,13 @@ void func_809861C4(DemoIm* this, PlayState* play) {
default:
osSyncPrintf("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_274 = action;
this->cueId = nextCueId;
}
}
}
void func_8098629C(DemoIm* this, PlayState* play) {
if (DemoIm_IsCsStateIdle(play)) {
if (DemoIm_IsCutsceneIdle(play)) {
this->action = 21;
this->drawConfig = 1;
this->unk_280 = 1;
@@ -639,14 +640,14 @@ void func_8098629C(DemoIm* this, PlayState* play) {
}
void func_809862E0(DemoIm* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, 5);
CsCmdActorCue* cue = DemoIm_GetCue(play, 5);
if (npcAction != NULL) {
u32 action = npcAction->action;
u32 unk_274 = this->unk_274;
if (cue != NULL) {
u32 nextCueId = cue->id;
u32 currentCueId = this->cueId;
if (action != unk_274) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_80985F54(this);
break;
@@ -665,7 +666,7 @@ void func_809862E0(DemoIm* this, PlayState* play) {
default:
osSyncPrintf("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_274 = action;
this->cueId = nextCueId;
}
}
}
@@ -770,14 +771,14 @@ void func_80986794(DemoIm* this) {
}
void func_8098680C(DemoIm* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, 5);
CsCmdActorCue* cue = DemoIm_GetCue(play, 5);
if (npcAction != NULL) {
u32 action = npcAction->action;
u32 unk_274 = this->unk_274;
if (cue != NULL) {
u32 nextCueId = cue->id;
u32 currentCueId = this->cueId;
if (action != unk_274) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_80986700(this);
break;
@@ -793,7 +794,7 @@ void func_8098680C(DemoIm* this, PlayState* play) {
default:
osSyncPrintf("Demo_Im_Spot00_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_274 = action;
this->cueId = nextCueId;
}
}
}
@@ -898,7 +899,7 @@ void func_80986BF8(DemoIm* this, PlayState* play) {
void func_80986C30(DemoIm* this, PlayState* play) {
if (func_80986A5C(this, play)) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs);
gSaveContext.cutsceneTrigger = 1;
SET_EVENTCHKINF(EVENTCHKINF_59);
Item_Give(play, ITEM_SONG_LULLABY);
@@ -1039,14 +1040,14 @@ void func_809871B4(DemoIm* this, s32 arg1) {
}
void func_809871E8(DemoIm* this, PlayState* play) {
CsCmdActorAction* npcAction = DemoIm_GetNpcAction(play, 5);
CsCmdActorCue* cue = DemoIm_GetCue(play, 5);
if (npcAction != NULL) {
u32 action = npcAction->action;
u32 unk_274 = this->unk_274;
if (cue != NULL) {
u32 nextCueId = cue->id;
u32 currentCueId = this->cueId;
if (action != unk_274) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 12:
func_809870F0(this, play);
break;
@@ -1056,7 +1057,7 @@ void func_809871E8(DemoIm* this, PlayState* play) {
default:
osSyncPrintf("Demo_Im_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_274 = action;
this->cueId = nextCueId;
}
}
}
+1 -1
View File
@@ -42,7 +42,7 @@ typedef struct DemoIm {
/* 0x0268 */ f32 unk_268;
/* 0x026C */ s32 alpha;
/* 0x0270 */ s32 unk_270;
/* 0x0274 */ s32 unk_274;
/* 0x0274 */ s32 cueId;
/* 0x0278 */ f32 unk_278;
/* 0x027C */ s32 unk_27C;
/* 0x0280 */ s32 unk_280;
@@ -6,217 +6,217 @@ static CutsceneData D_8098786C[] = {
CS_BEGIN_CUTSCENE(32, 3000),
CS_UNK_DATA_LIST(0x00000020, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(31, 5),
CS_NPC_ACTION(0x0001, 0, 697, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 697, 698, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 698, 768, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 768, 817, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 817, 2666, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x000D, 0, 300, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION(0x0005, 300, 661, 0x0000, 0xEAAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION(0x0013, 661, 1934, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(44, 3),
CS_NPC_ACTION(0x0001, 0, 145, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 145, 615, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 615, 1906, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(49, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, -22, 0, -55, -22, 0, -55, 0.0f, 0.0f, 0.0f),
CS_LIGHTING_LIST(2),
CS_LIGHTING(0x0002, 0, 10, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x0000000D, 0xFFFFFFFE, 0x00000000, 0x0000000D),
CS_LIGHTING(0x0002, 10, 3000, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x0000000D, 0xFFFFFFFE, 0x00000000, 0x0000000D),
CS_SCENE_TRANS_FX(0x0005, 694, 724),
CS_SCENE_TRANS_FX(0x0001, 960, 990),
CS_SCENE_TRANS_FX(0x0001, 683, 692),
CS_NPC_ACTION_LIST(62, 2),
CS_NPC_ACTION(0x0001, 0, 10, 0x0000, 0x0000, 0x0000, 64, 80, 130, 64, 80, 130, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 10, 3000, 0x0000, 0x0000, 0x0000, 64, 80, 130, 64, 80, 130, 0.0f, 0.0f, 0.0f),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x0044, 770, 771, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC9, 0x0000005C, 0x00000000, 0xFFFFFFC9, 0x0000005C),
CS_ACTOR_CUE_LIST(31, 5),
CS_ACTOR_CUE(0x0001, 0, 697, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 697, 698, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 698, 768, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 768, 817, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 817, 2666, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x000D, 0, 300, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE(0x0005, 300, 661, 0x0000, 0xEAAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE(0x0013, 661, 1934, 0x0000, 0x6AAA, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(44, 3),
CS_ACTOR_CUE(0x0001, 0, 145, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 145, 615, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 615, 1906, 0x0000, 0x0000, 0x0000, -97, 6, 169, -97, 6, 169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(49, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, -22, 0, -55, -22, 0, -55, 0.0f, 0.0f, 0.0f),
CS_LIGHT_SETTING_LIST(2),
CS_LIGHT_SETTING(0x0001, 0, 10, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x0000000D, 0xFFFFFFFE, 0x00000000, 0x0000000D),
CS_LIGHT_SETTING(0x0001, 10, 3000, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x0000000D, 0xFFFFFFFE, 0x00000000, 0x0000000D),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 694, 724),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 960, 990),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 683, 692),
CS_ACTOR_CUE_LIST(62, 2),
CS_ACTOR_CUE(0x0001, 0, 10, 0x0000, 0x0000, 0x0000, 64, 80, 130, 64, 80, 130, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 10, 3000, 0x0000, 0x0000, 0x0000, 64, 80, 130, 64, 80, 130, 0.0f, 0.0f, 0.0f),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_MEDALLION_GET, 770, 771, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC9, 0x0000005C, 0x00000000, 0xFFFFFFC9, 0x0000005C),
CS_TEXT_LIST(14),
CS_TEXT_NONE(0, 340),
CS_TEXT_DISPLAY_TEXTBOX(0x5022, 340, 353, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x5022, 340, 353, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(353, 374),
CS_TEXT_DISPLAY_TEXTBOX(0x5025, 374, 404, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x5025, 374, 404, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(404, 424),
CS_TEXT_DISPLAY_TEXTBOX(0x502B, 424, 474, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x502B, 424, 474, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(474, 494),
CS_TEXT_DISPLAY_TEXTBOX(0x502C, 494, 543, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x502C, 494, 543, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(543, 564),
CS_TEXT_DISPLAY_TEXTBOX(0x5026, 564, 613, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x5026, 564, 613, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(613, 955),
CS_TEXT_DISPLAY_TEXTBOX(0x0041, 955, 959, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x0041, 955, 959, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(959, 1020),
CS_TEXT_DISPLAY_TEXTBOX(0x5023, 1020, 1029, 0x0000, 0x0000, 0x0000),
CS_TERMINATOR(GRAVEYARD_AFTER_SHADOW_BLUE_WARP, 1060, 1061),
CS_FADE_BGM_LIST(1),
CS_FADE_BGM(0x0004, 673, 723, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC1, 0x00000058, 0x00000000, 0xFFFFFFC1, 0x00000058),
CS_CAM_EYE_LIST(0, 341),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 33, 106, -58, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 33, 23, -58, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0xE6A0),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600002f, 11, 10, -18, 0x7C53),
CS_CAM_EYE_LIST(263, 504),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 22.626957f, -21, 22, 150, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0xE6A0),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 33.226997f, -21, 22, 150, 0x7C53),
CS_CAM_EYE_LIST(363, 824),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0xE6A0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x7C53),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER_LIST(413, 1504),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x20BA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0xD5E0),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x0950),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x7C50),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 19.99985f, -53, 28, 45, 0x0000),
CS_CAM_EYE_LIST(483, 1684),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -71, 15, 124, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -73, 29, 131, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0xE6A0),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 68.91906f, -78, 40, 140, 0x7C53),
CS_CAM_EYE_LIST(553, 1644),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x7C50),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945f, -39, 34, 201, 0x0000),
CS_CAM_EYE_LIST(623, 819),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 9, 71, -17, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0xE6A0),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 126.999054f, 9, 385, -17, 0x7C53),
CS_CAM_EYE_LIST(693, 1035),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0xD5E0),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x0950),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x7C50),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0xFFFF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0xE6A0),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x7C53),
CS_CAM_EYE_REL_TO_PLAYER_LIST(769, 1950),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x20BA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0xD5E0),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x0950),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x7C50),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0xFFFF),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0xE6A0),
CS_CAM_AT_LIST(0, 370),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -21, 21, 42, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.600002f, -21, 21, 42, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.600002f, -21, 21, 42, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.600002f, -78, 86, 144, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.600002f, -80, 21, 142, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.600002f, -99, 31, 177, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -99, 31, 177, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -99, 31, 177, 0xE6A0),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.600002f, -99, 31, 177, 0x7C53),
CS_CAM_AT_LIST(263, 533),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0xE6A0),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 33.226997f, -258, 133, 191, 0x7C53),
CS_CAM_AT_LIST(363, 853),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 68.79994f, 68, 109, -103, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 68.99994f, 68, 109, -103, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 68.79994f, 67, 109, -103, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 68.599945f, 189, 109, 92, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 68.599945f, 57, 108, 341, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0xE6A0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.79991f, -186, 107, 341, 0x7C53),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_AT_REL_TO_PLAYER_LIST(413, 1533),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 19.99985f, 171, 122, -106, 0x20BA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 19.99985f, 171, 122, -106, 0xD5E0),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 19.99985f, 171, 122, -106, 0x0950),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 19.99985f, 170, 122, -106, 0x7C50),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 19.99985f, 170, 122, -106, 0x0000),
CS_CAM_AT_LIST(483, 1713),
CS_CAM_AT(CS_CMD_CONTINUE, 0x01, 20, 68.91906f, -191, 132, 327, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 68.91906f, -191, 132, 327, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0xFF, 30, 68.91906f, -190, 131, 326, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 68.91906f, -189, 154, 324, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x01, 30, 68.91906f, -194, 162, 331, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 68.91906f, -199, 172, 339, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 68.91906f, -199, 172, 339, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 68.91906f, -199, 172, 339, 0xE6A0),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 68.91906f, -199, 172, 339, 0x7C53),
CS_CAM_AT_LIST(553, 1673),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945f, -234, 123, 37, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0x7C50),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945f, -233, 123, 37, 0x0000),
CS_CAM_AT_LIST(623, 848),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, -52, 17, 91, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, -52, 17, 91, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 70.599915f, -52, 17, 91, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 70.599915f, -52, 75, 91, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 126.999054f, -5, 503, 9, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0xE6A0),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 126.999054f, -5, 503, 9, 0x7C53),
CS_CAM_AT_LIST(693, 1084),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0xD5E0),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x0950),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x7C50),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0xFFFF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0xE6A0),
CS_CAM_AT(CS_CMD_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x7C53),
CS_CAM_AT_REL_TO_PLAYER_LIST(769, 1979),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x20BA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0xD5E0),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x0950),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x7C50),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0xFFFF),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0xE6A0),
CS_TEXT(0x5023, 1020, 1029, 0x0000, 0x0000, 0x0000),
CS_DESTINATION(CS_DEST_GRAVEYARD_FROM_CHAMBER_OF_SAGES, 1060, 1061),
CS_FADE_OUT_SEQ_LIST(1),
CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 673, 723, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC1, 0x00000058, 0x00000000, 0xFFFFFFC1, 0x00000058),
CS_CAM_EYE_SPLINE(0, 341),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 33, 225, -58, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 33, 106, -58, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 33, 23, -58, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 11, 10, -18, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600002f, 11, 10, -18, 0x7C53),
CS_CAM_EYE_SPLINE(263, 504),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 22.626957f, -49, 13, 158, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 22.626957f, -21, 22, 150, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 33.226997f, -21, 22, 150, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 33.226997f, -21, 22, 150, 0x7C53),
CS_CAM_EYE_SPLINE(363, 824),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -67, 8, 117, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0xE6A0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x7C53),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.79991f, -67, 8, 117, 0x0000),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(413, 1504),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 19.99985f, -53, 28, 45, 0x7C50),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 19.99985f, -53, 28, 45, 0x0000),
CS_CAM_EYE_SPLINE(483, 1684),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -67, 8, 117, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -71, 15, 124, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -73, 29, 131, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.91906f, -78, 40, 140, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.91906f, -78, 40, 140, 0x7C53),
CS_CAM_EYE_SPLINE(553, 1644),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -39, 34, 201, 0x7C50),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945f, -39, 34, 201, 0x0000),
CS_CAM_EYE_SPLINE(623, 819),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 9, 13, -17, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 9, 71, -17, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 126.999054f, 9, 385, -17, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 126.999054f, 9, 385, -17, 0x7C53),
CS_CAM_EYE_SPLINE(693, 1035),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x7C53),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(769, 1950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0xE6A0),
CS_CAM_AT_SPLINE(0, 370),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -21, 21, 42, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.600002f, -21, 21, 42, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.600002f, -21, 21, 42, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.600002f, -78, 86, 144, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.600002f, -80, 21, 142, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.600002f, -99, 31, 177, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -99, 31, 177, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -99, 31, 177, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.600002f, -99, 31, 177, 0x7C53),
CS_CAM_AT_SPLINE(263, 533),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 22.626957f, -309, 11, 229, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 33.226997f, -258, 133, 191, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 33.226997f, -258, 133, 191, 0x7C53),
CS_CAM_AT_SPLINE(363, 853),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 68.79994f, 68, 109, -103, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 68.99994f, 68, 109, -103, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 68.79994f, 67, 109, -103, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 68.599945f, 189, 109, 92, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 68.599945f, 57, 108, 341, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 70.79991f, -186, 107, 341, 0xE6A0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.79991f, -186, 107, 341, 0x7C53),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.79991f, -186, 107, 341, 0x0000),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(413, 1533),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 19.99985f, 171, 122, -106, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 19.99985f, 171, 122, -106, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 19.99985f, 171, 122, -106, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 19.99985f, 170, 122, -106, 0x7C50),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 19.99985f, 170, 122, -106, 0x0000),
CS_CAM_AT_SPLINE(483, 1713),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x01, 20, 68.91906f, -191, 132, 327, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 68.91906f, -191, 132, 327, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0xFF, 30, 68.91906f, -190, 131, 326, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 68.91906f, -189, 154, 324, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x01, 30, 68.91906f, -194, 162, 331, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.91906f, -199, 172, 339, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.91906f, -199, 172, 339, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.91906f, -199, 172, 339, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 68.91906f, -199, 172, 339, 0x7C53),
CS_CAM_AT_SPLINE(553, 1673),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945f, -234, 123, 37, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -234, 123, 37, 0x7C50),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945f, -233, 123, 37, 0x0000),
CS_CAM_AT_SPLINE(623, 848),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, -52, 17, 91, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, -52, 17, 91, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 70.599915f, -52, 17, 91, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 70.599915f, -52, 75, 91, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 126.999054f, -5, 503, 9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 126.999054f, -5, 503, 9, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 126.999054f, -5, 503, 9, 0x7C53),
CS_CAM_AT_SPLINE(693, 1084),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0xE6A0),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x7C53),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(769, 1979),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0xD5E0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x0950),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x7C50),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0xE6A0),
CS_END(),
};
// clang-format on
@@ -75,37 +75,37 @@ static Color_RGB8 sWarpSparkleEnvColors[] = {
};
static CutsceneCameraPoint sWarpOutCameraPoints[] = {
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0x0000, 0x0000 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0017, 0x0024 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x001C, 0x0032, 0xFFFF } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0001, 0x0018, 0xFFD9 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0xFFFA, 0x0003 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0025, 0x0037 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x004F, 0x0066, 0x0029 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x00A6, 0x00AD, 0x0006 } },
{ CS_CMD_CONTINUE, 0, 5, 45.0f, { 0x010D, 0x015A, 0xFF4C } },
{ CS_CMD_CONTINUE, 0, 5, 45.0f, { 0x019F, 0x0245, 0xFE35 } },
{ CS_CMD_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CMD_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0x0000, 0x0000 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0017, 0x0024 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x001C, 0x0032, 0xFFFF } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0001, 0x0018, 0xFFD9 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0xFFFA, 0x0003 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0025, 0x0037 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x004F, 0x0066, 0x0029 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x00A6, 0x00AD, 0x0006 } },
{ CS_CAM_CONTINUE, 0, 5, 45.0f, { 0x010D, 0x015A, 0xFF4C } },
{ CS_CAM_CONTINUE, 0, 5, 45.0f, { 0x019F, 0x0245, 0xFE35 } },
{ CS_CAM_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CAM_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
};
static CutsceneCameraPoint sWarpInCameraPoints[] = {
{ CS_CMD_CONTINUE, 0, 5, 45.0f, { 0x019F, 0x0245, 0xFE35 } },
{ CS_CMD_CONTINUE, 0, 5, 45.0f, { 0x010D, 0x015A, 0xFF4C } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x00A6, 0x00AD, 0x0006 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x004F, 0x0066, 0x0029 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0025, 0x0037 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0xFFFA, 0x0003 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0001, 0x0018, 0xFFD9 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x001C, 0x0032, 0xFFFF } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0017, 0x0024 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0x0000, 0x0000 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CMD_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CMD_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CMD_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CAM_CONTINUE, 0, 5, 45.0f, { 0x019F, 0x0245, 0xFE35 } },
{ CS_CAM_CONTINUE, 0, 5, 45.0f, { 0x010D, 0x015A, 0xFF4C } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x00A6, 0x00AD, 0x0006 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x004F, 0x0066, 0x0029 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0025, 0x0037 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0xFFFA, 0x0003 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0001, 0x0018, 0xFFD9 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x001C, 0x0032, 0xFFFF } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0017, 0x0024 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0xFFE6, 0x0000, 0x0000 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CAM_CONTINUE, 0, 8, 45.0f, { 0x0000, 0x0000, 0xFFE5 } },
{ CS_CAM_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
{ CS_CAM_STOP, 0, 5, 45.0f, { 0x01CE, 0x036F, 0xFCC2 } },
};
static Color_RGB8 sSparkleEnvColors[] = {
@@ -114,60 +114,60 @@ static Color_RGB8 sSparkleEnvColors[] = {
};
static CutsceneCameraPoint sSparklesCameraPoints[] = {
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0000, 0xFFE9 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD3, 0x0000, 0x000A } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFE8, 0x0001, 0x0027 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0015, 0x0000, 0x002B } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002F, 0x0005, 0x000E } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0031, 0x0005, 0xFFF5 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0020, 0x0005, 0xFFDA } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF5, 0x0005, 0xFFD1 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0006, 0xFFEA } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD5, 0x0009, 0x000D } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFE9, 0x0009, 0x0027 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0014, 0x000B, 0x0029 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002D, 0x000B, 0x000F } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002E, 0x000B, 0xFFF0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x001E, 0x000B, 0xFFDA } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x000E, 0xFFD3 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFDA, 0x000E, 0xFFEB } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0010, 0x0008 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFE9, 0x0010, 0x0024 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0011, 0x0010, 0x0028 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002C, 0x0010, 0x000D } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002C, 0x0012, 0xFFF5 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x001F, 0x0011, 0xFFDE } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFFB, 0x0014, 0xFFD5 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFDD, 0x0014, 0xFFEC } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFDA, 0x0017, 0x0008 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFE8, 0x0014, 0x001F } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x000C, 0x0018, 0x0026 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0027, 0x0018, 0x000D } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0027, 0x001B, 0xFFF6 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x001C, 0x001A, 0xFFE2 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x000E, 0xFFD4 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD9, 0x001B, 0xFFEF } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x001B, 0x000A } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFE6, 0x001B, 0x0022 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x000F, 0x001F, 0x002C } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0032, 0x0020, 0x0009 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0030, 0x0021, 0xFFF0 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x001C, 0x0025, 0xFFD9 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x0028, 0xFFD4 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD8, 0x002B, 0xFFF5 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x002B, 0x0006 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFDF, 0x002B, 0x0019 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x000E, 0x002E, 0x002C } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x0032, 0x002E, 0x0003 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0x002A, 0x0030, 0xFFE7 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CMD_CONTINUE, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CMD_STOP, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CMD_STOP, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF7, 0x0000, 0xFFD0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0000, 0xFFE9 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD3, 0x0000, 0x000A } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFE8, 0x0001, 0x0027 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0015, 0x0000, 0x002B } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002F, 0x0005, 0x000E } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0031, 0x0005, 0xFFF5 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0020, 0x0005, 0xFFDA } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF5, 0x0005, 0xFFD1 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0006, 0xFFEA } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD5, 0x0009, 0x000D } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFE9, 0x0009, 0x0027 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0014, 0x000B, 0x0029 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002D, 0x000B, 0x000F } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002E, 0x000B, 0xFFF0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x001E, 0x000B, 0xFFDA } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x000E, 0xFFD3 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFDA, 0x000E, 0xFFEB } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x0010, 0x0008 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFE9, 0x0010, 0x0024 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0011, 0x0010, 0x0028 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002C, 0x0010, 0x000D } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002C, 0x0012, 0xFFF5 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x001F, 0x0011, 0xFFDE } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFFB, 0x0014, 0xFFD5 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFDD, 0x0014, 0xFFEC } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFDA, 0x0017, 0x0008 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFE8, 0x0014, 0x001F } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x000C, 0x0018, 0x0026 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0027, 0x0018, 0x000D } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0027, 0x001B, 0xFFF6 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x001C, 0x001A, 0xFFE2 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x000E, 0xFFD4 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD9, 0x001B, 0xFFEF } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x001B, 0x000A } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFE6, 0x001B, 0x0022 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x000F, 0x001F, 0x002C } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0032, 0x0020, 0x0009 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0030, 0x0021, 0xFFF0 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x001C, 0x0025, 0xFFD9 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFFA, 0x0028, 0xFFD4 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD8, 0x002B, 0xFFF5 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFD7, 0x002B, 0x0006 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFDF, 0x002B, 0x0019 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x000E, 0x002E, 0x002C } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x0032, 0x002E, 0x0003 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0x002A, 0x0030, 0xFFE7 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CAM_CONTINUE, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CAM_STOP, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
{ CS_CAM_STOP, 0, 2, 45.0f, { 0xFFF6, 0x002B, 0xFFD4 } },
};
static s16 D_8098CF80;
@@ -292,7 +292,7 @@ void DemoKankyo_SetupType(DemoKankyo* this, PlayState* play) {
DemoKankyo_SetupAction(this, DemoKankyo_UpdateClouds);
break;
case DEMOKANKYO_DOOR_OF_TIME:
if (Flags_GetEnv(play, 2)) {
if (CutsceneFlags_Get(play, 2)) {
DemoKankyo_SetupAction(this, DemoKankyo_UpdateDoorOfTime);
}
break;
@@ -321,16 +321,16 @@ void DemoKankyo_SetupType(DemoKankyo* this, PlayState* play) {
if (play->sceneId == SCENE_TEMPLE_OF_TIME) {
D_8098CF84 = 25;
if (!LINK_IS_ADULT) {
play->csCtx.segment = gChildWarpInToTCS;
play->csCtx.script = gChildWarpInToTCS;
} else {
play->csCtx.segment = gAdultWarpInToTCS;
play->csCtx.script = gAdultWarpInToTCS;
}
} else {
D_8098CF84 = 32;
if (!LINK_IS_ADULT) {
play->csCtx.segment = gChildWarpInCS;
play->csCtx.script = gChildWarpInCS;
} else {
play->csCtx.segment = gAdultWarpInCS;
play->csCtx.script = gAdultWarpInCS;
}
}
if (Play_CamIsNotFixed(play)) {
@@ -342,15 +342,15 @@ void DemoKankyo_SetupType(DemoKankyo* this, PlayState* play) {
case DEMOKANKYO_WARP_IN:
if (play->sceneId == SCENE_TEMPLE_OF_TIME) {
if (!LINK_IS_ADULT) {
play->csCtx.segment = gChildWarpOutToTCS;
play->csCtx.script = gChildWarpOutToTCS;
} else {
play->csCtx.segment = gAdultWarpOutToTCS;
play->csCtx.script = gAdultWarpOutToTCS;
}
} else {
if (!LINK_IS_ADULT) {
play->csCtx.segment = gChildWarpOutCS;
play->csCtx.script = gChildWarpOutCS;
} else {
play->csCtx.segment = gAdultWarpOutCS;
play->csCtx.script = gAdultWarpOutCS;
}
}
gSaveContext.cutsceneTrigger = 1;
@@ -370,28 +370,32 @@ void DemoKankyo_DoNothing2(DemoKankyo* this, PlayState* play) {
DemoKankyo_SetupAction(this, DemoKankyo_DoNothing);
}
void DemoKankyo_SetRockPos(DemoKankyo* this, PlayState* play, s32 npcActionIndex) {
void DemoKankyo_SetPosFromCue(DemoKankyo* this, PlayState* play, s32 cueChannel) {
Vec3f startPos;
Vec3f endPos;
CsCmdActorAction* csAction = play->csCtx.npcActions[npcActionIndex];
f32 temp_f0;
CsCmdActorCue* cue = play->csCtx.actorCues[cueChannel];
f32 lerp;
startPos.x = csAction->startPos.x;
startPos.y = csAction->startPos.y;
startPos.z = csAction->startPos.z;
endPos.x = csAction->endPos.x;
endPos.y = csAction->endPos.y;
endPos.z = csAction->endPos.z;
temp_f0 = Environment_LerpWeight(csAction->endFrame, csAction->startFrame, play->csCtx.frames);
this->actor.world.pos.x = ((endPos.x - startPos.x) * temp_f0) + startPos.x;
this->actor.world.pos.y = ((endPos.y - startPos.y) * temp_f0) + startPos.y;
this->actor.world.pos.z = ((endPos.z - startPos.z) * temp_f0) + startPos.z;
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
lerp = Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame);
this->actor.world.pos.x = ((endPos.x - startPos.x) * lerp) + startPos.x;
this->actor.world.pos.y = ((endPos.y - startPos.y) * lerp) + startPos.y;
this->actor.world.pos.z = ((endPos.z - startPos.z) * lerp) + startPos.z;
}
void DemoKankyo_UpdateRock(DemoKankyo* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[this->actor.params - DEMOKANKYO_ROCK_1] != NULL) {
DemoKankyo_SetRockPos(this, play, this->actor.params - DEMOKANKYO_ROCK_1);
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[this->actor.params - DEMOKANKYO_ROCK_1] != NULL) {
DemoKankyo_SetPosFromCue(this, play, this->actor.params - DEMOKANKYO_ROCK_1);
}
this->unk_150[0].unk_C.x += this->unk_150[0].unk_0.x;
this->unk_150[0].unk_C.y += this->unk_150[0].unk_0.y;
this->unk_150[0].unk_C.z += this->unk_150[0].unk_0.z;
@@ -433,17 +437,17 @@ void DemoKankyo_Draw(Actor* thisx, PlayState* play) {
case DEMOKANKYO_BLUE_RAIN:
case DEMOKANKYO_BLUE_RAIN_2:
if (play->sceneId == SCENE_TEMPLE_OF_TIME) {
if (!Flags_GetEnv(play, 1)) {
if (!CutsceneFlags_Get(play, 1)) {
break;
} else if (!Actor_IsFacingAndNearPlayer(&this->actor, 300.0f, 0x7530)) {
break;
} else {
if (!LINK_IS_ADULT) {
if (play->csCtx.frames < 170 || play->csCtx.state == CS_STATE_IDLE) {
if (play->csCtx.curFrame < 170 || play->csCtx.state == CS_STATE_IDLE) {
break;
}
} else {
if (play->csCtx.frames < 120 || play->csCtx.state == CS_STATE_IDLE) {
if (play->csCtx.curFrame < 120 || play->csCtx.state == CS_STATE_IDLE) {
break;
}
}
@@ -799,7 +803,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) {
&this->unk_150[i].unk_1C) != 0) {
this->unk_150[i].unk_22++;
}
if (play->sceneId == SCENE_TEMPLE_OF_TIME && play->csCtx.frames == 25) {
if (play->sceneId == SCENE_TEMPLE_OF_TIME && play->csCtx.curFrame == 25) {
this->unk_150[i].unk_22++;
}
} else {
@@ -809,7 +813,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) {
&this->unk_150[i].unk_1C) != 0) {
this->unk_150[i].unk_22++;
}
if (D_8098CF84 < play->csCtx.frames && this->actor.params == DEMOKANKYO_WARP_OUT) {
if (D_8098CF84 < play->csCtx.curFrame && this->actor.params == DEMOKANKYO_WARP_OUT) {
this->unk_150[i].unk_22++;
}
}
@@ -4,22 +4,22 @@
// clang-format off
CutsceneData gAdultWarpInCS[] = {
CS_BEGIN_CUTSCENE(2, 164),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 135),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 79, 59, 0x010F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 78, 60, 0x0120),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 32, 78, 60, 0x0131),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 30, 79, 59, 0x01F4),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 30, 78, 60, 0x01F6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 30, 78, 60, 0x0207),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.324856f, 30, 78, 60, 0x0000),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 164),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 11, 50, 23, 0x010F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 11, 48, 22, 0x0120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.324856f, 11, 48, 22, 0x0131),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.324856f, 57, 101, 21, 0x01F4),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 57, 101, 21, 0x01F6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 57, 101, 21, 0x0207),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.324856f, 57, 101, 21, 0x0000),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 135),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 79, 59, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 78, 60, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 32, 78, 60, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 30, 79, 59, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 30, 78, 60, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 30, 78, 60, 0x0207),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.324856f, 30, 78, 60, 0x0000),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 164),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 11, 50, 23, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 11, 48, 22, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.324856f, 11, 48, 22, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.324856f, 57, 101, 21, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 57, 101, 21, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 57, 101, 21, 0x0207),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.324856f, 57, 101, 21, 0x0000),
CS_END(),
};
// clang-format on
@@ -4,28 +4,28 @@
// clang-format off
CutsceneData gAdultWarpOutCS[] = {
CS_BEGIN_CUTSCENE(5, 1167),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1138),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0x20BA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA1BC),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5E1),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5CB),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5EB),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0x20BA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA1BC),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5E1),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1167),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 55, 99, 31, 0x20BA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 55, 99, 31, 0xA1BC),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 10, 60.32486f, 55, 99, 31, 0xA5E1),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.32486f, 17, 59, 31, 0xA5CB),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 17, 59, 31, 0xA5EB),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.32486f, 17, 59, 31, 0x20BA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 17, 59, 31, 0xA1BC),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.32486f, 17, 59, 31, 0xA5E1),
CS_SCENE_TRANS_FX(0x0005, 36, 46),
CS_SCENE_TRANS_FX(0x0001, 30, 35),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1138),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5CB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 31, 82, 61, 0xA1BC),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.32486f, 31, 82, 61, 0xA5E1),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 55, 99, 31, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 55, 99, 31, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.32486f, 55, 99, 31, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.32486f, 17, 59, 31, 0xA5CB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 17, 59, 31, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.32486f, 17, 59, 31, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 17, 59, 31, 0xA1BC),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.32486f, 17, 59, 31, 0xA5E1),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 36, 46),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 30, 35),
CS_MISC_LIST(1),
CS_MISC(0x000C, 95, 97, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0xFFFFFFF9, 0x00000000, 0xFFFFFFE3, 0xFFFFFFF9, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_STOP_CUTSCENE, 95, 97, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0xFFFFFFF9, 0x00000000, 0xFFFFFFE3, 0xFFFFFFF9, 0x00000000, 0x00000000, 0x00000000),
CS_END(),
};
// clang-format on
@@ -4,22 +4,22 @@
// clang-format off
CutsceneData gAdultWarpInToTCS[] = {
CS_BEGIN_CUTSCENE(2, 118),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 89),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 71.32476f, 53, 53, 40, 0x010F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0120),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0131),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x01F4),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x01F6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x0207),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 70.599915f, 58, 102, 48, 0x0047),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 118),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.52477f, 11, 29, 10, 0x010F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.39992f, 11, 29, 10, 0x0120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.599915f, 11, 29, 10, 0x0131),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.599915f, 29, 71, 25, 0x01F4),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, 29, 71, 25, 0x01F6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, 29, 71, 25, 0x0207),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 70.599915f, 29, 71, 25, 0x0047),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 89),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 71.32476f, 53, 53, 40, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 102, 48, 0x0207),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.599915f, 58, 102, 48, 0x0047),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 118),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.52477f, 11, 29, 10, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.39992f, 11, 29, 10, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.599915f, 11, 29, 10, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.599915f, 29, 71, 25, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, 29, 71, 25, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, 29, 71, 25, 0x0207),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.599915f, 29, 71, 25, 0x0047),
CS_END(),
};
// clang-format on
@@ -4,22 +4,22 @@
// clang-format off
CutsceneData gAdultWarpOutToTCS[] = {
CS_BEGIN_CUTSCENE(5, 1120),
CS_SCENE_TRANS_FX(0x0005, 36, 46),
CS_SCENE_TRANS_FX(0x0001, 30, 35),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1091),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.32486f, 42, 89, 50, 0x29D0),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.32486f, 24, 66, 29, 0x29D0),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 36, 46),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 30, 35),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 42, 89, 50, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.32486f, 42, 89, 50, 0x29D0),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 24, 66, 29, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.32486f, 24, 66, 29, 0x29D0),
CS_MISC_LIST(1),
CS_MISC(0x000C, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEE, 0xFFFFFFF3, 0x00000000, 0xFFFFFFEE, 0xFFFFFFF3, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_STOP_CUTSCENE, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEE, 0xFFFFFFF3, 0x00000000, 0xFFFFFFEE, 0xFFFFFFF3, 0x00000000, 0x00000000, 0x00000000),
CS_END(),
};
// clang-format on
@@ -4,24 +4,24 @@
// clang-format off
CutsceneData gChildWarpInCS[] = {
CS_BEGIN_CUTSCENE(2, 1164),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1135),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 68, 59, 0x010F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 32, 68, 60, 0x0120),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 69, 59, 0x0131),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x01F4),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x01F6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x0207),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0xB46C),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.324856f, 31, 64, 59, 0x05BC),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1164),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 12, 40, 22, 0x010F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 11, 38, 22, 0x0120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.324856f, 11, 39, 22, 0x0131),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.324856f, 57, 86, 21, 0x01F4),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 57, 86, 21, 0x01F6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.324856f, 57, 86, 21, 0x0207),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324856f, 57, 86, 21, 0xB46C),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.324856f, 57, 86, 21, 0x05BC),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1135),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 68, 59, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 32, 68, 60, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 69, 59, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0x0207),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324856f, 31, 64, 59, 0xB46C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.324856f, 31, 64, 59, 0x05BC),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1164),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 12, 40, 22, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 11, 38, 22, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.324856f, 11, 39, 22, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.324856f, 57, 86, 21, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 57, 86, 21, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.324856f, 57, 86, 21, 0x0207),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324856f, 57, 86, 21, 0xB46C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.324856f, 57, 86, 21, 0x05BC),
CS_END(),
};
// clang-format on
@@ -4,28 +4,28 @@
// clang-format off
CutsceneData gChildWarpOutCS[] = {
CS_BEGIN_CUTSCENE(5, 1167),
CS_SCENE_TRANS_FX(0x0005, 36, 46),
CS_SCENE_TRANS_FX(0x0001, 30, 35),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1138),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xA8A5),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xA3D9),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xF3A5),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5D5),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5E7),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5EC),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xBCA5),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.324863f, 29, 61, 59, 0xEEC0),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1167),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 54, 79, 31, 0xA8A5),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.32486f, 54, 80, 31, 0xA3D9),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 10, 60.32486f, 54, 79, 31, 0xF3A5),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 60.324863f, 15, 42, 30, 0xA5D5),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324863f, 15, 42, 30, 0xA5E7),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.324863f, 15, 42, 30, 0xA5EC),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324863f, 15, 42, 30, 0xBCA5),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.324863f, 15, 42, 30, 0xEEC0),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 36, 46),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 30, 35),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1138),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xA3D9),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.32486f, 30, 63, 61, 0xF3A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5D5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5E7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xA5EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324863f, 29, 61, 59, 0xBCA5),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.324863f, 29, 61, 59, 0xEEC0),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 54, 79, 31, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.32486f, 54, 80, 31, 0xA3D9),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.32486f, 54, 79, 31, 0xF3A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.324863f, 15, 42, 30, 0xA5D5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324863f, 15, 42, 30, 0xA5E7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.324863f, 15, 42, 30, 0xA5EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324863f, 15, 42, 30, 0xBCA5),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.324863f, 15, 42, 30, 0xEEC0),
CS_MISC_LIST(1),
CS_MISC(0x000C, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEF, 0xFFFFFFCD, 0x00000000, 0xFFFFFFEF, 0xFFFFFFCD, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_STOP_CUTSCENE, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFEF, 0xFFFFFFCD, 0x00000000, 0xFFFFFFEF, 0xFFFFFFCD, 0x00000000, 0x00000000, 0x00000000),
CS_END(),
};
// clang-format on
@@ -4,24 +4,24 @@
// clang-format off
CutsceneData gChildWarpInToTCS[] = {
CS_BEGIN_CUTSCENE(2, 1118),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1089),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 71.32476f, 53, 53, 40, 0x010F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0120),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0131),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x01F4),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x01F6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x0207),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x0000),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 70.599915f, 58, 89, 47, 0x0000),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1118),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.52477f, 11, 29, 10, 0x010F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.39992f, 11, 29, 10, 0x0120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.599915f, 11, 29, 10, 0x0131),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 7, 70.599915f, 29, 58, 25, 0x01F4),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, 29, 58, 25, 0x01F6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 70.599915f, 29, 58, 25, 0x0207),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, 29, 58, 25, 0x0000),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 70.599915f, 29, 58, 25, 0x0000),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1089),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 71.32476f, 53, 53, 40, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 53, 53, 40, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x0207),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.599915f, 58, 89, 47, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.599915f, 58, 89, 47, 0x0000),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1118),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.52477f, 11, 29, 10, 0x010F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.39992f, 11, 29, 10, 0x0120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.599915f, 11, 29, 10, 0x0131),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 70.599915f, 29, 58, 25, 0x01F4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, 29, 58, 25, 0x01F6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 70.599915f, 29, 58, 25, 0x0207),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, 29, 58, 25, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.599915f, 29, 58, 25, 0x0000),
CS_END(),
};
// clang-format on
@@ -4,22 +4,22 @@
// clang-format off
CutsceneData gChildWarpOutToTCS[] = {
CS_BEGIN_CUTSCENE(5, 1120),
CS_SCENE_TRANS_FX(0x0005, 36, 46),
CS_SCENE_TRANS_FX(0x0001, 30, 35),
CS_CAM_EYE_REL_TO_PLAYER_LIST(0, 1091),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1F1C),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1F8C),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1FFC),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x206C),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 60.324867f, 41, 75, 49, 0x20DC),
CS_CAM_AT_REL_TO_PLAYER_LIST(0, 1120),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x1F1C),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x1F8C),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 60.324867f, 24, 52, 29, 0x1FFC),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x206C),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 60.324867f, 24, 52, 29, 0x20DC),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 36, 46),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 30, 35),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1F1C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1F8C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x1FFC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.324867f, 41, 75, 49, 0x206C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.324867f, 41, 75, 49, 0x20DC),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x1F1C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x1F8C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.324867f, 24, 52, 29, 0x1FFC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.324867f, 24, 52, 29, 0x206C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.324867f, 24, 52, 29, 0x20DC),
CS_MISC_LIST(1),
CS_MISC(0x000C, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFDF, 0x00000019, 0x00000000, 0xFFFFFFDF, 0x00000019, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_STOP_CUTSCENE, 95, 96, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFDF, 0x00000019, 0x00000000, 0xFFFFFFDF, 0x00000019, 0x00000000, 0x00000000, 0x00000000),
CS_END(),
};
// clang-format on
@@ -158,8 +158,8 @@ void DemoKekkai_SpawnParticles(DemoKekkai* this, PlayState* play) {
}
void DemoKekkai_TowerBarrier(DemoKekkai* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[0] != NULL) &&
(play->csCtx.npcActions[0]->action != 1) && (play->csCtx.npcActions[0]->action == 2)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[0] != NULL) &&
(play->csCtx.actorCues[0]->id != 1) && (play->csCtx.actorCues[0]->id == 2)) {
if (!(this->sfxFlag & 1)) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_DISPEL_BARRIER);
this->sfxFlag |= 1;
@@ -207,7 +207,7 @@ void DemoKekkai_TrialBarrierDispel(Actor* thisx, PlayState* play) {
s32 pad;
DemoKekkai* this = (DemoKekkai*)thisx;
if (play->csCtx.frames == csFrames[this->actor.params]) {
if (play->csCtx.curFrame == csFrames[this->actor.params]) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_TRIAL_WARP);
}
if (this->energyAlpha >= 0.05f) {
@@ -256,7 +256,7 @@ void DemoKekkai_TrialBarrierIdle(Actor* thisx, PlayState* play) {
LOG_STRING("当ったよ", "../z_demo_kekkai.c", 572);
this->actor.update = DemoKekkai_TrialBarrierDispel;
this->timer = 0;
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(sSageCutscenes[this->actor.params]);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(sSageCutscenes[this->actor.params]);
gSaveContext.cutsceneTrigger = 1;
}
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider2.base);
+55 -48
View File
@@ -159,39 +159,43 @@ s32 DemoSa_UpdateSkelAnime(DemoSa* this) {
return SkelAnime_Update(&this->skelAnime);
}
CsCmdActorAction* DemoSa_GetNpcAction(PlayState* play, s32 idx) {
CsCmdActorCue* DemoSa_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[idx];
return play->csCtx.actorCues[cueChannel];
}
return NULL;
}
s32 func_8098E654(DemoSa* this, PlayState* play, u16 arg2, s32 arg3) {
CsCmdActorAction* npcAction = DemoSa_GetNpcAction(play, arg3);
s32 func_8098E654(DemoSa* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoSa_GetCue(play, cueChannel);
if ((npcAction != NULL) && (npcAction->action == arg2)) {
return 1;
if ((cue != NULL) && (cue->id == cueId)) {
return true;
}
return 0;
return false;
}
s32 func_8098E6A0(DemoSa* this, PlayState* play, u16 arg2, s32 arg3) {
CsCmdActorAction* npcAction = DemoSa_GetNpcAction(play, arg3);
s32 func_8098E6A0(DemoSa* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue = DemoSa_GetCue(play, cueChannel);
if ((npcAction != NULL) && (npcAction->action != arg2)) {
return 1;
if ((cue != NULL) && (cue->id != cueId)) {
return true;
}
return 0;
return false;
}
void func_8098E6EC(DemoSa* this, PlayState* play, s32 actionIdx) {
CsCmdActorAction* npcAction = DemoSa_GetNpcAction(play, actionIdx);
void func_8098E6EC(DemoSa* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = DemoSa_GetCue(play, cueChannel);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
@@ -252,7 +256,7 @@ void func_8098E960(DemoSa* this, PlayState* play) {
if ((gSaveContext.chamberCutsceneNum == 0) && !IS_CUTSCENE_LAYER) {
player = GET_PLAYER(play);
this->action = 1;
play->csCtx.segment = D_8099010C;
play->csCtx.script = D_8099010C;
gSaveContext.cutsceneTrigger = 2;
Item_Give(play, ITEM_MEDALLION_FOREST);
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
@@ -260,11 +264,11 @@ void func_8098E960(DemoSa* this, PlayState* play) {
}
void func_8098E9EC(DemoSa* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[4];
if ((npcAction != NULL) && (npcAction->action == 2)) {
cue = play->csCtx.actorCues[4];
if ((cue != NULL) && (cue->id == 2)) {
this->action = 2;
this->drawConfig = 1;
func_8098E86C(this, play);
@@ -280,11 +284,11 @@ void func_8098EA3C(DemoSa* this) {
}
void func_8098EA68(DemoSa* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[4];
if ((npcAction != NULL) && (npcAction->action == 3)) {
cue = play->csCtx.actorCues[4];
if ((cue != NULL) && (cue->id == 3)) {
Animation_Change(&this->skelAnime, &gSariaGiveForestMedallionAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gSariaGiveForestMedallionAnim), ANIMMODE_ONCE, -4.0f);
this->action = 4;
@@ -301,11 +305,12 @@ void func_8098EB00(DemoSa* this, s32 arg1) {
}
void func_8098EB6C(DemoSa* this, PlayState* play) {
CsCmdActorAction* npcAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
npcAction = play->csCtx.npcActions[6];
if ((npcAction != NULL) && (npcAction->action == 2)) {
cue = play->csCtx.actorCues[6];
if ((cue != NULL) && (cue->id == 2)) {
this->action = 6;
func_8098E8C8(this, play);
}
@@ -543,15 +548,16 @@ void func_8098F610(DemoSa* this, s32 arg1) {
}
void func_8098F654(DemoSa* this, PlayState* play) {
s32 unk_1AC;
s32 action;
CsCmdActorAction* npcAction = DemoSa_GetNpcAction(play, 4);
s32 currentCueId;
s32 nextCueId;
CsCmdActorCue* cue = DemoSa_GetCue(play, 4);
if (npcAction != NULL) {
action = npcAction->action;
unk_1AC = this->unk_1AC;
if (action != unk_1AC) {
switch (action) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 7:
func_8098F50C(this, play);
break;
@@ -564,7 +570,7 @@ void func_8098F654(DemoSa* this, PlayState* play) {
default:
osSyncPrintf("Demo_Sa_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_1AC = action;
this->cueId = nextCueId;
}
}
}
@@ -639,7 +645,7 @@ void func_8098F984(DemoSa* this) {
}
void func_8098F998(DemoSa* this, PlayState* play) {
if (this->unk_1AC == 4) {
if (this->cueId == 4) {
func_8098E6EC(this, play, 1);
this->action = 17;
this->drawConfig = 2;
@@ -688,15 +694,16 @@ void func_8098FB34(DemoSa* this, s32 arg1) {
}
void func_8098FB68(DemoSa* this, PlayState* play) {
s32 unk_1AC;
s32 action;
CsCmdActorAction* npcAction = DemoSa_GetNpcAction(play, 1);
s32 currentCueId;
s32 nextCueId;
CsCmdActorCue* cue = DemoSa_GetCue(play, 1);
if (npcAction != NULL) {
action = npcAction->action;
unk_1AC = this->unk_1AC;
if (action != unk_1AC) {
switch (action) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 4:
func_8098F984(this);
break;
@@ -712,7 +719,7 @@ void func_8098FB68(DemoSa* this, PlayState* play) {
default:
osSyncPrintf("Demo_Sa_inPresent_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->unk_1AC = action;
this->cueId = nextCueId;
}
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ typedef struct DemoSa {
/* 0x01A0 */ f32 unk_1A0;
/* 0x01A4 */ s32 alpha;
/* 0x01A8 */ s32 unk_1A8;
/* 0x01AC */ s32 unk_1AC;
/* 0x01AC */ s32 cueId;
/* 0x01B0 */ s32 unk_1B0;
} DemoSa; // size = 0x01B4
@@ -6,179 +6,179 @@ static CutsceneData D_8099010C[] = {
CS_BEGIN_CUTSCENE(29, 3001),
CS_UNK_DATA_LIST(0x00000020, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(31, 5),
CS_NPC_ACTION(0x0001, 0, 612, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 612, 613, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 613, 684, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 684, 732, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.7916667f, 0.0f),
CS_NPC_ACTION(0x0003, 732, 2912, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x000D, 0, 261, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION(0x0005, 261, 600, 0x0000, 0x9555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION(0x0013, 600, 1243, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(43, 3),
CS_NPC_ACTION(0x0001, 0, 165, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 165, 466, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 466, 3001, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_SCENE_TRANS_FX(0x0001, 590, 607),
CS_SCENE_TRANS_FX(0x0005, 617, 647),
CS_SCENE_TRANS_FX(0x0001, 875, 905),
CS_NPC_ACTION_LIST(49, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, -98, 0, 98, -98, 0, 98, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(62, 1),
CS_NPC_ACTION(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, -35, 97, -60, -35, 97, -60, 0.0f, 0.0f, 0.0f),
CS_TERMINATOR(KOKIRI_FOREST_AFTER_FOREST_BLUE_WARP, 974, 1050),
CS_ACTOR_CUE_LIST(31, 5),
CS_ACTOR_CUE(0x0001, 0, 612, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 612, 613, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 613, 684, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 684, 732, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.7916667f, 0.0f),
CS_ACTOR_CUE(0x0003, 732, 2912, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x000D, 0, 261, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE(0x0005, 261, 600, 0x0000, 0x9555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE(0x0013, 600, 1243, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(43, 3),
CS_ACTOR_CUE(0x0001, 0, 165, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 165, 466, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 466, 3001, 0x0000, 0x0000, 0x0000, -98, 6, -169, -98, 6, -169, 0.0f, 0.0f, 0.0f),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 590, 607),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 617, 647),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 875, 905),
CS_ACTOR_CUE_LIST(49, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, -98, 0, 98, -98, 0, 98, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(62, 1),
CS_ACTOR_CUE(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, -35, 97, -60, -35, 97, -60, 0.0f, 0.0f, 0.0f),
CS_DESTINATION(CS_DEST_KOKIRI_FOREST_FROM_CHAMBER_OF_SAGES, 974, 1050),
CS_TEXT_LIST(10),
CS_TEXT_NONE(0, 303),
CS_TEXT_DISPLAY_TEXTBOX(0x106A, 303, 323, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x106A, 303, 323, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(323, 344),
CS_TEXT_DISPLAY_TEXTBOX(0x108F, 344, 394, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x108F, 344, 394, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(394, 415),
CS_TEXT_DISPLAY_TEXTBOX(0x1090, 415, 465, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x1090, 415, 465, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(465, 871),
CS_TEXT_DISPLAY_TEXTBOX(0x003E, 871, 875, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x003E, 871, 875, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(875, 936),
CS_TEXT_DISPLAY_TEXTBOX(0x106B, 936, 946, 0x0000, 0x0000, 0x0000),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x0044, 686, 687, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC5, 0x00000057, 0x00000000, 0xFFFFFFC5, 0x00000057),
CS_FADE_BGM_LIST(1),
CS_FADE_BGM(0x0004, 550, 600, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC4, 0x00000066, 0x00000000, 0xFFFFFFC4, 0x00000066),
CS_CAM_EYE_LIST(0, 1241),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 170.1984f, 159, 2758, 43, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 170.1984f, 159, 2758, 43, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 170.1984f, 159, 2409, 43, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 170.1984f, 159, 202, 43, 0x0073),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 158, 222, 42, 0x0061),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 158, 149, 42, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x006D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x0065),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x0061),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, 158, 111, 42, 0x0061),
CS_CAM_EYE_LIST(190, 391),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -91, 18, -158, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -90, 17, -157, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -90, 31, -157, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x0073),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x0061),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x006F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.99993f, -90, 37, -157, 0x006D),
CS_CAM_EYE_LIST(263, 1354),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x0073),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 24.399864f, 7, 97, 127, 0x0061),
CS_CAM_EYE_LIST(333, 1424),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x0073),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, -279, 103, 68, 0x0061),
CS_CAM_EYE_LIST(403, 1494),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x0073),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39995f, -52, 35, -83, 0x0061),
CS_CAM_EYE_LIST(473, 1716),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -65, 61, -111, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -65, 61, -111, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, -51, 74, -86, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, 0, 136, 11, 0x0073),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, 386, 514, 736, 0x0061),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 80.399765f, 579, 156, 1099, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 80.399765f, 579, 156, 1099, 0x006D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0065),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0061),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0061),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0072),
CS_CAM_EYE_LIST(609, 951),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x0072),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x002F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x0073),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x0061),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x006F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x006D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x0065),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0061),
CS_CAM_EYE_REL_TO_PLAYER_LIST(685, 1866),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x0072),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x006F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x002F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0073),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0061),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x006F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x006D),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x0065),
CS_CAM_AT_LIST(0, 1270),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 170.1984f, 154, 2596, 41, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 170.1984f, 154, 2596, 41, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 170.1984f, 154, 2248, 41, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 170.1984f, 154, 42, 41, 0x0073),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.2f, 82, 94, 23, 0x0061),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 33, 79, 0, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 30, 62, -14, 0x006D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, 30, 62, -14, 0x0065),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 30, 62, -14, 0x0061),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, 31, 62, -14, 0x0061),
CS_CAM_AT_LIST(190, 420),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 40.99993f, 13, 42, 20, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.99993f, 12, 47, 18, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.99993f, 11, 50, 20, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x0073),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x0061),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x006F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.99993f, 11, 53, 20, 0x006D),
CS_CAM_AT_LIST(263, 1383),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 24.399864f, -42, 17, -150, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x0073),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 24.399864f, -42, 17, -150, 0x0061),
CS_CAM_AT_LIST(333, 1453),
CS_CAM_AT(CS_CMD_CONTINUE, 0x01, 30, 45.199944f, -26, 13, -85, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -26, 13, -85, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, -26, 13, -85, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -26, 13, -85, 0x0073),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, -26, 13, -85, 0x0061),
CS_CAM_AT_LIST(403, 1523),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.799892f, -226, 10, -419, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.999893f, -226, 10, -419, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 35.59991f, -226, 10, -419, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.39993f, -226, 10, -418, 0x0073),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39995f, -226, 10, -418, 0x0061),
CS_CAM_AT_LIST(473, 1745),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, -218, -88, -396, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, -218, -88, -396, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, -204, -75, -370, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 65.399994f, -149, -10, -269, 0x0073),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 25, 70.79991f, 287, 239, 551, 0x0061),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 80.399765f, 570, 493, 1083, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 50.399963f, 578, 492, 1097, 0x006D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.599964f, 578, 492, 1097, 0x0065),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 50.599964f, 578, 491, 1097, 0x0061),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 27, 50.599964f, 578, 491, 1097, 0x0061),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 50.599964f, 578, 491, 1097, 0x0072),
CS_CAM_AT_LIST(609, 1000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x0072),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x002F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x0073),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x0061),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x006F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x006D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x0065),
CS_CAM_AT(CS_CMD_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0061),
CS_CAM_AT_REL_TO_PLAYER_LIST(685, 1895),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x0072),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x006F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x002F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0073),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0061),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x006F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x006D),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x0065),
CS_TEXT(0x106B, 936, 946, 0x0000, 0x0000, 0x0000),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_MEDALLION_GET, 686, 687, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC5, 0x00000057, 0x00000000, 0xFFFFFFC5, 0x00000057),
CS_FADE_OUT_SEQ_LIST(1),
CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 550, 600, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC4, 0x00000066, 0x00000000, 0xFFFFFFC4, 0x00000066),
CS_CAM_EYE_SPLINE(0, 1241),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 170.1984f, 159, 2758, 43, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 170.1984f, 159, 2758, 43, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 170.1984f, 159, 2409, 43, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 170.1984f, 159, 202, 43, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 158, 222, 42, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 158, 149, 42, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x0065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 158, 111, 42, 0x0061),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, 158, 111, 42, 0x0061),
CS_CAM_EYE_SPLINE(190, 391),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -91, 18, -158, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -90, 17, -157, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -90, 31, -157, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.99993f, -90, 37, -157, 0x006F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.99993f, -90, 37, -157, 0x006D),
CS_CAM_EYE_SPLINE(263, 1354),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 24.399864f, 7, 97, 127, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 24.399864f, 7, 97, 127, 0x0061),
CS_CAM_EYE_SPLINE(333, 1424),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -279, 103, 68, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, -279, 103, 68, 0x0061),
CS_CAM_EYE_SPLINE(403, 1494),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -52, 35, -83, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39995f, -52, 35, -83, 0x0061),
CS_CAM_EYE_SPLINE(473, 1716),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -65, 61, -111, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -65, 61, -111, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, -51, 74, -86, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, 0, 136, 11, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, 386, 514, 736, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 80.399765f, 579, 156, 1099, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 80.399765f, 579, 156, 1099, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0061),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 50.599964f, 579, 156, 1099, 0x0072),
CS_CAM_EYE_SPLINE(609, 951),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x0065),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0061),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(685, 1866),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x006D),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x0065),
CS_CAM_AT_SPLINE(0, 1270),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 170.1984f, 154, 2596, 41, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 170.1984f, 154, 2596, 41, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 170.1984f, 154, 2248, 41, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 170.1984f, 154, 42, 41, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.2f, 82, 94, 23, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 33, 79, 0, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 30, 62, -14, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, 30, 62, -14, 0x0065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 30, 62, -14, 0x0061),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, 31, 62, -14, 0x0061),
CS_CAM_AT_SPLINE(190, 420),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 40.99993f, 13, 42, 20, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.99993f, 12, 47, 18, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.99993f, 11, 50, 20, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.99993f, 11, 53, 20, 0x006F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.99993f, 11, 53, 20, 0x006D),
CS_CAM_AT_SPLINE(263, 1383),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 24.399864f, -42, 17, -150, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 24.399864f, -42, 17, -150, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 24.399864f, -42, 17, -150, 0x0061),
CS_CAM_AT_SPLINE(333, 1453),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x01, 30, 45.199944f, -26, 13, -85, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -26, 13, -85, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, -26, 13, -85, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -26, 13, -85, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, -26, 13, -85, 0x0061),
CS_CAM_AT_SPLINE(403, 1523),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.799892f, -226, 10, -419, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.999893f, -226, 10, -419, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 35.59991f, -226, 10, -419, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.39993f, -226, 10, -418, 0x0073),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39995f, -226, 10, -418, 0x0061),
CS_CAM_AT_SPLINE(473, 1745),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, -218, -88, -396, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, -218, -88, -396, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, -204, -75, -370, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 65.399994f, -149, -10, -269, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 70.79991f, 287, 239, 551, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 80.399765f, 570, 493, 1083, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 50.399963f, 578, 492, 1097, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.599964f, 578, 492, 1097, 0x0065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 50.599964f, 578, 491, 1097, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 27, 50.599964f, 578, 491, 1097, 0x0061),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 50.599964f, 578, 491, 1097, 0x0072),
CS_CAM_AT_SPLINE(609, 1000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x006D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x0065),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0061),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(685, 1895),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x0072),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x002F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0073),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0061),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x006F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x006D),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x0065),
CS_END(),
};
// clang-format on
+12 -12
View File
@@ -47,23 +47,23 @@ void DemoShd_Destroy(Actor* thisx, PlayState* play) {
}
void func_80991298(DemoShd* this, PlayState* play) {
if ((play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[0] != NULL) ||
(play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL)) {
if (play->csCtx.frames == 800) {
if ((play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[0] != NULL) ||
(play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[1] != NULL)) {
if (play->csCtx.curFrame == 800) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_BONGO_EMERGES);
}
if (play->csCtx.frames == 1069) {
if (play->csCtx.curFrame == 1069) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_BONGO_HOVER);
}
}
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction0 = play->csCtx.npcActions[0];
CsCmdActorCue* cue = play->csCtx.actorCues[0];
if (npcAction0 != NULL) {
if (npcAction0->action == 2) {
if (cue != NULL) {
if (cue->id == 2) {
if (!(this->unk_14C & 1)) {
this->unk_14E = npcAction0->startPos.x;
this->unk_14E = cue->startPos.x;
}
this->unk_14C |= 1;
} else {
@@ -73,12 +73,12 @@ void func_80991298(DemoShd* this, PlayState* play) {
}
if (play->csCtx.state != CS_STATE_IDLE) {
CsCmdActorAction* npcAction1 = play->csCtx.npcActions[1];
CsCmdActorCue* cue = play->csCtx.actorCues[1];
if (npcAction1 != NULL) {
if (npcAction1->action == 2) {
if (cue != NULL) {
if (cue->id == 2) {
if (!(this->unk_14C & 2)) {
this->unk_14E = npcAction1->startPos.x;
this->unk_14E = cue->startPos.x;
}
this->unk_14C |= 2;
} else {
@@ -97,7 +97,7 @@ void DoorAna_WaitClosed(DoorAna* this, PlayState* play) {
if (!(this->actor.params & 0x200)) {
// opening with song of storms
if (this->actor.xyzDistToPlayerSq < SQ(200.0f) && Flags_GetEnv(play, 5)) {
if (this->actor.xyzDistToPlayerSq < SQ(200.0f) && CutsceneFlags_Get(play, 5)) {
openGrotto = true;
this->actor.flags &= ~ACTOR_FLAG_4;
}
+12 -10
View File
@@ -51,8 +51,8 @@ void EfcErupc_UpdateAction(EfcErupc* this, PlayState* play) {
s32 i;
if (play->csCtx.state != 0) {
if (play->csCtx.npcActions[1] != NULL) {
if (play->csCtx.npcActions[1]->action == 2) {
if (play->csCtx.actorCues[1] != NULL) {
if (play->csCtx.actorCues[1]->id == 2) {
if (this->unk_150 == 30) {
func_800788CC(NA_SE_IT_EARTHQUAKE);
}
@@ -74,8 +74,8 @@ void EfcErupc_UpdateAction(EfcErupc* this, PlayState* play) {
}
}
if (play->csCtx.state != 0) {
if (play->csCtx.npcActions[2] != NULL) {
switch (play->csCtx.npcActions[2]->action) {
if (play->csCtx.actorCues[2] != NULL) {
switch (play->csCtx.actorCues[2]->id) {
case 2:
if (this->unk_14E == 0) {
Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_LAVA_ERUPT);
@@ -112,7 +112,7 @@ void EfcErupc_Update(Actor* thisx, PlayState* play) {
void EfcErupc_Draw(Actor* thisx, PlayState* play) {
EfcErupc* this = (EfcErupc*)thisx;
u16 csAction;
u16 cueId;
OPEN_DISPS(play->state.gfxCtx, "../z_efc_erupc.c", 282);
@@ -136,7 +136,7 @@ void EfcErupc_Draw(Actor* thisx, PlayState* play) {
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (play->csCtx.state != 0) {
if ((play->csCtx.npcActions[1] != NULL) && (play->csCtx.npcActions[1]->action == 2)) {
if ((play->csCtx.actorCues[1] != NULL) && (play->csCtx.actorCues[1]->id == 2)) {
gSPDisplayList(POLY_XLU_DISP++, object_efc_erupc_DL_002570);
}
}
@@ -145,10 +145,12 @@ void EfcErupc_Draw(Actor* thisx, PlayState* play) {
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, "../z_efc_erupc.c", 333),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (play->csCtx.state != 0) {
CsCmdActorAction* csActorAction = play->csCtx.npcActions[2];
if (csActorAction != NULL) {
csAction = csActorAction->action;
if ((csAction == 2) || (csAction == 3)) {
CsCmdActorCue* cue = play->csCtx.actorCues[2];
if (cue != NULL) {
cueId = cue->id;
if ((cueId == 2) || (cueId == 3)) {
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 200, 255);
gDPSetEnvColor(POLY_XLU_DISP++, 100, 0, 0, 255);
gSPDisplayList(POLY_XLU_DISP++, object_efc_erupc_DL_001720);
+4 -4
View File
@@ -206,7 +206,7 @@ void func_809B0988(EnAni* this, PlayState* play) {
}
void func_809B0994(EnAni* this, PlayState* play) {
if (play->csCtx.npcActions[0]->action == 4) {
if (play->csCtx.actorCues[0]->id == 4) {
Animation_Change(&this->skelAnime, &gRoofManGettingUpAfterKnockbackAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gRoofManGettingUpAfterKnockbackAnim), ANIMMODE_ONCE, -4.0f);
this->unk_2AA++;
@@ -224,7 +224,7 @@ void func_809B0A6C(EnAni* this, PlayState* play) {
if (SkelAnime_Update(&this->skelAnime)) {
this->skelAnime.curFrame = 0.0f;
}
if (play->csCtx.npcActions[0]->action == 2) {
if (play->csCtx.actorCues[0]->id == 2) {
Animation_Change(&this->skelAnime, &gRoofManKnockbackAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gRoofManKnockbackAnim), ANIMMODE_ONCE, 0.0f);
this->actor.shape.shadowDraw = NULL;
@@ -240,7 +240,7 @@ void EnAni_Update(Actor* thisx, PlayState* play) {
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
Actor_MoveForward(&this->actor);
Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, UPDBGCHECKINFO_FLAG_2);
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[0] != NULL)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[0] != NULL)) {
switch (this->unk_2AA) {
case 0:
func_809B0A6C(this, play);
@@ -259,7 +259,7 @@ void EnAni_Update(Actor* thisx, PlayState* play) {
break;
}
if (play->csCtx.frames == 100) {
if (play->csCtx.curFrame == 100) {
func_800788CC(NA_SE_IT_EARTHQUAKE);
}
} else {
@@ -587,7 +587,7 @@ void EnClearTag_Update(Actor* thisx, PlayState* play2) {
case CLEAR_TAG_CUTSCENE_MODE_SETUP:
// Initializes Arwing cutscene camera data.
this->cutsceneMode = CLEAR_TAG_CUTSCENE_MODE_PLAY;
func_80064520(play, &play->csCtx);
Cutscene_StartManual(play, &play->csCtx);
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STAT_ACTIVE);
@@ -620,7 +620,7 @@ void EnClearTag_Update(Actor* thisx, PlayState* play2) {
Play_ReturnToMainCam(play, this->subCamId, 0);
// CLEAR_TAG_CUTSCENE_MODE_NONE / SUB_CAM_ID_DONE
this->cutsceneMode = this->subCamId = 0;
func_80064534(play, &play->csCtx);
Cutscene_StopManual(play, &play->csCtx);
}
}
}
+39 -26
View File
@@ -232,16 +232,16 @@ void func_809FDE9C(EnDu* this) {
}
}
void func_809FDFC0(CsCmdActorAction* csAction, Vec3f* dst) {
dst->x = csAction->startPos.x;
dst->y = csAction->startPos.y;
dst->z = csAction->startPos.z;
void func_809FDFC0(CsCmdActorCue* cue, Vec3f* dst) {
dst->x = cue->startPos.x;
dst->y = cue->startPos.y;
dst->z = cue->startPos.z;
}
void func_809FE000(CsCmdActorAction* csAction, Vec3f* dst) {
dst->x = csAction->endPos.x;
dst->y = csAction->endPos.y;
dst->z = csAction->endPos.z;
void func_809FE000(CsCmdActorCue* cue, Vec3f* dst) {
dst->x = cue->endPos.x;
dst->y = cue->endPos.y;
dst->z = cue->endPos.z;
}
void func_809FE040(EnDu* this) {
@@ -295,7 +295,7 @@ void EnDu_Init(Actor* thisx, PlayState* play) {
this->interactInfo.talkState = NPC_TALK_STATE_IDLE;
if (gSaveContext.cutsceneIndex >= 0xFFF0) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGoronCityDarunia01Cs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGoronCityDarunia01Cs);
gSaveContext.cutsceneTrigger = 1;
EnDu_SetupAction(this, func_809FE890);
} else if (play->sceneId == SCENE_FIRE_TEMPLE) {
@@ -343,7 +343,7 @@ void func_809FE4A4(EnDu* this, PlayState* play) {
play->msgCtx.ocarinaMode = OCARINA_MODE_00;
EnDu_SetupAction(this, func_809FE3C0);
} else if (play->msgCtx.ocarinaMode >= OCARINA_MODE_06) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaWrongCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaWrongCs);
gSaveContext.cutsceneTrigger = 1;
this->unk_1E8 = 1;
EnDu_SetupAction(this, func_809FE890);
@@ -351,7 +351,7 @@ void func_809FE4A4(EnDu* this, PlayState* play) {
} else if (play->msgCtx.ocarinaMode == OCARINA_MODE_03) {
Audio_PlaySfxGeneral(NA_SE_SY_CORRECT_CHIME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaCorrectCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaCorrectCs);
gSaveContext.cutsceneTrigger = 1;
this->unk_1E8 = 0;
EnDu_SetupAction(this, func_809FE890);
@@ -420,37 +420,44 @@ void func_809FE890(EnDu* this, PlayState* play) {
Vec3f startPos;
Vec3f endPos;
Vec3f velocity = { 0.0f, 0.0f, 0.0f };
CsCmdActorAction* csAction;
CsCmdActorCue* cue;
if (play->csCtx.state == CS_STATE_IDLE) {
func_8002DF54(play, &this->actor, PLAYER_CSMODE_1);
EnDu_SetupAction(this, func_809FEB08);
return;
}
csAction = play->csCtx.npcActions[2];
if (csAction != NULL) {
func_809FDFC0(csAction, &startPos);
func_809FE000(csAction, &endPos);
cue = play->csCtx.actorCues[2];
if (cue != NULL) {
func_809FDFC0(cue, &startPos);
func_809FE000(cue, &endPos);
if (this->unk_1EA == 0) {
func_809FDFC0(csAction, &startPos);
func_809FDFC0(cue, &startPos);
this->actor.world.pos = startPos;
}
if (this->unk_1EA != csAction->action) {
if (csAction->action == 1) {
if (this->unk_1EA != cue->id) {
if (cue->id == 1) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENDU_ANIM_1);
}
if (csAction->action == 7 || csAction->action == 8) {
if (cue->id == 7 || cue->id == 8) {
this->unk_1E6 = 0;
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENDU_ANIM_7);
}
this->unk_1EA = csAction->action;
this->unk_1EA = cue->id;
if (this->unk_1EA == 7) {
this->blinkTimer = 11;
this->unk_1EC = 2;
this->unk_1ED = 2;
this->unk_1EE = 1;
}
if (this->unk_1EA == 8) {
this->blinkTimer = 11;
this->unk_1EC = 3;
@@ -458,26 +465,32 @@ void func_809FE890(EnDu* this, PlayState* play) {
this->unk_1EE = 0;
}
}
if (this->unk_1EA == 7) {
func_809FE040(this);
}
if (this->unk_1EA == 8) {
func_809FE104(this);
}
this->actor.shape.rot.x = csAction->urot.x;
this->actor.shape.rot.y = csAction->urot.y;
this->actor.shape.rot.z = csAction->urot.z;
this->actor.shape.rot.x = cue->rot.x;
this->actor.shape.rot.y = cue->rot.y;
this->actor.shape.rot.z = cue->rot.z;
this->actor.velocity = velocity;
if (play->csCtx.frames < csAction->endFrame) {
frame = csAction->endFrame - csAction->startFrame;
if (play->csCtx.curFrame < cue->endFrame) {
frame = cue->endFrame - cue->startFrame;
this->actor.velocity.x = (endPos.x - startPos.x) / frame;
this->actor.velocity.y = (endPos.y - startPos.y) / frame;
this->actor.velocity.y += this->actor.gravity;
if (this->actor.velocity.y < this->actor.minVelocityY) {
this->actor.velocity.y = this->actor.minVelocityY;
}
this->actor.velocity.z = (endPos.z - startPos.z) / frame;
}
}
+19 -19
View File
@@ -52,7 +52,7 @@ void func_80A01FE0(EnElf* this, PlayState* play);
void func_80A04414(EnElf* this, PlayState* play);
void func_80A0461C(EnElf* this, PlayState* play);
void EnElf_SpawnSparkles(EnElf* this, PlayState* play, s32 sparkleLife);
void EnElf_GetCutsceneNextPos(Vec3f* vec, PlayState* play, s32 action);
void EnElf_GetCuePos(Vec3f* dest, PlayState* play, s32 cueChannel);
ActorInit En_Elf_InitVars = {
ACTOR_EN_ELF,
@@ -846,10 +846,10 @@ void func_80A03CF8(EnElf* this, PlayState* play) {
xScale = 0.0f;
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[8] != NULL)) {
EnElf_GetCutsceneNextPos(&nextPos, play, 8);
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[8] != NULL)) {
EnElf_GetCuePos(&nextPos, play, 8);
if (play->csCtx.npcActions[8]->action == 5) {
if (play->csCtx.actorCues[8]->id == 5) {
if (1) {}
EnElf_SpawnSparkles(this, play, 16);
}
@@ -865,7 +865,7 @@ void func_80A03CF8(EnElf* this, PlayState* play) {
if ((play->sceneId == SCENE_LINKS_HOUSE) && (gSaveContext.sceneLayer == 4)) {
// play dash sound effect as Navi enters Links house in the intro
if (1) {}
if (play->csCtx.frames == 55) {
if (play->csCtx.curFrame == 55) {
Actor_PlaySfx(&this->actor, NA_SE_EV_FAIRY_DASH);
}
@@ -1059,8 +1059,8 @@ void func_80A0461C(EnElf* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (play->csCtx.state != CS_STATE_IDLE) {
if (play->csCtx.npcActions[8] != NULL) {
switch (play->csCtx.npcActions[8]->action) {
if (play->csCtx.actorCues[8] != NULL) {
switch (play->csCtx.actorCues[8]->id) {
case 4:
temp = 9;
break;
@@ -1544,23 +1544,23 @@ void EnElf_Draw(Actor* thisx, PlayState* play) {
}
}
void EnElf_GetCutsceneNextPos(Vec3f* vec, PlayState* play, s32 action) {
void EnElf_GetCuePos(Vec3f* dest, PlayState* play, s32 cueChannel) {
Vec3f startPos;
Vec3f endPos;
CsCmdActorAction* npcAction = play->csCtx.npcActions[action];
CsCmdActorCue* cue = play->csCtx.actorCues[cueChannel];
f32 lerp;
startPos.x = npcAction->startPos.x;
startPos.y = npcAction->startPos.y;
startPos.z = npcAction->startPos.z;
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = npcAction->endPos.x;
endPos.y = npcAction->endPos.y;
endPos.z = npcAction->endPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
lerp = Environment_LerpWeight(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames);
lerp = Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame);
vec->x = ((endPos.x - startPos.x) * lerp) + startPos.x;
vec->y = ((endPos.y - startPos.y) * lerp) + startPos.y;
vec->z = ((endPos.z - startPos.z) * lerp) + startPos.z;
dest->x = ((endPos.x - startPos.x) * lerp) + startPos.x;
dest->y = ((endPos.y - startPos.y) * lerp) + startPos.y;
dest->z = ((endPos.z - startPos.z) * lerp) + startPos.z;
}
+16 -15
View File
@@ -618,13 +618,13 @@ void EnFish_Cutscene_WiggleFlyingThroughAir(EnFish* this, PlayState* play) {
void EnFish_UpdateCutscene(EnFish* this, PlayState* play) {
s32 pad;
s32 pad2;
CsCmdActorAction* csAction = play->csCtx.npcActions[1];
CsCmdActorCue* cue = play->csCtx.actorCues[1];
Vec3f startPos;
Vec3f endPos;
f32 progress;
f32 lerp;
s32 bgId;
if (csAction == NULL) {
if (cue == NULL) {
// "Warning : DEMO ended without dousa (action) 3 termination being called"
osSyncPrintf("Warning : dousa 3 消滅 が呼ばれずにデモが終了した(%s %d)(arg_data 0x%04x)\n", "../z_en_sakana.c",
1169, this->actor.params);
@@ -636,7 +636,7 @@ void EnFish_UpdateCutscene(EnFish* this, PlayState* play) {
this->slowPhase += 0x111;
this->fastPhase += 0x500;
switch (csAction->action) {
switch (cue->id) {
case 1:
EnFish_Cutscene_FlopOnGround(this, play);
break;
@@ -655,18 +655,19 @@ void EnFish_UpdateCutscene(EnFish* this, PlayState* play) {
break;
}
startPos.x = csAction->startPos.x;
startPos.y = csAction->startPos.y;
startPos.z = csAction->startPos.z;
endPos.x = csAction->endPos.x;
endPos.y = csAction->endPos.y;
endPos.z = csAction->endPos.z;
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
progress = Environment_LerpWeight(csAction->endFrame, csAction->startFrame, play->csCtx.frames);
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
this->actor.world.pos.x = (endPos.x - startPos.x) * progress + startPos.x;
this->actor.world.pos.y = (endPos.y - startPos.y) * progress + startPos.y + D_80A17014;
this->actor.world.pos.z = (endPos.z - startPos.z) * progress + startPos.z;
lerp = Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame);
this->actor.world.pos.x = (endPos.x - startPos.x) * lerp + startPos.x;
this->actor.world.pos.y = (endPos.y - startPos.y) * lerp + startPos.y + D_80A17014;
this->actor.world.pos.z = (endPos.z - startPos.z) * lerp + startPos.z;
this->actor.floorHeight =
BgCheck_EntityRaycastDown4(&play->colCtx, &this->actor.floorPoly, &bgId, &this->actor, &this->actor.world.pos);
@@ -742,7 +743,7 @@ void EnFish_Update(Actor* thisx, PlayState* play) {
EnFish* this = (EnFish*)thisx;
if ((D_80A17010 == NULL) && (this->actor.params == FISH_DROPPED) && (play->csCtx.state != 0) &&
(play->csCtx.npcActions[1] != NULL)) {
(play->csCtx.actorCues[1] != NULL)) {
EnFish_SetCutsceneData(this);
}
+1 -1
View File
@@ -172,7 +172,7 @@ void func_80A1DBD4(EnFu* this, PlayState* play) {
func_80078884(NA_SE_SY_CORRECT_CHIME);
this->actionFunc = func_80A1DB60;
this->actor.flags &= ~ACTOR_FLAG_16;
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gSongOfStormsCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gSongOfStormsCs);
gSaveContext.cutsceneTrigger = 1;
Item_Give(play, ITEM_SONG_STORMS);
play->msgCtx.ocarinaMode = OCARINA_MODE_00;
+62 -51
View File
@@ -12,7 +12,7 @@
#define FLAGS ACTOR_FLAG_4
typedef void (*EnHorseCsFunc)(EnHorse*, PlayState*, CsCmdActorAction*);
typedef void (*EnHorseCsFunc)(EnHorse*, PlayState*, CsCmdActorCue*);
typedef void (*EnHorseActionFunc)(EnHorse*, PlayState*);
void EnHorse_Init(Actor* thisx, PlayState* play2);
@@ -381,11 +381,11 @@ static s32 sIdleAnimIds[] = { 1, 3, 0, 3, 1, 0 };
static s16 sIngoAnimations[] = { 7, 6, 2, 2, 1, 1, 0, 0, 0, 0 };
void EnHorse_CsMoveInit(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsJumpInit(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsRearingInit(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_WarpMoveInit(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsWarpRearingInit(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsMoveInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsJumpInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsRearingInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_WarpMoveInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsWarpRearingInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
static EnHorseCsFunc sCutsceneInitFuncs[] = {
NULL,
@@ -396,18 +396,18 @@ static EnHorseCsFunc sCutsceneInitFuncs[] = {
EnHorse_CsWarpRearingInit,
};
void EnHorse_CsMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsRearing(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsWarpRearing(EnHorse* this, PlayState* play, CsCmdActorAction* action);
void EnHorse_CsMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsRearing(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
void EnHorse_CsWarpRearing(EnHorse* this, PlayState* play, CsCmdActorCue* cue);
static EnHorseCsFunc sCutsceneActionFuncs[] = {
NULL, EnHorse_CsMoveToPoint, EnHorse_CsJump, EnHorse_CsRearing, EnHorse_CsWarpMoveToPoint, EnHorse_CsWarpRearing,
};
typedef struct {
s32 csAction;
s32 cueId;
s32 csFuncIdx;
} CsActionEntry;
@@ -2111,7 +2111,7 @@ void EnHorse_UpdateIngoRace(EnHorse* this, PlayState* play) {
&((EnIn*)this->rider)->animationIdx, &((EnIn*)this->rider)->unk_1E0);
}
void EnHorse_CsMoveInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsMoveInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->animationIdx = ENHORSE_ANIM_GALLOP;
this->cutsceneAction = 1;
Animation_PlayOnceSetSpeed(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx],
@@ -2120,13 +2120,13 @@ void EnHorse_CsMoveInit(EnHorse* this, PlayState* play, CsCmdActorAction* action
void EnHorse_CsPlayHighJumpAnim(EnHorse* this, PlayState* play);
void EnHorse_CsMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
Vec3f endPos;
f32 speedXZ = 8.0f;
endPos.x = action->endPos.x;
endPos.y = action->endPos.y;
endPos.z = action->endPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
if (Math3D_Vec3f_DistXYZ(&endPos, &this->actor.world.pos) > speedXZ) {
EnHorse_RotateToPoint(this, play, &endPos, 400);
@@ -2174,17 +2174,17 @@ void EnHorse_CsPlayHighJumpAnim(EnHorse* this, PlayState* play) {
Rumble_Request(0.0f, 170, 10, 10);
}
void EnHorse_CsJumpInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsJumpInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
EnHorse_CsSetAnimHighJump(this, play);
this->cutsceneAction = 2;
this->cutsceneFlags &= ~1;
}
void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
f32 temp_f2;
if (this->cutsceneFlags & 1) {
EnHorse_CsMoveToPoint(this, play, action);
EnHorse_CsMoveToPoint(this, play, cue);
return;
}
temp_f2 = this->skin.skelAnime.curFrame;
@@ -2232,7 +2232,7 @@ void EnHorse_CsJump(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
}
}
void EnHorse_CsRearingInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsRearingInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->animationIdx = ENHORSE_ANIM_REARING;
this->cutsceneAction = 3;
this->cutsceneFlags &= ~4;
@@ -2246,7 +2246,7 @@ void EnHorse_CsRearingInit(EnHorse* this, PlayState* play, CsCmdActorAction* act
Animation_GetLastFrame(sAnimationHeaders[this->type][this->animationIdx]), ANIMMODE_ONCE, -3.0f);
}
void EnHorse_CsRearing(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsRearing(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->actor.speed = 0.0f;
if (this->curFrame > 25.0f) {
if (!(this->stateFlags & ENHORSE_LAND2_SOUND)) {
@@ -2269,26 +2269,29 @@ void EnHorse_CsRearing(EnHorse* this, PlayState* play, CsCmdActorAction* action)
}
}
void EnHorse_WarpMoveInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
this->actor.world.pos.x = action->startPos.x;
this->actor.world.pos.y = action->startPos.y;
this->actor.world.pos.z = action->startPos.z;
void EnHorse_WarpMoveInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.prevPos = this->actor.world.pos;
this->actor.world.rot.y = action->urot.y;
this->actor.world.rot.y = cue->rot.y;
this->actor.shape.rot = this->actor.world.rot;
this->animationIdx = ENHORSE_ANIM_GALLOP;
this->cutsceneAction = 4;
Animation_PlayOnceSetSpeed(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx],
this->actor.speed * 0.3f);
}
void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
Vec3f endPos;
f32 speedXZ = 8.0f;
endPos.x = action->endPos.x;
endPos.y = action->endPos.y;
endPos.z = action->endPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
if (Math3D_Vec3f_DistXYZ(&endPos, &this->actor.world.pos) > speedXZ) {
EnHorse_RotateToPoint(this, play, &endPos, 400);
@@ -2307,27 +2310,32 @@ void EnHorse_CsWarpMoveToPoint(EnHorse* this, PlayState* play, CsCmdActorAction*
}
}
void EnHorse_CsWarpRearingInit(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
this->actor.world.pos.x = action->startPos.x;
this->actor.world.pos.y = action->startPos.y;
this->actor.world.pos.z = action->startPos.z;
void EnHorse_CsWarpRearingInit(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.prevPos = this->actor.world.pos;
this->actor.world.rot.y = action->urot.y;
this->actor.world.rot.y = cue->rot.y;
this->actor.shape.rot = this->actor.world.rot;
this->animationIdx = ENHORSE_ANIM_REARING;
this->cutsceneAction = 5;
this->cutsceneFlags &= ~4;
this->stateFlags &= ~ENHORSE_LAND2_SOUND;
this->unk_21C = this->unk_228;
if (this->stateFlags & ENHORSE_DRAW) {
Audio_PlaySfxGeneral(NA_SE_EV_HORSE_NEIGH, &this->unk_21C, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
Animation_Change(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animationIdx], 1.0f, 0.0f,
Animation_GetLastFrame(sAnimationHeaders[this->type][this->animationIdx]), ANIMMODE_ONCE, -3.0f);
}
void EnHorse_CsWarpRearing(EnHorse* this, PlayState* play, CsCmdActorAction* action) {
void EnHorse_CsWarpRearing(EnHorse* this, PlayState* play, CsCmdActorCue* cue) {
this->actor.speed = 0.0f;
if (this->curFrame > 25.0f) {
if (!(this->stateFlags & ENHORSE_LAND2_SOUND)) {
@@ -2357,15 +2365,15 @@ void EnHorse_InitCutscene(EnHorse* this, PlayState* play) {
this->actor.speed = 0.0f;
}
s32 EnHorse_GetCutsceneFunctionIndex(s32 csAction) {
s32 EnHorse_GetCutsceneFunctionIndex(s32 cueId) {
s32 numActions = ARRAY_COUNT(sCsActionTable); // prevents unrolling
s32 i;
for (i = 0; i < numActions; i++) {
if (csAction == sCsActionTable[i].csAction) {
if (cueId == sCsActionTable[i].cueId) {
return sCsActionTable[i].csFuncIdx;
}
if (csAction < sCsActionTable[i].csAction) {
if (cueId < sCsActionTable[i].cueId) {
return 0;
}
}
@@ -2374,7 +2382,7 @@ s32 EnHorse_GetCutsceneFunctionIndex(s32 csAction) {
void EnHorse_CutsceneUpdate(EnHorse* this, PlayState* play) {
s32 csFunctionIdx;
CsCmdActorAction* linkCsAction = play->csCtx.linkAction;
CsCmdActorCue* playerCue = play->csCtx.playerCue;
if (play->csCtx.state == 3) {
this->playerControlled = 1;
@@ -2383,22 +2391,25 @@ void EnHorse_CutsceneUpdate(EnHorse* this, PlayState* play) {
EnHorse_Freeze(this);
return;
}
if (linkCsAction != NULL) {
csFunctionIdx = EnHorse_GetCutsceneFunctionIndex(linkCsAction->action);
if (playerCue != NULL) {
csFunctionIdx = EnHorse_GetCutsceneFunctionIndex(playerCue->id);
if (csFunctionIdx != 0) {
if (this->cutsceneAction != csFunctionIdx) {
if (this->cutsceneAction == 0) {
this->actor.world.pos.x = linkCsAction->startPos.x;
this->actor.world.pos.y = linkCsAction->startPos.y;
this->actor.world.pos.z = linkCsAction->startPos.z;
this->actor.world.rot.y = linkCsAction->urot.y;
this->actor.world.pos.x = playerCue->startPos.x;
this->actor.world.pos.y = playerCue->startPos.y;
this->actor.world.pos.z = playerCue->startPos.z;
this->actor.world.rot.y = playerCue->rot.y;
this->actor.shape.rot = this->actor.world.rot;
this->actor.prevPos = this->actor.world.pos;
}
this->cutsceneAction = csFunctionIdx;
sCutsceneInitFuncs[this->cutsceneAction](this, play, linkCsAction);
sCutsceneInitFuncs[this->cutsceneAction](this, play, playerCue);
}
sCutsceneActionFuncs[this->cutsceneAction](this, play, linkCsAction);
sCutsceneActionFuncs[this->cutsceneAction](this, play, playerCue);
}
}
}
@@ -2771,10 +2782,10 @@ void EnHorse_BridgeJumpInit(EnHorse* this, PlayState* play) {
void EnHorse_StartBridgeJump(EnHorse* this, PlayState* play) {
this->postDrawFunc = EnHorse_BridgeJumpInit;
if (this->bridgeJumpIdx == 0) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGerudoValleyBridgeJumpFieldFortressCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGerudoValleyBridgeJumpFieldFortressCs);
gSaveContext.cutsceneTrigger = 1;
} else {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGerudoValleyBridgeJumpFortressToFieldCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gGerudoValleyBridgeJumpFortressToFieldCs);
gSaveContext.cutsceneTrigger = 1;
}
}
+24 -21
View File
@@ -1117,22 +1117,23 @@ s32 EnIk_UpdateSkelAnime(EnIk* this) {
return SkelAnime_Update(&this->skelAnime);
}
CsCmdActorAction* EnIk_GetNpcAction(PlayState* play, s32 actionIdx) {
CsCmdActorCue* EnIk_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[actionIdx];
return play->csCtx.actorCues[cueChannel];
} else {
return NULL;
}
}
void EnIk_MoveNpcToPos(EnIk* this, PlayState* play, s32 actionIdx) {
CsCmdActorAction* npcAction = EnIk_GetNpcAction(play, actionIdx);
void EnIk_SetStartPosRotFromCue(EnIk* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = EnIk_GetCue(play, cueChannel);
if (npcAction != NULL) {
this->actor.world.pos.x = npcAction->startPos.x;
this->actor.world.pos.y = npcAction->startPos.y;
this->actor.world.pos.z = npcAction->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = npcAction->rot.y;
if (cue != NULL) {
this->actor.world.pos.x = cue->startPos.x;
this->actor.world.pos.y = cue->startPos.y;
this->actor.world.pos.z = cue->startPos.z;
this->actor.world.rot.y = this->actor.shape.rot.y = cue->rot.y;
}
}
@@ -1153,7 +1154,7 @@ void EnIk_SetupCsAction0(EnIk* this) {
void EnIk_SetupCsAction1(EnIk* this, PlayState* play) {
Animation_Change(&this->skelAnime, &gIronKnuckleNabooruSummonAxeAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gIronKnuckleNabooruSummonAxeAnim), ANIMMODE_ONCE, 0.0f);
EnIk_MoveNpcToPos(this, play, 4);
EnIk_SetStartPosRotFromCue(this, play, 4);
this->csAction = IK_CS_ACTION_1;
this->csDrawMode = IK_CS_DRAW_INTRO;
this->actor.shape.shadowAlpha = 255;
@@ -1170,7 +1171,7 @@ void EnIk_SetupCsAction2(EnIk* this) {
}
void EnIk_HandleEnemyChange(EnIk* this, PlayState* play, s32 animFinished) {
if (animFinished && (EnIk_GetNpcAction(play, 4) != NULL)) {
if (animFinished && (EnIk_GetCue(play, 4) != NULL)) {
EnIk_ChangeToEnemy(this, play);
}
}
@@ -1200,7 +1201,7 @@ void EnIk_SetupCsAction3(EnIk* this, PlayState* play) {
Animation_Change(&this->skelAnime, &gIronKnuckleNabooruDeathAnim, 1.0f, 0.0f, endFrame, ANIMMODE_ONCE, 0.0f);
this->csAction = IK_CS_ACTION_3;
this->csDrawMode = IK_CS_DRAW_DEFEAT;
EnIk_MoveNpcToPos(this, play, 4);
EnIk_SetStartPosRotFromCue(this, play, 4);
EnIk_PlayDeathSfx(this, play);
this->actor.shape.shadowAlpha = 255;
}
@@ -1232,7 +1233,7 @@ void EnIk_CsAction4(EnIk* this, PlayState* play) {
}
void EnIk_CsAction5(EnIk* this, PlayState* play) {
if (EnIk_GetNpcAction(play, 4) == NULL) {
if (EnIk_GetCue(play, 4) == NULL) {
Actor_Kill(&this->actor);
}
}
@@ -1321,14 +1322,16 @@ void EnIk_CsDrawDefeat(EnIk* this, PlayState* play) {
}
void EnIk_HandleCsCues(EnIk* this, PlayState* play) {
CsCmdActorAction* npcAction = EnIk_GetNpcAction(play, 4);
CsCmdActorCue* cue = EnIk_GetCue(play, 4);
u32 nextCueId;
u32 currentCueId;
if (npcAction != NULL) {
s32 action = npcAction->action;
s32 currentNpcAction = this->npcAction;
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (action != currentNpcAction) {
switch (action) {
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
EnIk_SetupCsAction0(this);
break;
@@ -1361,7 +1364,7 @@ void EnIk_HandleCsCues(EnIk* this, PlayState* play) {
osSyncPrintf("En_Ik_inConfrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
}
this->npcAction = action;
this->cueId = nextCueId;
}
}
}
@@ -1529,7 +1532,7 @@ void EnIk_StartDefeatCutscene(Actor* thisx, PlayState* play) {
if (!Play_InCsMode(play)) {
this->actor.update = EnIk_UpdateCutscene;
this->actor.draw = EnIk_DrawCutscene;
Cutscene_SetSegment(play, gSpiritBossNabooruKnuckleDefeatCs);
Cutscene_SetScript(play, gSpiritBossNabooruKnuckleDefeatCs);
gSaveContext.cutsceneTrigger = 1;
Actor_SetScale(&this->actor, 0.01f);
SET_EVENTCHKINF(EVENTCHKINF_3C);
+1 -1
View File
@@ -113,7 +113,7 @@ typedef struct EnIk {
/* 0x04C4 */ s32 blureIdx;
/* 0x04C8 */ s32 csAction;
/* 0x04CC */ s32 csDrawMode;
/* 0x04D0 */ u32 npcAction;
/* 0x04D0 */ u32 cueId;
/* 0x04D4 */ s32 isAxeSummoned;
/* 0x04D8 */ char unk_4D8[0x04];
} EnIk; // size = 0x04DC
+3 -3
View File
@@ -790,7 +790,7 @@ void func_80A7AA40(EnIn* this, PlayState* play) {
Message_StartTextbox(play, this->actor.textId, NULL);
this->interactInfo.talkState = NPC_TALK_STATE_TALKING;
this->unk_1FC = 0;
play->csCtx.frames = 0;
play->csCtx.curFrame = 0;
Letterbox_SetSizeTarget(32);
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING_ALT);
this->actionFunc = func_80A7ABD4;
@@ -826,11 +826,11 @@ void func_80A7ABD4(EnIn* this, PlayState* play) {
}
}
} else {
if (play->csCtx.frames++ >= 50) {
if (play->csCtx.curFrame++ >= 50) {
this->actionFunc = func_80A7AE84;
return;
}
if (play->csCtx.frames == 44) {
if (play->csCtx.curFrame == 44) {
Actor_PlaySfx(&this->actor, NA_SE_EV_RONRON_DOOR_CLOSE);
}
Math_SmoothStepToF(&this->subCamAtOffset.x, 0.0f, 0.06f, 10000.0f, 0.0f);
+3 -3
View File
@@ -215,7 +215,7 @@ void EnJj_BeginCutscene(EnJj* this, PlayState* play) {
this->cutsceneCountdownTimer--;
} else {
EnJj_SetupAction(this, EnJj_RemoveDust);
play->csCtx.segment = D_80A88164;
play->csCtx.script = D_80A88164;
gSaveContext.cutsceneTrigger = 1;
DynaPoly_DisableCollision(play, &play->colCtx.dyna, bodyCollisionActor->bgId);
func_8005B1A4(GET_ACTIVE_CAM(play));
@@ -225,7 +225,7 @@ void EnJj_BeginCutscene(EnJj* this, PlayState* play) {
}
void EnJj_CutsceneUpdate(EnJj* this, PlayState* play) {
switch (play->csCtx.npcActions[2]->action) {
switch (play->csCtx.actorCues[2]->id) {
case 1:
if (this->unk_30A & 2) {
this->eyeIndex = 0;
@@ -286,7 +286,7 @@ void EnJj_UpdateStaticCollision(Actor* thisx, PlayState* play) {
void EnJj_Update(Actor* thisx, PlayState* play) {
EnJj* this = (EnJj*)thisx;
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[2] != NULL)) {
if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[2] != NULL)) {
EnJj_CutsceneUpdate(this, play);
} else {
this->actionFunc(this, play);
@@ -4,155 +4,155 @@
// clang-format off
static CutsceneData D_80A88164[] = {
CS_BEGIN_CUTSCENE(26, 1629),
CS_PLAYER_ACTION_LIST(4),
CS_PLAYER_ACTION(0x0005, 0, 240, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_ACTION(0x0003, 240, 255, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_ACTION(0x0006, 255, 285, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_ACTION(0x0020, 285, 300, 0x0000, 0xC000, 0x0000, -1732, 52, -44, -1537, 109, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_NPC_ACTION_LIST(68, 4),
CS_NPC_ACTION(0x0001, 0, 234, 0x0000, 0x4000, 0x0000, -1665, 52, -44, -1665, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_NPC_ACTION(0x0002, 234, 241, 0x41F8, 0x0000, 0x0000, -1665, 52, -44, -1603, 130, -47, 8.857142f, 11.142858f, -8.857142f),
CS_NPC_ACTION(0x0002, 241, 280, 0x4031, 0x0000, 0x0000, -1603, 130, -47, -549, 130, -52, 27.02564f, 0.0f, -27.02564f),
CS_NPC_ACTION(0x0003, 280, 300, 0x0000, 0x0000, 0x0000, -549, 130, -52, -549, 130, -52, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(67, 5),
CS_NPC_ACTION(0x0001, 0, 93, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 93, 121, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0001, 121, 146, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 146, 241, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0001, 241, 441, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(69, 3),
CS_NPC_ACTION(0x0001, 0, 90, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -33, 9, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 90, 330, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -62, 22, 0.0f, -0.12083333f, 0.0f),
CS_NPC_ACTION(0x0003, 330, 380, 0x0000, 0x0000, 0x0000, 0, -62, 22, 0, -62, 22, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(4),
CS_PLAYER_CUE(0x0005, 0, 240, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(0x0003, 240, 255, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(0x0006, 255, 285, 0x0000, 0x4000, 0x0000, -1732, 52, -44, -1732, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(0x0020, 285, 300, 0x0000, 0xC000, 0x0000, -1732, 52, -44, -1537, 109, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_ACTOR_CUE_LIST(68, 4),
CS_ACTOR_CUE(0x0001, 0, 234, 0x0000, 0x4000, 0x0000, -1665, 52, -44, -1665, 52, -44, 1.1393037e-29f, 0.0f, 1.4e-45f),
CS_ACTOR_CUE(0x0002, 234, 241, 0x41F8, 0x0000, 0x0000, -1665, 52, -44, -1603, 130, -47, 8.857142f, 11.142858f, -8.857142f),
CS_ACTOR_CUE(0x0002, 241, 280, 0x4031, 0x0000, 0x0000, -1603, 130, -47, -549, 130, -52, 27.02564f, 0.0f, -27.02564f),
CS_ACTOR_CUE(0x0003, 280, 300, 0x0000, 0x0000, 0x0000, -549, 130, -52, -549, 130, -52, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(67, 5),
CS_ACTOR_CUE(0x0001, 0, 93, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 93, 121, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 121, 146, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 146, 241, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 241, 441, 0x0000, 0x0000, 0x0000, 0, 51, 124, 0, 51, 124, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(69, 3),
CS_ACTOR_CUE(0x0001, 0, 90, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -33, 9, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 90, 330, 0x0000, 0x0000, 0x0000, 0, -33, 9, 0, -62, 22, 0.0f, -0.12083333f, 0.0f),
CS_ACTOR_CUE(0x0003, 330, 380, 0x0000, 0x0000, 0x0000, 0, -62, 22, 0, -62, 22, 0.0f, 0.0f, 0.0f),
CS_MISC_LIST(1),
CS_MISC(0x000C, 1095, 1161, 0x0000, 0x00000000, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0x00000000, 0x00000000, 0x00000000),
CS_SCENE_TRANS_FX(0x0009, 0, 10),
CS_PLAYER_ACTION_LIST(1),
CS_PLAYER_ACTION(0x0035, 300, 1629, 0x0000, 0x0000, 0x0000, -1630, 52, -52, -1630, 52, -52, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_LIST(0, 1091),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x015C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x016D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x017E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0223),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, -1641, 95, -41, 0x7065),
CS_CAM_EYE_LIST(60, 1151),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x015C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x016D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x017E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x0223),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, -1532, 251, 222, 0x7065),
CS_CAM_EYE_LIST(90, 351),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0164),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 32.999897f, -1694, 380, 451, 0xAD78),
CS_CAM_EYE_LIST(220, 392),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_EYE_LIST(240, 1331),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945f, -1810, 65, -15, 0xAC10),
CS_CAM_EYE_LIST(280, 1371),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.599945f, -1531, 95, -7, 0xAC10),
CS_CAM_EYE_LIST(310, 1421),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1717, 83, -59, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1717, 83, -59, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1649, 177, -59, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1533, 224, -59, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -1243, 180, -59, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0164),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, -953, 71, -55, 0xAD78),
CS_CAM_EYE_LIST(355, 1466),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0xAC34),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x4428),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0xAC10),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_AT_LIST(0, 1120),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, -1724, -5, -45, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, -1724, -5, -45, 0xAC10),
CS_CAM_AT_LIST(60, 1180),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, -1440, 241, 134, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, -1440, 241, 134, 0xAC10),
CS_CAM_AT_LIST(90, 380),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1610, 348, 373, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1610, 348, 373, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 45.399944f, -1610, 348, 373, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 35.399906f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0164),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 32.999897f, -1614, 338, 367, 0xAD78),
CS_CAM_AT_LIST(220, 421),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 70, 45.399944f, -1724, -5, -45, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 5, 45.399944f, -1724, -5, -45, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 6, 45.799946f, -1593, 150, -146, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1531, 152, -75, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -1531, 152, -75, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, -1531, 152, -75, 0x0000),
CS_CAM_AT_LIST(240, 1360),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945f, -1712, 74, -37, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945f, -1712, 74, -37, 0xAC10),
CS_CAM_AT_LIST(280, 1400),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.599945f, -1619, 99, -50, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.599945f, -1619, 99, -50, 0xAC10),
CS_CAM_AT_LIST(310, 1450),
CS_CAM_AT(CS_CMD_CONTINUE, 0x0B, 30, 90.9996f, -1610, 141, -59, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x09, 10, 90.79961f, -1599, 114, -57, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0xFC, 10, 90.39961f, -1528, 192, -54, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 90.59961f, -1427, 164, -54, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0xCB, 10, 90.39961f, -1138, 119, -37, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x20, 10, 90.39961f, -832, 50, -51, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.399944f, -836, 35, -51, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, -836, 35, -51, 0x0164),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, -836, 35, -51, 0xAD78),
CS_CAM_AT_LIST(355, 1495),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1706, 111, -6, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1706, 111, -6, 0xAC34),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.600002f, -1706, 111, -6, 0x4428),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.600002f, -1721, 82, -42, 0x0000),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.600002f, -1721, 82, -42, 0xAC10),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1721, 82, -42, 0x0000),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.600002f, -1721, 82, -42, 0x0000),
CS_SCENE_TRANS_FX(0x000B, 335, 342),
CS_TERMINATOR(JABU_JABU_INTRO, 345, 395),
CS_NPC_ACTION_LIST(62, 1),
CS_NPC_ACTION(0x0001, 305, 494, 0x0000, 0x0000, 0x0000, -1399, 452, -53, -1399, 452, -53, 0.0f, 0.0f, 0.0f),
CS_MISC(CS_MISC_STOP_CUTSCENE, 1095, 1161, 0x0000, 0x00000000, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0xFFFFFFD2, 0x00000000, 0xFFFFFFD0, 0x00000000, 0x00000000, 0x00000000),
CS_TRANSITION(CS_TRANS_TRIGGER_INSTANCE, 0, 10),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(0x0035, 300, 1629, 0x0000, 0x0000, 0x0000, -1630, 52, -52, -1630, 52, -52, 0.0f, 0.0f, 0.0f),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x015C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x016D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x017E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0223),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, -1641, 95, -41, 0x7065),
CS_CAM_EYE_SPLINE(60, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x015C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x016D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x017E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1532, 251, 222, 0x0223),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, -1532, 251, 222, 0x7065),
CS_CAM_EYE_SPLINE(90, 351),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1698, 382, 455, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 32.999897f, -1694, 380, 451, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 32.999897f, -1694, 380, 451, 0xAD78),
CS_CAM_EYE_SPLINE(220, 392),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, -1641, 95, -41, 0x0000),
CS_CAM_EYE_SPLINE(240, 1331),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1810, 65, -15, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945f, -1810, 65, -15, 0xAC10),
CS_CAM_EYE_SPLINE(280, 1371),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, -1531, 95, -7, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.599945f, -1531, 95, -7, 0xAC10),
CS_CAM_EYE_SPLINE(310, 1421),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1717, 83, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1717, 83, -59, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1649, 177, -59, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1533, 224, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -1243, 180, -59, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, -953, 71, -55, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, -953, 71, -55, 0xAD78),
CS_CAM_EYE_SPLINE(355, 1466),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600002f, -1830, 103, 18, 0x0000),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, -1724, -5, -45, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, -1724, -5, -45, 0xAC10),
CS_CAM_AT_SPLINE(60, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, -1440, 241, 134, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1440, 241, 134, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, -1440, 241, 134, 0xAC10),
CS_CAM_AT_SPLINE(90, 380),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1610, 348, 373, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1610, 348, 373, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 45.399944f, -1610, 348, 373, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 35.399906f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 32.999897f, -1614, 338, 367, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 32.999897f, -1614, 338, 367, 0xAD78),
CS_CAM_AT_SPLINE(220, 421),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1724, -5, -45, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 70, 45.399944f, -1724, -5, -45, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 45.399944f, -1724, -5, -45, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 6, 45.799946f, -1593, 150, -146, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1531, 152, -75, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -1531, 152, -75, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, -1531, 152, -75, 0x0000),
CS_CAM_AT_SPLINE(240, 1360),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945f, -1712, 74, -37, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1712, 74, -37, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945f, -1712, 74, -37, 0xAC10),
CS_CAM_AT_SPLINE(280, 1400),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.599945f, -1619, 99, -50, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, -1619, 99, -50, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.599945f, -1619, 99, -50, 0xAC10),
CS_CAM_AT_SPLINE(310, 1450),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x0B, 30, 90.9996f, -1610, 141, -59, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x09, 10, 90.79961f, -1599, 114, -57, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0xFC, 10, 90.39961f, -1528, 192, -54, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 90.59961f, -1427, 164, -54, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0xCB, 10, 90.39961f, -1138, 119, -37, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x20, 10, 90.39961f, -832, 50, -51, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.399944f, -836, 35, -51, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, -836, 35, -51, 0x0164),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, -836, 35, -51, 0xAD78),
CS_CAM_AT_SPLINE(355, 1495),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1706, 111, -6, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1706, 111, -6, 0xAC34),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.600002f, -1706, 111, -6, 0x4428),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.600002f, -1721, 82, -42, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.600002f, -1721, 82, -42, 0xAC10),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1721, 82, -42, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.600002f, -1721, 82, -42, 0x0000),
CS_TRANSITION(CS_TRANS_BLACK_FILL_IN, 335, 342),
CS_DESTINATION(CS_DEST_JABU_JABU, 345, 395),
CS_ACTOR_CUE_LIST(62, 1),
CS_ACTOR_CUE(0x0001, 305, 494, 0x0000, 0x0000, 0x0000, -1399, 452, -53, -1399, 452, -53, 0.0f, 0.0f, 0.0f),
CS_END(),
};
// clang-format on
+2 -2
View File
@@ -251,12 +251,12 @@ void EnMag_Update(Actor* thisx, PlayState* play) {
}
if (this->globalState == MAG_STATE_INITIAL) {
if (Flags_GetEnv(play, 3)) {
if (CutsceneFlags_Get(play, 3)) {
this->effectFadeInTimer = 40;
this->globalState = MAG_STATE_FADE_IN;
}
} else if (this->globalState == MAG_STATE_DISPLAY) {
if (Flags_GetEnv(play, 4)) {
if (CutsceneFlags_Get(play, 4)) {
this->globalState = MAG_STATE_FADE_OUT;
}
}
+105 -92
View File
@@ -229,57 +229,65 @@ s32 EnNb_UpdateSkelAnime(EnNb* this) {
return SkelAnime_Update(&this->skelAnime);
}
CsCmdActorAction* EnNb_GetNpcCsAction(PlayState* play, s32 npcActionIdx) {
CsCmdActorCue* EnNb_GetCue(PlayState* play, s32 cueChannel) {
if (play->csCtx.state != CS_STATE_IDLE) {
return play->csCtx.npcActions[npcActionIdx];
return play->csCtx.actorCues[cueChannel];
}
return NULL;
}
void EnNb_SetupCsPosRot(EnNb* this, PlayState* play, s32 npcActionIdx) {
CsCmdActorAction* csCmdNPCAction = EnNb_GetNpcCsAction(play, npcActionIdx);
s16 newRotY;
void EnNb_SetStartPosRotFromCue1(EnNb* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = EnNb_GetCue(play, cueChannel);
Actor* thisx = &this->actor;
if (csCmdNPCAction != NULL) {
thisx->world.pos.x = csCmdNPCAction->startPos.x;
thisx->world.pos.y = csCmdNPCAction->startPos.y;
thisx->world.pos.z = csCmdNPCAction->startPos.z;
thisx->world.rot.y = thisx->shape.rot.y = csCmdNPCAction->rot.y;
if (cue != NULL) {
thisx->world.pos.x = cue->startPos.x;
thisx->world.pos.y = cue->startPos.y;
thisx->world.pos.z = cue->startPos.z;
thisx->world.rot.y = thisx->shape.rot.y = cue->rot.y;
}
}
s32 func_80AB1390(EnNb* this, PlayState* play, u16 arg2, s32 npcActionIdx) {
CsCmdActorAction* csCmdNPCAction;
s32 func_80AB1390(EnNb* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue;
if ((play->csCtx.state != CS_STATE_IDLE) &&
(csCmdNPCAction = play->csCtx.npcActions[npcActionIdx], csCmdNPCAction != NULL) &&
(csCmdNPCAction->action == arg2)) {
return true;
if (play->csCtx.state != CS_STATE_IDLE) {
cue = play->csCtx.actorCues[cueChannel];
if ((cue != NULL) && (cue->id == cueId)) {
return true;
}
}
return false;
}
s32 func_80AB13D8(EnNb* this, PlayState* play, u16 arg2, s32 npcActionIdx) {
CsCmdActorAction* csCmdNPCAction;
s32 func_80AB13D8(EnNb* this, PlayState* play, u16 cueId, s32 cueChannel) {
CsCmdActorCue* cue;
if ((play->csCtx.state != CS_STATE_IDLE) &&
(csCmdNPCAction = play->csCtx.npcActions[npcActionIdx], csCmdNPCAction != NULL) &&
(csCmdNPCAction->action != arg2)) {
return true;
if (play->csCtx.state != CS_STATE_IDLE) {
cue = play->csCtx.actorCues[cueChannel];
if ((cue != NULL) && (cue->id != cueId)) {
return true;
}
}
return false;
}
void EnNb_SetInitialCsPosRot(EnNb* this, PlayState* play, s32 npcActionIdx) {
CsCmdActorAction* csCmdNPCAction = EnNb_GetNpcCsAction(play, npcActionIdx);
void EnNb_SetStartPosRotFromCue2(EnNb* this, PlayState* play, s32 cueChannel) {
CsCmdActorCue* cue = EnNb_GetCue(play, cueChannel);
Actor* thisx = &this->actor;
if (csCmdNPCAction != NULL) {
thisx->world.pos.x = csCmdNPCAction->startPos.x;
thisx->world.pos.y = csCmdNPCAction->startPos.y;
thisx->world.pos.z = csCmdNPCAction->startPos.z;
thisx->world.rot.y = thisx->shape.rot.y = csCmdNPCAction->rot.y;
if (cue != NULL) {
thisx->world.pos.x = cue->startPos.x;
thisx->world.pos.y = cue->startPos.y;
thisx->world.pos.z = cue->startPos.z;
thisx->world.rot.y = thisx->shape.rot.y = cue->rot.y;
}
}
@@ -336,7 +344,7 @@ void EnNb_SetupChamberCsImpl(EnNb* this, PlayState* play) {
if ((gSaveContext.chamberCutsceneNum == 3) && !IS_CUTSCENE_LAYER) {
player = GET_PLAYER(play);
this->action = NB_CHAMBER_UNDERGROUND;
play->csCtx.segment = D_80AB431C;
play->csCtx.script = D_80AB431C;
gSaveContext.cutsceneTrigger = 2;
Item_Give(play, ITEM_MEDALLION_SPIRIT);
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
@@ -345,11 +353,11 @@ void EnNb_SetupChamberCsImpl(EnNb* this, PlayState* play) {
void EnNb_SetupChamberWarpImpl(EnNb* this, PlayState* play) {
CutsceneContext* csCtx = &play->csCtx;
CsCmdActorAction* csCmdNPCAction;
CsCmdActorCue* cue;
if (csCtx->state != CS_STATE_IDLE) {
csCmdNPCAction = csCtx->npcActions[1];
if (csCmdNPCAction != NULL && csCmdNPCAction->action == 2) {
cue = csCtx->actorCues[1];
if (cue != NULL && cue->id == 2) {
this->action = NB_CHAMBER_APPEAR;
this->drawMode = NB_DRAW_DEFAULT;
EnNb_SpawnBlueWarp(this, play);
@@ -366,11 +374,11 @@ void EnNb_SetupDefaultChamberIdle(EnNb* this) {
void EnNb_SetupArmRaise(EnNb* this, PlayState* play) {
AnimationHeader* animation = &gNabooruRaisingArmsGivingMedallionAnim;
CsCmdActorAction* csCmdNPCAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
csCmdNPCAction = play->csCtx.npcActions[1];
if (csCmdNPCAction != NULL && csCmdNPCAction->action == 3) {
cue = play->csCtx.actorCues[1];
if (cue != NULL && cue->id == 3) {
Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_ONCE,
0.0f);
this->action = NB_CHAMBER_RAISE_ARM;
@@ -389,11 +397,11 @@ void EnNb_SetupRaisedArmTransition(EnNb* this, s32 animFinished) {
}
void EnNb_SetupMedallion(EnNb* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction;
CsCmdActorCue* cue;
if (play->csCtx.state != CS_STATE_IDLE) {
csCmdNPCAction = play->csCtx.npcActions[6];
if (csCmdNPCAction != NULL && csCmdNPCAction->action == 2) {
cue = play->csCtx.actorCues[6];
if (cue != NULL && cue->id == 2) {
this->action = NB_GIVE_MEDALLION;
EnNb_GiveMedallion(this, play);
}
@@ -566,42 +574,43 @@ void EnNb_InitKidnap(EnNb* this, PlayState* play) {
}
void EnNb_PlayCrySFX(EnNb* this, PlayState* play) {
if (play->csCtx.frames == 3) {
if (play->csCtx.curFrame == 3) {
func_80078914(&this->actor.projectedPos, NA_SE_VO_NB_CRY_0);
}
}
void EnNb_PlayAgonySFX(EnNb* this, PlayState* play) {
if (play->csCtx.frames == 420) {
if (play->csCtx.curFrame == 420) {
func_80078914(&this->actor.projectedPos, NA_SE_VO_NB_AGONY);
}
}
void EnNb_SetPosInPortal(EnNb* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction = EnNb_GetNpcCsAction(play, 1);
CsCmdActorCue* cue = EnNb_GetCue(play, 1);
Vec3f* pos = &this->actor.world.pos;
f32 f0;
f32 lerp;
s32 pad;
Vec3f startPos;
Vec3f endPos;
if (csCmdNPCAction != NULL) {
f0 = Environment_LerpWeightAccelDecel(csCmdNPCAction->endFrame, csCmdNPCAction->startFrame, play->csCtx.frames,
4, 4);
startPos.x = csCmdNPCAction->startPos.x;
startPos.y = csCmdNPCAction->startPos.y;
startPos.z = csCmdNPCAction->startPos.z;
endPos.x = csCmdNPCAction->endPos.x;
endPos.y = csCmdNPCAction->endPos.y;
endPos.z = csCmdNPCAction->endPos.z;
pos->x = ((endPos.x - startPos.x) * f0) + startPos.x;
pos->y = ((endPos.y - startPos.y) * f0) + startPos.y;
pos->z = ((endPos.z - startPos.z) * f0) + startPos.z;
if (cue != NULL) {
lerp = Environment_LerpWeightAccelDecel(cue->endFrame, cue->startFrame, play->csCtx.curFrame, 4, 4);
startPos.x = cue->startPos.x;
startPos.y = cue->startPos.y;
startPos.z = cue->startPos.z;
endPos.x = cue->endPos.x;
endPos.y = cue->endPos.y;
endPos.z = cue->endPos.z;
pos->x = ((endPos.x - startPos.x) * lerp) + startPos.x;
pos->y = ((endPos.y - startPos.y) * lerp) + startPos.y;
pos->z = ((endPos.z - startPos.z) * lerp) + startPos.z;
}
}
void EnNb_SetupCaptureCutsceneState(EnNb* this, PlayState* play) {
EnNb_SetupCsPosRot(this, play, 1);
EnNb_SetStartPosRotFromCue1(this, play, 1);
this->action = NB_KIDNAPPED;
this->drawMode = NB_DRAW_NOTHING;
this->actor.shape.shadowAlpha = 0;
@@ -633,15 +642,16 @@ void EnNb_SetupKidnap(EnNb* this) {
}
void EnNb_CheckKidnapCsMode(EnNb* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction = EnNb_GetNpcCsAction(play, 1);
s32 action;
s32 previousCsAction;
CsCmdActorCue* cue = EnNb_GetCue(play, 1);
s32 nextCueId;
s32 currentCueId;
if (csCmdNPCAction != NULL) {
action = csCmdNPCAction->action;
previousCsAction = this->previousCsAction;
if (action != previousCsAction) {
switch (action) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
EnNb_SetupCaptureCutsceneState(this, play);
break;
@@ -659,7 +669,7 @@ void EnNb_CheckKidnapCsMode(EnNb* this, PlayState* play) {
osSyncPrintf("En_Nb_Kidnap_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
break;
}
this->previousCsAction = action;
this->cueId = nextCueId;
}
}
}
@@ -698,7 +708,7 @@ void EnNb_SetupConfrontation(EnNb* this, PlayState* play) {
void EnNb_PlayKnuckleDefeatSFX(EnNb* this, PlayState* play) {
s32 pad[2];
if (play->csCtx.frames == 548) {
if (play->csCtx.curFrame == 548) {
func_80078914(&this->actor.projectedPos, NA_SE_VO_NB_CRY_0);
func_80078914(&this->actor.projectedPos, NA_SE_EN_FANTOM_HIT_THUNDER);
}
@@ -750,7 +760,7 @@ void func_80AB26DC(EnNb* this, PlayState* play) {
AnimationHeader* animation = &gNabooruCollapseFromStandingToKneelingTransitionAnim;
f32 lastFrame = Animation_GetLastFrame(animation);
EnNb_SetupCsPosRot(this, play, 1);
EnNb_SetStartPosRotFromCue1(this, play, 1);
Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, lastFrame, ANIMMODE_ONCE, 0.0f);
this->action = NB_ACTION_14;
this->drawMode = NB_DRAW_KNEEL;
@@ -840,17 +850,18 @@ void EnNb_SetupConfrontationDestroy(EnNb* this) {
}
void EnNb_CheckConfrontationCsMode(EnNb* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction;
s32 csAction;
s32 previousCsAction;
CsCmdActorCue* cue;
s32 nextCueId;
s32 currentCueId;
csCmdNPCAction = EnNb_GetNpcCsAction(play, 1);
if (csCmdNPCAction != NULL) {
csAction = csCmdNPCAction->action;
previousCsAction = this->previousCsAction;
cue = EnNb_GetCue(play, 1);
if (csAction != previousCsAction) {
switch (csAction) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 1:
func_80AB26C8(this);
break;
@@ -877,7 +888,7 @@ void EnNb_CheckConfrontationCsMode(EnNb* this, PlayState* play) {
osSyncPrintf("En_Nb_Confrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
break;
}
this->previousCsAction = csAction;
this->cueId = nextCueId;
}
}
}
@@ -1020,7 +1031,7 @@ void EnNb_SetAlphaInCredits(EnNb* this) {
}
void EnNb_SetupCreditsFadeIn(EnNb* this, PlayState* play) {
EnNb_SetInitialCsPosRot(this, play, 1);
EnNb_SetStartPosRotFromCue2(this, play, 1);
this->action = NB_CREDITS_FADEIN;
this->drawMode = NB_DRAW_HIDE;
}
@@ -1044,15 +1055,16 @@ void EnNb_CheckIfLookingUp(EnNb* this, s32 animFinished) {
}
void EnNb_CheckCreditsCsModeImpl(EnNb* this, PlayState* play) {
CsCmdActorAction* csCmdNPCAction = EnNb_GetNpcCsAction(play, 1);
s32 action;
s32 previousCsAction;
CsCmdActorCue* cue = EnNb_GetCue(play, 1);
s32 nextCueId;
s32 currentCueId;
if (csCmdNPCAction != NULL) {
action = csCmdNPCAction->action;
previousCsAction = this->previousCsAction;
if (action != previousCsAction) {
switch (action) {
if (cue != NULL) {
nextCueId = cue->id;
currentCueId = this->cueId;
if (nextCueId != currentCueId) {
switch (nextCueId) {
case 15:
EnNb_SetupCreditsFadeIn(this, play);
break;
@@ -1064,7 +1076,7 @@ void EnNb_CheckCreditsCsModeImpl(EnNb* this, PlayState* play) {
osSyncPrintf("En_Nb_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
break;
}
this->previousCsAction = action;
this->cueId = nextCueId;
}
}
}
@@ -1123,7 +1135,7 @@ void func_80AB359C(EnNb* this) {
PosRot* world = &this->actor.world;
Vec3f* initialPos = &this->initialPos;
Vec3f* finalPos = &this->finalPos;
f32 f0;
f32 lerp;
u16 temp_t1;
s16 temp_2;
@@ -1133,10 +1145,11 @@ void func_80AB359C(EnNb* this) {
temp_t1 += 25;
if (temp_t1 >= this->movementTimer) {
f0 = Environment_LerpWeightAccelDecel(temp_t1, 0, this->movementTimer, 3, 3);
world->pos.x = initialPos->x + (f0 * (finalPos->x - initialPos->x));
world->pos.y = initialPos->y + (f0 * (finalPos->y - initialPos->y));
world->pos.z = initialPos->z + (f0 * (finalPos->z - initialPos->z));
lerp = Environment_LerpWeightAccelDecel(temp_t1, 0, this->movementTimer, 3, 3);
world->pos.x = initialPos->x + (lerp * (finalPos->x - initialPos->x));
world->pos.y = initialPos->y + (lerp * (finalPos->y - initialPos->y));
world->pos.z = initialPos->z + (lerp * (finalPos->z - initialPos->z));
}
}
+1 -1
View File
@@ -44,7 +44,7 @@ typedef struct EnNb {
/* 0x0280 */ f32 alphaTimer;
/* 0x0284 */ u32 alpha;
/* 0x0288 */ s32 flag;
/* 0x028C */ s32 previousCsAction;
/* 0x028C */ s32 cueId;
/* 0x0290 */ f32 timer;
/* 0x0294 */ ColliderCylinder collider;
/* 0x02E0 */ s32 headTurnFlag;
@@ -6,165 +6,165 @@ static CutsceneData D_80AB431C[] = {
CS_BEGIN_CUTSCENE(27, 3011),
CS_UNK_DATA_LIST(0x00000020, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(31, 5),
CS_NPC_ACTION(0x0001, 0, 501, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 501, 502, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0004, 502, 573, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 573, 621, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.7916667f, 0.0f),
CS_NPC_ACTION(0x0003, 621, 3011, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x000D, 0, 240, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0005, 240, 461, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0013, 461, 1616, 0x0000, 0x9555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_NPC_ACTION_LIST(49, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -16, -121, 0, -16, -121, 0.0f, 0.0f, 0.0f),
CS_LIGHTING_LIST(1),
CS_LIGHTING(0x0004, 0, 3000, 0x0000, 0x00000000, 0xFFFFFF9E, 0x00000000, 0x0000002F, 0xFFFFFF9E, 0x00000000, 0x0000002F),
CS_NPC_ACTION_LIST(39, 1),
CS_NPC_ACTION(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, 0, -2, 0, 0, -2, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION_LIST(40, 3),
CS_NPC_ACTION(0x0001, 0, 145, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0002, 145, 431, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_NPC_ACTION(0x0003, 431, 1399, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_SCENE_TRANS_FX(0x0005, 500, 530),
CS_SCENE_TRANS_FX(0x0001, 489, 499),
CS_SCENE_TRANS_FX(0x0001, 765, 795),
CS_ACTOR_CUE_LIST(31, 5),
CS_ACTOR_CUE(0x0001, 0, 501, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 501, 502, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 502, 573, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 573, 621, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.7916667f, 0.0f),
CS_ACTOR_CUE(0x0003, 621, 3011, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x000D, 0, 240, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0005, 240, 461, 0x0000, 0x1555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0013, 461, 1616, 0x0000, 0x9555, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_ACTOR_CUE_LIST(49, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -16, -121, 0, -16, -121, 0.0f, 0.0f, 0.0f),
CS_LIGHT_SETTING_LIST(1),
CS_LIGHT_SETTING(0x0003, 0, 3000, 0x0000, 0x00000000, 0xFFFFFF9E, 0x00000000, 0x0000002F, 0xFFFFFF9E, 0x00000000, 0x0000002F),
CS_ACTOR_CUE_LIST(39, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, 0, -2, 0, 0, -2, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE_LIST(40, 3),
CS_ACTOR_CUE(0x0001, 0, 145, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0002, 145, 431, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 431, 1399, 0x0000, 0x0000, 0x0000, -97, 6, -167, -97, 6, -167, 0.0f, 0.0f, 0.0f),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 500, 530),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 489, 499),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 765, 795),
CS_TEXT_LIST(10),
CS_TEXT_NONE(0, 345),
CS_TEXT_DISPLAY_TEXTBOX(0x6035, 345, 353, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x6035, 345, 353, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(353, 374),
CS_TEXT_DISPLAY_TEXTBOX(0x6039, 374, 399, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x6039, 374, 399, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(399, 400),
CS_TEXT_DISPLAY_TEXTBOX(0x603A, 400, 424, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x603A, 400, 424, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(424, 760),
CS_TEXT_DISPLAY_TEXTBOX(0x003F, 760, 765, 0x0000, 0x0000, 0x0000),
CS_TEXT(0x003F, 760, 765, 0x0000, 0x0000, 0x0000),
CS_TEXT_NONE(765, 825),
CS_TEXT_DISPLAY_TEXTBOX(0x6036, 825, 835, 0x0000, 0x0000, 0x0000),
CS_NPC_ACTION_LIST(62, 1),
CS_NPC_ACTION(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, 50, 80, 56, 50, 80, 56, 0.0f, 0.0f, 0.0f),
CS_TERMINATOR(DESERT_COLOSSUS_SPIRIT_BLUE_WARP, 865, 907),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x0044, 575, 576, 0x0000, 0x00000000, 0xFFFFFFEF, 0x00000000, 0x00000034, 0xFFFFFFEF, 0x00000000, 0x00000034),
CS_FADE_BGM_LIST(1),
CS_FADE_BGM(0x0004, 479, 529, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x0000005C, 0x00000000, 0xFFFFFFC7, 0x0000005C),
CS_CAM_EYE_LIST(0, 366),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -223, 75, -377, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -92, 31, -157, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, 13, 15, 19, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, 49, 28, 77, 0x013F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, 74, 20, 122, 0x014E),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 50.599964f, 74, 20, 122, 0x015F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x0161),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x300A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x656F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, 74, 20, 122, 0x676F),
CS_CAM_EYE_LIST(263, 2484),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 134, 19, 198, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 134, 19, 198, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 134, 43, 198, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x013D),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 62.004566f, 133, 60, 197, 0x013F),
CS_CAM_EYE_LIST(363, 1595),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 117, 24, 69, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x013F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.399925f, 105, 46, 117, 0x002E),
CS_CAM_EYE_LIST(433, 1594),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 139, 33, -108, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 139, 33, -108, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 140, 81, -109, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.599945f, 140, 252, -109, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x013F),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600002f, 140, 252, -109, 0x002E),
CS_CAM_EYE_LIST(498, 840),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x00C6),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x00C8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x00D7),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x00E8),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x00EA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x013D),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x013F),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x002E),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0063),
CS_CAM_EYE_REL_TO_PLAYER_LIST(574, 1755),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C6),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C8),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x00D7),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00E8),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00EA),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013D),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013F),
CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x002E),
CS_CAM_AT_LIST(0, 395),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -141, 51, -239, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -141, 51, -239, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -141, 52, -239, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -96, 32, -164, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, 34, 19, 56, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, 138, 2, 230, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, 165, 22, 286, 0x013F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 35, 55.799984f, 181, 116, 315, 0x014E),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.599964f, 175, 134, 305, 0x015F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 172, 142, 300, 0x0161),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 171, 142, 300, 0x300A),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 171, 141, 299, 0x656F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, 171, 141, 299, 0x676F),
CS_CAM_AT_LIST(263, 2513),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 70, 62.004566f, -67, 36, 17, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 70, 62.004566f, -67, 32, 17, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 62.004566f, -66, 34, 18, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 62.004566f, -60, 24, 23, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 62.004566f, -60, 22, 23, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 62.004566f, -60, 19, 23, 0x013D),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 62.004566f, -60, 18, 23, 0x013F),
CS_CAM_AT_LIST(363, 1624),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.399925f, 34, 58, 269, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.399925f, 34, 58, 269, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 40.399925f, 34, 58, 269, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 40.399925f, 42, 74, 293, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 41, 40.399925f, 22, 93, 336, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 40.399925f, 22, 93, 336, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.399925f, 22, 93, 336, 0x013F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.399925f, 22, 93, 336, 0x002E),
CS_CAM_AT_LIST(433, 1623),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, 4, 14, 108, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.599945f, 4, 14, 108, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 50.999966f, 4, 76, 108, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 70.599915f, 111, 501, -62, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.599915f, 111, 500, -62, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 70.599915f, 111, 500, -62, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.39992f, 111, 500, -62, 0x013F),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.39992f, 111, 500, -62, 0x002E),
CS_CAM_AT_LIST(498, 889),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x00C6),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x00C8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x00D7),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x00E8),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x00EA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013D),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013F),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x002E),
CS_CAM_AT(CS_CMD_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0063),
CS_CAM_AT_REL_TO_PLAYER_LIST(574, 1784),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x00C6),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x00C8),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x00D7),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00E8),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00EA),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x013D),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x013F),
CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x002E),
CS_TEXT(0x6036, 825, 835, 0x0000, 0x0000, 0x0000),
CS_ACTOR_CUE_LIST(62, 1),
CS_ACTOR_CUE(0x0004, 0, 3000, 0x0000, 0x0000, 0x0000, 50, 80, 56, 50, 80, 56, 0.0f, 0.0f, 0.0f),
CS_DESTINATION(CS_DEST_DESERT_COLOSSUS_FROM_CHAMBER_OF_SAGES, 865, 907),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_MEDALLION_GET, 575, 576, 0x0000, 0x00000000, 0xFFFFFFEF, 0x00000000, 0x00000034, 0xFFFFFFEF, 0x00000000, 0x00000034),
CS_FADE_OUT_SEQ_LIST(1),
CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 479, 529, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x0000005C, 0x00000000, 0xFFFFFFC7, 0x0000005C),
CS_CAM_EYE_SPLINE(0, 366),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -269, 89, -454, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -223, 75, -377, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -92, 31, -157, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, 13, 15, 19, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, 49, 28, 77, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, 74, 20, 122, 0x014E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.599964f, 74, 20, 122, 0x015F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x0161),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x300A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 74, 20, 122, 0x656F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, 74, 20, 122, 0x676F),
CS_CAM_EYE_SPLINE(263, 2484),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 134, 19, 198, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 134, 19, 198, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 134, 43, 198, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 62.004566f, 133, 60, 197, 0x013D),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 62.004566f, 133, 60, 197, 0x013F),
CS_CAM_EYE_SPLINE(363, 1595),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 116, 21, 45, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 117, 24, 69, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.399925f, 105, 46, 117, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.399925f, 105, 46, 117, 0x002E),
CS_CAM_EYE_SPLINE(433, 1594),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 139, 33, -108, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 139, 33, -108, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 140, 81, -109, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.599945f, 140, 252, -109, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 140, 252, -109, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600002f, 140, 252, -109, 0x002E),
CS_CAM_EYE_SPLINE(498, 840),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 16, 852, -6, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, 5, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x0063),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(574, 1755),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 103, -26, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x002E),
CS_CAM_AT_SPLINE(0, 395),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -141, 51, -239, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -141, 51, -239, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -141, 52, -239, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -96, 32, -164, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, 34, 19, 56, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, 138, 2, 230, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, 165, 22, 286, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 35, 55.799984f, 181, 116, 315, 0x014E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.599964f, 175, 134, 305, 0x015F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 172, 142, 300, 0x0161),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 171, 142, 300, 0x300A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 171, 141, 299, 0x656F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, 171, 141, 299, 0x676F),
CS_CAM_AT_SPLINE(263, 2513),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 70, 62.004566f, -67, 36, 17, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 70, 62.004566f, -67, 32, 17, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 62.004566f, -66, 34, 18, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 62.004566f, -60, 24, 23, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 62.004566f, -60, 22, 23, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 62.004566f, -60, 19, 23, 0x013D),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 62.004566f, -60, 18, 23, 0x013F),
CS_CAM_AT_SPLINE(363, 1624),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.399925f, 34, 58, 269, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.399925f, 34, 58, 269, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 40.399925f, 34, 58, 269, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 40.399925f, 42, 74, 293, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 41, 40.399925f, 22, 93, 336, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.399925f, 22, 93, 336, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.399925f, 22, 93, 336, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.399925f, 22, 93, 336, 0x002E),
CS_CAM_AT_SPLINE(433, 1623),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, 4, 14, 108, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.599945f, 4, 14, 108, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 50.999966f, 4, 76, 108, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 70.599915f, 111, 501, -62, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.599915f, 111, 500, -62, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 70.599915f, 111, 500, -62, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.39992f, 111, 500, -62, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.39992f, 111, 500, -62, 0x002E),
CS_CAM_AT_SPLINE(498, 889),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x013F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.199839f, 3, 6, -6, 0x002E),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x0063),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(574, 1784),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x00C6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x00C8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0x00D7),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00E8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x013D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x013F),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 68.599945f, 0, 42, 16, 0x002E),
CS_END(),
};
// clang-format on
@@ -70,7 +70,8 @@ void EnOkarinaEffect_TriggerStorm(EnOkarinaEffect* this, PlayState* play) {
}
void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, PlayState* play) {
Flags_UnsetEnv(play, 5); // clear storms env flag
CutsceneFlags_Unset(play, 5);
if (((play->pauseCtx.state == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(play->msgCtx.msgLength == 0) && (!FrameAdvance_IsEnabled(play)) &&
((play->transitionMode == TRANS_MODE_OFF) || (gSaveContext.gameMode != GAMEMODE_NORMAL))) ||
@@ -81,7 +82,7 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, PlayState* play) {
osSyncPrintf("\nthis->timer=[%d]", this->timer);
if (this->timer == 308) {
osSyncPrintf("\n\n\n豆よ のびろ 指定\n\n\n"); // "Let's grow some beans"
Flags_SetEnv(play, 5); // set storms env flag
CutsceneFlags_Set(play, 5);
}
}
@@ -242,19 +242,19 @@ void func_80ABF4C8(EnOkarinaTag* this, PlayState* play) {
SET_EVENTCHKINF(EVENTCHKINF_39);
break;
case 2:
play->csCtx.segment = D_80ABF9D0;
play->csCtx.script = D_80ABF9D0;
gSaveContext.cutsceneTrigger = 1;
// Increase pitch by 3 semitones i.e. 2^(3/12), scale tempo by same ratio
// Applies to the windmill bgm once the song of storms fanfare is complete
Audio_SetMainBgmTempoFreqAfterFanfare(1.18921f, 90);
break;
case 4:
play->csCtx.segment = D_80ABFB40;
play->csCtx.script = D_80ABFB40;
gSaveContext.cutsceneTrigger = 1;
break;
case 6:
play->csCtx.segment = LINK_IS_ADULT ? SEGMENTED_TO_VIRTUAL(spot02_scene_Cs_003C80)
: SEGMENTED_TO_VIRTUAL(spot02_scene_Cs_005020);
play->csCtx.script = LINK_IS_ADULT ? SEGMENTED_TO_VIRTUAL(spot02_scene_Cs_003C80)
: SEGMENTED_TO_VIRTUAL(spot02_scene_Cs_005020);
gSaveContext.cutsceneTrigger = 1;
SET_EVENTCHKINF(EVENTCHKINF_1D);
func_80078884(NA_SE_SY_CORRECT_CHIME);
@@ -307,7 +307,7 @@ void func_80ABF7CC(EnOkarinaTag* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play);
if (!CHECK_QUEST_ITEM(QUEST_SONG_SUN)) {
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gSunSongGraveSunSongTeachCs);
play->csCtx.script = SEGMENTED_TO_VIRTUAL(gSunSongGraveSunSongTeachCs);
gSaveContext.cutsceneTrigger = 1;
}
this->actionFunc = func_80ABF708;
@@ -4,27 +4,27 @@
// clang-format off
CutsceneData D_80ABF9D0[] = {
CS_BEGIN_CUTSCENE(4, 360),
CS_TERMINATOR(KAKARIKO_VILLAGE_DRAIN_WELL, 200, 201),
CS_CAM_EYE_LIST(0, 331),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x3235),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x3336),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x392C),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x2C20),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3235),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3238),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3639),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, 3178, 201, 113, 0x2C20),
CS_CAM_AT_LIST(0, 360),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 3054, 137, -64, 0x3235),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 3054, 137, -64, 0x3336),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 90, 60.0f, 3054, 137, -64, 0x392C),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 90, 60.0f, 3118, 142, 96, 0x2C20),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3235),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3238),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3639),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, 3118, 142, 96, 0x2C20),
CS_DESTINATION(CS_DEST_KAKARIKO_VILLAGE_DRAIN_WELL, 200, 201),
CS_CAM_EYE_SPLINE(0, 331),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x3235),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x3336),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3100, 201, -100, 0x392C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x2C20),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3235),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3238),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3178, 201, 113, 0x3639),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, 3178, 201, 113, 0x2C20),
CS_CAM_AT_SPLINE(0, 360),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 3054, 137, -64, 0x3235),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 3054, 137, -64, 0x3336),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 90, 60.0f, 3054, 137, -64, 0x392C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 90, 60.0f, 3118, 142, 96, 0x2C20),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3235),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3238),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 3118, 142, 96, 0x3639),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 3118, 142, 96, 0x2C20),
CS_MISC_LIST(1),
CS_MISC(0x0013, 30, 31, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000002, 0xFFFFFFFE, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_MISC(CS_MISC_SET_FLAG_FAST_WINDMILL, 30, 31, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000002, 0xFFFFFFFE, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_END(),
};
@@ -32,106 +32,106 @@ CutsceneData D_80ABFB40[] = {
CS_BEGIN_CUTSCENE(18, 3000),
CS_UNK_DATA_LIST(0x00000021, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFAA, 0xFFFFFFAE, 0x00000000, 0xFFFFFFAA, 0xFFFFFFAE, 0x00000000, 0x00000000, 0x00000000),
CS_PLAYER_ACTION_LIST(3),
CS_PLAYER_ACTION(0x0011, 0, 80, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0012, 80, 201, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_ACTION(0x0005, 201, 662, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(0x0011, 0, 80, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0012, 80, 201, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_PLAYER_CUE(0x0005, 201, 662, 0x0000, 0x8000, 0x0000, 0, -40, 1400, 0, -40, 1400, 0.0f, 0.0f, 1.401298464324817e-45f),
CS_MISC_LIST(1),
CS_MISC(0x000D, 510, 611, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000),
CS_NPC_ACTION_LIST(48, 1),
CS_NPC_ACTION(0x0003, 160, 289, 0x0000, 0x0000, 0x0000, 0, 20, 1400, 0, 60, 1400, 0.0f, 0.31007752f, 0.0f),
CS_NPC_ACTION_LIST(48, 3),
CS_NPC_ACTION(0x0004, 340, 420, 0x0000, 0x0000, 0x0000, 0, 120, 1335, 0, 40, 1335, 0.0f, -1.0f, 0.0f),
CS_NPC_ACTION(0x0004, 420, 465, 0x0000, 0x0000, 0x0000, 0, 40, 1335, 0, 16, 1335, 0.0f, -0.53333336f, 0.0f),
CS_NPC_ACTION(0x0002, 465, 519, 0x0000, 0x0000, 0x0000, 0, 16, 1335, 0, 16, 1335, 0.0f, 0.0f, 0.0f),
CS_MISC(CS_MISC_TRIFORCE_FLASH, 510, 611, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(48, 1),
CS_ACTOR_CUE(0x0003, 160, 289, 0x0000, 0x0000, 0x0000, 0, 20, 1400, 0, 60, 1400, 0.0f, 0.31007752f, 0.0f),
CS_ACTOR_CUE_LIST(48, 3),
CS_ACTOR_CUE(0x0004, 340, 420, 0x0000, 0x0000, 0x0000, 0, 120, 1335, 0, 40, 1335, 0.0f, -1.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 420, 465, 0x0000, 0x0000, 0x0000, 0, 40, 1335, 0, 16, 1335, 0.0f, -0.53333336f, 0.0f),
CS_ACTOR_CUE(0x0002, 465, 519, 0x0000, 0x0000, 0x0000, 0, 16, 1335, 0, 16, 1335, 0.0f, 0.0f, 0.0f),
CS_MISC_LIST(1),
CS_MISC(0x0003, 620, 621, 0x0000, 0x00000000, 0x00000001, 0x00000000, 0xFFFFFFFF, 0x00000001, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
CS_SCENE_TRANS_FX(0x0001, 338, 341),
CS_SCENE_TRANS_FX(0x0005, 344, 349),
CS_MISC(CS_MISC_SET_CSFLAG_0, 620, 621, 0x0000, 0x00000000, 0x00000001, 0x00000000, 0xFFFFFFFF, 0x00000001, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 338, 341),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 344, 349),
CS_MISC_LIST(1),
CS_MISC(0x000C, 790, 791, 0x0000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_SCENE_TRANS_FX(0x0001, 157, 160),
CS_SCENE_TRANS_FX(0x0005, 159, 166),
CS_PLAY_BGM_LIST(1),
CS_PLAY_BGM(0x005A, 560, 561, 0x0000, 0x00000000, 0x00000003, 0x00000000, 0x00000004, 0x00000003, 0x00000000, 0x00000004),
CS_CAM_EYE_LIST(0, 451),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xA220),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xB820),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xD0A1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 27, 1445, 0xBAEE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 56, 27, 1385, 0xA5AF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -19, 27, 1341, 0xAE0A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA8A5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5ED),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA220),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5A4),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xC9A5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5A2),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5BB),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xAE0A),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -44, -4, 1429, 0xB3A5),
CS_CAM_EYE_LIST(340, 1461),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xA220),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xB820),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xD0A1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xBAEE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xA5AF),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -6, 15, 1560, 0xAE0A),
CS_CAM_EYE_LIST(490, 941),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xA220),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xB820),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xD0A1),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xBAEE),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 0, 153, 1379, 0xA5AF),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 55, 32, 1398, 0xAE0A),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA8A5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5ED),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA220),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5A4),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0x20BA),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xC9A5),
CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5A2),
CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5BB),
CS_CAM_AT_LIST(0, 480),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xA220),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xB820),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xD0A1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 0, -8, 1391, 0xBAEE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 1, -5, 1398, 0xA5AF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -2, -3, 1394, 0xAE0A),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 5, 0, 1399, 0xA8A5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 1, 14, 1399, 0xA5ED),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -9, 33, 1402, 0xA220),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5A4),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xC9A5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5A2),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5BB),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xAE0A),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -14, 41, 1409, 0xB3A5),
CS_CAM_AT_LIST(340, 1490),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xA220),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xB820),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.0f, -3, 48, 1414, 0xD0A1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xBAEE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -3, 47, 1414, 0xA5AF),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -3, 47, 1414, 0xAE0A),
CS_CAM_AT_LIST(490, 970),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 0, 264, 1274, 0xA220),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 60, 60.0f, 0, 264, 1274, 0xB820),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 60, 60.0f, 0, 264, 1274, 0xD0A1),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 0, 264, 1274, 0xBAEE),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 0, 170, 1275, 0xA5AF),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 10, 51, 1306, 0xAE0A),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA8A5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5ED),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA220),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5A4),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0x20BA),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xC9A5),
CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5A2),
CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5BB),
CS_MISC(CS_MISC_STOP_CUTSCENE, 790, 791, 0x0000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 157, 160),
CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 159, 166),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_DOOR_OF_TIME, 560, 561, 0x0000, 0x00000000, 0x00000003, 0x00000000, 0x00000004, 0x00000003, 0x00000000, 0x00000004),
CS_CAM_EYE_SPLINE(0, 451),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 2, 11, 1397, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 27, 1445, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 56, 27, 1385, 0xA5AF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -19, 27, 1341, 0xAE0A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5ED),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xC9A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xA5BB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -44, -4, 1429, 0xAE0A),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -44, -4, 1429, 0xB3A5),
CS_CAM_EYE_SPLINE(340, 1461),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -6, 15, 1560, 0xA5AF),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -6, 15, 1560, 0xAE0A),
CS_CAM_EYE_SPLINE(490, 941),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 264, 1379, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 153, 1379, 0xA5AF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 55, 32, 1398, 0xAE0A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5ED),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xC9A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5A2),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, 111, -38, 1511, 0xA5BB),
CS_CAM_AT_SPLINE(0, 480),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 2, 36, 1335, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 0, -8, 1391, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, -5, 1398, 0xA5AF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -2, -3, 1394, 0xAE0A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 5, 0, 1399, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 14, 1399, 0xA5ED),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -9, 33, 1402, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xC9A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xA5BB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -14, 41, 1409, 0xAE0A),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -14, 41, 1409, 0xB3A5),
CS_CAM_AT_SPLINE(340, 1490),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.0f, -3, 48, 1414, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -3, 48, 1414, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -3, 47, 1414, 0xA5AF),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -3, 47, 1414, 0xAE0A),
CS_CAM_AT_SPLINE(490, 970),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 0, 264, 1274, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 60, 60.0f, 0, 264, 1274, 0xB820),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 60, 60.0f, 0, 264, 1274, 0xD0A1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 0, 264, 1274, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 0, 170, 1275, 0xA5AF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 10, 51, 1306, 0xAE0A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA8A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5ED),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA220),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xC9A5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5A2),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 68, -2, 1424, 0xA5BB),
CS_END(),
};
// clang-format on

Some files were not shown because too many files have changed in this diff Show More