From 7927e7b33007eee68375ca2b940b8d2aa4063406 Mon Sep 17 00:00:00 2001 From: fig02 Date: Sat, 24 Dec 2022 13:55:17 -0500 Subject: [PATCH] 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 --- docs/tutorial/data.md | 294 +-- docs/tutorial/other_functions.md | 16 +- include/functions.h | 22 +- include/regs.h | 1 + include/variables.h | 14 +- include/z64.h | 30 +- include/z64cutscene.h | 746 ++++--- include/z64cutscene_commands.h | 607 +++--- include/z64player.h | 2 +- src/code/code_8006C3A0.c | 18 +- src/code/code_800BB0A0.c | 3 +- src/code/code_800EC960.c | 2 +- src/code/db_camera.c | 14 +- src/code/z_camera.c | 2 +- src/code/z_demo.c | 1769 ++++++++++------- src/code/z_kankyo.c | 6 +- src/code/z_onepointdemo_data.inc.c | 164 +- src/code/z_parameter.c | 4 +- src/code/z_play.c | 35 +- src/code/z_scene.c | 4 +- .../actors/ovl_Bg_Breakwall/z_bg_breakwall.c | 2 +- .../ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c | 76 +- .../ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c | 6 +- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 8 +- .../ovl_Bg_Relay_Objects/z_bg_relay_objects.c | 2 +- .../z_bg_spot00_hanebasi.c | 2 +- .../z_bg_spot01_idohashira.c | 46 +- .../z_bg_spot01_idohashira.h | 2 +- .../z_bg_spot02_objects.c | 40 +- .../ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c | 2 +- .../z_bg_spot16_doughnut.c | 4 +- .../actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c | 8 +- .../z_bg_toki_swd_cutscene_data_1.c | 138 +- .../z_bg_toki_swd_cutscene_data_2.c | 178 +- .../z_bg_toki_swd_cutscene_data_3.c | 160 +- .../actors/ovl_Bg_Treemouth/z_bg_treemouth.c | 53 +- .../z_bg_treemouth_cutscene_data.c | 248 +-- .../actors/ovl_Boss_Dodongo/z_boss_dodongo.c | 8 +- src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c | 4 +- src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c | 4 +- .../actors/ovl_Boss_Ganon/z_boss_ganon.c | 10 +- .../actors/ovl_Boss_Ganon2/z_boss_ganon2.c | 22 +- .../ovl_Boss_Ganondrof/z_boss_ganondrof.c | 4 +- .../actors/ovl_Boss_Goma/z_boss_goma.c | 12 +- src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c | 12 +- src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c | 8 +- src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c | 12 +- src/overlays/actors/ovl_Boss_Va/z_boss_va.c | 12 +- src/overlays/actors/ovl_Demo_6K/z_demo_6k.c | 56 +- src/overlays/actors/ovl_Demo_Du/z_demo_du.c | 128 +- src/overlays/actors/ovl_Demo_Du/z_demo_du.h | 2 +- .../ovl_Demo_Du/z_demo_du_cutscene_data.inc.c | 340 ++-- src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c | 71 +- src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h | 2 +- .../actors/ovl_Demo_Effect/z_demo_effect.c | 305 ++- .../actors/ovl_Demo_Effect/z_demo_effect.h | 2 +- src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c | 41 +- src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h | 2 +- src/overlays/actors/ovl_Demo_Go/z_demo_go.c | 73 +- src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c | 193 +- src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c | 50 +- src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h | 2 +- src/overlays/actors/ovl_Demo_Im/z_demo_im.c | 133 +- src/overlays/actors/ovl_Demo_Im/z_demo_im.h | 2 +- .../ovl_Demo_Im/z_demo_im_cutscene_data.inc.c | 406 ++-- .../actors/ovl_Demo_Kankyo/z_demo_kankyo.c | 226 +-- .../z_demo_kankyo_cutscene_data1.c | 32 +- .../z_demo_kankyo_cutscene_data2.c | 42 +- .../z_demo_kankyo_cutscene_data3.c | 32 +- .../z_demo_kankyo_cutscene_data4.c | 30 +- .../z_demo_kankyo_cutscene_data5.c | 36 +- .../z_demo_kankyo_cutscene_data6.c | 42 +- .../z_demo_kankyo_cutscene_data7.c | 36 +- .../z_demo_kankyo_cutscene_data8.c | 30 +- .../actors/ovl_Demo_Kekkai/z_demo_kekkai.c | 8 +- src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c | 103 +- src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h | 2 +- .../ovl_Demo_Sa/z_demo_sa_cutscene_data.inc.c | 334 ++-- src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c | 24 +- src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 2 +- .../actors/ovl_Efc_Erupc/z_efc_erupc.c | 22 +- src/overlays/actors/ovl_En_Ani/z_en_ani.c | 8 +- .../actors/ovl_En_Clear_Tag/z_en_clear_tag.c | 4 +- src/overlays/actors/ovl_En_Du/z_en_du.c | 65 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 38 +- src/overlays/actors/ovl_En_Fish/z_en_fish.c | 31 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 113 +- src/overlays/actors/ovl_En_Ik/z_en_ik.c | 45 +- src/overlays/actors/ovl_En_Ik/z_en_ik.h | 2 +- src/overlays/actors/ovl_En_In/z_en_in.c | 6 +- src/overlays/actors/ovl_En_Jj/z_en_jj.c | 6 +- .../ovl_En_Jj/z_en_jj_cutscene_data.inc.c | 296 +-- src/overlays/actors/ovl_En_Mag/z_en_mag.c | 4 +- src/overlays/actors/ovl_En_Nb/z_en_nb.c | 197 +- src/overlays/actors/ovl_En_Nb/z_en_nb.h | 2 +- .../ovl_En_Nb/z_en_nb_cutscene_data.inc.c | 306 +-- .../z_en_okarina_effect.c | 5 +- .../ovl_En_Okarina_Tag/z_en_okarina_tag.c | 10 +- .../z_en_okarina_tag_cutscene_data.c | 234 +-- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 84 +- src/overlays/actors/ovl_En_Rl/z_en_rl.c | 38 +- src/overlays/actors/ovl_En_Ru1/z_en_ru1.c | 137 +- .../ovl_En_Ru1/z_en_ru1_cutscene_data.inc.c | 408 ++-- src/overlays/actors/ovl_En_Ru2/z_en_ru2.c | 76 +- src/overlays/actors/ovl_En_Ru2/z_en_ru2.h | 2 +- .../ovl_En_Ru2/z_en_ru2_cutscene_data.inc.c | 410 ++-- src/overlays/actors/ovl_En_Sa/z_en_sa.c | 54 +- src/overlays/actors/ovl_En_Tr/z_en_tr.c | 87 +- src/overlays/actors/ovl_En_Tr/z_en_tr.h | 2 +- .../actors/ovl_En_Viewer/z_en_viewer.c | 152 +- src/overlays/actors/ovl_En_Xc/z_en_xc.c | 267 +-- src/overlays/actors/ovl_En_Zl1/z_en_zl1.c | 97 +- .../ovl_En_Zl1/z_en_zl1_cutscene_data.c | 460 ++--- src/overlays/actors/ovl_En_Zl2/z_en_zl2.c | 208 +- src/overlays/actors/ovl_En_Zl2/z_en_zl2.h | 2 +- src/overlays/actors/ovl_En_Zl3/z_en_zl3.c | 3 +- src/overlays/actors/ovl_En_Zl4/z_en_zl4.c | 52 +- src/overlays/actors/ovl_En_Zl4/z_en_zl4.h | 2 +- src/overlays/actors/ovl_En_fHG/z_en_fhg.c | 4 +- .../actors/ovl_End_Title/z_end_title.c | 12 +- src/overlays/actors/ovl_Fishing/z_fishing.c | 12 +- .../ovl_Item_Etcetera/z_item_etcetera.c | 8 +- .../actors/ovl_Item_Ocarina/z_item_ocarina.c | 10 +- src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c | 4 +- .../actors/ovl_Obj_Dekujr/z_obj_dekujr.c | 55 +- .../ovl_Object_Kankyo/z_object_kankyo.c | 34 +- src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c | 2 +- .../actors/ovl_player_actor/z_player.c | 341 ++-- tools/csdis.py | 304 +-- 130 files changed, 6392 insertions(+), 5954 deletions(-) diff --git a/docs/tutorial/data.md b/docs/tutorial/data.md index 8fae671025..05e3a66d30 100644 --- a/docs/tutorial/data.md +++ b/docs/tutorial/data.md @@ -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(), }; ``` diff --git a/docs/tutorial/other_functions.md b/docs/tutorial/other_functions.md index fd8878d28d..5fd682a74d 100644 --- a/docs/tutorial/other_functions.md +++ b/docs/tutorial/other_functions.md @@ -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; diff --git a/include/functions.h b/include/functions.h index 37106ba0f0..56d4eedcd5 100644 --- a/include/functions.h +++ b/include/functions.h @@ -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); diff --git a/include/regs.h b/include/regs.h index dc8558c4f2..a542d83288 100644 --- a/include/regs.h +++ b/include/regs.h @@ -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 diff --git a/include/variables.h b/include/variables.h index 03d9fa47c4..cd14efb6a2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -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]; diff --git a/include/z64.h b/include/z64.h index d7f97efc13..3d8a8a823f 100644 --- a/include/z64.h +++ b/include/z64.h @@ -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; diff --git a/include/z64cutscene.h b/include/z64cutscene.h index d01281613e..e509138d22 100644 --- a/include/z64cutscene.h +++ b/include/z64cutscene.h @@ -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 diff --git a/include/z64cutscene_commands.h b/include/z64cutscene_commands.h index 85e7166f45..fcaa4a009b 100644 --- a/include/z64cutscene_commands.h +++ b/include/z64cutscene_commands.h @@ -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 diff --git a/include/z64player.h b/include/z64player.h index cd3730baed..f08f0719b5 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -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]; diff --git a/src/code/code_8006C3A0.c b/src/code/code_8006C3A0.c index 8943d8b938..0057128e22 100644 --- a/src/code/code_8006C3A0.c +++ b/src/code/code_8006C3A0.c @@ -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; } diff --git a/src/code/code_800BB0A0.c b/src/code/code_800BB0A0.c index 0f2ee7d744..8dfd375e1c 100644 --- a/src/code/code_800BB0A0.c +++ b/src/code/code_800BB0A0.c @@ -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; } diff --git a/src/code/code_800EC960.c b/src/code/code_800EC960.c index fb4fd25fe1..a5a76016b6 100644 --- a/src/code/code_800EC960.c +++ b/src/code/code_800EC960.c @@ -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; diff --git a/src/code/db_camera.c b/src/code/db_camera.c index 0c50abbc05..80a9eb58db 100644 --- a/src/code/db_camera.c +++ b/src/code/db_camera.c @@ -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; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index 100783217f..e91e4fe8ee 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -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); } } diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 14f72061af..5fd51a5bdf 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -30,27 +30,48 @@ #include "assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.h" -u16 D_8011E1C0 = 0; -u16 D_8011E1C4 = 0; +u16 sCurTextId = 0; +u16 sCurOcarinaAction = 0; -typedef void (*CutsceneStateHandler)(PlayState*, CutsceneContext*); +typedef void (*CutsceneHandler)(PlayState*, CutsceneContext*); -void func_80064720(PlayState* play, CutsceneContext* csCtx); -void func_80064760(PlayState* play, CutsceneContext* csCtx); -void func_800647C0(PlayState* play, CutsceneContext* csCtx); -void func_80068C3C(PlayState* play, CutsceneContext* csCtx); -void func_80068D84(PlayState* play, CutsceneContext* csCtx); -void func_80068DC0(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_DoNothing(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_StartManual(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_StartScript(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_StopManual(PlayState* play, CutsceneContext* csCtx); +void CutsceneHandler_StopScript(PlayState* play, CutsceneContext* csCtx); -CutsceneStateHandler sCsStateHandlers1[] = { - func_80064720, func_80064760, func_80064720, func_80068D84, func_80064720, +CutsceneHandler sManualCutsceneHandlers[] = { + CutsceneHandler_DoNothing, // CS_STATE_IDLE + CutsceneHandler_StartManual, // CS_STATE_START + CutsceneHandler_DoNothing, // CS_STATE_RUN + CutsceneHandler_StopManual, // CS_STATE_STOP + CutsceneHandler_DoNothing, // CS_STATE_RUN_UNSTOPPABLE }; -CutsceneStateHandler sCsStateHandlers2[] = { - func_80064720, func_800647C0, func_80068C3C, func_80068DC0, func_80068C3C, +CutsceneHandler sScriptedCutsceneHandlers[] = { + CutsceneHandler_DoNothing, // CS_STATE_IDLE + CutsceneHandler_StartScript, // CS_STATE_START + CutsceneHandler_RunScript, // CS_STATE_RUN + CutsceneHandler_StopScript, // CS_STATE_STOP + CutsceneHandler_RunScript, // CS_STATE_RUN_UNSTOPPABLE }; -u8 sTitleCsState = 0; +typedef enum { + /* 0 */ TITLE_DEMO_SPIRIT_TEMPLE, + /* 1 */ TITLE_DEMO_DEATH_MOUNTAIN_CRATER, + /* 2 */ TITLE_DEMO_GANONDORF_HORSE +} TitleDemoDestination; + +u8 sTitleDemoDestination = TITLE_DEMO_SPIRIT_TEMPLE; + +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* script; // cutscene script that should run +} EntranceCutscene; // size = 0x8 EntranceCutscene sEntranceCutsceneTable[] = { { ENTR_HYRULE_FIELD_3, 2, EVENTCHKINF_A0, gHyruleFieldIntroCs }, @@ -89,22 +110,25 @@ EntranceCutscene sEntranceCutsceneTable[] = { { ENTR_KOKIRI_FOREST_12, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutCs }, }; -// Unused, seems to be an early list of dungeon entrance cutscene locations -void* D_8011E304[] = { +void* sUnusedEntranceCsList[] = { gDekuTreeIntroCs, gJabuJabuIntroCs, gDcOpeningCs, gMinuetCs, gIceCavernSerenadeCs, gTowerBarrierCs, }; -u16 D_8015FCC0; -u16 D_8015FCC2; -u16 D_8015FCC4; -s16 sReturnToCamId; -u8 D_8015FCC8; -s16 sQuakeIndex; -u16 D_8015FCCC; // only written to, never read -char D_8015FCD0[20]; // unreferenced -u8 D_8015FCE4; // only written to, never read +// Stores the frame the relevant cam data was last applied on +u16 gCamAtSplinePointsAppliedFrame; +u16 gCamEyePointAppliedFrame; +u16 gCamAtPointAppliedFrame; -void func_80068ECC(PlayState* play, CutsceneContext* csCtx); +// Cam ID to return to when a scripted cutscene is finished +s16 sReturnToCamId; + +// Setting this to false will skip applying changes to the camera from the current cutscene script. +// It is set to true in most normal situations, only changed to false for debugging purposes. +u8 gUseCutsceneCam; + +s16 sQuakeIndex; + +void Cutscene_SetupScripted(PlayState* play, CutsceneContext* csCtx); void Cutscene_DrawDebugInfo(PlayState* play, Gfx** dlist, CutsceneContext* csCtx) { GfxPrint printer; @@ -117,7 +141,7 @@ void Cutscene_DrawDebugInfo(PlayState* play, Gfx** dlist, CutsceneContext* csCtx GfxPrint_SetColor(&printer, 255, 255, 55, 32); GfxPrint_Printf(&printer, "%s", "FLAME "); GfxPrint_SetColor(&printer, 255, 255, 255, 32); - GfxPrint_Printf(&printer, "%06d", csCtx->frames); + GfxPrint_Printf(&printer, "%06d", csCtx->curFrame); GfxPrint_SetColor(&printer, 50, 255, 255, 60); GfxPrint_SetPos(&printer, 4, 26); GfxPrint_Printf(&printer, "%s", "SKIP=(START) or (Cursole Right)"); @@ -126,40 +150,40 @@ void Cutscene_DrawDebugInfo(PlayState* play, Gfx** dlist, CutsceneContext* csCtx GfxPrint_Destroy(&printer); } -void func_8006450C(PlayState* play, CutsceneContext* csCtx) { +void Cutscene_InitContext(PlayState* play, CutsceneContext* csCtx) { csCtx->state = CS_STATE_IDLE; - csCtx->unk_0C = 0.0f; + csCtx->timer = 0.0f; } -void func_80064520(PlayState* play, CutsceneContext* csCtx) { - csCtx->state = CS_STATE_SKIPPABLE_INIT; - csCtx->linkAction = NULL; +void Cutscene_StartManual(PlayState* play, CutsceneContext* csCtx) { + csCtx->state = CS_STATE_START; + csCtx->playerCue = NULL; } -void func_80064534(PlayState* play, CutsceneContext* csCtx) { - if (csCtx->state != CS_STATE_UNSKIPPABLE_EXEC) { - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; +void Cutscene_StopManual(PlayState* play, CutsceneContext* csCtx) { + if (csCtx->state != CS_STATE_RUN_UNSTOPPABLE) { + csCtx->state = CS_STATE_STOP; } } -void func_80064558(PlayState* play, CutsceneContext* csCtx) { +void Cutscene_UpdateManual(PlayState* play, CutsceneContext* csCtx) { if (gSaveContext.cutsceneIndex < 0xFFF0) { - sCsStateHandlers1[csCtx->state](play, csCtx); + sManualCutsceneHandlers[csCtx->state](play, csCtx); } } -void func_800645A0(PlayState* play, CutsceneContext* csCtx) { +void Cutscene_UpdateScripted(PlayState* play, CutsceneContext* csCtx) { Input* input = &play->state.input[0]; if (CHECK_BTN_ALL(input->press.button, BTN_DLEFT) && (csCtx->state == CS_STATE_IDLE) && IS_CUTSCENE_LAYER) { - D_8015FCC8 = 0; + gUseCutsceneCam = false; gSaveContext.cutsceneIndex = 0xFFFD; gSaveContext.cutsceneTrigger = 1; } if (CHECK_BTN_ALL(input->press.button, BTN_DUP) && (csCtx->state == CS_STATE_IDLE) && IS_CUTSCENE_LAYER && !gDbgCamEnabled) { - D_8015FCC8 = 1; + gUseCutsceneCam = true; gSaveContext.cutsceneIndex = 0xFFFD; gSaveContext.cutsceneTrigger = 1; } @@ -175,85 +199,93 @@ void func_800645A0(PlayState* play, CutsceneContext* csCtx) { } if (gSaveContext.cutsceneIndex >= 0xFFF0) { - func_80068ECC(play, csCtx); - sCsStateHandlers2[csCtx->state](play, csCtx); + Cutscene_SetupScripted(play, csCtx); + sScriptedCutsceneHandlers[csCtx->state](play, csCtx); } } -void func_80064720(PlayState* play, CutsceneContext* csCtx) { +void CutsceneHandler_DoNothing(PlayState* play, CutsceneContext* csCtx) { } -u32 func_8006472C(PlayState* play, CutsceneContext* csCtx, f32 target) { - return Math_StepToF(&csCtx->unk_0C, target, 0.1f); +u32 Cutscene_StepTimer(PlayState* play, CutsceneContext* csCtx, f32 target) { + return Math_StepToF(&csCtx->timer, target, 0.1f); } -void func_80064760(PlayState* play, CutsceneContext* csCtx) { +void CutsceneHandler_StartManual(PlayState* play, CutsceneContext* csCtx) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); Letterbox_SetSizeTarget(32); - if (func_8006472C(play, csCtx, 1.0f)) { + if (Cutscene_StepTimer(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(1); - csCtx->state++; + csCtx->state++; // CS_STATE_RUN } } -void func_800647C0(PlayState* play, CutsceneContext* csCtx) { - func_80068C3C(play, csCtx); +void CutsceneHandler_StartScript(PlayState* play, CutsceneContext* csCtx) { + CutsceneHandler_RunScript(play, csCtx); Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); Letterbox_SetSizeTarget(32); - if (func_8006472C(play, csCtx, 1.0f)) { + if (Cutscene_StepTimer(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(1); - csCtx->state++; + csCtx->state++; // CS_STATE_RUN } } -// Command 3: Misc. Actions -void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { +void CutsceneCmd_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdMisc* cmd) { Player* player = GET_PLAYER(play); - f32 temp; - u8 sp3F = 0; + f32 lerp; + u8 isFirstFrame = false; - if ((csCtx->frames < cmd->startFrame) || ((csCtx->frames >= cmd->endFrame) && (cmd->endFrame != cmd->startFrame))) { + if (!((csCtx->curFrame >= cmd->startFrame) && + ((csCtx->curFrame < cmd->endFrame) || (cmd->endFrame == cmd->startFrame)))) { return; } - temp = Environment_LerpWeight(cmd->endFrame - 1, cmd->startFrame, csCtx->frames); + lerp = Environment_LerpWeight(cmd->endFrame - 1, cmd->startFrame, csCtx->curFrame); - if (csCtx->frames == cmd->startFrame) { - sp3F = 1; + if (csCtx->curFrame == cmd->startFrame) { + isFirstFrame = true; } - switch (cmd->base) { - case 1: - if (sp3F != 0) { + switch (cmd->type) { + case CS_MISC_RAIN: + if (isFirstFrame) { Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_4, 0x3F); Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 1); play->envCtx.precipitation[PRECIP_RAIN_MAX] = 20; } break; - case 2: - if (sp3F != 0) { + + case CS_MISC_LIGHTNING: + if (isFirstFrame) { Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_LIGHTNING, CHANNEL_IO_PORT_0, 0); Environment_AddLightningBolts(play, 3); gLightningStrike.state = LIGHTNING_STRIKE_START; } break; - case 3: - if (sp3F != 0) { - Flags_SetEnv(play, 0); + + case CS_MISC_SET_CSFLAG_0: + if (isFirstFrame) { + CutsceneFlags_Set(play, 0); + + // Because this check uses an entrance index, the Door of Time will only open + // after entering Temple of Time from the front entrance. + // This is not an issue in the context of normal gameplay. if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) { - Flags_SetEnv(play, 2); + CutsceneFlags_Set(play, 2); } } break; - case 6: + + case CS_MISC_LIFT_FOG: if (play->envCtx.adjZFar < ENV_ZFAR_MAX) { play->envCtx.adjZFar += 35; } break; - case 7: - if (sp3F != 0) { + + case CS_MISC_CLOUDY_SKY: + if (isFirstFrame) { play->envCtx.changeSkyboxState = CHANGE_SKYBOX_REQUESTED; play->envCtx.skyboxConfig = 1; play->envCtx.changeSkyboxNextConfig = 0; @@ -264,107 +296,131 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { play->envCtx.changeLightTimer = play->envCtx.changeDuration = 60; } break; - case 8: - if (play->roomCtx.unk_74[0] < 0x80) { + + case CS_MISC_FADE_KOKIRI_GRASS_ENV_ALPHA: + if (play->roomCtx.unk_74[0] <= 127) { play->roomCtx.unk_74[0] += 4; } break; - case 9: + + case CS_MISC_SNOW: play->envCtx.precipitation[PRECIP_SNOW_MAX] = 16; break; - case 10: - Flags_SetEnv(play, 1); + + case CS_MISC_SET_CSFLAG_1: + CutsceneFlags_Set(play, 1); break; - case 11: - if (play->roomCtx.unk_74[0] < 0x672) { - play->roomCtx.unk_74[0] += 0x14; + + case CS_MISC_DEKU_TREE_DEATH: + if (play->roomCtx.unk_74[0] < 1650) { + play->roomCtx.unk_74[0] += 20; } - if (csCtx->frames == 0x30F) { + + if (csCtx->curFrame == 783) { func_80078884(NA_SE_EV_DEKU_DEATH); - } else if (csCtx->frames == 0x2CD) { + } else if (csCtx->curFrame == 717) { play->roomCtx.unk_74[0] = 0; } break; - case 12: - if (sp3F != 0) { - if (csCtx->state != CS_STATE_UNSKIPPABLE_EXEC) { - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; + + case CS_MISC_STOP_CUTSCENE: + if (isFirstFrame) { + if (csCtx->state != CS_STATE_RUN_UNSTOPPABLE) { + csCtx->state = CS_STATE_STOP; } } break; - case 13: + + case CS_MISC_TRIFORCE_FLASH: if (play->roomCtx.unk_74[1] == 0) { func_80078884(NA_SE_EV_TRIFORCE_FLASH); } - if (play->roomCtx.unk_74[1] < 0xFF) { + + if (play->roomCtx.unk_74[1] < 255) { play->roomCtx.unk_74[1] += 5; } break; - case 14: - if (sp3F != 0) { + + case CS_MISC_SET_LOCKED_VIEWPOINT: + if (isFirstFrame) { Play_SetViewpoint(play, VIEWPOINT_LOCKED); } break; - case 15: - if (sp3F != 0) { + + case CS_MISC_SHOW_TITLE_CARD: + if (isFirstFrame) { TitleCard_InitPlaceName(play, &play->actorCtx.titleCtx, player->giObjectSegment, 160, 120, 144, 24, 20); } break; - case 16: - if (sp3F != 0) { + + case CS_MISC_QUAKE_START: + if (isFirstFrame) { sQuakeIndex = Quake_Request(GET_ACTIVE_CAM(play), QUAKE_TYPE_6); Quake_SetSpeed(sQuakeIndex, 0x7FFF); Quake_SetPerturbations(sQuakeIndex, 4, 0, 1000, 0); Quake_SetDuration(sQuakeIndex, 800); } break; - case 17: - if (sp3F != 0) { + + case CS_MISC_QUAKE_STOP: + if (isFirstFrame) { Quake_RemoveRequest(sQuakeIndex); } break; - case 18: + + case CS_MISC_STOP_STORM_AND_ADVANCE_TO_DAY: play->envCtx.precipitation[PRECIP_RAIN_MAX] = 0; play->envCtx.stormRequest = STORM_REQUEST_STOP; + if (gSaveContext.dayTime < CLOCK_TIME(7, 0)) { gSaveContext.dayTime += 30; } + if (play->envCtx.precipitation[PRECIP_RAIN_CUR] == 0) { gWeatherMode = WEATHER_MODE_CLEAR; Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 0); } break; - case 19: + + case CS_MISC_SET_FLAG_FAST_WINDMILL: SET_EVENTCHKINF(EVENTCHKINF_65); break; - case 20: + + case CS_MISC_SET_FLAG_WELL_DRAINED: SET_EVENTCHKINF(EVENTCHKINF_67); break; - case 21: + + case CS_MISC_SET_FLAG_LAKE_HYLIA_RESTORED: SET_EVENTCHKINF(EVENTCHKINF_69); break; - case 22: - D_801614B0.r = 255; - D_801614B0.g = 255; - D_801614B0.b = 255; - D_801614B0.a = 255; + + case CS_MISC_VISMONO_BLACK_AND_WHITE: + gVisMonoColor.r = 255; + gVisMonoColor.g = 255; + gVisMonoColor.b = 255; + gVisMonoColor.a = 255; break; - case 23: - D_801614B0.r = 255; - D_801614B0.g = 180; - D_801614B0.b = 100; - D_801614B0.a = 255.0f * temp; + + case CS_MISC_VISMONO_SEPIA: + gVisMonoColor.r = 255; + gVisMonoColor.g = 180; + gVisMonoColor.b = 100; + gVisMonoColor.a = 255.0f * lerp; break; - case 24: + + case CS_MISC_HIDE_ROOM: play->roomCtx.curRoom.segment = NULL; break; - case 25: + + case CS_MISC_TIME_ADVANCE_TO_NIGHT: gSaveContext.dayTime += 30; + if ((gSaveContext.dayTime) >= CLOCK_TIME(19, 0)) { gSaveContext.dayTime = CLOCK_TIME(19, 0) - 1; } break; - case 26: + + case CS_MISC_SET_TIME_BASED_LIGHT_SETTING: if ((gSaveContext.dayTime < CLOCK_TIME(4, 30)) || (gSaveContext.dayTime >= CLOCK_TIME(6, 30))) { if ((gSaveContext.dayTime >= CLOCK_TIME(6, 30)) && (gSaveContext.dayTime < CLOCK_TIME(16, 0))) { play->envCtx.lightSettingOverride = 1; @@ -376,7 +432,8 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { } } break; - case 27: + + case CS_MISC_RED_PULSATING_LIGHTS: if (play->state.frames & 8) { if (play->envCtx.adjAmbientColor[0] < 40) { play->envCtx.adjAmbientColor[0] += 2; @@ -391,176 +448,190 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { } } break; - case 28: - play->unk_11DE9 = true; + + case CS_MISC_HALT_ALL_ACTORS: + play->haltAllActors = true; break; - case 29: - play->unk_11DE9 = false; + + case CS_MISC_RESUME_ALL_ACTORS: + play->haltAllActors = false; break; - case 30: - Flags_SetEnv(play, 3); + + case CS_MISC_SET_CSFLAG_3: + CutsceneFlags_Set(play, 3); break; - case 31: - Flags_SetEnv(play, 4); + + case CS_MISC_SET_CSFLAG_4: + CutsceneFlags_Set(play, 4); break; - case 32: - if (sp3F != 0) { + + case CS_MISC_SANDSTORM_FILL: + if (isFirstFrame) { play->envCtx.sandstormState = SANDSTORM_FILL; } + func_800788CC(NA_SE_EV_SAND_STORM - SFX_FLAG); break; - case 33: + + case CS_MISC_SUNSSONG_START: gSaveContext.sunsSongState = SUNSSONG_START; break; - case 34: + + case CS_MISC_FREEZE_TIME: if (IS_DAY) { gSaveContext.dayTime -= gTimeSpeed; } else { + // doubled to compensate for time moving twice as fast at night gSaveContext.dayTime -= gTimeSpeed * 2; } break; - case 35: - AudioOcarina_PlayLongScarecrowAfterCredits(); - csCtx->frames = cmd->startFrame - 1; + + case CS_MISC_LONG_SCARECROW_SONG: + AudioOcarina_PlayLongScarecrowSong(); + csCtx->curFrame = cmd->startFrame - 1; // the cutscene runs forever break; } } -// Command 4: Set Environment Lighting -void Cutscene_Command_SetLighting(PlayState* play, CutsceneContext* csCtx, CsCmdEnvLighting* cmd) { - if (csCtx->frames == cmd->startFrame) { - play->envCtx.lightSettingOverride = cmd->setting - 1; +void CutsceneCmd_SetLightSetting(PlayState* play, CutsceneContext* csCtx, CsCmdLightSetting* cmd) { + if (csCtx->curFrame == cmd->startFrame) { + play->envCtx.lightSettingOverride = cmd->settingPlusOne - 1; play->envCtx.lightBlend = 1.0f; } } -// Command 0x56: Play Background Music -void Cutscene_Command_PlayBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) { - if (csCtx->frames == cmd->startFrame) { - Audio_PlaySequenceInCutscene(cmd->sequence - 1); +void CutsceneCmd_StartSequence(PlayState* play, CutsceneContext* csCtx, CsCmdStartSeq* cmd) { + if (csCtx->curFrame == cmd->startFrame) { + Audio_PlaySequenceInCutscene(cmd->seqIdPlusOne - 1); } } -// Command 0x57: Stop Background Music -void Cutscene_Command_StopBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicChange* cmd) { - if (csCtx->frames == cmd->startFrame) { - Audio_StopSequenceInCutscene(cmd->sequence - 1); +void CutsceneCmd_StopSequence(PlayState* play, CutsceneContext* csCtx, CsCmdStopSeq* cmd) { + if (csCtx->curFrame == cmd->startFrame) { + Audio_StopSequenceInCutscene(cmd->seqIdPlusOne - 1); } } -// Command 0x7C: Fade Background Music over duration -void Cutscene_Command_FadeBGM(PlayState* play, CutsceneContext* csCtx, CsCmdMusicFade* cmd) { - u8 fadeTimer; +void CutsceneCmd_FadeOutSequence(PlayState* play, CutsceneContext* csCtx, CsCmdFadeOutSeq* cmd) { + u8 fadeOutDuration; - if ((csCtx->frames == cmd->startFrame) && (csCtx->frames < cmd->endFrame)) { - fadeTimer = cmd->endFrame - cmd->startFrame; + if ((csCtx->curFrame == cmd->startFrame) && (csCtx->curFrame < cmd->endFrame)) { + fadeOutDuration = cmd->endFrame - cmd->startFrame; - if (cmd->type == 3) { - SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, fadeTimer); + if (cmd->seqPlayer == CS_FADE_OUT_FANFARE) { + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, fadeOutDuration); } else { - SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, fadeTimer); + SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, fadeOutDuration); } } } -// Command 9: ? -void Cutscene_Command_09(PlayState* play, CutsceneContext* csCtx, CsCmdUnknown9* cmd) { - if (csCtx->frames == cmd->startFrame) { - Rumble_Request(0.0f, cmd->unk_06, cmd->unk_07, cmd->unk_08); +void CutsceneCmd_RumbleController(PlayState* play, CutsceneContext* csCtx, CsCmdRumble* cmd) { + if (csCtx->curFrame == cmd->startFrame) { + Rumble_Request(0.0f, cmd->sourceStrength, cmd->duration, cmd->decreaseRate); } } -// Command 0x8C: Set Time of Day & Environment Time -void func_80065134(PlayState* play, CutsceneContext* csCtx, CsCmdDayTime* cmd) { - s16 temp1; - s16 temp2; +void CutsceneCmd_SetTime(PlayState* play, CutsceneContext* csCtx, CsCmdTime* cmd) { + s16 hours; + s16 minutes; - if (csCtx->frames == cmd->startFrame) { - temp1 = (cmd->hour * 60.0f) / (360.0f / 0x4000); - temp2 = (cmd->minute + 1) / (360.0f / 0x4000); + if (csCtx->curFrame == cmd->startFrame) { + hours = (cmd->hour * 60.0f) / (24.0f * 60.0f / 0x10000); + minutes = (cmd->minute + 1) / (24.0f * 60.0f / 0x10000); - gSaveContext.dayTime = temp1 + temp2; - gSaveContext.skyboxTime = temp1 + temp2; + gSaveContext.dayTime = hours + minutes; + gSaveContext.skyboxTime = hours + minutes; } } -// Command 0x3E8: Code Execution (& Terminates Cutscene?) -void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { +void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDestination* cmd) { Player* player = GET_PLAYER(play); - s32 temp = 0; + s32 titleDemoSkipped = false; if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_END_CREDITS) && - (play->sceneId != SCENE_HYRULE_FIELD) && (csCtx->frames > 20) && + (play->sceneId != SCENE_HYRULE_FIELD) && (csCtx->curFrame > 20) && (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START)) && (gSaveContext.fileNum != 0xFEDC) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { Audio_PlaySfxGeneral(NA_SE_SY_PIECE_OF_HEART, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - temp = 1; + titleDemoSkipped = true; } - if ((csCtx->frames == cmd->startFrame) || (temp != 0) || - ((csCtx->frames > 20) && CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) && + if ((csCtx->curFrame == cmd->startFrame) || titleDemoSkipped || + ((csCtx->curFrame > 20) && CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) && (gSaveContext.fileNum != 0xFEDC))) { - csCtx->state = CS_STATE_UNSKIPPABLE_EXEC; + csCtx->state = CS_STATE_RUN_UNSTOPPABLE; Audio_SetCutsceneFlag(0); gSaveContext.cutsceneTransitionControl = 1; - osSyncPrintf("\n分岐先指定!!=[%d]番", cmd->base); // "Future fork designation=No. [%d]" + osSyncPrintf("\n分岐先指定!!=[%d]番", cmd->destination); // "Future fork designation=No. [%d]" - if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (csCtx->frames != cmd->startFrame)) { + // `forceRisingButtonAlphas` has a secondary purpose, which is to signal to the title screen actor + // that it should display immediately. This occurs when a title screen cutscene that is not the main + // hyrule field scene is skipped. + if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (csCtx->curFrame != cmd->startFrame)) { gSaveContext.forceRisingButtonAlphas = true; } gSaveContext.cutsceneIndex = 0; - switch (cmd->base) { - case 1: + switch (cmd->destination) { + case CS_DEST_CUTSCENE_MAP_GANON_HORSE: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 2: + + case CS_DEST_CUTSCENE_MAP_THREE_GODDESSES: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; - case 3: + + case CS_DEST_GERUDO_VALLEY_DIN_PART_1: play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; - case 4: + + case CS_DEST_DEATH_MOUNTAIN_TRAIL_NAYRU: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; - case 5: + + case CS_DEST_KOKIRI_FOREST_FARORE: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; - case 6: + + case CS_DEST_CUTSCENE_MAP_TRIFORCE_CREATION: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; - case 7: + + case CS_DEST_KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_INSTANT; break; - case 8: + + case CS_DEST_TEMPLE_OF_TIME_FROM_MASTER_SWORD: gSaveContext.fw.set = 0; gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0; + if (!GET_EVENTCHKINF(EVENTCHKINF_45)) { SET_EVENTCHKINF(EVENTCHKINF_45); play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; @@ -575,216 +646,252 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->linkAgeOnLoad = LINK_AGE_CHILD; } } + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; - case 9: + + case CS_DEST_GERUDO_VALLEY_DIN_PART_2: play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_BROWN; break; - case 10: + + case CS_DEST_LINKS_HOUSE_INTRO: play->nextEntranceIndex = ENTR_LINKS_HOUSE_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 11: + + case CS_DEST_KOKIRI_FOREST_INTRO: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 12: + + case CS_DEST_DEATH_MOUNTAIN_TRAIL_FROM_GORON_RUBY: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 13: + + case CS_DEST_ZORAS_FOUNTAIN_FROM_ZORAS_SAPPHIRE: play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 14: + + case CS_DEST_KOKIRI_FOREST_FROM_KOKIRI_EMERALD: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_11; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 15: + + case CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 16: + + case CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 17: + + case CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 18: + + case CS_DEST_TEMPLE_OF_TIME_AFTER_LIGHT_MEDALLION: SET_EVENTCHKINF(EVENTCHKINF_4F); play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 19: + + case CS_DEST_DEATH_MOUNTAIN_TRAIL: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; gSaveContext.cutsceneIndex = 0x8000; break; - case 21: + + case CS_DEST_LAKE_HYLIA_WATER_RESTORED: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 22: + + case CS_DEST_DESERT_COLOSSUS_REQUIEM: Item_Give(play, ITEM_SONG_REQUIEM); play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 23: + + case CS_DEST_CUTSCENE_MAP_GANONDORF_DEFEATED_CREDITS: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF8; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 24: + + case CS_DEST_JABU_JABU: play->nextEntranceIndex = ENTR_JABU_JABU_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 25: + + case CS_DEST_CHAMBER_OF_SAGES_LIGHT_MEDALLION: play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 26: + + case CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 27: + + case CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 28: + + case CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 29: + + case CS_DEST_CHAMBER_OF_SAGES_FOREST_MEDALLION: play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.chamberCutsceneNum = 0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 30: + + case CS_DEST_CHAMBER_OF_SAGES_FIRE_MEDALLION: play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; Item_Give(play, ITEM_MEDALLION_FIRE); gSaveContext.chamberCutsceneNum = 1; break; - case 31: + + case CS_DEST_CHAMBER_OF_SAGES_WATER_MEDALLION: play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.chamberCutsceneNum = 2; break; - case 32: + + case CS_DEST_HYRULE_FIELD_FLASHBACK: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionType = TRANS_TYPE_INSTANT; break; - case 33: + + case CS_DEST_HYRULE_FIELD_FROM_ZELDA_ESCAPE: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 34: + + case CS_DEST_CUTSCENE_MAP_GANONDORF_FROM_MASTER_SWORD: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 35: + + case CS_DEST_HYRULE_FIELD_INTRO_DREAM: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 38: + + case CS_DEST_CUTSCENE_MAP_SHEIKAH_LEGEND: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 39: + + case CS_DEST_TEMPLE_OF_TIME_ZELDA_REVEAL: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF9; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 40: + + case CS_DEST_TEMPLE_OF_TIME_GET_LIGHT_ARROWS: play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFFA; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 41: + + case CS_DEST_LAKE_HYLIA_FROM_LAKE_RESTORED: play->nextEntranceIndex = ENTR_LAKE_HYLIA_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 42: + + case CS_DEST_KAKARIKO_VILLAGE_DRAIN_WELL: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 43: + + case CS_DEST_WINDMILL_FROM_WELL_DRAINED: play->nextEntranceIndex = ENTR_WINDMILL_AND_DAMPES_GRAVE_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 44: + + case CS_DEST_TEMPLE_OF_TIME_FROM_ALL_STONES_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT; break; - case 46: + + case CS_DEST_TEMPLE_OF_TIME_AFTER_LIGHT_MEDALLION_ALT: SET_EVENTCHKINF(EVENTCHKINF_4F); play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 47: + + case CS_DEST_KAKARIKO_VILLAGE_NOCTURNE_PART_2: Item_Give(play, ITEM_SONG_NOCTURNE); SET_EVENTCHKINF(EVENTCHKINF_54); play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; @@ -792,40 +899,47 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.cutsceneIndex = 0xFFF1; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 48: + + case CS_DEST_DESERT_COLOSSUS_FROM_REQUIEM: play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_SANDSTORM_END; gSaveContext.nextTransitionType = TRANS_TYPE_SANDSTORM_END; break; - case 49: + + case CS_DEST_TEMPLE_OF_TIME_FROM_LIGHT_ARROWS: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; - case 50: + + case CS_DEST_KAKARIKO_VILLAGE_FROM_NOCTURNE: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_13; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT; break; - case 51: + + case CS_DEST_HYRULE_FIELD_FROM_ZELDAS_COURTYARD: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; gSaveContext.cutsceneIndex = 0xFFF8; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_WHITE, TCS_SLOW); break; - case 52: + + case CS_DEST_TEMPLE_OF_TIME_SONG_OF_TIME: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; gSaveContext.cutsceneIndex = 0xFFF7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_INSTANT; break; - case 53: + + case CS_DEST_HYRULE_FIELD_FROM_SONG_OF_TIME: play->nextEntranceIndex = ENTR_HYRULE_FIELD_16; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 54: + + case CS_DEST_GERUDO_VALLEY_CREDITS: gSaveContext.gameMode = GAMEMODE_END_CREDITS; Audio_SetSfxBanksMute(0x6F); play->linkAgeOnLoad = LINK_AGE_CHILD; @@ -834,103 +948,120 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 55: + + case CS_DEST_GERUDO_FORTRESS_CREDITS: play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_0; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 56: + + case CS_DEST_KAKARIKO_VILLAGE_CREDITS: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 57: + + case CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_1: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; gSaveContext.cutsceneIndex = 0xFFF3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 58: + + case CS_DEST_GORON_CITY_CREDITS: play->nextEntranceIndex = ENTR_GORON_CITY_0; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 59: + + case CS_DEST_LAKE_HYLIA_CREDITS: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 60: + + case CS_DEST_ZORAS_FOUNTAIN_CREDITS: play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 61: + + case CS_DEST_ZORAS_DOMAIN_CREDITS: play->nextEntranceIndex = ENTR_ZORAS_DOMAIN_0; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 62: + + case CS_DEST_KOKIRI_FOREST_CREDITS_PART_1: play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF6; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 63: + + case CS_DEST_KOKIRI_FOREST_CREDITS_PART_2: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 64: + + case CS_DEST_HYRULE_FIELD_CREDITS: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; gSaveContext.cutsceneIndex = 0xFFF5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 65: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_1_ALT: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 66: + + case CS_DEST_KAKARIKO_VILLAGE_FROM_TRAIL_OWL: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_14; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 67: + + case CS_DEST_HYRULE_FIELD_FROM_LAKE_HYLIA_OWL: play->nextEntranceIndex = ENTR_HYRULE_FIELD_9; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 68: + + case CS_DEST_CUTSCENE_MAP_DEKU_SPROUT_PART_2: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 69: + + case CS_DEST_KOKIRI_FOREST_DEKU_SPROUT_PART_3: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_12; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 70: + + case CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_2: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 71: + + case CS_DEST_TEMPLE_OF_TIME_CREDITS: gSaveContext.equips.equipment |= EQUIP_VALUE_TUNIC_KOKIRI << (EQUIP_TYPE_TUNIC * 4); Player_SetEquipmentData(play, player); gSaveContext.equips.equipment |= EQUIP_VALUE_BOOTS_KOKIRI << (EQUIP_TYPE_BOOTS * 4); @@ -941,79 +1072,94 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.cutsceneIndex = 0xFFF1; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 72: + + case CS_DEST_ZELDAS_COURTYARD_CREDITS: play->nextEntranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 73: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_1: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 74: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_2: play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; - case 75: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_3: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 76: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_4: play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 77: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_5: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 78: + + case CS_DEST_LON_LON_RANCH_CREDITS_PART_6: play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF7; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - case 85: - case 86: - case 87: - case 88: - case 89: - case 90: - case 91: - case 92: - case 93: + + case CS_DEST_LON_LON_RANCH_1: + case CS_DEST_LON_LON_RANCH_2: + case CS_DEST_LON_LON_RANCH_3: + case CS_DEST_LON_LON_RANCH_4: + case CS_DEST_LON_LON_RANCH_5: + case CS_DEST_LON_LON_RANCH_6: + case CS_DEST_LON_LON_RANCH_7: + case CS_DEST_LON_LON_RANCH_8: + case CS_DEST_LON_LON_RANCH_9: + case CS_DEST_LON_LON_RANCH_10: + case CS_DEST_LON_LON_RANCH_11: + case CS_DEST_LON_LON_RANCH_12: + case CS_DEST_LON_LON_RANCH_13: + case CS_DEST_LON_LON_RANCH_14: + case CS_DEST_LON_LON_RANCH_15: play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 94: + + case CS_DEST_LON_LON_RANCH_FROM_EPONAS_SONG: play->nextEntranceIndex = ENTR_LON_LON_RANCH_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 95: + + case CS_DEST_STONES_RESTORED_CONDITIONAL: + // At one point in development, Forest, Fire and Water temples blocked the ability to return to child. + // Completing each dungeon would "restore" their respective stone, with the Door of Time opening after + // all 3 are restored. This cutscene destination sends the player to the correct blue warp destination, + // unless all 3 dungeons have been cleared. In that case, the destination is the Temple of Time which + // plays a cutscene where the door opens. if (GET_EVENTCHKINF(EVENTCHKINF_48) && GET_EVENTCHKINF(EVENTCHKINF_49) && GET_EVENTCHKINF(EVENTCHKINF_4A)) { play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; @@ -1027,11 +1173,13 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; + case 9: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; + case 10: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1041,7 +1189,8 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB } } break; - case 96: + + case CS_DEST_DESERT_COLOSSUS_FROM_CHAMBER_OF_SAGES: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) { play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1055,7 +1204,8 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; - case 97: + + case CS_DEST_GRAVEYARD_FROM_CHAMBER_OF_SAGES: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1068,133 +1218,154 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; - case 98: + + case CS_DEST_DEATH_MOUNTAIN_CRATER_FROM_CHAMBER_OF_SAGES: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; - case 99: + + case CS_DEST_SACRED_FOREST_MEADOW_WARP_PAD: play->nextEntranceIndex = ENTR_SACRED_FOREST_MEADOW_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 100: + + case CS_DEST_KOKIRI_FOREST_FROM_CHAMBER_OF_SAGES: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF8; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; - case 101: + + case CS_DEST_DESERT_COLOSSUS_FROM_NABOORU_CAPTURE: play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_6; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_SANDSTORM_END; break; - case 102: + + case CS_DEST_TEMPLE_OF_TIME_FRONT_OF_PEDESTAL: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_6; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 103: + + case CS_DEST_HYRULE_FIELD_TITLE_SCREEN: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 104: - switch (sTitleCsState) { - case 0: + + case CS_DEST_TITLE_SCREEN_DEMO: + switch (sTitleDemoDestination) { + case TITLE_DEMO_SPIRIT_TEMPLE: play->nextEntranceIndex = ENTR_SPIRIT_TEMPLE_BOSS_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; play->transitionType = TRANS_TYPE_FADE_BLACK; - sTitleCsState++; + sTitleDemoDestination++; break; - case 1: + + case TITLE_DEMO_DEATH_MOUNTAIN_CRATER: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionType = TRANS_TYPE_FADE_BLACK; - sTitleCsState++; + sTitleDemoDestination++; break; - case 2: + + case TITLE_DEMO_GANONDORF_HORSE: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; play->transitionType = TRANS_TYPE_FADE_BLACK; - sTitleCsState = 0; + sTitleDemoDestination = TITLE_DEMO_SPIRIT_TEMPLE; break; } break; - case 105: + + case CS_DEST_GRAVEYARD_SUNS_SONG_PART_2: play->nextEntranceIndex = ENTR_GRAVEYARD_0; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 106: + + case CS_DEST_ROYAL_FAMILYS_TOMB_SUNS_SONG_PART_3: play->nextEntranceIndex = ENTR_ROYAL_FAMILYS_TOMB_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 107: + + case CS_DEST_GANONS_CASTLE_DISPEL_FOREST_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 108: + + case CS_DEST_GANONS_CASTLE_DISPEL_WATER_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 109: + + case CS_DEST_GANONS_CASTLE_DISPEL_SHADOW_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 110: + + case CS_DEST_GANONS_CASTLE_DISPEL_FIRE_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 111: + + case CS_DEST_GANONS_CASTLE_DISPEL_LIGHT_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_6; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 112: + + case CS_DEST_GANONS_CASTLE_DISPEL_SPIRIT_BEAM: play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 113: + + case CS_DEST_GANONS_CASTLE_DISPEL_BARRIER_CONDITONAL: if (Flags_GetEventChkInf(EVENTCHKINF_BB) && Flags_GetEventChkInf(EVENTCHKINF_BC) && Flags_GetEventChkInf(EVENTCHKINF_BD) && Flags_GetEventChkInf(EVENTCHKINF_BE) && Flags_GetEventChkInf(EVENTCHKINF_BF) && Flags_GetEventChkInf(EVENTCHKINF_AD)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTowerBarrierCs); - play->csCtx.frames = 0; + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gTowerBarrierCs); + play->csCtx.curFrame = 0; gSaveContext.cutsceneTrigger = 1; gSaveContext.cutsceneIndex = 0xFFFF; - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; + csCtx->state = CS_STATE_STOP; } else { gSaveContext.cutsceneIndex = 0xFFFF; - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; + csCtx->state = CS_STATE_STOP; } break; - case 114: + + case CS_DEST_HYRULE_FIELD_FROM_FAIRY_OCARINA: play->nextEntranceIndex = ENTR_HYRULE_FIELD_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; - case 115: + + case CS_DEST_HYRULE_FIELD_FROM_IMPA_ESCORT: play->nextEntranceIndex = ENTR_HYRULE_FIELD_17; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 116: + + case CS_DEST_FROM_RAURU_FINAL_MESSAGE_CONDITIONAL: if (GET_EVENTCHKINF(EVENTCHKINF_C8)) { play->nextEntranceIndex = ENTR_GRAVEYARD_8; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1204,9 +1375,11 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; } + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; - case 117: + + case CS_DEST_HYRULE_FIELD_CREDITS_SKY: gSaveContext.gameMode = GAMEMODE_END_CREDITS; Audio_SetSfxBanksMute(0x6F); play->linkAgeOnLoad = LINK_AGE_ADULT; @@ -1215,13 +1388,15 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; - case 118: + + case CS_DEST_GANON_BATTLE_TOWER_COLLAPSE: gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = ENTR_GANON_BOSS_0; Play_TriggerVoidOut(play); gSaveContext.respawnFlag = -2; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; - case 119: + + case CS_DEST_ZELDAS_COURTYARD_RECEIVE_LETTER: gSaveContext.dayTime = CLOCK_TIME(12, 0); gSaveContext.skyboxTime = CLOCK_TIME(12, 0); play->nextEntranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_1; @@ -1232,684 +1407,787 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB } } -// Command 0x2D: Transition Effects -void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { - f32 temp; +void CutsceneCmd_Transition(PlayState* play, CutsceneContext* csCtx, CsCmdTransition* cmd) { + f32 lerp; - if ((csCtx->frames >= cmd->startFrame) && (csCtx->frames <= cmd->endFrame)) { + if ((csCtx->curFrame >= cmd->startFrame) && (csCtx->curFrame <= cmd->endFrame)) { play->envCtx.fillScreen = true; - temp = Environment_LerpWeight(cmd->endFrame, cmd->startFrame, csCtx->frames); + lerp = Environment_LerpWeight(cmd->endFrame, cmd->startFrame, csCtx->curFrame); - switch (cmd->base) { - case 1: - case 5: + switch (cmd->type) { + case CS_TRANS_GRAY_FILL_IN: + case CS_TRANS_GRAY_FILL_OUT: play->envCtx.screenFillColor[0] = 160; play->envCtx.screenFillColor[1] = 160; play->envCtx.screenFillColor[2] = 160; - if (cmd->base == 1) { - play->envCtx.screenFillColor[3] = 255.0f * temp; - if ((temp == 0.0f) && (gSaveContext.entranceIndex == ENTR_CHAMBER_OF_THE_SAGES_0)) { + + if (cmd->type == CS_TRANS_GRAY_FILL_IN) { + play->envCtx.screenFillColor[3] = 255.0f * lerp; + + if ((lerp == 0.0f) && (gSaveContext.entranceIndex == ENTR_CHAMBER_OF_THE_SAGES_0)) { Audio_PlaySfxGeneral(NA_SE_SY_WHITE_OUT_S, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } else if ((temp == 0.0f) && + } else if ((lerp == 0.0f) && ((gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) || (gSaveContext.entranceIndex == ENTR_HYRULE_CASTLE_0) || (gSaveContext.entranceIndex == ENTR_GREAT_FAIRYS_FOUNTAIN_SPELLS_0))) { Audio_PlaySfxGeneral(NA_SE_EV_WHITE_OUT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } else if ((temp == 0.0f) && (play->sceneId == SCENE_INSIDE_GANONS_CASTLE)) { + } else if ((lerp == 0.0f) && (play->sceneId == SCENE_INSIDE_GANONS_CASTLE)) { func_800788CC(NA_SE_EV_WHITE_OUT); } } else { - play->envCtx.screenFillColor[3] = (1.0f - temp) * 255.0f; + play->envCtx.screenFillColor[3] = (1.0f - lerp) * 255.0f; } break; - case 2: - case 6: + case CS_TRANS_BLUE_FILL_IN: + case CS_TRANS_BLUE_FILL_OUT: play->envCtx.screenFillColor[0] = 0; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[2] = 255; - if (cmd->base == 2) { - play->envCtx.screenFillColor[3] = 255.0f * temp; + + if (cmd->type == CS_TRANS_BLUE_FILL_IN) { + play->envCtx.screenFillColor[3] = 255.0f * lerp; } else { - play->envCtx.screenFillColor[3] = (1.0f - temp) * 255.0f; + play->envCtx.screenFillColor[3] = (1.0f - lerp) * 255.0f; } break; - case 3: - case 7: + case CS_TRANS_RED_FILL_OUT: + case CS_TRANS_RED_FILL_IN: play->envCtx.screenFillColor[0] = 255; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[2] = 0; - if (cmd->base == 3) { - play->envCtx.screenFillColor[3] = (1.0f - temp) * 255.0f; + + if (cmd->type == CS_TRANS_RED_FILL_OUT) { + play->envCtx.screenFillColor[3] = (1.0f - lerp) * 255.0f; } else { - play->envCtx.screenFillColor[3] = 255.0f * temp; + play->envCtx.screenFillColor[3] = 255.0f * lerp; } break; - case 4: - case 8: + case CS_TRANS_GREEN_FILL_OUT: + case CS_TRANS_GREEN_FILL_IN: play->envCtx.screenFillColor[0] = 0; play->envCtx.screenFillColor[1] = 255; play->envCtx.screenFillColor[2] = 0; - if (cmd->base == 4) { - play->envCtx.screenFillColor[3] = (1.0f - temp) * 255.0f; + + if (cmd->type == CS_TRANS_GREEN_FILL_OUT) { + play->envCtx.screenFillColor[3] = (1.0f - lerp) * 255.0f; } else { - play->envCtx.screenFillColor[3] = 255.0f * temp; + play->envCtx.screenFillColor[3] = 255.0f * lerp; } break; - case 9: + case CS_TRANS_TRIGGER_INSTANCE: gSaveContext.cutsceneTransitionControl = 1; break; - case 10: - case 11: + case CS_TRANS_BLACK_FILL_OUT: + case CS_TRANS_BLACK_FILL_IN: play->envCtx.screenFillColor[0] = 0; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[2] = 0; - if (cmd->base == 10) { - play->envCtx.screenFillColor[3] = (1.0f - temp) * 255.0f; + + if (cmd->type == CS_TRANS_BLACK_FILL_OUT) { + play->envCtx.screenFillColor[3] = (1.0f - lerp) * 255.0f; } else { - play->envCtx.screenFillColor[3] = 255.0f * temp; + play->envCtx.screenFillColor[3] = 255.0f * lerp; } break; - case 12: - gSaveContext.cutsceneTransitionControl = 255.0f - (155.0f * temp); + case CS_TRANS_BLACK_FILL_OUT_TO_HALF: + gSaveContext.cutsceneTransitionControl = 255.0f - (155.0f * lerp); break; - case 13: + case CS_TRANS_BLACK_FILL_IN_FROM_HALF: play->envCtx.screenFillColor[0] = 0; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[2] = 0; - play->envCtx.screenFillColor[3] = 255.0f - ((1.0f - temp) * 155.0f); + play->envCtx.screenFillColor[3] = 255.0f - ((1.0f - lerp) * 155.0f); break; } } } -// Command 0x1 & 0x5: Camera Eye Points -s32 Cutscene_Command_CameraEyePoints(PlayState* play, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) { - s32 shouldContinue = 1; - CsCmdBase* cmdBase = (CsCmdBase*)cmd; +s32 CutsceneCmd_UpdateCamEyeSpline(PlayState* play, CutsceneContext* csCtx, u8* script, u8 relativeToPlayer) { + s32 shouldContinue = true; + CsCmdCam* cmd = (CsCmdCam*)script; s32 size; - cmd += 8; - size = 8; + script += sizeof(CsCmdCam); + size = sizeof(CsCmdCam); - if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) && - ((csCtx->unk_18 < cmdBase->startFrame) || (csCtx->unk_18 >= 0xF000))) { - csCtx->unk_1B = 1; - csCtx->subCamEyePoints = (CutsceneCameraPoint*)cmd; - if (csCtx->unk_1A != 0) { - csCtx->unk_18 = cmdBase->startFrame; - if (D_8015FCC8 != 0) { + if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame < cmd->endFrame) && + ((cmd->startFrame > csCtx->camEyeSplinePointsAppliedFrame) || + (csCtx->camEyeSplinePointsAppliedFrame >= 0xF000))) { + csCtx->camEyeReady = true; + csCtx->camEyePoints = (CutsceneCameraPoint*)script; + + if (csCtx->camAtReady) { + csCtx->camEyeSplinePointsAppliedFrame = cmd->startFrame; + + if (gUseCutsceneCam) { Play_ChangeCameraSetting(play, csCtx->subCamId, CAM_SET_CS_0); Play_ChangeCameraStatus(play, sReturnToCamId, CAM_STAT_WAIT); Play_ChangeCameraStatus(play, csCtx->subCamId, CAM_STAT_ACTIVE); Camera_ResetAnim(Play_GetCamera(play, csCtx->subCamId)); - Camera_SetCSParams(Play_GetCamera(play, csCtx->subCamId), csCtx->subCamLookAtPoints, - csCtx->subCamEyePoints, GET_PLAYER(play), relativeToLink); + Camera_SetCSParams(Play_GetCamera(play, csCtx->subCamId), csCtx->camAtPoints, csCtx->camEyePoints, + GET_PLAYER(play), relativeToPlayer); } } } while (shouldContinue) { - if (((CutsceneCameraPoint*)cmd)->continueFlag == CS_CMD_STOP) { - shouldContinue = 0; + if (((CutsceneCameraPoint*)script)->continueFlag == CS_CAM_STOP) { + shouldContinue = false; } - cmd += 0x10; - size += 0x10; + + script += sizeof(CutsceneCameraPoint); + size += sizeof(CutsceneCameraPoint); } return size; } -// Command 0x2 & 0x6: Camera At Points -s32 Cutscene_Command_CameraLookAtPoints(PlayState* play, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) { - s32 shouldContinue = 1; - CsCmdBase* cmdBase = (CsCmdBase*)cmd; +s32 CutsceneCmd_UpdateCamAtSpline(PlayState* play, CutsceneContext* csCtx, u8* script, u8 relativeToPlayer) { + s32 shouldContinue = true; + CsCmdCam* cmd = (CsCmdCam*)script; s32 size; - cmd += 8; - size = 8; + script += sizeof(CsCmdCam); + size = sizeof(CsCmdCam); - if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) && - ((D_8015FCC0 < cmdBase->startFrame) || (D_8015FCC0 >= 0xF000))) { - csCtx->unk_1A = 1; - csCtx->subCamLookAtPoints = (CutsceneCameraPoint*)cmd; - if (csCtx->unk_1B != 0) { - D_8015FCC0 = cmdBase->startFrame; - if (D_8015FCC8 != 0) { + if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame < cmd->endFrame) && + ((cmd->startFrame > gCamAtSplinePointsAppliedFrame) || (gCamAtSplinePointsAppliedFrame >= 0xF000))) { + csCtx->camAtReady = true; + csCtx->camAtPoints = (CutsceneCameraPoint*)script; + + if (csCtx->camEyeReady) { + gCamAtSplinePointsAppliedFrame = cmd->startFrame; + + if (gUseCutsceneCam) { Play_ChangeCameraSetting(play, csCtx->subCamId, CAM_SET_CS_0); Play_ChangeCameraStatus(play, sReturnToCamId, CAM_STAT_WAIT); Play_ChangeCameraStatus(play, csCtx->subCamId, CAM_STAT_ACTIVE); Camera_ResetAnim(Play_GetCamera(play, csCtx->subCamId)); - Camera_SetCSParams(Play_GetCamera(play, csCtx->subCamId), csCtx->subCamLookAtPoints, - csCtx->subCamEyePoints, GET_PLAYER(play), relativeToLink); + Camera_SetCSParams(Play_GetCamera(play, csCtx->subCamId), csCtx->camAtPoints, csCtx->camEyePoints, + GET_PLAYER(play), relativeToPlayer); } } } while (shouldContinue) { - if (((CutsceneCameraPoint*)cmd)->continueFlag == CS_CMD_STOP) { - shouldContinue = 0; + if (((CutsceneCameraPoint*)script)->continueFlag == CS_CAM_STOP) { + shouldContinue = false; } - cmd += 0x10; - size += 0x10; + + script += sizeof(CutsceneCameraPoint); + size += sizeof(CutsceneCameraPoint); } return size; } -// Command 0x7: ? (Related to camera positons) -s32 Cutscene_Command_07(PlayState* play, CutsceneContext* csCtx, u8* cmd, u8 unused) { - CsCmdBase* cmdBase = (CsCmdBase*)cmd; +s32 CutsceneCmd_SetCamEye(PlayState* play, CutsceneContext* csCtx, u8* script, u8 unused) { + CsCmdCam* cmd = (CsCmdCam*)script; s32 size; - Vec3f sp3C; - Vec3f sp30; + Vec3f at; + Vec3f eye; Camera* subCam; - f32 sp28; + f32 roll; - cmd += 8; - size = 8; + script += sizeof(CsCmdCam); + size = sizeof(CsCmdCam); - if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) && - ((D_8015FCC2 < cmdBase->startFrame) || (D_8015FCC2 >= 0xF000))) { - csCtx->unk_1B = 1; - csCtx->subCamEyePoints = (CutsceneCameraPoint*)cmd; - if (csCtx->unk_1A != 0) { - D_8015FCC2 = cmdBase->startFrame; - if (D_8015FCC8 != 0) { + if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame < cmd->endFrame) && + ((cmd->startFrame > gCamEyePointAppliedFrame) || (gCamEyePointAppliedFrame >= 0xF000))) { + csCtx->camEyeReady = true; + csCtx->camEyePoints = (CutsceneCameraPoint*)script; + + if (csCtx->camAtReady) { + gCamEyePointAppliedFrame = cmd->startFrame; + + if (gUseCutsceneCam) { subCam = Play_GetCamera(play, csCtx->subCamId); subCam->player = NULL; + Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT); Play_ChangeCameraStatus(play, csCtx->subCamId, CAM_STAT_ACTIVE); Play_ChangeCameraSetting(play, csCtx->subCamId, CAM_SET_FREE0); - sp28 = csCtx->subCamLookAtPoints->cameraRoll * 1.40625f; - Camera_SetViewParam(subCam, CAM_VIEW_ROLL, &sp28); - sp3C.x = csCtx->subCamLookAtPoints->pos.x; - sp3C.y = csCtx->subCamLookAtPoints->pos.y; - sp3C.z = csCtx->subCamLookAtPoints->pos.z; - sp30.x = csCtx->subCamEyePoints->pos.x; - sp30.y = csCtx->subCamEyePoints->pos.y; - sp30.z = csCtx->subCamEyePoints->pos.z; - Play_SetCameraAtEye(play, csCtx->subCamId, &sp3C, &sp30); - Play_SetCameraFov(play, csCtx->subCamId, csCtx->subCamEyePoints->viewAngle); + + roll = csCtx->camAtPoints->cameraRoll * 1.40625f; + Camera_SetViewParam(subCam, CAM_VIEW_ROLL, &roll); + + at.x = csCtx->camAtPoints->pos.x; + at.y = csCtx->camAtPoints->pos.y; + at.z = csCtx->camAtPoints->pos.z; + + eye.x = csCtx->camEyePoints->pos.x; + eye.y = csCtx->camEyePoints->pos.y; + eye.z = csCtx->camEyePoints->pos.z; + + Play_SetCameraAtEye(play, csCtx->subCamId, &at, &eye); + Play_SetCameraFov(play, csCtx->subCamId, csCtx->camEyePoints->viewAngle); } } } - size += 0x10; + size += sizeof(CutsceneCameraPoint); return size; } -// Command 0x8: ? (Related to camera focus points) -s32 Cutscene_Command_08(PlayState* play, CutsceneContext* csCtx, u8* cmd, u8 unused) { - CsCmdBase* cmdBase = (CsCmdBase*)cmd; +s32 CutsceneCmd_SetCamAt(PlayState* play, CutsceneContext* csCtx, u8* script, u8 unused) { + CsCmdCam* cmd = (CsCmdCam*)script; s32 size; - Vec3f sp3C; - Vec3f sp30; + Vec3f at; + Vec3f eye; Camera* subCam; - f32 sp28; - cmd += 8; - size = 8; + script += sizeof(CsCmdCam); + size = sizeof(CsCmdCam); - if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) && - ((D_8015FCC4 < cmdBase->startFrame) || (D_8015FCC4 >= 0xF000))) { - csCtx->unk_1A = 1; - csCtx->subCamLookAtPoints = (CutsceneCameraPoint*)cmd; - if (csCtx->unk_1B != 0) { - D_8015FCC4 = cmdBase->startFrame; - if (D_8015FCC8 != 0) { + if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame < cmd->endFrame) && + ((cmd->startFrame > gCamAtPointAppliedFrame) || (gCamAtPointAppliedFrame >= 0xF000))) { + csCtx->camAtReady = true; + csCtx->camAtPoints = (CutsceneCameraPoint*)script; + + if (csCtx->camEyeReady) { + gCamAtPointAppliedFrame = cmd->startFrame; + + if (gUseCutsceneCam) { subCam = Play_GetCamera(play, csCtx->subCamId); subCam->player = NULL; + Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_WAIT); Play_ChangeCameraStatus(play, csCtx->subCamId, CAM_STAT_ACTIVE); Play_ChangeCameraSetting(play, csCtx->subCamId, CAM_SET_FREE0); - sp3C.x = csCtx->subCamLookAtPoints->pos.x; - sp3C.y = csCtx->subCamLookAtPoints->pos.y; - sp3C.z = csCtx->subCamLookAtPoints->pos.z; - sp30.x = csCtx->subCamEyePoints->pos.x; - sp30.y = csCtx->subCamEyePoints->pos.y; - sp30.z = csCtx->subCamEyePoints->pos.z; - Play_SetCameraAtEye(play, csCtx->subCamId, &sp3C, &sp30); - Play_SetCameraFov(play, csCtx->subCamId, csCtx->subCamEyePoints->viewAngle); + + at.x = csCtx->camAtPoints->pos.x; + at.y = csCtx->camAtPoints->pos.y; + at.z = csCtx->camAtPoints->pos.z; + + eye.x = csCtx->camEyePoints->pos.x; + eye.y = csCtx->camEyePoints->pos.y; + eye.z = csCtx->camEyePoints->pos.z; + + Play_SetCameraAtEye(play, csCtx->subCamId, &at, &eye); + Play_SetCameraFov(play, csCtx->subCamId, csCtx->camEyePoints->viewAngle); } } } - size += 0x10; + size += sizeof(CutsceneCameraPoint); return size; } -// Command 0x13: Textbox -void Cutscene_Command_Textbox(PlayState* play, CutsceneContext* csCtx, CsCmdTextbox* cmd) { +void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) { u8 dialogState; - s16 originalCsFrames; + s16 endFrame; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - if (cmd->type != 2) { - if (D_8011E1C0 != cmd->base) { - D_8011E1C0 = cmd->base; - if ((cmd->type == 3) && CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)) { - Message_StartTextbox(play, cmd->textId1, NULL); - } else if ((cmd->type == 4) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) { - Message_StartTextbox(play, cmd->textId1, NULL); + if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame <= cmd->endFrame)) { + if (cmd->type != CS_TEXT_OCARINA_ACTION) { + if (sCurTextId != cmd->textId) { + sCurTextId = cmd->textId; + + if ((cmd->type == CS_TEXT_GORON_RUBY) && CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)) { + Message_StartTextbox(play, cmd->altTextId1, NULL); + } else if ((cmd->type == CS_TEXT_ZORA_SAPPHIRE) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) { + Message_StartTextbox(play, cmd->altTextId1, NULL); } else { - Message_StartTextbox(play, cmd->base, NULL); + Message_StartTextbox(play, cmd->textId, NULL); } return; } } else { - if (D_8011E1C4 != cmd->base) { - D_8011E1C4 = cmd->base; - Message_StartOcarina(play, cmd->base); + if (sCurOcarinaAction != cmd->textId) { + sCurOcarinaAction = cmd->textId; + Message_StartOcarina(play, cmd->textId); return; } } - if (csCtx->frames >= cmd->endFrame) { - originalCsFrames = csCtx->frames; + if (csCtx->curFrame >= cmd->endFrame) { + endFrame = csCtx->curFrame; dialogState = Message_GetState(&play->msgCtx); if ((dialogState != TEXT_STATE_CLOSING) && (dialogState != TEXT_STATE_NONE) && (dialogState != TEXT_STATE_SONG_DEMO_DONE) && (dialogState != TEXT_STATE_8)) { - csCtx->frames--; + csCtx->curFrame--; if ((dialogState == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) { if (play->msgCtx.choiceIndex == 0) { - if (cmd->textId1 != 0xFFFF) { - Message_ContinueTextbox(play, cmd->textId1); + if (cmd->altTextId1 != CS_TEXT_ID_NONE) { + Message_ContinueTextbox(play, cmd->altTextId1); } else { - csCtx->frames++; + csCtx->curFrame++; } } else { - if (cmd->textId2 != 0xFFFF) { - Message_ContinueTextbox(play, cmd->textId2); + if (cmd->altTextId2 != CS_TEXT_ID_NONE) { + Message_ContinueTextbox(play, cmd->altTextId2); } else { - csCtx->frames++; + csCtx->curFrame++; } } } if (dialogState == TEXT_STATE_9) { - if (cmd->textId1 != 0xFFFF) { - Message_ContinueTextbox(play, cmd->textId1); + if (cmd->altTextId1 != CS_TEXT_ID_NONE) { + Message_ContinueTextbox(play, cmd->altTextId1); } else { - csCtx->frames++; + csCtx->curFrame++; } } if (dialogState == TEXT_STATE_EVENT) { if (Message_ShouldAdvance(play)) { - Message_StartOcarina(play, cmd->base); + Message_StartOcarina(play, cmd->textId); } } } - if (csCtx->frames == originalCsFrames) { + if (csCtx->curFrame == endFrame) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); - D_8011E1C0 = 0; - D_8011E1C4 = 0; + sCurTextId = 0; + sCurOcarinaAction = 0; } } } } -void Cutscene_ProcessCommands(PlayState* play, CutsceneContext* csCtx, u8* cutscenePtr) { +void Cutscene_ProcessScript(PlayState* play, CutsceneContext* csCtx, u8* script) { s16 i; s32 totalEntries; s32 cmdType; s32 cmdEntries; - CsCmdBase* cmd; - s32 cutsceneEndFrame; + void* cmd; + s32 csFrameCount; s16 j; - MemCpy(&totalEntries, cutscenePtr, 4); - cutscenePtr += 4; - MemCpy(&cutsceneEndFrame, cutscenePtr, 4); - cutscenePtr += 4; + MemCpy(&totalEntries, script, sizeof(totalEntries)); + script += sizeof(totalEntries); - if ((cutsceneEndFrame < csCtx->frames) && (csCtx->state != CS_STATE_UNSKIPPABLE_EXEC)) { - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; + MemCpy(&csFrameCount, script, sizeof(csFrameCount)); + script += sizeof(csFrameCount); + + if ((csCtx->curFrame > csFrameCount) && (csCtx->state != CS_STATE_RUN_UNSTOPPABLE)) { + csCtx->state = CS_STATE_STOP; return; } if (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_DRIGHT)) { - csCtx->state = CS_STATE_UNSKIPPABLE_INIT; + csCtx->state = CS_STATE_STOP; return; } for (i = 0; i < totalEntries; i++) { - MemCpy(&cmdType, cutscenePtr, 4); - cutscenePtr += 4; + MemCpy(&cmdType, script, sizeof(cmdType)); + script += sizeof(cmdType); - if (cmdType == -1) { + if (cmdType == CS_CAM_STOP) { return; } switch (cmdType) { case CS_CMD_MISC: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - func_80064824(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0x30; + CutsceneCmd_Misc(play, csCtx, (void*)script); + script += sizeof(CsCmdMisc); } break; - case CS_CMD_SET_LIGHTING: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_LIGHT_SETTING: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - Cutscene_Command_SetLighting(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0x30; + CutsceneCmd_SetLightSetting(play, csCtx, (void*)script); + script += sizeof(CsCmdLightSetting); } break; - case CS_CMD_PLAYBGM: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_START_SEQ: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - Cutscene_Command_PlayBGM(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0x30; + CutsceneCmd_StartSequence(play, csCtx, (void*)script); + script += sizeof(CsCmdStartSeq); } break; - case CS_CMD_STOPBGM: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_STOP_SEQ: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - Cutscene_Command_StopBGM(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0x30; + CutsceneCmd_StopSequence(play, csCtx, (void*)script); + script += sizeof(CsCmdStopSeq); } break; - case CS_CMD_FADEBGM: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_FADE_OUT_SEQ: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - Cutscene_Command_FadeBGM(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0x30; + CutsceneCmd_FadeOutSequence(play, csCtx, (void*)script); + script += sizeof(CsCmdFadeOutSeq); } break; - case CS_CMD_09: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_RUMBLE_CONTROLLER: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - Cutscene_Command_09(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0xC; + CutsceneCmd_RumbleController(play, csCtx, (void*)script); + script += sizeof(CsCmdRumble); } break; - case CS_CMD_SETTIME: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_TIME: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - func_80065134(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 0xC; + CutsceneCmd_SetTime(play, csCtx, (void*)script); + script += sizeof(CsCmdTime); } break; - case CS_CMD_SET_PLAYER_ACTION: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_PLAYER_CUE: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->linkAction = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->playerCue = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_1: - case 17: - case 18: - case 23: - case 34: - case 39: - case 46: - case 76: - case 85: - case 93: - case 105: - case 107: - case 110: - case 119: - case 123: - case 138: - case 139: - case 144: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_0_0: + case CS_CMD_ACTOR_CUE_0_1: + case CS_CMD_ACTOR_CUE_0_2: + case CS_CMD_ACTOR_CUE_0_3: + case CS_CMD_ACTOR_CUE_0_4: + case CS_CMD_ACTOR_CUE_0_5: + case CS_CMD_ACTOR_CUE_0_6: + case CS_CMD_ACTOR_CUE_0_7: + case CS_CMD_ACTOR_CUE_0_8: + case CS_CMD_ACTOR_CUE_0_9: + case CS_CMD_ACTOR_CUE_0_10: + case CS_CMD_ACTOR_CUE_0_11: + case CS_CMD_ACTOR_CUE_0_12: + case CS_CMD_ACTOR_CUE_0_13: + case CS_CMD_ACTOR_CUE_0_14: + case CS_CMD_ACTOR_CUE_0_15: + case CS_CMD_ACTOR_CUE_0_16: + case CS_CMD_ACTOR_CUE_0_17: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[0] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[0] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_2: - case 16: - case 24: - case 35: - case 40: - case 48: - case 64: - case 68: - case 70: - case 78: - case 80: - case 94: - case 116: - case 118: - case 120: - case 125: - case 131: - case 141: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_1_0: + case CS_CMD_ACTOR_CUE_1_1: + case CS_CMD_ACTOR_CUE_1_2: + case CS_CMD_ACTOR_CUE_1_3: + case CS_CMD_ACTOR_CUE_1_4: + case CS_CMD_ACTOR_CUE_1_5: + case CS_CMD_ACTOR_CUE_1_6: + case CS_CMD_ACTOR_CUE_1_7: + case CS_CMD_ACTOR_CUE_1_8: + case CS_CMD_ACTOR_CUE_1_9: + case CS_CMD_ACTOR_CUE_1_10: + case CS_CMD_ACTOR_CUE_1_11: + case CS_CMD_ACTOR_CUE_1_12: + case CS_CMD_ACTOR_CUE_1_13: + case CS_CMD_ACTOR_CUE_1_14: + case CS_CMD_ACTOR_CUE_1_15: + case CS_CMD_ACTOR_CUE_1_16: + case CS_CMD_ACTOR_CUE_1_17: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[1] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[1] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_3: - case 36: - case 41: - case 50: - case 67: - case 69: - case 72: - case 74: - case 81: - case 106: - case 117: - case 121: - case 126: - case 132: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_2_0: + case CS_CMD_ACTOR_CUE_2_1: + case CS_CMD_ACTOR_CUE_2_2: + case CS_CMD_ACTOR_CUE_2_3: + case CS_CMD_ACTOR_CUE_2_4: + case CS_CMD_ACTOR_CUE_2_5: + case CS_CMD_ACTOR_CUE_2_6: + case CS_CMD_ACTOR_CUE_2_7: + case CS_CMD_ACTOR_CUE_2_8: + case CS_CMD_ACTOR_CUE_2_9: + case CS_CMD_ACTOR_CUE_2_10: + case CS_CMD_ACTOR_CUE_2_11: + case CS_CMD_ACTOR_CUE_2_12: + case CS_CMD_ACTOR_CUE_2_13: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[2] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[2] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_4: - case 37: - case 42: - case 51: - case 53: - case 63: - case 65: - case 66: - case 75: - case 82: - case 108: - case 127: - case 133: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_3_0: + case CS_CMD_ACTOR_CUE_3_1: + case CS_CMD_ACTOR_CUE_3_2: + case CS_CMD_ACTOR_CUE_3_3: + case CS_CMD_ACTOR_CUE_3_4: + case CS_CMD_ACTOR_CUE_3_5: + case CS_CMD_ACTOR_CUE_3_6: + case CS_CMD_ACTOR_CUE_3_7: + case CS_CMD_ACTOR_CUE_3_8: + case CS_CMD_ACTOR_CUE_3_9: + case CS_CMD_ACTOR_CUE_3_10: + case CS_CMD_ACTOR_CUE_3_11: + case CS_CMD_ACTOR_CUE_3_12: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[3] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[3] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_5: - case 38: - case 43: - case 47: - case 54: - case 79: - case 83: - case 128: - case 135: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_4_0: + case CS_CMD_ACTOR_CUE_4_1: + case CS_CMD_ACTOR_CUE_4_2: + case CS_CMD_ACTOR_CUE_4_3: + case CS_CMD_ACTOR_CUE_4_4: + case CS_CMD_ACTOR_CUE_4_5: + case CS_CMD_ACTOR_CUE_4_6: + case CS_CMD_ACTOR_CUE_4_7: + case CS_CMD_ACTOR_CUE_4_8: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[4] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[4] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_6: - case 55: - case 77: - case 84: - case 90: - case 129: - case 136: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_5_0: + case CS_CMD_ACTOR_CUE_5_1: + case CS_CMD_ACTOR_CUE_5_2: + case CS_CMD_ACTOR_CUE_5_3: + case CS_CMD_ACTOR_CUE_5_4: + case CS_CMD_ACTOR_CUE_5_5: + case CS_CMD_ACTOR_CUE_5_6: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[5] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[5] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_7: - case 52: - case 57: - case 58: - case 88: - case 115: - case 130: - case 137: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_6_0: + case CS_CMD_ACTOR_CUE_6_1: + case CS_CMD_ACTOR_CUE_6_2: + case CS_CMD_ACTOR_CUE_6_3: + case CS_CMD_ACTOR_CUE_6_4: + case CS_CMD_ACTOR_CUE_6_5: + case CS_CMD_ACTOR_CUE_6_6: + case CS_CMD_ACTOR_CUE_6_7: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[6] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[6] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_8: - case 60: - case 89: - case 111: - case 114: - case 134: - case 142: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_7_0: + case CS_CMD_ACTOR_CUE_7_1: + case CS_CMD_ACTOR_CUE_7_2: + case CS_CMD_ACTOR_CUE_7_3: + case CS_CMD_ACTOR_CUE_7_4: + case CS_CMD_ACTOR_CUE_7_5: + case CS_CMD_ACTOR_CUE_7_6: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[7] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[7] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_9: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_8_0: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[8] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[8] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; - case CS_CMD_SET_ACTOR_ACTION_10: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_ACTOR_CUE_9_0: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if ((cmd->startFrame < csCtx->frames) && (csCtx->frames <= cmd->endFrame)) { - csCtx->npcActions[9] = (void*)cutscenePtr; + cmd = script; + + if ((csCtx->curFrame > ((CsCmdActorCue*)cmd)->startFrame) && + (csCtx->curFrame <= ((CsCmdActorCue*)cmd)->endFrame)) { + csCtx->actorCues[9] = (void*)script; } - cutscenePtr += 0x30; + + script += sizeof(CsCmdActorCue); } break; + + case CS_CMD_CAM_EYE_SPLINE: + script += CutsceneCmd_UpdateCamEyeSpline(play, csCtx, (void*)script, false); + break; + + case CS_CMD_CAM_EYE_SPLINE_REL_TO_PLAYER: + script += CutsceneCmd_UpdateCamEyeSpline(play, csCtx, (void*)script, true); + break; + + case CS_CMD_CAM_AT_SPLINE: + script += CutsceneCmd_UpdateCamAtSpline(play, csCtx, (void*)script, false); + break; + + case CS_CMD_CAM_AT_SPLINE_REL_TO_PLAYER: + script += CutsceneCmd_UpdateCamAtSpline(play, csCtx, (void*)script, true); + break; + case CS_CMD_CAM_EYE: - cutscenePtr += Cutscene_Command_CameraEyePoints(play, csCtx, (void*)cutscenePtr, 0); - break; - case CS_CMD_CAM_EYE_REL_TO_PLAYER: - cutscenePtr += Cutscene_Command_CameraEyePoints(play, csCtx, (void*)cutscenePtr, 1); + script += CutsceneCmd_SetCamEye(play, csCtx, (void*)script, 0); break; + case CS_CMD_CAM_AT: - cutscenePtr += Cutscene_Command_CameraLookAtPoints(play, csCtx, (void*)cutscenePtr, 0); + script += CutsceneCmd_SetCamAt(play, csCtx, (void*)script, 0); break; - case CS_CMD_CAM_AT_REL_TO_PLAYER: - cutscenePtr += Cutscene_Command_CameraLookAtPoints(play, csCtx, (void*)cutscenePtr, 1); + + case CS_CMD_DESTINATION: + script += sizeof(cmdEntries); + CutsceneCmd_Destination(play, csCtx, (void*)script); + script += sizeof(CsCmdDestination); break; - case CS_CMD_07: - cutscenePtr += Cutscene_Command_07(play, csCtx, (void*)cutscenePtr, 0); - break; - case CS_CMD_08: - cutscenePtr += Cutscene_Command_08(play, csCtx, (void*)cutscenePtr, 0); - break; - case CS_CMD_TERMINATOR: - cutscenePtr += 4; - Cutscene_Command_Terminator(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 8; - break; - case CS_CMD_TEXTBOX: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + + case CS_CMD_TEXT: + MemCpy(&cmdEntries, script, sizeof(cmdEntries)); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cmd = (CsCmdBase*)cutscenePtr; - if (cmd->base != 0xFFFF) { - Cutscene_Command_Textbox(play, csCtx, (void*)cutscenePtr); + cmd = script; + + if (((CsCmdText*)cmd)->textId != CS_TEXT_ID_NONE) { + CutsceneCmd_Text(play, csCtx, (void*)script); } - cutscenePtr += 0xC; + + script += sizeof(CsCmdText); } break; - case CS_CMD_SCENE_TRANS_FX: - cutscenePtr += 4; - Cutscene_Command_TransitionFX(play, csCtx, (void*)cutscenePtr); - cutscenePtr += 8; + + case CS_CMD_TRANSITION: + script += sizeof(cmdEntries); + CutsceneCmd_Transition(play, csCtx, (void*)script); + script += sizeof(CsCmdTransition); break; + default: - MemCpy(&cmdEntries, cutscenePtr, 4); - cutscenePtr += 4; + MemCpy(&cmdEntries, script, 4); + script += sizeof(cmdEntries); + for (j = 0; j < cmdEntries; j++) { - cutscenePtr += 0x30; + script += 0x30; } break; } } } -void func_80068C3C(PlayState* play, CutsceneContext* csCtx) { +void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) { Gfx* displayList; Gfx* prevDisplayList; @@ -1932,42 +2210,44 @@ void func_80068C3C(PlayState* play, CutsceneContext* csCtx) { CLOSE_DISPS(play->state.gfxCtx, "../z_demo.c", 4108); } - csCtx->frames++; - if (dREG(95) != 0) { - Cutscene_ProcessCommands(play, csCtx, D_8012D1F0); + csCtx->curFrame++; + + if (R_USE_DEBUG_CUTSCENE) { + Cutscene_ProcessScript(play, csCtx, gDebugCutsceneScript); } else { - Cutscene_ProcessCommands(play, csCtx, play->csCtx.segment); + Cutscene_ProcessScript(play, csCtx, play->csCtx.script); } } } -void func_80068D84(PlayState* play, CutsceneContext* csCtx) { - if (func_8006472C(play, csCtx, 0.0f)) { +void CutsceneHandler_StopManual(PlayState* play, CutsceneContext* csCtx) { + if (Cutscene_StepTimer(play, csCtx, 0.0f)) { Audio_SetCutsceneFlag(0); csCtx->state = CS_STATE_IDLE; } } -void func_80068DC0(PlayState* play, CutsceneContext* csCtx) { +void CutsceneHandler_StopScript(PlayState* play, CutsceneContext* csCtx) { s16 i; - if (func_8006472C(play, csCtx, 0.0f)) { - csCtx->linkAction = NULL; + if (Cutscene_StepTimer(play, csCtx, 0.0f)) { + csCtx->playerCue = NULL; - for (i = 0; i < 10; i++) { - csCtx->npcActions[i] = NULL; + for (i = 0; i < ARRAY_COUNT(csCtx->actorCues); i++) { + csCtx->actorCues[i] = NULL; } osSyncPrintf("\n\n\n\n\nやっぱりここかいな"); // "Right here, huh" + gSaveContext.cutsceneIndex = 0; gSaveContext.gameMode = GAMEMODE_NORMAL; - if (D_8015FCC8 != 0) { + if (gUseCutsceneCam) { switch (gSaveContext.entranceIndex) { - case 0x028A: - case 0x028E: - case 0x0292: - case 0x0476: + case ENTR_HYRULE_FIELD_11: + case ENTR_HYRULE_FIELD_12: + case ENTR_HYRULE_FIELD_13: + case ENTR_HYRULE_FIELD_15: Play_CopyCamera(play, sReturnToCamId, csCtx->subCamId); } @@ -1981,7 +2261,7 @@ void func_80068DC0(PlayState* play, CutsceneContext* csCtx) { } } -void func_80068ECC(PlayState* play, CutsceneContext* csCtx) { +void Cutscene_SetupScripted(PlayState* play, CutsceneContext* csCtx) { u8 i; if ((gSaveContext.cutsceneTrigger != 0) && (csCtx->state == CS_STATE_IDLE) && !Player_InCsMode(play)) { @@ -1989,32 +2269,35 @@ void func_80068ECC(PlayState* play, CutsceneContext* csCtx) { } if ((gSaveContext.cutsceneIndex >= 0xFFF0) && (csCtx->state == CS_STATE_IDLE)) { - Flags_UnsetEnv(play, 0); + CutsceneFlags_Unset(play, 0); - D_8011E1C0 = 0; - D_8011E1C4 = 0; + sCurTextId = 0; + sCurOcarinaAction = 0; csCtx->unk_12 = 0; - csCtx->linkAction = NULL; + csCtx->playerCue = NULL; - for (i = 0; i < 10; i++) { - csCtx->npcActions[i] = NULL; + for (i = 0; i < ARRAY_COUNT(csCtx->actorCues); i++) { + csCtx->actorCues[i] = NULL; } - csCtx->state++; + csCtx->state++; // CS_STATE_START - if (csCtx->state == CS_STATE_SKIPPABLE_INIT) { + if (csCtx->state == CS_STATE_START) { Audio_SetCutsceneFlag(1); - csCtx->frames = 0xFFFF; - csCtx->unk_18 = 0xFFFF; - D_8015FCC0 = 0xFFFF; - D_8015FCC2 = 0xFFFF; - D_8015FCC4 = 0xFFFF; - csCtx->unk_1A = 0; - csCtx->unk_1B = 0; + csCtx->curFrame = 0xFFFF; + + 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; + + csCtx->camAtReady = false; + csCtx->camEyeReady = false; + sReturnToCamId = play->activeCamId; - if (D_8015FCC8 != 0) { + if (gUseCutsceneCam) { csCtx->subCamId = Play_CreateSubCamera(play); } @@ -2022,16 +2305,20 @@ void func_80068ECC(PlayState* play, CutsceneContext* csCtx) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); Letterbox_SetSizeTarget(32); Letterbox_SetSize(32); - csCtx->state++; + csCtx->state++; // CS_STATE_RUN } - func_80068C3C(play, csCtx); + CutsceneHandler_RunScript(play, csCtx); } gSaveContext.cutsceneTrigger = 0; } } +u16 D_8015FCCC; +char D_8015FCD0[20]; // unreferenced +u8 D_8015FCE4; // only written to, never read + void func_80069048(PlayState* play) { s16 i; @@ -2055,8 +2342,8 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) { for (i = 0; i < ARRAY_COUNT(sEntranceCutsceneTable); i++) { entranceCutscene = &sEntranceCutsceneTable[i]; - requiredAge = entranceCutscene->ageRestriction; + if (requiredAge == 2) { requiredAge = gSaveContext.linkAge; } @@ -2066,7 +2353,7 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) { (gSaveContext.cutsceneIndex < 0xFFF0) && ((u8)gSaveContext.linkAge == requiredAge) && (gSaveContext.respawnFlag <= 0)) { Flags_SetEventChkInf(entranceCutscene->flag); - Cutscene_SetSegment(play, entranceCutscene->segAddr); + Cutscene_SetScript(play, entranceCutscene->script); gSaveContext.cutsceneTrigger = 2; gSaveContext.showTitleCard = false; break; @@ -2108,10 +2395,10 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) { } } -void Cutscene_SetSegment(PlayState* play, void* segment) { - if (SEGMENT_NUMBER(segment) != 0) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(segment); +void Cutscene_SetScript(PlayState* play, void* script) { + if (SEGMENT_NUMBER(script) != 0) { + play->csCtx.script = SEGMENTED_TO_VIRTUAL(script); } else { - play->csCtx.segment = segment; + play->csCtx.script = script; } } diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 1384948cb4..84b4558e77 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -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) { diff --git a/src/code/z_onepointdemo_data.inc.c b/src/code/z_onepointdemo_data.inc.c index 047d65b22f..ca8b2ad2ab 100644 --- a/src/code/z_onepointdemo_data.inc.c +++ b/src/code/z_onepointdemo_data.inc.c @@ -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; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index b8e7a0a8dc..e7c64cfe7b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -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) { diff --git a/src/code/z_play.c b/src/code/z_play.c index 8e0552497c..cf2690c1fd 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -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); } diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 0deabe1366..91763d6239 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -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 diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c index 5bd7a31903..bf72c4ce4d 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c @@ -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); diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c index da3cf8e9fb..078bbe770e 100644 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c +++ b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c @@ -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; } } diff --git a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c index 8354a98402..76d1ae2eda 100644 --- a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c +++ b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c @@ -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); diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 64b7662a93..393ac4d588 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -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) { diff --git a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c index 9c2cf06204..c61666cb7a 100644 --- a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c +++ b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c @@ -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)) { diff --git a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c index aea22e2ca7..66aba6578c 100644 --- a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c +++ b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c @@ -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; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c index b327f068d9..dc7ae8fde5 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c @@ -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; } } } diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h index 216008321a..ae456de8fb 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h @@ -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 diff --git a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c index 5e9316106e..8cc8a71057 100644 --- a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c +++ b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c @@ -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); diff --git a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c index 7cb2301363..1631b3f3ac 100644 --- a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c +++ b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c @@ -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); } diff --git a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c index c1ea8a4cf1..7bbbb7d3f9 100644 --- a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c +++ b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c @@ -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 { diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c index 43ab5272f3..011245e483 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c @@ -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; } } diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c index 16b6b2a8a3..1f9b03889c 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c @@ -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 diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c index 71abf191dd..9845372b35 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c @@ -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 diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c index 8e1106ebe1..085c1b333f 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c @@ -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 diff --git a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c index bac2db66bb..f5699cae58 100644 --- a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c +++ b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c @@ -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); diff --git a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c index a473dc025c..6d4e8c8451 100644 --- a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c +++ b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c @@ -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 diff --git a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c index 249fd285e7..61decd6c45 100644 --- a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c +++ b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c @@ -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); diff --git a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c index 0ea655fc81..b361e05887 100644 --- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c +++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c @@ -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; diff --git a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c index 0c78f813f9..727d00ef16 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c @@ -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); diff --git a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c index b58111f5c8..54fad19091 100644 --- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c +++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c @@ -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); } diff --git a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c index 8f6b3fcaeb..c9bd4d88c0 100644 --- a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c +++ b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c @@ -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); diff --git a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c index 6f95c65c7c..034b74563d 100644 --- a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c +++ b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c @@ -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); diff --git a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c index 75c067e266..733292fe42 100644 --- a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c +++ b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c @@ -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); } diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c index e435135ba6..47b24f855f 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c @@ -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; } diff --git a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c index 18e63ffe96..7706990392 100644 --- a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c +++ b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c @@ -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); diff --git a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c index eaf2c68f6a..3407a7be24 100644 --- a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c +++ b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c @@ -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, diff --git a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c index 3ff9fab89b..d56c49ee72 100644 --- a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c +++ b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c @@ -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; diff --git a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c index 9a7e691615..3c0c0fd732 100644 --- a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c +++ b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c @@ -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); diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du.c b/src/overlays/actors/ovl_Demo_Du/z_demo_du.c index 305b542968..0c03001fec 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du.c +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du.c @@ -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) { diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du.h b/src/overlays/actors/ovl_Demo_Du/z_demo_du.h index 93d91eb5f1..d46f03145e 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du.h +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du.h @@ -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, diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c b/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c index a937b655be..46844cc672 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c index e288c84f63..8c46fd31dc 100644 --- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c +++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c @@ -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); } diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h index e39e0addc2..a93a8589ac 100644 --- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h +++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c index 6358cabee8..cf75a5c300 100644 --- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c +++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c @@ -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; diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h index 14e00067c7..8dea6944cf 100644 --- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h +++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h @@ -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; diff --git a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c index 67c79e8750..d7272f0f3e 100644 --- a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c +++ b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c @@ -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) { diff --git a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h index 2805c474f6..dbed1bf1f9 100644 --- a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h +++ b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h @@ -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; diff --git a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c index 29de90939a..b02f14d801 100644 --- a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c +++ b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c @@ -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; } diff --git a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c index 3154755fc3..573fbe6270 100644 --- a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c +++ b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c @@ -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); } } diff --git a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c index 65371f306b..1ed4932ec6 100644 --- a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c +++ b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c @@ -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; } } } diff --git a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h index caae15f7b1..3b21af5665 100644 --- a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h +++ b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c index 9879cbe95d..41b42de04e 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c @@ -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; } } } diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h index 97511e0429..93fb427ddf 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h @@ -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; diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c b/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c index 585032fbb1..eb6d4fe446 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c index 43969fd84d..9c6677b08e 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c @@ -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++; } } diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c index b0a4138a75..f50afa536c 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.c index 3e41c6d68d..2e320e1992 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.c index 24771268f7..f846a28e3d 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.c index e54f6eeb28..32db920cd0 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.c index 73fbdd5839..68617f1d41 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.c index 356de57e97..14af0d2b1a 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.c index 26cbef970c..ecb2b57bd5 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.c index a8f1228254..a087ed7e94 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c index bad9e1d198..f23485143e 100644 --- a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c +++ b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c @@ -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); diff --git a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c index b6d716bdce..d9ecd19811 100644 --- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c +++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c @@ -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; } } } diff --git a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h index 7801aca27a..1f66c4fec3 100644 --- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h +++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa_cutscene_data.inc.c b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa_cutscene_data.inc.c index 9527c4681c..f5d025ff26 100644 --- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa_cutscene_data.inc.c @@ -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 diff --git a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c index 34d63216cc..703ae8dfdd 100644 --- a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c +++ b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c @@ -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 { diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index a9bbc0fae9..b917f7f97a 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -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; } diff --git a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c index cc2459fb7b..c8eeeae28a 100644 --- a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c +++ b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c @@ -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); diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/src/overlays/actors/ovl_En_Ani/z_en_ani.c index 5feef35ccd..47f64792d3 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.c +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.c @@ -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 { diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index d271fb36e3..ba323790ce 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -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); } } } diff --git a/src/overlays/actors/ovl_En_Du/z_en_du.c b/src/overlays/actors/ovl_En_Du/z_en_du.c index e663a0ca13..5273e84dd9 100644 --- a/src/overlays/actors/ovl_En_Du/z_en_du.c +++ b/src/overlays/actors/ovl_En_Du/z_en_du.c @@ -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; } } diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index d04ddf10c3..72ed3cd8f6 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -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; } diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.c b/src/overlays/actors/ovl_En_Fish/z_en_fish.c index ecd954fe1a..2e9da9ba75 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c @@ -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); } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index ec553c2ca8..8670093c88 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -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; diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 588dde6080..dc4adbb1f0 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -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; } } diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index f37602c9f6..40265cb6dc 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -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); diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.h b/src/overlays/actors/ovl_En_Ik/z_en_ik.h index c7642f7733..efdb9f02d9 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.h +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.h @@ -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 diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 9148a4962f..8c14328e78 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -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); diff --git a/src/overlays/actors/ovl_En_Jj/z_en_jj.c b/src/overlays/actors/ovl_En_Jj/z_en_jj.c index 5dec617659..cc0c84380d 100644 --- a/src/overlays/actors/ovl_En_Jj/z_en_jj.c +++ b/src/overlays/actors/ovl_En_Jj/z_en_jj.c @@ -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); diff --git a/src/overlays/actors/ovl_En_Jj/z_en_jj_cutscene_data.inc.c b/src/overlays/actors/ovl_En_Jj/z_en_jj_cutscene_data.inc.c index 9399075ab7..8405db958b 100644 --- a/src/overlays/actors/ovl_En_Jj/z_en_jj_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_En_Jj/z_en_jj_cutscene_data.inc.c @@ -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 diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index bcc39ce9f3..60b1867d63 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -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; } } diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index cb2473a8e8..cc3aced0c9 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -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)); } } diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.h b/src/overlays/actors/ovl_En_Nb/z_en_nb.h index c1bc3a01bf..89429df6b9 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.h +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.h @@ -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; diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb_cutscene_data.inc.c b/src/overlays/actors/ovl_En_Nb/z_en_nb_cutscene_data.inc.c index a9acb6b8ab..5593a51ab7 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb_cutscene_data.inc.c @@ -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 diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c index 2b372d5daa..585ccc088e 100644 --- a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c +++ b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c @@ -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); } } diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c index 85dca3e44d..315d6e261e 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c @@ -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; diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c index f25593c4b0..3d2c0a0ff0 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c @@ -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 diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index 79e705d8e8..3843558f32 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -743,20 +743,20 @@ void func_80ACB748(EnOwl* this, PlayState* play) { switch (owlType) { case 7: func_800F436C(&D_80ACD62C, NA_SE_EV_FLYING_AIR - SFX_FLAG, weight * 2.0f); - if ((play->csCtx.frames > 324) || ((play->csCtx.frames >= 142 && (play->csCtx.frames <= 266)))) { + if ((play->csCtx.curFrame > 324) || ((play->csCtx.curFrame >= 142 && (play->csCtx.curFrame <= 266)))) { func_800F4414(&D_80ACD62C, NA_SE_EN_OWL_FLUTTER, weight * 2.0f); } - if (play->csCtx.frames == 85) { + if (play->csCtx.curFrame == 85) { func_800F436C(&D_80ACD62C, NA_SE_EV_PASS_AIR, weight * 2.0f); } break; case 8: case 9: func_800F436C(&D_80ACD62C, NA_SE_EV_FLYING_AIR - SFX_FLAG, weight * 2.0f); - if ((play->csCtx.frames >= 420) || ((0xC1 < play->csCtx.frames && (play->csCtx.frames <= 280)))) { + if ((play->csCtx.curFrame >= 420) || ((0xC1 < play->csCtx.curFrame && (play->csCtx.curFrame <= 280)))) { func_800F4414(&D_80ACD62C, NA_SE_EN_OWL_FLUTTER, weight * 2.0f); } - if (play->csCtx.frames == 217) { + if (play->csCtx.curFrame == 217) { func_800F436C(&D_80ACD62C, NA_SE_EV_PASS_AIR, weight * 2.0f); } break; @@ -764,8 +764,8 @@ void func_80ACB748(EnOwl* this, PlayState* play) { } void func_80ACB904(EnOwl* this, PlayState* play) { - if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.npcActions[7] != NULL)) { - if (this->unk_40A != play->csCtx.npcActions[7]->action) { + if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.actorCues[7] != NULL)) { + if (this->unk_40A != play->csCtx.actorCues[7]->id) { func_80ACD130(this, play, 7); func_80ACBAB8(this, play); } @@ -778,8 +778,8 @@ void func_80ACB904(EnOwl* this, PlayState* play) { } void func_80ACB994(EnOwl* this, PlayState* play) { - if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.npcActions[7] != NULL)) { - if (this->unk_40A != play->csCtx.npcActions[7]->action) { + if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.actorCues[7] != NULL)) { + if (this->unk_40A != play->csCtx.actorCues[7]->id) { func_80ACD130(this, play, 7); func_80ACBAB8(this, play); } @@ -792,13 +792,13 @@ void func_80ACB994(EnOwl* this, PlayState* play) { } void EnOwl_WaitDefault(EnOwl* this, PlayState* play) { - if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.npcActions[7] != NULL)) { - if (this->unk_40A != play->csCtx.npcActions[7]->action) { + if (play->csCtx.state != CS_STATE_IDLE && (play->csCtx.actorCues[7] != NULL)) { + if (this->unk_40A != play->csCtx.actorCues[7]->id) { this->actionFlags |= 4; func_80ACD130(this, play, 7); func_80ACBAB8(this, play); } else { - this->actor.world.rot.z = play->csCtx.npcActions[7]->urot.y; + this->actor.world.rot.z = play->csCtx.actorCues[7]->rot.y; } } @@ -808,28 +808,28 @@ void EnOwl_WaitDefault(EnOwl* this, PlayState* play) { } void func_80ACBAB8(EnOwl* this, PlayState* play) { - switch (play->csCtx.npcActions[7]->action - 1) { - case 0: - EnOwl_ChangeMode(this, func_80ACB904, func_80ACC540, &this->skelAnime, &gOwlFlyAnim, 0.0f); - break; + switch (play->csCtx.actorCues[7]->id) { case 1: - this->actor.draw = EnOwl_Draw; - EnOwl_ChangeMode(this, EnOwl_WaitDefault, func_80ACC540, &this->skelAnime, &gOwlPerchAnim, 0.0f); + EnOwl_ChangeMode(this, func_80ACB904, func_80ACC540, &this->skelAnime, &gOwlFlyAnim, 0.0f); break; case 2: this->actor.draw = EnOwl_Draw; - EnOwl_ChangeMode(this, func_80ACB994, func_80ACC540, &this->skelAnime, &gOwlFlyAnim, 0.0f); + EnOwl_ChangeMode(this, EnOwl_WaitDefault, func_80ACC540, &this->skelAnime, &gOwlPerchAnim, 0.0f); break; case 3: + this->actor.draw = EnOwl_Draw; + EnOwl_ChangeMode(this, func_80ACB994, func_80ACC540, &this->skelAnime, &gOwlFlyAnim, 0.0f); + break; + case 4: this->actor.draw = NULL; this->actionFunc = EnOwl_WaitDefault; break; - case 4: + case 5: Actor_Kill(&this->actor); break; } - this->unk_40A = play->csCtx.npcActions[7]->action; + this->unk_40A = play->csCtx.actorCues[7]->id; } void func_80ACBC0C(EnOwl* this, PlayState* play) { @@ -935,12 +935,12 @@ void func_80ACC00C(EnOwl* this, PlayState* play) { osSyncPrintf(VT_FGCOL(CYAN)); osSyncPrintf("SPOT 06 の デモがはしった\n"); // "Demo of SPOT 06 has been completed" osSyncPrintf(VT_RST); - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gLakeHyliaOwlCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gLakeHyliaOwlCs); this->actor.draw = NULL; break; case 8: case 9: - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gDMTOwlCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gDMTOwlCs); this->actor.draw = NULL; break; default: @@ -1063,9 +1063,9 @@ s32 func_80ACC624(EnOwl* this, PlayState* play) { return true; } else if (switchFlag == 0xA) { return true; - } else if (play->csCtx.frames >= 300 && play->csCtx.frames <= 430) { + } else if (play->csCtx.curFrame >= 300 && play->csCtx.curFrame <= 430) { return true; - } else if (play->csCtx.frames >= 1080 && play->csCtx.frames <= 1170) { + } else if (play->csCtx.curFrame >= 1080 && play->csCtx.curFrame <= 1170) { return true; } else { return false; @@ -1335,17 +1335,17 @@ void EnOwl_ChangeMode(EnOwl* this, EnOwlActionFunc actionFunc, OwlFunc arg2, Ske void func_80ACD130(EnOwl* this, PlayState* play, s32 idx) { Vec3f startPos; - startPos.x = play->csCtx.npcActions[idx]->startPos.x; - startPos.y = play->csCtx.npcActions[idx]->startPos.y; - startPos.z = play->csCtx.npcActions[idx]->startPos.z; + startPos.x = play->csCtx.actorCues[idx]->startPos.x; + startPos.y = play->csCtx.actorCues[idx]->startPos.y; + startPos.z = play->csCtx.actorCues[idx]->startPos.z; this->actor.world.pos = startPos; - this->actor.world.rot.y = this->actor.shape.rot.y = play->csCtx.npcActions[idx]->rot.y; - this->actor.shape.rot.z = play->csCtx.npcActions[idx]->urot.z; + this->actor.world.rot.y = this->actor.shape.rot.y = play->csCtx.actorCues[idx]->rot.y; + this->actor.shape.rot.z = play->csCtx.actorCues[idx]->rot.z; } f32 func_80ACD1C4(PlayState* play, s32 idx) { - f32 ret = Environment_LerpWeight(play->csCtx.npcActions[idx]->endFrame, play->csCtx.npcActions[idx]->startFrame, - play->csCtx.frames); + f32 ret = Environment_LerpWeight(play->csCtx.actorCues[idx]->endFrame, play->csCtx.actorCues[idx]->startFrame, + play->csCtx.curFrame); ret = CLAMP_MAX(ret, 1.0f); return ret; @@ -1369,17 +1369,17 @@ void func_80ACD2CC(EnOwl* this, PlayState* play) { s32 angle; f32 t = func_80ACD1C4(play, 7); - pos.x = play->csCtx.npcActions[7]->startPos.x; - pos.y = play->csCtx.npcActions[7]->startPos.y; - pos.z = play->csCtx.npcActions[7]->startPos.z; - angle = (s16)play->csCtx.npcActions[7]->rot.y - this->actor.world.rot.z; + pos.x = play->csCtx.actorCues[7]->startPos.x; + pos.y = play->csCtx.actorCues[7]->startPos.y; + pos.z = play->csCtx.actorCues[7]->startPos.z; + angle = (s16)play->csCtx.actorCues[7]->rot.y - this->actor.world.rot.z; if (angle < 0) { angle += 0x10000; } angle = (s16)((t * angle) + this->actor.world.rot.z); angle = (u16)angle; if (this->actionFlags & 4) { - f32 phi_f2 = play->csCtx.npcActions[7]->urot.x; + f32 phi_f2 = play->csCtx.actorCues[7]->rot.x; phi_f2 *= 10.0f * (360.0f / 0x10000); if (phi_f2 < 0.0f) { @@ -1404,12 +1404,12 @@ void func_80ACD4D4(EnOwl* this, PlayState* play) { Vec3f endPosf; f32 temp_ret = func_80ACD1C4(play, 7); - pos.x = play->csCtx.npcActions[7]->startPos.x; - pos.y = play->csCtx.npcActions[7]->startPos.y; - pos.z = play->csCtx.npcActions[7]->startPos.z; - endPosf.x = play->csCtx.npcActions[7]->endPos.x; - endPosf.y = play->csCtx.npcActions[7]->endPos.y; - endPosf.z = play->csCtx.npcActions[7]->endPos.z; + pos.x = play->csCtx.actorCues[7]->startPos.x; + pos.y = play->csCtx.actorCues[7]->startPos.y; + pos.z = play->csCtx.actorCues[7]->startPos.z; + endPosf.x = play->csCtx.actorCues[7]->endPos.x; + endPosf.y = play->csCtx.actorCues[7]->endPos.y; + endPosf.z = play->csCtx.actorCues[7]->endPos.z; pos.x = (endPosf.x - pos.x) * temp_ret + pos.x; pos.y = (endPosf.y - pos.y) * temp_ret + pos.y; pos.z = (endPosf.z - pos.z) * temp_ret + pos.z; diff --git a/src/overlays/actors/ovl_En_Rl/z_en_rl.c b/src/overlays/actors/ovl_En_Rl/z_en_rl.c index 9e5e2247e9..a32d9c7f43 100644 --- a/src/overlays/actors/ovl_En_Rl/z_en_rl.c +++ b/src/overlays/actors/ovl_En_Rl/z_en_rl.c @@ -84,28 +84,30 @@ s32 func_80AE7494(EnRl* this) { return SkelAnime_Update(&this->skelAnime); } -s32 func_80AE74B4(EnRl* this, PlayState* play, u16 arg2, s32 arg3) { - CsCmdActorAction* csCmdActorAction; +s32 func_80AE74B4(EnRl* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue; if (play->csCtx.state != CS_STATE_IDLE) { - csCmdActorAction = play->csCtx.npcActions[arg3]; - if (csCmdActorAction != NULL && csCmdActorAction->action == arg2) { - return 1; + cue = play->csCtx.actorCues[cueChannel]; + + if (cue != NULL && cue->id == cueId) { + return true; } } - return 0; + return false; } -s32 func_80AE74FC(EnRl* this, PlayState* play, u16 arg2, s32 arg3) { - CsCmdActorAction* csCmdActorAction; +s32 func_80AE74FC(EnRl* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue; if (play->csCtx.state != CS_STATE_IDLE) { - csCmdActorAction = play->csCtx.npcActions[arg3]; - if (csCmdActorAction != NULL && csCmdActorAction->action != arg2) { - return 1; + cue = play->csCtx.actorCues[cueChannel]; + + if (cue != NULL && cue->id != cueId) { + return true; } } - return 0; + return false; } void func_80AE7544(EnRl* this, PlayState* play) { @@ -118,8 +120,9 @@ void func_80AE7590(EnRl* this, PlayState* play) { Vec3f pos; s16 sceneId = play->sceneId; - if (gSaveContext.sceneLayer == 4 && sceneId == SCENE_CHAMBER_OF_THE_SAGES && play->csCtx.state != CS_STATE_IDLE && - play->csCtx.npcActions[6] != NULL && play->csCtx.npcActions[6]->action == 2 && !this->lightMedallionGiven) { + if ((gSaveContext.sceneLayer == 4) && (sceneId == SCENE_CHAMBER_OF_THE_SAGES) && + (play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[6] != NULL) && + (play->csCtx.actorCues[6]->id == 2) && !this->lightMedallionGiven) { player = GET_PLAYER(play); pos.x = player->actor.world.pos.x; pos.y = player->actor.world.pos.y + 80.0f; @@ -139,11 +142,12 @@ void func_80AE7668(EnRl* this, PlayState* play) { } void func_80AE7698(EnRl* this, PlayState* play) { - CsCmdActorAction* csCmdActorAction; + CsCmdActorCue* cue; if (play->csCtx.state != CS_STATE_IDLE) { - csCmdActorAction = play->csCtx.npcActions[0]; - if (csCmdActorAction != NULL && csCmdActorAction->action == 3) { + cue = play->csCtx.actorCues[0]; + + if (cue != NULL && cue->id == 3) { Animation_Change(&this->skelAnime, &object_rl_Anim_00040C, 1.0f, 0.0f, Animation_GetLastFrame(&object_rl_Anim_00040C), ANIMMODE_ONCE, 0.0f); this->action = 2; diff --git a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c index a712db62a2..60b8342ee3 100644 --- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c +++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c @@ -246,29 +246,29 @@ s32 EnRu1_IsCsStateIdle(PlayState* play) { return false; } -CsCmdActorAction* func_80AEAF58(PlayState* play, s32 npcActionIdx) { +CsCmdActorCue* EnRu1_GetCue(PlayState* play, s32 cueChannel) { s32 pad[2]; - CsCmdActorAction* ret = NULL; + CsCmdActorCue* cue = NULL; if (!EnRu1_IsCsStateIdle(play)) { - ret = play->csCtx.npcActions[npcActionIdx]; + cue = play->csCtx.actorCues[cueChannel]; } - return ret; + return cue; } -s32 func_80AEAFA0(PlayState* play, u16 action, s32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = func_80AEAF58(play, npcActionIdx); +s32 func_80AEAFA0(PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnRu1_GetCue(play, cueChannel); - if ((csCmdNPCAction != NULL) && (csCmdNPCAction->action == action)) { + if ((cue != NULL) && (cue->id == cueId)) { return true; } return false; } -s32 func_80AEAFE0(PlayState* play, u16 action, s32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = func_80AEAF58(play, npcActionIdx); +s32 func_80AEAFE0(PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnRu1_GetCue(play, cueChannel); - if ((csCmdNPCAction != NULL) && (csCmdNPCAction->action != action)) { + if ((cue != NULL) && (cue->id != cueId)) { return true; } return false; @@ -410,16 +410,16 @@ void func_80AEB3DC(EnRu1* this, PlayState* play) { EnRu1_SetMouthIndex(this, 0); } -CsCmdActorAction* func_80AEB438(PlayState* play) { - return func_80AEAF58(play, 3); +CsCmdActorCue* EnRu1_GetCueChannel3(PlayState* play) { + return EnRu1_GetCue(play, 3); } -s32 func_80AEB458(PlayState* play, u16 action) { - return func_80AEAFA0(play, action, 3); +s32 func_80AEB458(PlayState* play, u16 cueId) { + return func_80AEAFA0(play, cueId, 3); } -s32 func_80AEB480(PlayState* play, u16 action) { - return func_80AEAFE0(play, action, 3); +s32 func_80AEB480(PlayState* play, u16 cueId) { + return func_80AEAFE0(play, cueId, 3); } void EnRu1_SpawnRipple(EnRu1* this, PlayState* play, s16 radiusMax, s16 life) { @@ -480,13 +480,11 @@ void func_80AEB7D0(EnRu1* this) { this->skelAnime.moveFlags &= ~0x3; } -f32 func_80AEB7E0(CsCmdActorAction* csCmdNPCAction, PlayState* play) { - s32 csCtxFrames = play->csCtx.frames; +f32 func_80AEB7E0(CsCmdActorCue* cue, PlayState* play) { + s32 csCurFrame = play->csCtx.curFrame; - if ((csCtxFrames < csCmdNPCAction->endFrame) && (csCmdNPCAction->endFrame - csCmdNPCAction->startFrame > 0)) { - return (Math_CosS(((csCtxFrames - csCmdNPCAction->startFrame) / - (f32)(csCmdNPCAction->endFrame - csCmdNPCAction->startFrame)) * - 32768.0f) * + if ((csCurFrame < cue->endFrame) && (cue->endFrame - cue->startFrame > 0)) { + return (Math_CosS(((csCurFrame - cue->startFrame) / (f32)(cue->endFrame - cue->startFrame)) * 32768.0f) * -0.5f) + 0.5f; } @@ -498,16 +496,14 @@ f32 func_80AEB87C(f32 arg0, s32 arg1, s32 arg2) { } void func_80AEB89C(EnRu1* this, PlayState* play) { - CsCmdActorAction* npcAction = func_80AEB438(play); - s16 npcActionRotY; + CsCmdActorCue* cue = EnRu1_GetCueChannel3(play); - if (npcAction != NULL) { - npcActionRotY = npcAction->rot.y; - this->actor.shape.rot.y = npcActionRotY; - this->actor.world.rot.y = npcActionRotY; - 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.rot.y = this->actor.shape.rot.y = cue->rot.y; + + this->actor.world.pos.x = cue->startPos.x; + this->actor.world.pos.y = cue->startPos.y; + this->actor.world.pos.z = cue->startPos.z; } } @@ -526,15 +522,15 @@ void func_80AEB954(EnRu1* this, PlayState* play) { void func_80AEB974(EnRu1* this, PlayState* play) { Vec3f* thisPos; f32 sp30; - CsCmdActorAction* csCmdNPCAction = func_80AEB438(play); + CsCmdActorCue* cue = EnRu1_GetCueChannel3(play); s32 pad; - if (csCmdNPCAction != NULL) { - sp30 = func_80AEB7E0(csCmdNPCAction, play); + if (cue != NULL) { + sp30 = func_80AEB7E0(cue, play); thisPos = &this->actor.world.pos; - thisPos->x = func_80AEB87C(sp30, csCmdNPCAction->startPos.x, csCmdNPCAction->endPos.x); - thisPos->y = func_80AEB87C(sp30, csCmdNPCAction->startPos.y, csCmdNPCAction->endPos.y); - thisPos->z = func_80AEB87C(sp30, csCmdNPCAction->startPos.z, csCmdNPCAction->endPos.z); + thisPos->x = func_80AEB87C(sp30, cue->startPos.x, cue->endPos.x); + thisPos->y = func_80AEB87C(sp30, cue->startPos.y, cue->endPos.y); + thisPos->z = func_80AEB87C(sp30, cue->startPos.z, cue->endPos.z); } } @@ -547,15 +543,15 @@ void func_80AEBA2C(EnRu1* this, PlayState* play) { Vec3f* unk_364 = &this->unk_364; Vec3f* thisPos; f32 temp_ret_2; - CsCmdActorAction* csCmdNPCAction = func_80AEB438(play); + CsCmdActorCue* cue = EnRu1_GetCueChannel3(play); s32 pad2; - if (csCmdNPCAction != NULL) { - temp_ret_2 = func_80AEB7E0(csCmdNPCAction, play); + if (cue != NULL) { + temp_ret_2 = func_80AEB7E0(cue, play); thisPos = &this->actor.world.pos; - thisPos->x = func_80AEB87C(temp_ret_2, unk_364->x, csCmdNPCAction->endPos.x); - thisPos->y = func_80AEB87C(temp_ret_2, unk_364->y, csCmdNPCAction->endPos.y); - thisPos->z = func_80AEB87C(temp_ret_2, unk_364->z, csCmdNPCAction->endPos.z); + thisPos->x = func_80AEB87C(temp_ret_2, unk_364->x, cue->endPos.x); + thisPos->y = func_80AEB87C(temp_ret_2, unk_364->y, cue->endPos.y); + thisPos->z = func_80AEB87C(temp_ret_2, unk_364->z, cue->endPos.z); } } @@ -590,7 +586,7 @@ void func_80AEBBF4(EnRu1* this) { void func_80AEBC30(PlayState* play) { Player* player; - if (play->csCtx.frames == 0xCD) { + if (play->csCtx.curFrame == 0xCD) { player = GET_PLAYER(play); Audio_PlaySfxGeneral(NA_SE_EV_DIVE_INTO_WATER, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -598,7 +594,7 @@ void func_80AEBC30(PlayState* play) { } void func_80AEBC84(EnRu1* this, PlayState* play) { - if (play->csCtx.frames == 0x82) { + if (play->csCtx.curFrame == 0x82) { func_80078914(&this->actor.projectedPos, NA_SE_VO_RT_LAUGH_0); } } @@ -673,15 +669,16 @@ void func_80AEBF60(EnRu1* this, PlayState* play) { } void func_80AEBFD8(EnRu1* this, PlayState* play) { - CsCmdActorAction* csCmdNPCAction = func_80AEB438(play); + CsCmdActorCue* cue = EnRu1_GetCueChannel3(play); f32 frameCount; - u16 csCtxFrames; + u16 csCurFrame; u16 endFrame; - if (csCmdNPCAction != NULL) { - csCtxFrames = play->csCtx.frames; - endFrame = csCmdNPCAction->endFrame; - if (csCtxFrames >= endFrame - 2) { + if (cue != NULL) { + csCurFrame = play->csCtx.curFrame; + endFrame = cue->endFrame; + + if (csCurFrame >= endFrame - 2) { frameCount = Animation_GetLastFrame(&gRutoChildTransitionFromSwimOnBackAnim); Animation_Change(&this->skelAnime, &gRutoChildTransitionFromSwimOnBackAnim, 1.0, 0, frameCount, ANIMMODE_ONCE, -8.0f); @@ -860,7 +857,7 @@ void func_80AEC780(EnRu1* this, PlayState* play) { (!(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14 | PLAYER_STATE1_21))) && (player->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { - play->csCtx.segment = D_80AF0880; + play->csCtx.script = D_80AF0880; gSaveContext.cutsceneTrigger = 1; player->linearVelocity = 0.0f; this->action = 8; @@ -868,15 +865,15 @@ void func_80AEC780(EnRu1* this, PlayState* play) { } void func_80AEC81C(EnRu1* this, PlayState* play) { - CsCmdActorAction* csCmdNPCAction; + CsCmdActorCue* cue; s16 newRotY; if (func_80AEAFE0(play, 1, 3)) { - csCmdNPCAction = play->csCtx.npcActions[3]; - this->actor.world.pos.x = csCmdNPCAction->startPos.x; - this->actor.world.pos.y = csCmdNPCAction->startPos.y; - this->actor.world.pos.z = csCmdNPCAction->startPos.z; - newRotY = csCmdNPCAction->rot.y; + cue = play->csCtx.actorCues[3]; + this->actor.world.pos.x = cue->startPos.x; + this->actor.world.pos.y = cue->startPos.y; + this->actor.world.pos.z = cue->startPos.z; + newRotY = cue->rot.y; this->actor.shape.rot.y = newRotY; this->actor.world.rot.y = newRotY; this->action = 9; @@ -1542,7 +1539,7 @@ s32 func_80AEE394(EnRu1* this, PlayState* play) { if (dynaPolyActor != NULL && dynaPolyActor->actor.id == ACTOR_BG_BDAN_OBJECTS && dynaPolyActor->actor.params == 0 && !Player_InCsMode(play) && play->msgCtx.msgLength == 0) { func_80AEE02C(this); - play->csCtx.segment = D_80AF10A4; + play->csCtx.script = D_80AF10A4; gSaveContext.cutsceneTrigger = 1; this->action = 36; this->drawConfig = 0; @@ -1608,7 +1605,7 @@ s32 func_80AEE6D0(EnRu1* this, PlayState* play) { func_80AED600(this); this->action = 34; this->unk_26C = 0.0f; - play->csCtx.segment = D_80AF1728; + play->csCtx.script = D_80AF1728; gSaveContext.cutsceneTrigger = 1; } this->roomNum3 = curRoomNum; @@ -1944,25 +1941,25 @@ void func_80AEF5B8(EnRu1* this) { void func_80AEF624(EnRu1* this, PlayState* play) { f32 frameCount; - CsCmdActorAction* csCmdNPCAction; - CsCmdActorAction* csCmdNPCAction2; + CsCmdActorCue* cue; + CsCmdActorCue* cue2; s16 newRotTmp; if (func_80AEAFE0(play, 1, 3)) { frameCount = Animation_GetLastFrame(&gRutoChildWalkToAndHoldUpSapphireAnim); // this weird part with the redundant variable is necessary to match for some reason - csCmdNPCAction2 = play->csCtx.npcActions[3]; - csCmdNPCAction = csCmdNPCAction2; - this->actor.world.pos.x = csCmdNPCAction->startPos.x; - this->actor.world.pos.y = csCmdNPCAction->startPos.y; - this->actor.world.pos.z = csCmdNPCAction->startPos.z; - newRotTmp = csCmdNPCAction->rot.x; + cue2 = play->csCtx.actorCues[3]; + cue = cue2; + this->actor.world.pos.x = cue->startPos.x; + this->actor.world.pos.y = cue->startPos.y; + this->actor.world.pos.z = cue->startPos.z; + newRotTmp = cue->rot.x; this->actor.shape.rot.x = newRotTmp; this->actor.world.rot.x = newRotTmp; - newRotTmp = csCmdNPCAction->rot.y; + newRotTmp = cue->rot.y; this->actor.shape.rot.y = newRotTmp; this->actor.world.rot.y = newRotTmp; - newRotTmp = csCmdNPCAction->rot.z; + newRotTmp = cue->rot.z; this->actor.shape.rot.z = newRotTmp; this->actor.world.rot.z = newRotTmp; Animation_Change(&this->skelAnime, &gRutoChildWalkToAndHoldUpSapphireAnim, 1.0f, 0.0f, frameCount, diff --git a/src/overlays/actors/ovl_En_Ru1/z_en_ru1_cutscene_data.inc.c b/src/overlays/actors/ovl_En_Ru1/z_en_ru1_cutscene_data.inc.c index 4c7a008e5d..93b710cd9e 100644 --- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1_cutscene_data.inc.c @@ -4,109 +4,109 @@ // clang-format off static CutsceneData D_80AF0880[] = { CS_BEGIN_CUTSCENE(15, 1306), - CS_PLAYER_ACTION_LIST(10), - CS_PLAYER_ACTION(0x0027, 0, 50, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0003, 50, 70, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0005, 70, 109, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0002, 109, 135, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0005, 135, 199, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0003, 199, 219, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0005, 219, 259, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0003, 259, 276, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0002, 276, 297, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 182, -340, -3132, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0005, 297, 843, 0x0000, 0x6C16, 0x0000, 182, -340, -3132, 182, -340, -3132, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_NPC_ACTION_LIST(63, 4), - CS_NPC_ACTION(0x0002, 0, 178, 0x0000, 0xEC16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_NPC_ACTION(0x0003, 178, 245, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_NPC_ACTION(0x0004, 245, 260, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_NPC_ACTION(0x0005, 260, 396, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE_LIST(10), + CS_PLAYER_CUE(0x0027, 0, 50, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0003, 50, 70, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0005, 70, 109, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 12, -340, -2810, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0002, 109, 135, 0x0000, 0x6C16, 0x0000, 12, -340, -2810, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0005, 135, 199, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0003, 199, 219, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0005, 219, 259, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0003, 259, 276, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 100, -340, -2991, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0002, 276, 297, 0x0000, 0x6C16, 0x0000, 100, -340, -2991, 182, -340, -3132, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0005, 297, 843, 0x0000, 0x6C16, 0x0000, 182, -340, -3132, 182, -340, -3132, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE_LIST(63, 4), + CS_ACTOR_CUE(0x0002, 0, 178, 0x0000, 0xEC16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE(0x0003, 178, 245, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE(0x0004, 245, 260, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE(0x0005, 260, 396, 0x0000, 0x6C16, 0x0000, 127, -340, -3041, 127, -340, -3041, 1.1393037e-29f, 0.0f, 1.4e-45f), CS_MISC_LIST(1), - CS_MISC(0x000C, 315, 345, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), + CS_MISC(CS_MISC_STOP_CUTSCENE, 315, 345, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), CS_TEXT_LIST(4), CS_TEXT_NONE(0, 157), - CS_TEXT_DISPLAY_TEXTBOX(0x404B, 157, 175, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x404B, 157, 175, 0x0000, 0xFFFF, 0xFFFF), CS_TEXT_NONE(175, 252), - CS_TEXT_DISPLAY_TEXTBOX(0x401E, 252, 300, 0x0000, 0xFFFF, 0xFFFF), - CS_CAM_EYE_LIST(0, 247), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x20BA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x44B8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x8080), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0xE243), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x005E), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0xFFFF), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x5B80), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 30.799889f, 55, -290, -2749, 0x49B4), - CS_CAM_EYE_LIST(73, 208), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x20BA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x44B8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x8080), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0xE243), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x005E), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0xFFFF), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.399944f, 99, -307, -2985, 0x0000), - CS_CAM_EYE_LIST(116, 1207), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x20BA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x44B8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x8080), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0xE243), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.799946f, 155, -276, -2911, 0x005E), - CS_CAM_EYE_LIST(186, 1277), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x20BA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x44B8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x8080), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0xE243), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.39995f, 77, -315, -2992, 0x005E), - CS_CAM_EYE_LIST(256, 425), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x20BA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x44B8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x8080), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0xE243), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0x005E), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0xFFFF), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 46.799953f, 350, -237, -3314, 0x5B80), - CS_CAM_AT_LIST(0, 276), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 45.399944f, 40, -256, -2823, 0x20BA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 45.399944f, 40, -256, -2823, 0x44B8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 45.399944f, 22, -313, -2823, 0x8080), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 45.399944f, 23, -313, -2823, 0xE243), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 6, 30.799889f, 73, -298, -2828, 0x005E), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0xFFFF), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0x5B80), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 30.799889f, 73, -298, -2828, 0x49B4), - CS_CAM_AT_LIST(73, 237), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.2f, 136, -314, -3060, 0x20BA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 60.600002f, 136, -314, -3060, 0x44B8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 45.399944f, 136, -314, -3060, 0x8080), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 136, -314, -3060, 0xE243), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 136, -314, -3060, 0x005E), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.399944f, 135, -313, -3060, 0xFFFF), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.399944f, 135, -313, -3059, 0x0000), - CS_CAM_AT_LIST(116, 1236), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.799946f, 132, -305, -2969, 0x20BA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.799946f, 132, -304, -2969, 0x44B8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.799946f, 133, -304, -2969, 0x8080), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.799946f, 133, -304, -2969, 0xE243), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.799946f, 133, -304, -2969, 0x005E), - CS_CAM_AT_LIST(186, 1306), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0x20BA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0x44B8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.39995f, 138, -301, -3032, 0x8080), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0xE243), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.39995f, 138, -301, -3032, 0x005E), - CS_CAM_AT_LIST(256, 454), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 28.199883f, 307, -254, -3258, 0x20BA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 28.199883f, 307, -254, -3258, 0x44B8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 9, 28.199883f, 307, -254, -3258, 0x8080), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 9, 46.799953f, 304, -273, -3273, 0xE243), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0x005E), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0xFFFF), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 46.799953f, 305, -272, -3274, 0x5B80), - CS_PLAY_BGM_LIST(1), - CS_PLAY_BGM(0x0052, 74, 75, 0x0000, 0x00000000, 0xFFFFFFF1, 0x00000000, 0x0000004E, 0xFFFFFFF1, 0x00000000, 0x0000004E), + CS_TEXT(0x401E, 252, 300, 0x0000, 0xFFFF, 0xFFFF), + CS_CAM_EYE_SPLINE(0, 247), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 55, -290, -2749, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0xFFFF), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.799889f, 55, -290, -2749, 0x5B80), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 30.799889f, 55, -290, -2749, 0x49B4), + CS_CAM_EYE_SPLINE(73, 208), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.399944f, 99, -307, -2985, 0xFFFF), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.399944f, 99, -307, -2985, 0x0000), + CS_CAM_EYE_SPLINE(116, 1207), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.799946f, 155, -276, -2911, 0xE243), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.799946f, 155, -276, -2911, 0x005E), + CS_CAM_EYE_SPLINE(186, 1277), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.39995f, 77, -315, -2992, 0xE243), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.39995f, 77, -315, -2992, 0x005E), + CS_CAM_EYE_SPLINE(256, 425), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 28.199883f, 350, -237, -3314, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0xFFFF), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 46.799953f, 350, -237, -3314, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 46.799953f, 350, -237, -3314, 0x5B80), + CS_CAM_AT_SPLINE(0, 276), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 45.399944f, 40, -256, -2823, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 45.399944f, 40, -256, -2823, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 45.399944f, 22, -313, -2823, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 45.399944f, 23, -313, -2823, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 6, 30.799889f, 73, -298, -2828, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0xFFFF), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.799889f, 73, -298, -2828, 0x5B80), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 30.799889f, 73, -298, -2828, 0x49B4), + CS_CAM_AT_SPLINE(73, 237), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.2f, 136, -314, -3060, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.600002f, 136, -314, -3060, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 45.399944f, 136, -314, -3060, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 136, -314, -3060, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 136, -314, -3060, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.399944f, 135, -313, -3060, 0xFFFF), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.399944f, 135, -313, -3059, 0x0000), + CS_CAM_AT_SPLINE(116, 1236), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.799946f, 132, -305, -2969, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.799946f, 132, -304, -2969, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.799946f, 133, -304, -2969, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.799946f, 133, -304, -2969, 0xE243), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.799946f, 133, -304, -2969, 0x005E), + CS_CAM_AT_SPLINE(186, 1306), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.39995f, 138, -301, -3032, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.39995f, 138, -301, -3032, 0xE243), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.39995f, 138, -301, -3032, 0x005E), + CS_CAM_AT_SPLINE(256, 454), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 28.199883f, 307, -254, -3258, 0x20BA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 28.199883f, 307, -254, -3258, 0x44B8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 9, 28.199883f, 307, -254, -3258, 0x8080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 9, 46.799953f, 304, -273, -3273, 0xE243), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0x005E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0xFFFF), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 46.799953f, 304, -272, -3274, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 46.799953f, 305, -272, -3274, 0x5B80), + CS_START_SEQ_LIST(1), + CS_START_SEQ(NA_BGM_APPEAR, 74, 75, 0x0000, 0x00000000, 0xFFFFFFF1, 0x00000000, 0x0000004E, 0xFFFFFFF1, 0x00000000, 0x0000004E), CS_END(), }; @@ -114,88 +114,88 @@ static u32 D_80AF10A0 = 0; static CutsceneData D_80AF10A4[] = { CS_BEGIN_CUTSCENE(14, 1299), - CS_PLAYER_ACTION_LIST(3), - CS_PLAYER_ACTION(0x0005, 0, 272, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0003, 272, 292, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), - CS_PLAYER_ACTION(0x0005, 292, 777, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE_LIST(3), + CS_PLAYER_CUE(0x0005, 0, 272, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0003, 272, 292, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), + CS_PLAYER_CUE(0x0005, 292, 777, 0x0000, 0xC000, 0x0000, -1085, -1025, -3347, -1085, -1025, -3347, 1.1393037e-29f, 0.0f, 1.4e-45f), CS_MISC_LIST(1), - CS_MISC(0x000C, 330, 627, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), - CS_NPC_ACTION_LIST(66, 3), - CS_NPC_ACTION(0x0001, 0, 40, 0x0000, 0x4000, 0x0000, -1352, -969, -3341, -1352, -969, -3341, 0.0f, 0.0f, 1.4e-45f), - CS_NPC_ACTION(0x0002, 40, 213, 0x0000, 0x4000, 0x0000, -1352, -969, -3341, -1360, -969, -3343, 0.0f, 0.0f, 1.4e-45f), - CS_NPC_ACTION(0x0003, 213, 1000, 0x0000, 0x4000, 0x0000, -1360, -969, -3343, -1360, -969, -3343, 0.0f, 0.0f, 1.4e-45f), - CS_NPC_ACTION_LIST(48, 1), - CS_NPC_ACTION(0x0002, 0, 90, 0x0000, 0x0000, 0x0000, -1360, -963, -3343, -1360, -963, -3343, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION_LIST(48, 2), - CS_NPC_ACTION(0x0002, 90, 211, 0x0000, 0x0000, 0x0000, -1352, -922, -3341, -1352, -922, -3341, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0006, 211, 311, 0x0000, 0x0000, 0x0000, -1352, -922, -3341, -1352, -922, -3341, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION_LIST(62, 3), - CS_NPC_ACTION(0x0004, 0, 210, 0x0000, 0x0000, 0x0000, -1065, -972, -3305, -1065, -978, -3305, 0.0f, -0.028571429f, 0.0f), - CS_NPC_ACTION(0x0004, 210, 220, 0x8000, 0x0000, 0x0000, -1065, -978, -3305, -1065, -973, -3344, 0.0f, 0.5f, 0.0f), - CS_NPC_ACTION(0x0004, 220, 410, 0x0000, 0x0000, 0x0000, -1065, -973, -3344, -1065, -976, -3344, 0.0f, -0.015789473f, 0.0f), + CS_MISC(CS_MISC_STOP_CUTSCENE, 330, 627, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), + CS_ACTOR_CUE_LIST(66, 3), + CS_ACTOR_CUE(0x0001, 0, 40, 0x0000, 0x4000, 0x0000, -1352, -969, -3341, -1352, -969, -3341, 0.0f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE(0x0002, 40, 213, 0x0000, 0x4000, 0x0000, -1352, -969, -3341, -1360, -969, -3343, 0.0f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE(0x0003, 213, 1000, 0x0000, 0x4000, 0x0000, -1360, -969, -3343, -1360, -969, -3343, 0.0f, 0.0f, 1.4e-45f), + CS_ACTOR_CUE_LIST(48, 1), + CS_ACTOR_CUE(0x0002, 0, 90, 0x0000, 0x0000, 0x0000, -1360, -963, -3343, -1360, -963, -3343, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE_LIST(48, 2), + CS_ACTOR_CUE(0x0002, 90, 211, 0x0000, 0x0000, 0x0000, -1352, -922, -3341, -1352, -922, -3341, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0006, 211, 311, 0x0000, 0x0000, 0x0000, -1352, -922, -3341, -1352, -922, -3341, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE_LIST(62, 3), + CS_ACTOR_CUE(0x0004, 0, 210, 0x0000, 0x0000, 0x0000, -1065, -972, -3305, -1065, -978, -3305, 0.0f, -0.028571429f, 0.0f), + CS_ACTOR_CUE(0x0004, 210, 220, 0x8000, 0x0000, 0x0000, -1065, -978, -3305, -1065, -973, -3344, 0.0f, 0.5f, 0.0f), + CS_ACTOR_CUE(0x0004, 220, 410, 0x0000, 0x0000, 0x0000, -1065, -973, -3344, -1065, -976, -3344, 0.0f, -0.015789473f, 0.0f), CS_TEXT_LIST(6), CS_TEXT_NONE(0, 162), - CS_TEXT_DISPLAY_TEXTBOX(0x4050, 162, 211, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x4050, 162, 211, 0x0000, 0xFFFF, 0xFFFF), CS_TEXT_NONE(211, 232), - CS_TEXT_DISPLAY_TEXTBOX(0x4051, 232, 241, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x4051, 232, 241, 0x0000, 0xFFFF, 0xFFFF), CS_TEXT_NONE(241, 247), - CS_TEXT_DISPLAY_TEXTBOX(0x4052, 247, 299, 0x0000, 0xFFFF, 0xFFFF), - CS_PLAY_BGM_LIST(1), - CS_PLAY_BGM(0x0023, 112, 113, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x000000B1, 0x00000000, 0xFFFFFFC7, 0x000000B1), - CS_CAM_EYE_LIST(0, 1176), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 41.9066f, -1390, -948, -3339, 0x00C6), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.706596f, -1390, -948, -3339, 0x00C8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.706596f, -1390, -948, -3339, 0x00D7), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.706596f, -1418, -938, -3337, 0x00E8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x00EA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x013D), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x013F), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x006D), - CS_CAM_EYE_LIST(91, 1270), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 44.906612f, -1319, -934, -3343, 0x00C6), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00C8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00D7), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00E8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 44.70661f, -1326, -904, -3342, 0x00EA), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x013D), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x013F), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x014E), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x015F), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x0161), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.906673f, -1326, -1024, -3342, 0x652E), - CS_CAM_EYE_LIST(211, 332), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00C6), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00C8), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00D7), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00E8), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00EA), - CS_CAM_AT_LIST(0, 1205), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.706596f, -1295, -1003, -3352, 0x00C6), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 40.706596f, -1296, -1003, -3352, 0x00C8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 40.706596f, -1296, -1003, -3352, 0x00D7), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 45.10661f, -1314, -969, -3346, 0x00E8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x00EA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.10661f, -1313, -969, -3346, 0x013D), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x013F), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x006D), - CS_CAM_AT_LIST(91, 1299), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 44.70661f, -1405, -988, -3343, 0x00C6), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00C8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00D7), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00E8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 7, 60.906673f, -1393, -978, -3342, 0x00EA), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x013D), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x013F), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.906673f, -1393, -977, -3342, 0x014E), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x015F), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x0161), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.906673f, -1401, -1094, -3347, 0x652E), - CS_CAM_AT_LIST(211, 361), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00C6), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00C8), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00D7), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00E8), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00EA), + CS_TEXT(0x4052, 247, 299, 0x0000, 0xFFFF, 0xFFFF), + CS_START_SEQ_LIST(1), + CS_START_SEQ(NA_BGM_ITEM_GET, 112, 113, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x000000B1, 0x00000000, 0xFFFFFFC7, 0x000000B1), + CS_CAM_EYE_SPLINE(0, 1176), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 41.9066f, -1390, -948, -3339, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.706596f, -1390, -948, -3339, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.706596f, -1390, -948, -3339, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.706596f, -1418, -938, -3337, 0x00E8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x00EA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x013D), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x013F), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.10661f, -1418, -938, -3337, 0x006D), + CS_CAM_EYE_SPLINE(91, 1270), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 44.906612f, -1319, -934, -3343, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 44.70661f, -1319, -936, -3344, 0x00E8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 44.70661f, -1326, -904, -3342, 0x00EA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x013D), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x013F), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x014E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x015F), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.906673f, -1326, -904, -3342, 0x0161), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.906673f, -1326, -1024, -3342, 0x652E), + CS_CAM_EYE_SPLINE(211, 332), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 30.306555f, -1471, -819, -3149, 0x00EA), + CS_CAM_AT_SPLINE(0, 1205), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.706596f, -1295, -1003, -3352, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 40.706596f, -1296, -1003, -3352, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 40.706596f, -1296, -1003, -3352, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 45.10661f, -1314, -969, -3346, 0x00E8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x00EA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.10661f, -1313, -969, -3346, 0x013D), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x013F), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.10661f, -1313, -970, -3346, 0x006D), + CS_CAM_AT_SPLINE(91, 1299), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 44.70661f, -1405, -988, -3343, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 44.70661f, -1406, -989, -3344, 0x00E8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 7, 60.906673f, -1393, -978, -3342, 0x00EA), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x013D), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x013F), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.906673f, -1393, -977, -3342, 0x014E), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x015F), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.906673f, -1393, -977, -3342, 0x0161), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.906673f, -1401, -1094, -3347, 0x652E), + CS_CAM_AT_SPLINE(211, 361), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00C6), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00C8), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00D7), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 30.306555f, -1426, -857, -3190, 0x00EA), CS_END(), }; @@ -204,36 +204,36 @@ static u32 D_80AF1724 = 0; static CutsceneData D_80AF1728[] = { CS_BEGIN_CUTSCENE(7, 1160), CS_MISC_LIST(1), - CS_MISC(0x000C, 75, 627, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), - CS_NPC_ACTION_LIST(48, 1), - CS_NPC_ACTION(0x0002, 0, 90, 0x0000, 0x0000, 0x0000, -1360, -963, -3343, -1360, -963, -3343, 0.0f, 0.0f, 0.0f), - CS_CAM_EYE_LIST(0, 1091), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x8BC0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x2200), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0xD0E8), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x0000), - CS_CAM_EYE_REL_TO_PLAYER_LIST(40, 1131), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x8BC0), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x2200), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x0000), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0xD0E8), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 50.800022f, 19, 40, 53, 0x0000), - CS_CAM_AT_LIST(0, 1120), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x8BC0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x2200), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 40.599983f, -1224, -979, -3366, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0xD0E8), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x0000), - CS_CAM_AT_REL_TO_PLAYER_LIST(40, 1160), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0x8BC0), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0x2200), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 50.800022f, -35, 56, -93, 0x0000), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0xD0E8), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 30, 50.800022f, -35, 56, -93, 0x0000), + CS_MISC(CS_MISC_STOP_CUTSCENE, 75, 627, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0xFFFFFFC0, 0x00000032, 0x00000000, 0x00000000, 0x00000000), + CS_ACTOR_CUE_LIST(48, 1), + CS_ACTOR_CUE(0x0002, 0, 90, 0x0000, 0x0000, 0x0000, -1360, -963, -3343, -1360, -963, -3343, 0.0f, 0.0f, 0.0f), + CS_CAM_EYE_SPLINE(0, 1091), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x8BC0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x2200), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.599983f, -1381, -958, -3331, 0xD0E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.599983f, -1381, -958, -3331, 0x0000), + CS_CAM_EYE_SPLINE_REL_TO_PLAYER(40, 1131), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x8BC0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x2200), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 50.800022f, 19, 40, 53, 0xD0E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 50.800022f, 19, 40, 53, 0x0000), + CS_CAM_AT_SPLINE(0, 1120), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x8BC0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x2200), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.599983f, -1224, -979, -3366, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.599983f, -1224, -979, -3366, 0xD0E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.599983f, -1224, -979, -3366, 0x0000), + CS_CAM_AT_SPLINE_REL_TO_PLAYER(40, 1160), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0x8BC0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0x2200), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 50.800022f, -35, 56, -93, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.800022f, -35, 56, -93, 0xD0E8), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 50.800022f, -35, 56, -93, 0x0000), CS_TEXT_LIST(2), CS_TEXT_NONE(0, 35), - CS_TEXT_DISPLAY_TEXTBOX(0x404F, 35, 70, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x404F, 35, 70, 0x0000, 0xFFFF, 0xFFFF), CS_END(), }; // clang-format on diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c index f1476abd99..c140b24269 100644 --- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c +++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c @@ -173,43 +173,41 @@ s32 EnRu2_UpdateSkelAnime(EnRu2* this) { return SkelAnime_Update(&this->skelAnime); } -CsCmdActorAction* func_80AF27AC(PlayState* play, s32 npcActionIdx) { +CsCmdActorCue* EnRu2_GetCue(PlayState* play, s32 cueChannel) { if (play->csCtx.state != CS_STATE_IDLE) { - return play->csCtx.npcActions[npcActionIdx]; + return play->csCtx.actorCues[cueChannel]; } return NULL; } -s32 func_80AF27D0(EnRu2* this, PlayState* play, u16 arg2, s32 npcActionIdx) { - CsCmdActorAction* csCmdActorAction = func_80AF27AC(play, npcActionIdx); +s32 func_80AF27D0(EnRu2* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnRu2_GetCue(play, cueChannel); - if ((csCmdActorAction != NULL) && (csCmdActorAction->action == arg2)) { + if ((cue != NULL) && (cue->id == cueId)) { return true; } return false; } -s32 func_80AF281C(EnRu2* this, PlayState* play, u16 arg2, s32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = func_80AF27AC(play, npcActionIdx); +s32 func_80AF281C(EnRu2* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnRu2_GetCue(play, cueChannel); - if ((csCmdNPCAction != NULL) && (csCmdNPCAction->action != arg2)) { + if ((cue != NULL) && (cue->id != cueId)) { return true; } return false; } -void func_80AF2868(EnRu2* this, PlayState* play, u32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = func_80AF27AC(play, npcActionIdx); - s16 newRotY; +void func_80AF2868(EnRu2* this, PlayState* play, u32 cueChannel) { + CsCmdActorCue* cue = EnRu2_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; - newRotY = csCmdNPCAction->rot.y; - thisx->shape.rot.y = newRotY; - thisx->world.rot.y = newRotY; + 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; } } @@ -268,7 +266,7 @@ void func_80AF2AB4(EnRu2* this, PlayState* play) { if ((gSaveContext.chamberCutsceneNum == 2) && !IS_CUTSCENE_LAYER) { player = GET_PLAYER(play); this->action = 1; - play->csCtx.segment = D_80AF411C; + play->csCtx.script = D_80AF411C; gSaveContext.cutsceneTrigger = 2; Item_Give(play, ITEM_MEDALLION_WATER); temp = this->actor.world.rot.y + 0x8000; @@ -279,11 +277,12 @@ void func_80AF2AB4(EnRu2* this, PlayState* play) { void func_80AF2B44(EnRu2* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; - CsCmdActorAction* csCmdNPCAction; + CsCmdActorCue* cue; if (csCtx->state != CS_STATE_IDLE) { - csCmdNPCAction = csCtx->npcActions[3]; - if ((csCmdNPCAction != NULL) && (csCmdNPCAction->action == 2)) { + cue = csCtx->actorCues[3]; + + if ((cue != NULL) && (cue->id == 2)) { this->action = 2; this->drawConfig = 1; func_80AF29DC(this, play); @@ -300,11 +299,12 @@ void func_80AF2B94(EnRu2* this) { void func_80AF2BC0(EnRu2* this, PlayState* play) { AnimationHeader* animation = &gAdultRutoRaisingArmsUpAnim; - CsCmdActorAction* csCmdNPCAction; + CsCmdActorCue* cue; if (play->csCtx.state != CS_STATE_IDLE) { - csCmdNPCAction = play->csCtx.npcActions[3]; - if ((csCmdNPCAction != NULL) && (csCmdNPCAction->action == 3)) { + cue = play->csCtx.actorCues[3]; + + if ((cue != NULL) && (cue->id == 3)) { Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_ONCE, 0.0f); this->action = 4; @@ -319,11 +319,12 @@ void func_80AF2C54(EnRu2* this, s32 arg1) { } void func_80AF2C68(EnRu2* 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 = 6; func_80AF2A38(this, play); } @@ -536,15 +537,16 @@ void func_80AF3530(EnRu2* this, s32 arg1) { } void func_80AF3564(EnRu2* this, PlayState* play) { - CsCmdActorAction* csCmdNPCAction = func_80AF27AC(play, 3); - s32 action; - s32 unk_2BC; + CsCmdActorCue* cue = EnRu2_GetCue(play, 3); + s32 nextCueId; + s32 currentCueId; - if (csCmdNPCAction != NULL) { - action = csCmdNPCAction->action; - unk_2BC = this->unk_2BC; - if (action != unk_2BC) { - switch (action) { + if (cue != NULL) { + nextCueId = cue->id; + currentCueId = this->cueId; + + if (nextCueId != currentCueId) { + switch (nextCueId) { case 7: func_80AF346C(this, play); break; @@ -556,7 +558,7 @@ void func_80AF3564(EnRu2* this, PlayState* play) { osSyncPrintf("En_Ru2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n"); break; } - this->unk_2BC = action; + this->cueId = nextCueId; } } } diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h index cf2e894ced..530f0c4a57 100644 --- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h +++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h @@ -21,7 +21,7 @@ typedef struct EnRu2 { /* 0x02B0 */ f32 unk_2B0; /* 0x02B4 */ u32 alpha; /* 0x02B8 */ s32 unk_2B8; - /* 0x02BC */ s32 unk_2BC; + /* 0x02BC */ s32 cueId; /* 0x02C0 */ u16 unk_2C0; /* 0x02C2 */ u8 unk_2C2; /* 0x02C3 */ u8 unk_2C3; diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.inc.c b/src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.inc.c index e265d10a9a..cd1cfcdf11 100644 --- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.inc.c @@ -6,219 +6,219 @@ static CutsceneData D_80AF411C[] = { CS_BEGIN_CUTSCENE(35, 3338), 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, 829, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0002, 829, 830, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0004, 830, 898, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0002, 898, 948, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.68f, 0.0f), - CS_NPC_ACTION(0x0003, 948, 3338, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f), - CS_PLAYER_ACTION_LIST(5), - CS_PLAYER_ACTION(0x000D, 0, 240, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), - CS_PLAYER_ACTION(0x0005, 240, 520, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), - CS_PLAYER_ACTION(0x0003, 520, 550, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), - CS_PLAYER_ACTION(0x0005, 550, 801, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), - CS_PLAYER_ACTION(0x0013, 801, 1956, 0x0000, 0xC000, 0x0000, 0, 6, 0, 0, 6, 0, 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_LIGHTING_LIST(5), - CS_LIGHTING(0x0005, 0, 384, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), - CS_LIGHTING(0x0006, 384, 454, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), - CS_LIGHTING(0x0005, 454, 554, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), - CS_LIGHTING(0x0006, 554, 624, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), - CS_LIGHTING(0x0005, 624, 3001, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), - 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(42, 3), - CS_NPC_ACTION(0x0001, 0, 146, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0002, 146, 754, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0003, 754, 2628, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), - CS_SCENE_TRANS_FX(0x0001, 810, 823), - CS_SCENE_TRANS_FX(0x0005, 825, 855), - CS_SCENE_TRANS_FX(0x0001, 1090, 1121), - CS_CAM_EYE_LIST(0, 301), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x1F98), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 145.79877f, -456, 107, 56, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -76, 54, 71, 0x0164), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 116, 54, 96, 0x2100), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0x0049), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0x204C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0xE990), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600002f, 236, 11, 64, 0x0000), - CS_CAM_EYE_LIST(263, 1484), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x1F98), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 42.22703f, 130, 9, 96, 0x0164), - CS_CAM_EYE_LIST(383, 1474), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 70.22702f, 207, 45, 34, 0x1F98), - CS_CAM_EYE_LIST(453, 1544), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.027042f, -58, 90, 70, 0x1F98), - CS_CAM_EYE_LIST(553, 1644), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 70.22702f, 207, 45, 34, 0x1F98), - CS_CAM_EYE_LIST(623, 1714), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.4271f, 161, 59, 0, 0x1F98), - CS_CAM_EYE_LIST(693, 1784), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.4271f, 151, 82, 35, 0x1F98), - CS_CAM_EYE_LIST(763, 944), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.4271f, 207, 62, 15, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x1F98), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x0000), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 70.42702f, 230, 240, 24, 0x0164), - CS_CAM_EYE_LIST(823, 1165), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x1FBC), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0xD5E0), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x0000), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x1F98), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x0000), - 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, 0x0164), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x2100), - CS_CAM_EYE_REL_TO_PLAYER_LIST(899, 2080), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x0000), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x1FBC), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0xD5E0), - 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, 0x1F98), - 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, 0x0000), - CS_CAM_EYE_REL_TO_PLAYER(CS_CMD_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x0164), - CS_CAM_AT_LIST(0, 330), - CS_CAM_AT(CS_CMD_CONTINUE, 0x1E, 20, 175.39832f, -649, -75, 101, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0xE2, 20, 175.39832f, -652, -75, 98, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x1E, 20, 175.39832f, -658, -75, 87, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0xE2, 20, 175.39832f, -678, 127, 71, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 175.39832f, -727, 0, 71, 0x1F98), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 145.79877f, -513, 0, 43, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -349, 89, 47, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, 6, 61, 1, 0x0164), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, 33, 66, 28, 0x2100), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0x0049), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0x204C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0xE990), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.600002f, 158, 42, 1, 0x0000), - CS_CAM_AT_LIST(263, 1513), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 42.22703f, 322, 62, -122, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 42.22703f, 322, 62, -122, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 42.22703f, 322, 62, -122, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 42.22703f, 232, 63, -83, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 42.22703f, 232, 63, -83, 0x1F98), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 42.22703f, 232, 63, -83, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 42.22703f, 232, 63, -83, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 42.22703f, 232, 63, -83, 0x0164), - CS_CAM_AT_LIST(383, 1503), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 70.22702f, 51, 62, -105, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.22702f, 51, 62, -105, 0x1F98), - CS_CAM_AT_LIST(453, 1573), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 45.027042f, 102, 22, -31, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.027042f, 102, 22, -31, 0x1F98), - CS_CAM_AT_LIST(553, 1673), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 70.22702f, 51, 62, -105, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.22702f, 51, 62, -105, 0x1F98), - CS_CAM_AT_LIST(623, 1743), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.4271f, 347, 22, 0, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.4271f, 347, 22, 0, 0x1F98), - CS_CAM_AT_LIST(693, 1813), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 1000, 60.4271f, 258, -30, -54, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.4271f, 258, -30, -54, 0x1F98), - CS_CAM_AT_LIST(763, 973), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.4271f, 96, 105, -29, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.4271f, 96, 105, -29, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.4271f, 96, 105, -29, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 15, 60.0271f, 110, 196, -26, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 70.42702f, 185, 399, 6, 0x1F98), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.42702f, 185, 399, 6, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 70.42702f, 185, 399, 6, 0x0000), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 70.42702f, 185, 399, 6, 0x0164), - CS_CAM_AT_LIST(823, 1214), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x1FBC), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0xD5E0), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x0000), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x1F98), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x0000), - 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, 0x0164), - CS_CAM_AT(CS_CMD_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x2100), - CS_CAM_AT_REL_TO_PLAYER_LIST(899, 2109), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x0000), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x1FBC), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0xD5E0), - 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, 30, 68.599945f, 0, 42, 16, 0x1F98), - CS_CAM_AT_REL_TO_PLAYER(CS_CMD_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x0000), - 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, 0x0164), - CS_NPC_ACTION_LIST(62, 1), - CS_NPC_ACTION(0x0004, 0, 3000, 0xC10F, 0x0000, 0x0000, 77, 80, -2, 0, 80, 0, -0.025666667f, 0.0f, 0.025666667f), + CS_ACTOR_CUE_LIST(31, 5), + CS_ACTOR_CUE(0x0001, 0, 829, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0002, 829, 830, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0004, 830, 898, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 216, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0002, 898, 948, 0x0000, 0x0000, 0x0000, 0, 216, 0, 0, 82, 0, 0.0f, -2.68f, 0.0f), + CS_ACTOR_CUE(0x0003, 948, 3338, 0x0000, 0x0000, 0x0000, 0, 82, 0, 0, 82, 0, 0.0f, 0.0f, 0.0f), + CS_PLAYER_CUE_LIST(5), + CS_PLAYER_CUE(0x000D, 0, 240, 0x0000, 0x0000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), + CS_PLAYER_CUE(0x0005, 240, 520, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), + CS_PLAYER_CUE(0x0003, 520, 550, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), + CS_PLAYER_CUE(0x0005, 550, 801, 0x0000, 0x4000, 0x0000, 0, 6, 0, 0, 6, 0, 0.0f, 0.0f, 0.0f), + CS_PLAYER_CUE(0x0013, 801, 1956, 0x0000, 0xC000, 0x0000, 0, 6, 0, 0, 6, 0, 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_LIGHT_SETTING_LIST(5), + CS_LIGHT_SETTING(0x0004, 0, 384, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), + CS_LIGHT_SETTING(0x0005, 384, 454, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), + CS_LIGHT_SETTING(0x0004, 454, 554, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), + CS_LIGHT_SETTING(0x0005, 554, 624, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), + CS_LIGHT_SETTING(0x0004, 624, 3001, 0x0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058), + 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(42, 3), + CS_ACTOR_CUE(0x0001, 0, 146, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0002, 146, 754, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0003, 754, 2628, 0x0000, 0x0000, 0x0000, 195, 6, 0, 195, 6, 0, 0.0f, 0.0f, 0.0f), + CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 810, 823), + CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 825, 855), + CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 1090, 1121), + CS_CAM_EYE_SPLINE(0, 301), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 175.39832f, -617, 30, 71, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 145.79877f, -456, 107, 56, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -76, 54, 71, 0x0164), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 116, 54, 96, 0x2100), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0x0049), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0x204C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, 236, 11, 64, 0xE990), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600002f, 236, 11, 64, 0x0000), + CS_CAM_EYE_SPLINE(263, 1484), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 161, 53, 26, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 42.22703f, 130, 9, 96, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 42.22703f, 130, 9, 96, 0x0164), + CS_CAM_EYE_SPLINE(383, 1474), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.22702f, 207, 45, 34, 0x1F98), + CS_CAM_EYE_SPLINE(453, 1544), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.027042f, -58, 90, 70, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.027042f, -58, 90, 70, 0x1F98), + CS_CAM_EYE_SPLINE(553, 1644), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.22702f, 207, 45, 34, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.22702f, 207, 45, 34, 0x1F98), + CS_CAM_EYE_SPLINE(623, 1714), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 161, 59, 0, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.4271f, 161, 59, 0, 0x1F98), + CS_CAM_EYE_SPLINE(693, 1784), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 151, 82, 35, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.4271f, 151, 82, 35, 0x1F98), + CS_CAM_EYE_SPLINE(763, 944), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 230, 7, 24, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.4271f, 207, 62, 15, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 70.42702f, 230, 240, 24, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 70.42702f, 230, 240, 24, 0x0164), + CS_CAM_EYE_SPLINE(823, 1165), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 13, 854, 2, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 853, 5, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -3, 853, 5, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 853, -6, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -2, 852, -17, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 9, 852, -17, 0x0000), + 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, 0x0164), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -3, 851, 5, 0x2100), + CS_CAM_EYE_SPLINE_REL_TO_PLAYER(899, 2080), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 33, -27, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 68.599945f, 0, 68, -26, 0xD5E0), + 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, 0x1F98), + 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, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 68.599945f, 0, 103, -26, 0x0164), + CS_CAM_AT_SPLINE(0, 330), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x1E, 20, 175.39832f, -649, -75, 101, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0xE2, 20, 175.39832f, -652, -75, 98, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x1E, 20, 175.39832f, -658, -75, 87, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0xE2, 20, 175.39832f, -678, 127, 71, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 175.39832f, -727, 0, 71, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 145.79877f, -513, 0, 43, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -349, 89, 47, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, 6, 61, 1, 0x0164), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, 33, 66, 28, 0x2100), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0x0049), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0x204C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, 158, 42, 1, 0xE990), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.600002f, 158, 42, 1, 0x0000), + CS_CAM_AT_SPLINE(263, 1513), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 42.22703f, 322, 62, -122, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 42.22703f, 322, 62, -122, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 42.22703f, 322, 62, -122, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 42.22703f, 232, 63, -83, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 42.22703f, 232, 63, -83, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 42.22703f, 232, 63, -83, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 42.22703f, 232, 63, -83, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 42.22703f, 232, 63, -83, 0x0164), + CS_CAM_AT_SPLINE(383, 1503), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 70.22702f, 51, 62, -105, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.22702f, 51, 62, -105, 0x1F98), + CS_CAM_AT_SPLINE(453, 1573), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 45.027042f, 102, 22, -31, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.027042f, 102, 22, -31, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.027042f, 102, 22, -31, 0x1F98), + CS_CAM_AT_SPLINE(553, 1673), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 70.22702f, 51, 62, -105, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.22702f, 51, 62, -105, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.22702f, 51, 62, -105, 0x1F98), + CS_CAM_AT_SPLINE(623, 1743), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.4271f, 347, 22, 0, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 347, 22, 0, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.4271f, 347, 22, 0, 0x1F98), + CS_CAM_AT_SPLINE(693, 1813), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.4271f, 258, -30, -54, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 258, -30, -54, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.4271f, 258, -30, -54, 0x1F98), + CS_CAM_AT_SPLINE(763, 973), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.4271f, 96, 105, -29, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.4271f, 96, 105, -29, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.4271f, 96, 105, -29, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0271f, 110, 196, -26, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 70.42702f, 185, 399, 6, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.42702f, 185, 399, 6, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 70.42702f, 185, 399, 6, 0x0000), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 70.42702f, 185, 399, 6, 0x0164), + CS_CAM_AT_SPLINE(823, 1214), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 60.0f, 3, 6, -6, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 40, 60.0f, 3, 6, -6, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 50.999966f, 3, 6, -6, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 20.59985f, 3, 6, -6, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 51, 10.799838f, 3, 6, -6, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 50, 10.399838f, 3, 6, -6, 0x0000), + 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, 0x0164), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 50, 10.999838f, 3, 6, -6, 0x2100), + CS_CAM_AT_SPLINE_REL_TO_PLAYER(899, 2109), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 100, 5, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 101, 6, 0x1FBC), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 1, 99, 41, 0xD5E0), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x0000), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 68.599945f, 0, 42, 16, 0x1F98), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 68.599945f, 0, 42, 16, 0x0000), + 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, 0x0164), + CS_ACTOR_CUE_LIST(62, 1), + CS_ACTOR_CUE(0x0004, 0, 3000, 0xC10F, 0x0000, 0x0000, 77, 80, -2, 0, 80, 0, -0.025666667f, 0.0f, 0.025666667f), CS_TEXT_LIST(14), CS_TEXT_NONE(0, 394), - CS_TEXT_DISPLAY_TEXTBOX(0x4041, 394, 444, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x4041, 394, 444, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(444, 464), - CS_TEXT_DISPLAY_TEXTBOX(0x4046, 464, 543, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x4046, 464, 543, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(543, 564), - CS_TEXT_DISPLAY_TEXTBOX(0x4049, 564, 613, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x4049, 564, 613, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(613, 634), - CS_TEXT_DISPLAY_TEXTBOX(0x4047, 634, 684, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x4047, 634, 684, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(684, 704), - CS_TEXT_DISPLAY_TEXTBOX(0x404A, 704, 750, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x404A, 704, 750, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(750, 1085), - CS_TEXT_DISPLAY_TEXTBOX(0x003D, 1085, 1090, 0x0000, 0x0000, 0x0000), + CS_TEXT(0x003D, 1085, 1090, 0x0000, 0x0000, 0x0000), CS_TEXT_NONE(1090, 1150), - CS_TEXT_DISPLAY_TEXTBOX(0x4042, 1150, 1160, 0x0000, 0x0000, 0x0000), - CS_TERMINATOR(LAKE_HYLIA_WATER_RISES, 1190, 1213), - CS_PLAY_BGM_LIST(1), - CS_PLAY_BGM(0x0044, 900, 901, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x00000034, 0x00000000, 0xFFFFFFC7, 0x00000034), - CS_FADE_BGM_LIST(1), - CS_FADE_BGM(0x0004, 800, 850, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC6, 0x00000030, 0x00000000, 0xFFFFFFC6, 0x00000030), + CS_TEXT(0x4042, 1150, 1160, 0x0000, 0x0000, 0x0000), + CS_DESTINATION(CS_DEST_LAKE_HYLIA_WATER_RESTORED, 1190, 1213), + CS_START_SEQ_LIST(1), + CS_START_SEQ(NA_BGM_MEDALLION_GET, 900, 901, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x00000034, 0x00000000, 0xFFFFFFC7, 0x00000034), + CS_FADE_OUT_SEQ_LIST(1), + CS_FADE_OUT_SEQ(CS_FADE_OUT_BGM_MAIN, 800, 850, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFC6, 0x00000030, 0x00000000, 0xFFFFFFC6, 0x00000030), CS_END(), }; // clang-format on diff --git a/src/overlays/actors/ovl_En_Sa/z_en_sa.c b/src/overlays/actors/ovl_En_Sa/z_en_sa.c index 5e7b343470..8c9e3183f0 100644 --- a/src/overlays/actors/ovl_En_Sa/z_en_sa.c +++ b/src/overlays/actors/ovl_En_Sa/z_en_sa.c @@ -466,16 +466,16 @@ void func_80AF609C(EnSa* this) { } } -void func_80AF6130(CsCmdActorAction* csAction, Vec3f* dst) { - dst->x = csAction->startPos.x; - dst->y = csAction->startPos.y; - dst->z = csAction->startPos.z; +void func_80AF6130(CsCmdActorCue* cue, Vec3f* dst) { + dst->x = cue->startPos.x; + dst->y = cue->startPos.y; + dst->z = cue->startPos.z; } -void func_80AF6170(CsCmdActorAction* csAction, Vec3f* dst) { - dst->x = csAction->endPos.x; - dst->y = csAction->endPos.y; - dst->z = csAction->endPos.z; +void func_80AF6170(CsCmdActorCue* cue, Vec3f* dst) { + dst->x = cue->endPos.x; + dst->y = cue->endPos.y; + dst->z = cue->endPos.z; } void EnSa_Init(Actor* thisx, PlayState* play) { @@ -505,7 +505,7 @@ void EnSa_Init(Actor* thisx, PlayState* play) { case 4: this->unk_210 = 0; this->actor.gravity = -1.0f; - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gSpot04Cs_10E20); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gSpot04Cs_10E20); gSaveContext.cutsceneTrigger = 1; EnSa_ChangeAnim(this, ENSA_ANIM1_4); this->actionFunc = func_80AF68E4; @@ -625,7 +625,7 @@ void func_80AF683C(EnSa* this, PlayState* play) { Player* player = GET_PLAYER(play); if (!(player->actor.world.pos.z >= -2220.0f) && !Play_InCsMode(play)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(spot05_scene_Cs_005730); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(spot05_scene_Cs_005730); gSaveContext.cutsceneTrigger = 1; this->actionFunc = func_80AF68E4; } @@ -636,7 +636,7 @@ void func_80AF68E4(EnSa* this, PlayState* play) { Vec3f startPos; Vec3f endPos; Vec3f D_80AF7448 = { 0.0f, 0.0f, 0.0f }; - CsCmdActorAction* csAction; + CsCmdActorCue* cue; f32 temp_f0; f32 gravity; @@ -644,16 +644,18 @@ void func_80AF68E4(EnSa* this, PlayState* play) { this->actionFunc = func_80AF6B20; return; } - csAction = play->csCtx.npcActions[1]; - if (csAction != NULL) { - func_80AF6130(csAction, &startPos); - func_80AF6170(csAction, &endPos); + + cue = play->csCtx.actorCues[1]; + + if (cue != NULL) { + func_80AF6130(cue, &startPos); + func_80AF6170(cue, &endPos); if (this->unk_210 == 0) { this->actor.world.pos = startPos; } - if (this->unk_210 != csAction->action) { - switch (csAction->action) { + if (this->unk_210 != cue->id) { + switch (cue->id) { case 2: this->mouthIndex = 1; break; @@ -664,11 +666,13 @@ void func_80AF68E4(EnSa* this, PlayState* play) { this->mouthIndex = 0; break; } - EnSa_ChangeAnim(this, csAction->action); - this->unk_210 = csAction->action; + EnSa_ChangeAnim(this, cue->id); + this->unk_210 = cue->id; } + if (phi_v0) {} - if (csAction->action == 3) { + + if (cue->id == 3) { if (this->unk_20C == 0) { phi_v0 = 0; } else { @@ -681,13 +685,13 @@ void func_80AF68E4(EnSa* this, PlayState* play) { this->unk_20C = 8; } } - 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 = D_80AF7448; - if (play->csCtx.frames < csAction->endFrame) { - temp_f0 = csAction->endFrame - csAction->startFrame; + if (play->csCtx.curFrame < cue->endFrame) { + temp_f0 = cue->endFrame - cue->startFrame; this->actor.velocity.x = (endPos.x - startPos.x) / temp_f0; this->actor.velocity.y = (endPos.y - startPos.y) / temp_f0; gravity = this->actor.gravity; diff --git a/src/overlays/actors/ovl_En_Tr/z_en_tr.c b/src/overlays/actors/ovl_En_Tr/z_en_tr.c index ce9fc4858e..f7f84436d8 100644 --- a/src/overlays/actors/ovl_En_Tr/z_en_tr.c +++ b/src/overlays/actors/ovl_En_Tr/z_en_tr.c @@ -19,9 +19,9 @@ void EnTr_ShrinkVanish(EnTr* this, PlayState* play); void EnTr_WaitToReappear(EnTr* this, PlayState* play); void EnTr_ChooseAction1(EnTr* this, PlayState* play); -void EnTr_UpdateRotation(EnTr* this, PlayState* play, s32 actionIndex); -void func_80B24038(EnTr* this, PlayState* play, s32 actionIndex); -void EnTr_SetStartPosRot(EnTr* this, PlayState* play, s32 actionIndex); +void EnTr_SetRotFromCue(EnTr* this, PlayState* play, s32 cueChannel); +void func_80B24038(EnTr* this, PlayState* play, s32 cueChannel); +void EnTr_SetStartPosRotFromCue(EnTr* this, PlayState* play, s32 cueChannel); ActorInit En_Tr_InitVars = { ACTOR_EN_TR, @@ -100,7 +100,7 @@ void EnTr_Init(Actor* thisx, PlayState* play) { Animation_PlayOnce(&this->skelAnime, &gKotakeKoumeStandingBroomOverRightShoulderAnim); this->animation = NULL; EnTr_SetupAction(this, EnTr_ChooseAction1); - this->actionIndex = 3; + this->cueChannel = 3; break; case TR_KOTAKE: @@ -109,7 +109,7 @@ void EnTr_Init(Actor* thisx, PlayState* play) { Animation_PlayOnce(&this->skelAnime, &gKotakeKoumeStandingBroomOverLeftShoulderAnim); this->animation = NULL; EnTr_SetupAction(this, EnTr_ChooseAction1); - this->actionIndex = 2; + this->cueChannel = 2; break; default: @@ -143,8 +143,8 @@ void EnTr_DoNothing(EnTr* this, PlayState* play) { void EnTr_ChooseAction2(EnTr* this, PlayState* play) { if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.npcActions[this->actionIndex] != NULL) { - switch (play->csCtx.npcActions[this->actionIndex]->action) { + if (play->csCtx.actorCues[this->cueChannel] != NULL) { + switch (play->csCtx.actorCues[this->cueChannel]->id) { case 4: Actor_SetScale(&this->actor, 0.01f); @@ -166,8 +166,8 @@ void EnTr_ChooseAction2(EnTr* this, PlayState* play) { break; default: - func_80B24038(this, play, this->actionIndex); - EnTr_UpdateRotation(this, play, this->actionIndex); + func_80B24038(this, play, this->cueChannel); + EnTr_SetRotFromCue(this, play, this->cueChannel); break; } func_8002F974(&this->actor, NA_SE_EN_TWINROBA_FLY_DEMO - SFX_FLAG); @@ -179,14 +179,14 @@ void EnTr_FlyKidnapCutscene(EnTr* this, PlayState* play) { Vec3f originalPos = this->actor.world.pos; if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.npcActions[this->actionIndex] != NULL) { - if (play->csCtx.npcActions[this->actionIndex]->action == 8) { - func_80B24038(this, play, this->actionIndex); + if (play->csCtx.actorCues[this->cueChannel] != NULL) { + if (play->csCtx.actorCues[this->cueChannel]->id == 8) { + func_80B24038(this, play, this->cueChannel); this->actor.world.rot.y = Math_Atan2S(this->actor.velocity.z, this->actor.velocity.x); Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.world.rot.y, 10, 0x400, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; } else { - EnTr_SetStartPosRot(this, play, this->actionIndex); + EnTr_SetStartPosRotFromCue(this, play, this->cueChannel); this->actor.world.pos.x += Math_SinS(this->timer) * 150.0f; this->actor.world.pos.y += -100.0f; this->actor.world.pos.z += Math_CosS(this->timer) * 150.0f; @@ -199,7 +199,7 @@ void EnTr_FlyKidnapCutscene(EnTr* this, PlayState* play) { this->actor.velocity.z = this->actor.world.pos.z - originalPos.z; } - if (play->csCtx.frames < 670) { + if (play->csCtx.curFrame < 670) { func_8002F974(&this->actor, NA_SE_EN_TWINROBA_FLY_DEMO - SFX_FLAG); } } @@ -294,12 +294,11 @@ void EnTr_Reappear(EnTr* this, PlayState* play) { void EnTr_WaitToReappear(EnTr* this, PlayState* play) { if (play->csCtx.state != CS_STATE_IDLE) { - if ((play->csCtx.npcActions[this->actionIndex] != NULL) && - ((play->csCtx.npcActions[this->actionIndex]->action == 3) || - (play->csCtx.npcActions[this->actionIndex]->action == 5))) { + if ((play->csCtx.actorCues[this->cueChannel] != NULL) && ((play->csCtx.actorCues[this->cueChannel]->id == 3) || + (play->csCtx.actorCues[this->cueChannel]->id == 5))) { Actor_PlaySfx(&this->actor, NA_SE_EN_TWINROBA_TRANSFORM); this->timer = 34; - EnTr_SetStartPosRot(this, play, this->actionIndex); + EnTr_SetStartPosRotFromCue(this, play, this->cueChannel); EnTr_SetupAction(this, EnTr_Reappear); Animation_PlayLoop(&this->skelAnime, &gKotakeKoumeFlyAnim); this->animation = NULL; @@ -312,8 +311,7 @@ void EnTr_TakeOff(EnTr* this, PlayState* play) { f32 lastFrame = Animation_GetLastFrame(D_80B24378[this->actor.params]); if (play->csCtx.state != CS_STATE_IDLE) { - if ((play->csCtx.npcActions[this->actionIndex] != NULL) && - (play->csCtx.npcActions[this->actionIndex]->action == 3)) { + if ((play->csCtx.actorCues[this->cueChannel] != NULL) && (play->csCtx.actorCues[this->cueChannel]->id == 3)) { Animation_Change(&this->skelAnime, D_80B24378[this->actor.params], 1.0f, 0.0f, lastFrame, ANIMMODE_LOOP, -10.0f); this->animation = NULL; @@ -326,8 +324,7 @@ void EnTr_TurnLookOverShoulder(EnTr* this, PlayState* play) { f32 lastFrame = Animation_GetLastFrame(D_80B24368[this->actor.params]); if (play->csCtx.state != CS_STATE_IDLE) { - if ((play->csCtx.npcActions[this->actionIndex] != NULL) && - (play->csCtx.npcActions[this->actionIndex]->action == 2)) { + if ((play->csCtx.actorCues[this->cueChannel] != NULL) && (play->csCtx.actorCues[this->cueChannel]->id == 2)) { Animation_Change(&this->skelAnime, D_80B24368[this->actor.params], 1.0f, 0.0f, lastFrame, ANIMMODE_ONCE, -4.0f); this->animation = D_80B24370[this->actor.params]; @@ -340,15 +337,15 @@ void EnTr_ChooseAction1(EnTr* this, PlayState* play) { u32 frames = play->gameplayFrames; if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.npcActions[this->actionIndex] != NULL) { - switch (play->csCtx.npcActions[this->actionIndex]->action) { + if (play->csCtx.actorCues[this->cueChannel] != NULL) { + switch (play->csCtx.actorCues[this->cueChannel]->id) { case 1: - EnTr_SetStartPosRot(this, play, this->actionIndex); + EnTr_SetStartPosRotFromCue(this, play, this->cueChannel); EnTr_SetupAction(this, EnTr_TurnLookOverShoulder); break; case 3: - EnTr_SetStartPosRot(this, play, this->actionIndex); + EnTr_SetStartPosRotFromCue(this, play, this->cueChannel); EnTr_SetupAction(this, EnTr_ChooseAction2); Animation_PlayLoop(&this->skelAnime, &gKotakeKoumeFlyAnim); this->animation = NULL; @@ -432,7 +429,7 @@ void EnTr_Draw(Actor* thisx, PlayState* play) { if (1) {} - if ((play->csCtx.state == CS_STATE_IDLE) || (play->csCtx.npcActions[this->actionIndex] == NULL)) { + if ((play->csCtx.state == CS_STATE_IDLE) || (play->csCtx.actorCues[this->cueChannel] == NULL)) { this->actor.shape.shadowDraw = NULL; } else { this->actor.shape.shadowDraw = ActorShadow_DrawCircle; @@ -447,29 +444,29 @@ void EnTr_Draw(Actor* thisx, PlayState* play) { } } -f32 func_80B23FDC(PlayState* play, s32 actionIndex) { - f32 phi_f2 = Environment_LerpWeight(play->csCtx.npcActions[actionIndex]->endFrame, - play->csCtx.npcActions[actionIndex]->startFrame, play->csCtx.frames); +f32 func_80B23FDC(PlayState* play, s32 cueChannel) { + f32 phi_f2 = Environment_LerpWeight(play->csCtx.actorCues[cueChannel]->endFrame, + play->csCtx.actorCues[cueChannel]->startFrame, play->csCtx.curFrame); phi_f2 = CLAMP_MAX(phi_f2, 1.0f); return phi_f2; } -void func_80B24038(EnTr* this, PlayState* play, s32 actionIndex) { +void func_80B24038(EnTr* this, PlayState* play, s32 cueChannel) { Vec3f startPos; Vec3f endPos; f32 temp_f0; f32 temp_f0_2; f32 phi_f12; - startPos.x = play->csCtx.npcActions[actionIndex]->startPos.x; - startPos.y = play->csCtx.npcActions[actionIndex]->startPos.y; - startPos.z = play->csCtx.npcActions[actionIndex]->startPos.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; - endPos.x = play->csCtx.npcActions[actionIndex]->endPos.x; - endPos.y = play->csCtx.npcActions[actionIndex]->endPos.y; - endPos.z = play->csCtx.npcActions[actionIndex]->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; - temp_f0 = func_80B23FDC(play, actionIndex); + temp_f0 = func_80B23FDC(play, cueChannel); startPos.x = ((endPos.x - startPos.x) * temp_f0) + startPos.x; startPos.y = ((endPos.y - startPos.y) * temp_f0) + startPos.y; @@ -494,8 +491,8 @@ void func_80B24038(EnTr* this, PlayState* play, s32 actionIndex) { func_8002D7EC(&this->actor); } -void EnTr_UpdateRotation(EnTr* this, PlayState* play, s32 actionIndex) { - s16 rotY = play->csCtx.npcActions[actionIndex]->rot.y; +void EnTr_SetRotFromCue(EnTr* this, PlayState* play, s32 cueChannel) { + s16 rotY = play->csCtx.actorCues[cueChannel]->rot.y; s32 rotDiff = this->actor.world.rot.y - rotY; s32 rotSign; @@ -517,13 +514,13 @@ void EnTr_UpdateRotation(EnTr* this, PlayState* play, s32 actionIndex) { this->actor.shape.rot.y = this->actor.world.rot.y; } -void EnTr_SetStartPosRot(EnTr* this, PlayState* play, s32 actionIndex) { +void EnTr_SetStartPosRotFromCue(EnTr* this, PlayState* play, s32 cueChannel) { Vec3f startPos; - startPos.x = play->csCtx.npcActions[actionIndex]->startPos.x; - startPos.y = play->csCtx.npcActions[actionIndex]->startPos.y; - startPos.z = play->csCtx.npcActions[actionIndex]->startPos.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; this->actor.world.pos = startPos; - this->actor.world.rot.y = this->actor.shape.rot.y = play->csCtx.npcActions[actionIndex]->rot.y; + this->actor.world.rot.y = this->actor.shape.rot.y = play->csCtx.actorCues[cueChannel]->rot.y; } diff --git a/src/overlays/actors/ovl_En_Tr/z_en_tr.h b/src/overlays/actors/ovl_En_Tr/z_en_tr.h index 656ab2f17e..c3c5f74ae0 100644 --- a/src/overlays/actors/ovl_En_Tr/z_en_tr.h +++ b/src/overlays/actors/ovl_En_Tr/z_en_tr.h @@ -46,7 +46,7 @@ typedef struct EnTr { /* 0x0232 */ Vec3s morphTable[KOTAKE_KOUME_LIMB_MAX]; /* 0x02D4 */ s16 unk_2D4; /* 0x02D6 */ u16 timer; // Also used as an angle - /* 0x02D8 */ s16 actionIndex; + /* 0x02D8 */ s16 cueChannel; /* 0x02DC */ EnTrActionFunc actionFunc; /* 0x02E0 */ s16 eyeIndex; /* 0x02E2 */ s16 blinkTimer; diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c index 3e503ff374..f1ab2bfc94 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c @@ -195,15 +195,15 @@ static s16 sTimer = 0; void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { u8 type = this->actor.params >> 8; - u16 csFrames; + u16 csCurFrame; s32 animationEnded; if (type == ENVIEWER_TYPE_2_ZELDA) { if (gSaveContext.sceneLayer == 5) { - csFrames = play->csCtx.frames; - if (csFrames == 792) { + csCurFrame = play->csCtx.curFrame; + if (csCurFrame == 792) { Actor_PlaySfx(&this->actor, NA_SE_VO_Z0_SURPRISE); - } else if (csFrames == 845) { + } else if (csCurFrame == 845) { Actor_PlaySfx(&this->actor, NA_SE_VO_Z0_THROW); } } @@ -214,7 +214,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { this->actor.uncullZoneDownward = 10000.0f; } else if (type == ENVIEWER_TYPE_3_GANONDORF) { if (gSaveContext.sceneLayer == 4) { - switch (play->csCtx.frames) { + switch (play->csCtx.curFrame) { case 20: case 59: case 71: @@ -232,18 +232,18 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } } if (gSaveContext.sceneLayer == 5) { - if (play->csCtx.frames == 1508) { + if (play->csCtx.curFrame == 1508) { Actor_PlaySfx(&this->actor, NA_SE_EN_FANTOM_ST_LAUGH); } - if (play->csCtx.frames == 1545) { + if (play->csCtx.curFrame == 1545) { Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_6K, 32.0f, 101.0f, 1226.0f, 0, 0, 0, 0xC); } } - if (play->csCtx.frames == 1020) { + if (play->csCtx.curFrame == 1020) { SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_FANFARE, 0, 0, NA_BGM_OPENING_GANON); } - if (play->csCtx.frames == 960) { + if (play->csCtx.curFrame == 960) { Audio_PlaySfxGeneral(NA_SE_EV_HORSE_GROAN, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } @@ -279,8 +279,8 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { animationEnded = SkelAnime_Update(&this->skin.skelAnime); if (type == ENVIEWER_TYPE_3_GANONDORF || type == ENVIEWER_TYPE_4_HORSE_GANONDORF) { - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL) { - if (play->csCtx.npcActions[1]->action == 2 && sTimer == 0) { + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[1] != NULL) { + if (play->csCtx.actorCues[1]->id == 2 && sTimer == 0) { if (type == ENVIEWER_TYPE_3_GANONDORF) { if (this->skin.skelAnime.animation != &gYoungGanondorfHorsebackIdleAnim) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfHorsebackIdleAnim, 1.0f); @@ -288,7 +288,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } else if (this->skin.skelAnime.animation != &gHorseGanonIdleAnim) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonIdleAnim, 1.0f); } - } else if (play->csCtx.npcActions[1]->action == 1) { + } else if (play->csCtx.actorCues[1]->id == 1) { sTimer = 100; if (type == ENVIEWER_TYPE_3_GANONDORF) { if (this->skin.skelAnime.animation != &gYoungGanondorfHorsebackRearAnim) { @@ -300,7 +300,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } else if (type == ENVIEWER_TYPE_3_GANONDORF) { switch (this->state) { case 0: - if (play->csCtx.npcActions[1]->action == 4) { + if (play->csCtx.actorCues[1]->id == 4) { Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfHorsebackLookSidewaysStartAnim, -5.0f); this->state++; @@ -314,7 +314,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } break; case 2: - if (play->csCtx.npcActions[1]->action == 5) { + if (play->csCtx.actorCues[1]->id == 5) { Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfHorsebackMagicChargeUpStartAnim, -5.0f); this->state++; @@ -328,20 +328,20 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } break; case 4: - if (play->csCtx.npcActions[1]->action == 11) { + if (play->csCtx.actorCues[1]->id == 11) { Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackLookSidewaysLoopAnim, -20.0f); this->state++; } break; case 5: - if (play->csCtx.npcActions[1]->action == 8) { + if (play->csCtx.actorCues[1]->id == 8) { Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackIdleAnim, -15.0f); this->state++; } break; case 6: - if (play->csCtx.npcActions[1]->action == 12) { + if (play->csCtx.actorCues[1]->id == 12) { Actor_PlaySfx(&this->actor, NA_SE_EN_GANON_VOICE_DEMO); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfHorsebackRideAnim, 3.0f); this->state++; @@ -352,34 +352,34 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { break; } } else if (this->skin.skelAnime.animation != &gHorseGanonGallopingAnim && - play->csCtx.npcActions[1]->action == 12) { + play->csCtx.actorCues[1]->id == 12) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonGallopingAnim, 3.0f); } } } else if (type == ENVIEWER_TYPE_1_IMPA) { if (gSaveContext.sceneLayer == 5) { - if (play->csCtx.frames == 845) { + if (play->csCtx.curFrame == 845) { Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_ITEM_OCARINA, 4.0f, 81.0f, 2600.0f, 0, 0, 0, 0); } } else { - if (play->csCtx.frames == 195) { + if (play->csCtx.curFrame == 195) { Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_ITEM_OCARINA, 4.0f, 81.0f, 2035.0f, 0, 0, 0, 1); } } switch (this->state) { case 0: - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[0] != NULL && - play->csCtx.npcActions[0]->action == 6 && + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[0] != NULL && + play->csCtx.actorCues[0]->id == 6 && this->skin.skelAnime.animation != &object_opening_demo1_Anim_002574) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_opening_demo1_Anim_002574, 1.5f); this->state++; } break; case 1: - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[0] != NULL && - play->csCtx.npcActions[0]->action == 2 && + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[0] != NULL && + play->csCtx.actorCues[0]->id == 2 && this->skin.skelAnime.animation != &object_opening_demo1_Anim_0029CC) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_opening_demo1_Anim_0029CC, 3.0f); this->state++; @@ -391,7 +391,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { switch (this->state) { case 0: if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.npcActions[0] != NULL && play->csCtx.npcActions[0]->action == 6 && + if (play->csCtx.actorCues[0] != NULL && play->csCtx.actorCues[0]->id == 6 && this->skin.skelAnime.animation != &object_opening_demo1_Anim_001410) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_opening_demo1_Anim_001410, 1.5f); this->state++; @@ -400,7 +400,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { break; case 1: 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->skin.skelAnime.animation != &object_opening_demo1_Anim_000450) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_opening_demo1_Anim_000450, 3.0f); this->state++; @@ -416,7 +416,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { this->state++; break; case 1: - if (play->csCtx.npcActions[0]->action == 11) { + if (play->csCtx.actorCues[0]->id == 11) { Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_opening_demo1_Anim_00420C, -5.0f); this->state++; } @@ -434,8 +434,8 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } else if (type == ENVIEWER_TYPE_7_GANONDORF) { switch (this->state) { case 0: - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL && - play->csCtx.npcActions[1]->action == 7) { + if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[1] != NULL) && + (play->csCtx.actorCues[1]->id == 7)) { Audio_PlaySfxGeneral(NA_SE_EN_GANON_LAUGH, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfLaughStartAnim, -5.0f); @@ -453,14 +453,14 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { switch (this->state) { case 0: if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.npcActions[1] != NULL && play->csCtx.npcActions[1]->action == 9) { + if ((play->csCtx.actorCues[1] != NULL) && (play->csCtx.actorCues[1]->id == 9)) { Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfWalkAnim, 1.0f); this->state++; } } break; case 1: - if (play->csCtx.npcActions[1]->action == 10) { + if (play->csCtx.actorCues[1]->id == 10) { Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfKneelStartAnim, -10.0f); this->state++; } @@ -472,7 +472,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) { } break; case 3: - if (play->csCtx.npcActions[1]->action == 4) { + if (play->csCtx.actorCues[1]->id == 4) { Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfKneelLookSidewaysAnim, -5.0f); this->state++; } @@ -494,13 +494,13 @@ void EnViewer_Update(Actor* thisx, PlayState* play) { s32 EnViewer_Ganondorf3OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) { if (gSaveContext.sceneLayer == 4) { - if (play->csCtx.frames >= 400) { + if (play->csCtx.curFrame >= 400) { if (limbIndex == YOUNG_GANONDORF_LIMB_LEFT_HAND) { *dList = gYoungGanondorfOpenLeftHandDL; } } } else { - if (play->csCtx.frames >= 1510 && play->csCtx.frames <= 1650) { + if ((play->csCtx.curFrame >= 1510) && (play->csCtx.curFrame <= 1650)) { if (limbIndex == YOUNG_GANONDORF_LIMB_LEFT_HAND) { *dList = gYoungGanondorfOpenLeftHandDL; } @@ -533,22 +533,24 @@ void EnViewer_DrawGanondorf(EnViewer* this, PlayState* play) { s16 type; OPEN_DISPS(play->state.gfxCtx, "../z_en_viewer.c", 1405); + type = this->actor.params >> 8; + if (type == ENVIEWER_TYPE_3_GANONDORF || type == ENVIEWER_TYPE_5_GANONDORF || type == ENVIEWER_TYPE_7_GANONDORF || type == ENVIEWER_TYPE_8_GANONDORF) { if (gSaveContext.sceneLayer != 4) { frames = 149; } - if (frames + 1127 >= play->csCtx.frames) { + if (frames + 1127 >= play->csCtx.curFrame) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeOpenTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeOpenTex)); - } else if (frames + 1128 >= play->csCtx.frames) { + } else if (frames + 1128 >= play->csCtx.curFrame) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeHalfTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeHalfTex)); - } else if (frames + 1129 >= play->csCtx.frames) { + } else if (frames + 1129 >= play->csCtx.curFrame) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeClosedTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gYoungGanondorfEyeClosedTex)); @@ -570,7 +572,7 @@ void EnViewer_DrawGanondorf(EnViewer* this, PlayState* play) { EnViewer_UpdateGanondorfCape(play, this); } else if (type == ENVIEWER_TYPE_3_GANONDORF || type == ENVIEWER_TYPE_5_GANONDORF || type == ENVIEWER_TYPE_7_GANONDORF || type == ENVIEWER_TYPE_8_GANONDORF) { - if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[1] != NULL)) { + if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[1] != NULL)) { SkelAnime_DrawFlexOpa(play, this->skin.skelAnime.skeleton, this->skin.skelAnime.jointTable, this->skin.skelAnime.dListCount, NULL, EnViewer_GanondorfPostLimbDrawUpdateCapeVec, this); @@ -625,22 +627,22 @@ void EnViewer_ZeldaPostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec void EnViewer_DrawZelda(EnViewer* this, PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_en_viewer.c", 1583); if (play->sceneId == SCENE_HYRULE_FIELD) { - if (play->csCtx.frames < 771) { + if (play->csCtx.curFrame < 771) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeInTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeOutTex)); - } else if (play->csCtx.frames < 772) { + } else if (play->csCtx.curFrame < 772) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeBlinkTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeBlinkTex)); - } else if (play->csCtx.frames < 773) { + } else if (play->csCtx.curFrame < 773) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeShutTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeShutTex)); - } else if (play->csCtx.frames < 791) { + } else if (play->csCtx.curFrame < 791) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeWideTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeWideTex)); - } else if (play->csCtx.frames < 792) { + } else if (play->csCtx.curFrame < 792) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeBlinkTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeBlinkTex)); - } else if (play->csCtx.frames < 793) { + } else if (play->csCtx.curFrame < 793) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeShutTex)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeShutTex)); } else { @@ -651,9 +653,9 @@ void EnViewer_DrawZelda(EnViewer* this, PlayState* play) { if (gSaveContext.sceneLayer == 6) { gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(gChildZeldaMouthSurprisedTex)); } else { - if (play->csCtx.frames < 758) { + if (play->csCtx.curFrame < 758) { gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(gChildZeldaMouthWorriedTex)); - } else if (play->csCtx.frames < 848) { + } else if (play->csCtx.curFrame < 848) { gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(gChildZeldaMouthSurprisedTex)); } else { gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(gChildZeldaMouthWorriedTex)); @@ -704,11 +706,11 @@ void EnViewer_Draw(Actor* thisx, PlayState* play) { if (this->isVisible) { type = this->actor.params >> 8; if (type <= ENVIEWER_TYPE_2_ZELDA) { // zelda's horse, impa and zelda - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[0] != NULL) { + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[0] != NULL) { Gfx_SetupDL_25Opa(play->state.gfxCtx); sDrawFuncs[this->drawFuncIndex](this, play); } - } else if ((play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL) || + } else if ((play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[1] != NULL) || type == ENVIEWER_TYPE_9_GANONDORF) { Gfx_SetupDL_25Opa(play->state.gfxCtx); sDrawFuncs[this->drawFuncIndex](this, play); @@ -724,8 +726,8 @@ void EnViewer_UpdatePosition(EnViewer* this, PlayState* play) { s16 type = this->actor.params >> 8; if (type <= ENVIEWER_TYPE_2_ZELDA) { // zelda's horse, impa and zelda - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[0] != NULL && - play->csCtx.frames < play->csCtx.npcActions[0]->endFrame) { + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[0] != NULL && + play->csCtx.curFrame < play->csCtx.actorCues[0]->endFrame) { if (type == ENVIEWER_TYPE_0_HORSE_ZELDA) { if (!sHorseSfxPlayed) { sHorseSfxPlayed = true; @@ -735,34 +737,34 @@ void EnViewer_UpdatePosition(EnViewer* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EV_HORSE_RUN_LEVEL - SFX_FLAG); } - startPos.x = play->csCtx.npcActions[0]->startPos.x; - startPos.y = play->csCtx.npcActions[0]->startPos.y; - startPos.z = play->csCtx.npcActions[0]->startPos.z; - endPos.x = play->csCtx.npcActions[0]->endPos.x; - endPos.y = play->csCtx.npcActions[0]->endPos.y; - endPos.z = play->csCtx.npcActions[0]->endPos.z; - lerpFactor = Environment_LerpWeight(play->csCtx.npcActions[0]->endFrame, - play->csCtx.npcActions[0]->startFrame, play->csCtx.frames); + startPos.x = play->csCtx.actorCues[0]->startPos.x; + startPos.y = play->csCtx.actorCues[0]->startPos.y; + startPos.z = play->csCtx.actorCues[0]->startPos.z; + endPos.x = play->csCtx.actorCues[0]->endPos.x; + endPos.y = play->csCtx.actorCues[0]->endPos.y; + endPos.z = play->csCtx.actorCues[0]->endPos.z; + lerpFactor = Environment_LerpWeight(play->csCtx.actorCues[0]->endFrame, + play->csCtx.actorCues[0]->startFrame, play->csCtx.curFrame); this->actor.world.pos.x = (endPos.x - startPos.x) * lerpFactor + startPos.x; this->actor.world.pos.y = (endPos.y - startPos.y) * lerpFactor + startPos.y; this->actor.world.pos.z = (endPos.z - startPos.z) * lerpFactor + startPos.z; } } else { // ganondorf and ganondorf's horse - if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL && - play->csCtx.frames < play->csCtx.npcActions[1]->endFrame) { - startPos.x = play->csCtx.npcActions[1]->startPos.x; - startPos.y = play->csCtx.npcActions[1]->startPos.y; - startPos.z = play->csCtx.npcActions[1]->startPos.z; - endPos.x = play->csCtx.npcActions[1]->endPos.x; - endPos.y = play->csCtx.npcActions[1]->endPos.y; - endPos.z = play->csCtx.npcActions[1]->endPos.z; - lerpFactor = Environment_LerpWeight(play->csCtx.npcActions[1]->endFrame, - play->csCtx.npcActions[1]->startFrame, play->csCtx.frames); + if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.actorCues[1] != NULL && + play->csCtx.curFrame < play->csCtx.actorCues[1]->endFrame) { + startPos.x = play->csCtx.actorCues[1]->startPos.x; + startPos.y = play->csCtx.actorCues[1]->startPos.y; + startPos.z = play->csCtx.actorCues[1]->startPos.z; + endPos.x = play->csCtx.actorCues[1]->endPos.x; + endPos.y = play->csCtx.actorCues[1]->endPos.y; + endPos.z = play->csCtx.actorCues[1]->endPos.z; + lerpFactor = Environment_LerpWeight(play->csCtx.actorCues[1]->endFrame, + play->csCtx.actorCues[1]->startFrame, play->csCtx.curFrame); this->actor.world.pos.x = (endPos.x - startPos.x) * lerpFactor + startPos.x; this->actor.world.pos.y = (endPos.y - startPos.y) * lerpFactor + startPos.y; this->actor.world.pos.z = (endPos.z - startPos.z) * lerpFactor + startPos.z; - if (play->csCtx.npcActions[1]->action == 12) { + if (play->csCtx.actorCues[1]->id == 12) { s16 yaw = Math_Vec3f_Yaw(&startPos, &endPos); Math_SmoothStepToS(&this->actor.world.rot.y, yaw, 0xA, 0x3E8, 1); @@ -770,12 +772,12 @@ void EnViewer_UpdatePosition(EnViewer* this, PlayState* play) { } if (type == ENVIEWER_TYPE_9_GANONDORF) { - this->actor.world.rot.x = play->csCtx.npcActions[1]->urot.x; - this->actor.world.rot.y = play->csCtx.npcActions[1]->urot.y; - this->actor.world.rot.z = play->csCtx.npcActions[1]->urot.z; - this->actor.shape.rot.x = play->csCtx.npcActions[1]->urot.x; - this->actor.shape.rot.y = play->csCtx.npcActions[1]->urot.y; - this->actor.shape.rot.z = play->csCtx.npcActions[1]->urot.z; + this->actor.world.rot.x = play->csCtx.actorCues[1]->rot.x; + this->actor.world.rot.y = play->csCtx.actorCues[1]->rot.y; + this->actor.world.rot.z = play->csCtx.actorCues[1]->rot.z; + this->actor.shape.rot.x = play->csCtx.actorCues[1]->rot.x; + this->actor.shape.rot.y = play->csCtx.actorCues[1]->rot.y; + this->actor.shape.rot.z = play->csCtx.actorCues[1]->rot.z; } } if (type == ENVIEWER_TYPE_5_GANONDORF) { diff --git a/src/overlays/actors/ovl_En_Xc/z_en_xc.c b/src/overlays/actors/ovl_En_Xc/z_en_xc.c index 0a292e20e5..7397970b63 100644 --- a/src/overlays/actors/ovl_En_Xc/z_en_xc.c +++ b/src/overlays/actors/ovl_En_Xc/z_en_xc.c @@ -117,69 +117,75 @@ s32 EnXc_AnimIsFinished(EnXc* this) { return SkelAnime_Update(&this->skelAnime); } -CsCmdActorAction* EnXc_GetCsCmd(PlayState* play, s32 npcActionIdx) { - CsCmdActorAction* action = NULL; +CsCmdActorCue* EnXc_GetCue(PlayState* play, s32 cueChannel) { + CsCmdActorCue* cue = NULL; if (play->csCtx.state != 0) { - action = play->csCtx.npcActions[npcActionIdx]; + cue = play->csCtx.actorCues[cueChannel]; } - return action; + return cue; } -s32 EnXc_CompareCsAction(EnXc* this, PlayState* play, u16 action, s32 npcActionIdx) { - CsCmdActorAction* csCmdActorAction = EnXc_GetCsCmd(play, npcActionIdx); +s32 EnXc_CheckForCue(EnXc* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnXc_GetCue(play, cueChannel); - if (csCmdActorAction != NULL && csCmdActorAction->action == action) { + if (cue != NULL && cue->id == cueId) { return true; } + return false; } -s32 EnXc_CsActionsAreNotEqual(EnXc* this, PlayState* play, u16 action, s32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = EnXc_GetCsCmd(play, npcActionIdx); +s32 EnXc_CheckForNoCue(EnXc* this, PlayState* play, u16 cueId, s32 cueChannel) { + CsCmdActorCue* cue = EnXc_GetCue(play, cueChannel); - if (csCmdNPCAction && csCmdNPCAction->action != action) { + if (cue && cue->id != cueId) { return true; } + return false; } -void func_80B3C588(EnXc* this, PlayState* play, u32 npcActionIdx) { - CsCmdActorAction* csCmdNPCAction = EnXc_GetCsCmd(play, npcActionIdx); +void func_80B3C588(EnXc* this, PlayState* play, u32 cueChannel) { + CsCmdActorCue* cue = EnXc_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.x = thisx->shape.rot.x = csCmdNPCAction->rot.x; - thisx->world.rot.y = thisx->shape.rot.y = csCmdNPCAction->rot.y; - thisx->world.rot.z = thisx->shape.rot.z = csCmdNPCAction->rot.z; + 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.x = thisx->shape.rot.x = cue->rot.x; + thisx->world.rot.y = thisx->shape.rot.y = cue->rot.y; + thisx->world.rot.z = thisx->shape.rot.z = cue->rot.z; } } -void func_80B3C620(EnXc* this, PlayState* play, s32 npcActionIdx) { - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, npcActionIdx); - Vec3f* xcPos = &this->actor.world.pos; +void func_80B3C620(EnXc* this, PlayState* play, s32 cueChannel) { + CsCmdActorCue* cue = EnXc_GetCue(play, cueChannel); + Vec3f* worldPos = &this->actor.world.pos; f32 startX; f32 startY; f32 startZ; f32 endX; f32 endY; f32 endZ; - f32 unk; + f32 lerp; - if (npcAction != NULL) { - unk = Environment_LerpWeightAccelDecel(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames, 0, 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; - xcPos->x = ((endX - startX) * unk) + startX; - xcPos->y = ((endY - startY) * unk) + startY; - xcPos->z = ((endZ - startZ) * unk) + startZ; + if (cue != NULL) { + lerp = Environment_LerpWeightAccelDecel(cue->endFrame, cue->startFrame, play->csCtx.curFrame, 0, 0); + + startX = cue->startPos.x; + startY = cue->startPos.y; + startZ = cue->startPos.z; + + endX = cue->endPos.x; + endY = cue->endPos.y; + endZ = cue->endPos.z; + + worldPos->x = ((endX - startX) * lerp) + startX; + worldPos->y = ((endY - startY) * lerp) + startY; + worldPos->z = ((endZ - startZ) * lerp) + startZ; } } @@ -287,7 +293,7 @@ s32 EnXc_MinuetCS(EnXc* this, PlayState* play) { if (z < -2225.0f) { if (!Play_InCsMode(play)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gMinuetCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gMinuetCs); gSaveContext.cutsceneTrigger = 1; SET_EVENTCHKINF(EVENTCHKINF_50); Item_Give(play, ITEM_SONG_MINUET); @@ -318,7 +324,7 @@ s32 EnXc_BoleroCS(EnXc* this, PlayState* play) { if ((posRot->pos.x > -784.0f) && (posRot->pos.x < -584.0f) && (posRot->pos.y > 447.0f) && (posRot->pos.y < 647.0f) && (posRot->pos.z > -446.0f) && (posRot->pos.z < -246.0f) && !Play_InCsMode(play)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gDeathMountainCraterBoleroCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gDeathMountainCraterBoleroCs); gSaveContext.cutsceneTrigger = 1; SET_EVENTCHKINF(EVENTCHKINF_51); Item_Give(play, ITEM_SONG_BOLERO); @@ -348,7 +354,7 @@ s32 EnXc_SerenadeCS(EnXc* this, PlayState* play) { if (CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !GET_EVENTCHKINF(EVENTCHKINF_52) && !(stateFlags & PLAYER_STATE1_29) && !Play_InCsMode(play)) { - Cutscene_SetSegment(play, gIceCavernSerenadeCs); + Cutscene_SetScript(play, gIceCavernSerenadeCs); gSaveContext.cutsceneTrigger = 1; SET_EVENTCHKINF(EVENTCHKINF_52); // Learned Serenade of Water Flag Item_Give(play, ITEM_SONG_SERENADE); @@ -416,7 +422,7 @@ void EnXc_SetColossusAppearSFX(EnXc* this, PlayState* play) { sceneId = play->sceneId; if (sceneId == SCENE_DESERT_COLOSSUS) { CutsceneContext* csCtx = &play->csCtx; - u16 frameCount = csCtx->frames; + u16 frameCount = csCtx->curFrame; f32 wDest[2]; if (frameCount == 119) { @@ -456,7 +462,7 @@ void EnXc_SetColossusWindSFX(PlayState* play) { if (sceneId == SCENE_DESERT_COLOSSUS) { CutsceneContext* csCtx = &play->csCtx; - u16 frameCount = csCtx->frames; + u16 frameCount = csCtx->curFrame; if ((frameCount >= 120) && (frameCount < 164)) { s32 pad; @@ -486,10 +492,10 @@ void EnXc_SpawnFlame(EnXc* this, PlayState* play) { static s32 sFlameSpawned = false; if (!sFlameSpawned) { - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 0); - f32 xPos = npcAction->startPos.x; - f32 yPos = npcAction->startPos.y; - f32 zPos = npcAction->startPos.z; + CsCmdActorCue* cue = EnXc_GetCue(play, 0); + f32 xPos = cue->startPos.x; + f32 yPos = cue->startPos.y; + f32 zPos = cue->startPos.z; this->flameActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_LIGHT, xPos, yPos, zPos, 0, 0, 0, 5); sFlameSpawned = true; @@ -498,14 +504,14 @@ void EnXc_SpawnFlame(EnXc* this, PlayState* play) { void EnXc_SetupFlamePos(EnXc* this, PlayState* play) { Vec3f* attachedPos; - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 0); + CsCmdActorCue* cue = EnXc_GetCue(play, 0); if (this->flameActor != NULL) { attachedPos = &this->flameActor->world.pos; if (!this) {} - attachedPos->x = npcAction->startPos.x; - attachedPos->y = npcAction->startPos.y; - attachedPos->z = npcAction->startPos.z; + attachedPos->x = cue->startPos.x; + attachedPos->y = cue->startPos.y; + attachedPos->z = cue->startPos.z; } } @@ -523,20 +529,20 @@ void EnXc_InitFlame(EnXc* this, PlayState* play) { s16 sceneId = play->sceneId; if (sceneId == SCENE_DEATH_MOUNTAIN_CRATER) { - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 0); - if (npcAction != NULL) { - s32 action = npcAction->action; + CsCmdActorCue* cue = EnXc_GetCue(play, 0); + if (cue != NULL) { + s32 nextCueId = cue->id; - if (D_80B41DA8 != action) { - if (action != 1) { + if (D_80B41DA8 != nextCueId) { + if (nextCueId != 1) { EnXc_SpawnFlame(this, play); } - if (action == 1) { + if (nextCueId == 1) { EnXc_DestroyFlame(this); } - D_80B41DA8 = action; + D_80B41DA8 = nextCueId; } EnXc_SetupFlamePos(this, play); @@ -546,11 +552,11 @@ void EnXc_InitFlame(EnXc* this, PlayState* play) { void func_80B3D48C(EnXc* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; - CsCmdActorAction* linkAction = csCtx->linkAction; + CsCmdActorCue* playerCue = csCtx->playerCue; s16 yaw; - if (linkAction != NULL) { - yaw = linkAction->urot.y + 0x8000; + if (playerCue != NULL) { + yaw = playerCue->rot.y + 0x8000; } else { Player* player = GET_PLAYER(play); yaw = player->actor.world.rot.y + 0x8000; @@ -561,18 +567,18 @@ void func_80B3D48C(EnXc* this, PlayState* play) { AnimationHeader* EnXc_GetCurrentHarpAnim(PlayState* play, s32 index) { AnimationHeader* animation = &gSheikPlayingHarp5Anim; - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, index); + CsCmdActorCue* cue = EnXc_GetCue(play, index); - if (npcAction != NULL) { - u16 action = npcAction->action; + if (cue != NULL) { + u16 cueId = cue->id; - if (action == 11) { + if (cueId == 11) { animation = &gSheikPlayingHarp3Anim; - } else if (action == 12) { + } else if (cueId == 12) { animation = &gSheikPlayingHarp2Anim; - } else if (action == 13) { + } else if (cueId == 13) { animation = &gSheikPlayingHarp4Anim; - } else if (action == 23) { + } else if (cueId == 23) { animation = &gSheikPlayingHarpAnim; } else { animation = &gSheikPlayingHarp5Anim; @@ -635,9 +641,9 @@ void EnXc_SetupFallFromSkyAction(EnXc* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; if (csCtx->state != 0) { - CsCmdActorAction* npcAction = csCtx->npcActions[4]; + CsCmdActorCue* cue = csCtx->actorCues[4]; - if (npcAction && npcAction->action == 2) { + if (cue != NULL && cue->id == 2) { s32 pad; Vec3f* pos = &this->actor.world.pos; SkelAnime* skelAnime = &this->skelAnime; @@ -646,9 +652,9 @@ void EnXc_SetupFallFromSkyAction(EnXc* this, PlayState* play) { this->action = SHEIK_ACTION_GRACEFUL_FALL; this->drawMode = SHEIK_DRAW_DEFAULT; - pos->x = npcAction->startPos.x; - pos->y = npcAction->startPos.y; - pos->z = npcAction->startPos.z; + pos->x = cue->startPos.x; + pos->y = cue->startPos.y; + pos->z = cue->startPos.z; func_80B3D48C(this, play); func_80B3C964(this, play); @@ -710,17 +716,20 @@ void EnXc_SetupStoppedAction(EnXc* this) { } void func_80B3DAF0(EnXc* this, PlayState* play) { - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 4); - u16 action; + CsCmdActorCue* cue = EnXc_GetCue(play, 4); + u16 cueId; - if (npcAction && - (action = npcAction->action, action == 3 || action == 11 || action == 12 || action == 13 || action == 23)) { - f32 frameCount; + if (cue != NULL) { + cueId = cue->id; - frameCount = Animation_GetLastFrame(&gSheikPullingOutHarpAnim); - Animation_Change(&this->skelAnime, &gSheikPullingOutHarpAnim, 1.0f, 0.0f, frameCount, ANIMMODE_ONCE, -4.0f); - this->action = SHEIK_ACTION_7; - this->drawMode = SHEIK_DRAW_PULLING_OUT_HARP; + if (cueId == 3 || cueId == 11 || cueId == 12 || cueId == 13 || cueId == 23) { + f32 frameCount; + + frameCount = Animation_GetLastFrame(&gSheikPullingOutHarpAnim); + Animation_Change(&this->skelAnime, &gSheikPullingOutHarpAnim, 1.0f, 0.0f, frameCount, ANIMMODE_ONCE, -4.0f); + this->action = SHEIK_ACTION_7; + this->drawMode = SHEIK_DRAW_PULLING_OUT_HARP; + } } } @@ -757,9 +766,9 @@ void func_80B3DCA8(EnXc* this, PlayState* play) { f32 frameCount; if (play->csCtx.state != 0) { - CsCmdActorAction* npcAction = play->csCtx.npcActions[4]; + CsCmdActorCue* cue = play->csCtx.actorCues[4]; - if (npcAction != NULL && npcAction->action == 8) { + if (cue != NULL && cue->id == 8) { frameCount = Animation_GetLastFrame(&gSheikInitialHarpAnim); Animation_Change(&this->skelAnime, &gSheikInitialHarpAnim, 0.0f, frameCount, frameCount, ANIMMODE_LOOP, -8.0f); @@ -772,7 +781,7 @@ void EnXc_SetupHarpPutawayAction(EnXc* this, PlayState* play) { f32 curFrame; f32 animFrameCount; - if (EnXc_CompareCsAction(this, play, 5, 4)) { + if (EnXc_CheckForCue(this, play, 5, 4)) { curFrame = this->skelAnime.curFrame; animFrameCount = this->skelAnime.endFrame; if (curFrame >= animFrameCount) { @@ -780,7 +789,7 @@ void EnXc_SetupHarpPutawayAction(EnXc* this, PlayState* play) { Animation_GetLastFrame(&gSheikInitialHarpAnim), 0.0f, ANIMMODE_ONCE, 0.0f); this->action = SHEIK_ACTION_PUT_HARP_AWAY; } - } else if (EnXc_CsActionsAreNotEqual(this, play, 8, 4)) { + } else if (EnXc_CheckForNoCue(this, play, 8, 4)) { EnXc_SetupPlayingHarpAction(this, play, true); } } @@ -806,9 +815,9 @@ void func_80B3DE78(EnXc* this, s32 animFinished) { void EnXc_SetupReverseAccel(EnXc* this, PlayState* play) { if (play->csCtx.state != 0) { - CsCmdActorAction* npcAction = play->csCtx.npcActions[4]; + CsCmdActorCue* cue = play->csCtx.actorCues[4]; - if (npcAction != NULL && npcAction->action == 4) { + if (cue != NULL && cue->id == 4) { Animation_Change(&this->skelAnime, &gSheikWalkingAnim, -1.0f, Animation_GetLastFrame(&gSheikWalkingAnim), 0.0f, ANIMMODE_LOOP, -12.0f); this->action = SHEIK_ACTION_REVERSE_ACCEL; @@ -858,9 +867,9 @@ void func_80B3E164(EnXc* this, PlayState* play) { void EnXc_SetupDisappear(EnXc* this, PlayState* play) { if (play->csCtx.state != 0) { - CsCmdActorAction* npcAction = play->csCtx.npcActions[4]; + CsCmdActorCue* cue = play->csCtx.actorCues[4]; - if (npcAction != NULL && npcAction->action == 9) { + if (cue != NULL && cue->id == 9) { s16 sceneId = play->sceneId; // Sheik fades away if end of Bolero CS, kill actor otherwise @@ -1123,18 +1132,18 @@ void func_80B3EC0C(EnXc* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; if (csCtx->state != 0) { - CsCmdActorAction* npcAction = csCtx->npcActions[4]; + CsCmdActorCue* cue = csCtx->actorCues[4]; - if ((npcAction != NULL) && (npcAction->action != 1)) { + if ((cue != NULL) && (cue->id != 1)) { PosRot* posRot = &this->actor.world; - Vec3i* startPos = &npcAction->startPos; + Vec3i* startPos = &cue->startPos; ActorShape* shape = &this->actor.shape; posRot->pos.x = startPos->x; posRot->pos.y = startPos->y; posRot->pos.z = startPos->z; - posRot->rot.y = shape->rot.y = npcAction->rot.y; + posRot->rot.y = shape->rot.y = cue->rot.y; this->action = SHEIK_ACTION_22; this->drawMode = SHEIK_DRAW_DEFAULT; @@ -1146,9 +1155,9 @@ void func_80B3EC90(EnXc* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; if (csCtx->state != 0) { - CsCmdActorAction* npcAction = csCtx->npcActions[4]; + CsCmdActorCue* cue = csCtx->actorCues[4]; - if (npcAction != NULL && npcAction->action != 6) { + if (cue != NULL && cue->id != 6) { func_80B3C9EC(this); } } @@ -1372,14 +1381,14 @@ void EnXc_PlayDiveSFX(Vec3f* src, PlayState* play) { } void EnXc_LakeHyliaDive(PlayState* play) { - CsCmdActorAction* npcAction = npcAction = EnXc_GetCsCmd(play, 0); + CsCmdActorCue* cue = cue = EnXc_GetCue(play, 0); - if (npcAction != NULL) { + if (cue != NULL) { Vec3f startPos; - 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; EffectSsGRipple_Spawn(play, &startPos, 100, 500, 0); EffectSsGRipple_Spawn(play, &startPos, 100, 500, 10); @@ -1391,7 +1400,7 @@ void EnXc_LakeHyliaDive(PlayState* play) { void func_80B3F534(PlayState* play) { CutsceneContext* csCtx = &play->csCtx; - u16 frameCount = csCtx->frames; + u16 frameCount = csCtx->curFrame; if (frameCount == 310) { Actor_Spawn(&play->actorCtx, play, ACTOR_DOOR_WARP1, -1044.0f, -1243.0f, 7458.0f, 0, 0, 0, WARP_DESTINATION); @@ -1400,13 +1409,13 @@ void func_80B3F534(PlayState* play) { void func_80B3F59C(EnXc* this, PlayState* play) { static s32 D_80B41DAC = 1; - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 0); + CsCmdActorCue* cue = EnXc_GetCue(play, 0); - if (npcAction != NULL) { - s32 action = npcAction->action; + if (cue != NULL) { + s32 nextCueId = cue->id; - if (action != D_80B41DAC) { - switch (action) { + if (nextCueId != D_80B41DAC) { + switch (nextCueId) { case 2: func_80B3F3D8(); break; @@ -1416,7 +1425,7 @@ void func_80B3F59C(EnXc* this, PlayState* play) { default: break; } - D_80B41DAC = action; + D_80B41DAC = nextCueId; } } } @@ -1430,7 +1439,7 @@ void func_80B3F644(EnXc* this) { } void func_80B3F668(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 4, 4)) { + if (EnXc_CheckForCue(this, play, 4, 4)) { EnXc_ChangeAnimation(this, &gSheikWalkingAnim, ANIMMODE_LOOP, -12.0f, true); this->action = SHEIK_ACTION_48; this->actor.world.rot.y += 0x8000; @@ -1443,14 +1452,14 @@ void func_80B3F6DC(EnXc* this) { } void EnXc_SetupKneelAction(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 16, 4)) { + if (EnXc_CheckForCue(this, play, 16, 4)) { EnXc_ChangeAnimation(this, &gSheikKneelingAnim, ANIMMODE_LOOP, 0.0f, false); this->action = SHEIK_ACTION_KNEEL; } } void func_80B3F754(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 22, 4)) { + if (EnXc_CheckForCue(this, play, 22, 4)) { EnXc_ChangeAnimation(this, &gSheikAnim_01A048, ANIMMODE_LOOP, 0.0f, false); this->action = SHEIK_ACTION_51; func_80B3C588(this, play, 4); @@ -1458,7 +1467,7 @@ void func_80B3F754(EnXc* this, PlayState* play) { } void func_80B3F7BC(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 9, 4)) { + if (EnXc_CheckForCue(this, play, 9, 4)) { this->action = SHEIK_ACTION_52; this->drawMode = SHEIK_DRAW_NOTHING; } @@ -1552,13 +1561,13 @@ void func_80B3FAE0(EnXc* this) { void EnXc_CalcTriforce(Actor* thisx, PlayState* play) { EnXc* this = (EnXc*)thisx; - if (EnXc_CompareCsAction(this, play, 21, 4)) { + if (EnXc_CheckForCue(this, play, 21, 4)) { this->unk_274 = 1; if (this->unk_2AC == 0) { this->unk_2AC = 1; this->unk_2A8 = 1; } - } else if (EnXc_CompareCsAction(this, play, 19, 4)) { + } else if (EnXc_CheckForCue(this, play, 19, 4)) { this->unk_274 = 2; } if (this->unk_274 != 0) { @@ -1603,22 +1612,22 @@ void EnXc_CalcTriforce(Actor* thisx, PlayState* play) { } void func_80B3FF0C(EnXc* this, PlayState* play) { - if (EnXc_CsActionsAreNotEqual(this, play, 1, 4)) { + if (EnXc_CheckForNoCue(this, play, 1, 4)) { CutsceneContext* csCtx = &play->csCtx; if (csCtx->state != 0) { - CsCmdActorAction* npcAction = play->csCtx.npcActions[4]; + CsCmdActorCue* cue = play->csCtx.actorCues[4]; - if (npcAction != NULL) { + if (cue != NULL) { PosRot* posRot = &this->actor.world; ActorShape* shape = &this->actor.shape; - Vec3i* startPos = &npcAction->startPos; + Vec3i* startPos = &cue->startPos; posRot->pos.x = startPos->x; posRot->pos.y = startPos->y; posRot->pos.z = startPos->z; - posRot->rot.y = shape->rot.y = npcAction->rot.y; + posRot->rot.y = shape->rot.y = cue->rot.y; } } @@ -1628,7 +1637,7 @@ void func_80B3FF0C(EnXc* this, PlayState* play) { } void EnXc_SetupShowTriforceAction(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 10, 4)) { + if (EnXc_CheckForCue(this, play, 10, 4)) { Animation_Change(&this->skelAnime, &gSheikShowingTriforceOnHandAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gSheikShowingTriforceOnHandAnim), ANIMMODE_ONCE, -8.0f); this->action = SHEIK_ACTION_SHOW_TRIFORCE; @@ -1644,7 +1653,7 @@ void EnXc_SetupShowTriforceIdleAction(EnXc* this, s32 animFinished) { } } void func_80B400AC(EnXc* this, PlayState* play) { - if (EnXc_CompareCsAction(this, play, 9, 4)) { + if (EnXc_CheckForCue(this, play, 9, 4)) { Actor_Kill(&this->actor); } } @@ -1758,7 +1767,7 @@ void EnXc_SetThrownAroundSFX(EnXc* this) { } void EnXc_PlayLinkScreamSFX(EnXc* this, PlayState* play) { - if (play->csCtx.frames == 1455) { + if (play->csCtx.curFrame == 1455) { Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_BONGO_HURL_LINK); } } @@ -1766,9 +1775,9 @@ void EnXc_PlayLinkScreamSFX(EnXc* this, PlayState* play) { void EnXc_SetCrySFX(EnXc* this, PlayState* play) { CutsceneContext* csCtx = &play->csCtx; - if (csCtx->frames == 869) { + if (csCtx->curFrame == 869) { func_80078914(&this->actor.projectedPos, NA_SE_VO_SK_CRY_0); - } else if (csCtx->frames == 939) { + } else if (csCtx->curFrame == 939) { func_80078914(&this->actor.projectedPos, NA_SE_VO_SK_CRY_1); } } @@ -1942,15 +1951,15 @@ void func_80B40E88(EnXc* this) { } s32 EnXc_SetupNocturneState(Actor* thisx, PlayState* play) { - CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 4); + CsCmdActorCue* cue = EnXc_GetCue(play, 4); - if (npcAction != NULL) { - s32 action = npcAction->action; + if (cue != NULL) { + s32 nextCueId = cue->id; EnXc* this = (EnXc*)thisx; - s32 prevAction = this->unk_26C; + s32 currentCueId = this->unk_26C; - if (action != prevAction) { - switch (action) { + if (nextCueId != currentCueId) { + switch (nextCueId) { case 1: func_80B406F8(thisx); break; @@ -1986,7 +1995,7 @@ s32 EnXc_SetupNocturneState(Actor* thisx, PlayState* play) { break; } - this->unk_26C = action; + this->unk_26C = nextCueId; return 1; } } @@ -2142,13 +2151,13 @@ void EnXc_InitTempleOfTime(EnXc* this, PlayState* play) { if (LINK_IS_ADULT) { if (!GET_EVENTCHKINF(EVENTCHKINF_C5)) { SET_EVENTCHKINF(EVENTCHKINF_C5); - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTempleOfTimeFirstAdultCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gTempleOfTimeFirstAdultCs); gSaveContext.cutsceneTrigger = 1; func_80B3EBF0(this, play); } else if (!GET_EVENTCHKINF(EVENTCHKINF_55) && GET_EVENTCHKINF(EVENTCHKINF_48)) { SET_EVENTCHKINF(EVENTCHKINF_55); Item_Give(play, ITEM_SONG_PRELUDE); - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTempleOfTimePreludeCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gTempleOfTimePreludeCs); gSaveContext.cutsceneTrigger = 1; this->action = SHEIK_ACTION_30; } else if (!GET_EVENTCHKINF(EVENTCHKINF_55)) { diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c index 08f95f6ba6..93e742927a 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c @@ -318,7 +318,7 @@ void func_80B4B240(EnZl1* this, PlayState* play) { if (this->skelAnime.curFrame == frameCount) { animHeaderSeg = &gChildZelda1Anim_00438; sp3C = 1; - play->csCtx.segment = D_80B4C5D0; + play->csCtx.script = D_80B4C5D0; gSaveContext.cutsceneTrigger = 1; this->actionFunc = func_80B4B8B4; this->unk_1E2++; @@ -332,16 +332,16 @@ void func_80B4B240(EnZl1* this, PlayState* play) { Actor_TrackPlayer(play, &this->actor, &this->unk_200, &this->unk_206, this->actor.focus.pos); } -void func_80B4B7F4(CsCmdActorAction* npcAction, Vec3f* pos) { - pos->x = npcAction->startPos.x; - pos->y = npcAction->startPos.y; - pos->z = npcAction->startPos.z; +void func_80B4B7F4(CsCmdActorCue* cue, Vec3f* dest) { + dest->x = cue->startPos.x; + dest->y = cue->startPos.y; + dest->z = cue->startPos.z; } -void func_80B4B834(CsCmdActorAction* npcAction, Vec3f* pos) { - pos->x = npcAction->endPos.x; - pos->y = npcAction->endPos.y; - pos->z = npcAction->endPos.z; +void func_80B4B834(CsCmdActorCue* cue, Vec3f* dest) { + dest->x = cue->endPos.x; + dest->y = cue->endPos.y; + dest->z = cue->endPos.z; } void func_80B4B874(EnZl1* this, PlayState* play) { @@ -368,8 +368,8 @@ void func_80B4B8B4(EnZl1* this, PlayState* play) { Vec3f subCamAt = { -421.0f, 143.0f, -5.0f }; Vec3f subCamEye = { -512.0f, 105.0f, -4.0f }; s32 pad2; - f32 actionLength; - CsCmdActorAction* npcAction; + f32 cueDuration; + CsCmdActorCue* cue; Vec3f sp74; Vec3f sp68; Vec3f velocity = { 0.0f, 0.0f, 0.0f }; @@ -384,32 +384,39 @@ void func_80B4B8B4(EnZl1* this, PlayState* play) { return; } - npcAction = play->csCtx.npcActions[0]; - if (npcAction != NULL) { - func_80B4B7F4(npcAction, &sp74); - func_80B4B834(npcAction, &sp68); + cue = play->csCtx.actorCues[0]; + + if (cue != NULL) { + func_80B4B7F4(cue, &sp74); + func_80B4B834(cue, &sp68); + if (this->unk_1E6 == 0) { sp48 = sp74; this->actor.home.pos = sp48; this->actor.world.pos = sp48; } - if (this->unk_1E6 != npcAction->action) { - frameCount = Animation_GetLastFrame(spB0[npcAction->action]); - Animation_Change(&this->skelAnime, spB0[npcAction->action], 1.0f, 0.0f, frameCount, spA4[npcAction->action], - -10.0f); - this->unk_1E6 = npcAction->action; + + if (this->unk_1E6 != cue->id) { + frameCount = Animation_GetLastFrame(spB0[cue->id]); + Animation_Change(&this->skelAnime, spB0[cue->id], 1.0f, 0.0f, frameCount, spA4[cue->id], -10.0f); + this->unk_1E6 = cue->id; } + this->actor.velocity = velocity; - if (play->csCtx.frames < npcAction->endFrame) { - actionLength = npcAction->endFrame - npcAction->startFrame; - this->actor.velocity.x = (sp68.x - sp74.x) / actionLength; - this->actor.velocity.y = (sp68.y - sp74.y) / actionLength; + + if (play->csCtx.curFrame < cue->endFrame) { + cueDuration = cue->endFrame - cue->startFrame; + + this->actor.velocity.x = (sp68.x - sp74.x) / cueDuration; + this->actor.velocity.y = (sp68.y - sp74.y) / cueDuration; 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 = (sp68.z - sp74.z) / actionLength; + this->actor.velocity.z = (sp68.z - sp74.z) / cueDuration; } + Actor_TrackPlayer(play, &this->actor, &this->unk_200, &this->unk_206, this->actor.focus.pos); Play_SetCameraAtEye(play, this->subCamId, &subCamAt, &subCamEye); Play_SetCameraFov(play, this->subCamId, 70.0f); @@ -447,11 +454,11 @@ void func_80B4BC78(EnZl1* this, PlayState* play) { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, }; s32 pad2; - f32 actionLength; + f32 cueDuration; Vec3f sp70; Vec3f sp64; Vec3f velocity = { 0.0f, 0.0f, 0.0f }; - CsCmdActorAction* npcAction; + CsCmdActorCue* cue; s32 pad; f32 frameCount; @@ -459,31 +466,39 @@ void func_80B4BC78(EnZl1* this, PlayState* play) { frameCount = Animation_GetLastFrame(&gChildZelda1Anim_11348); Animation_Change(&this->skelAnime, &gChildZelda1Anim_11348, 1.0f, 0.0f, frameCount, ANIMMODE_LOOP, -10.0f); } + func_80B4B874(this, play); - npcAction = play->csCtx.npcActions[0]; - if (npcAction != NULL) { - func_80B4B7F4(npcAction, &sp70); - func_80B4B834(npcAction, &sp64); + + cue = play->csCtx.actorCues[0]; + + if (cue != NULL) { + func_80B4B7F4(cue, &sp70); + func_80B4B834(cue, &sp64); + if (this->unk_1E6 == 0) { this->actor.world.pos = this->actor.home.pos = sp70; } - if (this->unk_1E6 != npcAction->action) { - frameCount = Animation_GetLastFrame(sp90[npcAction->action]); - Animation_Change(&this->skelAnime, sp90[npcAction->action], 1.0f, 0.0f, frameCount, sp84[npcAction->action], - -10.0f); - this->unk_1E6 = npcAction->action; + if (this->unk_1E6 != cue->id) { + frameCount = Animation_GetLastFrame(sp90[cue->id]); + Animation_Change(&this->skelAnime, sp90[cue->id], 1.0f, 0.0f, frameCount, sp84[cue->id], -10.0f); + this->unk_1E6 = cue->id; } + this->actor.velocity = velocity; - if (play->csCtx.frames < npcAction->endFrame) { - actionLength = npcAction->endFrame - npcAction->startFrame; - this->actor.velocity.x = (sp64.x - sp70.x) / actionLength; - this->actor.velocity.y = (sp64.y - sp70.y) / actionLength; + + if (play->csCtx.curFrame < cue->endFrame) { + cueDuration = cue->endFrame - cue->startFrame; + + this->actor.velocity.x = (sp64.x - sp70.x) / cueDuration; + this->actor.velocity.y = (sp64.y - sp70.y) / cueDuration; 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 = (sp64.z - sp70.z) / actionLength; + + this->actor.velocity.z = (sp64.z - sp70.z) / cueDuration; } } } diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c index ccfe0f4c29..3c05f2cb6b 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c @@ -4,245 +4,245 @@ // clang-format off CutsceneData D_80B4C5D0[] = { CS_BEGIN_CUTSCENE(28, 3000), - CS_PLAYER_ACTION_LIST(3), - CS_PLAYER_ACTION(0x0005, 400, 1211, 0x0000, 0xC000, 0x0000, -422, 84, 1, -422, 84, 1, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), - CS_PLAYER_ACTION(0x0001, 1211, 1241, 0x0000, 0xC000, 0x0000, -422, 84, 1, -483, 84, 0, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), - CS_PLAYER_ACTION(0x0029, 1241, 1311, 0x0000, 0xC000, 0x0000, -483, 84, 0, -483, 84, 0, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), - CS_NPC_ACTION_LIST(18, 1), - CS_NPC_ACTION(0x0007, 1170, 1316, 0x7477, 0x0000, 0x0000, -485, 84, 0, -469, 85, -55, 0.10958904f, 0.006849315f, -0.10958904f), + CS_PLAYER_CUE_LIST(3), + CS_PLAYER_CUE(0x0005, 400, 1211, 0x0000, 0xC000, 0x0000, -422, 84, 1, -422, 84, 1, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), + CS_PLAYER_CUE(0x0001, 1211, 1241, 0x0000, 0xC000, 0x0000, -422, 84, 1, -483, 84, 0, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), + CS_PLAYER_CUE(0x0029, 1241, 1311, 0x0000, 0xC000, 0x0000, -483, 84, 0, -483, 84, 0, 1.1266861702801002e-29f, 0.0f, 1.401298464324817e-45f), + CS_ACTOR_CUE_LIST(18, 1), + CS_ACTOR_CUE(0x0007, 1170, 1316, 0x7477, 0x0000, 0x0000, -485, 84, 0, -469, 85, -55, 0.10958904f, 0.006849315f, -0.10958904f), CS_UNK_DATA_LIST(0x00000049, 1), CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFE8, 0x00000003, 0x00000000, 0xFFFFFFE8, 0x00000003, 0x00000000, 0x00000000, 0x00000000), - CS_NPC_ACTION_LIST(16, 3), - CS_NPC_ACTION(0x0009, 1220, 1310, 0x8000, 0x0000, 0x0000, -890, 90, 150, -890, 90, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x000A, 1310, 1449, 0x0000, 0x0000, 0x0000, -890, 90, 0, -890, 90, 0, 0.0f, 0.0f, 0.0f), - CS_NPC_ACTION(0x0004, 1449, 1457, 0x0000, 0x0000, 0x0000, -890, 90, 0, -890, 90, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE_LIST(16, 3), + CS_ACTOR_CUE(0x0009, 1220, 1310, 0x8000, 0x0000, 0x0000, -890, 90, 150, -890, 90, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x000A, 1310, 1449, 0x0000, 0x0000, 0x0000, -890, 90, 0, -890, 90, 0, 0.0f, 0.0f, 0.0f), + CS_ACTOR_CUE(0x0004, 1449, 1457, 0x0000, 0x0000, 0x0000, -890, 90, 0, -890, 90, 0, 0.0f, 0.0f, 0.0f), CS_MISC_LIST(1), - CS_MISC(0x000C, 1460, 1461, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000002, 0xFFFFFFFF, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000), - CS_NPC_ACTION_LIST(29, 1), - CS_NPC_ACTION(0x0002, 330, 763, 0x0000, 0x0000, 0x0000, -1250, 150, 0, -1250, 150, 0, 0.0f, 0.0f, 0.0f), - CS_SCENE_TRANS_FX(0x0001, 200, 231), - CS_SCENE_TRANS_FX(0x0005, 230, 271), - CS_SCENE_TRANS_FX(0x0001, 860, 870), - CS_SCENE_TRANS_FX(0x0005, 875, 900), - CS_CAM_EYE_LIST(0, 331), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -392, 145, 1, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -318, 168, 1, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -222, 198, 1, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -146, 221, 1, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -132, 222, 1, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3632), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3533), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.800003f, -66, 267, 1, 0x3336), - CS_CAM_EYE_LIST(230, 1631), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 259, 24, 0x3632), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1220, 189, 24, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1135, 198, 81, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -1132, 119, 84, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1199, 137, 36, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x332C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3231), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3232), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2034), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3331), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3434), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x312C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3136), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x332C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x200A), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3136), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), - CS_CAM_EYE_LIST(810, 1041), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1218, 88, 21, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1208, -52, 23, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3632), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3639), - CS_CAM_EYE_LIST(870, 1261), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 80.274445f, -59, 160, 320, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -115, 148, 249, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -190, 126, 192, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -286, 105, 135, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -357, 108, 87, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x3632), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x392C), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x2031), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.074677f, -394, 104, 53, 0x3533), - CS_CAM_EYE_LIST(1160, 1401), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3639), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x392C), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 60.0f, -459, 175, 80, 0x2032), - CS_CAM_EYE_LIST(1260, 1411), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2032), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 45.199944f, -461, 133, 0, 0x3533), - CS_CAM_EYE_LIST(1320, 1531), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2031), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3833), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2C20), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2032), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3533), - CS_CAM_EYE(CS_CMD_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3639), - CS_CAM_EYE(CS_CMD_STOP, 0x00, 0, 10.999838f, -488, 124, -6, 0x392C), - CS_CAM_AT_LIST(0, 360), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -506, 110, 1, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 25, 60.800003f, -451, 127, 1, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 25, 60.800003f, -380, 149, 1, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -291, 177, 1, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -224, 210, 1, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -213, 230, 1, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -143, 291, 1, 0x3632), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -135, 308, 1, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -127, 319, 1, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -120, 326, 1, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.800003f, -120, 326, 1, 0x3533), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.800003f, -120, 326, 1, 0x3336), - CS_CAM_AT_LIST(230, 1710), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1245, 227, 5, 0x3632), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1245, 158, 5, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -1180, 178, 50, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.0f, -1178, 131, 51, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1240, 146, 6, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3336), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x332C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3231), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3232), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1252, 152, -2, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1252, 152, -2, 0x2034), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x3331), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x3434), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x312C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3136), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3336), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x332C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x200A), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600002f, -1251, 151, -1, 0x3136), - CS_CAM_AT(CS_CMD_STOP, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3336), - CS_CAM_AT_LIST(810, 1070), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1251, 151, -1, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1251, 151, -1, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 20, 60.600006f, -1250, 150, 0, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.600006f, -1241, 125, 5, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.600006f, -1226, -13, 10, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 10, 60.600006f, -1218, -73, 26, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3632), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3639), - CS_CAM_AT_LIST(870, 1290), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -45, 240, 241, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -45, 240, 241, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -56, 219, 224, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -85, 183, 212, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -204, 134, 183, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -280, 116, 125, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -376, 104, 69, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -440, 107, 13, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x3632), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x392C), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x2031), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.074677f, -467, 110, -25, 0x3533), - CS_CAM_AT_LIST(1160, 1430), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3639), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x392C), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 60.0f, -456, 138, 16, 0x2032), - CS_CAM_AT_LIST(1260, 1440), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2032), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 45.199944f, -535, 133, 0, 0x3533), - CS_CAM_AT_LIST(1320, 1560), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2031), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3833), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2C20), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2032), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3533), - CS_CAM_AT(CS_CMD_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3639), - CS_CAM_AT(CS_CMD_STOP, 0x00, 30, 10.999838f, -1349, 124, -6, 0x392C), + CS_MISC(CS_MISC_STOP_CUTSCENE, 1460, 1461, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000002, 0xFFFFFFFF, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000), + CS_ACTOR_CUE_LIST(29, 1), + CS_ACTOR_CUE(0x0002, 330, 763, 0x0000, 0x0000, 0x0000, -1250, 150, 0, -1250, 150, 0, 0.0f, 0.0f, 0.0f), + CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 200, 231), + CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 230, 271), + CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 860, 870), + CS_TRANSITION(CS_TRANS_GRAY_FILL_OUT, 875, 900), + CS_CAM_EYE_SPLINE(0, 331), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -447, 128, 1, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -392, 145, 1, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -318, 168, 1, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -222, 198, 1, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -146, 221, 1, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -132, 222, 1, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.800003f, -66, 267, 1, 0x3533), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.800003f, -66, 267, 1, 0x3336), + CS_CAM_EYE_SPLINE(230, 1631), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 445, 24, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 259, 24, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1220, 189, 24, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1135, 198, 81, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1132, 119, 84, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1199, 137, 36, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x332C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3231), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3232), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2034), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3331), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3434), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x312C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3136), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x332C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x200A), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3136), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600002f, -1218, 127, 22, 0x3336), + CS_CAM_EYE_SPLINE(810, 1041), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1218, 127, 22, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1218, 88, 21, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1208, -52, 23, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3632), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.600006f, -1201, -114, 26, 0x3639), + CS_CAM_EYE_SPLINE(870, 1261), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 80.274445f, -59, 160, 320, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -59, 160, 320, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -115, 148, 249, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -190, 126, 192, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -286, 105, 135, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -357, 108, 87, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.074677f, -394, 104, 53, 0x2031), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.074677f, -394, 104, 53, 0x3533), + CS_CAM_EYE_SPLINE(1160, 1401), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -459, 175, 80, 0x392C), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -459, 175, 80, 0x2032), + CS_CAM_EYE_SPLINE(1260, 1411), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 45.199944f, -461, 133, 0, 0x2032), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 45.199944f, -461, 133, 0, 0x3533), + CS_CAM_EYE_SPLINE(1320, 1531), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 10.999838f, -488, 124, -6, 0x3639), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 10.999838f, -488, 124, -6, 0x392C), + CS_CAM_AT_SPLINE(0, 360), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -506, 110, 1, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.800003f, -506, 110, 1, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.800003f, -451, 127, 1, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.800003f, -380, 149, 1, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -291, 177, 1, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -224, 210, 1, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -213, 230, 1, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -143, 291, 1, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -135, 308, 1, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -127, 319, 1, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -120, 326, 1, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.800003f, -120, 326, 1, 0x3533), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.800003f, -120, 326, 1, 0x3336), + CS_CAM_AT_SPLINE(230, 1710), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1246, 413, 5, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1245, 227, 5, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1245, 158, 5, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -1180, 178, 50, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.0f, -1178, 131, 51, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1240, 146, 6, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3336), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x332C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3231), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1253, 153, -3, 0x3232), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1252, 152, -2, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1252, 152, -2, 0x2034), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x3331), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x3434), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1252, 152, -2, 0x312C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3136), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3336), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x332C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 80, 60.600002f, -1251, 151, -1, 0x200A), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600002f, -1251, 151, -1, 0x3136), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 80, 60.600002f, -1251, 151, -1, 0x3336), + CS_CAM_AT_SPLINE(810, 1070), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1251, 151, -1, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1251, 151, -1, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.600006f, -1250, 150, 0, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.600006f, -1241, 125, 5, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.600006f, -1226, -13, 10, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.600006f, -1218, -73, 26, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3632), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.600006f, -1218, -73, 26, 0x3639), + CS_CAM_AT_SPLINE(870, 1290), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -45, 240, 241, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -45, 240, 241, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -56, 219, 224, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -85, 183, 212, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -204, 134, 183, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -280, 116, 125, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -376, 104, 69, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -440, 107, 13, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x3632), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x392C), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.074677f, -467, 110, -25, 0x2031), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.074677f, -467, 110, -25, 0x3533), + CS_CAM_AT_SPLINE(1160, 1430), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x3639), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -456, 138, 16, 0x392C), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -456, 138, 16, 0x2032), + CS_CAM_AT_SPLINE(1260, 1440), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 45.199944f, -535, 133, 0, 0x2032), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 45.199944f, -535, 133, 0, 0x3533), + CS_CAM_AT_SPLINE(1320, 1560), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2031), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3833), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2C20), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x2032), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3533), + CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 10.999838f, -1349, 124, -6, 0x3639), + CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 10.999838f, -1349, 124, -6, 0x392C), CS_TEXT_LIST(10), CS_TEXT_NONE(0, 50), - CS_TEXT_DISPLAY_TEXTBOX(0x7035, 50, 190, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x7035, 50, 190, 0x0000, 0xFFFF, 0xFFFF), CS_TEXT_NONE(190, 300), - CS_TEXT_DISPLAY_TEXTBOX(0x7036, 300, 800, 0x0000, 0xFFFF, 0xFFFF), + CS_TEXT(0x7036, 300, 800, 0x0000, 0xFFFF, 0xFFFF), CS_TEXT_NONE(800, 970), - CS_TEXT_DISPLAY_TEXTBOX(0x7037, 970, 1150, 0x0000, 0xFFFF, 0x7038), + CS_TEXT(0x7037, 970, 1150, 0x0000, 0xFFFF, 0x7038), CS_TEXT_NONE(1150, 1190), - CS_TEXT_DISPLAY_TEXTBOX(0x7005, 1190, 1200, 0x0000, 0xFFFF, 0x700B), + CS_TEXT(0x7005, 1190, 1200, 0x0000, 0xFFFF, 0x700B), CS_TEXT_NONE(1200, 1340), - CS_TEXT_DISPLAY_TEXTBOX(0x7009, 1340, 1420, 0x0000, 0xFFFF, 0xFFFF), - CS_PLAY_BGM_LIST(1), - CS_PLAY_BGM(0x004E, 230, 231, 0x0000, 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000000), - CS_PLAY_BGM_LIST(1), - CS_PLAY_BGM(0x002A, 870, 871, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0xFFFFFFFD, 0xFFFFFFFE, 0x00000000, 0xFFFFFFFD), - CS_STOP_BGM_LIST(1), - CS_STOP_BGM(0x0001, 110, 111, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000001, 0xFFFFFFFE, 0x00000000, 0x00000001), + CS_TEXT(0x7009, 1340, 1420, 0x0000, 0xFFFF, 0xFFFF), + CS_START_SEQ_LIST(1), + CS_START_SEQ(NA_BGM_HYRULE_CS, 230, 231, 0x0000, 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000000), + CS_START_SEQ_LIST(1), + CS_START_SEQ(NA_BGM_ZELDA_THEME, 870, 871, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0xFFFFFFFD, 0xFFFFFFFE, 0x00000000, 0xFFFFFFFD), + CS_STOP_SEQ_LIST(1), + CS_STOP_SEQ(NA_BGM_GENERAL_SFX, 110, 111, 0x0000, 0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000001, 0xFFFFFFFE, 0x00000000, 0x00000001), CS_END(), }; // clang-format on diff --git a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c index 05de71255f..544a3422aa 100644 --- a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c +++ b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c @@ -210,21 +210,22 @@ s32 EnZl2_UpdateSkelAnime(EnZl2* this) { return SkelAnime_Update(&this->skelAnime); } -CsCmdActorAction* EnZl2_GetNpcAction(PlayState* play, s32 idx) { +CsCmdActorCue* EnZl2_GetCue(PlayState* play, s32 cueChannel) { if (play->csCtx.state != CS_STATE_IDLE) { - return play->csCtx.npcActions[idx]; + return play->csCtx.actorCues[cueChannel]; } return NULL; } -void func_80B4EDB8(EnZl2* this, PlayState* play, s32 arg2) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, arg2); +void func_80B4EDB8(EnZl2* this, PlayState* play, s32 cueChannel) { + CsCmdActorCue* cue = EnZl2_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; } } @@ -536,7 +537,7 @@ void EnZl2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, s32 pad[2]; if (limbIndex == 10) { - if ((this->unk_254 != 0) && (play->csCtx.frames >= 900)) { + if ((this->unk_254 != 0) && (play->csCtx.curFrame >= 900)) { gSPDisplayList((*gfx)++, gZelda2OcarinaDL); } @@ -594,7 +595,7 @@ void func_80B4FDD4(EnZl2* this) { } void func_80B4FE10(PlayState* play) { - if ((play->csCtx.frames >= 830) && (play->csCtx.frames < 1081)) { + if ((play->csCtx.curFrame >= 830) && (play->csCtx.curFrame < 1081)) { func_800788CC(NA_SE_EV_EARTHQUAKE - SFX_FLAG); } } @@ -678,28 +679,30 @@ void func_80B5008C(EnZl2* this) { } void func_80B500E0(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - Vec3f* thisPos = &this->actor.world.pos; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + Vec3f* worldPos = &this->actor.world.pos; f32 startX; f32 startY; f32 startZ; f32 endX; f32 endY; f32 endZ; - f32 someFloat; + f32 lerp; - if (npcAction != NULL) { - someFloat = - Environment_LerpWeightAccelDecel(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames, 8, 8); - startX = npcAction->startPos.x; - startY = npcAction->startPos.y; - startZ = npcAction->startPos.z; - endX = npcAction->endPos.x; - endY = npcAction->endPos.y; - endZ = npcAction->endPos.z; - thisPos->x = ((endX - startX) * someFloat) + startX; - thisPos->y = ((endY - startY) * someFloat) + startY; - thisPos->z = ((endZ - startZ) * someFloat) + startZ; + if (cue != NULL) { + lerp = Environment_LerpWeightAccelDecel(cue->endFrame, cue->startFrame, play->csCtx.curFrame, 8, 8); + + startX = cue->startPos.x; + startY = cue->startPos.y; + startZ = cue->startPos.z; + + endX = cue->endPos.x; + endY = cue->endPos.y; + endZ = cue->endPos.z; + + worldPos->x = ((endX - startX) * lerp) + startX; + worldPos->y = ((endY - startY) * lerp) + startY; + worldPos->z = ((endZ - startZ) * lerp) + startZ; } } @@ -710,11 +713,11 @@ void func_80B501C4(EnZl2* this, s32 alpha) { } void func_80B501E8(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); - if (npcAction != NULL) { + if (cue != NULL) { this->actor.shape.shadowAlpha = this->alpha = - (1.0f - Environment_LerpWeight(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames)) * 255.0f; + (1.0f - Environment_LerpWeight(cue->endFrame, cue->startFrame, play->csCtx.curFrame)) * 255.0f; func_80B501C4(this, this->alpha); } } @@ -726,13 +729,15 @@ void func_80B50260(EnZl2* this, PlayState* play) { } void func_80B50278(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); - 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; - this->actor.shape.shadowAlpha = 0xFF; + 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->actor.shape.shadowAlpha = 255; this->action = 2; this->drawConfig = 1; } @@ -740,24 +745,25 @@ void func_80B50278(EnZl2* this, PlayState* play) { void func_80B50304(EnZl2* this, PlayState* play) { s32 pad[2]; ActorShape* shape = &this->actor.shape; - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - f32 actionXDelta; - f32 actionZDelta; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + f32 cueXDelta; + f32 cueZDelta; + + cueXDelta = cue->endPos.x - cue->startPos.x; + cueZDelta = cue->endPos.z - cue->startPos.z; - actionXDelta = npcAction->endPos.x - npcAction->startPos.x; - actionZDelta = npcAction->endPos.z - npcAction->startPos.z; func_80B4FD00(this, &gZelda2Anime1Anim_0003BC, 0, -12.0f, 0); this->action = 3; this->drawConfig = 1; this->unk_23C = 0.0f; shape->shadowAlpha = 255; - this->actor.world.rot.y = shape->rot.y = RAD_TO_BINANG(Math_FAtan2F(actionXDelta, actionZDelta)); + this->actor.world.rot.y = shape->rot.y = RAD_TO_BINANG(Math_FAtan2F(cueXDelta, cueZDelta)); } void func_80B503DC(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); - if ((npcAction != NULL) && (play->csCtx.frames >= npcAction->endFrame)) { + if ((cue != NULL) && (play->csCtx.curFrame >= cue->endFrame)) { this->action = 4; } } @@ -900,10 +906,10 @@ void func_80B50980(EnZl2* this, PlayState* play) { } void func_80B509A0(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); - if (npcAction != NULL) { - if (play->csCtx.frames >= npcAction->endFrame) { + if (cue != NULL) { + if (play->csCtx.curFrame >= cue->endFrame) { this->action = 24; this->drawConfig = 0; func_80B4FE6C(this); @@ -912,15 +918,16 @@ void func_80B509A0(EnZl2* this, PlayState* play) { } void func_80B50A04(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - s32 newAction; - s32 unk_240; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + s32 nextCueId; + s32 currentCueId; - if (npcAction != NULL) { - newAction = npcAction->action; - unk_240 = this->unk_240; - if (newAction != unk_240) { - switch (newAction) { + if (cue != NULL) { + nextCueId = cue->id; + currentCueId = this->cueId; + + if (nextCueId != currentCueId) { + switch (nextCueId) { case 1: func_80B50260(this, play); break; @@ -969,7 +976,7 @@ void func_80B50A04(EnZl2* this, PlayState* play) { default: osSyncPrintf("En_Zl2_inAgain_Check_DemoMode:そんな動作は無い!!!!!!!!\n"); } - this->unk_240 = newAction; + this->cueId = nextCueId; } } } @@ -1155,7 +1162,7 @@ void func_80B512B8(EnZl2* this, PlayState* play) { void func_80B51310(EnZl2* this, PlayState* play) { Actor* child; - if (EnZl2_GetNpcAction(play, 0) == NULL) { + if (EnZl2_GetCue(play, 0) == NULL) { child = this->actor.child; if (child != NULL) { Actor_Kill(child); @@ -1188,7 +1195,7 @@ void func_80B513A8(EnZl2* this, PlayState* play) { void func_80B51418(EnZl2* this, PlayState* play) { EnZl2_UpdateEyes(this); - if (play->csCtx.frames < 431) { + if (play->csCtx.curFrame < 431) { EnZl2_setMouthIndex(this, 1); } else { EnZl2_setMouthIndex(this, 0); @@ -1201,7 +1208,7 @@ void func_80B5146C(EnZl2* this, PlayState* play) { } void func_80B5149C(EnZl2* this, PlayState* play) { - if (play->csCtx.frames < 988) { + if (play->csCtx.curFrame < 988) { EnZl2_setEyesIndex(this, 7); EnZl2_setEyeIndex2(this, 8); } else { @@ -1212,7 +1219,7 @@ void func_80B5149C(EnZl2* this, PlayState* play) { void func_80B514F8(EnZl2* this, PlayState* play) { EnZl2_UpdateEyes(this); - if (play->csCtx.frames < 1190) { + if (play->csCtx.curFrame < 1190) { EnZl2_setMouthIndex(this, 1); } else { EnZl2_setMouthIndex(this, 0); @@ -1226,9 +1233,9 @@ void func_80B5154C(EnZl2* this, PlayState* play) { EnZl2_UpdateEyes(this); } else { csCtx = &play->csCtx; - if (csCtx->frames < 0x5F0) { + if (csCtx->curFrame < 0x5F0) { func_80B4EBB8(this); - } else if (csCtx->frames == 0x5F0) { + } else if (csCtx->curFrame == 0x5F0) { this->unk_27C = 0.0f; } else { func_80B4EC48(this); @@ -1323,15 +1330,16 @@ void func_80B518C0(EnZl2* this) { } void func_80B51948(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - s32 newAction; - s32 unk_240; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + s32 nextCueId; + s32 currentCueId; - if (npcAction != NULL) { - newAction = npcAction->action; - unk_240 = this->unk_240; - if (newAction != unk_240) { - switch (newAction) { + if (cue != NULL) { + nextCueId = cue->id; + currentCueId = this->cueId; + + if (nextCueId != currentCueId) { + switch (nextCueId) { case 1: func_80B515C4(this); break; @@ -1359,7 +1367,7 @@ void func_80B51948(EnZl2* this, PlayState* play) { default: osSyncPrintf("En_Zl2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n"); } - this->unk_240 = newAction; + this->cueId = nextCueId; } } } @@ -1444,29 +1452,28 @@ void func_80B51D24(EnZl2* this, PlayState* play) { } void func_80B51DA4(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - Vec3f* thisPos = &this->actor.world.pos; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + Vec3f* worldPos = &this->actor.world.pos; f32 startX; f32 startY; f32 startZ; f32 endX; f32 endY; f32 endZ; - f32 someFloat; + f32 lerp; - if (npcAction != NULL) { - someFloat = - Environment_LerpWeightAccelDecel(npcAction->endFrame, npcAction->startFrame, play->csCtx.frames, 0, 8); - startX = npcAction->startPos.x; - startY = npcAction->startPos.y; - startZ = npcAction->startPos.z; - endX = npcAction->endPos.x; - endY = npcAction->endPos.y; - endZ = npcAction->endPos.z; - thisPos->x = ((endX - startX) * someFloat) + startX; - thisPos->y = ((endY - startY) * someFloat) + startY; - thisPos->z = ((endZ - startZ) * someFloat) + startZ; - if (npcAction->endFrame < play->csCtx.frames) { + if (cue != NULL) { + lerp = Environment_LerpWeightAccelDecel(cue->endFrame, cue->startFrame, play->csCtx.curFrame, 0, 8); + startX = cue->startPos.x; + startY = cue->startPos.y; + startZ = cue->startPos.z; + endX = cue->endPos.x; + endY = cue->endPos.y; + endZ = cue->endPos.z; + worldPos->x = ((endX - startX) * lerp) + startX; + worldPos->y = ((endY - startY) * lerp) + startY; + worldPos->z = ((endZ - startZ) * lerp) + startZ; + if (cue->endFrame < play->csCtx.curFrame) { Actor_Kill(&this->actor); } } @@ -1480,10 +1487,10 @@ void func_80B51EA8(EnZl2* this) { void func_80B51EBC(EnZl2* this, PlayState* play) { ActorShape* shape = &this->actor.shape; - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); s32 pad[2]; - this->actor.world.rot.y = shape->rot.y = npcAction->rot.y; + this->actor.world.rot.y = shape->rot.y = cue->rot.y; func_80B4FD00(this, &gZelda2Anime1Anim_00B224, 0, 0.0f, 0); this->action = 34; this->drawConfig = 1; @@ -1491,10 +1498,10 @@ void func_80B51EBC(EnZl2* this, PlayState* play) { } void func_80B51F38(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); - if (npcAction != NULL) { - if (play->csCtx.frames - 8 >= npcAction->endFrame) { + if (cue != NULL) { + if (play->csCtx.curFrame - 8 >= cue->endFrame) { func_80B4FD00(this, &gZelda2Anime1Anim_00B5FC, 0, -8.0f, 0); this->action = 35; } @@ -1502,15 +1509,16 @@ void func_80B51F38(EnZl2* this, PlayState* play) { } void func_80B51FA8(EnZl2* this, PlayState* play) { - CsCmdActorAction* npcAction = EnZl2_GetNpcAction(play, 0); - s32 action; - s32 unk_240; + CsCmdActorCue* cue = EnZl2_GetCue(play, 0); + s32 nextCueId; + s32 currentCueId; - if (npcAction != NULL) { - action = npcAction->action; - unk_240 = this->unk_240; - if (action != unk_240) { - switch (action) { + if (cue != NULL) { + nextCueId = cue->id; + currentCueId = this->cueId; + + if (nextCueId != currentCueId) { + switch (nextCueId) { case 1: func_80B51EA8(this); break; @@ -1524,7 +1532,7 @@ void func_80B51FA8(EnZl2* this, PlayState* play) { osSyncPrintf("En_Zl2_inRunning_Check_DemoMode:そんな動作は無い!!!!!!!!\n"); break; } - this->unk_240 = action; + this->cueId = nextCueId; } } } diff --git a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h index 24ba154050..51a620c54a 100644 --- a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h +++ b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h @@ -26,7 +26,7 @@ typedef struct EnZl2 { /* 0x01DC */ s16 unk_1DC[0x18]; // ??? /* 0x020C */ s16 unk_20C[0x18]; // ??? /* 0x023C */ f32 unk_23C; - /* 0x0240 */ s32 unk_240; + /* 0x0240 */ s32 cueId; /* 0x0244 */ s32 unk_244; /* 0x0248 */ s32 unk_248; /* 0x024C */ s32 unk_24C; diff --git a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c index e0c881f682..9e4abfd767 100644 --- a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c +++ b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c @@ -2569,8 +2569,7 @@ void func_80B59A80(EnZl3* this, PlayState* play) { } void func_80B59AD0(EnZl3* this, PlayState* play) { - // todo look into - Actor* thisx = &this->actor; // unused, necessary to use 'this' first to fix regalloc + Actor* thisx = &this->actor; Flags_SetSwitch(play, 0x36); Interface_SetSubTimer(180); diff --git a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c index 3c0f936396..79fd3860aa 100644 --- a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c +++ b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c @@ -309,10 +309,10 @@ void func_80B5BB78(EnZl4* this, PlayState* play) { Npc_TrackPoint(&this->actor, &this->interactInfo, 2, NPC_TRACKING_HEAD_AND_TORSO); } -void EnZl4_GetActionStartPos(CsCmdActorAction* action, Vec3f* vec) { - vec->x = action->startPos.x; - vec->y = action->startPos.y; - vec->z = action->startPos.z; +void EnZl4_GetCueStartPos(CsCmdActorCue* cue, Vec3f* dest) { + dest->x = cue->startPos.x; + dest->y = cue->startPos.y; + dest->z = cue->startPos.z; } s32 EnZl4_SetupFromLegendCs(EnZl4* this, PlayState* play) { @@ -465,7 +465,7 @@ s32 EnZl4_CsMeetPlayer(EnZl4* this, PlayState* play) { break; case 2: if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardMeetCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardMeetCs); gSaveContext.cutsceneTrigger = 1; EnZl4_SetActiveCamMove(play, 0); play->msgCtx.msgMode = MSGMODE_PAUSED; @@ -899,17 +899,17 @@ s32 EnZl4_CsLookWindow(EnZl4* this, PlayState* play) { switch (this->talkState) { case 0: EnZl4_SetActiveCamMove(play, 7); - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardWindowCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardWindowCs); gSaveContext.cutsceneTrigger = 1; this->talkState++; break; case 1: if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.frames == 90) { - play->csCtx.state = CS_STATE_UNSKIPPABLE_INIT; + if (play->csCtx.curFrame == 90) { + play->csCtx.state = CS_STATE_STOP; } } else { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardGanonCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardGanonCs); gSaveContext.cutsceneTrigger = 1; this->talkState++; func_8002DF54(play, &this->actor, PLAYER_CSMODE_8); @@ -917,8 +917,8 @@ s32 EnZl4_CsLookWindow(EnZl4* this, PlayState* play) { break; case 2: if (play->csCtx.state != CS_STATE_IDLE) { - if (play->csCtx.frames == 209) { - play->csCtx.state = CS_STATE_UNSKIPPABLE_INIT; + if (play->csCtx.curFrame == 209) { + play->csCtx.state = CS_STATE_STOP; } } else { Rumble_Request(0.0f, 160, 10, 40); @@ -1099,7 +1099,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) { this->eyeExpression = ZL4_EYES_NEUTRAL; this->mouthExpression = ZL4_MOUTH_NEUTRAL; this->talkState = 5; - this->unk_20F = this->lastAction = 0; + this->unk_20F = this->cueId = 0; } break; case 5: @@ -1217,33 +1217,41 @@ void EnZl4_Idle(EnZl4* this, PlayState* play) { void EnZl4_TheEnd(EnZl4* this, PlayState* play) { s32 animIndex[] = { ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_0, ZL4_ANIM_26, ZL4_ANIM_21, ZL4_ANIM_3 }; - CsCmdActorAction* npcAction; + CsCmdActorCue* cue; Vec3f pos; if (SkelAnime_Update(&this->skelAnime) && (this->skelAnime.animation == &gChildZeldaAnim_010DF8)) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_4); } + if (EnZl4_InMovingAnim(this)) { EnZl4_SetMove(this, play); } - if (play->csCtx.frames == 100) { + + if (play->csCtx.curFrame == 100) { this->eyeExpression = ZL4_EYES_LOOK_LEFT; } - if (play->csCtx.frames == 450) { + + if (play->csCtx.curFrame == 450) { this->blinkTimer = 3; this->eyeExpression = ZL4_EYES_NEUTRAL; this->mouthExpression = ZL4_MOUTH_SURPRISED; } - npcAction = play->csCtx.npcActions[0]; - if (npcAction != NULL) { - EnZl4_GetActionStartPos(npcAction, &pos); - if (this->lastAction == 0) { + + cue = play->csCtx.actorCues[0]; + + if (cue != NULL) { + EnZl4_GetCueStartPos(cue, &pos); + + if (this->cueId == 0) { this->actor.world.pos = this->actor.home.pos = pos; } - if (this->lastAction != npcAction->action) { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, animIndex[npcAction->action]); - this->lastAction = npcAction->action; + + if (this->cueId != cue->id) { + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, animIndex[cue->id]); + this->cueId = cue->id; } + this->actor.velocity.x = 0.0f; this->actor.velocity.y = 0.0f; this->actor.velocity.z = 0.0f; diff --git a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h index 4caa9bb9af..8710cc9cf9 100644 --- a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h +++ b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h @@ -26,7 +26,7 @@ typedef struct EnZl4 { /* 0x0210 */ s16 blinkTimer; /* 0x0212 */ s16 talkTimer1; /* 0x0214 */ s16 talkTimer2; - /* 0x0216 */ s16 lastAction; + /* 0x0216 */ s16 cueId; /* 0x0218 */ Vec3s jointTable[18]; /* 0x0284 */ Vec3s morphTable[18]; } EnZl4; // size = 0x02F0 diff --git a/src/overlays/actors/ovl_En_fHG/z_en_fhg.c b/src/overlays/actors/ovl_En_fHG/z_en_fhg.c index 173be1f313..5cd4904b3b 100644 --- a/src/overlays/actors/ovl_En_fHG/z_en_fhg.c +++ b/src/overlays/actors/ovl_En_fHG/z_en_fhg.c @@ -150,7 +150,7 @@ void EnfHG_Intro(EnfHG* this, PlayState* play) { } break; } - 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); @@ -399,7 +399,7 @@ void EnfHG_Intro(EnfHG* 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->actionFunc = EnfHG_Retreat; } diff --git a/src/overlays/actors/ovl_End_Title/z_end_title.c b/src/overlays/actors/ovl_End_Title/z_end_title.c index 2eff126205..5c118dd1cc 100644 --- a/src/overlays/actors/ovl_End_Title/z_end_title.c +++ b/src/overlays/actors/ovl_End_Title/z_end_title.c @@ -49,7 +49,7 @@ void EndTitle_Update(Actor* thisx, PlayState* play) { void EndTitle_DrawFull(Actor* thisx, PlayState* play) { MtxF* mf; EndTitle* this = (EndTitle*)thisx; - s32 frameCount = play->csCtx.frames; + s32 csCurFrame = play->csCtx.curFrame; Player* player = GET_PLAYER(play); mf = &player->mf_9E0; @@ -72,13 +72,13 @@ void EndTitle_DrawFull(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_end_title.c", 419); // Draw title cards on the screen - if ((frameCount > 890) && (this->endAlpha < 200)) { + if ((csCurFrame > 890) && (this->endAlpha < 200)) { this->endAlpha += 7; } - if ((frameCount > 810) && (this->tlozAlpha < 200)) { + if ((csCurFrame > 810) && (this->tlozAlpha < 200)) { this->tlozAlpha += 15; } - if ((frameCount > 850) && (this->ootAlpha < 200)) { + if ((csCurFrame > 850) && (this->ootAlpha < 200)) { this->ootAlpha += 15; } @@ -114,9 +114,9 @@ void EndTitle_DrawFull(Actor* thisx, PlayState* play) { void EndTitle_DrawNintendoLogo(Actor* thisx, PlayState* play) { EndTitle* this = (EndTitle*)thisx; s32 pad; - s32 frames = play->csCtx.frames; + s32 csCurFrame = play->csCtx.curFrame; - if ((frames >= 1101) && (this->endAlpha < 255)) { + if ((csCurFrame >= 1101) && (this->endAlpha < 255)) { this->endAlpha += 3; } diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index ad660e632d..165c9deabc 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -3814,7 +3814,7 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { player->unk_860 = 3; Rumble_Override(0.0f, 1, 3, 1); D_80B7E084++; - func_80064520(play, &play->csCtx); + Cutscene_StartManual(play, &play->csCtx); D_80B7A6CC = 100; D_80B7FEC8 = 45.0f; D_80B7A694 = 5; @@ -5344,7 +5344,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { mainCam->eyeNext = sSubCamEye; mainCam->at = sSubCamAt; Play_ReturnToMainCam(play, sSubCamId, 0); - func_80064534(play, &play->csCtx); + Cutscene_StopManual(play, &play->csCtx); D_80B7A6CC = 0; sSubCamId = SUB_CAM_ID_DONE; Environment_EnableUnderwaterLights(play, 0); @@ -5357,7 +5357,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { case 10: { Camera* mainCam; - 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); @@ -5386,7 +5386,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { mainCam->eyeNext = sSubCamEye; mainCam->at = sSubCamAt; Play_ReturnToMainCam(play, sSubCamId, 0); - func_80064534(play, &play->csCtx); + Cutscene_StopManual(play, &play->csCtx); func_8002DF54(play, &this->actor, PLAYER_CSMODE_7); D_80B7A6CC = 0; sSubCamId = SUB_CAM_ID_DONE; @@ -5399,7 +5399,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { case 20: { Camera* mainCam; - 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); @@ -5490,7 +5490,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { mainCam->eyeNext = sSubCamEye; mainCam->at = sSubCamAt; Play_ReturnToMainCam(play, sSubCamId, 0); - func_80064534(play, &play->csCtx); + Cutscene_StopManual(play, &play->csCtx); func_8002DF54(play, &this->actor, PLAYER_CSMODE_7); D_80B7A6CC = 0; sSubCamId = SUB_CAM_ID_DONE; diff --git a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c index 2850184c78..3d3e699641 100644 --- a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c +++ b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c @@ -212,10 +212,10 @@ void func_80B85B28(ItemEtcetera* this, PlayState* play) { } void ItemEtcetera_UpdateFireArrow(ItemEtcetera* this, PlayState* play) { - if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.npcActions[0] != NULL)) { - LOG_NUM("(game_play->demo_play.npcdemopnt[0]->dousa)", play->csCtx.npcActions[0]->action, - "../z_item_etcetera.c", 441); - if (play->csCtx.npcActions[0]->action == 2) { + if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.actorCues[0] != NULL)) { + LOG_NUM("(game_play->demo_play.npcdemopnt[0]->dousa)", play->csCtx.actorCues[0]->id, "../z_item_etcetera.c", + 441); + if (play->csCtx.actorCues[0]->id == 2) { this->actor.draw = ItemEtcetera_Draw; this->actor.gravity = -0.1f; this->actor.minVelocityY = -4.0f; diff --git a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c index 8f10760c82..44e3300df5 100644 --- a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c +++ b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c @@ -90,7 +90,7 @@ void ItemOcarina_Fly(ItemOcarina* this, PlayState* play) { } } - if (play->csCtx.frames == 881) { + if (play->csCtx.curFrame == 881) { this->actor.world.pos.x = 250.0f; this->actor.world.pos.y = 60.0f; this->actor.world.pos.z = 1075.0f; @@ -99,7 +99,7 @@ void ItemOcarina_Fly(ItemOcarina* this, PlayState* play) { this->actor.velocity.z = -7.0f; } - if (play->csCtx.frames == 897) { + if (play->csCtx.curFrame == 897) { EffectSsGRipple_Spawn(play, &this->actor.world.pos, 100, 500, 0); EffectSsGSplash_Spawn(play, &this->actor.world.pos, NULL, NULL, 1, 0); this->actor.velocity.x = 0.0f; @@ -112,7 +112,7 @@ void ItemOcarina_Fly(ItemOcarina* this, PlayState* play) { } // landed in water - if (play->csCtx.frames == 906) { + if (play->csCtx.curFrame == 906) { ripplePos.x = 274.0f; ripplePos.y = -60.0f; ripplePos.z = 907.0f; @@ -142,7 +142,7 @@ void func_80B864EC(ItemOcarina* this, PlayState* play) { } } - if (play->csCtx.frames == 220) { + if (play->csCtx.curFrame == 220) { this->actor.world.pos.x = 144.0f; this->actor.world.pos.y = 80.0f; this->actor.world.pos.z = 1686.0f; @@ -168,7 +168,7 @@ void ItemOcarina_DoNothing(ItemOcarina* this, PlayState* play) { void ItemOcarina_StartSoTCutscene(ItemOcarina* this, PlayState* play) { if (Actor_TextboxIsClosing(&this->actor, play)) { - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gHyruleFieldZeldaSongOfTimeCs); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gHyruleFieldZeldaSongOfTimeCs); gSaveContext.cutsceneTrigger = 1; } } diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index a708abccbb..df81286693 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -632,7 +632,7 @@ void ObjBean_SetupWaitForWater(ObjBean* this) { void ObjBean_WaitForWater(ObjBean* this, PlayState* play) { this->transformFunc(this); - if (!(this->stateFlags & BEAN_STATE_BEEN_WATERED) && Flags_GetEnv(play, 5) && (D_80B90E30 == NULL) && + if (!(this->stateFlags & BEAN_STATE_BEEN_WATERED) && CutsceneFlags_Get(play, 5) && (D_80B90E30 == NULL) && (this->dyna.actor.xzDistToPlayer < 50.0f)) { ObjBean_SetupGrowWaterPhase1(this); D_80B90E30 = this; @@ -641,7 +641,7 @@ void ObjBean_WaitForWater(ObjBean* this, PlayState* play) { return; } - if ((D_80B90E30 == this) && !Flags_GetEnv(play, 5)) { + if ((D_80B90E30 == this) && !CutsceneFlags_Get(play, 5)) { D_80B90E30 = NULL; if (D_80B90E30) {} } diff --git a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c index 6d21732974..de87dacecc 100644 --- a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c +++ b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c @@ -71,55 +71,64 @@ void ObjDekujr_Init(Actor* thisx, PlayState* play) { void ObjDekujr_Destroy(Actor* thisx, PlayState* play) { } -void ObjDekujr_SetInitialPos(CsCmdActorAction* npcAction, Vec3f* initPos) { - initPos->x = npcAction->startPos.x; - initPos->y = npcAction->startPos.y; - initPos->z = npcAction->startPos.z; +void ObjDekujr_GetCueStartPos(CsCmdActorCue* cue, Vec3f* dest) { + dest->x = cue->startPos.x; + dest->y = cue->startPos.y; + dest->z = cue->startPos.z; } -void ObjDekujr_SetFinalPos(CsCmdActorAction* npcAction, Vec3f* finalPos) { - finalPos->x = npcAction->endPos.x; - finalPos->y = npcAction->endPos.y; - finalPos->z = npcAction->endPos.z; +void ObjDekujr_GetCueEndPos(CsCmdActorCue* cue, Vec3f* dest) { + dest->x = cue->endPos.x; + dest->y = cue->endPos.y; + dest->z = cue->endPos.z; } void ObjDekujr_ComeUp(ObjDekujr* this, PlayState* play) { - CsCmdActorAction* csCmdNPCAction; + CsCmdActorCue* cue; Vec3f initPos; Vec3f finalPos; Vec3f velocity = { 0.0f, 0.0f, 0.0f }; - f32 actionLength; + f32 cueDuration; f32 gravity; if (play->csCtx.state == CS_STATE_IDLE) { this->unk_19C = 2; this->unk_19B = 0; } else { - if (play->csCtx.frames == 351) { + if (play->csCtx.curFrame == 351) { Actor_PlaySfx(&this->actor, NA_SE_EV_COME_UP_DEKU_JR); } - csCmdNPCAction = play->csCtx.npcActions[1]; - if (csCmdNPCAction != NULL) { - ObjDekujr_SetInitialPos(csCmdNPCAction, &initPos); - ObjDekujr_SetFinalPos(csCmdNPCAction, &finalPos); + + cue = play->csCtx.actorCues[1]; + + if (cue != NULL) { + ObjDekujr_GetCueStartPos(cue, &initPos); + ObjDekujr_GetCueEndPos(cue, &finalPos); + if (this->unk_19C == 0) { this->actor.world.pos = initPos; this->unk_19C = 1; } - this->actor.shape.rot.x = csCmdNPCAction->urot.x; - this->actor.shape.rot.y = csCmdNPCAction->urot.y; - this->actor.shape.rot.z = csCmdNPCAction->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 (csCmdNPCAction->endFrame >= play->csCtx.frames) { - actionLength = csCmdNPCAction->endFrame - csCmdNPCAction->startFrame; - this->actor.velocity.x = (finalPos.x - initPos.x) / actionLength; + + if (cue->endFrame >= play->csCtx.curFrame) { + cueDuration = cue->endFrame - cue->startFrame; + + this->actor.velocity.x = (finalPos.x - initPos.x) / cueDuration; gravity = this->actor.gravity; - this->actor.velocity.y = (finalPos.y - initPos.y) / actionLength; + this->actor.velocity.y = (finalPos.y - initPos.y) / cueDuration; this->actor.velocity.y += gravity; + if (this->actor.velocity.y < this->actor.minVelocityY) { this->actor.velocity.y = this->actor.minVelocityY; } - this->actor.velocity.z = (finalPos.z - initPos.z) / actionLength; + + this->actor.velocity.z = (finalPos.z - initPos.z) / cueDuration; } } } diff --git a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c index 8e71cf9357..11bd9849b4 100644 --- a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c +++ b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c @@ -204,7 +204,7 @@ void ObjectKankyo_Fairies(ObjectKankyo* this, PlayState* play) { } func_800F436C(&sSfxPos, NA_SE_EV_NAVY_FLY - SFX_FLAG, (0.4f * dist) + 0.6f); - switch (play->csCtx.frames) { + switch (play->csCtx.curFrame) { case 473: func_800788CC(NA_SE_VO_NA_HELLO_3); break; @@ -722,11 +722,11 @@ void ObjectKankyo_DrawSnow(Actor* thisx, PlayState* play2) { } void ObjectKankyo_Lightning(ObjectKankyo* this, PlayState* play) { - if (play->csCtx.state != 0 && play->csCtx.npcActions[0] != NULL) { + if (play->csCtx.state != 0 && play->csCtx.actorCues[0] != NULL) { switch (this->effects[0].state) { case 0: this->effects[0].timer = 0; - if (play->csCtx.npcActions[0]->action == 2) { + if (play->csCtx.actorCues[0]->id == 2) { this->effects[0].state++; } break; @@ -738,7 +738,7 @@ void ObjectKankyo_Lightning(ObjectKankyo* this, PlayState* play) { break; case 2: - if (play->csCtx.npcActions[0]->action == 1) { + if (play->csCtx.actorCues[0]->id == 1) { this->effects[0].state = 0; } break; @@ -756,8 +756,8 @@ void ObjectKankyo_DrawLightning(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_object_kankyo.c", 1182); if (this->effects[0].state == 1) { - Matrix_Translate(play->csCtx.npcActions[0]->startPos.x, play->csCtx.npcActions[0]->startPos.y, - play->csCtx.npcActions[0]->startPos.z, MTXMODE_NEW); + Matrix_Translate(play->csCtx.actorCues[0]->startPos.x, play->csCtx.actorCues[0]->startPos.y, + play->csCtx.actorCues[0]->startPos.z, MTXMODE_NEW); Matrix_RotateX(DEG_TO_RAD(20), MTXMODE_APPLY); Matrix_RotateZ(DEG_TO_RAD(20), MTXMODE_APPLY); Matrix_Scale(2.0f, 5.0f, 2.0f, MTXMODE_APPLY); @@ -798,7 +798,7 @@ void ObjectKankyo_WaitForSunGraveSparkObject(ObjectKankyo* this, PlayState* play void ObjectKankyo_SunGraveSpark(ObjectKankyo* this, PlayState* play) { 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) { Actor_PlaySfx(&this->actor, NA_SE_EN_BIRI_SPARK - SFX_FLAG); if ((s16)this->effects[0].alpha + 20 > 255) { this->effects[0].alpha = 255; @@ -819,7 +819,7 @@ void ObjectKankyo_DrawSunGraveSpark(Actor* thisx, PlayState* play2) { OPEN_DISPS(play->state.gfxCtx, "../z_object_kankyo.c", 1324); if (play->csCtx.state != 0) { - if (play->csCtx.npcActions[1] != NULL && play->csCtx.npcActions[1]->action == 2 && this->requiredObjectLoaded) { + if (play->csCtx.actorCues[1] != NULL && play->csCtx.actorCues[1]->id == 2 && this->requiredObjectLoaded) { // apparently, light waves with larger amplitudes look brighter, so the name 'amplitude' kind of works here if (this->effects[0].state == 0) { this->effects[0].amplitude += 1.0f / 7.0f; @@ -839,16 +839,16 @@ void ObjectKankyo_DrawSunGraveSpark(Actor* thisx, PlayState* play2) { this->effects[0].timer = 0; } - start.x = play->csCtx.npcActions[1]->startPos.x; - start.y = play->csCtx.npcActions[1]->startPos.y; - start.z = play->csCtx.npcActions[1]->startPos.z; + start.x = play->csCtx.actorCues[1]->startPos.x; + start.y = play->csCtx.actorCues[1]->startPos.y; + start.z = play->csCtx.actorCues[1]->startPos.z; - end.x = play->csCtx.npcActions[1]->endPos.x; - end.y = play->csCtx.npcActions[1]->endPos.y; - end.z = play->csCtx.npcActions[1]->endPos.z; + end.x = play->csCtx.actorCues[1]->endPos.x; + end.y = play->csCtx.actorCues[1]->endPos.y; + end.z = play->csCtx.actorCues[1]->endPos.z; - weight = Environment_LerpWeight(play->csCtx.npcActions[1]->endFrame, play->csCtx.npcActions[1]->startFrame, - play->csCtx.frames); + weight = Environment_LerpWeight(play->csCtx.actorCues[1]->endFrame, play->csCtx.actorCues[1]->startFrame, + play->csCtx.curFrame); Matrix_Translate(LERP(start.x, end.x, weight), LERP(start.y, end.y, weight), LERP(start.z, end.z, weight), MTXMODE_NEW); Matrix_Scale(this->effects[0].size, this->effects[0].size, this->effects[0].size, MTXMODE_APPLY); @@ -898,7 +898,7 @@ void ObjectKankyo_Beams(ObjectKankyo* this, PlayState* play) { if (play->csCtx.state != 0) { for (i = 0; i < 6; i++) { - if (play->csCtx.npcActions[i + 1] != NULL && play->csCtx.npcActions[i + 1]->action == 2) { + if (play->csCtx.actorCues[i + 1] != NULL && play->csCtx.actorCues[i + 1]->id == 2) { if (this->effects[i].size == 0.1f) { Audio_PlayCutsceneEffectsSequence(SEQ_CS_EFFECTS_TRIAL_DESTROY); } diff --git a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c index 6d19d02a69..ebea8492a7 100644 --- a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c +++ b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c @@ -170,7 +170,7 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, PlayState* play) { osSyncPrintf(VT_FGCOL(CYAN) "SHOT_SUN HIT!!!!!!!\n" VT_RST); if (INV_CONTENT(ITEM_ARROW_FIRE) == ITEM_NONE) { Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_ETCETERA, 700.0f, -800.0f, 7261.0f, 0, 0, 0, 7); - play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gLakeHyliaFireArrowsCS); + play->csCtx.script = SEGMENTED_TO_VIRTUAL(gLakeHyliaFireArrowsCS); if (1) {} gSaveContext.cutsceneTrigger = 1; } else { diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index d3993c1b50..fbc2a3346c 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -110,7 +110,7 @@ typedef struct { /* 0x00 */ s8 type; /* 0x04 */ union { void* ptr; - void (*func)(PlayState*, Player*, CsCmdActorAction*); + void (*func)(PlayState*, Player*, CsCmdActorCue*); }; } struct_80854B18; // size = 0x08 @@ -283,62 +283,62 @@ void func_808511FC(PlayState* play, Player* this, void* anim); void func_80851248(PlayState* play, Player* this, void* anim); void func_80851294(PlayState* play, Player* this, void* anim); void func_808512E0(PlayState* play, Player* this, void* arg2); -void func_80851368(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808513BC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808514C0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_8085157C(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808515A4(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851688(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851750(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851788(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851828(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808518DC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_8085190C(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851998(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808519C0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808519EC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851A50(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851B90(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851BE8(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851CA4(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851D2C(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851D80(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851DEC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851E28(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851E64(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851E90(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851ECC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851F84(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80851FB0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852048(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852080(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852174(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808521B8(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808521F4(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852234(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_8085225C(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852280(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852358(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852388(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852298(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852328(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852480(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852450(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808524B0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808524D0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852514(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852544(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852554(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852564(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808525C0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852608(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852648(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808526EC(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_8085283C(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808528C8(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852944(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_808529D0(PlayState* play, Player* this, CsCmdActorAction* arg2); -void func_80852C50(PlayState* play, Player* this, CsCmdActorAction* arg2); +void func_80851368(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808513BC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808514C0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_8085157C(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808515A4(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851688(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851750(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851788(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851828(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808518DC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_8085190C(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851998(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808519C0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808519EC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851A50(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851B90(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851BE8(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851CA4(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851D2C(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851D80(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851DEC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851E28(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851E64(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851E90(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851ECC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851F84(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80851FB0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852048(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852080(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852174(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808521B8(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808521F4(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852234(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_8085225C(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852280(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852358(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852388(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852298(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852328(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852480(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852450(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808524B0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808524D0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852514(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852544(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852554(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852564(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808525C0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852608(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852648(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808526EC(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_8085283C(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808528C8(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852944(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_808529D0(PlayState* play, Player* this, CsCmdActorCue* cue); +void func_80852C50(PlayState* play, Player* this, CsCmdActorCue* cue); void func_80852E14(Player* this, PlayState* play); s32 Player_IsDroppingFish(PlayState* play); s32 Player_StartFishing(PlayState* play); @@ -4083,7 +4083,7 @@ s32 func_808382DC(Player* this, PlayState* play) { } func_80832698(this, NA_SE_VO_LI_TAKEN_AWAY); - play->unk_11DE9 = true; + play->haltAllActors = true; func_80078884(NA_SE_OC_ABYSS); } else if ((this->unk_8A1 != 0) && ((this->unk_8A1 >= 2) || (this->invincibilityTimer == 0))) { u8 sp5C[] = { 2, 1, 1 }; @@ -9094,24 +9094,24 @@ void func_808458D0(Player* this, PlayState* play) { } } -s32 func_80845964(PlayState* play, Player* this, CsCmdActorAction* arg2, f32 arg3, s16 arg4, s32 arg5) { +s32 func_80845964(PlayState* play, Player* this, CsCmdActorCue* cue, f32 arg3, s16 arg4, s32 arg5) { if ((arg5 != 0) && (this->linearVelocity == 0.0f)) { return LinkAnimation_Update(play, &this->skelAnime); } if (arg5 != 2) { f32 sp34 = R_UPDATE_RATE * 0.5f; - f32 selfDistX = arg2->endPos.x - this->actor.world.pos.x; - f32 selfDistZ = arg2->endPos.z - this->actor.world.pos.z; + f32 selfDistX = cue->endPos.x - this->actor.world.pos.x; + f32 selfDistZ = cue->endPos.z - this->actor.world.pos.z; f32 sp28 = sqrtf(SQ(selfDistX) + SQ(selfDistZ)) / sp34; - s32 sp24 = (arg2->endFrame - play->csCtx.frames) + 1; + s32 sp24 = (cue->endFrame - play->csCtx.curFrame) + 1; arg4 = Math_Atan2S(selfDistZ, selfDistX); if (arg5 == 1) { - f32 distX = arg2->endPos.x - arg2->startPos.x; - f32 distZ = arg2->endPos.z - arg2->startPos.z; - s32 temp = (((sqrtf(SQ(distX) + SQ(distZ)) / sp34) / (arg2->endFrame - arg2->startFrame)) / 1.5f) * 4.0f; + f32 distX = cue->endPos.x - cue->startPos.x; + f32 distZ = cue->endPos.z - cue->startPos.z; + s32 temp = (((sqrtf(SQ(distX) + SQ(distZ)) / sp34) / (cue->endFrame - cue->startFrame)) / 1.5f) * 4.0f; if (temp >= sp24) { arg4 = this->actor.shape.rot.y; @@ -10725,13 +10725,13 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) { if ((play->csCtx.state != CS_STATE_IDLE) && (this->csMode != PLAYER_CSMODE_6) && !(this->stateFlags1 & PLAYER_STATE1_23) && !(this->stateFlags2 & PLAYER_STATE2_7) && (this->actor.category == ACTORCAT_PLAYER)) { - CsCmdActorAction* linkActionCsCmd = play->csCtx.linkAction; + CsCmdActorCue* cue = play->csCtx.playerCue; - if ((linkActionCsCmd != NULL) && (D_808547C4[linkActionCsCmd->action] != PLAYER_CSMODE_NONE)) { + if ((cue != NULL) && (D_808547C4[cue->id] != PLAYER_CSMODE_NONE)) { func_8002DF54(play, NULL, PLAYER_CSMODE_6); func_80832210(this); } else if ((this->csMode == PLAYER_CSMODE_NONE) && !(this->stateFlags2 & PLAYER_STATE2_10) && - (play->csCtx.state != CS_STATE_UNSKIPPABLE_INIT)) { + (play->csCtx.state != CS_STATE_STOP)) { func_8002DF54(play, NULL, PLAYER_CSMODE_49); func_80832210(this); } @@ -13039,7 +13039,7 @@ void func_8084F698(Player* this, PlayState* play) { void func_8084F710(Player* this, PlayState* play) { s32 pad; - if ((this->unk_84F != 0) && (play->csCtx.frames < 0x131)) { + if ((this->unk_84F != 0) && (play->csCtx.curFrame < 0x131)) { this->actor.gravity = 0.0f; this->actor.velocity.y = 0.0f; } else if (D_80853600 < 150.0f) { @@ -13064,9 +13064,9 @@ void func_8084F710(Player* this, PlayState* play) { return; } - if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.linkAction != NULL)) { + if ((play->csCtx.state != CS_STATE_IDLE) && (play->csCtx.playerCue != NULL)) { f32 sp28 = this->actor.world.pos.y; - func_808529D0(play, this, play->csCtx.linkAction); + func_808529D0(play, this, play->csCtx.playerCue); this->actor.world.pos.y = sp28; } } @@ -13983,7 +13983,7 @@ void func_80851314(Player* this) { } } -void func_80851368(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851368(PlayState* play, Player* this, CsCmdActorCue* cue) { this->stateFlags1 |= PLAYER_STATE1_27; this->stateFlags2 |= PLAYER_STATE2_10; this->stateFlags1 &= ~(PLAYER_STATE1_18 | PLAYER_STATE1_19); @@ -13991,7 +13991,7 @@ void func_80851368(PlayState* play, Player* this, CsCmdActorAction* arg2) { func_80832284(play, this, &gPlayerAnim_link_swimer_swim); } -void func_808513BC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808513BC(PlayState* play, Player* this, CsCmdActorCue* cue) { this->actor.gravity = 0.0f; if (this->unk_84F == 0) { @@ -14017,7 +14017,7 @@ void func_808513BC(PlayState* play, Player* this, CsCmdActorAction* arg2) { func_8084AEEC(this, &this->linearVelocity, 0.0f, this->actor.shape.rot.y); } -void func_808514C0(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808514C0(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851314(this); if (func_808332B8(this)) { @@ -14037,11 +14037,11 @@ void func_808514C0(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_8085157C(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_8085157C(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); } -void func_808515A4(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808515A4(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimationHeader* anim; if (func_808332B8(this)) { @@ -14051,7 +14051,7 @@ void func_808515A4(PlayState* play, Player* this, CsCmdActorAction* arg2) { anim = GET_PLAYER_ANIM(PLAYER_ANIMGROUP_nwait, this->modelAnimType); - if ((this->unk_446 == 6) || (this->unk_446 == 0x2E)) { + if ((this->cueId == 6) || (this->cueId == 0x2E)) { func_80832264(play, this, anim); } else { func_80832DB0(this); @@ -14062,7 +14062,7 @@ void func_808515A4(PlayState* play, Player* this, CsCmdActorAction* arg2) { func_80832210(this); } -void func_80851688(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851688(PlayState* play, Player* this, CsCmdActorCue* cue) { if (func_8084B3CC(play, this) == 0) { if ((this->csMode == PLAYER_CSMODE_49) && (play->csCtx.state == CS_STATE_IDLE)) { func_8002DF54(play, NULL, PLAYER_CSMODE_7); @@ -14087,12 +14087,12 @@ static struct_80832924 D_80855188[] = { { 0, -0x3030 }, }; -void func_80851750(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851750(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); func_80832924(this, D_80855188); } -void func_80851788(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851788(PlayState* play, Player* this, CsCmdActorCue* cue) { this->stateFlags1 &= ~PLAYER_STATE1_25; this->currentYaw = this->actor.shape.rot.y = this->actor.world.rot.y = @@ -14105,7 +14105,7 @@ void func_80851788(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851828(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851828(PlayState* play, Player* this, CsCmdActorCue* cue) { f32 sp1C = 2.5f; func_80845BA0(play, this, &sp1C, 10); @@ -14128,11 +14128,11 @@ void func_80851828(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_808518DC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808518DC(PlayState* play, Player* this, CsCmdActorCue* cue) { func_8083CEAC(this, play); } -void func_8085190C(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_8085190C(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851314(this); if (this->unk_850 != 0) { @@ -14147,12 +14147,12 @@ void func_8085190C(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851998(PlayState* play, Player* this, CsCmdActorAction* arg2) { - func_80845964(play, this, arg2, 0.0f, 0, 0); +void func_80851998(PlayState* play, Player* this, CsCmdActorCue* cue) { + func_80845964(play, this, cue, 0.0f, 0, 0); } -void func_808519C0(PlayState* play, Player* this, CsCmdActorAction* arg2) { - func_80845964(play, this, arg2, 0.0f, 0, 1); +void func_808519C0(PlayState* play, Player* this, CsCmdActorCue* cue) { + func_80845964(play, this, cue, 0.0f, 0, 1); } // unused @@ -14163,7 +14163,7 @@ static LinkAnimationHeader* D_80855190[] = { static Vec3f D_80855198 = { -1.0f, 70.0f, 20.0f }; -void func_808519EC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808519EC(PlayState* play, Player* this, CsCmdActorCue* cue) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80855198); this->actor.shape.rot.y = -0x8000; func_808322D0(play, this, this->ageProperties->unk_9C); @@ -14180,7 +14180,7 @@ static struct_80832924 D_808551AC[] = { { 0, -0x4027 }, }; -void func_80851A50(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851A50(PlayState* play, Player* this, CsCmdActorCue* cue) { struct_808551A4* sp2C; Gfx** dLists; @@ -14211,7 +14211,7 @@ void func_80851A50(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851B90(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851B90(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_demo_warp, -(2.0f / 3.0f), 12.0f, 12.0f, ANIMMODE_ONCE, 0.0f); } @@ -14220,7 +14220,7 @@ static struct_80832924 D_808551B4[] = { { 0, -0x281E }, }; -void func_80851BE8(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851BE8(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); this->unk_850++; @@ -14234,7 +14234,7 @@ void func_80851BE8(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851CA4(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851CA4(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime) && (this->unk_850 == 0) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { func_80832264(play, this, &gPlayerAnim_link_normal_back_downB); @@ -14246,7 +14246,7 @@ void func_80851CA4(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851D2C(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851D2C(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80850F1C(play, this, &gPlayerAnim_link_normal_okarina_start); func_8084B498(this); Player_SetModels(this, Player_ActionToModelGroup(this, this->itemAction)); @@ -14256,7 +14256,7 @@ static struct_80832924 D_808551B8[] = { { NA_SE_IT_SWORD_PICKOUT, -0x80C }, }; -void func_80851D80(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851D80(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); if (LinkAnimation_OnFrame(&this->skelAnime, 6.0f)) { @@ -14266,26 +14266,26 @@ void func_80851D80(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80851DEC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851DEC(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); Math_StepToS(&this->actor.shape.face, 0, 1); } -void func_80851E28(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851E28(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); Math_StepToS(&this->actor.shape.face, 2, 1); } -void func_80851E64(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851E64(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80833064(play, this, &gPlayerAnim_link_swimer_swim_get, 0x98); } -void func_80851E90(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851E90(PlayState* play, Player* this, CsCmdActorCue* cue) { func_8083303C(play, this, &gPlayerAnim_clink_op3_negaeri, 0x9C); func_80832698(this, NA_SE_VO_LI_GROAN); } -void func_80851ECC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851ECC(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { func_808330EC(play, this, &gPlayerAnim_clink_op3_wait2, 0x9C); } @@ -14300,7 +14300,7 @@ void func_80851F14(PlayState* play, Player* this, LinkAnimationHeader* anim, str } } -void func_80851F84(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851F84(PlayState* play, Player* this, CsCmdActorCue* cue) { this->actor.shape.shadowDraw = NULL; func_80851134(play, this, &gPlayerAnim_clink_op3_wait1); } @@ -14311,7 +14311,7 @@ static struct_80832924 D_808551BC[] = { { NA_SE_PL_SLIPDOWN, -0x900 }, }; -void func_80851FB0(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80851FB0(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { func_808330EC(play, this, &gPlayerAnim_clink_op3_wait3, 0x9C); this->unk_850 = 1; @@ -14330,24 +14330,26 @@ static struct_80832924 D_808551C8[] = { { 0, -0x4860 }, }; -void func_80852048(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852048(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); func_80832924(this, D_808551C8); } -void func_80852080(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852080(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80833064(play, this, &gPlayerAnim_clink_demo_futtobi, 0x9D); func_80832698(this, NA_SE_VO_LI_FALL_L); } -void func_808520BC(PlayState* play, Player* this, CsCmdActorAction* arg2) { - f32 startX = arg2->startPos.x; - f32 startY = arg2->startPos.y; - f32 startZ = arg2->startPos.z; - f32 distX = (arg2->endPos.x - startX); - f32 distY = (arg2->endPos.y - startY); - f32 distZ = (arg2->endPos.z - startZ); - f32 sp4 = (f32)(play->csCtx.frames - arg2->startFrame) / (f32)(arg2->endFrame - arg2->startFrame); +void func_808520BC(PlayState* play, Player* this, CsCmdActorCue* cue) { + f32 startX = cue->startPos.x; + f32 startY = cue->startPos.y; + f32 startZ = cue->startPos.z; + + f32 distX = cue->endPos.x - startX; + f32 distY = cue->endPos.y - startY; + f32 distZ = cue->endPos.z - startZ; + + f32 sp4 = (f32)(play->csCtx.curFrame - cue->startFrame) / (f32)(cue->endFrame - cue->startFrame); this->actor.world.pos.x = distX * sp4 + startX; this->actor.world.pos.y = distY * sp4 + startY; @@ -14359,37 +14361,37 @@ static struct_80832924 D_808551D8[] = { { NA_SE_PL_BOUND, -0x101E }, }; -void func_80852174(PlayState* play, Player* this, CsCmdActorAction* arg2) { - func_808520BC(play, this, arg2); +void func_80852174(PlayState* play, Player* this, CsCmdActorCue* cue) { + func_808520BC(play, this, cue); LinkAnimation_Update(play, &this->skelAnime); func_80832924(this, D_808551D8); } -void func_808521B8(PlayState* play, Player* this, CsCmdActorAction* arg2) { - if (arg2 != NULL) { - func_808520BC(play, this, arg2); +void func_808521B8(PlayState* play, Player* this, CsCmdActorCue* cue) { + if (cue != NULL) { + func_808520BC(play, this, cue); } LinkAnimation_Update(play, &this->skelAnime); } -void func_808521F4(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808521F4(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80832B0C(play, this, GET_PLAYER_ANIM(PLAYER_ANIMGROUP_nwait, this->modelAnimType)); func_80832210(this); } -void func_80852234(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852234(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); } -void func_8085225C(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_8085225C(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80832F54(play, this, 0x98); } -void func_80852280(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852280(PlayState* play, Player* this, CsCmdActorCue* cue) { this->actor.draw = Player_Draw; } -void func_80852298(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852298(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { func_8083313C(play, this, &gPlayerAnim_clink_demo_koutai_wait); this->unk_850 = 1; @@ -14405,7 +14407,7 @@ static struct_80832924 D_808551E0[] = { { 0, -0x3018 }, }; -void func_80852328(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852328(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851F14(play, this, &gPlayerAnim_link_demo_furimuki2_wait, D_808551E0); } @@ -14414,17 +14416,17 @@ static struct_80832924 D_808551E8[] = { { 0, -0x4023 }, }; -void func_80852358(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852358(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80851F14(play, this, &gPlayerAnim_link_demo_nozokikomi_wait, D_808551E8); } -void func_80852388(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852388(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { func_808322A4(play, this, &gPlayerAnim_demo_link_twait); this->unk_850 = 1; } - if ((this->unk_850 != 0) && (play->csCtx.frames >= 900)) { + if ((this->unk_850 != 0) && (play->csCtx.curFrame >= 900)) { this->rightHandType = PLAYER_MODELTYPE_LH_OPEN; } else { this->rightHandType = PLAYER_MODELTYPE_RH_FF; @@ -14443,7 +14445,7 @@ static struct_80832924 D_808551F0[] = { { 0, -0x3021 }, }; -void func_80852450(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852450(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80852414(play, this, &gPlayerAnim_clink_demo_koutai_wait, D_808551F0); } @@ -14451,31 +14453,31 @@ static struct_80832924 D_808551F8[] = { { NA_SE_PL_KNOCK, -0x84E }, }; -void func_80852480(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852480(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80852414(play, this, &gPlayerAnim_link_demo_kakeyori_wait, D_808551F8); } -void func_808524B0(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808524B0(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80837704(play, this); } -void func_808524D0(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808524D0(PlayState* play, Player* this, CsCmdActorCue* cue) { sControlInput->press.button |= BTN_B; func_80844E68(this, play); } -void func_80852514(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852514(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80844E68(this, play); } -void func_80852544(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852544(PlayState* play, Player* this, CsCmdActorCue* cue) { } -void func_80852554(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852554(PlayState* play, Player* this, CsCmdActorCue* cue) { } -void func_80852564(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852564(PlayState* play, Player* this, CsCmdActorCue* cue) { this->stateFlags3 |= PLAYER_STATE3_1; this->linearVelocity = 2.0f; this->actor.velocity.y = -1.0f; @@ -14490,16 +14492,16 @@ static void (*D_808551FC[])(Player* this, PlayState* play) = { func_80843A38, }; -void func_808525C0(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808525C0(PlayState* play, Player* this, CsCmdActorCue* cue) { D_808551FC[this->unk_850](this, play); } -void func_80852608(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852608(PlayState* play, Player* this, CsCmdActorCue* cue) { func_80846720(play, this, 0); func_808322D0(play, this, &gPlayerAnim_link_demo_return_to_past); } -void func_80852648(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852648(PlayState* play, Player* this, CsCmdActorCue* cue) { LinkAnimation_Update(play, &this->skelAnime); if (LinkAnimation_OnFrame(&this->skelAnime, 10.0f)) { @@ -14523,7 +14525,7 @@ static Vec3s D_80855210[2][2] = { { { -200, 500, 0 }, { 600, 400, 600 } }, }; -void func_808526EC(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808526EC(PlayState* play, Player* this, CsCmdActorCue* cue) { static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; static Color_RGBA8 primColor = { 255, 255, 255, 0 }; static Color_RGBA8 envColor = { 0, 128, 128, 0 }; @@ -14550,9 +14552,9 @@ void func_808526EC(PlayState* play, Player* this, CsCmdActorAction* arg2) { EffectSsKiraKira_SpawnDispersed(play, &sparklePos, &zeroVec, &zeroVec, &primColor, &envColor, 600, -10); } -void func_8085283C(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_8085283C(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { - func_80852944(play, this, arg2); + func_80852944(play, this, cue); } else if (this->unk_850 == 0) { Item_Give(play, ITEM_SWORD_MASTER); func_80846720(play, this, 0); @@ -14561,7 +14563,7 @@ void func_8085283C(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_808528C8(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_808528C8(PlayState* play, Player* this, CsCmdActorCue* cue) { if (LinkAnimation_Update(play, &this->skelAnime)) { func_8084285C(this, 0.0f, 99.0f, this->skelAnime.endFrame - 8.0f); } @@ -14571,7 +14573,7 @@ void func_808528C8(PlayState* play, Player* this, CsCmdActorAction* arg2) { } } -void func_80852944(PlayState* play, Player* this, CsCmdActorAction* arg2) { +void func_80852944(PlayState* play, Player* this, CsCmdActorCue* cue) { if (func_808332B8(this)) { func_80838F18(play, this); func_80832340(play, this); @@ -14586,36 +14588,38 @@ void func_80852944(PlayState* play, Player* this, CsCmdActorAction* arg2) { this->unk_6AD = 0; } -void func_808529D0(PlayState* play, Player* this, CsCmdActorAction* arg2) { - this->actor.world.pos.x = arg2->startPos.x; - this->actor.world.pos.y = arg2->startPos.y; +void func_808529D0(PlayState* play, Player* this, CsCmdActorCue* cue) { + this->actor.world.pos.x = cue->startPos.x; + this->actor.world.pos.y = cue->startPos.y; + if ((play->sceneId == SCENE_KOKIRI_FOREST) && !LINK_IS_ADULT) { this->actor.world.pos.y -= 1.0f; } - this->actor.world.pos.z = arg2->startPos.z; - this->currentYaw = this->actor.shape.rot.y = arg2->rot.y; + + this->actor.world.pos.z = cue->startPos.z; + this->currentYaw = this->actor.shape.rot.y = cue->rot.y; } -void func_80852A54(PlayState* play, Player* this, CsCmdActorAction* arg2) { - f32 dx = arg2->startPos.x - (s32)this->actor.world.pos.x; - f32 dy = arg2->startPos.y - (s32)this->actor.world.pos.y; - f32 dz = arg2->startPos.z - (s32)this->actor.world.pos.z; +void func_80852A54(PlayState* play, Player* this, CsCmdActorCue* cue) { + f32 dx = cue->startPos.x - (s32)this->actor.world.pos.x; + f32 dy = cue->startPos.y - (s32)this->actor.world.pos.y; + f32 dz = cue->startPos.z - (s32)this->actor.world.pos.z; f32 dist = sqrtf(SQ(dx) + SQ(dy) + SQ(dz)); - s16 yawDiff = arg2->rot.y - this->actor.shape.rot.y; + s16 yawDiff = (s16)cue->rot.y - this->actor.shape.rot.y; if ((this->linearVelocity == 0.0f) && ((dist > 50.0f) || (ABS(yawDiff) > 0x4000))) { - func_808529D0(play, this, arg2); + func_808529D0(play, this, cue); } this->skelAnime.moveFlags = 0; func_80832DB0(this); } -void func_80852B4C(PlayState* play, Player* this, CsCmdActorAction* arg2, struct_80854B18* arg3) { +void func_80852B4C(PlayState* play, Player* this, CsCmdActorCue* cue, struct_80854B18* arg3) { if (arg3->type > 0) { D_80854AA4[arg3->type](play, this, arg3->ptr); } else if (arg3->type < 0) { - arg3->func(play, this, arg2); + arg3->func(play, this, cue); } if ((D_80858AA0 & 4) && !(this->skelAnime.moveFlags & 4)) { @@ -14631,30 +14635,31 @@ void func_80852C0C(PlayState* play, Player* this, s32 csMode) { } } -void func_80852C50(PlayState* play, Player* this, CsCmdActorAction* arg2) { - CsCmdActorAction* linkCsAction = play->csCtx.linkAction; +void func_80852C50(PlayState* play, Player* this, CsCmdActorCue* cueUnused) { + CsCmdActorCue* cue = play->csCtx.playerCue; s32 pad; s32 csMode; - if (play->csCtx.state == CS_STATE_UNSKIPPABLE_INIT) { + if (play->csCtx.state == CS_STATE_STOP) { func_8002DF54(play, NULL, PLAYER_CSMODE_7); - this->unk_446 = 0; + this->cueId = 0; func_80832210(this); return; } - if (linkCsAction == NULL) { + if (cue == NULL) { this->actor.flags &= ~ACTOR_FLAG_6; return; } - if (this->unk_446 != linkCsAction->action) { - csMode = D_808547C4[linkCsAction->action]; - if (csMode >= 0) { + if (this->cueId != cue->id) { + csMode = D_808547C4[cue->id]; + + if (csMode >= PLAYER_CSMODE_NONE) { if ((csMode == PLAYER_CSMODE_3) || (csMode == PLAYER_CSMODE_4)) { - func_80852A54(play, this, linkCsAction); + func_80852A54(play, this, cue); } else { - func_808529D0(play, this, linkCsAction); + func_808529D0(play, this, cue); } } @@ -14663,15 +14668,15 @@ void func_80852C50(PlayState* play, Player* this, CsCmdActorAction* arg2) { func_80832DBC(this); osSyncPrintf("TOOL MODE=%d\n", csMode); func_80852C0C(play, this, ABS(csMode)); - func_80852B4C(play, this, linkCsAction, &D_80854B18[ABS(csMode)]); + func_80852B4C(play, this, cue, &D_80854B18[ABS(csMode)]); this->unk_850 = 0; this->unk_84F = 0; - this->unk_446 = linkCsAction->action; + this->cueId = cue->id; } - csMode = D_808547C4[this->unk_446]; - func_80852B4C(play, this, linkCsAction, &D_80854E50[ABS(csMode)]); + csMode = D_808547C4[this->cueId]; + func_80852B4C(play, this, cue, &D_80854E50[ABS(csMode)]); } void func_80852E14(Player* this, PlayState* play) { diff --git a/tools/csdis.py b/tools/csdis.py index b5aedb19c2..ce0de398f9 100755 --- a/tools/csdis.py +++ b/tools/csdis.py @@ -13,127 +13,127 @@ command_continue_stop = { 0xFF: "CS_CMD_STOP", } -cutscene_terminator_destinations = { - 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", # 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", +cutscene_destinations = { + 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", + 0x10: "CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED", + 0x11: "CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED", + 0x12: "CS_DEST_TEMPLE_OF_TIME_AFTER_LIGHT_MEDALLION", + 0x13: "CS_DEST_DEATH_MOUNTAIN_TRAIL", + 0x14: "CS_DEST_UNIMPLEMENTED_14", + 0x15: "CS_DEST_LAKE_HYLIA_WATER_RESTORED", + 0x16: "CS_DEST_DESERT_COLOSSUS_REQUIEM", + 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", + 0x1B: "CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED_2", + 0x1C: "CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED_2", + 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", + 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", + 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", + 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", + 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", + 0x50: "CS_DEST_LON_LON_RANCH_2", + 0x51: "CS_DEST_LON_LON_RANCH_3", + 0x52: "CS_DEST_LON_LON_RANCH_4", + 0x53: "CS_DEST_LON_LON_RANCH_5", + 0x54: "CS_DEST_LON_LON_RANCH_6", + 0x55: "CS_DEST_LON_LON_RANCH_7", + 0x56: "CS_DEST_LON_LON_RANCH_8", + 0x57: "CS_DEST_LON_LON_RANCH_9", + 0x58: "CS_DEST_LON_LON_RANCH_10", + 0x59: "CS_DEST_LON_LON_RANCH_11", + 0x5A: "CS_DEST_LON_LON_RANCH_12", + 0x5B: "CS_DEST_LON_LON_RANCH_13", + 0x5C: "CS_DEST_LON_LON_RANCH_14", + 0x5D: "CS_DEST_LON_LON_RANCH_15", + 0x5E: "CS_DEST_LON_LON_RANCH_FROM_EPONAS_SONG", + 0x5F: "CS_DEST_STONES_RESTORED_CONDITIONAL", + 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", + 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", + 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", } ocarina_action_ids = { @@ -228,26 +228,26 @@ cutscene_command_macros = { ("CS_MISC_LIST(%w1:1:s)", 2, None, 0, "CS_MISC(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x, %w1:10:x, %w1:11:x, %w1:12:x)", 12), 4: - ("CS_LIGHTING_LIST(%w1:1:s)", 2, None, 0, - "CS_LIGHTING(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), + ("CS_LIGHT_SETTING_LIST(%w1:1:s)", 2, None, 0, + "CS_LIGHT_SETTING(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), 86: - ("CS_PLAY_BGM_LIST(%w1:1:s)", 2, None, 0, - "CS_PLAY_BGM(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), + ("CS_START_SEQ_LIST(%w1:1:s)", 2, None, 0, + "CS_START_SEQ(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), 87: - ("CS_STOP_BGM_LIST(%w1:1:s)", 2, None, 0, - "CS_STOP_BGM(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), + ("CS_STOP_SEQ_LIST(%w1:1:s)", 2, None, 0, + "CS_STOP_SEQ(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), 124: - ("CS_FADE_BGM_LIST(%w1:1:s)", 2, None, 0, - "CS_FADE_BGM(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), + ("CS_FADE_OUT_SEQ_LIST(%w1:1:s)", 2, None, 0, + "CS_FADE_OUT_SEQ(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %w1:3:x, %w1:4:x, %w1:5:x, %w1:6:x, %w1:7:x, %w1:8:x, %w1:9:x)", 12), 9: - ("CS_CMD_09_LIST(%w1:1:s)", 2, None, 0, - "CS_CMD_09(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x, %b4:3:x, %b3:3:x, %h1:3:x)", 3), + ("CS_RUMBLE_CONTROLLER_LIST(%w1:1:s)", 2, None, 0, + "CS_RUMBLE_CONTROLLER(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x, %b4:3:x, %b3:3:x, %h1:3:x)", 3), 140: ("CS_TIME_LIST(%w1:1:s)", 2, None, 0, "CS_TIME(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x, %w1:3:x)", 3), 10: - ("CS_PLAYER_ACTION_LIST(%w1:1:s)", 2, None, 0, - "CS_PLAYER_ACTION(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x, %w1:4:s, %w1:5:s, %w1:6:s, %w1:7:s, %w1:8:s, %w1:9:s, %w1:10:f, %w1:11:f, %w1:12:f)", 12), + ("CS_PLAYER_CUE_LIST(%w1:1:s)", 2, None, 0, + "CS_PLAYER_CUE(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x, %w1:4:s, %w1:5:s, %w1:6:s, %w1:7:s, %w1:8:s, %w1:9:s, %w1:10:f, %w1:11:f, %w1:12:f)", 12), (15,17,18,23,34,39,46,76,85,93,105,107,110,119,123,138,139,144, # npc action 1 14,16,24,35,40,48,64,68,70,78,80,94,116,118,120,125,131,141, # npc action 2 25,36,41,50,67,69,72,74,81,106,117,121,126,132, # npc action 3 @@ -258,34 +258,34 @@ cutscene_command_macros = { 49,60,89,111,114,134,142, # npc action 8 62, # npc action 9 143): # npc action 10 - ("CS_NPC_ACTION_LIST(%w1:0:s, %w1:1:s)", 2, None, 0, - "CS_NPC_ACTION(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x, %w1:4:s, %w1:5:s, %w1:6:s, %w1:7:s, %w1:8:s, %w1:9:s, %w1:10:f, %w1:11:f, %w1:12:f)", 12), + ("CS_ACTOR_CUE_LIST(%w1:0:s, %w1:1:s)", 2, None, 0, + "CS_ACTOR_CUE(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x, %w1:4:s, %w1:5:s, %w1:6:s, %w1:7:s, %w1:8:s, %w1:9:s, %w1:10:f, %w1:11:f, %w1:12:f)", 12), 1: - ("CS_CAM_EYE_LIST(%h1:1:s, %h2:2:s)", 3, 0, None, - "CS_CAM_EYE(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_EYE_SPLINE(%h1:1:s, %h2:2:s)", 3, 0, None, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 5: - ("CS_CAM_EYE_REL_TO_PLAYER_LIST(%h1:1:s, %h2:2:s)", 3, 0, None, - "CS_CAM_EYE_REL_TO_PLAYER(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_EYE_SPLINE_REL_TO_PLAYER(%h1:1:s, %h2:2:s)", 3, 0, None, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 2: - ("CS_CAM_AT_LIST(%h1:1:s, %h2:2:s)", 3, 0, None, - "CS_CAM_AT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_AT_SPLINE(%h1:1:s, %h2:2:s)", 3, 0, None, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 6: - ("CS_CAM_AT_REL_TO_PLAYER_LIST(%h1:1:s, %h2:2:s)", 3, 0, None, - "CS_CAM_AT_REL_TO_PLAYER(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_AT_SPLINE_REL_TO_PLAYER(%h1:1:s, %h2:2:s)", 3, 0, None, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 7: - ("CS_CMD_07_LIST(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x)", 3, None, -1, - "CS_CMD_07(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_EYE_LIST(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x)", 3, None, -1, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 8: - ("CS_CMD_08_LIST(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x)", 3, None, -1, - "CS_CMD_08(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), + ("CS_CAM_AT_LIST(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x)", 3, None, -1, + "CS_CAM_POINT(%b4:1:e0, %b3:1:x, %h1:1:s, %w1:2:f, %h2:3:s, %h1:3:s, %h2:4:s, %h1:4:x)", 4), 1000: - ("CS_TERMINATOR(%h2:2:e1, %h1:2:s, %h2:3:s)", 4, None, None, + ("CS_DESTINATION(%h2:2:e1, %h1:2:s, %h2:3:s)", 4, None, None, None, None), 19: ("CS_TEXT_LIST(%w1:1:s)", 2, None, 0, "__SPECIAL(CS_TEXT_LIST)", 3), 45: - ("CS_SCENE_TRANS_FX(%h2:2:x, %h1:2:s, %h2:3:s)", 4, None, None, + ("CS_TRANSITION(%h2:2:x, %h1:2:s, %h2:3:s)", 4, None, None, None, None), } @@ -389,7 +389,7 @@ def format_arg(arg, words): if enum_no == 0: result = command_continue_stop[unsigned_value] elif enum_no == 1: - result = cutscene_terminator_destinations[unsigned_value] + result = cutscene_destinations[unsigned_value] elif enum_no == 2: result = ocarina_action_ids[unsigned_value] elif format_type == "u": @@ -412,9 +412,9 @@ def format_cmd(cmd, words): if get_short_unsigned(words[1], 0) == 0xFFFF: cmd = "CS_TEXT_NONE(%h1:1:s, %h2:2:s)" elif get_short(words[2], 1) == 2: - cmd = "CS_TEXT_LEARN_SONG(%h2:1:e2, %h1:1:s, %h2:2:s, %h2:3:x)" + cmd = "CS_TEXT_OCARINA_ACTION(%h2:1:e2, %h1:1:s, %h2:2:s, %h2:3:x)" else: - cmd = "CS_TEXT_DISPLAY_TEXTBOX(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x)" + cmd = "CS_TEXT(%h2:1:x, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x)" for arg in args_list(cmd): cmd = cmd.replace(arg, format_arg(arg, words)) return cmd