From 6c606383e8ef7347da101fb0eeeba783f1be5d7c Mon Sep 17 00:00:00 2001 From: HailSanta <53960937+HailSanta@users.noreply.github.com> Date: Tue, 7 Feb 2023 19:47:26 -0500 Subject: [PATCH] nok and pra done (#936) * nok_04 ok * thread done * push block doc * nok done * almost done pra * pra done * cleanup pra_31 mtx names * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "3bbc02af68" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "3bbc02af68" git-subrepo: version: "0.4.5" origin: "???" commit: "???" --------- Co-authored-by: HailSanta --- include/dead.h | 2 +- include/enums.h | 2 +- include/script_api/common.h | 2 +- .../area_trd_part_2/actor/fake_bowser.c | 58 +- src/evt/player_api.c | 46 +- src/evt/script_list.c | 2 +- src/world/action/misc.c | 2 +- src/world/area_arn/arn_05/arn_05_3_npc.c | 16 +- src/world/area_arn/arn_07/arn_07_5_npc.c | 8 +- .../area_flo/flo_00/flo_00_5_beanstalk.c | 2 +- src/world/area_flo/flo_19/flo_19_4_clouds.c | 8 +- src/world/area_hos/hos_01/hos_01_6_star_way.c | 2 +- src/world/area_hos/hos_05/hos_05_5_intro.c | 14 +- src/world/area_isk/isk_05/isk_05_3_npc.c | 2 +- src/world/area_isk/isk_13/isk_13_3_npc.c | 2 +- src/world/area_isk/isk_14/isk_14_3_npc.c | 2 +- src/world/area_isk/isk_16/isk_16_3_boss.c | 22 +- src/world/area_jan/jan_01/jan_01_3_npc.c | 4 +- src/world/area_jan/jan_03/jan_03_2_main.c | 8 +- src/world/area_jan/jan_03/jan_03_5_entity.c | 2 +- src/world/area_kmr/kmr_00/kmr_00_4_npc.c | 4 +- src/world/area_kmr/kmr_02/kmr_02_3_npc.c | 6 +- src/world/area_kmr/kmr_02/kmr_02_7_kammy.c | 4 +- src/world/area_kmr/kmr_22/npc/chapter_1.inc.c | 4 +- src/world/area_kmr/kmr_22/npc/chapter_2.inc.c | 14 +- src/world/area_kmr/kmr_22/npc/chapter_3.inc.c | 4 +- src/world/area_kmr/kmr_22/npc/chapter_4.inc.c | 6 +- src/world/area_kmr/kmr_22/npc/chapter_5.inc.c | 2 +- src/world/area_kmr/kmr_22/npc/chapter_6.inc.c | 12 +- src/world/area_kmr/kmr_22/npc/chapter_7.inc.c | 10 +- src/world/area_kmr/kmr_22/npc/chapter_8.inc.c | 2 +- .../area_kmr/kmr_22/npc/lava_piranha.inc.c | 6 +- src/world/area_kzn/kzn_17/kzn_17_3_npc.c | 4 +- src/world/area_mac/mac_00/mac_00_12_intro.c | 6 +- .../area_mac/mac_00/mac_00_14_epilogue.c | 6 +- src/world/area_mac/mac_02/npc/bootler.inc.c | 4 +- src/world/area_mac/mac_04/mac_04_6_npc.c | 2 +- src/world/area_mac/machi/machi_6_misstar.c | 4 +- src/world/area_mim/mim_04/mim_04_4_hint.c | 2 +- src/world/area_mim/mim_07/mim_07_4_hint.c | 2 +- src/world/area_mim/mim_10/mim_10_4_npc.c | 10 +- src/world/area_mim/mim_11/mim_11_3_gate.c | 4 +- src/world/area_mim/mim_11/mim_11_5_npc.c | 2 +- src/world/area_nok/common/GetIntoShell.inc.c | 19 + src/world/area_nok/nok.h | 64 +- src/world/area_nok/nok_01/nok_01_2_main.c | 6 +- src/world/area_nok/nok_01/nok_01_4_npc.c | 24 +- src/world/area_nok/nok_01/npcs_crisis.inc.c | 18 +- src/world/area_nok/nok_01/npcs_normal.inc.c | 16 +- src/world/area_nok/nok_02/nok_02_2_main.c | 1 - src/world/area_nok/nok_02/nok_02_6_npc.c | 58 +- src/world/area_nok/nok_02/npcs_crisis.inc.c | 2 +- src/world/area_nok/nok_03/9EB7F0.c | 6 - src/world/area_nok/nok_03/nok_03.h | 19 +- src/world/area_nok/nok_03/nok_03_0_header.c | 14 + src/world/area_nok/nok_03/nok_03_1_music.c | 12 + src/world/area_nok/nok_03/nok_03_2_main.c | 78 + src/world/area_nok/nok_03/nok_03_3_entity.c | 8 + src/world/area_nok/nok_03/nok_03_4_npc.c | 216 +++ src/world/area_nok/nok_04/9EDBF0.c | 313 ---- src/world/area_nok/nok_04/nok_04.h | 46 +- src/world/area_nok/nok_04/nok_04_0_header.c | 13 + src/world/area_nok/nok_04/nok_04_1_music.c | 25 + src/world/area_nok/nok_04/nok_04_2_main.c | 37 + src/world/area_nok/nok_04/nok_04_3_entity.c | 7 + src/world/area_nok/nok_04/nok_04_4_npc.c | 1633 +++++++++++++++++ .../nok_04/{9EEA80.c => nok_04_5_partner.c} | 0 src/world/area_nok/nok_12/nok_12.h | 2 +- src/world/area_nok/nok_12/nok_12_2_main.c | 2 +- src/world/area_nok/nok_12/nok_12_3_entity.c | 8 +- src/world/area_nok/nok_12/nok_12_4_bridge.c | 2 +- src/world/area_nok/nok_14/nok_14_3_entity.c | 2 +- src/world/area_nok/nok_14/nok_14_4_bridge.c | 2 +- src/world/area_obk/common/TrafficBoos.inc.c | 2 +- .../area_obk/obk_01/obk_01_5_jump_scare.c | 2 +- src/world/area_obk/obk_01/obk_01_6_npc.c | 2 +- src/world/area_obk/obk_09/obk_09_3_meet_bow.c | 4 +- src/world/area_obk/obk_09/obk_09_4_npc.c | 2 +- src/world/area_osr/osr_03/osr_03_4_starship.c | 2 +- src/world/area_pra/common/GlassShimmer.inc.c | 4 +- src/world/area_pra/pra.h | 3 +- src/world/area_pra/pra_01/pra_01.h | 2 +- src/world/area_pra/pra_04/pra_04.h | 2 +- src/world/area_pra/pra_09/D58890.c | 6 - src/world/area_pra/pra_09/D588B0.c | 137 -- src/world/area_pra/pra_09/pra_09.h | 36 +- src/world/area_pra/pra_09/pra_09_0_header.c | 15 + src/world/area_pra/pra_09/pra_09_1_music.c | 8 + src/world/area_pra/pra_09/pra_09_2_main.c | 94 + src/world/area_pra/pra_09/pra_09_3_npc.c | 1063 +++++++++++ src/world/area_pra/pra_10/pra_10.h | 4 +- src/world/area_pra/pra_13/D645E0.c | 6 - src/world/area_pra/pra_13/D64600.c | 108 -- src/world/area_pra/pra_13/pra_13.h | 19 +- src/world/area_pra/pra_13/pra_13_0_header.c | 17 + src/world/area_pra/pra_13/pra_13_1_music.c | 7 + src/world/area_pra/pra_13/pra_13_2_main.c | 190 ++ src/world/area_pra/pra_13/pra_13_3_npc.c | 272 +++ src/world/area_pra/pra_18/D6B620.c | 6 - src/world/area_pra/pra_18/D6B640.c | 3 - src/world/area_pra/pra_18/pra_18.h | 19 +- src/world/area_pra/pra_18/pra_18_0_header.c | 16 + src/world/area_pra/pra_18/pra_18_1_music.c | 8 + src/world/area_pra/pra_18/pra_18_2_main.c | 144 ++ src/world/area_pra/pra_18/pra_18_3_npc.c | 409 +++++ src/world/area_pra/pra_19/pra_19.h | 18 +- src/world/area_pra/pra_19/pra_19_3_npc.c | 6 +- src/world/area_pra/pra_29/D7CB50.c | 6 - src/world/area_pra/pra_29/D7CB70.c | 51 - src/world/area_pra/pra_29/pra_29.h | 15 +- src/world/area_pra/pra_29/pra_29_0_header.c | 17 + src/world/area_pra/pra_29/pra_29_1_music.c | 8 + src/world/area_pra/pra_29/pra_29_2_entity.c | 13 + src/world/area_pra/pra_29/pra_29_3_main.c | 177 ++ src/world/area_pra/pra_29/pra_29_4_bridge.c | 108 ++ src/world/area_pra/pra_31/D7ED60.c | 9 - src/world/area_pra/pra_31/D7ED80.c | 82 - src/world/area_pra/pra_31/D7F270.c | 280 --- src/world/area_pra/pra_31/pra_31.h | 62 +- src/world/area_pra/pra_31/pra_31_0_header.c | 16 + .../area_pra/pra_31/pra_31_10_stairs_lights.c | 3 + .../area_pra/pra_31/pra_31_11_stairs_vtx.c | 129 ++ src/world/area_pra/pra_31/pra_31_1_music.c | 8 + src/world/area_pra/pra_31/pra_31_2_npc.c | 208 +++ src/world/area_pra/pra_31/pra_31_3_main.c | 96 + src/world/area_pra/pra_31/pra_31_4_puzzle.c | 583 ++++++ .../area_pra/pra_31/pra_31_5_texture_1.c | 6 + .../area_pra/pra_31/pra_31_6_texture_2.c | 6 + .../area_pra/pra_31/pra_31_7_texture_3.c | 5 + .../area_pra/pra_31/pra_31_8_stairs_skele.c | 264 +++ .../area_pra/pra_31/pra_31_9_stairs_anim.c | 684 +++++++ src/world/area_pra/pra_32/D86A00.c | 3 - src/world/area_pra/pra_32/D86A20.c | 11 - src/world/area_pra/pra_32/pra_32.h | 23 +- src/world/area_pra/pra_32/pra_32_0_header.c | 15 + src/world/area_pra/pra_32/pra_32_1_music.c | 12 + src/world/area_pra/pra_32/pra_32_2_main.c | 186 ++ src/world/area_pra/pra_32/pra_32_3_npc.c | 285 +++ src/world/area_pra/pra_34/D8B3B0.c | 6 - src/world/area_pra/pra_34/D8B3D0.c | 7 - src/world/area_pra/pra_34/pra_34.h | 16 +- src/world/area_pra/pra_34/pra_34_0_header.c | 17 + src/world/area_pra/pra_34/pra_34_1_music.c | 8 + src/world/area_pra/pra_34/pra_34_2_main.c | 218 +++ src/world/area_pra/pra_34/pra_34_3_entity.c | 24 + src/world/area_pra/pra_35/D8D250.c | 6 - src/world/area_pra/pra_35/D8D270.c | 9 - src/world/area_pra/pra_35/D8FBA0.c | 9 - src/world/area_pra/pra_35/pra_35.h | 16 +- src/world/area_pra/pra_35/pra_35_0_header.c | 16 + src/world/area_pra/pra_35/pra_35_1_music.c | 8 + src/world/area_pra/pra_35/pra_35_2_main.c | 120 ++ src/world/area_pra/pra_35/pra_35_3_npc.c | 74 + src/world/area_pra/pra_35/pra_35_4_entity.c | 14 + src/world/area_pra/pra_36/pra_36.h | 2 +- src/world/area_pra/pra_37/pra_37_3_npc.c | 3 +- src/world/area_pra/pra_39/pra_39.h | 2 +- src/world/area_sam/sam_05/sam_05_5_scenes.c | 2 +- src/world/area_sam/sam_08/sam_08_4_npc.c | 5 +- src/world/area_sam/sam_10/sam_10_5_npc.c | 3 +- src/world/area_sam/sam_11/sam_11_3_rooms.c | 2 +- src/world/area_sam/sam_11/sam_11_5_npc.c | 2 +- src/world/area_sam/sam_12/sam_12_4_scenes.c | 8 +- src/world/area_sbk/sbk_02/sbk_02_3_ruins.c | 4 +- src/world/area_trd/trd_00/trd_00_3_npc.c | 4 +- src/world/area_trd/trd_03/trd_03_3_npc.c | 4 +- src/world/area_trd/trd_05/trd_05_4_npc.c | 8 +- src/world/area_trd/trd_10/trd_10_2_npc.c | 4 +- src/world/common/complete/Quizmo.inc.c | 2 +- src/world/common/enemy/complete/AlbinoDino.h | 22 + .../common/enemy/complete/AlbinoDino.inc.c | 14 + src/world/common/enemy/complete/Bombette.h | 22 + .../common/enemy/complete/Bombette.inc.c | 9 + src/world/common/enemy/complete/CrystalKing.h | 22 + .../common/enemy/complete/CrystalKing.inc.c | 9 + .../enemy/complete/Duplighost_Patrol.inc.c | 29 + ...a_Wander.inc.c => FrostClubba_Multi.inc.c} | 87 +- src/world/common/npc/Koopa.inc.c | 1 + src/world/common/npc/Kooper.h | 22 + src/world/common/npc/Kooper.inc.c | 9 + src/world/common/todo/UnkFunc11.inc.c | 2 +- .../dead/area_flo/flo_00/flo_00_5_beanstalk.c | 2 +- .../dead/area_flo/flo_19/flo_19_4_clouds.c | 8 +- src/world/dead/area_kzn/kzn_17/kzn_17_3_npc.c | 4 +- src/world/script_api/push_blocks.c | 186 +- src/world/script_api/rooms.c | 4 +- src/world/world.c | 20 +- tools/ignored_funcs.txt | 2 +- tools/splat/.gitrepo | 4 +- tools/splat/CHANGELOG.md | 49 + tools/splat/requirements.txt | 6 +- tools/splat/segtypes/common/asm.py | 8 +- tools/splat/segtypes/common/bin.py | 2 +- tools/splat/segtypes/common/bss.py | 30 +- tools/splat/segtypes/common/c.py | 362 ++-- tools/splat/segtypes/common/code.py | 60 +- tools/splat/segtypes/common/codesubsegment.py | 36 +- tools/splat/segtypes/common/data.py | 29 +- tools/splat/segtypes/common/decompressor.py | 2 +- tools/splat/segtypes/common/group.py | 31 +- tools/splat/segtypes/common/hasm.py | 4 +- tools/splat/segtypes/common/lib.py | 13 +- tools/splat/segtypes/common/rodata.py | 86 +- tools/splat/segtypes/linker_entry.py | 91 +- tools/splat/segtypes/n64/ci.py | 1 + tools/splat/segtypes/n64/gfx.py | 20 +- tools/splat/segtypes/n64/i1.py | 9 + tools/splat/segtypes/n64/img.py | 15 +- tools/splat/segtypes/n64/palette.py | 3 +- tools/splat/segtypes/n64/vtx.py | 23 +- tools/splat/segtypes/segment.py | 73 +- tools/splat/split.py | 92 +- tools/splat/util/color.py | 1 + tools/splat/util/floats.py | 1 + tools/splat/util/log.py | 4 +- tools/splat/util/n64/__init__.py | 0 tools/splat/util/options.py | 43 +- tools/splat/util/palettes.py | 1 + tools/splat/util/relocs.py | 125 ++ tools/splat/util/symbols.py | 52 +- .../data/world/area_jan/jan_13/B77000.data.s | 2 +- .../data/world/area_kkj/kkj_14/ADC0F0.data.s | 4 +- .../data/world/area_kkj/kkj_27/B143E0.data.s | 2 +- .../data/world/area_nok/nok_03/9EC610.data.s | 6 - .../data/world/area_nok/nok_03/9EC700.data.s | 21 - .../data/world/area_nok/nok_03/9ECBD0.data.s | 48 - .../data/world/area_nok/nok_04/9EEB20.data.s | 6 - .../data/world/area_nok/nok_04/9EEC40.data.s | 9 - .../data/world/area_nok/nok_04/9EEEB0.data.s | 120 -- .../data/world/area_pra/pra_09/D59EE0.data.s | 6 - .../data/world/area_pra/pra_09/D59F80.data.s | 183 -- .../data/world/area_pra/pra_13/D65BC0.data.s | 6 - .../data/world/area_pra/pra_13/D65C70.data.s | 60 - .../data/world/area_pra/pra_13/D66880.data.s | 45 - .../data/world/area_pra/pra_18/D6C540.data.s | 6 - .../data/world/area_pra/pra_18/D6C5F0.data.s | 45 - .../data/world/area_pra/pra_18/D6CF60.data.s | 81 - .../data/world/area_pra/pra_29/D7DDD0.data.s | 6 - .../data/world/area_pra/pra_29/D7DE90.data.s | 66 - .../data/world/area_pra/pra_29/D7E9B0.data.s | 6 - .../data/world/area_pra/pra_31/D7FE10.data.s | 6 - .../data/world/area_pra/pra_31/D7FEC0.data.s | 45 - .../data/world/area_pra/pra_31/D80E20.data.s | 36 - .../data/world/area_pra/pra_31/D81250.data.s | 336 ---- .../data/world/area_pra/pra_32/D87240.data.s | 27 - .../data/world/area_pra/pra_32/D87DF0.data.s | 30 - .../data/world/area_pra/pra_34/D8C3B0.data.s | 6 - .../data/world/area_pra/pra_34/D8C470.data.s | 72 - .../data/world/area_pra/pra_34/D8D130.data.s | 6 - .../data/world/area_pra/pra_35/D8FE60.data.s | 6 - .../data/world/area_pra/pra_35/D8FF10.data.s | 42 - .../data/world/area_pra/pra_35/D90700.data.s | 42 - .../data/world/area_pra/pra_35/D91030.data.s | 15 - ver/us/splat.yaml | 198 +- ver/us/symbol_addrs.txt | 71 +- ver/us/undefined_syms.txt | 2 +- 256 files changed, 9690 insertions(+), 3337 deletions(-) create mode 100644 src/world/area_nok/common/GetIntoShell.inc.c delete mode 100644 src/world/area_nok/nok_03/9EB7F0.c create mode 100644 src/world/area_nok/nok_03/nok_03_0_header.c create mode 100644 src/world/area_nok/nok_03/nok_03_1_music.c create mode 100644 src/world/area_nok/nok_03/nok_03_2_main.c create mode 100644 src/world/area_nok/nok_03/nok_03_3_entity.c create mode 100644 src/world/area_nok/nok_03/nok_03_4_npc.c delete mode 100644 src/world/area_nok/nok_04/9EDBF0.c create mode 100644 src/world/area_nok/nok_04/nok_04_0_header.c create mode 100644 src/world/area_nok/nok_04/nok_04_1_music.c create mode 100644 src/world/area_nok/nok_04/nok_04_2_main.c create mode 100644 src/world/area_nok/nok_04/nok_04_3_entity.c create mode 100644 src/world/area_nok/nok_04/nok_04_4_npc.c rename src/world/area_nok/nok_04/{9EEA80.c => nok_04_5_partner.c} (100%) delete mode 100644 src/world/area_pra/pra_09/D58890.c delete mode 100644 src/world/area_pra/pra_09/D588B0.c create mode 100644 src/world/area_pra/pra_09/pra_09_0_header.c create mode 100644 src/world/area_pra/pra_09/pra_09_1_music.c create mode 100644 src/world/area_pra/pra_09/pra_09_2_main.c create mode 100644 src/world/area_pra/pra_09/pra_09_3_npc.c delete mode 100644 src/world/area_pra/pra_13/D645E0.c delete mode 100644 src/world/area_pra/pra_13/D64600.c create mode 100644 src/world/area_pra/pra_13/pra_13_0_header.c create mode 100644 src/world/area_pra/pra_13/pra_13_1_music.c create mode 100644 src/world/area_pra/pra_13/pra_13_2_main.c create mode 100644 src/world/area_pra/pra_13/pra_13_3_npc.c delete mode 100644 src/world/area_pra/pra_18/D6B620.c delete mode 100644 src/world/area_pra/pra_18/D6B640.c create mode 100644 src/world/area_pra/pra_18/pra_18_0_header.c create mode 100644 src/world/area_pra/pra_18/pra_18_1_music.c create mode 100644 src/world/area_pra/pra_18/pra_18_2_main.c create mode 100644 src/world/area_pra/pra_18/pra_18_3_npc.c delete mode 100644 src/world/area_pra/pra_29/D7CB50.c delete mode 100644 src/world/area_pra/pra_29/D7CB70.c create mode 100644 src/world/area_pra/pra_29/pra_29_0_header.c create mode 100644 src/world/area_pra/pra_29/pra_29_1_music.c create mode 100644 src/world/area_pra/pra_29/pra_29_2_entity.c create mode 100644 src/world/area_pra/pra_29/pra_29_3_main.c create mode 100644 src/world/area_pra/pra_29/pra_29_4_bridge.c delete mode 100644 src/world/area_pra/pra_31/D7ED60.c delete mode 100644 src/world/area_pra/pra_31/D7ED80.c delete mode 100644 src/world/area_pra/pra_31/D7F270.c create mode 100644 src/world/area_pra/pra_31/pra_31_0_header.c create mode 100644 src/world/area_pra/pra_31/pra_31_10_stairs_lights.c create mode 100644 src/world/area_pra/pra_31/pra_31_11_stairs_vtx.c create mode 100644 src/world/area_pra/pra_31/pra_31_1_music.c create mode 100644 src/world/area_pra/pra_31/pra_31_2_npc.c create mode 100644 src/world/area_pra/pra_31/pra_31_3_main.c create mode 100644 src/world/area_pra/pra_31/pra_31_4_puzzle.c create mode 100644 src/world/area_pra/pra_31/pra_31_5_texture_1.c create mode 100644 src/world/area_pra/pra_31/pra_31_6_texture_2.c create mode 100644 src/world/area_pra/pra_31/pra_31_7_texture_3.c create mode 100644 src/world/area_pra/pra_31/pra_31_8_stairs_skele.c create mode 100644 src/world/area_pra/pra_31/pra_31_9_stairs_anim.c delete mode 100644 src/world/area_pra/pra_32/D86A00.c delete mode 100644 src/world/area_pra/pra_32/D86A20.c create mode 100644 src/world/area_pra/pra_32/pra_32_0_header.c create mode 100644 src/world/area_pra/pra_32/pra_32_1_music.c create mode 100644 src/world/area_pra/pra_32/pra_32_2_main.c create mode 100644 src/world/area_pra/pra_32/pra_32_3_npc.c delete mode 100644 src/world/area_pra/pra_34/D8B3B0.c delete mode 100644 src/world/area_pra/pra_34/D8B3D0.c create mode 100644 src/world/area_pra/pra_34/pra_34_0_header.c create mode 100644 src/world/area_pra/pra_34/pra_34_1_music.c create mode 100644 src/world/area_pra/pra_34/pra_34_2_main.c create mode 100644 src/world/area_pra/pra_34/pra_34_3_entity.c delete mode 100644 src/world/area_pra/pra_35/D8D250.c delete mode 100644 src/world/area_pra/pra_35/D8D270.c delete mode 100644 src/world/area_pra/pra_35/D8FBA0.c create mode 100644 src/world/area_pra/pra_35/pra_35_0_header.c create mode 100644 src/world/area_pra/pra_35/pra_35_1_music.c create mode 100644 src/world/area_pra/pra_35/pra_35_2_main.c create mode 100644 src/world/area_pra/pra_35/pra_35_3_npc.c create mode 100644 src/world/area_pra/pra_35/pra_35_4_entity.c create mode 100644 src/world/common/enemy/complete/AlbinoDino.h create mode 100644 src/world/common/enemy/complete/AlbinoDino.inc.c create mode 100644 src/world/common/enemy/complete/Bombette.h create mode 100644 src/world/common/enemy/complete/Bombette.inc.c create mode 100644 src/world/common/enemy/complete/CrystalKing.h create mode 100644 src/world/common/enemy/complete/CrystalKing.inc.c create mode 100644 src/world/common/enemy/complete/Duplighost_Patrol.inc.c rename src/world/common/enemy/complete/{FrostClubba_Wander.inc.c => FrostClubba_Multi.inc.c} (53%) create mode 100644 src/world/common/npc/Kooper.h create mode 100644 src/world/common/npc/Kooper.inc.c create mode 100644 tools/splat/segtypes/n64/i1.py create mode 100644 tools/splat/util/n64/__init__.py create mode 100644 tools/splat/util/relocs.py delete mode 100644 ver/us/asm/data/world/area_nok/nok_03/9EC610.data.s delete mode 100644 ver/us/asm/data/world/area_nok/nok_03/9EC700.data.s delete mode 100644 ver/us/asm/data/world/area_nok/nok_03/9ECBD0.data.s delete mode 100644 ver/us/asm/data/world/area_nok/nok_04/9EEB20.data.s delete mode 100644 ver/us/asm/data/world/area_nok/nok_04/9EEC40.data.s delete mode 100644 ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_09/D59EE0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_09/D59F80.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_13/D65BC0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_13/D65C70.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_13/D66880.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_18/D6C540.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_18/D6C5F0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_18/D6CF60.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_29/D7DDD0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_29/D7DE90.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_29/D7E9B0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_31/D7FE10.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_31/D7FEC0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_31/D80E20.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_31/D81250.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_32/D87240.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_32/D87DF0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_34/D8C3B0.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_34/D8C470.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_34/D8D130.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_35/D8FE60.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_35/D8FF10.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_35/D90700.data.s delete mode 100644 ver/us/asm/data/world/area_pra/pra_35/D91030.data.s diff --git a/include/dead.h b/include/dead.h index 4f31382e82..9e676f87ba 100644 --- a/include/dead.h +++ b/include/dead.h @@ -217,7 +217,7 @@ #define PlayerJump dead_PlayerJump #define StopSound dead_StopSound #define NpcFacePlayer dead_NpcFacePlayer -#define func_802D2884 dead_func_802D2884 +#define FacePlayerTowardPoint dead_FacePlayerTowardPoint #define SetTimeFreezeMode dead_SetTimeFreezeMode #define ShowKeyChoicePopup dead_ShowKeyChoicePopup #define CloseChoicePopup dead_CloseChoicePopup diff --git a/include/enums.h b/include/enums.h index abedef7d04..3596b135cb 100644 --- a/include/enums.h +++ b/include/enums.h @@ -3547,7 +3547,7 @@ enum PlayerStatusAnimFlags { Not sure why - seems like it might contribute to being unable to *stop* using your partner during a cutscene. */ PA_FLAG_PARTNER_USAGE_FORCED = 0x00200000, PA_FLAG_RIDING_PARTNER = 0x00400000, - PA_FLAG_PUSHED_ALBINO_DINO = 0x00800000, + PA_FLAG_ABORT_PUSHING_BLOCK = 0x00800000, /* Changes how Mario is rendered. Seems to be intended to make Mario's depth render properly when using Bow behind a switch (two translucent objects on top of eachother), but it doesn't actually work. */ PA_FLAG_MAP_HAS_SWITCH = 0x01000000, PA_FLAG_2000000 = 0x02000000, diff --git a/include/script_api/common.h b/include/script_api/common.h index 1a87f0ea42..c922c99f49 100644 --- a/include/script_api/common.h +++ b/include/script_api/common.h @@ -307,7 +307,7 @@ ApiStatus SetVirtualEntityJumpGravity(Evt* script, s32 isInitialCall); ApiStatus SetVirtualEntityFlags(Evt* script, s32 isInitialCall); ApiStatus GetVirtualEntityPosition(Evt* script, s32 isInitialCall); ApiStatus VirtualEntityJumpTo(Evt* script, s32 isInitialCall); -ApiStatus func_802D2884(Evt* script, s32 isInitialCall); +ApiStatus FacePlayerTowardPoint(Evt* script, s32 isInitialCall); ApiStatus func_802D2C14(Evt* script, s32 isInitialCall); ApiStatus ShowConsumableChoicePopup(Evt* script, s32 isInitialCall); ApiStatus func_800458CC(Evt* script, s32 isInitialCall); diff --git a/src/battle/area_trd_part_2/actor/fake_bowser.c b/src/battle/area_trd_part_2/actor/fake_bowser.c index 23eb16c541..1f1bee2a16 100644 --- a/src/battle/area_trd_part_2/actor/fake_bowser.c +++ b/src/battle/area_trd_part_2/actor/fake_bowser.c @@ -1163,51 +1163,51 @@ EvtScript N(idle_8021D508) = { EVT_CALL(RotateGroup, 24, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 24, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 24, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 15, 64, 1) - EVT_CALL(SetModelFlags, 16, 64, 1) - EVT_CALL(SetModelFlags, 17, 64, 1) - EVT_CALL(SetModelFlags, 18, 64, 1) - EVT_CALL(SetModelFlags, 19, 64, 1) - EVT_CALL(SetModelFlags, 20, 64, 1) - EVT_CALL(SetModelFlags, 21, 64, 1) - EVT_CALL(SetModelFlags, 22, 64, 1) - EVT_CALL(SetModelFlags, 23, 64, 1) + EVT_CALL(SetModelFlags, 15, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 16, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 17, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 18, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 19, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 20, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 21, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 22, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 23, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 34, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 3, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 34, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 34, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 34, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 31, 64, 1) - EVT_CALL(SetModelFlags, 32, 64, 1) - EVT_CALL(SetModelFlags, 33, 64, 1) + EVT_CALL(SetModelFlags, 31, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 32, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 33, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 4, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 30, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 4, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 30, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 30, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 30, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 25, 64, 1) - EVT_CALL(SetModelFlags, 26, 64, 1) - EVT_CALL(SetModelFlags, 27, 64, 1) - EVT_CALL(SetModelFlags, 28, 64, 1) - EVT_CALL(SetModelFlags, 29, 64, 1) + EVT_CALL(SetModelFlags, 25, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 26, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 27, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 28, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 29, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 6, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 14, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 6, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 14, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 14, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 14, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 11, 64, 1) - EVT_CALL(SetModelFlags, 12, 64, 1) - EVT_CALL(SetModelFlags, 13, 64, 1) + EVT_CALL(SetModelFlags, 11, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 12, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 13, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 7, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 10, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 7, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 10, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 10, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 10, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 9, 64, 1) + EVT_CALL(SetModelFlags, 9, MODEL_FLAG_FLAG_40, 1) EVT_SET(LVar0, ArrayVar(0)) EVT_IF_EQ(LVar0, 9) EVT_CALL(GetPartPos, ACTOR_SELF, 8, LVar0, LVar1, LVar2) @@ -1221,7 +1221,7 @@ EvtScript N(idle_8021D508) = { EVT_CALL(RotateGroup, 44, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 44, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 44, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 43, 64, 1) + EVT_CALL(SetModelFlags, 43, MODEL_FLAG_FLAG_40, 1) EVT_SET(LVar0, ArrayVar(0)) EVT_IF_EQ(LVar0, 9) EVT_CALL(GetPartPos, ACTOR_SELF, 9, LVar0, LVar1, LVar2) @@ -1235,25 +1235,25 @@ EvtScript N(idle_8021D508) = { EVT_CALL(RotateGroup, 46, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 46, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 46, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 45, 64, 1) + EVT_CALL(SetModelFlags, 45, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 11, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 38, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 11, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 38, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 38, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 38, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 35, 64, 1) - EVT_CALL(SetModelFlags, 36, 64, 1) - EVT_CALL(SetModelFlags, 37, 64, 1) + EVT_CALL(SetModelFlags, 35, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 36, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 37, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetPartPos, ACTOR_SELF, 10, LVar0, LVar1, LVar2) EVT_CALL(TranslateGroup, 42, LVar0, LVar1, LVar2) EVT_CALL(GetPartRotation, ACTOR_SELF, 10, LVar0, LVar1, LVar2) EVT_CALL(RotateGroup, 42, LVar0, 1, 0, 0) EVT_CALL(RotateGroup, 42, LVar1, 0, 1, 0) EVT_CALL(RotateGroup, 42, LVar2, 0, 0, 1) - EVT_CALL(SetModelFlags, 39, 64, 1) - EVT_CALL(SetModelFlags, 40, 64, 1) - EVT_CALL(SetModelFlags, 41, 64, 1) + EVT_CALL(SetModelFlags, 39, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 40, MODEL_FLAG_FLAG_40, 1) + EVT_CALL(SetModelFlags, 41, MODEL_FLAG_FLAG_40, 1) EVT_CALL(GetActorVar, ACTOR_ENEMY4, 0, LVar0) EVT_IF_NOT_FLAG(LVar0, 2) EVT_CALL(GetActorHP, ACTOR_SELF, LVar0) diff --git a/src/evt/player_api.c b/src/evt/player_api.c index 513f67656e..5f9294347d 100644 --- a/src/evt/player_api.c +++ b/src/evt/player_api.c @@ -705,46 +705,50 @@ ApiStatus func_802D286C(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -ApiStatus func_802D2884(Evt* script, s32 isInitialCall) { +ApiStatus FacePlayerTowardPoint(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; PlayerStatus* playerStatus = &gPlayerStatus; - f32* ft1 = &script->functionTempF[1]; - f32* angle = &script->functionTempF[2]; - s32* ft3 = &script->functionTemp[3]; + f32* initialYaw = &script->functionTempF[1]; + f32* deltaYaw = &script->functionTempF[2]; + s32* duration = &script->functionTemp[3]; if (isInitialCall) { - f32 x = evt_get_float_variable(script, *args++); - f32 z = evt_get_float_variable(script, *args++); - f32 yawTemp; + f32 targetX = evt_get_float_variable(script, *args++); + f32 targetY = evt_get_float_variable(script, *args++); + f32 targetYaw; - *ft1 = playerNpc->yaw = playerStatus->targetYaw; + *initialYaw = playerNpc->yaw = playerStatus->targetYaw; - if (playerStatus->position.x != x || playerStatus->position.z != z) { - yawTemp = atan2(playerStatus->position.x, playerStatus->position.z, x, z); + if (playerStatus->position.x != targetX || playerStatus->position.z != targetY) { + targetYaw = atan2(playerStatus->position.x, playerStatus->position.z, targetX, targetY); } else { - yawTemp = playerStatus->targetYaw; + targetYaw = playerStatus->targetYaw; } - *angle = yawTemp - *ft1; - *ft3 = evt_get_variable(script, *args++); + *deltaYaw = targetYaw - *initialYaw; + *duration = evt_get_variable(script, *args++); playerNpc->duration = 0; - if (*angle < -180.0f) { - *angle += 360.0f; + if (*deltaYaw < -180.0f) { + *deltaYaw += 360.0f; } - if (*angle > 180.0f) { - *angle -= 360.0f; + if (*deltaYaw > 180.0f) { + *deltaYaw -= 360.0f; } } - if (*ft3 > 0) { + if (*duration > 0) { playerNpc->duration++; - playerNpc->yaw = *ft1 + ((*angle * playerNpc->duration) / *ft3); + playerNpc->yaw = *initialYaw + ((*deltaYaw * playerNpc->duration) / *duration); playerStatus->targetYaw = playerNpc->yaw = clamp_angle(playerNpc->yaw); - return !(playerNpc->duration < *ft3) * ApiStatus_DONE1; + if (playerNpc->duration < *duration) { + return ApiStatus_BLOCK; + } else { + return ApiStatus_DONE1; + } } - playerNpc->yaw += *angle; + playerNpc->yaw += *deltaYaw; playerStatus->targetYaw = playerNpc->yaw = clamp_angle(playerNpc->yaw); return ApiStatus_DONE2; } diff --git a/src/evt/script_list.c b/src/evt/script_list.c index 4eafa9500f..ff9b20fbf3 100644 --- a/src/evt/script_list.c +++ b/src/evt/script_list.c @@ -75,7 +75,7 @@ BSS char D_802DBB70[0x100]; // why is this at the end? com section vs bss? BSS u32 gWorldMapFlags[MAX_MAPFLAGS]; BSS s32 DoorModelsSwingCW[3]; -BSS PushBlockGrid* D_802DBC88[8]; +BSS PushBlockGrid* wPushBlockGrids[8]; BSS u32 gWorldMapVars[MAX_MAPVARS]; BSS u32 gBattleMapVars[MAX_MAPVARS]; BSS s32 DoorModelsSwingCCW[3]; diff --git a/src/world/action/misc.c b/src/world/action/misc.c index 790aa7fd1d..fc7056d091 100644 --- a/src/world/action/misc.c +++ b/src/world/action/misc.c @@ -208,7 +208,7 @@ void action_update_pushing_block(void) { check_input_jump(); - if (playerStatus->animFlags & PA_FLAG_PUSHED_ALBINO_DINO) { + if (playerStatus->animFlags & PA_FLAG_ABORT_PUSHING_BLOCK) { if (playerStatus->currentStateTime != 0) { playerStatus->currentStateTime--; if (playerStatus->currentStateTime == 0) { diff --git a/src/world/area_arn/arn_05/arn_05_3_npc.c b/src/world/area_arn/arn_05/arn_05_3_npc.c index 54a59a8a1b..4736256522 100644 --- a/src/world/area_arn/arn_05/arn_05_3_npc.c +++ b/src/world/area_arn/arn_05/arn_05_3_npc.c @@ -445,8 +445,8 @@ EvtScript N(EVS_Scene_TubbaRaid) = { EVT_SETF(LVar0, EVT_FLOAT(240.0)) EVT_LOOP(20) EVT_SUBF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(SetNpcPos, NPC_Boo_01, NPC_DISPOSE_LOCATION) @@ -565,14 +565,14 @@ EvtScript N(EVS_Scene_TubbaRaid) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(12.5)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0) - EVT_CALL(func_802CFD30, 4, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_05, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_NONE, 0, 0, 0, 0) - EVT_CALL(func_802CFD30, 4, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Boo_05, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_WAIT(10) EVT_CALL(SetCamType, CAM_DEFAULT, 4, FALSE) EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(3.0)) diff --git a/src/world/area_arn/arn_07/arn_07_5_npc.c b/src/world/area_arn/arn_07/arn_07_5_npc.c index 1328de5c7f..97ebde18c3 100644 --- a/src/world/area_arn/arn_07/arn_07_5_npc.c +++ b/src/world/area_arn/arn_07/arn_07_5_npc.c @@ -133,12 +133,12 @@ EvtScript N(EVS_Scene_BossDefeated) = { EVT_IF_NE(LVar6, PARTNER_BOW) EVT_SET(LVar5, 8) EVT_CALL(SetNpcPos, NPC_Bow, 257, 25, 0) - EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, 0, 0, 0, 0) EVT_CALL(NpcFacePlayer, NPC_Bow, 0) EVT_CALL(MakeLerp, 0, 240, 20, EASING_LINEAR) EVT_LOOP(0) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP @@ -217,7 +217,7 @@ EvtScript N(EVS_Scene_BossDefeated) = { EVT_CALL(MakeLerp, 240, 0, 20, EASING_LINEAR) EVT_LOOP(0) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP @@ -282,7 +282,7 @@ EvtScript N(EVS_NpcIdle_Boo) = { EVT_CALL(MakeLerp, LVar2, 240, LVar3, EASING_LINEAR) EVT_LOOP(0) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP diff --git a/src/world/area_flo/flo_00/flo_00_5_beanstalk.c b/src/world/area_flo/flo_00/flo_00_5_beanstalk.c index e7ddcaf0c3..b4a3b0eeec 100644 --- a/src/world/area_flo/flo_00/flo_00_5_beanstalk.c +++ b/src/world/area_flo/flo_00/flo_00_5_beanstalk.c @@ -461,7 +461,7 @@ s32 N(BeanstalkIngredients)[] = { EvtScript N(EVS_BeanPatch_ItemPrompt) = { EVT_CALL(DisablePlayerInput, TRUE) - EVT_CALL(func_802D2884, -85, 85, 0) + EVT_CALL(FacePlayerTowardPoint, -85, 85, 0) EVT_CALL(func_802CF56C, 2) EVT_CALL(DisablePlayerInput, FALSE) EVT_IF_EQ(GF_FLO00_PlacedFertileSoil, FALSE) diff --git a/src/world/area_flo/flo_19/flo_19_4_clouds.c b/src/world/area_flo/flo_19/flo_19_4_clouds.c index 318a56891c..e11a9ce67b 100644 --- a/src/world/area_flo/flo_19/flo_19_4_clouds.c +++ b/src/world/area_flo/flo_19/flo_19_4_clouds.c @@ -157,10 +157,10 @@ EvtScript N(EVS_SetupClouds) = { EVT_CALL(ParentColliderToModel, COLLIDER_o78, MODEL_g21) EVT_CALL(ParentColliderToModel, COLLIDER_o76, MODEL_g22) EVT_CALL(ParentColliderToModel, COLLIDER_o79, MODEL_g23) - EVT_CALL(SetModelFlags, MODEL_g17, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g21, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g22, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g23, 256, TRUE) + EVT_CALL(SetModelFlags, MODEL_g17, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g21, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g22, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g23, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) EVT_EXEC(N(EVS_AnimatePlatforms)) EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_01)), TRIGGER_FLOOR_TOUCH, COLLIDER_o77, 1, 0) EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_02)), TRIGGER_FLOOR_TOUCH, COLLIDER_o78, 1, 0) diff --git a/src/world/area_hos/hos_01/hos_01_6_star_way.c b/src/world/area_hos/hos_01/hos_01_6_star_way.c index 112a4219b0..1a7336f88c 100644 --- a/src/world/area_hos/hos_01/hos_01_6_star_way.c +++ b/src/world/area_hos/hos_01/hos_01_6_star_way.c @@ -16,7 +16,7 @@ EvtScript N(EVS_Scene_StarWayOpened) = { EVT_END_IF EVT_CALL(DisablePlayerInput, TRUE) EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL) - EVT_CALL(func_802D2884, -30, -160, 0) + EVT_CALL(FacePlayerTowardPoint, -30, -160, 0) EVT_WAIT(15) EVT_CALL(ShowMessageAtScreenPos, MSG_HOS_005C, 160, 40) EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) diff --git a/src/world/area_hos/hos_05/hos_05_5_intro.c b/src/world/area_hos/hos_05/hos_05_5_intro.c index aab69d3655..c952568467 100644 --- a/src/world/area_hos/hos_05/hos_05_5_intro.c +++ b/src/world/area_hos/hos_05/hos_05_5_intro.c @@ -1083,7 +1083,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Klevar, ANIM_WorldKlevar_Panic) - EVT_CALL(func_802CFD30, 5, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Klevar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Klevar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(13)) EVT_END_THREAD @@ -1111,7 +1111,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Skolar, ANIM_WorldSkolar_IdleSad) - EVT_CALL(func_802CFD30, 2, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Skolar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Skolar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(10)) EVT_END_THREAD @@ -1139,7 +1139,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Muskular, ANIM_WorldMuskular_Panic) - EVT_CALL(func_802CFD30, 3, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Muskular, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Muskular, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(11)) EVT_END_THREAD @@ -1167,7 +1167,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Kalmar, ANIM_WorldKalmar_Panic) - EVT_CALL(func_802CFD30, 6, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Kalmar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Kalmar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(14)) EVT_END_THREAD @@ -1195,7 +1195,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Misstar, ANIM_WorldMisstar_Panic) - EVT_CALL(func_802CFD30, 4, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Misstar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Misstar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(12)) EVT_END_THREAD @@ -1223,7 +1223,7 @@ EvtScript N(EVS_CaptureSpirits) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Mamar, ANIM_WorldMamar_Panic) - EVT_CALL(func_802CFD30, 1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Mamar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Mamar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(9)) EVT_END_THREAD @@ -2405,7 +2405,7 @@ EvtScript N(EVS_Scene_IntroStory) = { EVT_END_IF EVT_CALL(N(SetCardCaptureState1)) EVT_CALL(SetNpcAnimation, NPC_Eldstar, ANIM_WorldEldstar_Panic) - EVT_CALL(func_802CFD30, 0, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Eldstar, 0, 0, 0, 0, 0) EVT_CALL(SetNpcFlagBits, NPC_Eldstar, NPC_FLAG_2, TRUE) EVT_CALL(func_802D7B10, ArrayVar(8)) EVT_END_THREAD diff --git a/src/world/area_isk/isk_05/isk_05_3_npc.c b/src/world/area_isk/isk_05/isk_05_3_npc.c index b244d7b4fc..78f09b4b49 100644 --- a/src/world/area_isk/isk_05/isk_05_3_npc.c +++ b/src/world/area_isk/isk_05/isk_05_3_npc.c @@ -218,7 +218,7 @@ EvtScript N(EVS_NpcIdle_StoneChomp) = { EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE) EVT_WAIT(1) EVT_CALL(N(DestroyAmbushWorker)) - EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0) EVT_CALL(DisablePlayerInput, FALSE) EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_StoneChomp))) EVT_RETURN diff --git a/src/world/area_isk/isk_13/isk_13_3_npc.c b/src/world/area_isk/isk_13/isk_13_3_npc.c index a202f52281..172af13386 100644 --- a/src/world/area_isk/isk_13/isk_13_3_npc.c +++ b/src/world/area_isk/isk_13/isk_13_3_npc.c @@ -268,7 +268,7 @@ EvtScript N(EVS_NpcDefeat_StoneChomp_Override) = { EVT_SET(GF_ISK13_Defeated_StoneChomp, TRUE) EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE) EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE) - EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0) EVT_CALL(N(DestroyAmbushWorker)) EVT_CALL(GetBattleOutcome, LVar0) EVT_SWITCH(LVar0) diff --git a/src/world/area_isk/isk_14/isk_14_3_npc.c b/src/world/area_isk/isk_14/isk_14_3_npc.c index 6c36314cf1..40caf70544 100644 --- a/src/world/area_isk/isk_14/isk_14_3_npc.c +++ b/src/world/area_isk/isk_14/isk_14_3_npc.c @@ -165,7 +165,7 @@ EvtScript N(EVS_NpcIdle_StoneChomp) = { EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE) EVT_WAIT(1) EVT_CALL(N(DestroyAmbushWorker)) - EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0) EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_4 | ENEMY_FLAG_100000, 0) EVT_WAIT(3) EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) diff --git a/src/world/area_isk/isk_16/isk_16_3_boss.c b/src/world/area_isk/isk_16/isk_16_3_boss.c index 5a57c232f5..dd1657afd5 100644 --- a/src/world/area_isk/isk_16/isk_16_3_boss.c +++ b/src/world/area_isk/isk_16/isk_16_3_boss.c @@ -48,18 +48,18 @@ EvtScript N(EVS_Scene_TutankoopaAppears) = { EVT_WAIT(30) EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) EVT_END_THREAD - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_7, 0, 0, 0, 0) EVT_CALL(SetNpcPos, NPC_Tutankoopa_02, 410, -905, 410) EVT_CALL(SetNpcAnimation, NPC_Tutankoopa_02, ANIM_Tutankoopa_Anim10) EVT_CALL(MakeLerp, 0, 255, 100, EASING_QUADRATIC_IN) EVT_LABEL(2) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 1) EVT_GOTO(2) EVT_END_IF - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_WAIT(30) EVT_SET(LVar0, 255) EVT_LOOP(60) @@ -106,17 +106,17 @@ EvtScript N(EVS_Scene_TutankoopaAppears) = { EVT_WAIT(59) EVT_CALL(PlaySoundAtNpc, NPC_Tutankoopa_01, SOUND_3EF, SOUND_SPACE_MODE_0) EVT_END_THREAD - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 255, 0, 0, 0) - EVT_CALL(func_802CFE2C, 0, 0x00000800) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 14, 2, 1, 0) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_7, 255, 0, 0, 0) + EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x800) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 14, 2, 1, 0) EVT_WAIT(39) - EVT_CALL(func_802CFE2C, 0, 0x00000800) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 13, 2, 1, 0) + EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x800) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 13, 2, 1, 0) EVT_WAIT(39) - EVT_CALL(func_802CFE2C, 0, 0x00000800) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 12, 2, 1, 0) + EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x0800) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 12, 2, 1, 0) EVT_WAIT(55) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcPos, NPC_Tutankoopa_02, 457, -1300, 316) EVT_WAIT(10) EVT_CALL(SetPanTarget, CAM_DEFAULT, 438, -800, 332) diff --git a/src/world/area_jan/jan_01/jan_01_3_npc.c b/src/world/area_jan/jan_01/jan_01_3_npc.c index 3264bd1a08..c60087f4c2 100644 --- a/src/world/area_jan/jan_01/jan_01_3_npc.c +++ b/src/world/area_jan/jan_01/jan_01_3_npc.c @@ -206,7 +206,7 @@ EvtScript N(EVS_NpcIdle_Fuzzy_01) = { EVT_END }; -EvtScript N(EVS_NpcDefeat_Fuzzy_01) = { +EvtScript N(EVS_NpcDefeat_FuzzyBoss) = { EVT_CALL(GetBattleOutcome, LVar0) EVT_SWITCH(LVar0) EVT_CASE_EQ(OUTCOME_PLAYER_WON) @@ -261,7 +261,7 @@ EvtScript N(EVS_NpcInit_Fuzzy_01) = { EVT_CALL(SetSelfVar, 0, 0) EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Fuzzy_Jungle_Anim04) EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_01))) - EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Fuzzy_01))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_FuzzyBoss))) EVT_ELSE EVT_CALL(RemoveNpc, NPC_SELF) EVT_END_IF diff --git a/src/world/area_jan/jan_03/jan_03_2_main.c b/src/world/area_jan/jan_03/jan_03_2_main.c index ecfd0399de..4308ac1b56 100644 --- a/src/world/area_jan/jan_03/jan_03_2_main.c +++ b/src/world/area_jan/jan_03/jan_03_2_main.c @@ -105,10 +105,10 @@ EvtScript N(EVS_Main) = { TEX_PAN_PARAMS_INIT( 0, 0, 0, 0) EVT_EXEC(N(EVS_UpdateTexturePan)) EVT_END_THREAD - EVT_CALL(SetModelFlags, MODEL_o189, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_o186, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_o192, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_o195, 256, TRUE) + EVT_CALL(SetModelFlags, MODEL_o189, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_o186, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_o192, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_o195, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) EVT_EXEC(N(EVS_SetupShop)) EVT_RETURN EVT_END diff --git a/src/world/area_jan/jan_03/jan_03_5_entity.c b/src/world/area_jan/jan_03/jan_03_5_entity.c index 06ee8f0b17..2b79dfe49b 100644 --- a/src/world/area_jan/jan_03/jan_03_5_entity.c +++ b/src/world/area_jan/jan_03/jan_03_5_entity.c @@ -40,7 +40,7 @@ EvtScript N(EVS_UseSpring) = { EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(0.1)) EVT_CALL(PlayerJump, -556, 300, -195, 15) EVT_CALL(DisablePlayerPhysics, FALSE) - EVT_CALL(func_802D2884, -630, -50, 0) + EVT_CALL(FacePlayerTowardPoint, -630, -50, 0) EVT_CALL(SetPlayerAnimation, ANIM_Mario_AnimMidair) EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(1.0)) EVT_CALL(PlayerJump2, -601, 376, -105, 30) diff --git a/src/world/area_kmr/kmr_00/kmr_00_4_npc.c b/src/world/area_kmr/kmr_00/kmr_00_4_npc.c index a29e88610d..25e2b4a1e5 100644 --- a/src/world/area_kmr/kmr_00/kmr_00_4_npc.c +++ b/src/world/area_kmr/kmr_00/kmr_00_4_npc.c @@ -75,12 +75,12 @@ EvtScript N(EVS_NpcAux_StarSpirit) = { EVT_LABEL(1) EVT_LOOP(50) EVT_ADDF(LVar0, EVT_FLOAT(0.8)) - EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), MV_Unk_01, LVar0) + EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), MV_Unk_01, LVar0) EVT_WAIT(1) EVT_END_LOOP EVT_LOOP(50) EVT_ADDF(LVar0, EVT_FLOAT(-0.8)) - EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), MV_Unk_01, LVar0) + EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), MV_Unk_01, LVar0) EVT_WAIT(1) EVT_END_LOOP EVT_GOTO(1) diff --git a/src/world/area_kmr/kmr_02/kmr_02_3_npc.c b/src/world/area_kmr/kmr_02/kmr_02_3_npc.c index a413229257..98e0414aad 100644 --- a/src/world/area_kmr/kmr_02/kmr_02_3_npc.c +++ b/src/world/area_kmr/kmr_02/kmr_02_3_npc.c @@ -1540,7 +1540,7 @@ EvtScript N(EVS_Scene_EldstarsPlea) = { EVT_CALL(MakeLerp, 60, 0, 40, EASING_LINEAR) EVT_LABEL(6) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, 12, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Eldstar_02, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 1) EVT_GOTO(6) @@ -1750,11 +1750,11 @@ EvtScript N(EVS_NpcAI_Eldstar_02) = { EVT_SETF(LVar0, EVT_FLOAT(100.0)) EVT_LABEL(1) EVT_LOOP(50) - EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), 0, MV_Unk_01) + EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), 0, MV_Unk_01) EVT_WAIT(1) EVT_END_LOOP EVT_LOOP(50) - EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), 0, MV_Unk_01) + EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), 0, MV_Unk_01) EVT_WAIT(1) EVT_END_LOOP EVT_GOTO(1) diff --git a/src/world/area_kmr/kmr_02/kmr_02_7_kammy.c b/src/world/area_kmr/kmr_02/kmr_02_7_kammy.c index 5ac89eeb7f..f527f75a82 100644 --- a/src/world/area_kmr/kmr_02/kmr_02_7_kammy.c +++ b/src/world/area_kmr/kmr_02/kmr_02_7_kammy.c @@ -240,7 +240,7 @@ EvtScript N(EVS_Scene_KammyStrikes) = { EVT_CALL(GetNpcPos, NPC_Goombaria, LVar0, LVar1, LVar2) EVT_CALL(NpcJump0, NPC_Goombaria, LVar0, LVar1, LVar2, 25) EVT_CALL(SetNpcAnimation, NPC_Goombaria, ANIM_Goombaria_LookUp) - EVT_CALL(func_802CFD30, 1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Goombaria, 0, 0, 0, 0, 0) EVT_END_THREAD EVT_CALL(func_802CFE2C, NPC_Goompapa, 0x100) EVT_CALL(func_802CFD30, NPC_Goompapa, FOLD_TYPE_5, 0, 1, 1, 0) @@ -249,7 +249,7 @@ EvtScript N(EVS_Scene_KammyStrikes) = { EVT_CALL(GetNpcPos, NPC_Goompapa, LVar0, LVar1, LVar2) EVT_CALL(NpcJump0, NPC_Goompapa, LVar0, LVar1, LVar2, 25) EVT_CALL(SetNpcAnimation, NPC_Goompapa, ANIM_Goompapa_LookUp) - EVT_CALL(func_802CFD30, 3, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Goompapa, 0, 0, 0, 0, 0) EVT_WAIT(10) EVT_CALL(SetNpcAnimation, NPC_Kammy, ANIM_WorldKammy_Anim13) EVT_CALL(SetCamType, CAM_DEFAULT, 4, FALSE) diff --git a/src/world/area_kmr/kmr_22/npc/chapter_1.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_1.inc.c index 52c4117cc6..05f5672750 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_1.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_1.inc.c @@ -1,13 +1,13 @@ EvtScript N(EVS_NpcInit_Eldstar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldEldstar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, 8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_KoopaBros) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_KoopaBros_Black_Anim1B) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/chapter_2.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_2.inc.c index 040ce8a545..db68ad07dc 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_2.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_2.inc.c @@ -1,32 +1,32 @@ EvtScript N(EVS_NpcInit_Mamar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMamar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_Tutankoopa) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Tutankoopa_Anim08) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_ChainChomp) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_ChainChomp_Anim03) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_SELF, 5, -25, -180) EVT_CALL(SetNpcAnimation, NPC_ChainChomp_02, ANIM_ChainChomp_Anim02) - EVT_CALL(func_802CFD30, 13, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_ChainChomp_02, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_ChainChomp_02, 35, -14, -180) EVT_CALL(SetNpcAnimation, NPC_ChainChomp_03, ANIM_ChainChomp_Anim02) - EVT_CALL(func_802CFD30, 14, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_ChainChomp_03, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_ChainChomp_03, 52, -18, -180) EVT_CALL(SetNpcAnimation, NPC_ChainChomp_04, ANIM_ChainChomp_Anim02) - EVT_CALL(func_802CFD30, 15, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_ChainChomp_04, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_ChainChomp_04, 69, -19, -180) EVT_CALL(SetNpcAnimation, NPC_ChainChomp_05, ANIM_ChainChomp_Anim02) - EVT_CALL(func_802CFD30, 16, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_ChainChomp_05, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_ChainChomp_05, 86, -19, -180) EVT_RETURN EVT_END diff --git a/src/world/area_kmr/kmr_22/npc/chapter_3.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_3.inc.c index daf1d375ad..6c721e5574 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_3.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_3.inc.c @@ -1,13 +1,13 @@ EvtScript N(EVS_NpcInit_Skolar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSkolar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_Tubba) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldTubba_Anim10) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/chapter_4.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_4.inc.c index c717702f6a..211a356345 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_4.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_4.inc.c @@ -1,20 +1,20 @@ EvtScript N(EVS_NpcInit_Muskular) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMuskular_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_GeneralGuy) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_GeneralGuy_Anim03) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_ShyGuy) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_ShyGuy_Red_Anim02) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/chapter_5.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_5.inc.c index b77ee79469..5c4f717263 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_5.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_5.inc.c @@ -1,6 +1,6 @@ EvtScript N(EVS_NpcInit_Misstar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMisstar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/chapter_6.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_6.inc.c index ac66fe4313..78c94b40f3 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_6.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_6.inc.c @@ -1,13 +1,13 @@ EvtScript N(EVS_NpcInit_Klevar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKlevar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_HuffNPuff_Body) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1A) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1) EVT_RETURN EVT_END @@ -15,7 +15,7 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Body) = { EvtScript N(EVS_NpcInit_HuffNPuff_Face) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1B) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1) EVT_RETURN EVT_END @@ -23,7 +23,7 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Face) = { EvtScript N(EVS_NpcInit_HuffNPuff_Arms) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1C) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1) EVT_RETURN EVT_END @@ -31,10 +31,10 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Arms) = { EvtScript N(EVS_NpcInit_TuffPuff_01) = { EVT_CALL(SetNpcAnimation, NPC_TuffPuff_01, ANIM_TuffPuff_Idle) - EVT_CALL(func_802CFD30, 28, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_TuffPuff_01, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_TuffPuff_01, 120, -1, -51) EVT_CALL(SetNpcAnimation, NPC_TuffPuff_02, ANIM_TuffPuff_Idle) - EVT_CALL(func_802CFD30, 29, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_TuffPuff_02, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcPos, NPC_TuffPuff_02, -40, 59, 1) EVT_RETURN EVT_END diff --git a/src/world/area_kmr/kmr_22/npc/chapter_7.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_7.inc.c index 43b74eabef..453e17b84e 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_7.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_7.inc.c @@ -1,34 +1,34 @@ EvtScript N(EVS_NpcInit_Kalmar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKalmar_Still) - EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128) + EVT_CALL(func_802CFD30, NPC_SELF, 8, 0, 0, 0, 128) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_CrystalKing) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim09) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_IceCube) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0A) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_IceSphere) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0B) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; EvtScript N(EVS_NpcInit_IceSpike) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0C) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/chapter_8.inc.c b/src/world/area_kmr/kmr_22/npc/chapter_8.inc.c index b55bc780a5..3e910aec92 100644 --- a/src/world/area_kmr/kmr_22/npc/chapter_8.inc.c +++ b/src/world/area_kmr/kmr_22/npc/chapter_8.inc.c @@ -1,6 +1,6 @@ EvtScript N(EVS_NpcInit_Bowser) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldBowser_Talk) - EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_kmr/kmr_22/npc/lava_piranha.inc.c b/src/world/area_kmr/kmr_22/npc/lava_piranha.inc.c index 2b049e5b98..b630522639 100644 --- a/src/world/area_kmr/kmr_22/npc/lava_piranha.inc.c +++ b/src/world/area_kmr/kmr_22/npc/lava_piranha.inc.c @@ -179,9 +179,9 @@ EvtScript N(EVS_NpcAux_LavaPiranhaHead) = { }; EvtScript N(EVS_NpcInit_LavaPiranhaHead) = { - EVT_CALL(func_802CFD30, 21, 14, 80, 80, 80, 0) - EVT_CALL(func_802CFD30, 22, 14, 80, 80, 80, 0) - EVT_CALL(func_802CFD30, 23, 14, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_LavaPiranhaHead, FOLD_TYPE_E, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_LavaBud_01, FOLD_TYPE_E, 80, 80, 80, 0) + EVT_CALL(func_802CFD30, NPC_LavaBud_02, FOLD_TYPE_E, 80, 80, 80, 0) EVT_CALL(SetNpcAnimation, NPC_LavaPiranhaHead, ANIM_LavaPiranha_Anim03) EVT_CALL(SetNpcAnimation, NPC_LavaBud_01, ANIM_LavaBud_Anim03) EVT_CALL(SetNpcAnimation, NPC_LavaBud_02, ANIM_LavaBud_Anim03) diff --git a/src/world/area_kzn/kzn_17/kzn_17_3_npc.c b/src/world/area_kzn/kzn_17/kzn_17_3_npc.c index 484953bad3..2702b0e2a9 100644 --- a/src/world/area_kzn/kzn_17/kzn_17_3_npc.c +++ b/src/world/area_kzn/kzn_17/kzn_17_3_npc.c @@ -45,7 +45,7 @@ EvtScript N(EVS_Kolorado_TrompImpact) = { EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13) EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250) EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) + EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) EVT_CALL(PlaySoundAtNpc, NPC_Kolorado, SOUND_HIT_PLAYER_NORMAL, SOUND_SPACE_MODE_0) EVT_THREAD EVT_CALL(SetNpcCollisionSize, NPC_Kolorado, 20, 24) @@ -70,7 +70,7 @@ EvtScript N(EVS_Kolorado_HurtInit) = { EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13) EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250) EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) + EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) EVT_RETURN EVT_END }; diff --git a/src/world/area_mac/mac_00/mac_00_12_intro.c b/src/world/area_mac/mac_00/mac_00_12_intro.c index c90f2c5502..1a0b8784f7 100644 --- a/src/world/area_mac/mac_00/mac_00_12_intro.c +++ b/src/world/area_mac/mac_00/mac_00_12_intro.c @@ -28,8 +28,8 @@ EvtScript N(EVS_LuigiExitPipe_Intro) = { EVT_CALL(SetNpcYaw, NPC_Luigi_Intro, 135) EVT_WAIT(2) EVT_CALL(PlaySoundAtNpc, NPC_Luigi_Intro, SOUND_ENTER_PIPE, SOUND_SPACE_MODE_0) - EVT_CALL(func_802CFE2C, 0, 0x100) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 2, 1, 1, 0) + EVT_CALL(func_802CFE2C, NPC_Luigi_Intro, 0x100) + EVT_CALL(func_802CFD30, NPC_Luigi_Intro, FOLD_TYPE_5, 2, 1, 1, 0) EVT_CALL(SetNpcPos, NPC_Luigi_Intro, -100, -10, -370) EVT_CALL(GetNpcPos, NPC_Luigi_Intro, LVar0, LVar1, LVar2) EVT_LOOP(45) @@ -37,7 +37,7 @@ EvtScript N(EVS_LuigiExitPipe_Intro) = { EVT_CALL(SetNpcPos, NPC_Luigi_Intro, LVar0, LVar1, LVar2) EVT_WAIT(1) EVT_END_LOOP - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Luigi_Intro, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcPos, NPC_Luigi_Intro, -100, 30, -370) EVT_WAIT(3) EVT_CALL(EnableNpcShadow, NPC_Luigi_Intro, TRUE) diff --git a/src/world/area_mac/mac_00/mac_00_14_epilogue.c b/src/world/area_mac/mac_00/mac_00_14_epilogue.c index 544fbf8dc1..a8f444c4a6 100644 --- a/src/world/area_mac/mac_00/mac_00_14_epilogue.c +++ b/src/world/area_mac/mac_00/mac_00_14_epilogue.c @@ -28,8 +28,8 @@ EvtScript N(EVS_LuigiExitPipe_Epilogue) = { EVT_CALL(SetNpcYaw, NPC_Luigi_Epilogue, 135) EVT_WAIT(2) EVT_CALL(PlaySoundAtNpc, NPC_Luigi_Epilogue, SOUND_ENTER_PIPE, SOUND_SPACE_MODE_0) - EVT_CALL(func_802CFE2C, 25, 0x100) - EVT_CALL(func_802CFD30, 25, FOLD_TYPE_5, 2, 1, 1, 0) + EVT_CALL(func_802CFE2C, NPC_Luigi_Epilogue, 0x100) + EVT_CALL(func_802CFD30, NPC_Luigi_Epilogue, FOLD_TYPE_5, 2, 1, 1, 0) EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, -100, -10, -370) EVT_CALL(GetNpcPos, NPC_Luigi_Epilogue, LVar0, LVar1, LVar2) EVT_LOOP(45) @@ -37,7 +37,7 @@ EvtScript N(EVS_LuigiExitPipe_Epilogue) = { EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, LVar0, LVar1, LVar2) EVT_WAIT(1) EVT_END_LOOP - EVT_CALL(func_802CFD30, 25, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Luigi_Epilogue, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, -100, 30, -370) EVT_WAIT(3) EVT_CALL(EnableNpcShadow, NPC_Luigi_Epilogue, TRUE) diff --git a/src/world/area_mac/mac_02/npc/bootler.inc.c b/src/world/area_mac/mac_02/npc/bootler.inc.c index be9822d30b..df0d085875 100644 --- a/src/world/area_mac/mac_02/npc/bootler.inc.c +++ b/src/world/area_mac/mac_02/npc/bootler.inc.c @@ -8,7 +8,7 @@ EvtScript N(D_8024ACA4_82DF64) = { EVT_END_IF EVT_LOOP(10) EVT_ADDF(LVar0, LVar1) - EVT_CALL(func_802CFD30, 9, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_RETURN @@ -67,7 +67,7 @@ EvtScript N(EVS_NpcIdle_Bootler) = { EVT_WAIT(20) EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_CALL(SetNpcAnimation, NPC_Bootler, ANIM_Bootler_Spook) - EVT_CALL(func_802CFD30, -1, 7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 0, 0, 0, 0) EVT_CALL(SetNpcYaw, NPC_SELF, 270) EVT_CALL(SetNpcPos, NPC_SELF, 500, 50, 30) EVT_EXEC_WAIT(N(D_8024ACA4_82DF64)) diff --git a/src/world/area_mac/mac_04/mac_04_6_npc.c b/src/world/area_mac/mac_04/mac_04_6_npc.c index 7978805078..b05012a7e9 100644 --- a/src/world/area_mac/mac_04/mac_04_6_npc.c +++ b/src/world/area_mac/mac_04/mac_04_6_npc.c @@ -19,7 +19,7 @@ MAP_STATIC_PAD(1,key_choice); #include "world/common/complete/KeyItemChoice.inc.c" EvtScript N(EVS_TossTrainInToybox) = { - EVT_CALL(func_802D2884, -440, -150, 0) + EVT_CALL(FacePlayerTowardPoint, -440, -150, 0) EVT_WAIT(15) EVT_THREAD EVT_WAIT(7) diff --git a/src/world/area_mac/machi/machi_6_misstar.c b/src/world/area_mac/machi/machi_6_misstar.c index 88c23cf1b2..45a76613f6 100644 --- a/src/world/area_mac/machi/machi_6_misstar.c +++ b/src/world/area_mac/machi/machi_6_misstar.c @@ -49,12 +49,12 @@ EvtScript N(EVS_NpcAux_Misstar) = { EVT_SETF(LVar0, EVT_FLOAT(40.0)) EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(4.0)) - EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(-4.0)) - EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_GOTO(0) diff --git a/src/world/area_mim/mim_04/mim_04_4_hint.c b/src/world/area_mim/mim_04/mim_04_4_hint.c index 4b243d9395..9d64a127ca 100644 --- a/src/world/area_mim/mim_04/mim_04_4_hint.c +++ b/src/world/area_mim/mim_04/mim_04_4_hint.c @@ -69,7 +69,7 @@ EvtScript N(EVS_ManageEvilTree) = { EvtScript N(EVS_SetupExitHint) = { EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_1, EVT_PTR(N(gfx_build_evil_tree_face)), 0) EVT_CALL(SetModelCustomGfx, MODEL_kao, CUSTOM_GFX_1, -1) - EVT_CALL(SetModelFlags, MODEL_kao, 16, TRUE) + EVT_CALL(SetModelFlags, MODEL_kao, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) EVT_WAIT(20) EVT_EXEC(N(EVS_ManageEvilTree)) EVT_THREAD diff --git a/src/world/area_mim/mim_07/mim_07_4_hint.c b/src/world/area_mim/mim_07/mim_07_4_hint.c index beb7bd8ee7..9eca29bd1b 100644 --- a/src/world/area_mim/mim_07/mim_07_4_hint.c +++ b/src/world/area_mim/mim_07/mim_07_4_hint.c @@ -113,7 +113,7 @@ EvtScript N(EVS_OnInspectEvilRock) = { EvtScript N(EVS_SetupExitHint) = { EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_1, EVT_PTR(N(gfx_build_evil_rock_face)), 0) EVT_CALL(SetModelCustomGfx, MODEL_o440, CUSTOM_GFX_1, -1) - EVT_CALL(SetModelFlags, MODEL_o440, 16, TRUE) + EVT_CALL(SetModelFlags, MODEL_o440, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnInspectEvilRock)), TRIGGER_WALL_PRESS_A, COLLIDER_o491, 1, 0) EVT_CALL(SetTexPanner, MODEL_o440, TEX_PANNER_0) EVT_RETURN diff --git a/src/world/area_mim/mim_10/mim_10_4_npc.c b/src/world/area_mim/mim_10/mim_10_4_npc.c index 8ddd573bb5..24c2418f88 100644 --- a/src/world/area_mim/mim_10/mim_10_4_npc.c +++ b/src/world/area_mim/mim_10/mim_10_4_npc.c @@ -107,7 +107,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { EVT_END_THREAD EVT_CALL(DisablePlayerInput, TRUE) EVT_CALL(SetNpcPos, NPC_Bootler, 200, 44, 0) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, 0, 0, 0, 0) EVT_SET(MV_Unk_00, TRUE) EVT_CALL(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) EVT_WAIT(20) @@ -125,7 +125,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_WAIT(20) @@ -150,7 +150,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { EVT_SETF(LVar0, EVT_FLOAT(240.0)) EVT_LOOP(20) EVT_SUBF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_WAIT(25) @@ -163,7 +163,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_END_THREAD @@ -176,7 +176,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { EVT_SETF(LVar0, EVT_FLOAT(240.0)) EVT_LOOP(20) EVT_SUBF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_SET(GB_StoryProgress, STORY_CH3_INVITED_TO_BOOS_MANSION) diff --git a/src/world/area_mim/mim_11/mim_11_3_gate.c b/src/world/area_mim/mim_11/mim_11_3_gate.c index fba0e5143c..54bd275725 100644 --- a/src/world/area_mim/mim_11/mim_11_3_gate.c +++ b/src/world/area_mim/mim_11/mim_11_3_gate.c @@ -46,7 +46,7 @@ EvtScript N(D_80242560_BB95D0) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(90) EVT_ADDF(LVar0, EVT_FLOAT(2.667)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(SpeakToPlayer, NPC_Bootler, ANIM_Bootler_Talk, ANIM_Bootler_Idle, 0, MSG_CH3_0028) @@ -69,7 +69,7 @@ EvtScript N(D_80242560_BB95D0) = { EVT_SETF(LVar0, EVT_FLOAT(240.0)) EVT_LOOP(90) EVT_SUBF(LVar0, EVT_FLOAT(2.667)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(RemoveNpc, NPC_Bootler) diff --git a/src/world/area_mim/mim_11/mim_11_5_npc.c b/src/world/area_mim/mim_11/mim_11_5_npc.c index d2cb2237f7..08d26e7e4d 100644 --- a/src/world/area_mim/mim_11/mim_11_5_npc.c +++ b/src/world/area_mim/mim_11/mim_11_5_npc.c @@ -66,7 +66,7 @@ EvtScript N(EVS_NpcInit_Bootler) = { EVT_SWITCH(GB_StoryProgress) EVT_CASE_LT(STORY_CH3_OPENED_BOOS_MANSION_GATE) EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE) - EVT_CALL(func_802CFD30, -1, 7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 0, 0, 0, 0) EVT_CASE_DEFAULT EVT_CALL(RemoveNpc, NPC_SELF) EVT_END_SWITCH diff --git a/src/world/area_nok/common/GetIntoShell.inc.c b/src/world/area_nok/common/GetIntoShell.inc.c new file mode 100644 index 0000000000..113d872809 --- /dev/null +++ b/src/world/area_nok/common/GetIntoShell.inc.c @@ -0,0 +1,19 @@ +#include "common.h" + +EvtScript N(EVS_GetIntoShell) = { + EVT_CALL(GetNpcYaw, LVar4, LVar1) + EVT_SET(LVar2, 30) + EVT_IF_GT(LVar1, 151) + EVT_IF_LE(LVar1, 331) + EVT_SET(LVar2, -30) + EVT_END_IF + EVT_END_IF + EVT_SET(LVar0, 0) + EVT_LOOP(15) + EVT_ADD(LVar0, LVar2) + EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok.h b/src/world/area_nok/nok.h index b567f2f8d2..17e56cbcef 100644 --- a/src/world/area_nok/nok.h +++ b/src/world/area_nok/nok.h @@ -2,38 +2,44 @@ #define _WORLD_AREA_NOK_NOK_H_ enum { - AB_NOK_0 = AreaByte(0), - AB_NOK_1 = AreaByte(1), - AB_NOK_2 = AreaByte(2), - AB_NOK_3 = AreaByte(3), - AB_NOK_4 = AreaByte(4), - AB_NOK_5 = AreaByte(5), - AB_NOK_6 = AreaByte(6), - AB_NOK_7 = AreaByte(7), - AB_NOK_8 = AreaByte(8), - AB_NOK_9 = AreaByte(9), - AB_NOK_A = AreaByte(10), - AB_NOK_B = AreaByte(11), - AB_NOK_C = AreaByte(12), - AB_NOK_D = AreaByte(13), - AB_NOK_E = AreaByte(14), - AB_NOK_F = AreaByte(15), + AB_NOK_0 = AreaByte(0), + AB_NOK_1 = AreaByte(1), + AB_NOK_2 = AreaByte(2), + AB_NOK_Unused_3 = AreaByte(3), + AB_NOK_Unused_4 = AreaByte(4), + AB_NOK_Unused_5 = AreaByte(5), + AB_NOK_Unused_6 = AreaByte(6), + AB_NOK_Unused_7 = AreaByte(7), + AB_NOK_Unused_8 = AreaByte(8), + AB_NOK_Unused_9 = AreaByte(9), + AB_NOK_Unused_A = AreaByte(10), + AB_NOK_Unused_B = AreaByte(11), + AB_NOK_Unused_C = AreaByte(12), + AB_NOK_Unused_D = AreaByte(13), + AB_NOK_Unused_E = AreaByte(14), + AB_NOK_Unused_F = AreaByte(15), }; enum { - AF_NOK_01 = AreaFlag(1), - AF_NOK_02 = AreaFlag(2), - AF_NOK_09 = AreaFlag(9), - AF_NOK_0A = AreaFlag(10), - AF_NOK_0B = AreaFlag(11), - AF_NOK_0C = AreaFlag(12), - AF_NOK_0E = AreaFlag(14), - AF_NOK_0F = AreaFlag(15), - AF_NOK_10 = AreaFlag(16), - AF_NOK_11 = AreaFlag(17), - AF_NOK_12 = AreaFlag(18), - AF_NOK_13 = AreaFlag(19), - AF_NOK_15 = AreaFlag(21), + AF_NOK12_HitSwitch = AreaFlag(1), + AF_NOK14_HitSwitch = AreaFlag(2), + AF_NOK04_PlayingGame = AreaFlag(3), + AF_NOK04_BattleStarted = AreaFlag(4), + AF_NOK04_BattleDone = AreaFlag(5), + AF_NOK04_TauntMsgDone = AreaFlag(6), + AF_NOK04_FleeMsgDone = AreaFlag(7), + AF_NOK04_CamPanDone = AreaFlag(8), + AF_NOK01_Dialogue_RelaxedKoopa = AreaFlag(9), + AF_NOK01_Dialogue_Bobomb_01_Crisis = AreaFlag(10), + AF_NOK01_Dialogue_Bobomb_01 = AreaFlag(11), + AF_NOK01_Dialogue_Bobomb_02 = AreaFlag(12), + AF_NOK_0E = AreaFlag(14), + AF_NOK_0F = AreaFlag(15), + AF_NOK_10 = AreaFlag(16), + AF_NOK_11 = AreaFlag(17), + AF_NOK_12 = AreaFlag(18), + AF_NOK_13 = AreaFlag(19), + AF_NOK_15 = AreaFlag(21), }; extern MapSettings nok_01_settings; diff --git a/src/world/area_nok/nok_01/nok_01_2_main.c b/src/world/area_nok/nok_01/nok_01_2_main.c index 0ad216aa60..a0175f97ad 100644 --- a/src/world/area_nok/nok_01/nok_01_2_main.c +++ b/src/world/area_nok/nok_01/nok_01_2_main.c @@ -88,9 +88,9 @@ EvtScript N(EVS_Main) = { EVT_CALL(SetSpriteShading, SHADING_NONE) EVT_SETUP_CAMERA_NO_LEAD() EVT_SET(GF_MAP_KoopaVillage, TRUE) - EVT_SET(AF_NOK_09, FALSE) - EVT_SET(AF_NOK_0A, FALSE) - EVT_SET(AF_NOK_0C, FALSE) + EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE) EVT_SET(AF_NOK_0E, FALSE) EVT_SET(GF_NOK01_Bush4_KoopaLeaf, FALSE) EVT_IF_GE(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) diff --git a/src/world/area_nok/nok_01/nok_01_4_npc.c b/src/world/area_nok/nok_01/nok_01_4_npc.c index a69ddd9953..b08625a264 100644 --- a/src/world/area_nok/nok_01/nok_01_4_npc.c +++ b/src/world/area_nok/nok_01/nok_01_4_npc.c @@ -126,23 +126,7 @@ EvtScript N(EVS_DoNothing) = { EVT_END }; -EvtScript N(EVS_GetBackIntoShell) = { - EVT_CALL(GetNpcYaw, LVar4, LVar1) - EVT_SET(LVar2, 30) - EVT_IF_GT(LVar1, 151) - EVT_IF_LE(LVar1, 331) - EVT_SET(LVar2, -30) - EVT_END_IF - EVT_END_IF - EVT_SET(LVar0, 0) - EVT_LOOP(15) - EVT_ADD(LVar0, LVar2) - EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0) - EVT_WAIT(1) - EVT_END_LOOP - EVT_RETURN - EVT_END -}; +#include "../common/GetIntoShell.inc.c" Vec2i N(FuzzyJumpPath1)[] = { { -255, 399 }, @@ -398,12 +382,12 @@ EvtScript N(EVS_NpcInit_MortT) = { EvtScript N(EVS_NpcInteract_RelaxedKoopa) = { EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - EVT_IF_EQ(AF_NOK_09, FALSE) + EVT_IF_EQ(AF_NOK01_Dialogue_RelaxedKoopa, FALSE) EVT_CALL(SpeakToPlayer, NPC_RelaxedKoopa, ANIM_Koopa_LeanBackTalk, ANIM_Koopa_LeanBack, 5, MSG_CH1_0021) - EVT_SET(AF_NOK_09, TRUE) + EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, TRUE) EVT_ELSE EVT_CALL(SpeakToPlayer, NPC_RelaxedKoopa, ANIM_Koopa_LeanBackTalk, ANIM_Koopa_LeanBack, 5, MSG_CH1_0022) - EVT_SET(AF_NOK_09, FALSE) + EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, FALSE) EVT_END_IF EVT_RETURN EVT_END_IF diff --git a/src/world/area_nok/nok_01/npcs_crisis.inc.c b/src/world/area_nok/nok_01/npcs_crisis.inc.c index cff826b160..32f7ab475f 100644 --- a/src/world/area_nok/nok_01/npcs_crisis.inc.c +++ b/src/world/area_nok/nok_01/npcs_crisis.inc.c @@ -40,7 +40,7 @@ EvtScript N(EVS_Scene_RecoverTreeShell) = { EVT_ADD(LVar1, 20) EVT_SET(LVar3, NPC_KoopaShell_03) EVT_SET(LVar4, NPC_Koopa_03) - EVT_EXEC(N(EVS_GetBackIntoShell)) + EVT_EXEC(N(EVS_GetIntoShell)) EVT_CALL(InterpNpcYaw, LVar3, 60, 0) EVT_CALL(NpcJump0, NPC_KoopaShell_03, LVar0, LVar1, LVar2, 30) EVT_CALL(SetNpcPos, NPC_KoopaShell_03, NPC_DISPOSE_LOCATION) @@ -117,7 +117,7 @@ EvtScript N(EVS_Scene_RecoverBlockShell) = { EVT_ADD(LVar1, 20) EVT_SET(LVar3, NPC_KoopaShell_02) EVT_SET(LVar4, NPC_Koopa_02) - EVT_EXEC(N(EVS_GetBackIntoShell)) + EVT_EXEC(N(EVS_GetIntoShell)) EVT_CALL(InterpNpcYaw, LVar3, 60, 0) EVT_CALL(NpcJump0, NPC_KoopaShell_02, LVar0, LVar1, LVar2, 30) EVT_CALL(SetNpcPos, NPC_KoopaShell_02, NPC_DISPOSE_LOCATION) @@ -438,7 +438,7 @@ EvtScript N(EVS_NpcHit_FuzzyWithShell) = { EVT_ADD(LVar1, 20) EVT_SET(LVar3, NPC_KooversShell) EVT_SET(LVar4, NPC_Koover) - EVT_EXEC(N(EVS_GetBackIntoShell)) + EVT_EXEC(N(EVS_GetIntoShell)) EVT_CALL(InterpNpcYaw, LVar3, 60, 0) EVT_CALL(NpcJump0, NPC_KooversShell, LVar0, LVar1, LVar2, 30) EVT_CALL(SetNpcPos, NPC_KooversShell, NPC_DISPOSE_LOCATION) @@ -463,11 +463,11 @@ EvtScript N(EVS_NpcHit_FuzzyWithShell) = { }; EvtScript N(EVS_NpcInteract_Bobomb_01_Crisis) = { - EVT_IF_EQ(AF_NOK_0A, FALSE) - EVT_SET(AF_NOK_0A, TRUE) + EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, TRUE) EVT_SET(LVar0, MSG_CH1_003D) EVT_ELSE - EVT_SET(AF_NOK_0A, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE) EVT_SET(LVar0, MSG_CH1_003E) EVT_END_IF EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0) @@ -482,11 +482,11 @@ EvtScript N(EVS_NpcInit_Bobomb_01_Crisis) = { }; EvtScript N(EVS_NpcInteract_Bobomb_02_Crisis) = { - EVT_IF_EQ(AF_NOK_0C, FALSE) - EVT_SET(AF_NOK_0C, TRUE) + EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE) EVT_SET(LVar0, MSG_CH1_0044) EVT_ELSE - EVT_SET(AF_NOK_0C, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE) EVT_SET(LVar0, MSG_CH1_0045) EVT_END_IF EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0) diff --git a/src/world/area_nok/nok_01/npcs_normal.inc.c b/src/world/area_nok/nok_01/npcs_normal.inc.c index a9aef7d86d..222f76f8c7 100644 --- a/src/world/area_nok/nok_01/npcs_normal.inc.c +++ b/src/world/area_nok/nok_01/npcs_normal.inc.c @@ -79,11 +79,11 @@ EvtScript N(EVS_NpcInteract_Koopa_03_Normal) = { EvtScript N(EVS_NpcInteract_Bobomb_01_Normal) = { EVT_SWITCH(GB_StoryProgress) EVT_CASE_LT(STORY_CH1_STAR_SPRIT_DEPARTED) - EVT_IF_EQ(AF_NOK_0B, FALSE) - EVT_SET(AF_NOK_0B, TRUE) + EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_01, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_01, TRUE) EVT_SET(LVar0, MSG_CH1_003F) EVT_ELSE - EVT_SET(AF_NOK_0B, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_01, FALSE) EVT_SET(LVar0, MSG_CH1_0040) EVT_END_IF EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0) @@ -109,17 +109,17 @@ EvtScript N(EVS_NpcInteract_Bobomb_01_Normal) = { EvtScript N(EVS_NpcInteract_Bobomb_02_Normal) = { EVT_SWITCH(GB_StoryProgress) EVT_CASE_LT(STORY_CH1_STAR_SPRIT_DEPARTED) - EVT_IF_EQ(AF_NOK_0C, FALSE) - EVT_SET(AF_NOK_0C, TRUE) + EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE) EVT_SET(LVar0, MSG_CH1_0046) EVT_ELSE - EVT_SET(AF_NOK_0C, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE) EVT_SET(LVar0, MSG_CH1_0047) EVT_END_IF EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0) EVT_CASE_LT(STORY_CH4_STAR_SPRIT_DEPARTED) - EVT_IF_EQ(AF_NOK_0C, FALSE) - EVT_SET(AF_NOK_0C, TRUE) + EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE) + EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE) EVT_CALL(NpcFacePlayer, NPC_SELF, 0) EVT_CALL(BringPartnerOut, PARTNER_BOMBETTE) EVT_CALL(NpcFaceNpc, NPC_PARTNER, NPC_SELF, 0) diff --git a/src/world/area_nok/nok_02/nok_02_2_main.c b/src/world/area_nok/nok_02/nok_02_2_main.c index 9221ba14ed..24d3306e40 100644 --- a/src/world/area_nok/nok_02/nok_02_2_main.c +++ b/src/world/area_nok/nok_02/nok_02_2_main.c @@ -6,7 +6,6 @@ #define NAME_SUFFIX _Unused #include "world/common/complete/GiveReward.inc.c" -//MAP_STATIC_PAD(1,key_item); #include "world/common/complete/KeyItemChoice.inc.c" #define NAME_SUFFIX diff --git a/src/world/area_nok/nok_02/nok_02_6_npc.c b/src/world/area_nok/nok_02/nok_02_6_npc.c index c61d266318..cb134afac5 100644 --- a/src/world/area_nok/nok_02/nok_02_6_npc.c +++ b/src/world/area_nok/nok_02/nok_02_6_npc.c @@ -47,23 +47,7 @@ EvtScript N(EVS_DoNothing) = { EVT_END }; -EvtScript N(EVS_GetBackIntoShell) = { - EVT_CALL(GetNpcYaw, LVar4, LVar1) - EVT_SET(LVar2, 30) - EVT_IF_GT(LVar1, 151) - EVT_IF_LE(LVar1, 331) - EVT_SET(LVar2, -30) - EVT_END_IF - EVT_END_IF - EVT_SET(LVar0, 0) - EVT_LOOP(15) - EVT_ADD(LVar0, LVar2) - EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0) - EVT_WAIT(1) - EVT_END_LOOP - EVT_RETURN - EVT_END -}; +#include "../common/GetIntoShell.inc.c" #include "world/common/todo/SwitchToPartner.inc.c" @@ -442,7 +426,7 @@ EvtScript N(EVS_BreakBlock_DropShell) = { EVT_ADD(LVar1, 20) EVT_SET(LVar3, NPC_KoopaShell_02) EVT_SET(LVar4, NPC_Koopa_02) - EVT_EXEC(N(EVS_GetBackIntoShell)) + EVT_EXEC(N(EVS_GetIntoShell)) EVT_CALL(InterpNpcYaw, LVar3, 60, 0) EVT_CALL(NpcJump0, NPC_KoopaShell_02, LVar0, LVar1, LVar2, 30) EVT_CALL(SetNpcPos, NPC_KoopaShell_02, NPC_DISPOSE_LOCATION) @@ -722,24 +706,7 @@ StaticNpc N(NpcData_Crisis)[] = { .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, .init = &N(EVS_NpcInit_Kooper), .drops = NPC_NO_DROPS, - .animations = { - .idle = ANIM_WorldKooper_Idle, - .walk = ANIM_WorldKooper_Walk, - .run = ANIM_WorldKooper_Walk, - .chase = ANIM_WorldKooper_Walk, - .anim_4 = ANIM_WorldKooper_Walk, - .anim_5 = ANIM_WorldKooper_Walk, - .death = ANIM_WorldKooper_Still, - .hit = ANIM_WorldKooper_Still, - .anim_8 = ANIM_WorldKooper_Still, - .anim_9 = ANIM_WorldKooper_Still, - .anim_A = ANIM_WorldKooper_Still, - .anim_B = ANIM_WorldKooper_Still, - .anim_C = ANIM_WorldKooper_Still, - .anim_D = ANIM_WorldKooper_Still, - .anim_E = ANIM_WorldKooper_Still, - .anim_F = ANIM_WorldKooper_Still, - }, + .animations = KOOPER_ANIMS, .tattle = MSG_NpcTattle_NOK_Kooper, }, { @@ -760,24 +727,7 @@ StaticNpc N(NpcData_Crisis)[] = { .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, .init = &N(EVS_NpcInit_KoopersShell), .drops = NPC_NO_DROPS, - .animations = { - .idle = ANIM_WorldKooper_Idle, - .walk = ANIM_WorldKooper_Walk, - .run = ANIM_WorldKooper_Walk, - .chase = ANIM_WorldKooper_Walk, - .anim_4 = ANIM_WorldKooper_Walk, - .anim_5 = ANIM_WorldKooper_Walk, - .death = ANIM_WorldKooper_Still, - .hit = ANIM_WorldKooper_Still, - .anim_8 = ANIM_WorldKooper_Still, - .anim_9 = ANIM_WorldKooper_Still, - .anim_A = ANIM_WorldKooper_Still, - .anim_B = ANIM_WorldKooper_Still, - .anim_C = ANIM_WorldKooper_Still, - .anim_D = ANIM_WorldKooper_Still, - .anim_E = ANIM_WorldKooper_Still, - .anim_F = ANIM_WorldKooper_Still, - }, + .animations = KOOPER_ANIMS, }, }; diff --git a/src/world/area_nok/nok_02/npcs_crisis.inc.c b/src/world/area_nok/nok_02/npcs_crisis.inc.c index 81580ba4c2..a73fd53559 100644 --- a/src/world/area_nok/nok_02/npcs_crisis.inc.c +++ b/src/world/area_nok/nok_02/npcs_crisis.inc.c @@ -403,7 +403,7 @@ EvtScript N(EVS_NpcIdle_Koopa_01_Crisis) = { EVT_ADD(LVar1, 20) EVT_SET(LVar3, NPC_KoopaShell_01) EVT_SET(LVar4, NPC_Koopa_01) - EVT_EXEC(N(EVS_GetBackIntoShell)) + EVT_EXEC(N(EVS_GetIntoShell)) EVT_CALL(InterpNpcYaw, LVar3, 60, 0) EVT_CALL(NpcJump0, NPC_KoopaShell_01, LVar0, LVar1, LVar2, 30) EVT_CALL(SetNpcPos, NPC_KoopaShell_01, NPC_DISPOSE_LOCATION) diff --git a/src/world/area_nok/nok_03/9EB7F0.c b/src/world/area_nok/nok_03/9EB7F0.c deleted file mode 100644 index c092532310..0000000000 --- a/src/world/area_nok/nok_03/9EB7F0.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "nok_03.h" - -static char* N(exit_str_0) = "nok_02"; -static char* N(exit_str_1) = "nok_04"; - -#include "world/common/enemy/ai/HoppingAI.inc.c" diff --git a/src/world/area_nok/nok_03/nok_03.h b/src/world/area_nok/nok_03/nok_03.h index 8fe19f3911..8c8729ce0e 100644 --- a/src/world/area_nok/nok_03/nok_03.h +++ b/src/world/area_nok/nok_03/nok_03.h @@ -2,8 +2,25 @@ /// @brief Koopa Region - Behind Koopa Village #include "common.h" -#include "../nok.h" #include "message_ids.h" #include "map.h" +#include "../nok.h" +#include "mapfs/nok_03_shape.h" +#include "mapfs/nok_03_hit.h" + +#include "sprite/npc/WorldKooper.h" + +enum { + NPC_Fuzzy_01 = 0, + NPC_Fuzzy_02 = 1, + NPC_Fuzzy_03 = 4, + NPC_KoopersShell = 5, +}; + #define NAMESPACE nok_03 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_MakeEntities); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_nok/nok_03/nok_03_0_header.c b/src/world/area_nok/nok_03/nok_03_0_header.c new file mode 100644 index 0000000000..e7a2ab0cc6 --- /dev/null +++ b/src/world/area_nok/nok_03/nok_03_0_header.c @@ -0,0 +1,14 @@ +#include "nok_03.h" + +EntryList N(Entrances) = { + [nok_03_ENTRY_0] { -654.0, 0.0, 6.0, 90.0 }, + [nok_03_ENTRY_1] { 1046.0, 0.0, -31.0, 270.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .background = &gBackgroundImage, + .tattle = { MSG_MapTattle_nok_03 }, +}; diff --git a/src/world/area_nok/nok_03/nok_03_1_music.c b/src/world/area_nok/nok_03/nok_03_1_music.c new file mode 100644 index 0000000000..d03b41b7d1 --- /dev/null +++ b/src/world/area_nok/nok_03/nok_03_1_music.c @@ -0,0 +1,12 @@ +#include "nok_03.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + EVT_ELSE + EVT_CALL(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + EVT_END_IF + EVT_CALL(PlaySoundAt, SOUND_8000005B, 0, 887, 0, -41) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_03/nok_03_2_main.c b/src/world/area_nok/nok_03/nok_03_2_main.c new file mode 100644 index 0000000000..83541f923f --- /dev/null +++ b/src/world/area_nok/nok_03/nok_03_2_main.c @@ -0,0 +1,78 @@ +#include "nok_03.h" + +EvtScript N(EVS_ExitWalk_nok_02_1) = EVT_EXIT_WALK_NOK(60, nok_03_ENTRY_0, "nok_02", nok_02_ENTRY_1); +EvtScript N(EVS_ExitWalk_nok_04_0) = EVT_EXIT_WALK_NOK(123, nok_03_ENTRY_1, "nok_04", nok_04_ENTRY_0); + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_02_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_04_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_TexPan_Flowers) = { + EVT_CALL(SetTexPanner, MODEL_hanahana, TEX_PANNER_0) + EVT_LABEL(10) + EVT_LOOP(12) + EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, 0) + EVT_WAIT(1) + EVT_END_LOOP + EVT_LOOP(12) + EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0x4000, 0) + EVT_WAIT(1) + EVT_END_LOOP + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_TexPan_Water) = { + EVT_THREAD + EVT_CALL(SetTexPanner, MODEL_suimen1, TEX_PANNER_1) + EVT_SET(LVar0, 0) + EVT_SET(LVar1, 0) + EVT_SET(LVar2, 0) + EVT_LABEL(10) + EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, LVar0, 0) + EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_AUX, LVar1, LVar2) + EVT_SUB(LVar0, 100) + EVT_SUB(LVar1, 400) + EVT_ADD(LVar1, 1000) + EVT_WAIT(1) + EVT_GOTO(10) + EVT_END_THREAD + EVT_CALL(SetTexPanner, MODEL_kabemizu, TEX_PANNER_2) + EVT_SET(LVar0, 0) + EVT_SET(LVar1, 0) + EVT_SET(LVar2, 0) + EVT_LABEL(20) + EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, LVar0, 0) + EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_AUX, LVar1, LVar2) + EVT_SUB(LVar0, 100) + EVT_ADD(LVar1, 800) + EVT_SUB(LVar1, 400) + EVT_WAIT(1) + EVT_GOTO(20) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_KOOPA_VILLAGE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_SETUP_CAMERA_DEFAULT() + EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs))) + EVT_END_IF + EVT_EXEC_WAIT(N(EVS_MakeEntities)) + EVT_EXEC(N(EVS_TexPan_Flowers)) + EVT_EXEC(N(EVS_TexPan_Water)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_03/nok_03_3_entity.c b/src/world/area_nok/nok_03/nok_03_3_entity.c new file mode 100644 index 0000000000..95faf7f4ed --- /dev/null +++ b/src/world/area_nok/nok_03/nok_03_3_entity.c @@ -0,0 +1,8 @@ +#include "nok_03.h" +#include "entity.h" + +EvtScript N(EVS_MakeEntities) = { + EVT_CALL(MakeItemEntity, ITEM_HP_PLUS_B, 218, 64, -100, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK03_Item_HPPlusB) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_03/nok_03_4_npc.c b/src/world/area_nok/nok_03/nok_03_4_npc.c new file mode 100644 index 0000000000..9367cf8c5b --- /dev/null +++ b/src/world/area_nok/nok_03/nok_03_4_npc.c @@ -0,0 +1,216 @@ +#include "nok_03.h" + +#include "world/common/enemy/complete/Fuzzy_Wander.inc.c" +#include "world/common/enemy/complete/Fuzzy.inc.c" +#include "world/common/npc/Koopa.inc.c" + +EvtScript N(EVS_NpcIdle_FuzzyBoss) = { + EVT_THREAD + EVT_LABEL(0) + EVT_CALL(GetNpcPos, NPC_Fuzzy_03, LVar0, LVar1, LVar2) + EVT_ADD(LVar2, 2) + EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_THREAD + EVT_LABEL(1) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(GetNpcPos, NPC_Fuzzy_03, LVar3, LVar4, LVar5) + EVT_SET(LVar6, LVar3) + EVT_SUB(LVar6, LVar0) + EVT_IF_LT(LVar6, 100) + EVT_ADD(LVar3, 100) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVar3, LVar4, LVar5, 10) + EVT_SET(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_RAN_AWAY) + EVT_END_IF + EVT_IF_GT(LVar3, 1200) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE) + EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE) + EVT_RETURN + EVT_END_IF + EVT_WAIT(1) + EVT_GOTO(1) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_Fuzzy_01) = { + EVT_WAIT(5) + EVT_LABEL(10) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_LT(LVar0, -400) + EVT_WAIT(1) + EVT_GOTO(10) + EVT_END_IF + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2) + EVT_SET(LVar1, 0) + EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(3.0)) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 6) + EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.2)) + EVT_ADD(LVar0, 20) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 8) + EVT_SUB(LVar0, 15) + EVT_ADD(LVar2, 20) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 10) + EVT_ADD(LVar0, 20) + EVT_ADD(LVar2, 20) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 8) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.8)) + EVT_CALL(NpcJump0, NPC_SELF, -341, 0, 23, 15) + EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_40000000, 1) + EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_Fuzzy_Wander))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_Fuzzy_02) = { + EVT_WAIT(5) + EVT_LABEL(0) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_LT(LVar0, -140) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2) + EVT_SET(LVar1, 0) + EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(3.0)) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 6) + EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_40000000, 1) + EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_Fuzzy_Wander))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Fuzzy_01) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_01))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_WORLD_COLLISION, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Fuzzy_02) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_02))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_WORLD_COLLISION, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_FuzzyBoss) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_RAN_AWAY) + EVT_CALL(SetNpcFlagBits, NPC_Fuzzy_03, NPC_FLAG_GRAVITY, FALSE) + EVT_CALL(SetNpcFlagBits, NPC_KoopersShell, NPC_FLAG_GRAVITY, FALSE) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE) + EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE) + EVT_RETURN + EVT_END_IF + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_FuzzyBoss))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_KoopersShell) = { + EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE) + EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKooper_StillShellAlt) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_Fuzzy_01) = { + .id = NPC_Fuzzy_01, + .settings = &N(NpcSettings_Fuzzy_Wander), + .pos = { -388.0f, 100.0f, -107.0f }, + .yaw = 0, + .flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Fuzzy_01), + .drops = FUZZY_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { -388, 100, -107 }, + .wanderSize = { 30 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { -388, 0, -107 }, + .detectSize = { 300 }, + } + }, + .animations = FUZZY_ANIMS, + .aiDetectFlags = AI_DETECT_SIGHT, +}; + +StaticNpc N(NpcData_Fuzzy_02) = { + .id = NPC_Fuzzy_02, + .settings = &N(NpcSettings_Fuzzy_Wander), + .pos = { -76.0f, 118.0f, -43.0f }, + .yaw = 0, + .flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Fuzzy_02), + .drops = FUZZY_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { -76, 118, -43 }, + .wanderSize = { 100 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { -76, 118, -43 }, + .detectSize = { 300 }, + } + }, + .animations = FUZZY_ANIMS, + .aiDetectFlags = AI_DETECT_SIGHT, +}; + +StaticNpc N(NpcData_FuzzyBoss)[] = { + { + .id = NPC_Fuzzy_03, + .settings = &N(NpcSettings_Fuzzy), + .pos = { -540.0f, 0.0f, 0.0f }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_FuzzyBoss), + .drops = FUZZY_DROPS, + .territory = { + .wander = { + .isFlying = TRUE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, + }, + { + .id = NPC_KoopersShell, + .settings = &N(NpcSettings_Koopa), + .pos = { 0.0f, 0.0f, 0.0f }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_KoopersShell), + .drops = FUZZY_DROPS, + .animations = KOOPER_ANIMS, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_Fuzzy_01), BTL_NOK_FORMATION_16, BTL_NOK_STAGE_01), + NPC_GROUP(N(NpcData_Fuzzy_02), BTL_NOK_FORMATION_16, BTL_NOK_STAGE_01), + NPC_GROUP(N(NpcData_FuzzyBoss)), + {} +}; diff --git a/src/world/area_nok/nok_04/9EDBF0.c b/src/world/area_nok/nok_04/9EDBF0.c deleted file mode 100644 index c24dc9bdd7..0000000000 --- a/src/world/area_nok/nok_04/9EDBF0.c +++ /dev/null @@ -1,313 +0,0 @@ -#include "nok_04.h" - -typedef struct Unk80241440_2 { - /* 0x00 */ f32 unk_00; - /* 0x04 */ f32 unk_04; - /* 0x08 */ f32 unk_08; - /* 0x0C */ f32 unk_0C; - /* 0x10 */ f32 unk_10; - /* 0x14 */ f32 unk_14; - /* 0x18 */ f32 unk_18; - /* 0x1C */ f32 unk_1C; - /* 0x20 */ f32 unk_20; - /* 0x24 */ f32 unk_24; - /* 0x28 */ f32 unk_28; - /* 0x2C */ f32 unk_2C; - /* 0x30 */ f32 unk_30; - /* 0x34 */ f32 unk_34; - /* 0x38 */ f32 unk_38; - /* 0x3C */ f32 unk_3C; - /* 0x40 */ f32 unk_40; -} Unk80241440_2; //size = 0x44 - -typedef struct Unk80241440 { - /* 0x00 */ Vec3f unk_00; - /* 0x0C */ f32 unk_0C; - /* 0x10 */ f32 unk_10; - /* 0x14 */ f32 unk_14; - /* 0x18 */ f32 unk_18; - /* 0x1C */ f32 unk_1C; - /* 0x20 */ f32 unk_20; - /* 0x24 */ f32 unk_24; - /* 0x28 */ f32 unk_28; - /* 0x2C */ f32 unk_2C; - /* 0x30 */ f32 unk_30; - /* 0x34 */ f32 unk_34; - /* 0x38 */ f32 unk_38; - /* 0x3C */ f32 unk_3C; - /* 0x40 */ Unk80241440_2* unk_40; - /* 0x44 */ Unk80241440_2* unk_44; -} Unk80241440; //size = 0x48 - -extern Unk80241440 D_802413F8_9EEFE8; -extern s32 D_80241440_9EF030[12]; -extern s32 D_80241438_9EF028; -extern s32 D_8024143C_9EF02C; -extern s32 D_80243254_9F0E44; -extern EvtScript D_80241470_9EF060; -extern EvtScript D_8024161C_9EF20C; -extern Gfx D_80241768_9EF358[]; -extern Vtx D_80241748_9EF338[]; - -/* -trees in this room are labeled with a 0 through 5 system, meaning there are "6" tree values -(tree indexes from left to right in both rows, each tree has 2 unique numbers besides 0) -0, 1, 2, 3 -0, 5, 4, 3 -*/ - -static char* N(exit_str_0) = "nok_03"; -static char* N(exit_str_1) = ""; - -#include "world/common/util/ChangeNpcToPartner.inc.c" - -#include "common/CosInterpMinMax.inc.c" - -ApiStatus func_80240314_9EDF04(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 temp_s2 = evt_get_variable(script, *args++); - s32 temp_s0_3 = evt_get_variable(script, *args++); - f32 temp_f6 = evt_get_variable(script, *args++); - - D_802413F8_9EEFE8.unk_00.x = temp_s2; - D_802413F8_9EEFE8.unk_00.y = temp_s0_3 + 4.0f; - D_802413F8_9EEFE8.unk_00.z = temp_f6; - return ApiStatus_DONE2; -} - -ApiStatus func_802403C0_9EDFB0(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 temp_s2 = evt_get_variable(script, *args++); - s32 temp_s0_3 = evt_get_variable(script, *args++); - s32 temp_a0 = evt_get_variable(script, *args++); - s32 phi_s0 = temp_s0_3; - Unk80241440* d802413F8 = &D_802413F8_9EEFE8; //needed to match - f32 temp_f4; - f32 temp_f6; - f32 temp_f8; - f32 temp_f10; - - if (temp_s0_3 < 0) { - phi_s0 = temp_s0_3 + 15; - } - - temp_f8 = phi_s0 >> 4; - D_802413F8_9EEFE8.unk_34 = 0.0f; - temp_f6 = temp_s2 * 0.0625f; - temp_f10 = D_802413F8_9EEFE8.unk_34; - temp_f4 = temp_a0; - D_802413F8_9EEFE8.unk_18 = temp_f8; - D_802413F8_9EEFE8.unk_30 = temp_f4; - D_802413F8_9EEFE8.unk_0C = temp_f6; - - if (temp_f10 < temp_f4) { - D_802413F8_9EEFE8.unk_38 = (temp_f6 - D_802413F8_9EEFE8.unk_10) / temp_f4; - D_802413F8_9EEFE8.unk_3C = (temp_f8 - D_802413F8_9EEFE8.unk_20) / temp_f4; - } - - if (temp_f4 < temp_f10) { - D_802413F8_9EEFE8.unk_10 = temp_f6; - D_802413F8_9EEFE8.unk_20 = temp_f8; - D_802413F8_9EEFE8.unk_30 = temp_f10; - } - - return ApiStatus_DONE2; -} - -ApiStatus func_802404D0_9EE0C0(Evt* script, s32 isInitialCall) { - D_802413F8_9EEFE8.unk_00.x = 0; - D_802413F8_9EEFE8.unk_00.y = 0; - D_802413F8_9EEFE8.unk_00.z = 0; - D_802413F8_9EEFE8.unk_10 = 0; - D_802413F8_9EEFE8.unk_0C = 0; - D_802413F8_9EEFE8.unk_14 = 0; - D_802413F8_9EEFE8.unk_18 = 0; - D_802413F8_9EEFE8.unk_20 = 0; - D_802413F8_9EEFE8.unk_1C = 0; - D_802413F8_9EEFE8.unk_40 = NULL; - D_802413F8_9EEFE8.unk_44 = NULL; - D_802413F8_9EEFE8.unk_34 = 0; - D_802413F8_9EEFE8.unk_30 = 0; - D_802413F8_9EEFE8.unk_38 = 0; - D_802413F8_9EEFE8.unk_3C = 0; - return ApiStatus_DONE2; -} - -ApiStatus func_8024051C_9EE10C(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - D_80241438_9EF028 = evt_get_variable(script, *args++); - return ApiStatus_DONE2; -} - -ApiStatus func_80240548_9EE138(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - D_8024143C_9EF02C = evt_get_variable(script, *args++); - return ApiStatus_DONE2; -} - -ApiStatus func_80240574_9EE164(Evt* evt, s32 isInitialCall) { - Bytecode *args = evt->ptrReadPos; - s32 mapVar1 = evt_get_variable(evt, *args++) * 3; - s32 var1 = *args++; - s32 var2 = *args++; - s32 var3 = *args++; - - evt_set_variable(evt, var1, D_80241440_9EF030[mapVar1]); - evt_set_variable(evt, var2, D_80241440_9EF030[mapVar1 + 1]); - evt_set_variable(evt, var3, D_80241440_9EF030[mapVar1 + 2]); - return ApiStatus_DONE2; -} - -ApiStatus func_80240630_9EE220(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 evtVar = evt_get_variable(script, *args++); - Bytecode outVar = *args++; - evtVar %= 6; - - if (evtVar < 4) { - evt_set_variable(script, outVar, evtVar); - } else { - evt_set_variable(script, outVar, 6 - evtVar); - } - - return ApiStatus_DONE2; -} - -ApiStatus func_802406C4_9EE2B4(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 temp_s1_2 = evt_get_variable(script, *args++); - s32 temp_s2 = evt_get_variable(script, *args++); - Evt* script2; - EvtScript* phi_a0; - - temp_s1_2 %= 6; - - if (temp_s1_2 >= 4) { - temp_s1_2 = 6 - temp_s1_2; - } - - if (does_script_exist(script->varTable[temp_s1_2 + 6])) { - kill_script_by_ID(script->varTable[temp_s1_2 + 6]); - } - - phi_a0 = &D_80241470_9EF060; - - switch (temp_s2) { - case 0: - phi_a0 = &D_80241470_9EF060; - break; - case 1: - phi_a0 = &D_8024161C_9EF20C; - break; - } - - script2 = start_script(phi_a0, EVT_PRIORITY_1, 0); - script->varTable[temp_s1_2 + 6] = script2->id; - - switch (temp_s1_2) { - case 0: - script2->varTable[0] = 0x4C; - break; - case 1: - script2->varTable[0] = 0x4D; - break; - case 2: - script2->varTable[0] = 0x4E; - break; - case 3: - script2->varTable[0] = 0x4F; - break; - } - - return ApiStatus_DONE2; -} - -void func_80240814_9EE404(s32 index) { - f32 x = D_802413F8_9EEFE8.unk_00.x; - f32 y = D_802413F8_9EEFE8.unk_00.y; - f32 z = D_802413F8_9EEFE8.unk_00.z; - s32 i; - f32 angle, deltaY, fs3; - - D_802413F8_9EEFE8.unk_14 += 0.2; - if (D_802413F8_9EEFE8.unk_30 != 0.0f) { - D_802413F8_9EEFE8.unk_10 += D_802413F8_9EEFE8.unk_38; - if (D_802413F8_9EEFE8.unk_0C < D_802413F8_9EEFE8.unk_10) { - D_802413F8_9EEFE8.unk_14 += (D_802413F8_9EEFE8.unk_0C - D_802413F8_9EEFE8.unk_10) * 0.5f; - } - D_802413F8_9EEFE8.unk_34 += 1.0f; - D_802413F8_9EEFE8.unk_1C = (D_802413F8_9EEFE8.unk_1C + (D_802413F8_9EEFE8.unk_18 - D_802413F8_9EEFE8.unk_20) / 10.0f) * 0.92; - D_802413F8_9EEFE8.unk_20 += D_802413F8_9EEFE8.unk_3C; - if (D_802413F8_9EEFE8.unk_30 <= D_802413F8_9EEFE8.unk_34) { - D_802413F8_9EEFE8.unk_30 = 0.0f; - } - } else { - D_802413F8_9EEFE8.unk_10 += D_802413F8_9EEFE8.unk_14; - if (D_802413F8_9EEFE8.unk_0C < D_802413F8_9EEFE8.unk_10) { - D_802413F8_9EEFE8.unk_14 += (D_802413F8_9EEFE8.unk_0C - D_802413F8_9EEFE8.unk_10) * 0.5f; - } - D_802413F8_9EEFE8.unk_1C = (D_802413F8_9EEFE8.unk_1C + (D_802413F8_9EEFE8.unk_18 - D_802413F8_9EEFE8.unk_20) / 10.0f) * 0.92; - D_802413F8_9EEFE8.unk_20 += D_802413F8_9EEFE8.unk_1C; - } - D_802413F8_9EEFE8.unk_14 *= 0.5; - - gSPDisplayList(gMasterGfxPos++, D_80241768_9EF358); - guTranslate(&gDisplayContext->matrixStack[gMatrixListPos], D_802413F8_9EEFE8.unk_00.x, D_802413F8_9EEFE8.unk_00.y, D_802413F8_9EEFE8.unk_00.z); - gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - angle = D_802413F8_9EEFE8.unk_20; - deltaY = -D_802413F8_9EEFE8.unk_10; - x += -deltaY * sin_rad(D_802413F8_9EEFE8.unk_20 * 0 / 180.0f * PI); - y += deltaY * cos_rad(D_802413F8_9EEFE8.unk_20 * 0 / 180.0f * PI); - - guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, angle, 1.0f, 0.0f, deltaY, 0.0f); - gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - - for (i = 1; i < 16; i++) { - angle = D_802413F8_9EEFE8.unk_20; - deltaY = -D_802413F8_9EEFE8.unk_10; - x += -deltaY * sin_rad(D_802413F8_9EEFE8.unk_20 * i / 180.0f * PI); - y += deltaY * cos_rad(D_802413F8_9EEFE8.unk_20 * i / 180.0f * PI); - gSPVertex(gMasterGfxPos++, D_80241748_9EF338, 2, 0); - guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, angle, 1.0f, 0.0f, deltaY, 0.0f); - gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - gSPVertex(gMasterGfxPos++, D_80241748_9EF338, 2, 2); - gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 2, 3, 1, 0); - } - - gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); - gDPPipeSync(gMasterGfxPos++); - - D_802413F8_9EEFE8.unk_24 = x; - D_802413F8_9EEFE8.unk_28 = y; - D_802413F8_9EEFE8.unk_2C = z; - - if (D_802413F8_9EEFE8.unk_40 != NULL) { - D_802413F8_9EEFE8.unk_40->unk_38 = x; - D_802413F8_9EEFE8.unk_40->unk_3C = y - 4.0f; - D_802413F8_9EEFE8.unk_40->unk_40 = z + 6.0f; - } - - if (D_802413F8_9EEFE8.unk_44 != NULL) { - D_802413F8_9EEFE8.unk_44->unk_38 = x; - D_802413F8_9EEFE8.unk_44->unk_3C = y - 4.0f; - D_802413F8_9EEFE8.unk_44->unk_40 = z + 3.0f; - } -} - -ApiStatus func_80240E4C_9EEA3C(Evt* script, s32 isInitialCall) { - if (isInitialCall) { - D_80243254_9F0E44 = FALSE; - } - - if (D_80243254_9F0E44) { - return ApiStatus_DONE2; - } else { - return ApiStatus_BLOCK; - } -} - -ApiStatus func_80240E70_9EEA60(Evt* script, s32 isInitialCall) { - D_80243254_9F0E44 = TRUE; - return ApiStatus_DONE2; -} diff --git a/src/world/area_nok/nok_04/nok_04.h b/src/world/area_nok/nok_04/nok_04.h index 16c4e7ef60..73d83becbb 100644 --- a/src/world/area_nok/nok_04/nok_04.h +++ b/src/world/area_nok/nok_04/nok_04.h @@ -2,8 +2,52 @@ /// @brief Koopa Region - Fuzzy Forest #include "common.h" -#include "../nok.h" #include "message_ids.h" #include "map.h" +#include "../nok.h" +#include "mapfs/nok_04_shape.h" +#include "mapfs/nok_04_hit.h" + +#include "sprite/npc/Fuzzy.h" +#include "sprite/npc/KooperWithoutShell.h" +#include "sprite/npc/WorldGoombario.h" +#include "sprite/npc/WorldKooper.h" + +enum { + NPC_BossFuzzy = 0, + NPC_KoopersShell = 1, + NPC_AmbushFuzzy = 2, + NPC_Fuzzy_01 = 3, + NPC_Fuzzy_02 = 4, + NPC_Fuzzy_03 = 5, + NPC_Kooper = 6, +}; + +enum { + MV_CorrectCount = MapVar(0), + MV_CorrectTreeIndex = MapVar(1), + MV_WrongAnswerBattle = MapVar(2), + MV_LastWrongTreeIndex = MapVar(3), + MV_LastCorrectTreeIndex = MapVar(4), // unused +}; + +enum { + TREE_0 = 0, + TREE_1 = 1, + TREE_2 = 2, + TREE_3 = 3, +}; + #define NAMESPACE nok_04 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_PushPartnerSong); +extern EvtScript N(EVS_PopSong); +extern EvtScript N(EVS_HitTree); +extern EvtScript N(EVS_MakeEntities); + +extern NpcGroupList N(DefaultNPCs); + +API_CALLABLE(N(LoadPartyImage)); diff --git a/src/world/area_nok/nok_04/nok_04_0_header.c b/src/world/area_nok/nok_04/nok_04_0_header.c new file mode 100644 index 0000000000..2fbe6dd452 --- /dev/null +++ b/src/world/area_nok/nok_04/nok_04_0_header.c @@ -0,0 +1,13 @@ +#include "nok_04.h" + +EntryList N(Entrances) = { + [nok_04_ENTRY_0] { -336.0, 0.0, 356.0, 45.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .background = &gBackgroundImage, + .tattle = { MSG_MapTattle_nok_04 }, +}; diff --git a/src/world/area_nok/nok_04/nok_04_1_music.c b/src/world/area_nok/nok_04/nok_04_1_music.c new file mode 100644 index 0000000000..93c77fd281 --- /dev/null +++ b/src/world/area_nok/nok_04/nok_04_1_music.c @@ -0,0 +1,25 @@ +#include "nok_04.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + EVT_ELSE + EVT_CALL(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PushPartnerSong) = { + EVT_CALL(PushSong, SONG_NEW_PARTNER, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PopSong) = { + EVT_CALL(FadeOutMusic, 0, 500) + EVT_WAIT(15) + EVT_CALL(PopSong) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_04/nok_04_2_main.c b/src/world/area_nok/nok_04/nok_04_2_main.c new file mode 100644 index 0000000000..926dce31d7 --- /dev/null +++ b/src/world/area_nok/nok_04/nok_04_2_main.c @@ -0,0 +1,37 @@ +#include "nok_04.h" + +EvtScript N(EVS_ExitWalk_nok_03_1) = EVT_EXIT_WALK_NOK(60, nok_04_ENTRY_0, "nok_03", nok_03_ENTRY_1); + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_03_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilisw, 1, 0) + EVT_RETURN + EVT_END +}; + +MAP_RODATA_PAD(1, exits); + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_KOOPA_VILLAGE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_SETUP_CAMERA_NO_LEAD() + EVT_SET(AF_NOK04_PlayingGame, FALSE) + EVT_SET(AF_NOK04_BattleStarted, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o147, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs))) + EVT_EXEC_WAIT(N(EVS_MakeEntities)) + EVT_SET(LVar0, TREE_0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o59, 1, 0) + EVT_SET(LVar0, TREE_1) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o58, 1, 0) + EVT_SET(LVar0, TREE_2) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o57, 1, 0) + EVT_SET(LVar0, TREE_3) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o56, 1, 0) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitsw, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_04/nok_04_3_entity.c b/src/world/area_nok/nok_04/nok_04_3_entity.c new file mode 100644 index 0000000000..155b043d54 --- /dev/null +++ b/src/world/area_nok/nok_04/nok_04_3_entity.c @@ -0,0 +1,7 @@ +#include "nok_04.h" +#include "entity.h" + +EvtScript N(EVS_MakeEntities) = { + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_nok/nok_04/nok_04_4_npc.c b/src/world/area_nok/nok_04/nok_04_4_npc.c new file mode 100644 index 0000000000..2547c4facf --- /dev/null +++ b/src/world/area_nok/nok_04/nok_04_4_npc.c @@ -0,0 +1,1633 @@ + +#include "nok_04.h" +#include "effects.h" + +#define NUM_THREAD_SEGMENTS 16 + +typedef struct FuzzyThread { + /* 0x00 */ Vec3f anchorPos; + /* 0x0C */ f32 targetLength; + /* 0x10 */ f32 currentLength; + /* 0x14 */ f32 overshootVel; + /* 0x18 */ f32 targetAngle; + /* 0x1C */ f32 overshootAngleVel; + /* 0x20 */ f32 currentAngle; + /* 0x24 */ Vec3f endPoint; + /* 0x30 */ f32 duration; + /* 0x34 */ f32 time; + /* 0x38 */ f32 lengthStep; + /* 0x3C */ f32 angleStep; + /* 0x40 */ Npc* frontNpc; + /* 0x44 */ Npc* backNpc; +} FuzzyThread; //size = 0x48 + +#include "world/common/util/ChangeNpcToPartner.inc.c" + +#include "world/common/enemy/complete/Fuzzy.inc.c" +#include "world/common/npc/Koopa.inc.c" + +#include "../common/GetIntoShell.inc.c" + +FuzzyThread N(ThreadData) = {}; + +s32 N(TreeHidingSpotPositions)[] = { + -82, 101, 130, + 38, 164, 130, + 158, 135, 157, + 281, 156, 202, +}; + +#include "common/CosInterpMinMax.inc.c" + +EvtScript N(EVS_AnimBranch_JumpTo) = { + EVT_SET(LVar2, LVar0) + EVT_SET(LVar3, LVar1) + EVT_SET(LVar4, 600) + EVT_DIV(LVar4, 100) + EVT_ADD(LVar4, 27) + EVT_CALL(RandInt, 1, LVar5) + EVT_MUL(LVar5, 20) + EVT_SUB(LVar5, 10) + EVT_SET(LVar6, 0) + EVT_SETF(LVar8, EVT_FLOAT(5.0)) + EVT_CALL(MakeLerp, LVar5, 0, LVar4, EASING_COS_FAST_OVERSHOOT) + EVT_LABEL(0) + EVT_CALL(UpdateLerp) + EVT_MULF(LVar0, EVT_FLOAT(0.40625)) + EVT_ADD(LVar6, 1) + EVT_SETF(LVar9, LVar8) + EVT_MULF(LVar9, EVT_FLOAT(-1.0)) + EVT_CALL(N(CosInterpMinMax), LVar6, LVar7, LVar9, LVar8, 3, 0, 0) + EVT_MULF(LVar8, EVT_FLOAT(0.90625)) + EVT_CALL(TranslateModel, LVar2, LVar7, LVar0, 0) + EVT_IF_EQ(LVar1, 1) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_AnimBranch_Hit) = { + EVT_SET(LVar2, LVar0) + EVT_SET(LVar3, LVar1) + EVT_SET(LVar4, 600) + EVT_DIV(LVar4, 100) + EVT_ADD(LVar4, 27) + EVT_SET(LVar0, 5) + EVT_LOOP(LVar0) + EVT_CALL(TranslateModel, LVar2, LVar0, 0, 0) + EVT_WAIT(1) + EVT_SET(LVar1, LVar0) + EVT_MUL(LVar1, -1) + EVT_CALL(TranslateModel, LVar2, LVar1, 0, 0) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_MoveCam_TrackBoss) = { + EVT_CALL(InterpCamTargetPos, 0, 1, LVarA, LVarB, LVarC, LVarD) + EVT_RETURN + EVT_END +}; + +Vtx N(ThreadSegmentVertices)[] = { + {{{ -2, 0, 0 }, 0, { 0, 0 }, { 255, 255, 255, 255 }}}, + {{{ 1, 0, 0 }, 0, { 512, 0 }, { 255, 255, 255, 255 }}}, +}; + +Gfx N(ThreadGfx)[] = { + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetTextureFilter(G_TF_POINT), + gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + gsSPClearGeometryMode(G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), +}; + +API_CALLABLE(N(SetThreadAnchorPos)) { + Bytecode* args = script->ptrReadPos; + s32 temp_s2 = evt_get_variable(script, *args++); + s32 temp_s0_3 = evt_get_variable(script, *args++); + f32 temp_f6 = evt_get_variable(script, *args++); + + N(ThreadData).anchorPos.x = temp_s2; + N(ThreadData).anchorPos.y = temp_s0_3 + 4.0f; + N(ThreadData).anchorPos.z = temp_f6; + return ApiStatus_DONE2; +} + +API_CALLABLE(N(SetThreadTargetLengthAngle)) { + Bytecode* args = script->ptrReadPos; + s32 goal = evt_get_variable(script, *args++); + s32 temp_s0_3 = evt_get_variable(script, *args++); + s32 duration = evt_get_variable(script, *args++); + + FuzzyThread* thread = &N(ThreadData); //needed to match + N(ThreadData).targetAngle = temp_s0_3 / NUM_THREAD_SEGMENTS; + N(ThreadData).targetLength = (f32)goal / NUM_THREAD_SEGMENTS; + N(ThreadData).duration = duration; + N(ThreadData).time = 0.0f; + + if (0.0f < N(ThreadData).duration) { + N(ThreadData).lengthStep = (N(ThreadData).targetLength - N(ThreadData).currentLength) / N(ThreadData).duration; + N(ThreadData).angleStep = (N(ThreadData).targetAngle - N(ThreadData).currentAngle) / N(ThreadData).duration; + } + + if (N(ThreadData).duration < 0.0f) { + N(ThreadData).currentLength = N(ThreadData).targetLength; + N(ThreadData).currentAngle = N(ThreadData).targetAngle; + N(ThreadData).duration = 0.0f; + } + + return ApiStatus_DONE2; +} + +API_CALLABLE(N(InitThreadData)) { + N(ThreadData).anchorPos.x = 0; + N(ThreadData).anchorPos.y = 0; + N(ThreadData).anchorPos.z = 0; + N(ThreadData).currentLength = 0; + N(ThreadData).targetLength = 0; + N(ThreadData).overshootVel = 0; + N(ThreadData).targetAngle = 0; + N(ThreadData).currentAngle = 0; + N(ThreadData).overshootAngleVel = 0; + N(ThreadData).frontNpc = NULL; + N(ThreadData).backNpc = NULL; + N(ThreadData).time = 0; + N(ThreadData).duration = 0; + N(ThreadData).lengthStep = 0; + N(ThreadData).angleStep = 0; + return ApiStatus_DONE2; +} + +API_CALLABLE(N(AttachThreadFrontNpc)) { + Bytecode* args = script->ptrReadPos; + N(ThreadData).frontNpc = (Npc*) evt_get_variable(script, *args++); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(AttachThreadBackNpc)) { + Bytecode* args = script->ptrReadPos; + N(ThreadData).backNpc = (Npc*) evt_get_variable(script, *args++); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(GetTreeHidingSpotPos)) { + Bytecode *args = script->ptrReadPos; + s32 treeIdx = evt_get_variable(script, *args++) * 3; + s32 outVarX = *args++; + s32 outVarY = *args++; + s32 outVarZ = *args++; + + evt_set_variable(script, outVarX, N(TreeHidingSpotPositions)[treeIdx + 0]); + evt_set_variable(script, outVarY, N(TreeHidingSpotPositions)[treeIdx + 1]); + evt_set_variable(script, outVarZ, N(TreeHidingSpotPositions)[treeIdx + 2]); + return ApiStatus_DONE2; +} + +// get pattern from counter: 0, 1, 2, 3, 2, 1, (begin repeat) 0, 1, 2, 3, ... +API_CALLABLE(N(EVS_ConvertTreeIndex)) { + Bytecode* args = script->ptrReadPos; + s32 treeIdx = evt_get_variable(script, *args++); + Bytecode outVar = *args++; + + treeIdx %= 6; + + if (treeIdx < 4) { + evt_set_variable(script, outVar, treeIdx); + } else { + evt_set_variable(script, outVar, 6 - treeIdx); + } + + return ApiStatus_DONE2; +} + +// args: tree index, animation type (0 = jump to, 1 = hit) +API_CALLABLE(N(AnimateTreeBranch)) { + Bytecode* args = script->ptrReadPos; + s32 treeIdx = evt_get_variable(script, *args++); + s32 temp_s2 = evt_get_variable(script, *args++); + Evt* animScript; + EvtScript* animSrc; + + // get pattern: 0, 1, 2, 3, 2, 1, (begin repeat) 0, 1, 2, 3, ... + treeIdx %= 6; + + if (treeIdx >= 4) { + treeIdx = 6 - treeIdx; + } + + if (does_script_exist(script->varTable[treeIdx + 6])) { + kill_script_by_ID(script->varTable[treeIdx + 6]); + } + + animSrc = &N(EVS_AnimBranch_JumpTo); + + switch (temp_s2) { + case 0: + animSrc = &N(EVS_AnimBranch_JumpTo); + break; + case 1: + animSrc = &N(EVS_AnimBranch_Hit); + break; + } + + animScript = start_script(animSrc, EVT_PRIORITY_1, 0); + script->varTable[treeIdx + 6] = animScript->id; + + switch (treeIdx) { + case 0: + animScript->varTable[0] = MODEL_o177; + break; + case 1: + animScript->varTable[0] = MODEL_o178; + break; + case 2: + animScript->varTable[0] = MODEL_o181; + break; + case 3: + animScript->varTable[0] = MODEL_o180; + break; + } + + return ApiStatus_DONE2; +} + +void N(build_gfx_thread)(void) { + f32 x = N(ThreadData).anchorPos.x; + f32 y = N(ThreadData).anchorPos.y; + f32 z = N(ThreadData).anchorPos.z; + s32 i; + f32 segAngle, segLength, fs3; + + N(ThreadData).overshootVel += 0.2; + if (N(ThreadData).duration != 0.0f) { + // thread extension/retraction + N(ThreadData).currentLength += N(ThreadData).lengthStep; + if (N(ThreadData).currentLength > N(ThreadData).targetLength) { + N(ThreadData).overshootVel += (N(ThreadData).targetLength - N(ThreadData).currentLength) * 0.5f; + } + N(ThreadData).time += 1.0f; + N(ThreadData).overshootAngleVel = (N(ThreadData).overshootAngleVel + (N(ThreadData).targetAngle - N(ThreadData).currentAngle) / 10.0f) * 0.92; + N(ThreadData).currentAngle += N(ThreadData).angleStep; + if (N(ThreadData).duration <= N(ThreadData).time) { + N(ThreadData).duration = 0.0f; + } + } else { + // thread overshoot + N(ThreadData).currentLength += N(ThreadData).overshootVel; + if (N(ThreadData).targetLength < N(ThreadData).currentLength) { + N(ThreadData).overshootVel += (N(ThreadData).targetLength - N(ThreadData).currentLength) * 0.5f; + } + N(ThreadData).overshootAngleVel = (N(ThreadData).overshootAngleVel + (N(ThreadData).targetAngle - N(ThreadData).currentAngle) / 10.0f) * 0.92; + N(ThreadData).currentAngle += N(ThreadData).overshootAngleVel; + } + N(ThreadData).overshootVel *= 0.5; + + gSPDisplayList(gMasterGfxPos++, N(ThreadGfx)); + guTranslate(&gDisplayContext->matrixStack[gMatrixListPos], N(ThreadData).anchorPos.x, N(ThreadData).anchorPos.y, N(ThreadData).anchorPos.z); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + segAngle = N(ThreadData).currentAngle; + segLength = -N(ThreadData).currentLength; + x += -segLength * sin_rad(N(ThreadData).currentAngle * 0 / 180.0f * PI); + y += segLength * cos_rad(N(ThreadData).currentAngle * 0 / 180.0f * PI); + + guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, segAngle, 1.0f, 0.0f, segLength, 0.0f); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + + for (i = 1; i < NUM_THREAD_SEGMENTS; i++) { + segAngle = N(ThreadData).currentAngle; + segLength = -N(ThreadData).currentLength; + x += -segLength * sin_rad(N(ThreadData).currentAngle * i / 180.0f * PI); + y += segLength * cos_rad(N(ThreadData).currentAngle * i / 180.0f * PI); + gSPVertex(gMasterGfxPos++, N(ThreadSegmentVertices), 2, 0); + guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, segAngle, 1.0f, 0.0f, segLength, 0.0f); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPVertex(gMasterGfxPos++, N(ThreadSegmentVertices), 2, 2); + gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 2, 3, 1, 0); + } + + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + gDPPipeSync(gMasterGfxPos++); + + N(ThreadData).endPoint.x = x; + N(ThreadData).endPoint.y = y; + N(ThreadData).endPoint.z = z; + + if (N(ThreadData).frontNpc != NULL) { + N(ThreadData).frontNpc->pos.x = x; + N(ThreadData).frontNpc->pos.y = y - 4.0f; + N(ThreadData).frontNpc->pos.z = z + 6.0f; + } + + if (N(ThreadData).backNpc != NULL) { + N(ThreadData).backNpc->pos.x = x; + N(ThreadData).backNpc->pos.y = y - 4.0f; + N(ThreadData).backNpc->pos.z = z + 3.0f; + } +} + +EvtScript N(EVS_BossJumpTo) = { + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, LVarD) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_ShuffleFuzzyPositions) = { + EVT_CALL(PlayerFaceNpc, NPC_BossFuzzy, FALSE) + EVT_CALL(ShowMessageAtScreenPos, MSG_CH1_00BE, 160, 40) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(SetCamType, CAM_DEFAULT, 1, FALSE) + EVT_CALL(SetCamDistance, CAM_DEFAULT, -597) + EVT_CALL(SetCamPitch, CAM_DEFAULT, 10, -11) + EVT_CALL(SetCamPosA, CAM_DEFAULT, 0, 707) + EVT_CALL(SetCamPosB, CAM_DEFAULT, 0, 0) + EVT_CALL(SetCamPosC, CAM_DEFAULT, 0, 0) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 90, 0, 228) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_WAIT(60) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002A) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, 3) + EVT_CALL(SetNpcJumpscale, NPC_KoopersShell, 3) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_01, 3) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_02, 3) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_03, 3) + // get number of jumps + EVT_SWITCH(MV_CorrectCount) + EVT_CASE_EQ(0) + EVT_SET(LVarE, 10) + EVT_CASE_EQ(1) + EVT_SET(LVarE, 9) + EVT_CASE_EQ(2) + EVT_SET(LVarE, 8) + EVT_END_SWITCH + EVT_CALL(RandInt, 3, LVar0) + EVT_ADD(LVarE, LVar0) + EVT_SET(LVar6, 0) + EVT_SET(LVar7, 0) + EVT_SET(LVar8, 0) + EVT_SET(LVar9, 0) + EVT_SET(LVarF, MV_CorrectTreeIndex) + // the shuffle + EVT_LOOP(LVarE) + EVT_SET(LVarA, MV_CorrectTreeIndex) + EVT_CALL(N(EVS_ConvertTreeIndex), LVarF, MV_CorrectTreeIndex) + EVT_SWITCH(LVarF) + EVT_CASE_EQ(0) + EVT_SET(LVarB, TREE_2) + EVT_SET(LVarC, TREE_3) + EVT_CASE_EQ(1) + EVT_IF_EQ(LVarA, 2) + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_3) + EVT_ELSE + EVT_SET(LVarB, TREE_2) + EVT_SET(LVarC, TREE_3) + EVT_END_IF + EVT_CASE_EQ(2) + EVT_IF_EQ(LVarA, 3) + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_1) + EVT_ELSE + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_3) + EVT_END_IF + EVT_CASE_EQ(3) + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_1) + EVT_CASE_EQ(4) + EVT_IF_EQ(LVarA, 1) + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_3) + EVT_ELSE + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_1) + EVT_END_IF + EVT_CASE_EQ(5) + EVT_IF_EQ(LVarA, 0) + EVT_SET(LVarB, TREE_2) + EVT_SET(LVarC, TREE_3) + EVT_ELSE + EVT_SET(LVarB, TREE_0) + EVT_SET(LVarC, TREE_3) + EVT_END_IF + EVT_END_SWITCH + EVT_CALL(RandInt, 1, LVar0) + EVT_IF_EQ(LVar0, 0) + EVT_ADD(LVarF, -1) + EVT_ELSE + EVT_ADD(LVarF, 1) + EVT_END_IF + EVT_IF_GE(LVarF, 6) + EVT_SET(LVarF, 0) + EVT_END_IF + EVT_IF_LT(LVarF, 0) + EVT_SET(LVarF, 5) + EVT_END_IF + // get time for each jump + EVT_SWITCH(MV_CorrectCount) + EVT_CASE_EQ(0) + EVT_SET(LVarD, 15) + EVT_CASE_EQ(1) + EVT_SET(LVarD, 10) + EVT_CASE_EQ(2) + EVT_SET(LVarD, 6) + EVT_END_SWITCH + EVT_SET(LVar0, ANIM_Fuzzy_Jump) + EVT_CALL(RandInt, 2, LVar1) + EVT_ADD(LVar0, LVar1) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, LVar0) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_01, LVar0) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_02, LVar0) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_03, LVar0) + EVT_CALL(PlaySound, SOUND_B0000017) + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), MV_CorrectTreeIndex, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_IF_NE(MV_CorrectTreeIndex, LVarA) + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), MV_CorrectTreeIndex, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_01, LVar0, LVar1, LVar2) + EVT_CALL(N(GetTreeHidingSpotPos), LVarA, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_SET(LocalFlag(0), FALSE) + EVT_IF_EQ(LVarB, 0) + EVT_IF_EQ(LVarC, 3) + EVT_SET(LocalFlag(0), TRUE) + EVT_END_IF + EVT_END_IF + EVT_IF_EQ(LocalFlag(0), FALSE) + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVarB, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, LVar0, LVar1, LVar2) + EVT_CALL(N(GetTreeHidingSpotPos), LVarC, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVarC, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, LVar0, LVar1, LVar2) + EVT_CALL(N(GetTreeHidingSpotPos), LVarB, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_ELSE + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVarB, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, LVar0, LVar1, LVar2) + EVT_CALL(N(GetTreeHidingSpotPos), LVarB, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVarC, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, LVar0, LVar1, LVar2) + EVT_CALL(N(GetTreeHidingSpotPos), LVarC, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_END_IF + EVT_ELSE + EVT_THREAD + EVT_ADD(LVarA, 1) + EVT_MOD(LVarA, 4) + EVT_CALL(N(GetTreeHidingSpotPos), LVarA, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_01, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_THREAD + EVT_ADD(LVarA, 2) + EVT_MOD(LVarA, 4) + EVT_CALL(N(GetTreeHidingSpotPos), LVarA, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_THREAD + EVT_ADD(LVarA, 3) + EVT_MOD(LVarA, 4) + EVT_CALL(N(GetTreeHidingSpotPos), LVarA, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVar0, LVar1, LVar2, LVarD) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT(2) + EVT_CALL(N(GetTreeHidingSpotPos), MV_CorrectTreeIndex, LVar0, LVar1, LVar2) + EVT_ADD(LVar2, 2) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVar0, LVar1, LVar2, LVarD) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Still) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_01, ANIM_Fuzzy_Still) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_02, ANIM_Fuzzy_Still) + EVT_CALL(SetNpcAnimation, NPC_Fuzzy_03, ANIM_Fuzzy_Still) + EVT_CALL(N(AnimateTreeBranch), TREE_0, 0) + EVT_CALL(N(AnimateTreeBranch), TREE_1, 0) + EVT_CALL(N(AnimateTreeBranch), TREE_2, 0) + EVT_CALL(N(AnimateTreeBranch), TREE_3, 0) + EVT_CALL(PlaySound, SOUND_SHAKE_TREE) + EVT_END_LOOP + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_WAIT(30) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_FuzzyBoss_TauntFromTree) = { + EVT_SET(AF_NOK04_PlayingGame, TRUE) + EVT_IF_EQ(LocalFlag(0), FALSE) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_THREAD + EVT_WAIT(20) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_END_THREAD + EVT_END_IF + EVT_CALL(N(AnimateTreeBranch), 2, 0) + EVT_CALL(PlaySound, SOUND_SHAKE_TREE) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim0B) + EVT_CALL(N(GetTreeHidingSpotPos), 2, LVar0, LVar1, LVar2) + EVT_CALL(N(SetThreadAnchorPos), LVar0, LVar1, LVar2) + EVT_CALL(N(SetThreadTargetLengthAngle), 50, 0, 0) + EVT_CALL(GetNpcPointer, NPC_BossFuzzy, LVar0) + EVT_CALL(GetNpcPointer, NPC_KoopersShell, LVar1) + EVT_CALL(N(AttachThreadBackNpc), LVar0) + EVT_CALL(N(AttachThreadFrontNpc), LVar1) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) + EVT_IF_LT(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_HID_IN_TREE) + EVT_SET(LVar0, MSG_CH1_00BC) + EVT_SET(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_HID_IN_TREE) + EVT_ELSE + EVT_SET(LVar0, MSG_CH1_00BD) + EVT_END_IF + EVT_CALL(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, LVar0) + EVT_CALL(SetMusicTrack, 0, SONG_PLAYROOM, 0, 8) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, 30) + EVT_WAIT(30) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(N(AttachThreadBackNpc), NULL) + EVT_EXEC(N(EVS_Scene_ShuffleFuzzyPositions)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_HideInTree) = { + EVT_SWITCH(GB_StoryProgress) + EVT_CASE_EQ(STORY_CH1_FUZZY_THIEF_HID_IN_TREE) + EVT_LABEL(0) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_LT(LVar0, 60) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_SET(LocalFlag(0), FALSE) + EVT_EXEC(N(EVS_FuzzyBoss_TauntFromTree)) + EVT_RETURN + EVT_CASE_GE(STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_RETURN + EVT_END_SWITCH + EVT_CALL(DisablePlayerInput, TRUE) + EVT_THREAD + EVT_WAIT(17) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(SetPlayerSpeed, 4) + EVT_CALL(PlayerMoveTo, -300, 325, 0) + EVT_END_THREAD + EVT_WAIT(5) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, EVT_FLOAT(0.703)) + EVT_CALL(SetNpcJumpscale, NPC_KoopersShell, EVT_FLOAT(0.703)) + EVT_THREAD + EVT_WAIT(20) + EVT_SET(LVarA, 58) + EVT_SET(LVarB, 0) + EVT_SET(LVarC, 227) + EVT_SET(LVarD, 80) + EVT_EXEC(N(EVS_MoveCam_TrackBoss)) + EVT_END_THREAD + EVT_SET(LVarA, -260) + EVT_SET(LVarB, 0) + EVT_SET(LVarC, 290) + EVT_SET(LVarD, 20) + EVT_EXEC(N(EVS_BossJumpTo)) + EVT_WAIT(1) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVarA, 0, 293, LVarD) + EVT_SET(LVarA, -180) + EVT_SET(LVarB, 0) + EVT_SET(LVarC, 245) + EVT_SET(LVarD, 15) + EVT_EXEC(N(EVS_BossJumpTo)) + EVT_WAIT(1) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVarA, LVarB, 248, LVarD) + EVT_SET(LVarA, -100) + EVT_SET(LVarB, 0) + EVT_SET(LVarC, 235) + EVT_SET(LVarD, 15) + EVT_EXEC(N(EVS_BossJumpTo)) + EVT_WAIT(1) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVarA, LVarB, 238, LVarD) + EVT_SET(LVarA, 85) + EVT_SET(LVarB, 0) + EVT_SET(LVarC, 217) + EVT_SET(LVarD, 30) + EVT_EXEC(N(EVS_BossJumpTo)) + EVT_WAIT(1) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVarA, LVarB, 220, LVarD) + EVT_CALL(N(GetTreeHidingSpotPos), 2, LVar0, LVar1, LVar2) + EVT_SET(LVarA, LVar0) + EVT_SET(LVarB, LVar1) + EVT_SET(LVarC, LVar3) + EVT_SET(LVarD, 30) + EVT_EXEC(N(EVS_BossJumpTo)) + EVT_WAIT(1) + EVT_ADD(LVarC, 3) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVarA, LVarB, LVarC, LVarD) + EVT_CALL(EnableNpcShadow, NPC_BossFuzzy, FALSE) + EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE) + EVT_CALL(N(AnimateTreeBranch), 2, 0) + EVT_CALL(PlaySound, SOUND_SHAKE_TREE) + EVT_CALL(SetPlayerPos, -152, 0, 235) + EVT_CALL(PlayerMoveTo, 58, 227, 60) + EVT_SET(LocalFlag(0), TRUE) + EVT_EXEC(N(EVS_FuzzyBoss_TauntFromTree)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_WaitForWrongAnswer) = { + EVT_LABEL(0) + EVT_IF_EQ(MV_WrongAnswerBattle, 1) + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_LABEL(1) + EVT_IF_EQ(MV_WrongAnswerBattle, 1) + EVT_WAIT(1) + EVT_GOTO(1) + EVT_END_IF + EVT_END_IF + EVT_WAIT(1) + EVT_GOTO(0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Unused_RandomlyReveal) = { + EVT_CALL(RandInt, 399, LVar4) + EVT_DIV(LVar4, 100) + EVT_LABEL(0) + EVT_CALL(RandInt, 300, LVar5) + EVT_SWITCH(LVar5) + EVT_CASE_LT(100) + EVT_SUB(LVar4, 1) + EVT_CASE_LT(200) + EVT_ADD(LVar4, 1) + EVT_END_SWITCH + EVT_IF_LT(LVar4, 0) + EVT_SET(LVar4, 1) + EVT_END_IF + EVT_IF_GT(LVar4, 3) + EVT_SET(LVar4, 2) + EVT_END_IF + EVT_CALL(N(GetTreeHidingSpotPos), LVar4, LVar0, LVar1, LVar2) + EVT_CALL(RandInt, 10, LVar3) + EVT_ADD(LVar3, 20) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, LVar3) + EVT_GOTO(0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_WrongFuzzy) = { + EVT_CALL(N(InitThreadData)) + EVT_CALL(SetNpcAnimation, NPC_AmbushFuzzy, ANIM_Fuzzy_Anim0B) + EVT_CALL(N(GetTreeHidingSpotPos), MV_LastWrongTreeIndex, LVar0, LVar1, LVar2) + EVT_CALL(N(SetThreadAnchorPos), LVar0, LVar1, LVar2) + EVT_SUB(LVar1, 50) + EVT_CALL(GetNpcPointer, NPC_AmbushFuzzy, LVar3) + EVT_CALL(N(AttachThreadFrontNpc), LVar3) + EVT_CALL(N(AttachThreadBackNpc), NULL) + EVT_CALL(N(SetThreadTargetLengthAngle), LVar1, 0, -1) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, 30) + EVT_WAIT(30) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_SET(MV_WrongAnswerBattle, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_MoveShellUp) = { + EVT_SET(LVar3, LVar0) + EVT_CALL(MakeLerp, LVarB, LVarD, 30, EASING_QUARTIC_IN) + EVT_LABEL(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar3, LVar0, LVar2) + EVT_IF_EQ(LVar1, 1) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_MoveShellDown) = { + EVT_SET(LVar3, LVar0) + EVT_CALL(MakeLerp, LVarB, LVarD, 30, EASING_QUARTIC_IN) + EVT_LABEL(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar3, LVar0, LVar2) + EVT_IF_EQ(LVar1, 1) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcAI_DoNothing) = { + EVT_LABEL(10) + EVT_WAIT(1) + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcAI_StartBossBattle) = { + EVT_IF_EQ(AF_NOK04_BattleStarted, FALSE) + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_SET(AF_NOK04_BattleStarted, TRUE) + EVT_END_IF + EVT_LABEL(10) + EVT_WAIT(1) + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_FuzzyBoss) = { + EVT_CALL(GetBattleOutcome, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(OUTCOME_PLAYER_WON) + EVT_SET(AF_NOK04_BattleDone, TRUE) + EVT_SET(AF_NOK04_CamPanDone, FALSE) + EVT_LABEL(10) + EVT_IF_EQ(AF_NOK04_CamPanDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(10) + EVT_END_IF + EVT_CALL(BindNpcAI, NPC_BossFuzzy, EVT_PTR(N(EVS_NpcAI_DoNothing))) + EVT_CASE_EQ(OUTCOME_PLAYER_LOST) + EVT_CASE_EQ(OUTCOME_PLAYER_FLED) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +s32 N(ShellChoiceDone) = FALSE; + +API_CALLABLE(N(AwaitShellChoice)) { + if (isInitialCall) { + N(ShellChoiceDone) = FALSE; + } + + if (N(ShellChoiceDone)) { + return ApiStatus_DONE2; + } else { + return ApiStatus_BLOCK; + } +} + +API_CALLABLE(N(SetShellChosen)) { + N(ShellChoiceDone) = TRUE; + return ApiStatus_DONE2; +} + +EvtScript N(EVS_ShellPrompt) = { + EVT_SET(LocalFlag(10), FALSE) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_LABEL(0) + EVT_CALL(ShowKeyChoicePopup) + EVT_CALL(CloseChoicePopup) + EVT_IF_NE(LVar0, 25) + EVT_IF_EQ(LocalFlag(10), FALSE) + EVT_SET(LocalFlag(10), TRUE) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_KooperWithoutShell_Talk, ANIM_KooperWithoutShell_Idle, 0, MSG_CH1_00C5) + EVT_ELSE + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_KooperWithoutShell_Talk, ANIM_KooperWithoutShell_Idle, 0, MSG_CH1_00C6) + EVT_END_IF + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(RemoveKeyItemAt, LVar1) + EVT_CALL(N(SetShellChosen)) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +s32 N(ShellList)[] = { + ITEM_KOOPER_SHELL, + ITEM_NONE +}; + +EvtScript N(EVS_ChooseShell) = { + EVT_BIND_PADLOCK(EVT_PTR(N(EVS_ShellPrompt)), TRIGGER_FORCE_ACTIVATE, 0, EVT_PTR(N(ShellList)), 0, 1) + EVT_CALL(N(AwaitShellChoice)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_KooperArrives) = { + EVT_LABEL(0) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_SUB(LVar0, -104) + EVT_SUB(LVar2, 241) + EVT_MUL(LVar0, -101) + EVT_MUL(LVar2, 35) + EVT_ADD(LVar0, LVar2) + EVT_IF_LE(LVar0, 0) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(SetNpcPos, NPC_Kooper, -350, 0, 350) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -220, 0, 270) + EVT_CALL(SetPanTarget, CAM_DEFAULT, -220, 0, 270) + EVT_CALL(GetCamDistance, CAM_DEFAULT, LVarA) + EVT_MULF(LVarA, EVT_FLOAT(0.703125)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, LVarA) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_THREAD + EVT_WAIT(20) + EVT_CALL(PlayerMoveTo, -205, 267, 40) + EVT_CALL(PlayerFaceNpc, NPC_Kooper, FALSE) + EVT_END_THREAD + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_RunAngry) + EVT_CALL(NpcMoveTo, NPC_Kooper, -246, 290, 30) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_IdleAngry) + EVT_WAIT(20) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_KooperWithoutShell_TalkAngry, ANIM_KooperWithoutShell_IdleAngry, 0, MSG_CH1_00C3) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(NpcFaceNpc, NPC_PARTNER, NPC_Kooper, 0) + EVT_CALL(SpeakToNpc, NPC_PARTNER, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 0, NPC_Kooper, MSG_CH1_00C4) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_Idle) + EVT_EXEC_WAIT(N(EVS_ChooseShell)) + EVT_CALL(PlayerMoveTo, -207, 268, 7) + EVT_CALL(PlayerFaceNpc, NPC_Kooper, FALSE) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_60005) + EVT_CALL(SetNpcJumpscale, NPC_KoopersShell, 1) + EVT_THREAD + EVT_LOOP(30) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_ADD(LVar0, -15) + EVT_ADD(LVar1, 8) + EVT_ADD(LVar2, 12) + EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_Idle) + EVT_WAIT(20) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_KooperWithoutShell_Talk, ANIM_KooperWithoutShell_Idle, 0, MSG_CH1_00C7) + EVT_WAIT(10) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_Celebrate) + EVT_WAIT(15) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_Idle) + EVT_CALL(EndSpeech, NPC_Kooper, ANIM_KooperWithoutShell_Talk, ANIM_KooperWithoutShell_Idle, 0) + EVT_CALL(PlayerFaceNpc, NPC_Kooper, FALSE) + EVT_CALL(NpcFacePlayer, NPC_Kooper, 0) + EVT_WAIT(10) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_KooperWithoutShell_Still) + EVT_CALL(EnableNpcBlur, NPC_KoopersShell, TRUE) + EVT_CALL(GetNpcPos, NPC_Kooper, LVar0, LVar1, LVar2) + EVT_ADD(LVar0, 1) + EVT_ADD(LVar2, 1) + EVT_ADD(LVar1, 20) + EVT_SET(LVar3, 1) + EVT_SET(LVar4, 6) + EVT_EXEC(N(EVS_GetIntoShell)) + EVT_CALL(InterpNpcYaw, LVar3, 60, 0) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVar0, LVar1, LVar2, 30) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcSprite, NPC_Kooper, ANIM_WorldKooper_Idle) + EVT_CALL(SetNpcFlagBits, NPC_Kooper, NPC_FLAG_100, FALSE) + EVT_CALL(SetNpcSprite, NPC_Kooper, ANIM_WorldKooper_Still) + EVT_WAIT(4) + EVT_CALL(EnableNpcBlur, NPC_KoopersShell, TRUE) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_WorldKooper_Idle) + EVT_CALL(SetNpcSprite, NPC_Kooper, ANIM_WorldKooper_Celebrate) + EVT_WAIT(30) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_WorldKooper_Idle) + EVT_CALL(SpeakToNpc, NPC_PARTNER, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 0, NPC_Kooper, MSG_CH1_00C8) + EVT_WAIT(20) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_CH1_00C9) + EVT_WAIT(10) + EVT_CALL(PlaySoundAtPlayer, SOUND_263, 0) + EVT_CALL(ShowEmote, NPC_BossFuzzy, EMOTE_QUESTION, -45, 50, FALSE, 0, 0, 0, 0) + EVT_WAIT(10) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_Thinking) + EVT_WAIT(40) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_WAIT(10) + EVT_CALL(SpeakToPlayer, NPC_PARTNER, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 0, MSG_CH1_00CA) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_CH1_00CB) + EVT_WAIT(10) + EVT_CALL(SpeakToNpc, NPC_PARTNER, ANIM_WorldGoombario_Talk, ANIM_WorldGoombario_Idle, 0, NPC_Kooper, MSG_CH1_00CC) + EVT_CALL(EnablePartnerAI) + EVT_CALL(PlayerFaceNpc, NPC_Kooper, FALSE) + EVT_LABEL(10) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_Thinking) + EVT_CALL(ShowChoice, MSG_Choice_000F) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_IF_EQ(LVar0, 1) + EVT_CALL(EndSpeech, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_CH1_00CD) + EVT_GOTO(10) + EVT_ELSE + EVT_CALL(EndSpeech, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0) + EVT_CALL(SpeakToPlayer, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_CH1_00CE) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_WorldKooper_Celebrate) + EVT_WAIT(30) + EVT_CALL(SetNpcAnimation, NPC_Kooper, ANIM_WorldKooper_Idle) + EVT_CALL(EndSpeech, NPC_Kooper, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0) + EVT_SET(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_END_IF + EVT_CALL(N(ChangeNpcToPartner), NPC_Kooper, PARTNER_KOOPER) + EVT_CALL(N(LoadPartyImage)) + EVT_EXEC(N(EVS_PushPartnerSong)) + EVT_WAIT(15) + EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_018A, 160, 40) + EVT_EXEC(N(EVS_PopSong)) + EVT_WAIT(10) + EVT_CALL(EnablePartnerAI) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(AwaitPlayerApproach, -400, 400, 100) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(ShowMessageAtScreenPos, MSG_CH1_00CF, 160, 40) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -100, 0, 225) + EVT_CALL(SetPanTarget, CAM_DEFAULT, -100, 0, 225) + EVT_CALL(SetCamDistance, CAM_DEFAULT, -250) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_WAIT(20) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Walk) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, 63, 0, 212) + EVT_CALL(EnableNpcShadow, NPC_BossFuzzy, TRUE) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, -100, 0, 225, 20) + EVT_SET(AF_NOK04_TauntMsgDone, FALSE) + EVT_SET(AF_NOK04_FleeMsgDone, FALSE) + EVT_SET(AF_NOK04_BattleDone, FALSE) + EVT_THREAD + EVT_CALL(ShowMessageAtScreenPos, MSG_CH1_00D0, 160, 40) + EVT_SET(AF_NOK04_TauntMsgDone, TRUE) + EVT_END_THREAD + EVT_CALL(GetNpcPos, NPC_BossFuzzy, LVarA, LVarB, LVarC) + EVT_LABEL(30) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 12) + EVT_IF_EQ(AF_NOK04_TauntMsgDone, FALSE) + EVT_GOTO(30) + EVT_END_IF + EVT_THREAD + EVT_WAIT(27) + EVT_CALL(BindNpcDefeat, NPC_BossFuzzy, EVT_PTR(N(EVS_NpcDefeat_FuzzyBoss))) + EVT_CALL(BindNpcAI, NPC_BossFuzzy, EVT_PTR(N(EVS_NpcAI_StartBossBattle))) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, -212, 0, 237, 15) + EVT_CALL(GetPlayerPos, LVarA, LVarB, LVarC) + EVT_ADD(LVarB, 37) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 20) + EVT_WAIT(2) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_80012) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 15) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_LABEL(21) + EVT_IF_EQ(AF_NOK04_BattleDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(21) + EVT_END_IF + EVT_CALL(SetNpcPos, NPC_BossFuzzy, -255, 0, 287) + EVT_CALL(GetNpcPos, NPC_BossFuzzy, LVarA, LVarB, LVarC) + EVT_LABEL(31) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 15) + EVT_IF_EQ(AF_NOK04_FleeMsgDone, FALSE) + EVT_GOTO(31) + EVT_END_IF + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 15) + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 20) + EVT_CALL(EnableNpcShadow, NPC_BossFuzzy, FALSE) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -260, 0, 284) + EVT_CALL(SetPanTarget, CAM_DEFAULT, -260, 0, 284) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 2) + EVT_THREAD + EVT_WAIT(5) + EVT_CALL(SetNpcPos, NPC_Fuzzy_01, 63, 0, 212) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_01, TRUE) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_01, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, -100, 0, 225, 10) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, -197, 0, 227, 20) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, -233, 0, 285, 10) + EVT_LABEL(22) + EVT_IF_EQ(AF_NOK04_BattleDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(22) + EVT_END_IF + EVT_CALL(SetNpcPos, NPC_Fuzzy_01, -210, 0, 244) + EVT_CALL(GetNpcPos, NPC_Fuzzy_01, LVarA, LVarB, LVarC) + EVT_LABEL(32) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_01, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, LVarA, LVarB, LVarC, 12) + EVT_IF_EQ(AF_NOK04_FleeMsgDone, FALSE) + EVT_GOTO(32) + EVT_END_IF + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, LVarA, LVarB, LVarC, 10) + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_01, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_01, LVarA, LVarB, LVarC, 20) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_01, FALSE) + EVT_CALL(SetNpcPos, NPC_Fuzzy_01, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(7) + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, 63, 0, 212) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_02, TRUE) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_02, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, -122, 0, 219, 20) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, -177, 0, 242, 10) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, -213, 0, 300, 15) + EVT_LABEL(23) + EVT_IF_EQ(AF_NOK04_BattleDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(23) + EVT_END_IF + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, -210, 0, 266) + EVT_CALL(GetNpcPos, NPC_Fuzzy_02, LVarA, LVarB, LVarC) + EVT_WAIT(2) + EVT_LABEL(33) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_02, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVarA, LVarB, LVarC, 12) + EVT_IF_EQ(AF_NOK04_FleeMsgDone, FALSE) + EVT_GOTO(33) + EVT_END_IF + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVarA, LVarB, LVarC, 20) + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_02, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_02, LVarA, LVarB, LVarC, 15) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_02, FALSE) + EVT_CALL(SetNpcPos, NPC_Fuzzy_02, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(8) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, 63, 0, 212) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, TRUE) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_03, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, -100, 0, 269, 20) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, -217, 0, 212, 10) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, -253, 0, 270, 10) + EVT_LABEL(24) + EVT_IF_EQ(AF_NOK04_BattleDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(24) + EVT_END_IF + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, -183, 0, 257) + EVT_CALL(GetNpcPos, NPC_Fuzzy_03, LVarA, LVarB, LVarC) + EVT_WAIT(5) + EVT_LABEL(34) + EVT_CALL(SetNpcJumpscale, NPC_Fuzzy_03, EVT_FLOAT(2.0)) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVarA, LVarB, LVarC, 12) + EVT_IF_EQ(AF_NOK04_FleeMsgDone, FALSE) + EVT_GOTO(34) + EVT_END_IF + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVarA, LVarB, LVarC, 15) + EVT_ADD(LVarA, 70) + EVT_ADD(LVarC, -30) + EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVarA, LVarB, LVarC, 20) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE) + EVT_CALL(SetNpcPos, NPC_Fuzzy_03, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_LABEL(40) + EVT_IF_EQ(AF_NOK04_BattleDone, FALSE) + EVT_WAIT(1) + EVT_GOTO(40) + EVT_END_IF + EVT_CALL(SetPlayerPos, -305, 0, 329) + EVT_CALL(InterpPlayerYaw, 50, 0) + EVT_CALL(SetNpcPos, NPC_PARTNER, -335, 0, 355) + EVT_CALL(InterpNpcYaw, NPC_PARTNER, 50, 0) + EVT_CALL(ShowMessageAtScreenPos, MSG_CH1_00D1, 160, 40) + EVT_SET(AF_NOK04_FleeMsgDone, TRUE) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -260, 0, 284) + EVT_CALL(SetPanTarget, CAM_DEFAULT, -260, 0, 284) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_WAIT(15) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_SET(AF_NOK04_CamPanDone, TRUE) + EVT_WAIT(30) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_HitTree_Correct) = { + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVar0, LVar0, LVar1, LVar2) + EVT_CALL(GetPlayerPos, LVarA, LVarB, LVarC) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVarA, LVarB, LVarC) + EVT_ADD(LVarA, LVar0) + EVT_ADD(LVarC, LVar2) + EVT_DIV(LVarA, 2) + EVT_DIV(LVarC, 2) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVarA, LVarB, LVarC) + EVT_CALL(SetCamPitch, CAM_DEFAULT, 15, -11) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_END_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVar0, LVar0, LVar1, LVar2) + EVT_CALL(GetNpcPointer, NPC_BossFuzzy, LVarE) + EVT_CALL(GetNpcPointer, NPC_KoopersShell, LVarF) + EVT_SET(LVarA, LVar0) + EVT_SET(LVarB, LVar1) + EVT_SET(LVarC, LVar2) + EVT_SWITCH(MV_CorrectCount) + EVT_CASE_EQ(0) + EVT_SET(LVar4, LVarC) + EVT_SUB(LVar4, 4) + EVT_CALL(N(SetThreadAnchorPos), LVarA, LVarB, LVar4) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) + EVT_SET(LVar3, LVarB) + EVT_DIV(LVar3, 2) + EVT_SET(LVarD, LVarB) + EVT_SUB(LVarD, LVar3) + EVT_EXEC(N(EVS_MoveShellDown)) + EVT_WAIT(1) + EVT_WAIT(30) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(N(AttachThreadBackNpc), NULL) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, -1) + EVT_CALL(N(SetThreadTargetLengthAngle), LVar3, 0, -1) + EVT_WAIT(1) + EVT_CALL(N(AttachThreadFrontNpc), LVarF) + EVT_WAIT(20) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Hurt) + EVT_CALL(PlayerFaceNpc, NPC_BossFuzzy, FALSE) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, 0) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarD, LVarC, 30) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim09) + EVT_SET(LVar9, LVarC) + EVT_CALL(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, MSG_CH1_00BF) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, 30) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim0B) + EVT_SET(LVarC, LVar9) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 30) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_ADD(MV_CorrectCount, 1) + EVT_EXEC(N(EVS_Scene_ShuffleFuzzyPositions)) + EVT_RETURN + EVT_CASE_EQ(1) + EVT_SET(LVar4, LVarC) + EVT_SUB(LVar4, 4) + EVT_CALL(N(SetThreadAnchorPos), LVarA, LVarB, LVar4) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) + EVT_SET(LVar3, LVarB) + EVT_MUL(LVar3, 2) + EVT_DIV(LVar3, 3) + EVT_SET(LVarD, LVarB) + EVT_SUB(LVarD, LVar3) + EVT_EXEC(N(EVS_MoveShellUp)) + EVT_WAIT(1) + EVT_WAIT(30) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(N(AttachThreadBackNpc), NULL) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, -1) + EVT_CALL(N(SetThreadTargetLengthAngle), LVar3, 0, -1) + EVT_WAIT(1) + EVT_CALL(N(AttachThreadFrontNpc), LVarF) + EVT_WAIT(20) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Hurt) + EVT_CALL(PlayerFaceNpc, NPC_BossFuzzy, FALSE) + EVT_CALL(SetNpcJumpscale, NPC_BossFuzzy, 0) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarD, LVarC, 30) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim09) + EVT_SET(LVar9, LVarC) + EVT_CALL(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, MSG_CH1_00C0) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, 30) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim0B) + EVT_SET(LVarC, LVar9) + EVT_CALL(PlaySoundAtNpc, NPC_BossFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_BossFuzzy, LVarA, LVarB, LVarC, 30) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_ADD(MV_CorrectCount, 1) + EVT_EXEC(N(EVS_Scene_ShuffleFuzzyPositions)) + EVT_RETURN + EVT_CASE_EQ(2) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Hurt) + EVT_CALL(PlayerFaceNpc, NPC_BossFuzzy, FALSE) + EVT_CALL(N(SetThreadAnchorPos), LVarA, LVarB, LVarC) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, -1) + EVT_SET(LVar0, LVarB) + EVT_SUB(LVar0, 50) + EVT_CALL(N(SetThreadTargetLengthAngle), LVar0, 0, 0) + EVT_CALL(N(AttachThreadFrontNpc), LVarF) + EVT_CALL(N(AttachThreadBackNpc), LVarE) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, TRUE) + EVT_WAIT(20) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim09) + EVT_CALL(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, MSG_CH1_00C1) + EVT_WAIT(10) + EVT_CALL(N(AttachThreadFrontNpc), NULL) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, 40) + EVT_CALL(SetNpcJumpscale, NPC_KoopersShell, EVT_FLOAT(0.6)) + EVT_CALL(NpcJump0, NPC_KoopersShell, LVar0, LVar1, LVar2, 10) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10024) + EVT_THREAD + EVT_WAIT(4) + EVT_CALL(GetPlayerPos, LVar3, LVar4, LVar5) + EVT_ADD(LVar4, 50) + EVT_ADD(LVar5, 2) + EVT_ADD(LVar3, 8) + EVT_PLAY_EFFECT(EFFECT_SPARKLES, 3, LVar3, LVar4, LVar5, 20) + EVT_ADD(LVar3, -16) + EVT_PLAY_EFFECT(EFFECT_SPARKLES, 3, LVar3, LVar4, LVar5, 20) + EVT_END_THREAD + EVT_CALL(PlaySound, SOUND_D2) + EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_GotKooperShell, 160, 40) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_CALL(AddKeyItem, ITEM_KOOPER_SHELL) + EVT_WAIT(10) + EVT_CALL(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, MSG_CH1_00C2) + EVT_CALL(SetNpcAnimation, NPC_BossFuzzy, ANIM_Fuzzy_Anim0B) + EVT_CALL(N(SetThreadTargetLengthAngle), 0, 0, 20) + EVT_WAIT(20) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_CALL(N(AttachThreadBackNpc), 0) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_CALL(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_SET(AF_NOK04_PlayingGame, FALSE) + EVT_EXEC(N(EVS_Scene_KooperArrives)) + EVT_END_SWITCH + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_HitTree_Wrong) = { + EVT_THREAD + EVT_CALL(N(GetTreeHidingSpotPos), LVar0, LVar0, LVar1, LVar2) + EVT_CALL(GetPlayerPos, LVarA, LVarB, LVarC) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVarA, LVarB, LVarC) + EVT_ADD(LVarA, LVar0) + EVT_ADD(LVarC, LVar2) + EVT_DIV(LVarA, 2) + EVT_DIV(LVarC, 2) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVarA, LVarB, LVarC) + EVT_CALL(SetCamPitch, CAM_DEFAULT, 15, -11) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, 3) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_END_THREAD + EVT_WAIT(15) + EVT_SET(MV_LastWrongTreeIndex, LVar0) + EVT_CALL(N(GetTreeHidingSpotPos), MV_LastWrongTreeIndex, LVar0, LVar1, LVar2) + EVT_CALL(GetNpcPointer, NPC_KoopersShell, LVarF) + EVT_SET(LVarA, LVar0) + EVT_SET(LVarB, LVar1) + EVT_SET(LVarC, LVar2) + EVT_CALL(RandInt, 999, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_LT(200) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(MakeItemEntity, ITEM_HEART, LVar0, 200, LVar2, ITEM_SPAWN_MODE_FALL_SPAWN_ALWAYS, 0) + EVT_WAIT(30) + EVT_CASE_LT(400) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(MakeItemEntity, ITEM_COIN, LVar0, 200, LVar2, ITEM_SPAWN_MODE_FALL_SPAWN_ALWAYS, 0) + EVT_WAIT(30) + EVT_CASE_LT(1000) + EVT_CALL(SetNpcAnimation, NPC_AmbushFuzzy, ANIM_Fuzzy_Anim06) + EVT_CALL(SetNpcJumpscale, NPC_AmbushFuzzy, 1) + EVT_CALL(SetNpcPos, NPC_AmbushFuzzy, LVarA, LVarB, LVarC) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_ADD(LVar2, 10) + EVT_ADD(LVar1, 10) + EVT_CALL(PlaySoundAtNpc, NPC_AmbushFuzzy, SOUND_B0000017, 0) + EVT_CALL(NpcJump0, NPC_AmbushFuzzy, LVar0, LVar1, LVar2, 20) + EVT_SET(MV_WrongAnswerBattle, 1) + EVT_END_SWITCH + EVT_LABEL(0) + EVT_IF_EQ(MV_WrongAnswerBattle, 1) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT(20) + EVT_EXEC(N(EVS_Scene_ShuffleFuzzyPositions)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_HitTree) = { + EVT_CALL(N(AnimateTreeBranch), LVar0, 1) + EVT_CALL(PlaySound, SOUND_SHAKE_TREE) + EVT_IF_EQ(AF_NOK04_PlayingGame, FALSE) + EVT_RETURN + EVT_END_IF + EVT_CALL(DisablePlayerInput, TRUE) + EVT_THREAD + EVT_WAIT(20) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_END_THREAD + EVT_IF_EQ(LVar0, MV_CorrectTreeIndex) + EVT_THREAD + EVT_WAIT(15) + EVT_CALL(PlaySound, SOUND_21C) + EVT_END_THREAD + EVT_EXEC_WAIT(N(EVS_HitTree_Correct)) + EVT_ELSE + EVT_THREAD + EVT_WAIT(15) + EVT_CALL(PlaySound, SOUND_MENU_ERROR) + EVT_END_THREAD + EVT_EXEC_WAIT(N(EVS_HitTree_Wrong)) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Kooper) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_SetupMinigame) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_Scene_HideInTree))) + EVT_IF_GE(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) + EVT_RETURN + EVT_END_IF + EVT_SET(MV_CorrectCount, 0) + EVT_SET(MV_CorrectTreeIndex, 2) + EVT_SET(MV_LastCorrectTreeIndex, 2) + EVT_CALL(N(InitThreadData)) + EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_0, NULL, EVT_PTR(N(build_gfx_thread))) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, -293, 0, 319) + EVT_CALL(SetNpcPos, NPC_KoopersShell, -293, 0, 322) + EVT_CALL(EnableNpcShadow, NPC_AmbushFuzzy, FALSE) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_01, FALSE) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_02, FALSE) + EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE) + EVT_CALL(SetModelFlags, MODEL_o177, MODEL_FLAG_FLAG_200, FALSE) + EVT_IF_GE(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_HID_IN_TREE) + EVT_CALL(N(GetTreeHidingSpotPos), LVar4, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_BossFuzzy, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar0, LVar1, LVar2) + EVT_CALL(EnableNpcShadow, NPC_BossFuzzy, FALSE) + EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE) + EVT_END_IF + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_KoopersShell) = { + EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE) + EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKooper_StillShellAlt) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_WrongFuzzy) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_WaitForWrongAnswer))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_WrongFuzzy))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Fuzzy_Aux) = { + EVT_CALL(BindNpcIdle, NPC_SELF, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Kooper) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Kooper))) + EVT_IF_GE(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) + EVT_CALL(InterpNpcYaw, NPC_Kooper, 225, 0) + EVT_CALL(SetNpcPos, NPC_Kooper, -275, 0, 305) + EVT_RETURN + EVT_END_IF + EVT_END_IF + EVT_CALL(SetNpcSprite, NPC_Kooper, ANIM_KooperWithoutShell_IdleAngry) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_Minigame)[] = { + { + .id = NPC_KoopersShell, + .settings = &N(NpcSettings_Koopa), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_KoopersShell), + .drops = NPC_NO_DROPS, + .animations = KOOPER_ANIMS, + }, + { + .id = NPC_AmbushFuzzy, + .settings = &N(NpcSettings_Fuzzy), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_WrongFuzzy), + .drops = NPC_NO_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, + }, + { + .id = NPC_Fuzzy_01, + .settings = &N(NpcSettings_Fuzzy), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Fuzzy_Aux), + .drops = NPC_NO_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, + }, + { + .id = NPC_Fuzzy_02, + .settings = &N(NpcSettings_Fuzzy), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Fuzzy_Aux), + .drops = NPC_NO_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, + }, + { + .id = NPC_Fuzzy_03, + .settings = &N(NpcSettings_Fuzzy), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Fuzzy_Aux), + .drops = NPC_NO_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, + }, + { + .id = NPC_Kooper, + .settings = &N(NpcSettings_Koopa), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Kooper), + .drops = NPC_NO_DROPS, + .animations = KOOPER_ANIMS, + }, +}; + +StaticNpc N(NpcData_Miniboss) = { + .id = NPC_BossFuzzy, + .settings = &N(NpcSettings_Fuzzy), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 0, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_SetupMinigame), + .drops = NPC_NO_DROPS, + .territory = { + .wander = { + .isFlying = FALSE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .wanderShape = SHAPE_CYLINDER, + .centerPos = { 0, 0, 0 }, + .wanderSize = { 0 }, + .detectShape = SHAPE_CYLINDER, + .detectPos = { 0, 0, 0 }, + .detectSize = { 0 }, + } + }, + .animations = FUZZY_ANIMS, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_Minigame), BTL_NOK_FORMATION_16, BTL_NOK_STAGE_03), + NPC_GROUP(N(NpcData_Miniboss), BTL_NOK_FORMATION_17, BTL_NOK_STAGE_03), + {} +}; diff --git a/src/world/area_nok/nok_04/9EEA80.c b/src/world/area_nok/nok_04/nok_04_5_partner.c similarity index 100% rename from src/world/area_nok/nok_04/9EEA80.c rename to src/world/area_nok/nok_04/nok_04_5_partner.c diff --git a/src/world/area_nok/nok_12/nok_12.h b/src/world/area_nok/nok_12/nok_12.h index 9b679c4078..f284bf5d6e 100644 --- a/src/world/area_nok/nok_12/nok_12.h +++ b/src/world/area_nok/nok_12/nok_12.h @@ -21,7 +21,7 @@ enum { }; enum { - MV_Unk_00 = MapVar(0), + MV_SwitchEntityID = MapVar(0), }; #define NAMESPACE nok_12 diff --git a/src/world/area_nok/nok_12/nok_12_2_main.c b/src/world/area_nok/nok_12/nok_12_2_main.c index d9b63a5062..a94bd3a718 100644 --- a/src/world/area_nok/nok_12/nok_12_2_main.c +++ b/src/world/area_nok/nok_12/nok_12_2_main.c @@ -116,7 +116,7 @@ EvtScript N(EVS_EnterMap) = { EvtScript N(EVS_Main) = { EVT_SET(GB_WorldLocation, LOCATION_PLEASANT_PATH) EVT_CALL(SetSpriteShading, SHADING_NONE) - EVT_SET(AF_NOK_01, FALSE) + EVT_SET(AF_NOK12_HitSwitch, FALSE) EVT_SETUP_CAMERA_DEFAULT() EVT_CALL(GetDemoState, LVar0) EVT_IF_EQ(LVar0, DEMO_STATE_NONE) diff --git a/src/world/area_nok/nok_12/nok_12_3_entity.c b/src/world/area_nok/nok_12/nok_12_3_entity.c index 6ab82aab7d..325dbe87c0 100644 --- a/src/world/area_nok/nok_12/nok_12_3_entity.c +++ b/src/world/area_nok/nok_12/nok_12_3_entity.c @@ -38,7 +38,7 @@ EvtScript N(EVS_OnShakeTree_DropSwitch) = { EVT_CALL(MakeLerp, 95, 0, 12, EASING_QUADRATIC_IN) EVT_LABEL(0) EVT_CALL(UpdateLerp) - EVT_CALL(N(SetEntityPosition), MV_Unk_00, -470, LVar0, -150) + EVT_CALL(N(SetEntityPosition), MV_SwitchEntityID, -470, LVar0, -150) EVT_WAIT(1) EVT_IF_EQ(LVar1, 1) EVT_GOTO(0) @@ -59,11 +59,11 @@ EvtScript N(EVS_MakeEntities) = { EVT_IF_LE(GB_StoryProgress, STORY_CH1_KNOCKED_SWITCH_FROM_TREE) EVT_IF_EQ(GB_StoryProgress, STORY_CH1_KNOCKED_SWITCH_FROM_TREE) EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), -470, 0, -150, 0, MAKE_ENTITY_END) - EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_01)) + EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK12_HitSwitch)) EVT_ELSE EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), NPC_DISPOSE_LOCATION, 0, MAKE_ENTITY_END) - EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_01)) - EVT_SET(MV_Unk_00, LVar0) + EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK12_HitSwitch)) + EVT_SET(MV_SwitchEntityID, LVar0) EVT_END_IF EVT_END_IF EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), -560, 60, -120, 0, ITEM_POW_BLOCK, MAKE_ENTITY_END) diff --git a/src/world/area_nok/nok_12/nok_12_4_bridge.c b/src/world/area_nok/nok_12/nok_12_4_bridge.c index dc4aba8cd1..a7e8d67988 100644 --- a/src/world/area_nok/nok_12/nok_12_4_bridge.c +++ b/src/world/area_nok/nok_12/nok_12_4_bridge.c @@ -103,7 +103,7 @@ EvtScript N(EVS_Scene_BuildBridge) = { EvtScript N(EVS_SetupBridge) = { EVT_IF_LT(GB_StoryProgress, STORY_CH1_MADE_FIRST_BRIDGE) - EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK_01, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK12_HitSwitch, 1, 0) EVT_CALL(TranslateGroup, MODEL_hashi, 0, -320, 0) EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o204, COLLIDER_FLAGS_UPPER_MASK) EVT_RETURN diff --git a/src/world/area_nok/nok_14/nok_14_3_entity.c b/src/world/area_nok/nok_14/nok_14_3_entity.c index 8feca9e656..18c1f35b6c 100644 --- a/src/world/area_nok/nok_14/nok_14_3_entity.c +++ b/src/world/area_nok/nok_14/nok_14_3_entity.c @@ -51,7 +51,7 @@ EvtScript N(EVS_MakeEntities) = { EVT_END_IF EVT_IF_EQ(LVar0, 0) EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), 100, 0, -185, 0, MAKE_ENTITY_END) - EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_02)) + EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK14_HitSwitch)) EVT_END_IF EVT_CALL(MakeItemEntity, ITEM_COIN, -655, 75, -35, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK14_Item_CoinA) EVT_CALL(MakeItemEntity, ITEM_COIN, -640, 75, -20, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK14_Item_CoinB) diff --git a/src/world/area_nok/nok_14/nok_14_4_bridge.c b/src/world/area_nok/nok_14/nok_14_4_bridge.c index 9ca4a70530..bcdf7f6f0d 100644 --- a/src/world/area_nok/nok_14/nok_14_4_bridge.c +++ b/src/world/area_nok/nok_14/nok_14_4_bridge.c @@ -132,7 +132,7 @@ EvtScript N(EVS_SetupBridge) = { EVT_SET(LVar0, 0) EVT_END_IF EVT_IF_EQ(LVar0, 0) - EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK_02, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK14_HitSwitch, 1, 0) EVT_CALL(TranslateGroup, MODEL_hashi, 0, -200, 0) EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o255, COLLIDER_FLAGS_UPPER_MASK) EVT_RETURN diff --git a/src/world/area_obk/common/TrafficBoos.inc.c b/src/world/area_obk/common/TrafficBoos.inc.c index 547a390412..7aad366e9d 100644 --- a/src/world/area_obk/common/TrafficBoos.inc.c +++ b/src/world/area_obk/common/TrafficBoos.inc.c @@ -101,7 +101,7 @@ EvtScript N(EVS_NpcIdle_TrafficBoo) = { EVT_LOOP(0) EVT_CALL(N(UpdateTrafficBooMotion)) EVT_CALL(N(UpdateTrafficBooAlpha)) - EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_CALL(SetNpcRenderMode, NPC_SELF, RENDER_MODE_SURFACE_XLU_LAYER1) EVT_WAIT(1) EVT_END_LOOP diff --git a/src/world/area_obk/obk_01/obk_01_5_jump_scare.c b/src/world/area_obk/obk_01/obk_01_5_jump_scare.c index 47bac54847..f8a7f83d9a 100644 --- a/src/world/area_obk/obk_01/obk_01_5_jump_scare.c +++ b/src/world/area_obk/obk_01/obk_01_5_jump_scare.c @@ -32,7 +32,7 @@ EvtScript N(EVS_Scene_JumpScareBoo) = { EVT_SETF(LVar0, EVT_FLOAT(240.0)) EVT_LOOP(20) EVT_SUBF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_JumpScareBoo, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(RemoveNpc, NPC_JumpScareBoo) diff --git a/src/world/area_obk/obk_01/obk_01_6_npc.c b/src/world/area_obk/obk_01/obk_01_6_npc.c index 05c483f9e0..acc0a81ec0 100644 --- a/src/world/area_obk/obk_01/obk_01_6_npc.c +++ b/src/world/area_obk/obk_01/obk_01_6_npc.c @@ -109,7 +109,7 @@ EvtScript N(EVS_NpcAux_TrafficBoo) = { EVT_SET(LVar1, 0) EVT_LOOP(0) EVT_CALL(N(UpdateTrafficBooAlpha)) - EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_RETURN diff --git a/src/world/area_obk/obk_09/obk_09_3_meet_bow.c b/src/world/area_obk/obk_09/obk_09_3_meet_bow.c index 3fb110a7be..26357ad88f 100644 --- a/src/world/area_obk/obk_09/obk_09_3_meet_bow.c +++ b/src/world/area_obk/obk_09/obk_09_3_meet_bow.c @@ -48,8 +48,8 @@ EvtScript N(EVS_Scene_MeetBow) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(20) EVT_ADDF(LVar0, EVT_FLOAT(12.0)) - EVT_CALL(func_802CFD30, 0, 7, LVar0, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_WAIT(40) diff --git a/src/world/area_obk/obk_09/obk_09_4_npc.c b/src/world/area_obk/obk_09/obk_09_4_npc.c index b6f5dc33ea..b8a5ac97fc 100644 --- a/src/world/area_obk/obk_09/obk_09_4_npc.c +++ b/src/world/area_obk/obk_09/obk_09_4_npc.c @@ -108,7 +108,7 @@ EvtScript N(EVS_NpcInit_Skolar) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSkolar_IdleSad) EVT_CALL(SetNpcPos, NPC_SELF, 0, NPC_DISPOSE_POS_Y, -100) EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE) - EVT_CALL(func_802CFD30, -1, 7, 170, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 170, 0, 0, 0) EVT_IF_GE(GB_StoryProgress, STORY_CH3_BOW_JOINED_PARTY) EVT_CALL(RemoveNpc, NPC_SELF) EVT_END_IF diff --git a/src/world/area_osr/osr_03/osr_03_4_starship.c b/src/world/area_osr/osr_03/osr_03_4_starship.c index 31038a8195..741106e220 100644 --- a/src/world/area_osr/osr_03/osr_03_4_starship.c +++ b/src/world/area_osr/osr_03/osr_03_4_starship.c @@ -74,7 +74,7 @@ EvtScript N(EVS_Scene_Starship) = { EVT_END_THREAD EVT_CHILD_THREAD EVT_LOOP(0) - EVT_CALL(func_802D2884, 0, 0, 0) + EVT_CALL(FacePlayerTowardPoint, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_END_CHILD_THREAD diff --git a/src/world/area_pra/common/GlassShimmer.inc.c b/src/world/area_pra/common/GlassShimmer.inc.c index 5423d2810c..bbed7abd05 100644 --- a/src/world/area_pra/common/GlassShimmer.inc.c +++ b/src/world/area_pra/common/GlassShimmer.inc.c @@ -1,7 +1,7 @@ #include "common.h" -// LVar0 wall model ID -// LVar1 door model ID +// LVar0 wall 1 model ID +// LVar1 wall 2 model ID // LVar2 tex panner ID EvtScript N(EVS_GlassShimmer) = { EVT_CALL(SetTexPanner, LVar0, LVar2) diff --git a/src/world/area_pra/pra.h b/src/world/area_pra/pra.h index c809a9e0d6..2834292d3d 100644 --- a/src/world/area_pra/pra.h +++ b/src/world/area_pra/pra.h @@ -21,7 +21,8 @@ enum { }; enum { - AF_PRA33_FlippingWall = AreaFlag(3), + AF_PRA09_HitSwitch = AreaFlag(2), + AF_PRA33_FlippingWall = AreaFlag(3), }; extern MapSettings pra_01_settings; diff --git a/src/world/area_pra/pra_01/pra_01.h b/src/world/area_pra/pra_01/pra_01.h index 7617558607..1d49506865 100644 --- a/src/world/area_pra/pra_01/pra_01.h +++ b/src/world/area_pra/pra_01/pra_01.h @@ -12,7 +12,7 @@ #include "sprite/npc/WorldKalmar.h" enum { - NPC_Kalmar = 0, + NPC_Kalmar = 0, }; #define NAMESPACE pra_01 diff --git a/src/world/area_pra/pra_04/pra_04.h b/src/world/area_pra/pra_04/pra_04.h index 342cf87f08..fb56f2bca2 100644 --- a/src/world/area_pra/pra_04/pra_04.h +++ b/src/world/area_pra/pra_04/pra_04.h @@ -10,7 +10,7 @@ #include "mapfs/pra_04_hit.h" enum { - NPC_Swoopula = 0, + NPC_Swoopula = 0, }; enum { diff --git a/src/world/area_pra/pra_09/D58890.c b/src/world/area_pra/pra_09/D58890.c deleted file mode 100644 index 0596e68511..0000000000 --- a/src/world/area_pra/pra_09/D58890.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_09.h" - -static char* N(exit_str_0) = "pra_03"; -static char* N(exit_str_1) = "pra_11"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_09/D588B0.c b/src/world/area_pra/pra_09/D588B0.c deleted file mode 100644 index 3243fa9afd..0000000000 --- a/src/world/area_pra/pra_09/D588B0.c +++ /dev/null @@ -1,137 +0,0 @@ -#include "pra_09.h" -#include "effects.h" - -#include "../common/Reflection.inc.c" - -#include "world/common/todo/GetNpcCollisionHeight.inc.c" - -#include "world/common/todo/AddPlayerHandsOffset.inc.c" - -extern s32 N(ItemChoice_HasSelectedItem); -extern s32 N(ItemChoice_SelectedItemID); -#include "world/common/todo/ItemChoice_WaitForSelection.inc.c" - -ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - - N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++); - N(ItemChoice_HasSelectedItem) = TRUE; - return ApiStatus_DONE2; -} - -BSS s32 pra_09_80246A20[114]; -BSS s32 D_80246BE8[92]; - -ApiStatus func_802411D8_D59A68(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - pra_09_80246A20[i] = ptr[i]; - } - pra_09_80246A20[i] = 0; - } else { - for (i = 0; i < 112; i++) { - pra_09_80246A20[i] = i + 16; - pra_09_80246A20[112] = 0; - } - } - return ApiStatus_DONE2; -} - -ApiStatus func_80241274_D59B04(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - D_80246BE8[i] = ptr[i]; - } - D_80246BE8[i] = 0; - } else { - for (i = 0; i < 91; i++) { - D_80246BE8[i] = i + 128; - D_80246BE8[91] = 0; - } - } - return ApiStatus_DONE2; -} - -#include "world/common/todo/PlayBigSmokePuff.inc.c" - -ApiStatus func_802413A4_D59C34(Evt* script, s32 isInitialCall) { - EncounterStatus* currentEncounter = &gCurrentEncounter; - Bytecode* args = script->ptrReadPos; - Enemy* enemy = script->owner1.enemy; - s32 var_s1 = evt_get_variable(script, *args++) == 0; - Encounter* encounter; - - if (evt_get_variable(script, *args++) == 0) { - var_s1 += 1; - } - if (evt_get_variable(script, *args++) == 0) { - var_s1 += 1; - } - if (evt_get_variable(script, *args++) == 0) { - var_s1 += 1; - } - - switch (var_s1) { - case 1: - encounter = currentEncounter->encounterList[enemy->encounterIndex]; - encounter->battle = 0x2101; - break; - case 2: - encounter = currentEncounter->encounterList[enemy->encounterIndex]; - encounter->battle = 0x2102; - break; - case 3: - encounter = currentEncounter->encounterList[enemy->encounterIndex]; - encounter->battle = 0x2103; - break; - case 4: - encounter = currentEncounter->encounterList[enemy->encounterIndex]; - encounter->battle = 0x2104; - break; - } - return ApiStatus_DONE2; -} - -ApiStatus func_802414F4_D59D84(Evt* script, s32 isInitialCall) { - Npc* npc = resolve_npc(script, script->varTable[0]); - - if (isInitialCall) { - npc->pos.x = script->varTable[1]; - npc->pos.y = script->varTable[2]; - npc->pos.z = script->varTable[3]; - npc->jumpVelocity = 0.0f; - npc->currentAnim = 0x30011; - npc->jumpScale = 0.8f; - } - npc->rotation.z -= 39.0f; - npc->rotation.x -= 33.0f; - npc->pos.y -= npc->jumpVelocity; - npc->jumpVelocity += npc->jumpScale; - if (npc->pos.y <= 0.0f) { - npc->pos.y = 0.0f; - npc->rotation.z = 0.0f; - npc->rotation.x = 0.0f; - npc->jumpVelocity = 0.0f; - npc->jumpScale = 0.0f; - npc->currentAnim = 0x30003; - return ApiStatus_DONE2; - } - return ApiStatus_BLOCK; -} - -ApiStatus func_802415F8_D59E88(Evt* script, s32 isInitialCall) { - Npc* npc1 = resolve_npc(script, script->varTable[3]); - Npc* npc2 = resolve_npc(script, script->varTable[4]); - - npc1->collisionRadius = npc2->collisionRadius; - npc1->collisionHeight = npc2->collisionHeight; - return ApiStatus_DONE2; -} diff --git a/src/world/area_pra/pra_09/pra_09.h b/src/world/area_pra/pra_09/pra_09.h index 836a21b230..dbb06c0296 100644 --- a/src/world/area_pra/pra_09/pra_09.h +++ b/src/world/area_pra/pra_09/pra_09.h @@ -2,8 +2,42 @@ /// @brief Crystal Palace - Red Key Hall #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_09_shape.h" +#include "mapfs/pra_09_hit.h" + +enum { + NPC_Bombette_01 = 0, + NPC_Bombette_02 = 1, + NPC_Bombette_03 = 2, + NPC_Bombette_04 = 3, + NPC_Bombette_05 = 4, + NPC_Duplighost_01 = 5, + NPC_Duplighost_02 = 6, + NPC_Duplighost_03 = 7, + NPC_Duplighost_04 = 8, + NPC_Duplighost_05 = 9, + NPC_Bombette_01_Target = 10, + NPC_Bombette_02_Target = 11, + NPC_Bombette_03_Target = 12, + NPC_Bombette_04_Target = 13, + NPC_Bombette_05_Target = 14, +}; + +enum { + MV_UnmaskingState = MapVar(0), + MV_RevealedFakeBombette1 = MapVar(2), + MV_RevealedFakeBombette2 = MapVar(3), + MV_RevealedFakeBombette3 = MapVar(4), + MV_RevealedFakeBombette4 = MapVar(5), +}; + #define NAMESPACE pra_09 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_ExitWalk_pra_11_0); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_pra/pra_09/pra_09_0_header.c b/src/world/area_pra/pra_09/pra_09_0_header.c new file mode 100644 index 0000000000..5eec134b50 --- /dev/null +++ b/src/world/area_pra/pra_09/pra_09_0_header.c @@ -0,0 +1,15 @@ +#include "pra_09.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_09_ENTRY_0] { 13.0, 0.0, 73.0, 90.0 }, + [pra_09_ENTRY_1] { 479.0, 0.0, 84.0, 270.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_09 }, +}; diff --git a/src/world/area_pra/pra_09/pra_09_1_music.c b/src/world/area_pra/pra_09/pra_09_1_music.c new file mode 100644 index 0000000000..feb38b4da9 --- /dev/null +++ b/src/world/area_pra/pra_09/pra_09_1_music.c @@ -0,0 +1,8 @@ +#include "pra_09.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_09/pra_09_2_main.c b/src/world/area_pra/pra_09/pra_09_2_main.c new file mode 100644 index 0000000000..94a9b8b409 --- /dev/null +++ b/src/world/area_pra/pra_09/pra_09_2_main.c @@ -0,0 +1,94 @@ +#include "pra_09.h" +#include "effects.h" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +EvtScript N(EVS_ExitDoors_pra_03_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_09_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_SET(LVar2, MODEL_o772) + EVT_SET(LVar3, MODEL_o768) + EVT_SET(LVar4, MODEL_o844) + EVT_SET(LVar5, MODEL_o846) + EVT_EXEC(ExitSplitDoubleDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_03"), pra_03_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitWalk_pra_11_0) = EVT_EXIT_WALK(60, pra_09_ENTRY_1, "pra_11", pra_11_ENTRY_0); + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_03_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_BOMBETTE_DUPLIGHOSTS) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_11_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_09_ENTRY_0) + EVT_SET(LVar2, MODEL_o772) + EVT_SET(LVar3, MODEL_o768) + EVT_SET(LVar4, MODEL_o844) + EVT_SET(LVar5, MODEL_o846) + EVT_EXEC_WAIT(EnterSplitDoubleDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_CASE_EQ(pra_09_ENTRY_1) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +BombTrigger N(BombPos_Wall) = { + .pos = { 487.0f, 0.0f, 80.0f }, + .radius = 0.0f +}; + +EvtScript N(EVS_BlastWall) = { + EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 38, 30, 1, 10, 30) + EVT_CALL(EnableModel, MODEL_g260, FALSE) + EVT_CALL(EnableModel, MODEL_g265, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(EnableModel, MODEL_o952, TRUE) + EVT_SET(GF_PRA09_BombedWall, TRUE) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_IF_EQ(GF_PRA09_BombedWall, FALSE) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Wall)), 1, 0) + EVT_CALL(EnableModel, MODEL_o952, FALSE) + EVT_ELSE + EVT_CALL(EnableModel, MODEL_g260, FALSE) + EVT_CALL(EnableModel, MODEL_g265, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK) + EVT_END_IF + EVT_EXEC(N(EVS_SetupMusic)) + EVT_SET(LVar0, 1) + EVT_SET(LVar1, GF_PRA_BrokeIllusion) + EVT_EXEC(N(EVS_SetupReflections)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_09/pra_09_3_npc.c b/src/world/area_pra/pra_09/pra_09_3_npc.c new file mode 100644 index 0000000000..73c267d6f5 --- /dev/null +++ b/src/world/area_pra/pra_09/pra_09_3_npc.c @@ -0,0 +1,1063 @@ +#include "pra_09.h" +#include "effects.h" + +#include "world/common/enemy/complete/Duplighost.h" + +NpcSettings N(NpcSettings_Duplighost) = { + .height = 30, + .radius = 45, + .level = 99, +}; + +#include "world/common/enemy/complete/Bombette.inc.c" + +#include "world/common/complete/KeyItemChoice.inc.c" +MAP_STATIC_PAD(1,key_item); +#include "world/common/complete/NormalItemChoice.inc.c" + +#include "world/common/todo/PlayBigSmokePuff.inc.c" + +API_CALLABLE(N(ChooseImposterBattleFormation)) { + EncounterStatus* currentEncounter = &gCurrentEncounter; + Bytecode* args = script->ptrReadPos; + Enemy* enemy = script->owner1.enemy; + Encounter* encounter; + s32 unmaskedCount = 0; + + if (evt_get_variable(script, *args++) == 0) { + unmaskedCount++; + } + if (evt_get_variable(script, *args++) == 0) { + unmaskedCount++; + } + if (evt_get_variable(script, *args++) == 0) { + unmaskedCount++; + } + if (evt_get_variable(script, *args++) == 0) { + unmaskedCount++; + } + + switch (unmaskedCount) { + case 1: + encounter = currentEncounter->encounterList[enemy->encounterIndex]; + encounter->battle = BTL_PRA3_FORMATION_01; + break; + case 2: + encounter = currentEncounter->encounterList[enemy->encounterIndex]; + encounter->battle = BTL_PRA3_FORMATION_02; + break; + case 3: + encounter = currentEncounter->encounterList[enemy->encounterIndex]; + encounter->battle = BTL_PRA3_FORMATION_03; + break; + case 4: + encounter = currentEncounter->encounterList[enemy->encounterIndex]; + encounter->battle = BTL_PRA3_FORMATION_04; + break; + } + return ApiStatus_DONE2; +} + +API_CALLABLE(N(ImposterFallFromCeiling)) { + Npc* npc = resolve_npc(script, script->varTable[0]); + + if (isInitialCall) { + npc->pos.x = script->varTable[1]; + npc->pos.y = script->varTable[2]; + npc->pos.z = script->varTable[3]; + npc->jumpVelocity = 0.0f; + npc->currentAnim = ANIM_WorldBombette_Aftermath; + npc->jumpScale = 0.8f; + } + npc->rotation.z -= 39.0f; + npc->rotation.x -= 33.0f; + npc->pos.y -= npc->jumpVelocity; + npc->jumpVelocity += npc->jumpScale; + if (npc->pos.y <= 0.0f) { + npc->pos.y = 0.0f; + npc->rotation.z = 0.0f; + npc->rotation.x = 0.0f; + npc->jumpVelocity = 0.0f; + npc->jumpScale = 0.0f; + npc->currentAnim = ANIM_WorldBombette_Idle; + return ApiStatus_DONE2; + } + return ApiStatus_BLOCK; +} + +API_CALLABLE(N(ChangeNpcCollisionRadius)) { + Npc* npc1 = resolve_npc(script, script->varTable[3]); + Npc* npc2 = resolve_npc(script, script->varTable[4]); + + npc1->collisionRadius = npc2->collisionRadius; + npc1->collisionHeight = npc2->collisionHeight; + return ApiStatus_DONE2; +} + +EvtScript N(EVS_FocusCam_OnPosition) = { + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, LVarA) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(350.0)) + EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(12.0), EVT_FLOAT(-5.5)) + EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(500.0), EVT_FLOAT(20.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_FocusCam_StartBattle) = { + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(6.0)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0)) + EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(386.0), EVT_FLOAT(20.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_FocusCam_OnPlayer) = { + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_GT(LVar0, 386) + EVT_SET(LVar0, 386) + EVT_END_IF + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(6.0)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0)) + EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(500.0), EVT_FLOAT(20.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Imposter_Unmask) = { + EVT_CALL(N(ChangeNpcCollisionRadius)) + EVT_CALL(SetNpcFlagBits, LVar3, NPC_FLAG_100, TRUE) + EVT_CALL(SpeakToPlayer, LVar3, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, LVar5) + EVT_CALL(GetNpcPos, LVar3, LVar0, LVar1, LVar2) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, LVar3, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcFlagBits, LVar3, NPC_FLAG_100, FALSE) + EVT_CALL(SetNpcPos, LVar4, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, LVar4, SOUND_SMOKE_BURST, 0) + EVT_CALL(MakeLerp, 0, 2880, 40, EASING_QUADRATIC_OUT) + EVT_LABEL(1) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcRotation, LVar4, 0, LVar0, 0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 1) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(EndSpeech, LVar4, ANIM_Duplighost_Anim05, ANIM_Duplighost_Anim02, 0) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPlayer)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_THREAD + EVT_CALL(SetNpcAnimation, LVar4, ANIM_Duplighost_Anim04) + EVT_CALL(InterpNpcYaw, LVar4, 90, 0) + EVT_CALL(SetNpcSpeed, LVar4, EVT_FLOAT(6.5)) + EVT_CALL(PlaySoundAtNpc, LVar4, SOUND_2CB, 0) + EVT_CALL(NpcMoveTo, LVar4, 0, LVar2, 0) + EVT_CALL(SetNpcPos, LVar4, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_WAIT(15) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Imposter_HopTwice) = { + EVT_CALL(SetNpcJumpscale, LVar3, EVT_FLOAT(1.0)) + EVT_CALL(GetNpcPos, LVar3, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, LVar3, LVar0, LVar1, LVar2, 10) + EVT_CALL(GetNpcPos, LVar3, LVar0, LVar1, LVar2) + EVT_CALL(NpcJump0, LVar3, LVar0, LVar1, LVar2, 10) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_RevealEveryImposter) = { + EVT_IF_EQ(MV_RevealedFakeBombette1, 0) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_Bombette_02, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_02, NPC_DISPOSE_LOCATION) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Duplighost_01, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_01, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim04) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(NpcMoveTo, NPC_Duplighost_01, LVar0, LVar2, 30) + EVT_END_THREAD + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette2, 0) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_Bombette_03, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_03, NPC_DISPOSE_LOCATION) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Duplighost_02, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_02, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim04) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(NpcMoveTo, NPC_Duplighost_02, LVar0, LVar2, 30) + EVT_END_THREAD + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette3, 0) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_Bombette_04, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_04, NPC_DISPOSE_LOCATION) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Duplighost_03, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_03, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_03, ANIM_Duplighost_Anim04) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(NpcMoveTo, NPC_Duplighost_03, LVar0, LVar2, 30) + EVT_END_THREAD + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette4, 0) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_Bombette_05, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_05, NPC_DISPOSE_LOCATION) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Duplighost_04, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_04, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_04, ANIM_Duplighost_Anim04) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(NpcMoveTo, NPC_Duplighost_04, LVar0, LVar2, 30) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT(20) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Imposter_ChaseDownPlayer) = { + EVT_CALL(SetNpcFlagBits, LVar3, NPC_FLAG_100, TRUE) + EVT_CALL(SetNpcAnimation, LVar3, ANIM_WorldBombette_Run) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(NpcMoveTo, LVar3, LVar0, LVar2, 30) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Imposter_CarryPlayerBack) = { + EVT_CALL(InterpNpcYaw, LVar3, LVar9, 0) + EVT_LOOP(30) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_ADD(LVar0, LVar4) + EVT_ADD(LVar1, LVar5) + EVT_ADD(LVar2, LVar6) + EVT_CALL(SetNpcPos, LVar3, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Imposter_ReturnToStation) = { + EVT_CALL(NpcMoveTo, LVar3, LVar0, LVar2, 20) + EVT_CALL(SetNpcAnimation, LVar3, ANIM_WorldBombette_Idle) + EVT_CALL(SetNpcFlagBits, LVar3, NPC_FLAG_100, FALSE) + EVT_CALL(InterpNpcYaw, LVar3, 90, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PreventPlayerLeaving) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_LOOP(0) + EVT_WAIT(1) + EVT_CALL(GetPlayerActionState, LVar0) + EVT_IF_EQ(LVar0, ACTION_STATE_IDLE) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_IF_EQ(MV_RevealedFakeBombette1, 0) + EVT_SET(LVar3, NPC_Bombette_02) + EVT_EXEC(N(EVS_Imposter_ChaseDownPlayer)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette2, 0) + EVT_SET(LVar3, NPC_Bombette_03) + EVT_EXEC(N(EVS_Imposter_ChaseDownPlayer)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette3, 0) + EVT_SET(LVar3, NPC_Bombette_04) + EVT_EXEC(N(EVS_Imposter_ChaseDownPlayer)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette4, 0) + EVT_SET(LVar3, NPC_Bombette_05) + EVT_EXEC(N(EVS_Imposter_ChaseDownPlayer)) + EVT_END_IF + EVT_SET(LVar3, 0) + EVT_EXEC_WAIT(N(EVS_Imposter_ChaseDownPlayer)) + EVT_CALL(InterpPlayerYaw, 90, 3) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_80009) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, 20) + EVT_CALL(SetPlayerPos, LVar0, LVar1, LVar2) + EVT_WAIT(10) + EVT_THREAD + EVT_LOOP(35) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, 0, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_END_THREAD + EVT_THREAD + EVT_LOOP(30) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, 20) + EVT_CALL(SetPlayerPos, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_IF_EQ(MV_RevealedFakeBombette1, 0) + EVT_SET(LVar3, NPC_Bombette_02) + EVT_SET(LVar4, 0) + EVT_SET(LVar5, 0) + EVT_SET(LVar6, 10) + EVT_EXEC(N(EVS_Imposter_CarryPlayerBack)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette2, 0) + EVT_SET(LVar3, NPC_Bombette_03) + EVT_SET(LVar4, -20) + EVT_SET(LVar5, 0) + EVT_SET(LVar6, 0) + EVT_EXEC(N(EVS_Imposter_CarryPlayerBack)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette3, 0) + EVT_SET(LVar3, NPC_Bombette_04) + EVT_SET(LVar4, -20) + EVT_SET(LVar5, 0) + EVT_SET(LVar6, 10) + EVT_EXEC(N(EVS_Imposter_CarryPlayerBack)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette4, 0) + EVT_SET(LVar3, NPC_Bombette_05) + EVT_SET(LVar4, -20) + EVT_SET(LVar5, 0) + EVT_SET(LVar6, 20) + EVT_EXEC(N(EVS_Imposter_CarryPlayerBack)) + EVT_END_IF + EVT_CALL(NpcMoveTo, NPC_Bombette_01, 370, 73, 30) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_IF_EQ(MV_RevealedFakeBombette1, 0) + EVT_SET(LVar3, NPC_Bombette_02) + EVT_SET(LVar0, 280) + EVT_SET(LVar2, 100) + EVT_EXEC(N(EVS_Imposter_ReturnToStation)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette2, 0) + EVT_SET(LVar3, NPC_Bombette_03) + EVT_SET(LVar0, 315) + EVT_SET(LVar2, 55) + EVT_EXEC(N(EVS_Imposter_ReturnToStation)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette3, 0) + EVT_SET(LVar3, NPC_Bombette_04) + EVT_SET(LVar0, 350) + EVT_SET(LVar2, 80) + EVT_EXEC(N(EVS_Imposter_ReturnToStation)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette4, 0) + EVT_SET(LVar3, NPC_Bombette_05) + EVT_SET(LVar0, 420) + EVT_SET(LVar2, 60) + EVT_EXEC(N(EVS_Imposter_ReturnToStation)) + EVT_END_IF + EVT_SET(LVar3, 0) + EVT_SET(LVar0, 385) + EVT_SET(LVar2, 120) + EVT_EXEC_WAIT(N(EVS_Imposter_ReturnToStation)) + EVT_CALL(ShowMessageAtScreenPos, MSG_CH7_014E, 160, 40) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ManageImpostersScene) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_BOMBETTE_DUPLIGHOSTS) + EVT_RETURN + EVT_END_IF + EVT_LABEL(0) + EVT_SET(LVar0, GF_PRA09_BombedWall) + EVT_WAIT(1) + EVT_IF_EQ(LVar0, 0) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(DisablePlayerInput, TRUE) + EVT_WAIT(25) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_2 | NPC_FLAG_100, TRUE) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 386, 0, 93) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 386, 0, 93) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0)) + EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(12.0), EVT_FLOAT(-7.0)) + EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(500.0), EVT_FLOAT(20.0)) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_THREAD + EVT_SET(LVar0, NPC_Bombette_04) + EVT_SET(LVar1, 350) + EVT_SET(LVar2, 150) + EVT_SET(LVar3, 90) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, TRUE) + EVT_CALL(N(ImposterFallFromCeiling)) + EVT_WAIT(1) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, FALSE) + EVT_END_THREAD + EVT_WAIT(5) + EVT_THREAD + EVT_SET(LVar0, NPC_Bombette_02) + EVT_SET(LVar1, 280) + EVT_SET(LVar2, 150) + EVT_SET(LVar3, 100) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, TRUE) + EVT_CALL(N(ImposterFallFromCeiling)) + EVT_WAIT(1) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, FALSE) + EVT_END_THREAD + EVT_WAIT(5) + EVT_THREAD + EVT_SET(LVar0, NPC_Bombette_05) + EVT_SET(LVar1, 420) + EVT_SET(LVar2, 150) + EVT_SET(LVar3, 60) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, TRUE) + EVT_CALL(N(ImposterFallFromCeiling)) + EVT_WAIT(1) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, FALSE) + EVT_END_THREAD + EVT_WAIT(5) + EVT_THREAD + EVT_SET(LVar0, NPC_Bombette_01) + EVT_SET(LVar1, 385) + EVT_SET(LVar2, 150) + EVT_SET(LVar3, 120) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, TRUE) + EVT_CALL(N(ImposterFallFromCeiling)) + EVT_WAIT(1) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, FALSE) + EVT_END_THREAD + EVT_WAIT(5) + EVT_SET(LVar0, NPC_Bombette_03) + EVT_SET(LVar1, 315) + EVT_SET(LVar2, 150) + EVT_SET(LVar3, 55) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, TRUE) + EVT_CALL(N(ImposterFallFromCeiling)) + EVT_WAIT(1) + EVT_CALL(SetNpcFlagBits, LVar0, NPC_FLAG_100, FALSE) + EVT_WAIT(30) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, 0) + EVT_EXEC(N(EVS_Imposter_HopTwice)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_01, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013C) + EVT_CALL(GetNpcPos, NPC_Bombette_02, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, 1) + EVT_EXEC(N(EVS_Imposter_HopTwice)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_02, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013D) + EVT_CALL(GetNpcPos, NPC_Bombette_03, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, 2) + EVT_EXEC(N(EVS_Imposter_HopTwice)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_03, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013E) + EVT_CALL(GetNpcPos, NPC_Bombette_04, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, 3) + EVT_EXEC(N(EVS_Imposter_HopTwice)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_04, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013F) + EVT_CALL(GetNpcPos, NPC_Bombette_05, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, 4) + EVT_EXEC(N(EVS_Imposter_HopTwice)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_05, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0140) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_01, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0141) + EVT_CALL(GetNpcPos, NPC_Bombette_03, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_03, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0142) + EVT_CALL(GetNpcPos, NPC_Bombette_04, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(3.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_04, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0143) + EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(2.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(SetPlayerFlagBits, PS_FLAG_NO_CHANGE_PARTNER | PS_FLAG_NO_PARTNER_USAGE, TRUE) + EVT_LOOP(0) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_GT(LVar0, 490) + EVT_SET(LVar9, 270) + EVT_EXEC_WAIT(N(EVS_PreventPlayerLeaving)) + EVT_END_IF + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_LT(LVar0, 190) + EVT_SET(LVar9, 90) + EVT_EXEC_WAIT(N(EVS_PreventPlayerLeaving)) + EVT_END_IF + EVT_IF_EQ(MV_RevealedFakeBombette1, 1) + EVT_IF_EQ(MV_RevealedFakeBombette2, 1) + EVT_IF_EQ(MV_RevealedFakeBombette3, 1) + EVT_IF_EQ(MV_RevealedFakeBombette4, 1) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_01, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_2, FALSE) + EVT_CALL(GetAngleToNPC, NPC_PARTNER, LVarA) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_IF_LE(LVarA, 180) + EVT_ADD(LVar0, 20) + EVT_ELSE + EVT_ADD(LVar0, -20) + EVT_END_IF + EVT_CALL(SetNpcAnimation, NPC_PARTNER, ANIM_WorldBombette_Walk) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_100, TRUE) + EVT_CALL(NpcMoveTo, NPC_PARTNER, LVar0, LVar2, 20) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, ANIM_WorldBombette_Idle) + EVT_CALL(SpeakToPlayer, NPC_PARTNER, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_014F) + EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FLOAT(1.0)) + EVT_CALL(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, ANIM_WorldBombette_HappyJump) + EVT_THREAD + EVT_WAIT(5) + EVT_ADD(LVar1, 10) + EVT_CALL(GetAngleToNPC, NPC_PARTNER, LVarA) + EVT_IF_GE(LVarA, 180) + EVT_ADD(LVar0, 20) + EVT_END_IF + EVT_PLAY_EFFECT(EFFECT_RECOVER, 2, LVar0, LVar1, LVar2, 0) + EVT_CALL(PlaySoundAtPlayer, SOUND_214, 0) + EVT_END_THREAD + EVT_CALL(NpcJump0, NPC_PARTNER, LVar0, LVar1, LVar2, 10) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, ANIM_WorldBombette_Idle) + EVT_WAIT(10) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_100, FALSE) + EVT_CALL(SetPlayerFlagBits, PS_FLAG_NO_CHANGE_PARTNER | PS_FLAG_NO_PARTNER_USAGE, FALSE) + EVT_CALL(EnablePartnerAI) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_BOMBETTE_DUPLIGHOSTS) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_11_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_SWITCH(MV_UnmaskingState) + EVT_CASE_EQ(0) + EVT_WAIT(1) + EVT_CASE_EQ(1) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(6.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_CALL(SpeakToPlayer, NPC_Bombette_01, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Hurt, 0, MSG_CH7_0149) + EVT_EXEC_WAIT(N(EVS_FocusCam_StartBattle)) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002B) + EVT_EXEC_WAIT(N(EVS_RevealEveryImposter)) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2) + EVT_CALL(N(ChooseImposterBattleFormation), MV_RevealedFakeBombette1, MV_RevealedFakeBombette2, MV_RevealedFakeBombette3, MV_RevealedFakeBombette4) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_BREAK_LOOP + EVT_CASE_EQ(2) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(GetNpcPos, NPC_Bombette_02, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(6.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, NPC_Bombette_02) + EVT_SET(LVar4, NPC_Duplighost_01) + EVT_SET(LVar5, MSG_CH7_014A) + EVT_EXEC_WAIT(N(EVS_Imposter_Unmask)) + EVT_SET(MV_UnmaskingState, 0) + EVT_SET(MV_RevealedFakeBombette1, 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CASE_EQ(3) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(GetNpcPos, NPC_Bombette_03, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(6.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, NPC_Bombette_03) + EVT_SET(LVar4, NPC_Duplighost_02) + EVT_SET(LVar5, MSG_CH7_014B) + EVT_EXEC_WAIT(N(EVS_Imposter_Unmask)) + EVT_SET(MV_UnmaskingState, 0) + EVT_SET(MV_RevealedFakeBombette2, 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CASE_EQ(4) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(GetNpcPos, NPC_Bombette_04, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(6.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, NPC_Bombette_04) + EVT_SET(LVar4, NPC_Duplighost_03) + EVT_SET(LVar5, MSG_CH7_014C) + EVT_EXEC_WAIT(N(EVS_Imposter_Unmask)) + EVT_SET(MV_UnmaskingState, 0) + EVT_SET(MV_RevealedFakeBombette3, 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CASE_EQ(5) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(GetNpcPos, NPC_Bombette_05, LVar0, LVar1, LVar2) + EVT_SETF(LVarA, EVT_FLOAT(6.0)) + EVT_EXEC_WAIT(N(EVS_FocusCam_OnPosition)) + EVT_SET(LVar3, NPC_Bombette_05) + EVT_SET(LVar4, NPC_Duplighost_04) + EVT_SET(LVar5, MSG_CH7_014D) + EVT_EXEC_WAIT(N(EVS_Imposter_Unmask)) + EVT_SET(MV_UnmaskingState, 0) + EVT_SET(MV_RevealedFakeBombette4, 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_SWITCH + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_Duplighost_05) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_01, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_2 | NPC_FLAG_100, FALSE) + EVT_CALL(SetPlayerFlagBits, PS_FLAG_NO_CHANGE_PARTNER | PS_FLAG_NO_PARTNER_USAGE, FALSE) + EVT_CALL(EnablePartnerAI) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_BOMBETTE_DUPLIGHOSTS) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_11_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Bombette_01) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0144) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Bombette_02) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0145) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Bombette_03) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0146) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Bombette_04) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0147) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Bombette_05) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_0148) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_05) = { + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Duplighost_05))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2 | NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_EXEC(N(EVS_ManageImpostersScene)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Bombette_01) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bombette_01))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Bombette_02) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bombette_02))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Bombette_03) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bombette_03))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Bombette_04) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bombette_04))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Bombette_05) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Bombette_05))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_01) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_REFLECT_FLOOR | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_02) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_REFLECT_FLOOR | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_03) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_REFLECT_FLOOR | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_04) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_REFLECT_FLOOR | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_InteractableBombettes)[] = { + { + .id = NPC_Bombette_01, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_Bombette_01), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_02, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_Bombette_02), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_03, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_Bombette_03), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_04, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_Bombette_04), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_05, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_Bombette_05), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, +}; + +StaticNpc N(NpcData_Duplighosts)[] = { + { + .id = NPC_Duplighost_01, + .settings = &N(NpcSettings_Duplighost), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_01), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, + { + .id = NPC_Duplighost_02, + .settings = &N(NpcSettings_Duplighost), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_02), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, + { + .id = NPC_Duplighost_03, + .settings = &N(NpcSettings_Duplighost), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_03), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, + { + .id = NPC_Duplighost_04, + .settings = &N(NpcSettings_Duplighost), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_04), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, + { + .id = NPC_Duplighost_05, + .settings = &N(NpcSettings_Duplighost), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_05), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, +}; + +EvtScript N(EVS_NpcHit_TargetBombette_01) = { + EVT_CALL(GetOwnerEncounterTrigger, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER) + EVT_SET(MV_UnmaskingState, NPC_Bombette_01 + 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_TargetBombette_02) = { + EVT_CALL(GetOwnerEncounterTrigger, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER) + EVT_SET(MV_UnmaskingState, NPC_Bombette_02 + 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_TargetBombette_03) = { + EVT_CALL(GetOwnerEncounterTrigger, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER) + EVT_SET(MV_UnmaskingState, NPC_Bombette_03 + 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_TargetBombette_04) = { + EVT_CALL(GetOwnerEncounterTrigger, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER) + EVT_SET(MV_UnmaskingState, NPC_Bombette_04 + 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_TargetBombette_05) = { + EVT_CALL(GetOwnerEncounterTrigger, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(ENCOUNTER_TRIGGER_HAMMER) + EVT_SET(MV_UnmaskingState, NPC_Bombette_05 + 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_TargetBombette_01) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_Bombette_01, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_01_Target, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_TargetBombette_02) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_Bombette_02, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_02_Target, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_TargetBombette_03) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_Bombette_03, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_03_Target, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_TargetBombette_04) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_Bombette_04, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_04_Target, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_TargetBombette_05) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_Bombette_05, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Bombette_05_Target, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_TargetBombette_01) = { + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_TargetBombette_01))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_TargetBombette_01))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_TargetBombette_02) = { + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_TargetBombette_02))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_TargetBombette_02))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_TargetBombette_03) = { + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_TargetBombette_03))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_TargetBombette_03))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_TargetBombette_04) = { + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_TargetBombette_04))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_TargetBombette_04))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_TargetBombette_05) = { + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_TargetBombette_05))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_TargetBombette_05))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_TargetBombettes)[] = { + { + .id = NPC_Bombette_01_Target, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_TargetBombette_01), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_02_Target, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_TargetBombette_02), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_03_Target, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_TargetBombette_03), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_04_Target, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_TargetBombette_04), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Bombette_05_Target, + .settings = &N(NpcSettings_Bombette), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_100000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS | ENEMY_FLAG_IGNORE_TOUCH | ENEMY_FLAG_IGNORE_JUMP, + .init = &N(EVS_NpcInit_TargetBombette_05), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_InteractableBombettes), BTL_PRA3_FORMATION_01, BTL_PRA3_STAGE_00), + NPC_GROUP(N(NpcData_Duplighosts), BTL_PRA3_FORMATION_01, BTL_PRA3_STAGE_00), + NPC_GROUP(N(NpcData_TargetBombettes), BTL_PRA3_FORMATION_01, BTL_PRA3_STAGE_00), + {} +}; diff --git a/src/world/area_pra/pra_10/pra_10.h b/src/world/area_pra/pra_10/pra_10.h index 911debfb53..8c2cd4fd8a 100644 --- a/src/world/area_pra/pra_10/pra_10.h +++ b/src/world/area_pra/pra_10/pra_10.h @@ -10,8 +10,8 @@ #include "mapfs/pra_10_hit.h" enum { - NPC_Swoopula_01 = 0, - NPC_Swoopula_02 = 1, + NPC_Swoopula_01 = 0, + NPC_Swoopula_02 = 1, }; #define NAMESPACE pra_10 diff --git a/src/world/area_pra/pra_13/D645E0.c b/src/world/area_pra/pra_13/D645E0.c deleted file mode 100644 index d5cff9e662..0000000000 --- a/src/world/area_pra/pra_13/D645E0.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_13.h" - -static char* N(exit_str_0) = "pra_02"; -static char* N(exit_str_1) = "pra_14"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_13/D64600.c b/src/world/area_pra/pra_13/D64600.c deleted file mode 100644 index 8a1e42dced..0000000000 --- a/src/world/area_pra/pra_13/D64600.c +++ /dev/null @@ -1,108 +0,0 @@ -#include "pra_13.h" - -#include "../common/Reflection.inc.c" - -#include "world/common/todo/GetNpcCollisionHeight.inc.c" - -#include "world/common/todo/AddPlayerHandsOffset.inc.c" - -extern s32 N(ItemChoice_HasSelectedItem); -extern s32 N(ItemChoice_SelectedItemID); -#include "world/common/todo/ItemChoice_WaitForSelection.inc.c" - -ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - - N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++); - N(ItemChoice_HasSelectedItem) = TRUE; - return ApiStatus_DONE2; -} - -BSS s32 D_80243720[114]; -BSS s32 pra_13_802438E8[92]; - -ApiStatus func_802411D8_D657B8(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - D_80243720[i] = ptr[i]; - } - D_80243720[i] = 0; - } else { - for (i = 0; i < 112; i++) { - D_80243720[i] = i + 16; - D_80243720[112] = 0; - } - } - return ApiStatus_DONE2; -} - -ApiStatus func_80241274_D65854(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - pra_13_802438E8[i] = ptr[i]; - } - pra_13_802438E8[i] = 0; - } else { - for (i = 0; i < 91; i++) { - pra_13_802438E8[i] = i + 128; - pra_13_802438E8[91] = 0; - } - } - return ApiStatus_DONE2; -} - -#include "world/common/todo/PlayBigSmokePuff.inc.c" - -ApiStatus func_802413A4_D65984(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - - get_npc_safe(evt_get_variable(script, *args++)); - return ApiStatus_DONE2; -} - -void func_8024140C_D659EC(void); -void func_802414BC_D65A9C(void* npc); - -ApiStatus func_802413D0_D659B0(Evt* script, s32 isInitialCall) { - script->array[0] = create_worker_world(0, func_8024140C_D659EC); - return ApiStatus_DONE2; -} - -void func_8024140C_D659EC(void) { - RenderTask rt; - RenderTask* rtPtr = &rt; - Npc* npc = get_npc_safe(0); - - if (gPlayerStatusPtr->flags & PS_FLAG_HAS_REFLECTION) { - s32 x, y, z; - - get_screen_coords(gCurrentCamID, npc->pos.x, npc->pos.y, -npc->pos.z, &x, &y, &z); - rtPtr->renderMode = npc->renderMode; - rtPtr->distance = -z; - rtPtr->appendGfxArg = npc; - rtPtr->appendGfx = func_802414BC_D65A9C; - queue_render_task(rtPtr); - } -} - -void func_802414BC_D65A9C(void* data) { - Npc* npc = data; - Matrix4f sp18, sp58, sp98, spD8; - - npc_get_render_yaw(npc); - guRotateF(sp18, npc->renderYaw + gCameras[gCurrentCamID].currentYaw, 0.0f, 1.0f, 0.0f); - guScaleF(spD8, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F); - guMtxCatF(sp18, spD8, sp18); - guTranslateF(sp58, npc->pos.x, npc->pos.y, npc->pos.z); - guMtxCatF(sp18, sp58, sp18); - spr_update_player_sprite(PLAYER_SPRITE_AUX2, npc->currentAnim, 1.0f); - spr_draw_player_sprite(PLAYER_SPRITE_AUX2, 0, 0, 0, sp18); -} diff --git a/src/world/area_pra/pra_13/pra_13.h b/src/world/area_pra/pra_13/pra_13.h index 85d1b32381..ee459c91d6 100644 --- a/src/world/area_pra/pra_13/pra_13.h +++ b/src/world/area_pra/pra_13/pra_13.h @@ -2,8 +2,25 @@ /// @brief Crystal Palace - Blue Mirror Hall 1 #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_13_shape.h" +#include "mapfs/pra_13_hit.h" + +#include "sprite/npc/WorldBombette.h" +#include "sprite/npc/Duplighost.h" + +enum { + NPC_FakeMario = 0, + NPC_FakeBombette = 1, + NPC_Duplighost_01 = 2, + NPC_Duplighost_02 = 3, +}; + #define NAMESPACE pra_13 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_pra/pra_13/pra_13_0_header.c b/src/world/area_pra/pra_13/pra_13_0_header.c new file mode 100644 index 0000000000..883d56ee29 --- /dev/null +++ b/src/world/area_pra/pra_13/pra_13_0_header.c @@ -0,0 +1,17 @@ +#include "pra_13.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_13_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, + [pra_13_ENTRY_1] { 487.0, 0.0, 70.0, 270.0 }, + [pra_13_ENTRY_2] { 487.0, 0.0, -70.0, 270.0 }, + [pra_13_ENTRY_3] { 13.0, 0.0, -70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_13 }, +}; diff --git a/src/world/area_pra/pra_13/pra_13_1_music.c b/src/world/area_pra/pra_13/pra_13_1_music.c new file mode 100644 index 0000000000..8f0e0d627d --- /dev/null +++ b/src/world/area_pra/pra_13/pra_13_1_music.c @@ -0,0 +1,7 @@ +#include "pra_13.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_13/pra_13_2_main.c b/src/world/area_pra/pra_13/pra_13_2_main.c new file mode 100644 index 0000000000..acc22b6888 --- /dev/null +++ b/src/world/area_pra/pra_13/pra_13_2_main.c @@ -0,0 +1,190 @@ +#include "pra_13.h" +#include "effects.h" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +#include "../common/GlassShimmer.inc.c" + +s32 N(NearLeftDoorModelsL)[] = { MODEL_o772, MODEL_o844, -1 }; +s32 N(NearLeftDoorModelsR)[] = { MODEL_o768, MODEL_o846, -1 }; + +s32 N(FarLeftDoorModelsL)[] = { MODEL_o859, MODEL_o860, -1 }; +s32 N(FarLeftDoorModelsR)[] = { MODEL_o861, MODEL_o862, -1 }; + +s32 N(BothLeftDoorModelsL)[] = { MODEL_o772, MODEL_o844, MODEL_o859, MODEL_o860, -1 }; +s32 N(BothLeftDoorModelsR)[] = { MODEL_o768, MODEL_o846, MODEL_o861, MODEL_o862, -1 }; + +EvtScript N(EVS_ExitDoors_pra_02_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY) + EVT_SET(LVar0, 0) + EVT_SET(LVar1, 20) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_02"), pra_02_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitWalk_pra_14_0) = EVT_EXIT_WALK(60, pra_13_ENTRY_1, "pra_14", pra_14_ENTRY_0); + +EvtScript N(EVS_Unused_1) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitWalk_pra_14_1) = EVT_EXIT_WALK(60, pra_13_ENTRY_2, "pra_14", pra_14_ENTRY_1); + +EvtScript N(EVS_Unused_2) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_02_3) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY) + EVT_SET(LVar0, 3) + EVT_SET(LVar1, 24) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_02"), pra_02_ENTRY_3) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_02_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_14_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_14_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_02_3)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_13_ENTRY_0) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_CASE_EQ(pra_13_ENTRY_1) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_CASE_EQ(pra_13_ENTRY_2) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_CASE_EQ(pra_13_ENTRY_3) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +BombTrigger N(BombPos_NearWall) = { + .pos = { 487.0f, 0.0f, 80.0f }, + .radius = 0.0f +}; + +BombTrigger N(BombPos_FarWall) = { + .pos = { 487.0f, 0.0f, -80.0f }, + .radius = 0.0f +}; + +EvtScript N(EVS_BlastWall_Near) = { + EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 50, 34, 1, 10, 30) + EVT_CALL(EnableModel, MODEL_g260, FALSE) + EVT_CALL(EnableModel, MODEL_g265, FALSE) + EVT_CALL(EnableModel, MODEL_o952, TRUE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(GF_PRA13_BombedWallA, TRUE) + EVT_SET(GF_PRA_BrokeIllusion, TRUE) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BlastWall_Far) = { + EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 65, 34, 1, 10, 30) + EVT_CALL(EnableModel, MODEL_g289, FALSE) + EVT_CALL(EnableModel, MODEL_g290, FALSE) + EVT_CALL(EnableModel, MODEL_o1009, TRUE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(GF_PRA13_BombedWallB, TRUE) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_SET(LVar0, MODEL_o945) + EVT_SET(LVar1, MODEL_o947) + EVT_SET(LVar2, 0) + EVT_EXEC(N(EVS_GlassShimmer)) + EVT_SET(LVar0, REFLECTION_FLOOR_WALL) + EVT_SET(LVar1, GF_PRA_BrokeIllusion) + EVT_EXEC(N(EVS_SetupReflections)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_IF_EQ(GF_PRA13_BombedWallA, FALSE) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall_Near)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_NearWall)), 1, 0) + EVT_CALL(EnableModel, MODEL_o952, FALSE) + EVT_ELSE + EVT_CALL(EnableModel, MODEL_g260, FALSE) + EVT_CALL(EnableModel, MODEL_g265, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK) + EVT_END_IF + EVT_IF_EQ(GF_PRA13_BombedWallB, FALSE) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall_Far)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_FarWall)), 1, 0) + EVT_CALL(EnableModel, MODEL_o1009, FALSE) + EVT_ELSE + EVT_CALL(EnableModel, MODEL_g289, FALSE) + EVT_CALL(EnableModel, MODEL_g290, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK) + EVT_END_IF + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_13/pra_13_3_npc.c b/src/world/area_pra/pra_13/pra_13_3_npc.c new file mode 100644 index 0000000000..f10b67435f --- /dev/null +++ b/src/world/area_pra/pra_13/pra_13_3_npc.c @@ -0,0 +1,272 @@ +#include "pra_13.h" +#include "sprite.h" + +#include "world/common/enemy/complete/Bombette.h" +#include "world/common/enemy/complete/Duplighost.h" + +NpcSettings N(NpcSettings_Player) = { + .height = 30, + .radius = 45, + .level = 99, +}; + +#include "world/common/complete/KeyItemChoice.inc.c" +MAP_STATIC_PAD(1,key_item); +#include "world/common/complete/NormalItemChoice.inc.c" + +#include "world/common/todo/PlayBigSmokePuff.inc.c" + +API_CALLABLE(N(DoNothingWithNpcID)) { + Bytecode* args = script->ptrReadPos; + s32 npcID = evt_get_variable(script, *args++); + + get_npc_safe(npcID); + return ApiStatus_DONE2; +} + +void N(appendGfx_fake_player)(void* data); +void N(worker_draw_fake_player)(void); + +API_CALLABLE(N(CreateFakePlayerRenderer)) { + script->array[0] = create_worker_world(NULL, N(worker_draw_fake_player)); + return ApiStatus_DONE2; +} + +void N(worker_draw_fake_player)(void) { + RenderTask rt; + RenderTask* rtPtr = &rt; + Npc* npc = get_npc_safe(NPC_FakeMario); + + if (gPlayerStatusPtr->flags & PS_FLAG_HAS_REFLECTION) { + s32 x, y, z; + + get_screen_coords(gCurrentCamID, npc->pos.x, npc->pos.y, -npc->pos.z, &x, &y, &z); + rtPtr->renderMode = npc->renderMode; + rtPtr->distance = -z; + rtPtr->appendGfxArg = npc; + rtPtr->appendGfx = N(appendGfx_fake_player); + queue_render_task(rtPtr); + } +} + +void N(appendGfx_fake_player)(void* data) { + Npc* npc = data; + Matrix4f mtxTransform, mtxTranslate, sp98, mtxScale; + + npc_get_render_yaw(npc); + guRotateF(mtxTransform, npc->renderYaw + gCameras[gCurrentCamID].currentYaw, 0.0f, 1.0f, 0.0f); + guScaleF(mtxScale, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F); + guMtxCatF(mtxTransform, mtxScale, mtxTransform); + guTranslateF(mtxTranslate, npc->pos.x, npc->pos.y, npc->pos.z); + guMtxCatF(mtxTransform, mtxTranslate, mtxTransform); + spr_update_player_sprite(PLAYER_SPRITE_AUX2, npc->currentAnim, 1.0f); + spr_draw_player_sprite(PLAYER_SPRITE_AUX2, 0, 0, 0, mtxTransform); +} + +EvtScript N(EVS_ImposterSpin) = { + EVT_CALL(MakeLerp, 0, 8 * 360, 40, EASING_QUADRATIC_OUT) + EVT_LABEL(1) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcRotation, LVar4, 0, LVar0, 0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 1) + EVT_GOTO(1) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_ImpostersCaught) = { + EVT_CALL(GetEntryID, LVar0) + EVT_IF_EQ(LVar0, pra_13_ENTRY_2) + EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_WAIT(10) + EVT_CALL(SetNpcYaw, NPC_FakeMario, 90) + EVT_THREAD + EVT_CALL(SetPlayerSpeed, EVT_FLOAT(2.0)) + EVT_CALL(PlayerMoveTo, 440, -70, 0) + EVT_END_THREAD + EVT_WAIT(15) + EVT_CALL(GetNpcPos, NPC_FakeMario, LVar0, LVar1, LVar2) + EVT_CALL(SetCamProperties, CAM_DEFAULT, EVT_FLOAT(5.0), LVar0, LVar1, LVar2, EVT_FLOAT(350.0), EVT_FLOAT(12.0), EVT_FLOAT(-7.0)) + EVT_CALL(SpeakToPlayer, NPC_FakeMario, ANIM_Mario_1002B, ANIM_Mario_1002B, 0, MSG_CH7_0139) + EVT_CALL(SpeakToPlayer, NPC_FakeBombette, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013A) + EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(6.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_FakeMario, LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_FakeMario, NPC_DISPOSE_LOCATION) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_Duplighost_01, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_01, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcFlagBits, NPC_Duplighost_01, NPC_FLAG_100, TRUE) + EVT_SET(LVar4, 2) + EVT_CALL(SetNpcYaw, NPC_Duplighost_01, 90) + EVT_EXEC_WAIT(N(EVS_ImposterSpin)) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim04) + EVT_CALL(SetNpcFlagBits, NPC_Duplighost_01, NPC_FLAG_100, TRUE) + EVT_CALL(NpcMoveTo, NPC_Duplighost_01, 430, -70, 15) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_FakeBombette, LVar0, LVar1, LVar2) + EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2) + EVT_CALL(SetNpcPos, NPC_FakeBombette, 389, 0, -61) + EVT_CALL(SetNpcPos, NPC_Duplighost_02, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_02, SOUND_SMOKE_BURST, 0) + EVT_CALL(SetNpcFlagBits, NPC_FakeBombette, NPC_FLAG_100 | NPC_FLAG_1000000, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_Duplighost_02, NPC_FLAG_100, TRUE) + EVT_SET(LVar4, 3) + EVT_CALL(SetNpcYaw, NPC_Duplighost_02, 90) + EVT_EXEC_WAIT(N(EVS_ImposterSpin)) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim04) + EVT_CALL(SetNpcFlagBits, NPC_Duplighost_02, NPC_FLAG_100, TRUE) + EVT_CALL(NpcMoveTo, NPC_Duplighost_02, 420, -70, 15) + EVT_END_THREAD + EVT_WAIT(35) + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_END_IF + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_DefeatImposters) = { + EVT_CALL(SetNpcPos, NPC_Duplighost_01, 400, 0, -70) + EVT_CALL(SetNpcPos, NPC_Duplighost_02, 370, 0, -70) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim02) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim02) + EVT_SET_GROUP(EVT_GROUP_00) + EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL) + EVT_CALL(SetNpcPos, NPC_FakeBombette, NPC_DISPOSE_LOCATION) + EVT_WAIT(10) + EVT_CALL(SpeakToPlayer, NPC_Duplighost_01, ANIM_Duplighost_Anim05, ANIM_Duplighost_Anim02, 0, MSG_CH7_013B) + EVT_WAIT(10) + EVT_CALL(InterpNpcYaw, NPC_Duplighost_01, 270, 0) + EVT_CALL(InterpNpcYaw, NPC_Duplighost_02, 270, 0) + EVT_WAIT(15) + EVT_THREAD + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_01, SOUND_2CB, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim04) + EVT_CALL(NpcMoveTo, NPC_Duplighost_01, 0, -70, 45) + EVT_CALL(SetNpcPos, NPC_Duplighost_01, NPC_DISPOSE_LOCATION) + EVT_END_THREAD + EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_02, SOUND_2CB, 0) + EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim04) + EVT_CALL(NpcMoveTo, NPC_Duplighost_02, -30, -70, 45) + EVT_CALL(SetNpcPos, NPC_Duplighost_02, -30, -1000, 0) + EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL) + EVT_SET_GROUP(EVT_GROUP_0B) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_FakeMario) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Mario_10002) + EVT_CALL(GetEntryID, LVar0) + EVT_IF_EQ(LVar0, pra_13_ENTRY_2) + EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(SetNpcPos, NPC_SELF, 375, 0, -59) + EVT_END_IF + EVT_ELSE + EVT_IF_EQ(GF_PRA_BrokeIllusion, TRUE) + EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(SetNpcPos, NPC_SELF, 465, 0, -59) + EVT_CALL(InterpNpcYaw, NPC_SELF, 270, 0) + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_FakeBombette) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_Scene_ImpostersCaught))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_Scene_DefeatImposters))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_CALL(GetEntryID, LVar0) + EVT_IF_EQ(LVar0, pra_13_ENTRY_2) + EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(SetNpcPos, NPC_SELF, 345, 0, -59) + EVT_MALLOC_ARRAY(16, LVarA) + EVT_CALL(N(CreateFakePlayerRenderer)) + EVT_END_IF + EVT_ELSE + EVT_IF_EQ(GF_PRA_BrokeIllusion, TRUE) + EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS) + EVT_CALL(SetNpcPos, NPC_SELF, 435, 0, -59) + EVT_MALLOC_ARRAY(16, LVarA) + EVT_CALL(N(CreateFakePlayerRenderer)) + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_01) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Duplighost_02) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_FakeMario) = { + .id = NPC_FakeMario, + .settings = &N(NpcSettings_Player), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_FakeMario), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, +}; + +StaticNpc N(NpcData_Imposters)[] = { + { + .id = NPC_FakeBombette, + .settings = &N(NpcSettings_Player), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_FakeBombette), + .drops = NPC_NO_DROPS, + .animations = BOMBETTE_ANIMS, + }, + { + .id = NPC_Duplighost_01, + .settings = &N(NpcSettings_Player), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 270, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_01), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, + { + .id = NPC_Duplighost_02, + .settings = &N(NpcSettings_Player), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 270, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS, + .init = &N(EVS_NpcInit_Duplighost_02), + .drops = NPC_NO_DROPS, + .animations = DUPLIGHOST_ANIMS, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_FakeMario), BTL_PRA3_FORMATION_02, BTL_PRA3_STAGE_00), + NPC_GROUP(N(NpcData_Imposters), BTL_PRA3_FORMATION_02, BTL_PRA3_STAGE_00), + {} +}; + + diff --git a/src/world/area_pra/pra_18/D6B620.c b/src/world/area_pra/pra_18/D6B620.c deleted file mode 100644 index bd7b29ce3d..0000000000 --- a/src/world/area_pra/pra_18/D6B620.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_18.h" - -static char* N(exit_str_0) = "pra_16"; -static char* N(exit_str_1) = "pra_33"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_18/D6B640.c b/src/world/area_pra/pra_18/D6B640.c deleted file mode 100644 index 2ef3bbd646..0000000000 --- a/src/world/area_pra/pra_18/D6B640.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "pra_18.h" - -#include "../common/Reflection.inc.c" diff --git a/src/world/area_pra/pra_18/pra_18.h b/src/world/area_pra/pra_18/pra_18.h index e8c591fca7..604ac06580 100644 --- a/src/world/area_pra/pra_18/pra_18.h +++ b/src/world/area_pra/pra_18/pra_18.h @@ -2,8 +2,25 @@ /// @brief Crystal Palace - Bridge Mirror Hall #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_18_shape.h" +#include "mapfs/pra_18_hit.h" + +enum { + NPC_Clubba_01 = 0, + NPC_Clubba_02 = 1, + NPC_Clubba_03 = 2, + NPC_Clubba_01_Aux = 3, + NPC_Clubba_02_Aux = 4, + NPC_Clubba_03_Aux = 5, +}; + #define NAMESPACE pra_18 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_ExitDoors_pra_33_1); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_pra/pra_18/pra_18_0_header.c b/src/world/area_pra/pra_18/pra_18_0_header.c new file mode 100644 index 0000000000..f9c501b9db --- /dev/null +++ b/src/world/area_pra/pra_18/pra_18_0_header.c @@ -0,0 +1,16 @@ +#include "pra_18.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_18_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, + [pra_18_ENTRY_1] { 737.0, 0.0, -70.0, 270.0 }, + [pra_18_ENTRY_2] { 13.0, 0.0, -70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_18 }, +}; diff --git a/src/world/area_pra/pra_18/pra_18_1_music.c b/src/world/area_pra/pra_18/pra_18_1_music.c new file mode 100644 index 0000000000..a050c1951e --- /dev/null +++ b/src/world/area_pra/pra_18/pra_18_1_music.c @@ -0,0 +1,8 @@ +#include "pra_18.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_18/pra_18_2_main.c b/src/world/area_pra/pra_18/pra_18_2_main.c new file mode 100644 index 0000000000..cce7377f4a --- /dev/null +++ b/src/world/area_pra/pra_18/pra_18_2_main.c @@ -0,0 +1,144 @@ +#include "pra_18.h" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +#include "../common/GlassShimmer.inc.c" + +s32 N(NearRightDoorModelsL)[] = { MODEL_o772, -1 }; +s32 N(NearRightDoorModelsR)[] = { MODEL_o768, -1 }; +s32 N(FarRightDoorModelsL)[] = { MODEL_o859, -1 }; +s32 N(FarRightDoorModelsR)[] = { MODEL_o861, -1 }; +s32 N(BothRightDoorModelsL)[] = { MODEL_o772, MODEL_o859, -1 }; +s32 N(BothRightDoorModelsR)[] = { MODEL_o768, MODEL_o861, -1 }; + +s32 N(LeftDoorModelsL)[] = { MODEL_o995, MODEL_o996, -1 }; +s32 N(LeftDoorModelsR)[] = { MODEL_o997, MODEL_o998, -1 }; + +EvtScript N(EVS_ExitDoors_pra_16_1) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_18_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_16"), pra_16_ENTRY_1) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_33_1) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_18_ENTRY_1) + EVT_SET(LVar1, COLLIDER_deilittne) + EVT_SET(LVar2, EVT_PTR(N(LeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(LeftDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_33"), pra_33_ENTRY_1) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_16_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_18_ENTRY_2) + EVT_SET(LVar1, COLLIDER_deilittnw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_16"), pra_16_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_16_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_33_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittne, 1, 0) + EVT_END_IF + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_16_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_18_ENTRY_0) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_18_ENTRY_1) + EVT_SET(LVar2, EVT_PTR(N(LeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(LeftDoorModelsR))) + EVT_CASE_EQ(pra_18_ENTRY_2) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_END_SWITCH + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1174, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g298, 0) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1175, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g296, 0) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1176, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g297, 0) + EVT_ELSE + EVT_SWITCH(GB_PRA18_ClubbasDefeated) + EVT_CASE_EQ(1) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1176, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g297, 0) + EVT_CASE_EQ(2) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1175, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g296, 0) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1176, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(SetGroupEnabled, MODEL_g297, 0) + EVT_END_SWITCH + EVT_END_IF + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_18/pra_18_3_npc.c b/src/world/area_pra/pra_18/pra_18_3_npc.c new file mode 100644 index 0000000000..9df7f2d46f --- /dev/null +++ b/src/world/area_pra/pra_18/pra_18_3_npc.c @@ -0,0 +1,409 @@ +#include "pra_18.h" +#include "effects.h" + +#include "world/common/enemy/complete/FrostClubba.h" + +NpcSettings N(NpcSettings_Clubba) = { + .height = 70, + .radius = 60, + .level = 99, + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; + +EvtScript N(EVS_NpcInteract_Clubba_01) = { + EVT_CALL(SetSelfVar, 0, 1) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Clubba_02) = { + EVT_CALL(SetSelfVar, 0, 1) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_Clubba_03) = { + EVT_CALL(SetSelfVar, 0, 1) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_01) = { + EVT_CALL(SetSelfVar, 0, 2) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_02) = { + EVT_CALL(SetSelfVar, 0, 2) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_03) = { + EVT_CALL(SetSelfVar, 0, 2) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_01_Aux) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_02_Aux) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcHit_Clubba_03_Aux) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_Clubba_01) = { + EVT_LOOP(0) + EVT_WAIT(1) + EVT_CALL(GetSelfVar, 0, LVar0) + EVT_IF_NE(LVar0, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_CALL(GetNpcPos, NPC_SELF, LVar3, LVar4, LVar5) + EVT_CALL(IsPlayerWithin, LVar3, LVar5, 80, LVar0) + EVT_IF_EQ(LVar0, 1) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_IF_NE(LVar0, 2) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldClubba_Frost_Anim05, ANIM_WorldClubba_Frost_Anim02, 0, MSG_CH7_0150) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_IF + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_Clubba_02) = { + EVT_LOOP(0) + EVT_WAIT(1) + EVT_CALL(GetSelfVar, 0, LVar0) + EVT_IF_NE(LVar0, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_CALL(GetNpcPos, NPC_SELF, LVar3, LVar4, LVar5) + EVT_CALL(IsPlayerWithin, LVar3, LVar5, 80, LVar0) + EVT_IF_EQ(LVar0, 1) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_IF_NE(LVar0, 2) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldClubba_Frost_Anim05, ANIM_WorldClubba_Frost_Anim02, 0, MSG_CH7_0151) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_IF + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcIdle_Clubba_03) = { + EVT_LOOP(0) + EVT_WAIT(1) + EVT_CALL(GetSelfVar, 0, LVar0) + EVT_IF_NE(LVar0, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_CALL(GetNpcPos, NPC_SELF, LVar3, LVar4, LVar5) + EVT_CALL(IsPlayerWithin, LVar3, LVar5, 80, LVar0) + EVT_IF_EQ(LVar0, 1) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_CALL(GetSelfVar, 0, LVar0) + EVT_IF_NE(LVar0, 2) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldClubba_Frost_Anim05, ANIM_WorldClubba_Frost_Anim02, 0, MSG_CH7_0152) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_IF + EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PlayClubbaDefeatFX) = { + EVT_WAIT(20) + EVT_LOOP(4) + EVT_SET(LVar0, LVarA) + EVT_SET(LVar1, LVarB) + EVT_SET(LVar2, LVarC) + EVT_CALL(RandInt, 50, LVar3) + EVT_CALL(RandInt, 50, LVar4) + EVT_ADD(LVar0, -15) + EVT_ADD(LVar0, LVar3) + EVT_ADD(LVar1, LVar4) + EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.8), 0) + EVT_CALL(PlaySoundAt, SOUND_B0000018, 0, LVar0, LVar1, LVar2) + EVT_WAIT(2) + EVT_SET(LVar0, LVarA) + EVT_SET(LVar1, LVarB) + EVT_SET(LVar2, LVarC) + EVT_CALL(RandInt, 50, LVar3) + EVT_CALL(RandInt, 50, LVar4) + EVT_ADD(LVar0, -15) + EVT_ADD(LVar0, LVar3) + EVT_ADD(LVar1, LVar4) + EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.8), 0) + EVT_CALL(PlaySoundAt, SOUND_B0000018, 0, LVar0, LVar1, LVar2) + EVT_WAIT(8) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_Clubba_01) = { + EVT_THREAD + EVT_CALL(DisablePlayerInput, TRUE) + EVT_WAIT(50) + EVT_LOOP(10) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g297, 1) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g297, 0) + EVT_END_LOOP + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1176, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(GB_PRA18_ClubbasDefeated, 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(30) + EVT_SET(LVarA, 270) + EVT_SET(LVarB, 20) + EVT_SET(LVarC, -75) + EVT_EXEC(N(EVS_PlayClubbaDefeatFX)) + EVT_END_THREAD + EVT_CALL(DoNpcDefeat) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_Clubba_02) = { + EVT_THREAD + EVT_CALL(DisablePlayerInput, TRUE) + EVT_WAIT(50) + EVT_LOOP(10) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g296, 1) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g296, 0) + EVT_END_LOOP + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1175, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(GB_PRA18_ClubbasDefeated, 2) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(30) + EVT_SET(LVarA, 480) + EVT_SET(LVarB, 20) + EVT_SET(LVarC, -75) + EVT_EXEC(N(EVS_PlayClubbaDefeatFX)) + EVT_END_THREAD + EVT_CALL(DoNpcDefeat) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcDefeat_Clubba_03) = { + EVT_THREAD + EVT_CALL(DisablePlayerInput, TRUE) + EVT_WAIT(50) + EVT_LOOP(10) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g298, 1) + EVT_WAIT(2) + EVT_CALL(SetGroupEnabled, MODEL_g298, 0) + EVT_END_LOOP + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1174, COLLIDER_FLAGS_UPPER_MASK) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_33_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittne, 1, 0) + EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(30) + EVT_SET(LVarA, 725) + EVT_SET(LVarB, 20) + EVT_SET(LVarC, -75) + EVT_EXEC(N(EVS_PlayClubbaDefeatFX)) + EVT_END_THREAD + EVT_CALL(DoNpcDefeat) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_01) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_IF_GE(GB_PRA18_ClubbasDefeated, 1) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Clubba_01))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Clubba_01))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Clubba_01))) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_01))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_02) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_IF_GE(GB_PRA18_ClubbasDefeated, 2) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Clubba_02))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Clubba_02))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Clubba_02))) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_02))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_03) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Clubba_03))) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Clubba_03))) + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Clubba_03))) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_03))) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_01_Aux) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_IF_GE(GB_PRA18_ClubbasDefeated, 1) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_01_Aux))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_02_Aux) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_IF_GE(GB_PRA18_ClubbasDefeated, 2) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_02_Aux))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Clubba_03_Aux) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_CLUBBAS) + EVT_CALL(RemoveNpc, NPC_SELF) + EVT_RETURN + EVT_END_IF + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE) + EVT_CALL(BindNpcHit, NPC_SELF, EVT_PTR(N(EVS_NpcHit_Clubba_03_Aux))) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_Clubba_01)[] = { + { + .id = NPC_Clubba_01, + .settings = &N(NpcSettings_Clubba), + .pos = { 268.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_01), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, + { + .id = NPC_Clubba_01_Aux, + .settings = &N(NpcSettings_Clubba), + .pos = { 268.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_01_Aux), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, +}; + +StaticNpc N(NpcData_Clubba_02)[] = { + { + .id = NPC_Clubba_02, + .settings = &N(NpcSettings_Clubba), + .pos = { 490.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_02), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, + { + .id = NPC_Clubba_02_Aux, + .settings = &N(NpcSettings_Clubba), + .pos = { 490.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_02_Aux), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, +}; + +StaticNpc N(NpcData_Clubba_03)[] = { + { + .id = NPC_Clubba_03, + .settings = &N(NpcSettings_Clubba), + .pos = { 717.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_100000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_03), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, + { + .id = NPC_Clubba_03_Aux, + .settings = &N(NpcSettings_Clubba), + .pos = { 717.0f, 0.0f, 70.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Clubba_03_Aux), + .drops = NPC_NO_DROPS, + .animations = FROST_CLUBBA_ANIMS, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_Clubba_01), BTL_PRA_FORMATION_0B, BTL_PRA_STAGE_02), + NPC_GROUP(N(NpcData_Clubba_02), BTL_PRA_FORMATION_09, BTL_PRA_STAGE_02), + NPC_GROUP(N(NpcData_Clubba_03), BTL_PRA_FORMATION_0C, BTL_PRA_STAGE_03), + {} +}; diff --git a/src/world/area_pra/pra_19/pra_19.h b/src/world/area_pra/pra_19/pra_19.h index ba7073ba6e..fc47295423 100644 --- a/src/world/area_pra/pra_19/pra_19.h +++ b/src/world/area_pra/pra_19/pra_19.h @@ -18,27 +18,27 @@ #include "sprite/npc/Luigi.h" enum { - // passive NPC for each imposter than can be interacted with + // passive NPC for each imposter than can be interacted with NPC_FakeKooper = 0, NPC_FakeGoompa = 1, NPC_FakeLuigi = 2, NPC_FakeKoopaKoot = 3, NPC_FakeKolorado = 4, - // mario and partner in the mirror showing what to do + // mario and partner in the mirror showing what to do NPC_ExamplePlayer = 5, NPC_ExampleKooper = 6, - // duplighosts for each imposter + // duplighosts for each imposter NPC_GoompaGhost = 7, NPC_LuigiGhost = 8, NPC_KoopaKootGhost = 9, NPC_KoloradoGhost = 10, NPC_Duplighost_Controller = 11, // controls the scene - // second set of NPCs for each imposter which detect hammer hits - NPC_TargetKooper = 12, - NPC_TargetGoompa = 13, - NPC_TargetLuigi = 14, - NPC_TargetKoopaKoot = 15, - NPC_TargetKolorado = 16, + // second set of NPCs for each imposter which detect hammer hits + NPC_TargetKooper = 12, + NPC_TargetGoompa = 13, + NPC_TargetLuigi = 14, + NPC_TargetKoopaKoot = 15, + NPC_TargetKolorado = 16, }; enum { diff --git a/src/world/area_pra/pra_19/pra_19_3_npc.c b/src/world/area_pra/pra_19/pra_19_3_npc.c index 2b0813385f..d1a6d64f2b 100644 --- a/src/world/area_pra/pra_19/pra_19_3_npc.c +++ b/src/world/area_pra/pra_19/pra_19_3_npc.c @@ -82,7 +82,7 @@ API_CALLABLE(N(ChooseImposterBattleFormation)) { void N(appendGfx_example_player)(void* data); void N(worker_draw_example_player)(void); -API_CALLABLE(N(CreateExamplePlayerWorker)) { +API_CALLABLE(N(CreateExamplePlayerRenderer)) { script->array[0] = create_worker_world(NULL, N(worker_draw_example_player)); return ApiStatus_DONE2; } @@ -118,6 +118,7 @@ void N(appendGfx_example_player)(void* data) { spr_draw_player_sprite(PLAYER_SPRITE_AUX2, 0, 0, 0, mtxTransform); } + API_CALLABLE(N(SetPlayerFacingAngle)) { gPlayerStatus.spriteFacingAngle = script->varTable[0]; return ApiStatus_DONE2; @@ -203,7 +204,6 @@ API_CALLABLE(N(UpdateExampleKooperMotion)) { return ApiStatus_BLOCK; } - EvtScript N(EVS_FocusCam_OnPosition) = { EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) EVT_CALL(SetCamSpeed, CAM_DEFAULT, LVarA) @@ -963,7 +963,7 @@ EvtScript N(EVS_NpcInit_ExamplePlayer) = { EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Mario_10002) EVT_MALLOC_ARRAY(16, LVarA) - EVT_CALL(N(CreateExamplePlayerWorker)) + EVT_CALL(N(CreateExamplePlayerRenderer)) EVT_RETURN EVT_END }; diff --git a/src/world/area_pra/pra_29/D7CB50.c b/src/world/area_pra/pra_29/D7CB50.c deleted file mode 100644 index acfdff809c..0000000000 --- a/src/world/area_pra/pra_29/D7CB50.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_29.h" - -static char* N(exit_str_0) = "pra_20"; -static char* N(exit_str_1) = "pra_34"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_29/D7CB70.c b/src/world/area_pra/pra_29/D7CB70.c deleted file mode 100644 index 4a4a4c1797..0000000000 --- a/src/world/area_pra/pra_29/D7CB70.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "pra_29.h" - -#include "../common/Reflection.inc.c" - -void func_80240F20_D7DA70(Vtx* arg0, Vtx* arg1, Vtx* arg2, s32 numVerticies, s32 arg4) { - s32 temp_t3; - s32 var_t2; - s32 temp_t5; - s32 i; - - temp_t3 = 255 - arg4; - var_t2 = arg4; - if (var_t2 > 255) { - var_t2 = 255; - } - temp_t5 = 255 - var_t2; - - for (i = 0; i < numVerticies; i++) { - arg2[i].v.ob[0] = ((arg0[i].v.ob[0] * temp_t3) + (arg1[i].v.ob[0] * arg4)) / 255; - arg2[i].v.ob[1] = ((arg0[i].v.ob[1] * temp_t3) + (arg1[i].v.ob[1] * arg4)) / 255; - arg2[i].v.ob[2] = ((arg0[i].v.ob[2] * temp_t3) + (arg1[i].v.ob[2] * arg4)) / 255; - arg2[i].v.tc[0] = ((arg0[i].v.tc[0] * temp_t5) + (arg1[i].v.tc[0] * var_t2)) / 255; - arg2[i].v.tc[1] = ((arg0[i].v.tc[1] * temp_t5) + (arg1[i].v.tc[1] * var_t2)) / 255; - } -} - -void func_802410B0_D7DC00(s32 index) { - Vtx* first1; - Vtx* copied1; - s32 numVertices; - Vtx* first2; - Vtx* copied2; - s32 v0 = evt_get_variable(NULL, MapVar(0)); - if (v0 < 256) { - mdl_get_copied_vertices(index * 3, &first1, &copied1, &numVertices); - mdl_get_copied_vertices(index * 3 + 1, &first2, &copied2, &numVertices); - func_80240F20_D7DA70(first2, first1, copied1, numVertices, v0); - if (v0 == 0) { - return; - } - gSPDisplayList(gMasterGfxPos++, mdl_get_copied_gfx(index * 3)); - } else { - mdl_get_copied_vertices(index * 3, &first1, &copied1, &numVertices); - mdl_get_copied_vertices(index * 3 + 2, &first2, &copied2, &numVertices); - func_80240F20_D7DA70(first1, first2, copied1, numVertices, v0 - 256); - gSPDisplayList(gMasterGfxPos++, mdl_get_copied_gfx(index * 3)); - } - -} - -#include "world/common/todo/PlayRisingBubble.inc.c" diff --git a/src/world/area_pra/pra_29/pra_29.h b/src/world/area_pra/pra_29/pra_29.h index a50b22ea2a..2f5d745004 100644 --- a/src/world/area_pra/pra_29/pra_29.h +++ b/src/world/area_pra/pra_29/pra_29.h @@ -2,8 +2,21 @@ /// @brief Crystal Palace - Hidden Bridge Room #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_29_shape.h" +#include "mapfs/pra_29_hit.h" + +enum { + MV_BridgeExtendAmt = MapVar(0), + MV_UnusedBridgeAlpha = MapVar(1), +}; + #define NAMESPACE pra_29 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_SetupBridge); +extern EvtScript N(EVS_MakeEntities); diff --git a/src/world/area_pra/pra_29/pra_29_0_header.c b/src/world/area_pra/pra_29/pra_29_0_header.c new file mode 100644 index 0000000000..2b69d96d50 --- /dev/null +++ b/src/world/area_pra/pra_29/pra_29_0_header.c @@ -0,0 +1,17 @@ +#include "pra_29.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_29_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, + [pra_29_ENTRY_1] { 487.0, 0.0, 70.0, 270.0 }, + [pra_29_ENTRY_2] { 487.0, 0.0, -70.0, 270.0 }, + [pra_29_ENTRY_3] { 13.0, 0.0, -70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_29 }, +}; diff --git a/src/world/area_pra/pra_29/pra_29_1_music.c b/src/world/area_pra/pra_29/pra_29_1_music.c new file mode 100644 index 0000000000..c313ca22cd --- /dev/null +++ b/src/world/area_pra/pra_29/pra_29_1_music.c @@ -0,0 +1,8 @@ +#include "pra_29.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_29/pra_29_2_entity.c b/src/world/area_pra/pra_29/pra_29_2_entity.c new file mode 100644 index 0000000000..09fc29ec56 --- /dev/null +++ b/src/world/area_pra/pra_29/pra_29_2_entity.c @@ -0,0 +1,13 @@ +#include "pra_29.h" +#include "entity.h" + +EvtScript N(EVS_MakeEntities) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_EXTENDED_PALACE_BRIDGE) + EVT_ELSE + EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), 330, 0, -77, 0, 2, MAKE_ENTITY_END) + EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), 330, 0, 77, 0, 1, MAKE_ENTITY_END) + EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_PRA09_HitSwitch)) + EVT_END_IF + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_29/pra_29_3_main.c b/src/world/area_pra/pra_29/pra_29_3_main.c new file mode 100644 index 0000000000..10e973b0e9 --- /dev/null +++ b/src/world/area_pra/pra_29/pra_29_3_main.c @@ -0,0 +1,177 @@ +#include "pra_29.h" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +#include "../common/GlassShimmer.inc.c" + +s32 N(NearLeftDoorModelsL)[] = { MODEL_o772, -1 }; +s32 N(NearLeftDoorModelsR)[] = { MODEL_o768, -1 }; +s32 N(FarLeftDoorModelsL)[] = { MODEL_o859, -1 }; +s32 N(FarLeftDoorModelsR)[] = { MODEL_o861, -1 }; +s32 N(BothLeftDoorModelsL)[] = { MODEL_o772, MODEL_o859, -1 }; +s32 N(BothLeftDoorModelsR)[] = { MODEL_o768, MODEL_o861, -1 }; + +s32 N(NearRightDoorModelsL)[] = { MODEL_o995, -1 }; +s32 N(NearRightDoorModelsR)[] = { MODEL_o997, -1 }; +s32 N(FarRightDoorModelsL)[] = { MODEL_o1096, -1 }; +s32 N(FarRightDoorModelsR)[] = { MODEL_o1094, -1 }; +s32 N(BothRightDoorModelsL)[] = { MODEL_o995, MODEL_o1096, -1 }; +s32 N(BothRightDoorModelsR)[] = { MODEL_o997, MODEL_o1094, -1 }; + +EvtScript N(EVS_ExitDoors_pra_20_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_29_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_20"), pra_20_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_34_0) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_29_ENTRY_1) + EVT_SET(LVar1, COLLIDER_deilittse) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_34"), pra_34_ENTRY_0) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_34_3) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_29_ENTRY_2) + EVT_SET(LVar1, COLLIDER_deilittne) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_34"), pra_34_ENTRY_3) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_20_3) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_29_ENTRY_3) + EVT_SET(LVar1, COLLIDER_deilittnw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_20"), pra_20_ENTRY_3) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_20_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_34_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittse, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_34_3)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittne, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_20_3)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_29_ENTRY_0) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_29_ENTRY_1) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_29_ENTRY_2) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_29_ENTRY_3) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_END_SWITCH + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_EXEC_WAIT(N(EVS_MakeEntities)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_EXEC(N(EVS_SetupBridge)) + EVT_SET(LVar0, MODEL_o945) + EVT_SET(LVar1, MODEL_o945) + EVT_SET(LVar2, TEX_PANNER_0) + EVT_EXEC(N(EVS_GlassShimmer)) + EVT_SET(LVar0, REFLECTION_WALL_ONLY) + EVT_IF_GE(GB_StoryProgress, STORY_CH7_EXTENDED_PALACE_BRIDGE) + EVT_SET(LVar1, TRUE) + EVT_ELSE + EVT_SET(LVar1, FALSE) + EVT_END_IF + EVT_EXEC(N(EVS_SetupReflections)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_29/pra_29_4_bridge.c b/src/world/area_pra/pra_29/pra_29_4_bridge.c new file mode 100644 index 0000000000..cca000ab43 --- /dev/null +++ b/src/world/area_pra/pra_29/pra_29_4_bridge.c @@ -0,0 +1,108 @@ +#include "pra_29.h" + +void N(set_bride_vertex_positions)(Vtx* arg0, Vtx* arg1, Vtx* dest, s32 numVerticies, s32 extendAmt) { + s32 temp_t3; + s32 var_t2; + s32 temp_t5; + s32 i; + + temp_t3 = 255 - extendAmt; + var_t2 = extendAmt; + if (var_t2 > 255) { + var_t2 = 255; + } + temp_t5 = 255 - var_t2; + + for (i = 0; i < numVerticies; i++) { + dest[i].v.ob[0] = ((arg0[i].v.ob[0] * temp_t3) + (arg1[i].v.ob[0] * extendAmt)) / 255; + dest[i].v.ob[1] = ((arg0[i].v.ob[1] * temp_t3) + (arg1[i].v.ob[1] * extendAmt)) / 255; + dest[i].v.ob[2] = ((arg0[i].v.ob[2] * temp_t3) + (arg1[i].v.ob[2] * extendAmt)) / 255; + dest[i].v.tc[0] = ((arg0[i].v.tc[0] * temp_t5) + (arg1[i].v.tc[0] * var_t2)) / 255; + dest[i].v.tc[1] = ((arg0[i].v.tc[1] * temp_t5) + (arg1[i].v.tc[1] * var_t2)) / 255; + } +} + +void N(setup_gfx_bridge)(s32 index) { + Vtx* srcVtx1; + Vtx* srcVtx2; + Vtx* dest1; + Vtx* dest2; + s32 numVertices; + s32 extendAmt = evt_get_variable(NULL, MV_BridgeExtendAmt); + if (extendAmt <= 255) { + mdl_get_copied_vertices(index * 3 + 0, &srcVtx1, &dest1, &numVertices); + mdl_get_copied_vertices(index * 3 + 1, &srcVtx2, &dest2, &numVertices); + N(set_bride_vertex_positions)(srcVtx2, srcVtx1, dest1, numVertices, extendAmt); + if (extendAmt == 0) { + return; + } + gSPDisplayList(gMasterGfxPos++, mdl_get_copied_gfx(index * 3)); + } else { + mdl_get_copied_vertices(index * 3 + 0, &srcVtx1, &dest1, &numVertices); + mdl_get_copied_vertices(index * 3 + 2, &srcVtx2, &dest2, &numVertices); + N(set_bride_vertex_positions)(srcVtx1, srcVtx2, dest1, numVertices, extendAmt - 256); + gSPDisplayList(gMasterGfxPos++, mdl_get_copied_gfx(index * 3)); + } + +} + +#include "world/common/todo/PlayRisingBubble.inc.c" + +EvtScript N(EVS_ExtendBridgeFromMirror) = { + EVT_WAIT(40) + EVT_THREAD + EVT_LOOP(5) + EVT_CALL(N(PlayRisingBubble), 260, 0, 0) + EVT_WAIT(10) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(PlaySoundAt, SOUND_2F, 0, 250, 0, 0) + EVT_CALL(MakeLerp, 0, 511, 80, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_SET(MV_BridgeExtendAmt, LVar0) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1041, COLLIDER_FLAGS_UPPER_MASK) + EVT_SET(GB_StoryProgress, STORY_CH7_EXTENDED_PALACE_BRIDGE) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_SetupBridge) = { + EVT_IF_LT(GB_StoryProgress, STORY_CH7_EXTENDED_PALACE_BRIDGE) + EVT_CALL(EnableModel, MODEL_u00, FALSE) + EVT_CALL(EnableModel, MODEL_s00, FALSE) + EVT_SET(MV_BridgeExtendAmt, 0) + EVT_SET(MV_UnusedBridgeAlpha, 255) + EVT_CALL(SetModelCustomGfx, MODEL_u02, CUSTOM_GFX_0, FOG_MODE_UNCHANGED) + EVT_CALL(SetModelCustomGfx, MODEL_s02, CUSTOM_GFX_1, FOG_MODE_UNCHANGED) + EVT_CALL(SetModelFlags, MODEL_u02, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_CALL(SetModelFlags, MODEL_s02, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) + EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_0, EVT_PTR(N(setup_gfx_bridge)), NULL) + EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_1, EVT_PTR(N(setup_gfx_bridge)), NULL) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_0, MODEL_u02, TRUE) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_1, MODEL_u01, FALSE) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_2, MODEL_u03, FALSE) + EVT_CALL(SetModelFlags, MODEL_u02, MODEL_FLAG_USES_CUSTOM_GFX | MODEL_FLAG_HAS_LOCAL_VERTEX_COPY, TRUE) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_3, MODEL_s02, TRUE) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_4, MODEL_s01, FALSE) + EVT_CALL(MakeLocalVertexCopy, VTX_COPY_5, MODEL_s03, FALSE) + EVT_CALL(SetModelFlags, MODEL_s02, MODEL_FLAG_USES_CUSTOM_GFX | MODEL_FLAG_HAS_LOCAL_VERTEX_COPY, TRUE) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExtendBridgeFromMirror)), TRIGGER_AREA_FLAG_SET, AF_PRA09_HitSwitch, 1, 0) + EVT_ELSE + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1041, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(EnableModel, MODEL_u00, FALSE) + EVT_CALL(EnableModel, MODEL_u01, FALSE) + EVT_CALL(EnableModel, MODEL_u02, FALSE) + EVT_CALL(EnableModel, MODEL_s00, FALSE) + EVT_CALL(EnableModel, MODEL_s01, FALSE) + EVT_CALL(EnableModel, MODEL_s02, FALSE) + EVT_END_IF + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_31/D7ED60.c b/src/world/area_pra/pra_31/D7ED60.c deleted file mode 100644 index 1f6fd35944..0000000000 --- a/src/world/area_pra/pra_31/D7ED60.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "pra_31.h" - -static char* N(exit_str_0) = "pra_34"; -static char* N(exit_str_1) = "pra_40"; - -ApiStatus func_80240000_D7ED60(Evt* script, s32 isInitialCall) { - gGameStatusPtr->playerSpriteSet = PLAYER_SPRITES_MARIO_REFLECT_FLOOR; - return ApiStatus_BLOCK; -} diff --git a/src/world/area_pra/pra_31/D7ED80.c b/src/world/area_pra/pra_31/D7ED80.c deleted file mode 100644 index a4098d0283..0000000000 --- a/src/world/area_pra/pra_31/D7ED80.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "pra_31.h" - -#include "world/common/todo/GetNpcCollisionHeight.inc.c" - -#include "world/common/todo/AddPlayerHandsOffset.inc.c" - -extern s32 N(ItemChoice_HasSelectedItem); -extern s32 N(ItemChoice_SelectedItemID); -#include "world/common/todo/ItemChoice_WaitForSelection.inc.c" - -ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - - N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++); - N(ItemChoice_HasSelectedItem) = TRUE; - return ApiStatus_DONE2; -} - -BSS s32 D_80247CA0[114]; -BSS s32 D_80247E68[92]; - -ApiStatus func_802402D8_D7F038(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - D_80247CA0[i] = ptr[i]; - } - D_80247CA0[i] = 0; - } else { - for (i = 0; i < 112; i++) { - D_80247CA0[i] = i + 16; - D_80247CA0[112] = 0; - } - } - return ApiStatus_DONE2; -} - -ApiStatus func_80240374_D7F0D4(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32* ptr = (s32*) evt_get_variable(script, *args++); - s32 i; - - if (ptr != NULL) { - for (i = 0; ptr[i] != 0; i++) { - D_80247E68[i] = ptr[i]; - } - D_80247E68[i] = 0; - } else { - for (i = 0; i < 91; i++) { - D_80247E68[i] = i + 128; - D_80247E68[91] = 0; - } - } - return ApiStatus_DONE2; -} - -ApiStatus func_80240410_D7F170(Evt* script, s32 isInitialCall) { - Npc* npc = get_npc_safe(script->owner2.npcID); - - script->varTable[0] = clamp_angle(atan2(npc->pos.x, npc->pos.z, gPlayerStatus.position.x, gPlayerStatus.position.z)); - return ApiStatus_DONE2; -} - -ApiStatus func_80240468_D7F1C8(Evt* script, s32 isInitialCall) { - script->varTable[6] = script->varTable[0] + 90; - script->varTable[7] = script->varTable[5] + 90; - script->varTable[8] = abs(script->varTable[6] - script->varTable[7]); - - if (script->varTable[8] == 270) { - script->varTable[8] = 90; - if (script->varTable[6] > script->varTable[7]) { - script->varTable[6] -= 360; - } else { - script->varTable[7] -= 360; - } - } - script->varTable[8] = (script->varTable[8] / 90) * 20; - return ApiStatus_DONE2; -} diff --git a/src/world/area_pra/pra_31/D7F270.c b/src/world/area_pra/pra_31/D7F270.c deleted file mode 100644 index 2f8ae6162f..0000000000 --- a/src/world/area_pra/pra_31/D7F270.c +++ /dev/null @@ -1,280 +0,0 @@ -#include "pra_31.h" - -typedef struct UnkPra31 { - /* 0x00 */ s16 unk_00; - /* 0x02 */ s16 unk_02; - /* 0x04 */ f32 unk_04; - /* 0x08 */ f32 unk_08; - /* 0x0C */ f32 unk_0C; - /* 0x10 */ f32 unk_10; - /* 0x14 */ f32 unk_14; -} UnkPra31; // size = 0x18 - -typedef struct UnkPra31Big { - /* 0x00 */ UnkPra31 unk_00[3]; - /* 0x48 */ s16 unk_48[3][9]; - /* 0x7E */ char unk_7E[0x2]; -} UnkPra31Big; // size = 0x80 - -extern s32 D_802424F0_D81250[][3]; -extern s32 D_80242514_D81274[][3]; -extern s16 D_80242538_D81298[3][9]; - -ApiStatus func_80240510_D7F270(Evt* script, s32 isInitialCAll) { - UnkPra31Big* big; - UnkPra31* inner; - s32 temp_a1; - s32 cond; - s32 i, j; - - if (isInitialCAll) { - big = heap_malloc(sizeof(*big)); - evt_set_variable(script, MapVar(0), (s32) big); - temp_a1 = evt_get_variable(script, GameByte(0)); - - for (i = 0; i < ARRAY_COUNT(big->unk_48); i++) { - for (j = 0; j < ARRAY_COUNT(big->unk_48[0]); j++) { - big->unk_48[i][j] = 0; - } - } - - for (j = 0, inner = &big->unk_00[0]; j < ARRAY_COUNT(big->unk_48); j++, inner++) { - if (temp_a1 < 85) { - inner->unk_00 = D_802424F0_D81250[j][0]; - inner->unk_02 = D_802424F0_D81250[j][1]; - inner->unk_14 = D_802424F0_D81250[j][2]; - } else { - inner->unk_00 = D_80242514_D81274[j][0]; - inner->unk_02 = D_80242514_D81274[j][1]; - inner->unk_14 = D_80242514_D81274[j][2]; - } - inner->unk_04 = inner->unk_0C = (inner->unk_00 * 50) + 50; - inner->unk_08 = inner->unk_10 = (inner->unk_02 * 50) + 75; - big->unk_48[inner->unk_02][inner->unk_00] = -1; - } - evt_set_variable(script, MapVar(3), 270); - evt_set_variable(script, MapVar(4), 270); - evt_set_variable(script, MapVar(5), 270); - } - - big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - inner = &big->unk_00[0]; - for (j = 0; j < ARRAY_COUNT(big->unk_48); j++, inner++) { - if (inner->unk_04 < inner->unk_0C) { - inner->unk_04 += 1.25f; - } - if (inner->unk_04 > inner->unk_0C) { - inner->unk_04 -= 1.25f; - } - if (inner->unk_08 < inner->unk_10) { - inner->unk_08 += 1.25f; - } - if (inner->unk_08 > inner->unk_10) { - inner->unk_08 -= 1.25f; - } - } - - cond = FALSE; - for (i = 0; i < ARRAY_COUNT(big->unk_48); i++) { - for (j = 0; j < ARRAY_COUNT(big->unk_48[0]); j++) { - if (big->unk_48[i][j] > 0) { - big->unk_48[i][j]--; - } - - if (big->unk_48[i][j] != D_80242538_D81298[i][j]) { - cond = TRUE; - } - } - } - - if (!cond) { - evt_set_variable(script, MapVar(1), 1); - } - return ApiStatus_BLOCK; -} - -ApiStatus func_80240818_D7F578(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - f32 temp_f20 = evt_get_float_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - - structPtr->unk_14 = temp_f20; - return ApiStatus_DONE2; -} - -ApiStatus func_80240894_D7F5F4(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - s32 var_s0; - s32 var_s1; - s32 i; - - script->varTable[0] = 0; - - switch ((s32) structPtr->unk_14) { - case 0: - var_s0 = structPtr->unk_00; - var_s1 = structPtr->unk_02 - 1; - break; - case 90: - var_s1 = structPtr->unk_02; - var_s0 = structPtr->unk_00 + 1; - break; - case 180: - var_s0 = structPtr->unk_00; - var_s1 = structPtr->unk_02 + 1; - break; - case 270: - var_s1 = structPtr->unk_02; - var_s0 = structPtr->unk_00 - 1; - break; - } - - for (i = 0; i < ARRAY_COUNT(big->unk_48); i++) { - if (i != idx && - var_s0 == big->unk_00[i].unk_00 && - var_s1 == big->unk_00[i].unk_02) - { - script->varTable[0] = 1; - } - } - - if (var_s0 < 0) { - script->varTable[0] = 1; - } - if (var_s0 >= ARRAY_COUNT(big->unk_48[0])) { - script->varTable[0] = 1; - } - if (var_s1 < 0) { - script->varTable[0] = 1; - } - if (var_s1 >= ARRAY_COUNT(big->unk_48)) { - script->varTable[0] = 1; - } - if (script->varTable[0] == 1 && gPlayerStatusPtr->actionState == ACTION_STATE_PUSHING_BLOCK) { - set_action_state(ACTION_STATE_IDLE); - } - return ApiStatus_DONE2; -} - -ApiStatus func_80240A3C_D7F79C(Evt* script) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - - big->unk_48[structPtr->unk_02][structPtr->unk_00] = 20; - - switch ((s32) structPtr->unk_14) { - case 0: - structPtr->unk_02--; - break; - case 90: - structPtr->unk_00++; - break; - case 180: - structPtr->unk_02++; - break; - case 270: - structPtr->unk_00--; - } - - big->unk_48[structPtr->unk_02][structPtr->unk_00] = -1; - structPtr->unk_0C = ((structPtr->unk_00 * 50) + 50); - structPtr->unk_10 = ((structPtr->unk_02 * 50) + 75); - return ApiStatus_DONE2; -} - -ApiStatus func_80240BBC_D7F91C(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - s32 temp_f2 = structPtr->unk_14; - - switch (temp_f2) { - case 0: - script->varTable[0] = 180; - break; - case 0xB4: - script->varTable[0] = 0; - break; - case 90: - case 270: - script->varTable[0] = temp_f2; - break; - } - return ApiStatus_DONE2; -} - -ApiStatus func_80240C70_D7F9D0(Evt* script, s32 isInitialCall) { - PlayerStatus* playerStatus = &gPlayerStatus; - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - s32 temp_f4 = structPtr->unk_14; - - switch (temp_f4) { - case 0: - script->varTable[3] = playerStatus->position.z; - script->varTable[4] = playerStatus->position.z + 50.0f; - script->varTable[5] = 1; - break; - case 90: - script->varTable[3] = playerStatus->position.x; - script->varTable[4] = playerStatus->position.x + 50.0f; - script->varTable[5] = 0; - break; - case 180: - script->varTable[3] = playerStatus->position.z; - script->varTable[4] = playerStatus->position.z - 50.0f; - script->varTable[5] = 1; - break; - case 270: - script->varTable[3] = playerStatus->position.x; - script->varTable[4] = playerStatus->position.x - 50.0f; - script->varTable[5] = 0; - break; - } - return ApiStatus_DONE2; -} - -#include "world/common/todo/UnkFunc12.inc.c" - -ApiStatus func_80240E70_D7FBD0(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - - evt_set_float_variable(script, LocalVar(0), structPtr->unk_04); - evt_set_float_variable(script, LocalVar(1), -structPtr->unk_08); - evt_set_float_variable(script, LocalVar(2), clamp_angle(structPtr->unk_14 + 90.0)); - return ApiStatus_DONE2; -} - -ApiStatus func_80240F2C_D7FC8C(Evt* script, s32 isInitialCall) { - Bytecode* args = script->ptrReadPos; - s32 idx = evt_get_variable(script, *args++); - UnkPra31Big* big = (UnkPra31Big*) evt_get_variable(script, MapVar(0)); - UnkPra31* structPtr = &big->unk_00[idx]; - - evt_set_float_variable(script, LocalVar(0), structPtr->unk_04); - evt_set_float_variable(script, LocalVar(1), structPtr->unk_08); - evt_set_float_variable(script, LocalVar(2), clamp_angle(structPtr->unk_14)); - return ApiStatus_DONE2; -} - -ApiStatus func_80240FD0_D7FD30(Evt* script, s32 isInitialCall) { - PlayerStatus* playerStatus = &gPlayerStatus; - - playerStatus->animFlags |= PA_FLAG_PUSHED_ALBINO_DINO; - return ApiStatus_DONE2; -} - -#include "world/common/todo/UnkFunc11.inc.c" diff --git a/src/world/area_pra/pra_31/pra_31.h b/src/world/area_pra/pra_31/pra_31.h index 818905089a..23e4a4f5c0 100644 --- a/src/world/area_pra/pra_31/pra_31.h +++ b/src/world/area_pra/pra_31/pra_31.h @@ -2,8 +2,68 @@ /// @brief Crystal Palace - Dino Puzzle Room #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_31_shape.h" +#include "mapfs/pra_31_hit.h" + +#include "animation_script.h" + +enum { + NPC_AlbinoDino_01 = 0, + NPC_AlbinoDino_02 = 1, + NPC_AlbinoDino_03 = 2, +}; + +enum { + MV_PuzzleDataPtr = MapVar(0), + MV_PuzzleSolved = MapVar(1), + MV_PushingStatue = MapVar(2), + MV_DinoYaw_01 = MapVar(3), + MV_DinoYaw_02 = MapVar(4), + MV_DinoYaw_03 = MapVar(5), + MV_StatueYaw_01 = MapVar(6), + MV_StatueYaw_02 = MapVar(7), + MV_StatueYaw_03 = MapVar(8), +}; + #define NAMESPACE pra_31 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_SetupPuzzle); +extern NpcGroupList N(DefaultNPCs); + +API_CALLABLE(N(SetDinoAngle)); + +ApiStatus InitAnimatedModels(Evt* script, s32 isInitialCall); +ApiStatus SetAnimatedModelRenderMode(Evt* script, s32 isInitialCall); +ApiStatus DeleteAnimatedModel(Evt* script, s32 isInitialCall); + +extern StaticAnimatorNode* N(AS_Stairs_Skeleton)[]; +extern AnimScript N(AS_Stairs_InitializeBefore); +extern AnimScript N(AS_Stairs_Unfold); +extern AnimScript N(AS_Stairs_InitializeAfter); + +extern Gfx N(texture_1_gfx)[]; +extern Gfx N(texture_2_gfx)[]; +extern Gfx N(texture_3_gfx)[]; + +extern Vtx N(stairs_vtx)[]; +extern Lights1 N(stairs_lights); +extern Matrix4s N(unk_30_mtx); +extern Matrix4s N(unk_26_mtx); +extern Matrix4s N(unk_24_mtx); +extern Matrix4s N(unk_22_mtx); +extern Matrix4s N(unk_20_mtx); +extern Matrix4s N(unk_18_mtx); +extern Matrix4s N(unk_16_mtx); +extern Matrix4s N(unk_14_mtx); +extern Matrix4s N(unk_12_mtx); +extern Matrix4s N(unk_10_mtx); +extern Matrix4s N(unk_08_mtx); +extern Matrix4s N(unk_06_mtx); +extern Matrix4s N(unk_04_mtx); +extern Matrix4s N(unk_02_mtx); diff --git a/src/world/area_pra/pra_31/pra_31_0_header.c b/src/world/area_pra/pra_31/pra_31_0_header.c new file mode 100644 index 0000000000..426f3420fe --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_0_header.c @@ -0,0 +1,16 @@ +#include "pra_31.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_31_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, + [pra_31_ENTRY_1] { 487.0, 50.0, 13.0, 270.0 }, + [pra_31_ENTRY_2] { 13.0, 0.0, -70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_31 }, +}; diff --git a/src/world/area_pra/pra_31/pra_31_10_stairs_lights.c b/src/world/area_pra/pra_31/pra_31_10_stairs_lights.c new file mode 100644 index 0000000000..be0eb80f6b --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_10_stairs_lights.c @@ -0,0 +1,3 @@ +#include "pra_31.h" + +Lights1 N(stairs_lights) = gdSPDefLights1(0, 0, 0, 0, 0, 0, 0, 0, 0); diff --git a/src/world/area_pra/pra_31/pra_31_11_stairs_vtx.c b/src/world/area_pra/pra_31/pra_31_11_stairs_vtx.c new file mode 100644 index 0000000000..81e6844cae --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_11_stairs_vtx.c @@ -0,0 +1,129 @@ +#include "pra_31.h" + +Matrix4s N(unk_30_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 500, 50, 0, 1 }, + }, +}; + +Matrix4s N(unk_26_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 420, 50, 0, 1 }, + }, +}; + +Matrix4s N(unk_24_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 420, 40, 0, 1 }, + }, +}; + +Matrix4s N(unk_22_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 410, 40, 0, 1 }, + }, +}; + +Matrix4s N(unk_20_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 400, 40, 0, 1 }, + }, +}; + +Matrix4s N(unk_18_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 400, 30, 0, 1 }, + }, +}; + +Matrix4s N(unk_16_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 390, 30, 0, 1 }, + }, +}; + +Matrix4s N(unk_14_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 380, 30, 0, 1 }, + }, +}; + +Matrix4s N(unk_12_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 380, 20, 0, 1 }, + }, +}; + +Matrix4s N(unk_10_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 370, 20, 0, 1 }, + }, +}; + +Matrix4s N(unk_08_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 360, 20, 0, 1 }, + }, +}; + +Matrix4s N(unk_06_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 360, 10, 0, 1 }, + }, +}; + +Matrix4s N(unk_04_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 350, 10, 0, 1 }, + }, +}; + +Matrix4s N(unk_02_mtx) = { + .whole = { + { 1, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { 0, 0, 1, 0 }, + { 340, 10, 0, 1 }, + }, +}; + +#include "world/area_pra/pra_31/stairs.vtx.inc.c" diff --git a/src/world/area_pra/pra_31/pra_31_1_music.c b/src/world/area_pra/pra_31/pra_31_1_music.c new file mode 100644 index 0000000000..228ff38c3e --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_1_music.c @@ -0,0 +1,8 @@ +#include "pra_31.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_31/pra_31_2_npc.c b/src/world/area_pra/pra_31/pra_31_2_npc.c new file mode 100644 index 0000000000..f31930eefc --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_2_npc.c @@ -0,0 +1,208 @@ +#include "pra_31.h" + +#include "world/common/enemy/complete/AlbinoDino.inc.c" + +#include "world/common/complete/KeyItemChoice.inc.c" +MAP_STATIC_PAD(1,key_item); +#include "world/common/complete/NormalItemChoice.inc.c" + +API_CALLABLE(N(GetAngleToPlayer)) { + Npc* npc = get_npc_safe(script->owner2.npcID); + + script->varTable[0] = clamp_angle(atan2(npc->pos.x, npc->pos.z, gPlayerStatus.position.x, gPlayerStatus.position.z)); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(CalculateDinoLerpValues)) { + script->varTable[6] = script->varTable[0] + 90; + script->varTable[7] = script->varTable[5] + 90; + script->varTable[8] = abs(script->varTable[6] - script->varTable[7]); + + if (script->varTable[8] == 270) { + script->varTable[8] = 90; + if (script->varTable[6] > script->varTable[7]) { + script->varTable[6] -= 360; + } else { + script->varTable[7] -= 360; + } + } + script->varTable[8] = (script->varTable[8] / 90) * 20; + return ApiStatus_DONE2; +} + +EvtScript N(EVS_ChangeDinoDirection) = { + EVT_CALL(N(GetAngleToPlayer)) + EVT_SWITCH(LVar0) + EVT_CASE_RANGE(45, 134) + EVT_SET(LVar5, 90) + EVT_SET(LVar6, ANIM_AlbinoDino_Anim00) + EVT_SET(LVarA, 90) + EVT_CASE_RANGE(135, 224) + EVT_SET(LVar5, 180) + EVT_SET(LVar6, ANIM_AlbinoDino_Anim01) + EVT_SET(LVarA, 270) + EVT_CASE_RANGE(225, 314) + EVT_SET(LVar5, 270) + EVT_SET(LVar6, ANIM_AlbinoDino_Anim00) + EVT_SET(LVarA, 270) + EVT_CASE_DEFAULT + EVT_SET(LVar5, 0) + EVT_SET(LVar6, ANIM_AlbinoDino_Anim02) + EVT_SET(LVarA, 270) + EVT_END_SWITCH + EVT_SWITCH(LVar3) + EVT_CASE_EQ(NPC_AlbinoDino_01) + EVT_SET(LVar0, MV_DinoYaw_01) + EVT_CASE_EQ(NPC_AlbinoDino_02) + EVT_SET(LVar0, MV_DinoYaw_02) + EVT_CASE_EQ(NPC_AlbinoDino_03) + EVT_SET(LVar0, MV_DinoYaw_03) + EVT_END_SWITCH + EVT_IF_NE(LVar5, LVar0) + EVT_THREAD + EVT_CALL(N(CalculateDinoLerpValues)) + EVT_CALL(MakeLerp, LVar6, LVar7, LVar8, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_SWITCH(LVar3) + EVT_CASE_EQ(NPC_AlbinoDino_01) + EVT_SET(MV_StatueYaw_01, LVar0) + EVT_CASE_EQ(NPC_AlbinoDino_02) + EVT_SET(MV_StatueYaw_02, LVar0) + EVT_CASE_EQ(NPC_AlbinoDino_03) + EVT_SET(MV_StatueYaw_03, LVar0) + EVT_END_SWITCH + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_1ED, 0) + EVT_SWITCH(LVar5) + EVT_CASE_OR_EQ(90) + EVT_CASE_OR_EQ(270) + EVT_CALL(MakeLerp, 0, 540, 30, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcRotation, NPC_SELF, 0, LVar0, 0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_CALL(SetNpcRotation, NPC_SELF, 0, 0, 0) + EVT_CALL(SetNpcYaw, NPC_SELF, LVarA) + EVT_CASE_DEFAULT + EVT_THREAD + EVT_WAIT(15) + EVT_CALL(SetNpcYaw, NPC_SELF, LVarA) + EVT_END_THREAD + EVT_CALL(MakeLerp, 0, 360, 20, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcRotation, NPC_SELF, 0, LVar0, 0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_END_SWITCH + EVT_END_IF + EVT_CALL(SetNpcAnimation, NPC_SELF, LVar6) + EVT_SWITCH(LVar3) + EVT_CASE_EQ(NPC_AlbinoDino_01) + EVT_SET(MV_DinoYaw_01, LVar5) + EVT_CASE_EQ(NPC_AlbinoDino_02) + EVT_SET(MV_DinoYaw_02, LVar5) + EVT_CASE_EQ(NPC_AlbinoDino_03) + EVT_SET(MV_DinoYaw_03, LVar5) + EVT_END_SWITCH + EVT_CALL(N(SetDinoAngle), LVar3, LVar5) + EVT_CALL(SpeakToPlayer, NPC_SELF, LVar6, LVar6, 5, LVar4) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_AlbinoDino_01) = { + EVT_SET(LVar3, NPC_AlbinoDino_01) + EVT_SET(LVar4, MSG_CH7_0167) + EVT_EXEC_WAIT(N(EVS_ChangeDinoDirection)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_AlbinoDino_02) = { + EVT_SET(LVar3, NPC_AlbinoDino_02) + EVT_SET(LVar4, MSG_CH7_0168) + EVT_EXEC_WAIT(N(EVS_ChangeDinoDirection)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInteract_AlbinoDino_03) = { + EVT_SET(LVar3, NPC_AlbinoDino_03) + EVT_SET(LVar4, MSG_CH7_0169) + EVT_EXEC_WAIT(N(EVS_ChangeDinoDirection)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_AlbinoDino_01) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_AlbinoDino_01))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_AlbinoDino_02) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_AlbinoDino_02))) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_AlbinoDino_03) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_AlbinoDino_03))) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_AlbinoDinos)[] = { + { + .id = NPC_AlbinoDino_01, + .settings = &N(NpcSettings_AlbinoDino), + .pos = { 190.0f, -10.0f, 165.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_AlbinoDino_01), + .drops = NPC_NO_DROPS, + .animations = ALBINO_DINO_ANIMS, + .tattle = MSG_NpcTattle_AlbinoDino, + }, + { + .id = NPC_AlbinoDino_02, + .settings = &N(NpcSettings_AlbinoDino), + .pos = { 300.0f, -10.0f, 89.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_AlbinoDino_02), + .drops = NPC_NO_DROPS, + .animations = ALBINO_DINO_ANIMS, + .tattle = MSG_NpcTattle_AlbinoDino, + }, + { + .id = NPC_AlbinoDino_03, + .settings = &N(NpcSettings_AlbinoDino), + .pos = { 452.0f, -10.0f, 139.0f }, + .yaw = 270, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_AlbinoDino_03), + .drops = NPC_NO_DROPS, + .animations = ALBINO_DINO_ANIMS, + .tattle = MSG_NpcTattle_AlbinoDino, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_AlbinoDinos), BTL_PRA3_FORMATION_01, BTL_PRA3_STAGE_01), + {} +}; diff --git a/src/world/area_pra/pra_31/pra_31_3_main.c b/src/world/area_pra/pra_31/pra_31_3_main.c new file mode 100644 index 0000000000..0525b65043 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_3_main.c @@ -0,0 +1,96 @@ +#include "pra_31.h" + +s32 N(NearLeftDoorModelsL)[] = { MODEL_o772, -1 }; +s32 N(NearLeftDoorModelsR)[] = { MODEL_o768, -1 }; +s32 N(RightDoorModelsL)[] = { MODEL_o955, -1 }; +s32 N(RightDoorModelsR)[] = { MODEL_o957, -1 }; +s32 N(FarLeftDoorModelsL)[] = { MODEL_o859, -1 }; +s32 N(FarLeftDoorModelsR)[] = { MODEL_o861, -1 }; + +EvtScript N(EVS_ExitDoors_pra_34_1) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_31_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_34"), pra_34_ENTRY_1) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_40_0) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_31_ENTRY_1) + EVT_SET(LVar1, COLLIDER_deilitte) + EVT_SET(LVar2, EVT_PTR(N(RightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(RightDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_40"), pra_40_ENTRY_0) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_34_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_31_ENTRY_2) + EVT_SET(LVar1, COLLIDER_deilittnw) + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_34"), pra_34_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_34_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_40_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilitte, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_34_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_31_ENTRY_0) + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_CASE_EQ(pra_31_ENTRY_1) + EVT_SET(LVar2, EVT_PTR(N(RightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(RightDoorModelsR))) + EVT_CASE_EQ(pra_31_ENTRY_2) + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_SWITCH + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_EXEC_WAIT(N(EVS_SetupPuzzle)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_31/pra_31_4_puzzle.c b/src/world/area_pra/pra_31/pra_31_4_puzzle.c new file mode 100644 index 0000000000..4e6e365cf3 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_4_puzzle.c @@ -0,0 +1,583 @@ +#include "pra_31.h" + +#define DINO_CELL_SIZE 50 +#define PUSH_TIME 40 +#define GRID_SIZE_X 9 +#define GRID_SIZE_Z 3 +#define DINO_COUNT 3 + +typedef struct DinoData { + /* 0x00 */ s16 ci; // cell i index + /* 0x02 */ s16 cj; // cell j index + /* 0x04 */ f32 currentPosX; + /* 0x08 */ f32 currentPosZ; + /* 0x0C */ f32 goalPosX; + /* 0x10 */ f32 goalPosZ; + /* 0x14 */ f32 angle; +} DinoData; // size = 0x18 + +typedef struct DinoPuzzleData { + /* 0x00 */ DinoData dinos[DINO_COUNT]; + /* 0x48 */ s16 cells[GRID_SIZE_Z][GRID_SIZE_X]; + /* 0x7E */ char unk_7E[0x2]; +} DinoPuzzleData; // size = 0x80 + +enum { + CELL_EMPTY = 0, + CELL_DINO = -1, +}; + +s32 N(InitialConfigurationBefore)[DINO_COUNT][3] = { + { 2, 0, 270 }, + { 3, 2, 270 }, + { 5, 1, 270 }, +}; + +s32 N(InitialConfigurationAfter)[DINO_COUNT][3]= { + { 1, 1, 270 }, + { 4, 1, 270 }, + { 7, 1, 270 }, +}; + +s16 N(PuzzleSolution)[GRID_SIZE_Z][GRID_SIZE_X] = { + { CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY }, + { CELL_EMPTY, CELL_DINO, CELL_EMPTY, CELL_EMPTY, CELL_DINO, CELL_EMPTY, CELL_EMPTY, CELL_DINO, CELL_EMPTY }, + { CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY, CELL_EMPTY }, +}; + +API_CALLABLE(N(EVS_ManagePuzzle)) { + DinoPuzzleData* puzzle; + DinoData* dino; + s32 storyProgress; + s32 incorrect; + s32 i, j; + + if (isInitialCall) { + puzzle = heap_malloc(sizeof(*puzzle)); + evt_set_variable(script, MV_PuzzleDataPtr, (s32) puzzle); + storyProgress = evt_get_variable(script, GB_StoryProgress); + + for (i = 0; i < GRID_SIZE_Z; i++) { + for (j = 0; j < GRID_SIZE_X; j++) { + puzzle->cells[i][j] = CELL_EMPTY; + } + } + + for (j = 0, dino = &puzzle->dinos[0]; j < DINO_COUNT; j++, dino++) { + if (storyProgress < STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) { + dino->ci = N(InitialConfigurationBefore)[j][0]; + dino->cj = N(InitialConfigurationBefore)[j][1]; + dino->angle = N(InitialConfigurationBefore)[j][2]; + } else { + dino->ci = N(InitialConfigurationAfter)[j][0]; + dino->cj = N(InitialConfigurationAfter)[j][1]; + dino->angle = N(InitialConfigurationAfter)[j][2]; + } + dino->currentPosX = dino->goalPosX = (dino->ci * DINO_CELL_SIZE) + DINO_CELL_SIZE; + dino->currentPosZ = dino->goalPosZ = (dino->cj * DINO_CELL_SIZE) + DINO_CELL_SIZE + DINO_CELL_SIZE / 2; + puzzle->cells[dino->cj][dino->ci] = CELL_DINO; + } + evt_set_variable(script, MV_DinoYaw_01, 270); + evt_set_variable(script, MV_DinoYaw_02, 270); + evt_set_variable(script, MV_DinoYaw_03, 270); + } + + puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + dino = &puzzle->dinos[0]; + for (j = 0; j < DINO_COUNT; j++, dino++) { + if (dino->currentPosX < dino->goalPosX) { + dino->currentPosX += (f32) DINO_CELL_SIZE / PUSH_TIME; + } + if (dino->currentPosX > dino->goalPosX) { + dino->currentPosX -= (f32) DINO_CELL_SIZE / PUSH_TIME; + } + if (dino->currentPosZ < dino->goalPosZ) { + dino->currentPosZ += (f32) DINO_CELL_SIZE / PUSH_TIME; + } + if (dino->currentPosZ > dino->goalPosZ) { + dino->currentPosZ -= (f32) DINO_CELL_SIZE / PUSH_TIME; + } + } + + incorrect = FALSE; + for (i = 0; i < GRID_SIZE_Z; i++) { + for (j = 0; j < GRID_SIZE_X; j++) { + if (puzzle->cells[i][j] > CELL_EMPTY) { + puzzle->cells[i][j]--; + } + + if (puzzle->cells[i][j] != N(PuzzleSolution)[i][j]) { + incorrect = TRUE; + } + } + } + + if (!incorrect) { + evt_set_variable(script, MV_PuzzleSolved, TRUE); + } + return ApiStatus_BLOCK; +} + +API_CALLABLE(N(SetDinoAngle)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + f32 angle = evt_get_float_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + dino->angle = angle; + return ApiStatus_DONE2; +} + +API_CALLABLE(N(IsDestCellUnavailable)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + s32 ci; + s32 cj; + s32 i; + + script->varTable[0] = 0; + + // determine the cell we want to push into + switch ((s32) dino->angle) { + case 0: + ci = dino->ci; + cj = dino->cj - 1; + break; + case 90: + cj = dino->cj; + ci = dino->ci + 1; + break; + case 180: + ci = dino->ci; + cj = dino->cj + 1; + break; + case 270: + cj = dino->cj; + ci = dino->ci - 1; + break; + } + + // does another dino exist at the proposed grid cell? + for (i = 0; i < DINO_COUNT; i++) { + if (i != idx && ci == puzzle->dinos[i].ci && cj == puzzle->dinos[i].cj) { + script->varTable[0] = TRUE; + } + } + + // is the cell out of bounds? + if (ci < 0) { + script->varTable[0] = TRUE; + } + if (ci >= GRID_SIZE_X) { + script->varTable[0] = TRUE; + } + if (cj < 0) { + script->varTable[0] = TRUE; + } + if (cj >= GRID_SIZE_Z) { + script->varTable[0] = TRUE; + } + + // cancel the push if the cell is invalid + if (script->varTable[0] == TRUE && gPlayerStatusPtr->actionState == ACTION_STATE_PUSHING_BLOCK) { + set_action_state(ACTION_STATE_IDLE); + } + return ApiStatus_DONE2; +} + +API_CALLABLE(N(BeginPushingStatue)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + puzzle->cells[dino->cj][dino->ci] = PUSH_TIME / 2; + + switch ((s32) dino->angle) { + case 0: + dino->cj--; + break; + case 90: + dino->ci++; + break; + case 180: + dino->cj++; + break; + case 270: + dino->ci--; + } + + puzzle->cells[dino->cj][dino->ci] = CELL_DINO; + dino->goalPosX = ((dino->ci * DINO_CELL_SIZE) + DINO_CELL_SIZE); + dino->goalPosZ = ((dino->cj * DINO_CELL_SIZE) + DINO_CELL_SIZE + DINO_CELL_SIZE / 2); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(GetPlayerPushDirection)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + switch ((s32)dino->angle) { + case 0: + script->varTable[0] = 180; + break; + case 180: + script->varTable[0] = 0; + break; + case 90: + script->varTable[0] = 90; + break; + case 270: + script->varTable[0] = 270; + break; + } + return ApiStatus_DONE2; +} + +API_CALLABLE(N(GetPlayerPushLerpValues)) { + PlayerStatus* playerStatus = &gPlayerStatus; + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + switch ((s32)dino->angle) { + case 0: + script->varTable[3] = playerStatus->position.z; + script->varTable[4] = playerStatus->position.z + DINO_CELL_SIZE; + script->varTable[5] = 1; + break; + case 90: + script->varTable[3] = playerStatus->position.x; + script->varTable[4] = playerStatus->position.x + DINO_CELL_SIZE; + script->varTable[5] = 0; + break; + case 180: + script->varTable[3] = playerStatus->position.z; + script->varTable[4] = playerStatus->position.z - DINO_CELL_SIZE; + script->varTable[5] = 1; + break; + case 270: + script->varTable[3] = playerStatus->position.x; + script->varTable[4] = playerStatus->position.x - DINO_CELL_SIZE; + script->varTable[5] = 0; + break; + } + return ApiStatus_DONE2; +} + +#include "world/common/todo/UnkFunc12.inc.c" + +API_CALLABLE(N(GetDinoStatuePosRot)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + evt_set_float_variable(script, LVar0, dino->currentPosX); + evt_set_float_variable(script, LVar1, -dino->currentPosZ); + evt_set_float_variable(script, LVar2, clamp_angle(dino->angle + 90.0)); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(GetDinoNpcPosRot)) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++); + DinoPuzzleData* puzzle = (DinoPuzzleData*) evt_get_variable(script, MV_PuzzleDataPtr); + DinoData* dino = &puzzle->dinos[idx]; + + evt_set_float_variable(script, LVar0, dino->currentPosX); + evt_set_float_variable(script, LVar1, dino->currentPosZ); + evt_set_float_variable(script, LVar2, clamp_angle(dino->angle)); + return ApiStatus_DONE2; +} + +API_CALLABLE(N(EndBlockPushingState)) { + PlayerStatus* playerStatus = &gPlayerStatus; + + playerStatus->animFlags |= PA_FLAG_ABORT_PUSHING_BLOCK; + return ApiStatus_DONE2; +} + +EvtScript N(EVS_Scene_PuzzleSolved) = { + EVT_LOOP(0) + EVT_IF_EQ(MV_PuzzleSolved, TRUE) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(DisablePlayerInput, TRUE) + EVT_LOOP(0) + EVT_IF_EQ(MV_PushingStatue, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(PlaySound, SOUND_B) + EVT_WAIT(40) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 325, 0, 0) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 325, 0, 0) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(12.0), EVT_FLOAT(-10.0)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(350.0)) + EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(323.3), EVT_FLOAT(-66.5)) + EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(500.0), EVT_FLOAT(296.8)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_THREAD + EVT_WAIT(45) + EVT_CALL(SetGroupEnabled, MODEL_g255, 1) + EVT_CALL(SetGroupEnabled, MODEL_g262, 1) + EVT_CALL(SetGroupEnabled, MODEL_g264, 1) + EVT_CALL(SetGroupEnabled, MODEL_g265, 1) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1071, COLLIDER_FLAGS_UPPER_MASK) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(50) + EVT_CALL(PlaySoundAtModel, MODEL_k1, SOUND_30, 0) + EVT_WAIT(25) + EVT_CALL(PlaySoundAtModel, MODEL_k2, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_WAIT(5) + EVT_CALL(PlaySoundAtModel, MODEL_k3, SOUND_1EE, 0) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(50) + EVT_CALL(EnableModel, MODEL_n1, FALSE) + EVT_CALL(EnableModel, MODEL_k1, TRUE) + EVT_WAIT(10) + EVT_CALL(EnableModel, MODEL_n2, FALSE) + EVT_CALL(EnableModel, MODEL_k2, TRUE) + EVT_WAIT(30) + EVT_CALL(EnableModel, MODEL_n3, FALSE) + EVT_CALL(EnableModel, MODEL_k3, TRUE) + EVT_WAIT(22) + EVT_CALL(EnableModel, MODEL_n4, FALSE) + EVT_CALL(EnableModel, MODEL_k4, TRUE) + EVT_WAIT(18) + EVT_CALL(EnableModel, MODEL_n5, FALSE) + EVT_CALL(EnableModel, MODEL_k5, TRUE) + EVT_END_THREAD + EVT_CALL(PlayModelAnimation, MDL_ANIMATOR_0, EVT_PTR(N(AS_Stairs_Unfold))) + EVT_WAIT(200) + EVT_SET(GB_StoryProgress, STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_UpdateStatuePositions) = { + EVT_SET_GROUP(EVT_GROUP_00) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_01) + EVT_SET(MV_StatueYaw_01, LVar2) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_02) + EVT_SET(MV_StatueYaw_02, LVar2) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_03) + EVT_SET(MV_StatueYaw_03, LVar2) + EVT_LOOP(0) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_01) + EVT_CALL(TranslateGroup, MODEL_s01, LVar0, 0, LVar1) + EVT_CALL(RotateGroup, MODEL_g292, MV_StatueYaw_01, 0, 1, 0) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_02) + EVT_CALL(TranslateGroup, MODEL_s02, LVar0, 0, LVar1) + EVT_CALL(RotateGroup, MODEL_g298, MV_StatueYaw_02, 0, 1, 0) + EVT_CALL(N(GetDinoStatuePosRot), NPC_AlbinoDino_03) + EVT_CALL(TranslateGroup, MODEL_s03, LVar0, 0, LVar1) + EVT_CALL(RotateGroup, MODEL_g299, MV_StatueYaw_03, 0, 1, 0) + EVT_CALL(N(GetDinoNpcPosRot), NPC_AlbinoDino_01) + EVT_CALL(SetNpcPos, NPC_AlbinoDino_01, LVar0, -10, LVar1) + EVT_CALL(N(GetDinoNpcPosRot), NPC_AlbinoDino_02) + EVT_CALL(SetNpcPos, NPC_AlbinoDino_02, LVar0, -10, LVar1) + EVT_CALL(N(GetDinoNpcPosRot), NPC_AlbinoDino_03) + EVT_CALL(SetNpcPos, NPC_AlbinoDino_03, LVar0, -10, LVar1) + EVT_CALL(UpdateColliderTransform, COLLIDER_s01n) + EVT_CALL(UpdateColliderTransform, COLLIDER_s01e) + EVT_CALL(UpdateColliderTransform, COLLIDER_s01s) + EVT_CALL(UpdateColliderTransform, COLLIDER_s01w) + EVT_CALL(UpdateColliderTransform, COLLIDER_s02n) + EVT_CALL(UpdateColliderTransform, COLLIDER_s02e) + EVT_CALL(UpdateColliderTransform, COLLIDER_s02s) + EVT_CALL(UpdateColliderTransform, COLLIDER_s02w) + EVT_CALL(UpdateColliderTransform, COLLIDER_s03n) + EVT_CALL(UpdateColliderTransform, COLLIDER_s03e) + EVT_CALL(UpdateColliderTransform, COLLIDER_s03s) + EVT_CALL(UpdateColliderTransform, COLLIDER_s03w) + EVT_WAIT(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +#include "world/common/todo/UnkFunc11.inc.c" + +EvtScript N(EVS_PushStatue_Impl) = { + EVT_CALL(N(GetPlayerPushDirection), LVarA) + EVT_CALL(InterpPlayerYaw, LVar0, 0) + EVT_LOOP(20) + EVT_CALL(N(UnkFunc11), LVar9) + EVT_IF_EQ(LVar0, 0) + EVT_RETURN + EVT_ELSE + EVT_CALL(SetPlayerActionState, ACTION_STATE_PUSHING_BLOCK) + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(DisablePlayerInput, TRUE) + EVT_THREAD + EVT_CALL(N(GetPlayerPushLerpValues), LVarA) + EVT_CALL(MakeLerp, LVar3, LVar4, PUSH_TIME, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(SetPlayerActionState, ACTION_STATE_PUSHING_BLOCK) + EVT_CALL(UpdateLerp) + EVT_CALL(N(UnkFunc12)) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_CALL(ShakeCam, CAM_DEFAULT, 0, PUSH_TIME, EVT_FLOAT(0.3)) + EVT_END_THREAD + EVT_SET(MV_PushingStatue, TRUE) + EVT_CALL(PlaySoundAtCollider, LVar9, SOUND_2D, 0) + EVT_CALL(N(BeginPushingStatue), LVarA) + EVT_WAIT(PUSH_TIME) + EVT_SET(MV_PushingStatue, FALSE) + EVT_CALL(N(EndBlockPushingState)) + EVT_THREAD + EVT_CALL(DisablePlayerInput, FALSE) + EVT_WAIT(2) + EVT_CALL(N(UnkFunc11), LVar9) + EVT_IF_EQ(LVar0, 0) + EVT_WAIT(2) + EVT_CALL(N(UnkFunc11), LVar9) + EVT_IF_EQ(LVar0, 0) + EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE) + EVT_END_IF + EVT_END_IF + EVT_END_THREAD + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PushStatue_01) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) + EVT_RETURN + EVT_END_IF + EVT_CALL(N(IsDestCellUnavailable), NPC_AlbinoDino_01) + EVT_IF_EQ(LVar0, TRUE) + EVT_RETURN + EVT_END_IF + EVT_SET(LVarA, NPC_AlbinoDino_01) + EVT_SET(LVar9, COLLIDER_s01e) + EVT_EXEC_WAIT(N(EVS_PushStatue_Impl)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PushStatue_02) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) + EVT_RETURN + EVT_END_IF + EVT_CALL(N(IsDestCellUnavailable), NPC_AlbinoDino_02) + EVT_IF_EQ(LVar0, TRUE) + EVT_RETURN + EVT_END_IF + EVT_SET(LVarA, NPC_AlbinoDino_02) + EVT_SET(LVar9, COLLIDER_s02e) + EVT_EXEC_WAIT(N(EVS_PushStatue_Impl)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_PushStatue_03) = { + EVT_IF_GE(GB_StoryProgress, STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) + EVT_RETURN + EVT_END_IF + EVT_CALL(N(IsDestCellUnavailable), NPC_AlbinoDino_03) + EVT_IF_EQ(LVar0, TRUE) + EVT_RETURN + EVT_END_IF + EVT_SET(LVarA, NPC_AlbinoDino_03) + EVT_SET(LVar9, COLLIDER_s03e) + EVT_EXEC_WAIT(N(EVS_PushStatue_Impl)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_SetupPuzzle) = { + EVT_CALL(InitAnimatedModels) + EVT_CALL(LoadAnimatedModel, MDL_ANIMATOR_0, EVT_PTR(N(AS_Stairs_Skeleton))) + EVT_CALL(SetAnimatedModelRootPosition, MDL_ANIMATOR_0, 0, 0, 0) + EVT_CALL(SetAnimatedModelRenderMode, MDL_ANIMATOR_0, RENDER_MODE_SURFACE_OPA) + EVT_THREAD + EVT_CALL(N(EVS_ManagePuzzle)) + EVT_END_THREAD + EVT_WAIT(1) + EVT_CALL(ParentColliderToModel, COLLIDER_s01n, MODEL_o1032) + EVT_CALL(ParentColliderToModel, COLLIDER_s01e, MODEL_o1032) + EVT_CALL(ParentColliderToModel, COLLIDER_s01s, MODEL_o1032) + EVT_CALL(ParentColliderToModel, COLLIDER_s01w, MODEL_o1032) + EVT_CALL(ParentColliderToModel, COLLIDER_s02n, MODEL_o1040) + EVT_CALL(ParentColliderToModel, COLLIDER_s02e, MODEL_o1040) + EVT_CALL(ParentColliderToModel, COLLIDER_s02s, MODEL_o1040) + EVT_CALL(ParentColliderToModel, COLLIDER_s02w, MODEL_o1040) + EVT_CALL(ParentColliderToModel, COLLIDER_s03n, MODEL_o1044) + EVT_CALL(ParentColliderToModel, COLLIDER_s03e, MODEL_o1044) + EVT_CALL(ParentColliderToModel, COLLIDER_s03s, MODEL_o1044) + EVT_CALL(ParentColliderToModel, COLLIDER_s03w, MODEL_o1044) + EVT_SET(MV_PuzzleSolved, FALSE) + EVT_EXEC(N(EVS_UpdateStatuePositions)) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_PushStatue_01)), TRIGGER_WALL_PUSH, COLLIDER_s01e, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_PushStatue_02)), TRIGGER_WALL_PUSH, COLLIDER_s02e, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_PushStatue_03)), TRIGGER_WALL_PUSH, COLLIDER_s03e, 1, 0) + EVT_IF_GE(GB_StoryProgress, STORY_CH7_SOLVED_ALBINO_DINO_PUZZLE) + EVT_CALL(PlayModelAnimation, MDL_ANIMATOR_0, EVT_PTR(N(AS_Stairs_InitializeAfter))) + EVT_CALL(SetGroupEnabled, MODEL_no, 0) + EVT_CALL(SetGroupEnabled, MODEL_kage_yuka, 1) + EVT_ELSE + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1071, COLLIDER_FLAGS_UPPER_MASK) + EVT_CALL(PlayModelAnimation, MDL_ANIMATOR_0, EVT_PTR(N(AS_Stairs_InitializeBefore))) + EVT_CALL(SetGroupEnabled, MODEL_g255, 0) + EVT_CALL(SetGroupEnabled, MODEL_g262, 0) + EVT_CALL(SetGroupEnabled, MODEL_g264, 0) + EVT_CALL(SetGroupEnabled, MODEL_g265, 0) + EVT_CALL(SetGroupEnabled, MODEL_no, 1) + EVT_CALL(SetGroupEnabled, MODEL_kage_yuka, 0) + EVT_EXEC(N(EVS_Scene_PuzzleSolved)) + EVT_END_IF + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_31/pra_31_5_texture_1.c b/src/world/area_pra/pra_31/pra_31_5_texture_1.c new file mode 100644 index 0000000000..1f92f5a13f --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_5_texture_1.c @@ -0,0 +1,6 @@ +#include "pra_31.h" + +#include "world/area_pra/pra_31/texture_1.png.inc.c" +#include "world/area_pra/pra_31/texture_1.pal.inc.c" + +#include "world/area_pra/pra_31/texture_1.gfx.inc.c" diff --git a/src/world/area_pra/pra_31/pra_31_6_texture_2.c b/src/world/area_pra/pra_31/pra_31_6_texture_2.c new file mode 100644 index 0000000000..5b197877f6 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_6_texture_2.c @@ -0,0 +1,6 @@ +#include "pra_31.h" + +#include "world/area_pra/pra_31/texture_2.png.inc.c" +#include "world/area_pra/pra_31/texture_2.pal.inc.c" + +#include "world/area_pra/pra_31/texture_2.gfx.inc.c" diff --git a/src/world/area_pra/pra_31/pra_31_7_texture_3.c b/src/world/area_pra/pra_31/pra_31_7_texture_3.c new file mode 100644 index 0000000000..d1b8cd3ba5 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_7_texture_3.c @@ -0,0 +1,5 @@ +#include "pra_31.h" + +#include "world/area_pra/pra_31/texture_3.png.inc.c" + +#include "world/area_pra/pra_31/texture_3.gfx.inc.c" diff --git a/src/world/area_pra/pra_31/pra_31_8_stairs_skele.c b/src/world/area_pra/pra_31/pra_31_8_stairs_skele.c new file mode 100644 index 0000000000..bef690cbc3 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_8_stairs_skele.c @@ -0,0 +1,264 @@ +#include "pra_31.h" + +#include "world/area_pra/pra_31/unk_01.gfx.inc.c" +#include "world/area_pra/pra_31/unk_02.gfx.inc.c" +#include "world/area_pra/pra_31/unk_03.gfx.inc.c" +#include "world/area_pra/pra_31/unk_04.gfx.inc.c" +#include "world/area_pra/pra_31/unk_05.gfx.inc.c" +#include "world/area_pra/pra_31/unk_06.gfx.inc.c" +#include "world/area_pra/pra_31/unk_07.gfx.inc.c" +#include "world/area_pra/pra_31/unk_08.gfx.inc.c" +#include "world/area_pra/pra_31/unk_09.gfx.inc.c" +#include "world/area_pra/pra_31/unk_10.gfx.inc.c" +#include "world/area_pra/pra_31/unk_11.gfx.inc.c" +#include "world/area_pra/pra_31/unk_12.gfx.inc.c" +#include "world/area_pra/pra_31/unk_13.gfx.inc.c" +#include "world/area_pra/pra_31/unk_14.gfx.inc.c" +#include "world/area_pra/pra_31/unk_15.gfx.inc.c" +#include "world/area_pra/pra_31/unk_16.gfx.inc.c" +#include "world/area_pra/pra_31/unk_17.gfx.inc.c" +#include "world/area_pra/pra_31/unk_18.gfx.inc.c" +#include "world/area_pra/pra_31/unk_19.gfx.inc.c" +#include "world/area_pra/pra_31/unk_20.gfx.inc.c" +#include "world/area_pra/pra_31/unk_21.gfx.inc.c" +#include "world/area_pra/pra_31/unk_22.gfx.inc.c" +#include "world/area_pra/pra_31/unk_23.gfx.inc.c" +#include "world/area_pra/pra_31/unk_24.gfx.inc.c" +#include "world/area_pra/pra_31/unk_25.gfx.inc.c" +#include "world/area_pra/pra_31/unk_26.gfx.inc.c" +#include "world/area_pra/pra_31/unk_27.gfx.inc.c" +#include "world/area_pra/pra_31/unk_28.gfx.inc.c" +#include "world/area_pra/pra_31/unk_29.gfx.inc.c" +#include "world/area_pra/pra_31/unk_30.gfx.inc.c" +#include "world/area_pra/pra_31/unk_31.gfx.inc.c" +#include "world/area_pra/pra_31/unk_32.gfx.inc.c" +#include "world/area_pra/pra_31/unk_33.gfx.inc.c" +#include "world/area_pra/pra_31/unk_34.gfx.inc.c" + +// 0x10 long, doesnt seem to indicate a split +s32 N(post_gfx_pad)[] = { 0, 0, 0, 0 }; + +StaticAnimatorNode N(D_80245A90_D847F0) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_29_gfx), +}; + +StaticAnimatorNode N(D_80245ABC_D8481C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .child = &N(D_80245A90_D847F0), +}; + +StaticAnimatorNode N(D_80245AE8_D84848) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_28_gfx), +}; + +StaticAnimatorNode N(D_80245B14_D84874) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .child = &N(D_80245AE8_D84848), + .sibling = &N(D_80245ABC_D8481C), +}; + +StaticAnimatorNode N(D_80245B40_D848A0) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_27_gfx), +}; + +StaticAnimatorNode N(D_80245B6C_D848CC) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .child = &N(D_80245B40_D848A0), + .sibling = &N(D_80245B14_D84874), +}; + +StaticAnimatorNode N(D_80245B98_D848F8) = { + .pos = { 500.0f, 50.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(89.99725f) }, + .child = &N(D_80245B6C_D848CC), +}; + +StaticAnimatorNode N(D_80245BC4_D84924) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_25_gfx), +}; + +StaticAnimatorNode N(D_80245BF0_D84950) = { + .pos = { 420.0f, 50.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-89.99725f) }, + .child = &N(D_80245BC4_D84924), + .sibling = &N(D_80245B98_D848F8), +}; + +StaticAnimatorNode N(D_80245C1C_D8497C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_21_gfx), +}; + +StaticAnimatorNode N(D_80245C48_D849A8) = { + .pos = { 410.0f, 40.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-180.0f) }, + .child = &N(D_80245C1C_D8497C), + .sibling = &N(D_80245BF0_D84950), +}; + +StaticAnimatorNode N(D_80245C74_D849D4) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_19_gfx), +}; + +StaticAnimatorNode N(D_80245CA0_D84A00) = { + .pos = { 400.0f, 40.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-89.99725f) }, + .child = &N(D_80245C74_D849D4), + .sibling = &N(D_80245C48_D849A8), +}; + +StaticAnimatorNode N(D_80245CCC_D84A2C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_15_gfx), +}; + +StaticAnimatorNode N(D_80245CF8_D84A58) = { + .pos = { 390.0f, 30.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-180.0f) }, + .child = &N(D_80245CCC_D84A2C), + .sibling = &N(D_80245CA0_D84A00), +}; + +StaticAnimatorNode N(D_80245D24_D84A84) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_13_gfx), +}; + +StaticAnimatorNode N(D_80245D50_D84AB0) = { + .pos = { 380.0f, 30.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-89.99725f) }, + .child = &N(D_80245D24_D84A84), + .sibling = &N(D_80245CF8_D84A58), +}; + +StaticAnimatorNode N(D_80245D7C_D84ADC) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_11_gfx), +}; + +StaticAnimatorNode N(D_80245DA8_D84B08) = { + .pos = { 380.0f, 20.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(89.99725f) }, + .child = &N(D_80245D7C_D84ADC), + .sibling = &N(D_80245D50_D84AB0), +}; + +StaticAnimatorNode N(D_80245DD4_D84B34) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_09_gfx), +}; + +StaticAnimatorNode N(D_80245E00_D84B60) = { + .pos = { 370.0f, 20.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-180.0f) }, + .child = &N(D_80245DD4_D84B34), + .sibling = &N(D_80245DA8_D84B08), +}; + +StaticAnimatorNode N(D_80245E2C_D84B8C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_07_gfx), +}; + +StaticAnimatorNode N(D_80245E58_D84BB8) = { + .pos = { 360.0f, 20.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-89.99725f) }, + .child = &N(D_80245E2C_D84B8C), + .sibling = &N(D_80245E00_D84B60), +}; + +StaticAnimatorNode N(D_80245E84_D84BE4) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_05_gfx), +}; + +StaticAnimatorNode N(D_80245EB0_D84C10) = { + .pos = { 360.0f, 10.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(89.99725f) }, + .child = &N(D_80245E84_D84BE4), + .sibling = &N(D_80245E58_D84BB8), +}; + +StaticAnimatorNode N(D_80245EDC_D84C3C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_03_gfx), +}; + +StaticAnimatorNode N(D_80245F08_D84C68) = { + .pos = { 350.0f, 10.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-180.0f) }, + .child = &N(D_80245EDC_D84C3C), + .sibling = &N(D_80245EB0_D84C10), +}; + +StaticAnimatorNode N(D_80245F34_D84C94) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_01_gfx), +}; + +StaticAnimatorNode N(D_80245F60_D84CC0) = { + .pos = { 340.0f, 10.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(-89.99725f) }, + .child = &N(D_80245F34_D84C94), + .sibling = &N(D_80245F08_D84C68), +}; + +StaticAnimatorNode N(D_80245F8C_D84CEC) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_17_gfx), +}; + +StaticAnimatorNode N(D_80245FB8_D84D18) = { + .pos = { 400.0f, 30.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(89.99725f) }, + .child = &N(D_80245F8C_D84CEC), + .sibling = &N(D_80245F60_D84CC0), +}; + +StaticAnimatorNode N(D_80245FE4_D84D44) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .displayList = &N(unk_23_gfx), +}; + +StaticAnimatorNode N(D_80246010_D84D70) = { + .pos = { 420.0f, 40.0f, 0.0f }, + .rot = { AS_F(0.0f), AS_F(0.0f), AS_F(89.99725f) }, + .child = &N(D_80245FE4_D84D44), + .sibling = &N(D_80245FB8_D84D18), +}; + +StaticAnimatorNode N(D_8024603C_D84D9C) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .child = &N(D_80246010_D84D70), +}; + +StaticAnimatorNode N(D_80246068_D84DC8) = { + .pos = { 0.0f, 0.0f, 0.0f }, + .child = &N(D_8024603C_D84D9C), +}; + +StaticAnimatorNode* N(AS_Stairs_Skeleton)[] = { + &N(D_80246068_D84DC8), &N(D_8024603C_D84D9C), + &N(D_80246010_D84D70), &N(D_80245FE4_D84D44), + &N(D_80245FB8_D84D18), &N(D_80245F8C_D84CEC), + &N(D_80245F60_D84CC0), &N(D_80245F34_D84C94), + &N(D_80245F08_D84C68), &N(D_80245EDC_D84C3C), + &N(D_80245EB0_D84C10), &N(D_80245E84_D84BE4), + &N(D_80245E58_D84BB8), &N(D_80245E2C_D84B8C), + &N(D_80245E00_D84B60), &N(D_80245DD4_D84B34), + &N(D_80245DA8_D84B08), &N(D_80245D7C_D84ADC), + &N(D_80245D50_D84AB0), &N(D_80245D24_D84A84), + &N(D_80245CF8_D84A58), &N(D_80245CCC_D84A2C), + &N(D_80245CA0_D84A00), &N(D_80245C74_D849D4), + &N(D_80245C48_D849A8), &N(D_80245C1C_D8497C), + &N(D_80245BF0_D84950), &N(D_80245BC4_D84924), + &N(D_80245B98_D848F8), &N(D_80245B6C_D848CC), + &N(D_80245B40_D848A0), &N(D_80245B14_D84874), + &N(D_80245AE8_D84848), &N(D_80245ABC_D8481C), + &N(D_80245A90_D847F0), NULL +}; diff --git a/src/world/area_pra/pra_31/pra_31_9_stairs_anim.c b/src/world/area_pra/pra_31/pra_31_9_stairs_anim.c new file mode 100644 index 0000000000..d8edee2561 --- /dev/null +++ b/src/world/area_pra/pra_31/pra_31_9_stairs_anim.c @@ -0,0 +1,684 @@ +#include "pra_31.h" + +AnimScript N(AS_Stairs_InitializeBefore) = { + AS_OP_19, + AS_SET_ROTATION, 1, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 1, 0, 0, 0, + AS_SET_SCALE, 1, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 2, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 2, 0, 0, 0, + AS_SET_SCALE, 2, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 3, 420, -60, 0, + AS_SET_SCALE, 3, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 4, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 4, 0, 0, 0, + AS_SET_SCALE, 4, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 5, 400, -70, 0, + AS_SET_SCALE, 5, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 6, 0, 0, 0, + AS_SET_SCALE, 6, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 7, 340, -90, 0, + AS_SET_SCALE, 7, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 8, 0, 0, 0, + AS_SET_SCALE, 8, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 9, 350, -90, 0, + AS_SET_SCALE, 9, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 10, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 10, 0, 0, 0, + AS_SET_SCALE, 10, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 11, 360, -90, 0, + AS_SET_SCALE, 11, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 12, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 12, 0, 0, 0, + AS_SET_SCALE, 12, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 13, 360, -80, 0, + AS_SET_SCALE, 13, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 14, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 14, 0, 0, 0, + AS_SET_SCALE, 14, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 15, 370, -80, 0, + AS_SET_SCALE, 15, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 16, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 16, 0, 0, 0, + AS_SET_SCALE, 16, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 17, 380, -80, 0, + AS_SET_SCALE, 17, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 18, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 18, 0, 0, 0, + AS_SET_SCALE, 18, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 19, 380, -70, 0, + AS_SET_SCALE, 19, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 20, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 20, 0, 0, 0, + AS_SET_SCALE, 20, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 21, 390, -70, 0, + AS_SET_SCALE, 21, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 22, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 22, 0, 0, 0, + AS_SET_SCALE, 22, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 23, 400, -60, 0, + AS_SET_SCALE, 23, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 24, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 24, 0, 0, 0, + AS_SET_SCALE, 24, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 25, 410, -60, 0, + AS_SET_SCALE, 25, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 26, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 26, 0, 0, 0, + AS_SET_SCALE, 26, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 27, 420, -50, 0, + AS_SET_SCALE, 27, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 28, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 28, 0, 0, 0, + AS_SET_SCALE, 28, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 29, 500, 50, 0, + AS_SET_SCALE, 29, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 30, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 30, 0, 0, 0, + AS_SET_SCALE, 30, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 31, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 31, 0, 0, 0, + AS_SET_SCALE, 31, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 32, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 32, 0, 0, 0, + AS_SET_SCALE, 32, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 33, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 33, 0, 0, 0, + AS_SET_SCALE, 33, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 34, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 34, 0, 0, 0, + AS_SET_SCALE, 34, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 35, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 35, 0, 0, 0, + AS_SET_SCALE, 35, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_WAIT, 1, + AS_LOOP, + AS_WAIT, 1, + AS_END_LOOP, +}; + +AnimScript N(AS_Stairs_Unfold) = { + AS_OP_19, + AS_SET_ROTATION, 1, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 1, 0, 0, 0, + AS_SET_SCALE, 1, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 2, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 2, 0, 0, 0, + AS_SET_SCALE, 2, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 3, 420, -60, 0, + AS_SET_SCALE, 3, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 4, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 4, 0, 0, 0, + AS_SET_SCALE, 4, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 5, 400, -70, 0, + AS_SET_SCALE, 5, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 6, 0, 0, 0, + AS_SET_SCALE, 6, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 7, 340, -90, 0, + AS_SET_SCALE, 7, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 8, 0, 0, 0, + AS_SET_SCALE, 8, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 9, 350, -90, 0, + AS_SET_SCALE, 9, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 10, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 10, 0, 0, 0, + AS_SET_SCALE, 10, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 11, 360, -90, 0, + AS_SET_SCALE, 11, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 12, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 12, 0, 0, 0, + AS_SET_SCALE, 12, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 13, 360, -80, 0, + AS_SET_SCALE, 13, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 14, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 14, 0, 0, 0, + AS_SET_SCALE, 14, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 15, 370, -80, 0, + AS_SET_SCALE, 15, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 16, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 16, 0, 0, 0, + AS_SET_SCALE, 16, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 17, 380, -80, 0, + AS_SET_SCALE, 17, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 18, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 18, 0, 0, 0, + AS_SET_SCALE, 18, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 19, 380, -70, 0, + AS_SET_SCALE, 19, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 20, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 20, 0, 0, 0, + AS_SET_SCALE, 20, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 21, 390, -70, 0, + AS_SET_SCALE, 21, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 22, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 22, 0, 0, 0, + AS_SET_SCALE, 22, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 23, 400, -60, 0, + AS_SET_SCALE, 23, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 24, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 24, 0, 0, 0, + AS_SET_SCALE, 24, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 25, 410, -60, 0, + AS_SET_SCALE, 25, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 26, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 26, 0, 0, 0, + AS_SET_SCALE, 26, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 27, 420, -50, 0, + AS_SET_SCALE, 27, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 28, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 28, 0, 0, 0, + AS_SET_SCALE, 28, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 29, 500, 50, 0, + AS_SET_SCALE, 29, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 30, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 30, 0, 0, 0, + AS_SET_SCALE, 30, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 31, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 31, 0, 0, 0, + AS_SET_SCALE, 31, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 32, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 32, 0, 0, 0, + AS_SET_SCALE, 32, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 33, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 33, 0, 0, 0, + AS_SET_SCALE, 33, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 34, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 34, 0, 0, 0, + AS_SET_SCALE, 34, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 35, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 35, 0, 0, 0, + AS_SET_SCALE, 35, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(-0.035), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(-0.095), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(-0.09), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(0.055), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(0.44), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(1.125), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(2.215), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(3.78), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(5.905), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(8.67), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(12.17), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(16.47), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(21.665), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(27.835), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(35.07), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(43.44), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(53.035), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(63.935), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(76.23), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(85.385), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(82.455), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(80.84), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(80.14), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(80.0), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(80.135), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(80.82), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(82.42), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(85.355), + AS_WAIT, 1, + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(30.07), + AS_SET_POS, 27, 420, 50, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(60.065), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(90.21), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(91.19), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(93.505), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(97.735), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(104.465), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(114.27), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(127.725), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(145.41), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(167.9), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(-164.22), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(-130.38), + AS_WAIT, 1, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(0.28), + AS_SET_POS, 3, 420, 40, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(1.395), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(3.765), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(7.79), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(13.9), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(22.49), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(33.98), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(48.79), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(67.32), + AS_WAIT, 1, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(2.89), + AS_SET_POS, 25, 410, 40, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(12.155), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(28.53), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(52.765), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(85.59), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(127.755), + AS_WAIT, 1, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(0.035), + AS_SET_POS, 23, 400, 40, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(1.315), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(5.63), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(14.75), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(30.455), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(54.525), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(88.74), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(134.865), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(-165.3), + AS_WAIT, 1, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(0.62), + AS_SET_POS, 5, 400, 30, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(5.465), + AS_WAIT, 1, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(19.0), + AS_WAIT, 1, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(45.69), + AS_WAIT, 1, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(0.47), + AS_SET_POS, 21, 390, 30, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(8.625), + AS_WAIT, 1, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(34.535), + AS_WAIT, 1, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(88.3), + AS_WAIT, 1, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(0.165), + AS_SET_POS, 19, 380, 30, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(4.23), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(17.53), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(45.42), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(93.225), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(166.305), + AS_WAIT, 1, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(2.05), + AS_SET_POS, 17, 380, 20, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(24.105), + AS_WAIT, 1, + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(0.86), + AS_SET_POS, 15, 370, 20, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(9.795), + AS_WAIT, 1, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(36.295), + AS_WAIT, 1, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(89.86), + AS_WAIT, 1, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(0.015), + AS_SET_POS, 13, 360, 20, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(3.74), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(16.65), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(44.245), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(92.0), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(165.425), + AS_WAIT, 1, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(2.075), + AS_SET_POS, 11, 360, 10, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(24.155), + AS_WAIT, 1, + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(0.45), + AS_SET_POS, 9, 350, 10, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(8.555), + AS_WAIT, 1, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(34.425), + AS_WAIT, 1, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(88.2), + AS_WAIT, 1, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(0.56), + AS_SET_POS, 7, 340, 10, 0, + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(4.335), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(14.465), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(34.07), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(66.295), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(114.265), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-178.875), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-105.25), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-114.205), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-118.535), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-119.91), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-119.995), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-119.835), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-118.32), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-113.88), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-104.96), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-94.44), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-94.995), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-94.445), + AS_WAIT, 1, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_WAIT, 1, + AS_LOOP, + AS_WAIT, 1, + AS_END_LOOP, + AS_END, +}; + +AnimScript N(AS_Stairs_InitializeAfter) = { + AS_OP_19, + AS_SET_ROTATION, 1, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 1, 0, 0, 0, + AS_SET_SCALE, 1, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 2, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 2, 0, 0, 0, + AS_SET_SCALE, 2, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 3, 420, -60, 0, + AS_SET_SCALE, 3, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 4, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 4, 0, 0, 0, + AS_SET_SCALE, 4, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 5, 400, -70, 0, + AS_SET_SCALE, 5, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 6, 0, 0, 0, + AS_SET_SCALE, 6, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 7, 340, -90, 0, + AS_SET_SCALE, 7, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 8, 0, 0, 0, + AS_SET_SCALE, 8, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 9, 350, -90, 0, + AS_SET_SCALE, 9, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 10, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 10, 0, 0, 0, + AS_SET_SCALE, 10, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 11, 360, -90, 0, + AS_SET_SCALE, 11, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 12, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 12, 0, 0, 0, + AS_SET_SCALE, 12, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 13, 360, -80, 0, + AS_SET_SCALE, 13, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 14, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 14, 0, 0, 0, + AS_SET_SCALE, 14, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 15, 370, -80, 0, + AS_SET_SCALE, 15, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 16, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 16, 0, 0, 0, + AS_SET_SCALE, 16, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 17, 380, -80, 0, + AS_SET_SCALE, 17, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 18, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 18, 0, 0, 0, + AS_SET_SCALE, 18, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 19, 380, -70, 0, + AS_SET_SCALE, 19, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 20, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 20, 0, 0, 0, + AS_SET_SCALE, 20, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 21, 390, -70, 0, + AS_SET_SCALE, 21, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 22, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 22, 0, 0, 0, + AS_SET_SCALE, 22, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 23, 400, -60, 0, + AS_SET_SCALE, 23, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 24, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 24, 0, 0, 0, + AS_SET_SCALE, 24, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 25, 410, -60, 0, + AS_SET_SCALE, 25, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 26, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 26, 0, 0, 0, + AS_SET_SCALE, 26, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 27, 420, -50, 0, + AS_SET_SCALE, 27, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 28, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 28, 0, 0, 0, + AS_SET_SCALE, 28, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 29, 500, 50, 0, + AS_SET_SCALE, 29, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 30, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 30, 0, 0, 0, + AS_SET_SCALE, 30, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 31, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 31, 0, 0, 0, + AS_SET_SCALE, 31, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 32, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 32, 0, 0, 0, + AS_SET_SCALE, 32, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 33, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 33, 0, 0, 0, + AS_SET_SCALE, 33, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 34, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 34, 0, 0, 0, + AS_SET_SCALE, 34, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 35, AS_F(0.0), AS_F(0.0), AS_F(0.0), + AS_SET_POS, 35, 0, 0, 0, + AS_SET_SCALE, 35, AS_F(1.0), AS_F(1.0), AS_F(1.0), + AS_SET_ROTATION, 29, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_SET_POS, 27, 420, 50, 0, + AS_SET_ROTATION, 27, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_SET_POS, 3, 420, 40, 0, + AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_SET_POS, 25, 410, 40, 0, + AS_SET_ROTATION, 25, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_SET_POS, 23, 400, 40, 0, + AS_SET_ROTATION, 23, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_SET_POS, 5, 400, 30, 0, + AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_SET_POS, 21, 390, 30, 0, + AS_SET_ROTATION, 21, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_SET_POS, 19, 380, 30, 0, + AS_SET_ROTATION, 19, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_SET_POS, 17, 380, 20, 0, + AS_SET_ROTATION, 17, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_SET_POS, 15, 370, 20, 0, + AS_SET_ROTATION, 15, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_SET_POS, 13, 360, 20, 0, + AS_SET_ROTATION, 13, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_SET_POS, 11, 360, 10, 0, + AS_SET_ROTATION, 11, AS_F(0.0), AS_F(0.0), AS_F(89.995), + AS_SET_POS, 9, 350, 10, 0, + AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(-180.0), + AS_SET_POS, 7, 340, 10, 0, + AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(-89.995), + AS_LOOP, + AS_WAIT, 1, + AS_END_LOOP, + AS_END, +}; diff --git a/src/world/area_pra/pra_32/D86A00.c b/src/world/area_pra/pra_32/D86A00.c deleted file mode 100644 index 72e41ee232..0000000000 --- a/src/world/area_pra/pra_32/D86A00.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "pra_32.h" - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_32/D86A20.c b/src/world/area_pra/pra_32/D86A20.c deleted file mode 100644 index 03908e2c0a..0000000000 --- a/src/world/area_pra/pra_32/D86A20.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "pra_32.h" - -#include "world/common/todo/StarSpiritEffectFunc.inc.c" - -static char* N(exit_str_0) = "kmr_23"; -static char* N(exit_str_1) = "pra_40"; - -ApiStatus func_80240814_D87214(Evt* script, s32 isInitialCall) { - gOverrideFlags &= ~GLOBAL_OVERRIDES_ENABLE_FLOOR_REFLECTION; - return ApiStatus_DONE2; -} diff --git a/src/world/area_pra/pra_32/pra_32.h b/src/world/area_pra/pra_32/pra_32.h index 53963fae1b..70c416fbd4 100644 --- a/src/world/area_pra/pra_32/pra_32.h +++ b/src/world/area_pra/pra_32/pra_32.h @@ -2,8 +2,29 @@ /// @brief Crystal Palace - Crystal Summit #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_32_shape.h" +#include "mapfs/pra_32_hit.h" + +enum { + NPC_CrystalKing_01 = 0, + NPC_CrystalKing_02 = 1, + NPC_Kalmar = 2, + NPC_CrystalKing_03 = 3, +}; + +enum { + MV_CamDistance = MapVar(0), +}; + #define NAMESPACE pra_32 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_RespawnStarCard); +extern EvtScript N(EVS_SpawnStarCard); +extern EvtScript N(EVS_80240D3C); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_pra/pra_32/pra_32_0_header.c b/src/world/area_pra/pra_32/pra_32_0_header.c new file mode 100644 index 0000000000..4d1a4fa26b --- /dev/null +++ b/src/world/area_pra/pra_32/pra_32_0_header.c @@ -0,0 +1,15 @@ +#include "pra_32.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_32_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .background = &gBackgroundImage, + .tattle = { MSG_MapTattle_pra_32 }, +}; diff --git a/src/world/area_pra/pra_32/pra_32_1_music.c b/src/world/area_pra/pra_32/pra_32_1_music.c new file mode 100644 index 0000000000..542721a92c --- /dev/null +++ b/src/world/area_pra/pra_32/pra_32_1_music.c @@ -0,0 +1,12 @@ +#include "pra_32.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_IF_EQ(GB_StoryProgress, STORY_CH7_DEFEATED_CRYSTAL_KING) + EVT_CALL(FadeOutMusic, 0, 500) + EVT_ELSE + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_END_IF + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_32/pra_32_2_main.c b/src/world/area_pra/pra_32/pra_32_2_main.c new file mode 100644 index 0000000000..97db44f7ef --- /dev/null +++ b/src/world/area_pra/pra_32/pra_32_2_main.c @@ -0,0 +1,186 @@ +#include "pra_32.h" + +#include "world/common/todo/StarSpiritEffectFunc.inc.c" + +API_CALLABLE(N(DisableFloorReflections)) { + gOverrideFlags &= ~GLOBAL_OVERRIDES_ENABLE_FLOOR_REFLECTION; + return ApiStatus_DONE2; +} + +EvtScript N(EVS_SpawnStarCard) = { + EVT_SET(LVar0, 0) + EVT_IF_EQ(LVar0, 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 595, 185, 116) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.6)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 595, 130, 116) + EVT_SPIRIT_ADJUST_CAM(10000) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(N(StarSpiritEffectFunc2), 6, 180, 590, 120, 116, 595, 185, 116, 130, 100) + EVT_THREAD + EVT_CALL(N(StarSpiritEffectFunc3)) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(1) + EVT_CALL(PlaySound, SOUND_80000067) + EVT_CALL(N(StarSpiritEffectFunc1)) + EVT_CALL(StopSound, SOUND_80000067) + EVT_CALL(PlaySoundAt, SOUND_B2, 0, 595, 185, 116) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(45) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002A) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(180) + EVT_WAIT(115) + EVT_CALL(PlaySoundAt, SOUND_137, 0, 595, 185, 116) + EVT_END_THREAD + EVT_CALL(N(StarSpiritEffectFunc4), 1) + EVT_THREAD + EVT_WAIT(80) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_END_THREAD + EVT_ADD(LVar1, 100) + EVT_CALL(SetCamDistance, CAM_DEFAULT, LVar1) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 595, 100, 116) + EVT_CALL(N(StarSpiritEffectFunc4), 2) + EVT_CALL(GetPlayerPos, LVar2, LVar3, LVar4) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar2, LVar3, LVar4) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar2, LVar3, LVar4) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_ELSE + EVT_CALL(N(StarSpiritEffectFunc5), 6, 595, 130, 116, 100) + EVT_THREAD + EVT_CALL(N(StarSpiritEffectFunc6)) + EVT_END_THREAD + EVT_WAIT(1) + EVT_END_IF + EVT_CALL(N(StarSpiritEffectFunc4), 3) + EVT_CALL(PlaySoundAtPlayer, SOUND_138, 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(GB_StoryProgress, STORY_CH7_STAR_SPIRIT_RESCUED) + EVT_CALL(GotoMapSpecial, EVT_PTR("kmr_23"), kmr_23_ENTRY_6, TRANSITION_14) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_RespawnStarCard) = { + EVT_SET(LVar0, 1) + EVT_IF_EQ(LVar0, 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 595, 185, 116) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.6)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 595, 130, 116) + EVT_SPIRIT_ADJUST_CAM(10000) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(N(StarSpiritEffectFunc2), 6, 180, 590, 120, 116, 595, 185, 116, 130, 100) + EVT_THREAD + EVT_CALL(N(StarSpiritEffectFunc3)) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(1) + EVT_CALL(PlaySound, SOUND_80000067) + EVT_CALL(N(StarSpiritEffectFunc1)) + EVT_CALL(StopSound, SOUND_80000067) + EVT_CALL(PlaySoundAt, SOUND_B2, 0, 595, 185, 116) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(45) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002A) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT(180) + EVT_WAIT(115) + EVT_CALL(PlaySoundAt, SOUND_137, 0, 595, 185, 116) + EVT_END_THREAD + EVT_CALL(N(StarSpiritEffectFunc4), 1) + EVT_THREAD + EVT_WAIT(80) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) + EVT_END_THREAD + EVT_ADD(LVar1, 100) + EVT_CALL(SetCamDistance, CAM_DEFAULT, LVar1) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 595, 100, 116) + EVT_CALL(N(StarSpiritEffectFunc4), 2) + EVT_CALL(GetPlayerPos, LVar2, LVar3, LVar4) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar2, LVar3, LVar4) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar2, LVar3, LVar4) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_ELSE + EVT_CALL(N(StarSpiritEffectFunc5), 6, 595, 130, 116, 100) + EVT_THREAD + EVT_CALL(N(StarSpiritEffectFunc6)) + EVT_END_THREAD + EVT_WAIT(1) + EVT_END_IF + EVT_CALL(N(StarSpiritEffectFunc4), 3) + EVT_CALL(PlaySoundAtPlayer, SOUND_138, 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(GB_StoryProgress, STORY_CH7_STAR_SPIRIT_RESCUED) + EVT_CALL(GotoMapSpecial, EVT_PTR("kmr_23"), kmr_23_ENTRY_6, TRANSITION_14) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +s32 N(DoorModelsL)[] = { + MODEL_o948, -1 +}; + +s32 N(DoorModelsR)[] = { + MODEL_o946, -1 +}; + +EvtScript N(EVS_ExitDoors_pra_40_1) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_32_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittw) + EVT_SET(LVar2, EVT_PTR(N(DoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(DoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_40"), pra_40_ENTRY_1) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_40_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_SET(LVar2, EVT_PTR(N(DoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(DoorModelsR))) + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_SETUP_CAMERA_ALT_NO_LEAD() + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1309, SURFACE_TYPE_SNOW) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1293, SURFACE_TYPE_SNOW) + EVT_PLAY_EFFECT(EFFECT_SNOWFALL, 0, 120) + EVT_CALL(N(DisableFloorReflections)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_32/pra_32_3_npc.c b/src/world/area_pra/pra_32/pra_32_3_npc.c new file mode 100644 index 0000000000..acc4975b75 --- /dev/null +++ b/src/world/area_pra/pra_32/pra_32_3_npc.c @@ -0,0 +1,285 @@ +#include "pra_32.h" +#include "effects.h" + +#include "world/common/enemy/complete/CrystalKing.inc.c" +#include "world/common/npc/StarSpirit.inc.c" + +EvtScript N(EVS_AnimateCam_CrystalKing) = { + EVT_SET(MV_CamDistance, 400) + EVT_THREAD + EVT_CALL(MakeLerp, 400, 300, 200, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_SET(MV_CamDistance, LVar0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(MakeLerp, 200, 100, 200, EASING_LINEAR) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcPos, NPC_CrystalKing_01, 588, LVar0, 116) + EVT_SET(LVar5, LVar0) + EVT_ADD(LVar5, -30) + EVT_IF_GE(LVar5, 100) + EVT_CALL(SetPanTarget, CAM_DEFAULT, 588, LVar5, 116) + EVT_CALL(SetCamDistance, CAM_DEFAULT, MV_CamDistance) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_END_IF + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_END_LOOP + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_CrystalKingAppears) = { + EVT_CALL(EnableNpcShadow, NPC_CrystalKing_01, FALSE) + EVT_LABEL(0) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_WAIT(1) + EVT_IF_LT(LVar0, 377) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(InterruptUsePartner) + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_KING_THEME, 0, 8) + EVT_CALL(ShowMessageAtScreenPos, MSG_CH7_016A, 160, 40) + EVT_CALL(SetNpcPos, NPC_CrystalKing_01, 588, 200, 116) + EVT_CALL(func_802CFD30, NPC_CrystalKing_01, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar0, LVar1, LVar2) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, -30) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(3.0)) + EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(12.0), EVT_FLOAT(-10.0)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(400.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_WAIT(30) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_BeforeJump) + EVT_CALL(SetPlayerPos, 475, 100, 116) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(PartnerIsFlying, LVar4) + EVT_IF_EQ(LVar4, FALSE) + EVT_CALL(SetNpcPos, NPC_PARTNER, 452, 116, 120) + EVT_ELSE + EVT_CALL(SetNpcPos, NPC_PARTNER, 452, 100, 120) + EVT_END_IF + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_THREAD + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, 10) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 0, LVar0, LVar1, LVar2, 50, 50, 1, 40, 50) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 0, LVar0, LVar1, LVar2, 50, 50, 1, 40, 50) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 0, LVar0, LVar1, LVar2, 50, 50, 1, 40, 50) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 1, LVar0, LVar1, LVar2, 50, 50, 1, 20, 40) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 1, LVar0, LVar1, LVar2, 50, 50, 1, 20, 40) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 1, LVar0, LVar1, LVar2, 50, 50, 1, 20, 40) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_BIG_SNOWFLAKES, 0, LVar0, LVar1, LVar2) + EVT_PLAY_EFFECT(EFFECT_SPARKLES, 2, LVar0, LVar1, LVar2, 10) + EVT_WAIT(20) + EVT_PLAY_EFFECT(EFFECT_BIG_SNOWFLAKES, 0, LVar0, LVar1, LVar2) + EVT_PLAY_EFFECT(EFFECT_SPARKLES, 0, LVar0, LVar1, LVar2, 7) + EVT_END_THREAD + EVT_CALL(MakeLerp, 0, 255, 120, EASING_LINEAR) + EVT_LABEL(5) + EVT_CALL(UpdateLerp) + EVT_CALL(func_802CFD30, NPC_CrystalKing_01, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_WAIT(1) + EVT_IF_EQ(LVar1, 1) + EVT_GOTO(5) + EVT_END_IF + EVT_CALL(EnableNpcShadow, NPC_CrystalKing_01, TRUE) + EVT_WAIT(30) + EVT_EXEC_WAIT(N(EVS_AnimateCam_CrystalKing)) + EVT_WAIT(20) + EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2) + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar3, LVar4, LVar5) + EVT_CALL(SetNpcPos, NPC_SELF, LVar3, LVar4, LVar2) + EVT_ADD(LVar0, LVar3) + EVT_DIV(LVar0, 2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(3.0)) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(SpeakToPlayer, NPC_CrystalKing_01, ANIM_CrystalKing_Anim09, ANIM_CrystalKing_Anim09, 0, MSG_CH7_016B) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(SetPlayerAnimation, ANIM_Mario_Running) + EVT_CALL(SetPlayerSpeed, EVT_FLOAT(2.5)) + EVT_THREAD + EVT_WAIT(10) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1309, 0) + EVT_CALL(PlayerMoveTo, 564, 116, 0) + EVT_END_THREAD + EVT_CALL(StartBossBattle, SONG_CRYSTAL_KING_BATTLE) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Scene_BossDefeated) = { + EVT_THREAD + EVT_WAIT(2) + EVT_CALL(FadeOutMusic, 0, 500) + EVT_END_THREAD + EVT_CALL(SetEncounterStatusFlags, 1, TRUE) + EVT_CALL(SetPlayerPos, 475, 100, 116) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar0, LVar1, LVar2) + EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) + EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0)) + EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(12.0), EVT_FLOAT(-10.0)) + EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(300.0)) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1) + EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) + EVT_CALL(SpeakToPlayer, NPC_CrystalKing_01, ANIM_CrystalKing_Anim09, ANIM_CrystalKing_Anim09, 0, MSG_CH7_016C) + EVT_THREAD + EVT_CALL(SetNpcRotationPivot, NPC_CrystalKing_01, 30) + EVT_CALL(MakeLerp, 0, 19 * 360, 210, EASING_COS_IN_OUT) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(SetNpcRotation, NPC_CrystalKing_01, 0, 0, LVar0) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_CALL(MakeLerp, 100, 200, 210, EASING_COS_IN_OUT) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_SETF(LVarA, LVar0) + EVT_MULF(LVarA, EVT_FLOAT(0.01)) + EVT_CALL(SetNpcScale, NPC_CrystalKing_01, LVarA, LVarA, 1) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(MakeLerp, 255, 122, 30, EASING_COS_IN_OUT) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(func_802CFD30, NPC_CrystalKing_01, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_THREAD + EVT_CALL(PlaySoundAtNpc, NPC_CrystalKing_01, SOUND_36B, 0) + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar0, LVar1, LVar2) + EVT_PLAY_EFFECT(EFFECT_SHIMMER_BURST, 0, LVar0, LVar1, LVar2, 1, 130) + EVT_END_THREAD + EVT_WAIT(30) + EVT_CALL(MakeLerp, 120, 0, 30, EASING_COS_IN_OUT) + EVT_LOOP(0) + EVT_CALL(UpdateLerp) + EVT_CALL(func_802CFD30, NPC_CrystalKing_01, FOLD_TYPE_7, LVar0, 0, 0, 0) + EVT_IF_EQ(LVar1, 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT(1) + EVT_END_LOOP + EVT_CALL(func_802CFD30, NPC_CrystalKing_01, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(GetNpcPos, NPC_CrystalKing_01, LVar0, LVar1, LVar2) + EVT_ADD(LVar1, 20) + EVT_PLAY_EFFECT(EFFECT_SPARKLES, 1, LVar0, LVar1, LVar2, 40) + EVT_CALL(SetNpcPos, NPC_CrystalKing_01, NPC_DISPOSE_LOCATION) + EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION) + EVT_WAIT(75) + EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_SURFACE, COLLIDER_o1309, SURFACE_TYPE_SNOW) + EVT_WAIT(25) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(EnablePartnerAI) + EVT_EXEC(N(EVS_SpawnStarCard)) + EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_CRYSTAL_KING) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_CrystalKing) = { + EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_Scene_BossDefeated))) + EVT_SWITCH(GB_StoryProgress) + EVT_CASE_LT(STORY_CH7_DEFEATED_CRYSTAL_KING) + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_Scene_CrystalKingAppears))) + EVT_CASE_EQ(STORY_CH7_DEFEATED_CRYSTAL_KING) + EVT_EXEC(N(EVS_RespawnStarCard)) + EVT_CASE_GT(STORY_CH7_DEFEATED_CRYSTAL_KING) + EVT_END_SWITCH + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2 | NPC_FLAG_100 | NPC_FLAG_10000000, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_HAS_SHADOW, FALSE) + EVT_CALL(SetNpcYaw, NPC_CrystalKing_01, 270) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_CrystalKing_Aux) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_NpcInit_Kalmar) = { + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_CrystalKing_01)[] = { + { + .id = NPC_CrystalKing_01, + .settings = &N(NpcSettings_CrystalKing), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_CrystalKing_Aux), + .drops = NPC_NO_DROPS, + .animations = CRYSTAL_KING_ANIMS, + }, + { + .id = NPC_CrystalKing_02, + .settings = &N(NpcSettings_CrystalKing), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000, + .drops = NPC_NO_DROPS, + .animations = CRYSTAL_KING_ANIMS, + }, + { + .id = NPC_Kalmar, + .settings = &N(NpcSettings_StarSpirit), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_Kalmar), + .drops = NPC_NO_DROPS, + .animations = KALMAR_ANIMS, + }, + { + .id = NPC_CrystalKing_03, + .settings = &N(NpcSettings_CrystalKing), + .pos = { NPC_DISPOSE_LOCATION }, + .yaw = 90, + .flags = ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000, + .init = &N(EVS_NpcInit_CrystalKing), + .drops = NPC_NO_DROPS, + .animations = CRYSTAL_KING_ANIMS, + }, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_CrystalKing_01), BTL_PRA2_FORMATION_00), + {} +}; + diff --git a/src/world/area_pra/pra_34/D8B3B0.c b/src/world/area_pra/pra_34/D8B3B0.c deleted file mode 100644 index cf85001ec5..0000000000 --- a/src/world/area_pra/pra_34/D8B3B0.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_34.h" - -static char* N(exit_str_0) = "pra_29"; -static char* N(exit_str_1) = "pra_31"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_34/D8B3D0.c b/src/world/area_pra/pra_34/D8B3D0.c deleted file mode 100644 index 19209acf61..0000000000 --- a/src/world/area_pra/pra_34/D8B3D0.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "pra_34.h" - -#include "../common/Reflection.inc.c" - -#include "world/common/todo/RemovePadlock.inc.c" - -#include "world/common/todo/GetEntityPosition.inc.c" diff --git a/src/world/area_pra/pra_34/pra_34.h b/src/world/area_pra/pra_34/pra_34.h index c326b8bfb2..1a8901d51d 100644 --- a/src/world/area_pra/pra_34/pra_34.h +++ b/src/world/area_pra/pra_34/pra_34.h @@ -2,8 +2,22 @@ /// @brief Crystal Palace - Mirror Hole Room #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_34_shape.h" +#include "mapfs/pra_34_hit.h" + +enum { + MV_FarPadlockEntityID = MapVar(0), + MV_NearPadlockEntityID = MapVar(1), +}; + #define NAMESPACE pra_34 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_ExitDoors_pra_31_0); +extern EvtScript N(EVS_ExitDoors_pra_31_2); +extern EvtScript N(EVS_MakeEntities); diff --git a/src/world/area_pra/pra_34/pra_34_0_header.c b/src/world/area_pra/pra_34/pra_34_0_header.c new file mode 100644 index 0000000000..82b984493d --- /dev/null +++ b/src/world/area_pra/pra_34/pra_34_0_header.c @@ -0,0 +1,17 @@ +#include "pra_34.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_34_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 }, + [pra_34_ENTRY_1] { 237.0, 0.0, 70.0, 270.0 }, + [pra_34_ENTRY_2] { 237.0, 0.0, -70.0, 270.0 }, + [pra_34_ENTRY_3] { 13.0, 0.0, -70.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_34 }, +}; diff --git a/src/world/area_pra/pra_34/pra_34_1_music.c b/src/world/area_pra/pra_34/pra_34_1_music.c new file mode 100644 index 0000000000..cc1c3999d4 --- /dev/null +++ b/src/world/area_pra/pra_34/pra_34_1_music.c @@ -0,0 +1,8 @@ +#include "pra_34.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_34/pra_34_2_main.c b/src/world/area_pra/pra_34/pra_34_2_main.c new file mode 100644 index 0000000000..813b1bc0db --- /dev/null +++ b/src/world/area_pra/pra_34/pra_34_2_main.c @@ -0,0 +1,218 @@ +#include "pra_34.h" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +#include "../common/GlassShimmer.inc.c" + +s32 N(NearLeftDoorModelsL)[] = { MODEL_o1012, MODEL_o1013, -1 }; +s32 N(NearLeftDoorModelsR)[] = { MODEL_o1014, MODEL_o1015, -1 }; +s32 N(FarLeftDoorModelsL)[] = { MODEL_o1010, MODEL_o1011, -1 }; +s32 N(FarLeftDoorModelsR)[] = { MODEL_o1008, MODEL_o1009, -1 }; +s32 N(BothLeftDoorModelsL)[] = { MODEL_o1012, MODEL_o1013, MODEL_o1010, MODEL_o1011, -1 }; +s32 N(BothLeftDoorModelsR)[] = { MODEL_o1014, MODEL_o1015, MODEL_o1008, MODEL_o1009, -1 }; + +s32 N(NearRightDoorModelsL)[] = { MODEL_o874, MODEL_o875, -1 }; +s32 N(NearRightDoorModelsR)[] = { MODEL_o876, MODEL_o877, -1 }; +s32 N(FarRightDoorModelsL)[] = { MODEL_o880, MODEL_o881, -1 }; +s32 N(FarRightDoorModelsR)[] = { MODEL_o878, MODEL_o879, -1 }; +s32 N(BothRightDoorModelsL)[] = { MODEL_o874, MODEL_o875, MODEL_o880, MODEL_o881, -1 }; +s32 N(BothRightDoorModelsR)[] = { MODEL_o876, MODEL_o877, MODEL_o878, MODEL_o879, -1 }; + +EvtScript N(EVS_ExitDoors_pra_29_1) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_34_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_29"), pra_29_ENTRY_1) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_31_0) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_34_ENTRY_1) + EVT_SET(LVar1, COLLIDER_deilittse) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_31"), pra_31_ENTRY_0) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_31_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_34_ENTRY_2) + EVT_SET(LVar1, COLLIDER_deilittne) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_31"), pra_31_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitDoors_pra_29_2) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_34_ENTRY_3) + EVT_SET(LVar1, COLLIDER_deilittnw) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_29"), pra_29_ENTRY_2) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +#include "world/common/todo/RemovePadlock.inc.c" +#include "world/common/todo/GetEntityPosition.inc.c" + +s32 N(PalaceKeyList)[] = { + ITEM_CRYSTAL_PALACE_KEY, + ITEM_NONE +}; + +EvtScript N(EVS_UnlockPrompt_Doors) = { + EVT_SET_GROUP(EVT_GROUP_00) + EVT_SUSPEND_GROUP(EVT_GROUP_01) + EVT_CALL(ShowKeyChoicePopup) + EVT_IF_EQ(LVar0, 0) + EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_00D8, 160, 40) + EVT_CALL(CloseChoicePopup) + EVT_RESUME_GROUP(EVT_GROUP_01) + EVT_RETURN + EVT_END_IF + EVT_IF_EQ(LVar0, -1) + EVT_CALL(CloseChoicePopup) + EVT_RESUME_GROUP(EVT_GROUP_01) + EVT_RETURN + EVT_END_IF + EVT_CALL(RemoveKeyItemAt, LVar1) + EVT_CALL(CloseChoicePopup) + EVT_SET(GF_PRA34_UnlockedDoor, TRUE) + EVT_CALL(N(GetEntityPosition), MV_FarPadlockEntityID, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAt, SOUND_269, 0, LVar0, LVar1, LVar2) + EVT_CALL(N(GetEntityPosition), MV_NearPadlockEntityID, LVar0, LVar1, LVar2) + EVT_CALL(PlaySoundAt, SOUND_269, 0, LVar0, LVar1, LVar2) + EVT_SET(LVar0, MV_FarPadlockEntityID) + EVT_CALL(N(RemovePadlock)) + EVT_SET(LVar0, MV_NearPadlockEntityID) + EVT_CALL(N(RemovePadlock)) + EVT_RESUME_GROUP(EVT_GROUP_01) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_29_1)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_29_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0) + EVT_IF_EQ(GF_PRA34_UnlockedDoor, FALSE) + EVT_BIND_PADLOCK(EVT_PTR(N(EVS_UnlockPrompt_Doors)), TRIGGER_WALL_PRESS_A, EVT_ENTITY_INDEX(0), EVT_PTR(N(PalaceKeyList)), 0, 1) + EVT_BIND_PADLOCK(EVT_PTR(N(EVS_UnlockPrompt_Doors)), TRIGGER_WALL_PRESS_A, EVT_ENTITY_INDEX(1), EVT_PTR(N(PalaceKeyList)), 0, 1) + EVT_ELSE + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_31_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittse, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_31_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittne, 1, 0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_34_ENTRY_0) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_34_ENTRY_1) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(NearRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(NearRightDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_34_ENTRY_2) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothRightDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarRightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarRightDoorModelsR))) + EVT_END_IF + EVT_CASE_EQ(pra_34_ENTRY_3) + EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE) + EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR))) + EVT_ELSE + EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR))) + EVT_END_IF + EVT_END_SWITCH + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_EXEC_WAIT(N(EVS_MakeEntities)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_SET(LVar0, MODEL_o945) + EVT_SET(LVar1, MODEL_o947) + EVT_SET(LVar2, TEX_PANNER_0) + EVT_EXEC(N(EVS_GlassShimmer)) + EVT_SET(LVar0, REFLECTION_FLOOR_WALL) + EVT_SET(LVar1, GF_PRA_BrokeIllusion) + EVT_EXEC(N(EVS_SetupReflections)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_34/pra_34_3_entity.c b/src/world/area_pra/pra_34/pra_34_3_entity.c new file mode 100644 index 0000000000..edc54b2ac5 --- /dev/null +++ b/src/world/area_pra/pra_34/pra_34_3_entity.c @@ -0,0 +1,24 @@ +#include "pra_34.h" +#include "entity.h" + +EvtScript N(EVS_Interact_Padlock) = { + EVT_SET(GF_PRA34_UnlockedDoor, TRUE) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_31_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittse, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_31_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittne, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_MakeEntities) = { + EVT_IF_EQ(GF_PRA34_UnlockedDoor, FALSE) + EVT_CALL(MakeEntity, EVT_PTR(Entity_Padlock), 240, 8, -75, 270, MAKE_ENTITY_END) + EVT_CALL(AssignScript, EVT_PTR(N(EVS_Interact_Padlock))) + EVT_SET(MV_FarPadlockEntityID, LVar0) + EVT_CALL(MakeEntity, EVT_PTR(Entity_Padlock), 240, 8, 75, 270, MAKE_ENTITY_END) + EVT_CALL(AssignScript, EVT_PTR(N(EVS_Interact_Padlock))) + EVT_SET(MV_NearPadlockEntityID, LVar0) + EVT_END_IF + EVT_RETURN + EVT_END +}; + diff --git a/src/world/area_pra/pra_35/D8D250.c b/src/world/area_pra/pra_35/D8D250.c deleted file mode 100644 index 0300196d9b..0000000000 --- a/src/world/area_pra/pra_35/D8D250.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "pra_35.h" - -static char* N(exit_str_0) = "pra_33"; -static char* N(exit_str_1) = "pra_19"; - -#include "../common/MapInit_EnableFloorReflection.inc.c" diff --git a/src/world/area_pra/pra_35/D8D270.c b/src/world/area_pra/pra_35/D8D270.c deleted file mode 100644 index f0ef7e0370..0000000000 --- a/src/world/area_pra/pra_35/D8D270.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "pra_35.h" - -#include "../common/Reflection.inc.c" - -#include "world/common/enemy/ai/PatrolNoAttackAI.inc.c" - -#include "world/common/enemy/ai/ClubbaPatrolAI.inc.c" - -#include "world/common/enemy/ai/WanderMeleeAI.inc.c" diff --git a/src/world/area_pra/pra_35/D8FBA0.c b/src/world/area_pra/pra_35/D8FBA0.c deleted file mode 100644 index 0dbcc6ad06..0000000000 --- a/src/world/area_pra/pra_35/D8FBA0.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "pra_35.h" - -#include "world/common/todo/StashVars.inc.c" - -#include "world/common/todo/GetItemName.inc.c" - -#include "world/common/todo/SomeItemEntityFunc.inc.c" - -#include "world/common/todo/IsItemBadge.inc.c" diff --git a/src/world/area_pra/pra_35/pra_35.h b/src/world/area_pra/pra_35/pra_35.h index 6148866cca..ccbe3c4ce3 100644 --- a/src/world/area_pra/pra_35/pra_35.h +++ b/src/world/area_pra/pra_35/pra_35.h @@ -2,8 +2,22 @@ /// @brief Crystal Palace - Triple Dip Room #include "common.h" -#include "../pra.h" #include "message_ids.h" #include "map.h" +#include "../pra.h" +#include "mapfs/pra_35_shape.h" +#include "mapfs/pra_35_hit.h" + +enum { + NPC_Clubba = 0, + NPC_Clubba_Hitbox = 1, + NPC_Duplighost = 4, +}; + #define NAMESPACE pra_35 + +extern EvtScript N(EVS_Main); +extern EvtScript N(EVS_SetupMusic); +extern EvtScript N(EVS_MakeEntities); +extern NpcGroupList N(DefaultNPCs); diff --git a/src/world/area_pra/pra_35/pra_35_0_header.c b/src/world/area_pra/pra_35/pra_35_0_header.c new file mode 100644 index 0000000000..d65d614291 --- /dev/null +++ b/src/world/area_pra/pra_35/pra_35_0_header.c @@ -0,0 +1,16 @@ +#include "pra_35.h" + +#include "../common/MapInit_EnableFloorReflection.inc.c" + +EntryList N(Entrances) = { + [pra_35_ENTRY_0] { 13.0, 0.0, 80.0, 90.0 }, + [pra_35_ENTRY_1] { 487.0, 0.0, 80.0, 270.0 }, + [pra_35_ENTRY_2] { 13.0, 0.0, -80.0, 90.0 }, +}; + +MapSettings N(settings) = { + .main = &N(EVS_Main), + .entryList = &N(Entrances), + .entryCount = ENTRY_COUNT(N(Entrances)), + .tattle = { MSG_MapTattle_pra_35 }, +}; diff --git a/src/world/area_pra/pra_35/pra_35_1_music.c b/src/world/area_pra/pra_35/pra_35_1_music.c new file mode 100644 index 0000000000..de4299f682 --- /dev/null +++ b/src/world/area_pra/pra_35/pra_35_1_music.c @@ -0,0 +1,8 @@ +#include "pra_35.h" + +EvtScript N(EVS_SetupMusic) = { + EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_35/pra_35_2_main.c b/src/world/area_pra/pra_35/pra_35_2_main.c new file mode 100644 index 0000000000..23286cd78c --- /dev/null +++ b/src/world/area_pra/pra_35/pra_35_2_main.c @@ -0,0 +1,120 @@ +#include "pra_35.h" + +#include "../common/GlassShimmer.inc.c" + +#include "../common/Reflection.inc.c" +#include "../common/Reflection.data.inc.c" + +s32 N(LeftDoorModelsL)[] = { MODEL_o772, MODEL_o844, -1 }; +s32 N(LeftDoorModelsR)[] = { MODEL_o768, MODEL_o846, -1 }; + +s32 N(RightDoorModelsL)[] = { MODEL_o861, MODEL_o862, -1 }; +s32 N(RightDoorModelsR)[] = { MODEL_o859, MODEL_o860, -1 }; + +EvtScript N(EVS_ExitWalk_pra_33_0) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_35_ENTRY_0) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_SET(LVar2, EVT_PTR(N(LeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(LeftDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_33"), pra_33_ENTRY_0) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitWalk_pra_19_0) = { + EVT_SET_GROUP(EVT_GROUP_1B) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_SET(LVar0, pra_35_ENTRY_1) + EVT_SET(LVar1, COLLIDER_deilittsw) + EVT_SET(LVar2, EVT_PTR(N(RightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(RightDoorModelsR))) + EVT_EXEC(BaseExitDoor) + EVT_WAIT(17) + EVT_CALL(GotoMap, EVT_PTR("pra_19"), pra_19_ENTRY_0) + EVT_WAIT(100) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_ExitWalk_pra_33_2) = EVT_EXIT_WALK(60, pra_35_ENTRY_2, "pra_33", pra_33_ENTRY_2); + +EvtScript N(EVS_Unused) = { + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_BindExitTriggers) = { + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_33_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_19_0)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittse, 1, 0) + EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_33_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilinw, 1, 0) + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_EnterMap) = { + EVT_CALL(GetEntryID, LVar0) + EVT_SWITCH(LVar0) + EVT_CASE_EQ(pra_35_ENTRY_0) + EVT_SET(LVar2, EVT_PTR(N(LeftDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(LeftDoorModelsR))) + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_CASE_EQ(pra_35_ENTRY_1) + EVT_SET(LVar2, EVT_PTR(N(RightDoorModelsL))) + EVT_SET(LVar3, EVT_PTR(N(RightDoorModelsR))) + EVT_EXEC_WAIT(BaseEnterDoor) + EVT_EXEC(N(EVS_BindExitTriggers)) + EVT_CASE_EQ(pra_35_ENTRY_2) + EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers))) + EVT_EXEC(EnterWalk) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; + +BombTrigger N(D_802432A8_D904F8) = { + .pos = { 13.0f, 0.0f, -80.0f }, + .radius = 0.0f +}; + +EvtScript N(D_802432B8_D90508) = { + EVT_CALL(EnableGroup, MODEL_g297, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittnw, COLLIDER_FLAGS_UPPER_MASK) + EVT_UNBIND + EVT_RETURN + EVT_END +}; + +EvtScript N(EVS_Main) = { + EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE) + EVT_CALL(SetSpriteShading, SHADING_NONE) + EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40) + EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) + EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) + EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs))) + EVT_SET(LVar0, 64) + EVT_SET(LVar1, 65) + EVT_SET(LVar2, 0) + EVT_EXEC(N(EVS_GlassShimmer)) + EVT_EXEC_WAIT(N(EVS_MakeEntities)) + EVT_EXEC(N(EVS_EnterMap)) + EVT_WAIT(1) + EVT_IF_EQ(GF_PRA33_BombedWall, FALSE) + EVT_BIND_TRIGGER(EVT_PTR(N(D_802432B8_D90508)), TRIGGER_POINT_BOMB, EVT_PTR(N(D_802432A8_D904F8)), 1, 0) + EVT_ELSE + EVT_CALL(EnableGroup, MODEL_g297, FALSE) + EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittnw, COLLIDER_FLAGS_UPPER_MASK) + EVT_END_IF + EVT_SET(LVar0, 0) + EVT_SET(LVar1, GF_PRA_BrokeIllusion) + EVT_EXEC(N(EVS_SetupReflections)) + EVT_EXEC(N(EVS_SetupMusic)) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_35/pra_35_3_npc.c b/src/world/area_pra/pra_35/pra_35_3_npc.c new file mode 100644 index 0000000000..66f9e4d333 --- /dev/null +++ b/src/world/area_pra/pra_35/pra_35_3_npc.c @@ -0,0 +1,74 @@ +#include "pra_35.h" + +#define INCLUDE_FROST_CLUBBA_PATROL +#include "world/common/enemy/complete/FrostClubba_Multi.inc.c" +#include "world/common/enemy/complete/Duplighost_Patrol.inc.c" + +#include "world/common/enemy/ai/WanderMeleeAI.inc.c" + +EvtScript N(EVS_NpcInit_EnableReflection) = { + EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) + EVT_RETURN + EVT_END +}; + +StaticNpc N(NpcData_Clubba)[] = { + { + .id = NPC_Clubba, + .settings = &N(NpcSettings_FrostClubba_Patrol), + .pos = { 200.0f, 0.0f, 75.0f }, + .yaw = 90, + .flags = ENEMY_FLAG_400 | ENEMY_FLAG_800, + .init = &N(EVS_NpcInit_EnableReflection), + .drops = FROST_CLUBBA_DROPS, + .territory = { + .patrol = { + .isFlying = TRUE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .numPoints = 2, + .points = { + { 200, 0, 75 }, + { 300, 0, 75 }, + }, + .detectShape = SHAPE_RECT, + .detectPos = { 250, 0, 75 }, + .detectSize = { 200, 100 }, + } + }, + .animations = FROST_CLUBBA_ANIMS, + .aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION, + }, + FROST_CLUBBA_MACE_HITBOX(NPC_Clubba_Hitbox), +}; + +StaticNpc N(NpcData_Duplighost) = { + .id = NPC_Duplighost, + .settings = &N(NpcSettings_Duplighost_Patrol), + .pos = { 200.0f, 0.0f, -75.0f }, + .yaw = 90, + .flags = ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_200000, + .init = &N(EVS_NpcInit_EnableReflection), + .drops = DUPLIGHOST_DROPS, + .territory = { + .patrol = { + .isFlying = TRUE, + .moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED, + .numPoints = 2, + .points = { + { 200, 0, -75 }, + { 300, 0, -75 }, + }, + .detectShape = SHAPE_RECT, + .detectPos = { 250, 0, 75 }, + .detectSize = { 200, 100 }, + } + }, + .animations = DUPLIGHOST_ANIMS, + .aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION, +}; + +NpcGroupList N(DefaultNPCs) = { + NPC_GROUP(N(NpcData_Clubba), BTL_PRA_FORMATION_08, BTL_PRA_STAGE_01), + NPC_GROUP(N(NpcData_Duplighost), BTL_PRA3_FORMATION_04, BTL_PRA3_STAGE_00), + {} +}; diff --git a/src/world/area_pra/pra_35/pra_35_4_entity.c b/src/world/area_pra/pra_35/pra_35_4_entity.c new file mode 100644 index 0000000000..c994b320c3 --- /dev/null +++ b/src/world/area_pra/pra_35/pra_35_4_entity.c @@ -0,0 +1,14 @@ +#include "pra_35.h" +#include "entity.h" + +#include "world/common/atomic/Chest.inc.c" + +EvtScript N(EVS_OpenChest_TripleDip) = EVT_OPEN_CHEST_BADGE(ITEM_TRIPLE_DIP, GF_PRA35_Chest_TripleDip); + +EvtScript N(EVS_MakeEntities) = { + EVT_CALL(MakeEntity, EVT_PTR(Entity_Chest), 435, 0, -70, 0, 0, MAKE_ENTITY_END) + EVT_CALL(AssignChestFlag, GF_PRA35_Chest_TripleDip) + EVT_CALL(AssignScript, EVT_PTR(N(EVS_OpenChest_TripleDip))) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_pra/pra_36/pra_36.h b/src/world/area_pra/pra_36/pra_36.h index 569bdc31cd..d6c4cefb00 100644 --- a/src/world/area_pra/pra_36/pra_36.h +++ b/src/world/area_pra/pra_36/pra_36.h @@ -12,7 +12,7 @@ #include "sprite/npc/Duplighost.h" enum { - NPC_Duplighost = 0, + NPC_Duplighost = 0, }; #define NAMESPACE pra_36 diff --git a/src/world/area_pra/pra_37/pra_37_3_npc.c b/src/world/area_pra/pra_37/pra_37_3_npc.c index aaf334945e..79195e492b 100644 --- a/src/world/area_pra/pra_37/pra_37_3_npc.c +++ b/src/world/area_pra/pra_37/pra_37_3_npc.c @@ -1,6 +1,7 @@ #include "pra_37.h" -#include "world/common/enemy/complete/FrostClubba_Wander.inc.c" +#define INCLUDE_FROST_CLUBBA_WANDER +#include "world/common/enemy/complete/FrostClubba_Multi.inc.c" EvtScript N(EVS_NpcInit_FrostClubba) = { EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_REFLECT_FLOOR, TRUE) diff --git a/src/world/area_pra/pra_39/pra_39.h b/src/world/area_pra/pra_39/pra_39.h index 8fd5079397..a49d2f72d9 100644 --- a/src/world/area_pra/pra_39/pra_39.h +++ b/src/world/area_pra/pra_39/pra_39.h @@ -12,7 +12,7 @@ #include "sprite/npc/Duplighost.h" enum { - NPC_Duplighost = 0, + NPC_Duplighost = 0, }; #define NAMESPACE pra_39 diff --git a/src/world/area_sam/sam_05/sam_05_5_scenes.c b/src/world/area_sam/sam_05/sam_05_5_scenes.c index b33e8bc82a..ca9defa982 100644 --- a/src/world/area_sam/sam_05/sam_05_5_scenes.c +++ b/src/world/area_sam/sam_05/sam_05_5_scenes.c @@ -217,7 +217,7 @@ EvtScript N(EVS_StarKidsFlee) = { EVT_IF_EQ(LVarA, -1) EVT_BREAK_LOOP EVT_END_IF - EVT_CALL(func_802CFD30, LVarA, 7, LVar2, 0, 0, 0) + EVT_CALL(func_802CFD30, LVarA, FOLD_TYPE_7, LVar2, 0, 0, 0) EVT_END_LOOP EVT_WAIT(1) EVT_IF_EQ(LVar1, 1) diff --git a/src/world/area_sam/sam_08/sam_08_4_npc.c b/src/world/area_sam/sam_08/sam_08_4_npc.c index ae347cfc00..379101621a 100644 --- a/src/world/area_sam/sam_08/sam_08_4_npc.c +++ b/src/world/area_sam/sam_08/sam_08_4_npc.c @@ -1,7 +1,5 @@ #include "sam_08.h" -#include "world/common/enemy/ai/WanderMeleeAI.inc.c" - NpcSettings N(NpcSettings_Kooper) = { .height = 35, .radius = 24, @@ -16,7 +14,8 @@ NpcSettings N(NpcSettings_Duplighost) = { .level = 99, }; -#include "world/common/enemy/complete/FrostClubba_Wander.inc.c" +#define INCLUDE_FROST_CLUBBA_WANDER +#include "world/common/enemy/complete/FrostClubba_Multi.inc.c" EvtScript N(EVS_NpcInteract_TrueKooperA) = { EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldKooper_Talk, ANIM_WorldKooper_Idle, 0, MSG_CH7_012B) diff --git a/src/world/area_sam/sam_10/sam_10_5_npc.c b/src/world/area_sam/sam_10/sam_10_5_npc.c index 3567c9729d..f2e172cfd0 100644 --- a/src/world/area_sam/sam_10/sam_10_5_npc.c +++ b/src/world/area_sam/sam_10/sam_10_5_npc.c @@ -1,6 +1,7 @@ #include "sam_10.h" -#include "world/common/enemy/complete/FrostClubba_Wander.inc.c" +#define INCLUDE_FROST_CLUBBA_WANDER +#include "world/common/enemy/complete/FrostClubba_Multi.inc.c" StaticNpc N(NpcData_Clubba)[] = { { diff --git a/src/world/area_sam/sam_11/sam_11_3_rooms.c b/src/world/area_sam/sam_11/sam_11_3_rooms.c index 441da67ea7..62a493a348 100644 --- a/src/world/area_sam/sam_11/sam_11_3_rooms.c +++ b/src/world/area_sam/sam_11/sam_11_3_rooms.c @@ -48,7 +48,7 @@ EvtScript N(EVS_RoomListener_LeftHouse) = { EVT_CALL(MakeLerp, 0, 255, 20, EASING_LINEAR) EVT_LOOP(0) EVT_CALL(UpdateLerp) - EVT_CALL(func_802CFD30, 2, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Herringway, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP diff --git a/src/world/area_sam/sam_11/sam_11_5_npc.c b/src/world/area_sam/sam_11/sam_11_5_npc.c index 3661dbb13e..b7fbb3e9da 100644 --- a/src/world/area_sam/sam_11/sam_11_5_npc.c +++ b/src/world/area_sam/sam_11/sam_11_5_npc.c @@ -206,7 +206,7 @@ EvtScript N(EVS_NpcInteract_Herringway) = { EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Herringway_Idle) EVT_CALL(SetNpcPos, NPC_SELF, -217, 0, -38) EVT_END_THREAD - EVT_CALL(func_802CFD30, -1, 7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 0, 0, 0, 0) EVT_SET(GB_StoryProgress, STORY_CH7_SPOKE_WITH_HERRINGWAY) EVT_CASE_LT(STORY_CH7_MAYOR_MURDER_SOLVED) EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Herringway_Talk, ANIM_Herringway_Idle, 0, MSG_CH7_00D3) diff --git a/src/world/area_sam/sam_12/sam_12_4_scenes.c b/src/world/area_sam/sam_12/sam_12_4_scenes.c index 2be9ecd40a..d7142e670d 100644 --- a/src/world/area_sam/sam_12/sam_12_4_scenes.c +++ b/src/world/area_sam/sam_12/sam_12_4_scenes.c @@ -70,10 +70,10 @@ EvtScript N(EVS_MerlarFlickering) = { EVT_USE_BUF(EVT_PTR(N(FlickeringStaticAmts))) EVT_LOOP(5) EVT_BUF_READ1(LVar0) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_D, EVT_FLOAT(0.0), LVar0, EVT_FLOAT(200.0), EVT_FLOAT(100.0)) + EVT_CALL(func_802CFD30, NPC_Merlar, FOLD_TYPE_D, EVT_FLOAT(0.0), LVar0, EVT_FLOAT(200.0), EVT_FLOAT(100.0)) EVT_WAIT(1) EVT_END_LOOP - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_D, EVT_FLOAT(0.0), EVT_FLOAT(0.0), EVT_FLOAT(0.0), EVT_FLOAT(100.0)) + EVT_CALL(func_802CFD30, NPC_Merlar, FOLD_TYPE_D, EVT_FLOAT(0.0), EVT_FLOAT(0.0), EVT_FLOAT(0.0), EVT_FLOAT(100.0)) EVT_WAIT(1) EVT_END_LOOP EVT_GOTO(0) @@ -141,7 +141,7 @@ EvtScript N(EVS_Scene_MeetMerlar) = { EVT_SETF(LVar0, EVT_FLOAT(0.0)) EVT_LOOP(100) EVT_ADDF(LVar0, EVT_FLOAT(1.0)) - EVT_CALL(func_802CFD30, 0, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Merlar, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_EXEC_GET_TID(N(EVS_MerlarFlickering), LVar8) @@ -245,7 +245,7 @@ EvtScript N(EVS_Scene_MeetMerlar) = { EVT_SETF(LVar0, EVT_FLOAT(100.0)) EVT_LOOP(100) EVT_ADDF(LVar0, EVT_FLOAT(-1.0)) - EVT_CALL(func_802CFD30, 0, 7, LVar0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_Merlar, FOLD_TYPE_7, LVar0, 0, 0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(SetNpcPos, NPC_Merlar, NPC_DISPOSE_LOCATION) diff --git a/src/world/area_sbk/sbk_02/sbk_02_3_ruins.c b/src/world/area_sbk/sbk_02/sbk_02_3_ruins.c index 454015d704..e169aea3cb 100644 --- a/src/world/area_sbk/sbk_02/sbk_02_3_ruins.c +++ b/src/world/area_sbk/sbk_02/sbk_02_3_ruins.c @@ -624,7 +624,7 @@ EvtScript N(EVS_OnInteract_Pedestal) = { EVT_WAIT(10) EVT_CALL(SetPlayerSpeed, EVT_FLOAT(3.0)) EVT_CALL(PlayerMoveTo, LVar0, 80, 0) - EVT_CALL(func_802D2884, 0, 0, 0) + EVT_CALL(FacePlayerTowardPoint, 0, 0, 0) EVT_END_THREAD EVT_EXEC(N(EVS_DarkenEnvironment)) EVT_WAIT(30) @@ -680,7 +680,7 @@ EvtScript N(EVS_Ruins_Arise_Continued) = { EVT_CALL(PlaySound, SOUND_5C) EVT_CALL(DisablePlayerInput, TRUE) EVT_CALL(func_802CF56C, 1) - EVT_CALL(func_802D2884, 0, 0, 0) + EVT_CALL(FacePlayerTowardPoint, 0, 0, 0) EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_iwa, COLLIDER_FLAGS_UPPER_MASK) EVT_CALL(EnableModel, MODEL_point_iwa, FALSE) EVT_CALL(EnableGroup, MODEL_day_version, FALSE) diff --git a/src/world/area_trd/trd_00/trd_00_3_npc.c b/src/world/area_trd/trd_00/trd_00_3_npc.c index 016b00f679..4be84091f7 100644 --- a/src/world/area_trd/trd_00/trd_00_3_npc.c +++ b/src/world/area_trd/trd_00/trd_00_3_npc.c @@ -53,10 +53,10 @@ EvtScript N(EVS_NpcIdle_KoopaBros) = { EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(4.5)) EVT_CALL(NpcMoveTo, NPC_SELF, -556, 180, 0) EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0)) - EVT_CALL(func_802CFD30, -1, 5, 4, 2, 1, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_5, 4, 2, 1, 0) EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_KoopaBros_Black_Anim1E) EVT_WAIT(12) - EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_KoopaBros_Black_Anim04) EVT_WAIT(10) EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_KoopaBros_Black_Anim14, ANIM_KoopaBros_Black_Anim04, 0, MSG_CH1_00D2) diff --git a/src/world/area_trd/trd_03/trd_03_3_npc.c b/src/world/area_trd/trd_03/trd_03_3_npc.c index 3aaf03d27d..48b64ac295 100644 --- a/src/world/area_trd/trd_03/trd_03_3_npc.c +++ b/src/world/area_trd/trd_03/trd_03_3_npc.c @@ -89,10 +89,10 @@ EvtScript N(EVS_Scene_GreenKoopaBros) = { EVT_CALL(SetPlayerPos, -647, 0, 80) EVT_EXEC_WAIT(N(EVS_EnterMap)) EVT_CALL(InterpNpcYaw, NPC_KoopaBros, 270, 5) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 4, 2, 1, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros, FOLD_TYPE_5, 4, 2, 1, 0) EVT_CALL(SetNpcAnimation, NPC_KoopaBros, ANIM_KoopaBros_Green_Anim1E) EVT_WAIT(12) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcAnimation, NPC_KoopaBros, ANIM_KoopaBros_Green_Anim04) EVT_WAIT(10) EVT_CALL(SpeakToPlayer, NPC_KoopaBros, ANIM_KoopaBros_Green_Anim14, ANIM_KoopaBros_Green_Anim04, 0, MSG_CH1_00D4) diff --git a/src/world/area_trd/trd_05/trd_05_4_npc.c b/src/world/area_trd/trd_05/trd_05_4_npc.c index 70351a9dde..939b00d372 100644 --- a/src/world/area_trd/trd_05/trd_05_4_npc.c +++ b/src/world/area_trd/trd_05/trd_05_4_npc.c @@ -31,11 +31,11 @@ EvtScript N(EVS_KoopaBros_SetTrap) = { EVT_CALL(SetNpcAnimation, NPC_KoopaBros_01, ANIM_KoopaBros_Yellow_Anim04) EVT_THREAD EVT_LOOP(8) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 0, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, 255, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_01, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_02, FOLD_TYPE_7, 255, 0, 0, 0) EVT_WAIT(6) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 255, 0, 0, 0) - EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_01, FOLD_TYPE_7, 255, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_02, FOLD_TYPE_7, 0, 0, 0, 0) EVT_WAIT(6) EVT_END_LOOP EVT_END_THREAD diff --git a/src/world/area_trd/trd_10/trd_10_2_npc.c b/src/world/area_trd/trd_10/trd_10_2_npc.c index af30abeca1..079c783a24 100644 --- a/src/world/area_trd/trd_10/trd_10_2_npc.c +++ b/src/world/area_trd/trd_10/trd_10_2_npc.c @@ -66,10 +66,10 @@ EvtScript N(EVS_NpcAI_KoopaBros_01) = { EVT_CALL(SetNpcPos, NPC_KoopaBros_01, -32, 0, 0) EVT_CALL(NpcMoveTo, NPC_KoopaBros_01, -88, 0, 15) EVT_WAIT(10) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 4, 2, 1, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_01, FOLD_TYPE_5, 4, 2, 1, 0) EVT_CALL(SetNpcAnimation, NPC_KoopaBros_01, ANIM_KoopaBros_Black_Anim1E) EVT_WAIT(12) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0) + EVT_CALL(func_802CFD30, NPC_KoopaBros_01, FOLD_TYPE_NONE, 0, 0, 0, 0) EVT_CALL(SetNpcAnimation, NPC_KoopaBros_01, ANIM_KoopaBros_Black_Anim04) EVT_WAIT(10) EVT_CALL(SpeakToPlayer, NPC_KoopaBros_01, ANIM_KoopaBros_Black_Anim02, ANIM_KoopaBros_Black_Anim04, 0, MSG_CH1_00F4) diff --git a/src/world/common/complete/Quizmo.inc.c b/src/world/common/complete/Quizmo.inc.c index 8d33fdca74..9f75ec7248 100644 --- a/src/world/common/complete/Quizmo.inc.c +++ b/src/world/common/complete/Quizmo.inc.c @@ -653,7 +653,7 @@ EvtScript N(EVS_Quizmo_MovePlayerToPodium) = { EVT_CALL(SetPlayerPos, LVar3, QUIZ_ARRAY_ORIGIN_Y, LVar4) EVT_END_THREAD EVT_CALL(N(Quizmo_SpinPlayer)) - EVT_CALL(func_802D2884, QUIZ_ARRAY_ORIGIN_X, QUIZ_ARRAY_ORIGIN_Z, 0) + EVT_CALL(FacePlayerTowardPoint, QUIZ_ARRAY_ORIGIN_X, QUIZ_ARRAY_ORIGIN_Z, 0) EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002) EVT_RETURN EVT_END diff --git a/src/world/common/enemy/complete/AlbinoDino.h b/src/world/common/enemy/complete/AlbinoDino.h new file mode 100644 index 0000000000..89cdb8a38c --- /dev/null +++ b/src/world/common/enemy/complete/AlbinoDino.h @@ -0,0 +1,22 @@ +#include "common.h" +#include "sprite/npc/AlbinoDino.h" + +#define ALBINO_DINO_ANIMS \ +{ \ + .idle = ANIM_AlbinoDino_Anim00, \ + .walk = ANIM_AlbinoDino_Anim00, \ + .run = ANIM_AlbinoDino_Anim00, \ + .chase = ANIM_AlbinoDino_Anim00, \ + .anim_4 = ANIM_AlbinoDino_Anim00, \ + .anim_5 = ANIM_AlbinoDino_Anim00, \ + .death = ANIM_AlbinoDino_Anim00, \ + .hit = ANIM_AlbinoDino_Anim00, \ + .anim_8 = ANIM_AlbinoDino_Anim00, \ + .anim_9 = ANIM_AlbinoDino_Anim00, \ + .anim_A = ANIM_AlbinoDino_Anim00, \ + .anim_B = ANIM_AlbinoDino_Anim00, \ + .anim_C = ANIM_AlbinoDino_Anim03, \ + .anim_D = ANIM_AlbinoDino_Anim03, \ + .anim_E = ANIM_AlbinoDino_Anim03, \ + .anim_F = ANIM_AlbinoDino_Anim00, \ +} diff --git a/src/world/common/enemy/complete/AlbinoDino.inc.c b/src/world/common/enemy/complete/AlbinoDino.inc.c new file mode 100644 index 0000000000..a3b1a299cd --- /dev/null +++ b/src/world/common/enemy/complete/AlbinoDino.inc.c @@ -0,0 +1,14 @@ +#include "AlbinoDino.h" + +EvtScript N(EVS_NpcAuxAI_AlbinoDino) = { + EVT_RETURN + EVT_END +}; + +NpcSettings N(NpcSettings_AlbinoDino) = { + .height = 70, + .radius = 50, + .level = 99, + .otherAI = &N(EVS_NpcAuxAI_AlbinoDino), + .onDefeat = &EnemyNpcDefeat, +}; diff --git a/src/world/common/enemy/complete/Bombette.h b/src/world/common/enemy/complete/Bombette.h new file mode 100644 index 0000000000..d0091bb2eb --- /dev/null +++ b/src/world/common/enemy/complete/Bombette.h @@ -0,0 +1,22 @@ +#include "common.h" +#include "sprite/npc/WorldBombette.h" + +#define BOMBETTE_ANIMS \ +{ \ + .idle = ANIM_WorldBombette_Idle, \ + .walk = ANIM_WorldBombette_Walk, \ + .run = ANIM_WorldBombette_Walk, \ + .chase = ANIM_WorldBombette_Walk, \ + .anim_4 = ANIM_WorldBombette_Walk, \ + .anim_5 = ANIM_WorldBombette_Walk, \ + .death = ANIM_WorldBombette_Still, \ + .hit = ANIM_WorldBombette_Still, \ + .anim_8 = ANIM_WorldBombette_Still, \ + .anim_9 = ANIM_WorldBombette_Still, \ + .anim_A = ANIM_WorldBombette_Still, \ + .anim_B = ANIM_WorldBombette_Still, \ + .anim_C = ANIM_WorldBombette_Still, \ + .anim_D = ANIM_WorldBombette_Still, \ + .anim_E = ANIM_WorldBombette_Still, \ + .anim_F = ANIM_WorldBombette_Still, \ +} diff --git a/src/world/common/enemy/complete/Bombette.inc.c b/src/world/common/enemy/complete/Bombette.inc.c new file mode 100644 index 0000000000..f5b0058d2c --- /dev/null +++ b/src/world/common/enemy/complete/Bombette.inc.c @@ -0,0 +1,9 @@ +#include "Bombette.h" + +NpcSettings N(NpcSettings_Bombette) = { + .height = 23, + .radius = 20, + .level = 6, + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; diff --git a/src/world/common/enemy/complete/CrystalKing.h b/src/world/common/enemy/complete/CrystalKing.h new file mode 100644 index 0000000000..b56e845cf1 --- /dev/null +++ b/src/world/common/enemy/complete/CrystalKing.h @@ -0,0 +1,22 @@ +#include "common.h" +#include "sprite/npc/CrystalKing.h" + +#define CRYSTAL_KING_ANIMS \ +{ \ + .idle = ANIM_CrystalKing_Anim09, \ + .walk = ANIM_CrystalKing_Anim09, \ + .run = ANIM_CrystalKing_Anim09, \ + .chase = ANIM_CrystalKing_Anim09, \ + .anim_4 = ANIM_CrystalKing_Anim09, \ + .anim_5 = ANIM_CrystalKing_Anim09, \ + .death = ANIM_CrystalKing_Anim09, \ + .hit = ANIM_CrystalKing_Anim09, \ + .anim_8 = ANIM_CrystalKing_Anim09, \ + .anim_9 = ANIM_CrystalKing_Anim09, \ + .anim_A = ANIM_CrystalKing_Anim09, \ + .anim_B = ANIM_CrystalKing_Anim09, \ + .anim_C = ANIM_CrystalKing_Anim09, \ + .anim_D = ANIM_CrystalKing_Anim09, \ + .anim_E = ANIM_CrystalKing_Anim09, \ + .anim_F = ANIM_CrystalKing_Anim09, \ +} diff --git a/src/world/common/enemy/complete/CrystalKing.inc.c b/src/world/common/enemy/complete/CrystalKing.inc.c new file mode 100644 index 0000000000..8c99baa1c0 --- /dev/null +++ b/src/world/common/enemy/complete/CrystalKing.inc.c @@ -0,0 +1,9 @@ +#include "CrystalKing.h" + +NpcSettings N(NpcSettings_CrystalKing) = { + .height = 50, + .radius = 55, + .level = 99, + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; diff --git a/src/world/common/enemy/complete/Duplighost_Patrol.inc.c b/src/world/common/enemy/complete/Duplighost_Patrol.inc.c new file mode 100644 index 0000000000..fdae9d88ed --- /dev/null +++ b/src/world/common/enemy/complete/Duplighost_Patrol.inc.c @@ -0,0 +1,29 @@ +#include "Duplighost.h" + +#include "world/common/enemy/ai/PatrolNoAttackAI.inc.c" + +MobileAISettings N(AISettings_Duplighost_Patrol) = { + .moveSpeed = 2.0f, + .alertRadius = 100.0f, + .playerSearchInterval = 4, + .chaseSpeed = 3.5f, + .chaseTurnRate = 30, + .chaseUpdateInterval = 3, + .chaseRadius = 150.0f, + .unk_AI_2C = 1, +}; + +EvtScript N(EVS_NpcAI_Duplighost_Patrol) = { + EVT_CALL(N(PatrolNoAttackAI_Main), EVT_PTR(N(AISettings_Duplighost_Patrol))) + EVT_RETURN + EVT_END +}; + +NpcSettings N(NpcSettings_Duplighost_Patrol) = { + .height = 30, + .radius = 30, + .level = 23, + .ai = &N(EVS_NpcAI_Duplighost_Patrol), + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; diff --git a/src/world/common/enemy/complete/FrostClubba_Wander.inc.c b/src/world/common/enemy/complete/FrostClubba_Multi.inc.c similarity index 53% rename from src/world/common/enemy/complete/FrostClubba_Wander.inc.c rename to src/world/common/enemy/complete/FrostClubba_Multi.inc.c index 710d802ed4..ee811875bc 100644 --- a/src/world/common/enemy/complete/FrostClubba_Wander.inc.c +++ b/src/world/common/enemy/complete/FrostClubba_Multi.inc.c @@ -1,7 +1,5 @@ #include "FrostClubba.h" -#include "world/common/enemy/ai/WanderMeleeAI.inc.c" - EvtScript N(EVS_NpcDefeat_FrostClubba) = { EVT_CALL(GetBattleOutcome, LVar0) EVT_SWITCH(LVar0) @@ -36,6 +34,9 @@ s32 N(ExtraAnims_FrostClubba_Hitbox)[] = { -1 }; +#ifdef INCLUDE_FROST_CLUBBA_WANDER +#include "world/common/enemy/ai/WanderMeleeAI.inc.c" + MobileAISettings N(AISettings_FrostClubba_Wander) = { .moveSpeed = 1.5f, .moveTime = 120, @@ -70,6 +71,88 @@ NpcSettings N(NpcSettings_FrostClubba_Wander) = { .onDefeat = &EnemyNpcDefeat, }; +#endif + +#ifdef INCLUDE_FROST_CLUBBA_PATROL +#include "world/common/enemy/ai/PatrolNoAttackAI.inc.c" +#include "world/common/enemy/ai/ClubbaPatrolAI.inc.c" + +MobileAISettings N(AISettings_FrostClubba_Patrol) = { + .moveSpeed = 2.0f, + .alertRadius = 100.0f, + .alertOffsetDist = 40.0f, + .playerSearchInterval = 7, + .chaseSpeed = 3.8f, + .chaseTurnRate = 60, + .chaseUpdateInterval = 10, + .chaseRadius = 110.0f, + .chaseOffsetDist = 50.0f, + .unk_AI_2C = 1, +}; + +EvtScript N(EVS_NpcAI_FrostClubba_Patrol) = { + EVT_CALL(SetSelfVar, 0, 0) + EVT_CALL(SetSelfVar, 1, 3) + EVT_CALL(SetSelfVar, 2, 7) + EVT_CALL(SetSelfVar, 3, 6) + EVT_CALL(N(ClubbaPatrolAI_Main), EVT_PTR(N(AISettings_FrostClubba_Patrol))) + EVT_RETURN + EVT_END +}; + +NpcSettings N(NpcSettings_FrostClubba_Patrol) = { + .height = 36, + .radius = 34, + .level = 23, + .ai = &N(EVS_NpcAI_FrostClubba_Patrol), + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; + +#endif + +#ifdef INCLUDE_FROST_CLUBBA_NAPPING +#include "world/common/enemy/ai/ClubbaNappingAI.inc.c" +#include "world/common/enemy/ai/WanderMeleeAI.inc.c" + +MobileAISettings N(AISettings_FrostClubba_Napping) = { + .moveSpeed = 1.0f, + .moveTime = 120, + .waitTime = 30, + .alertRadius = 100.0f, + .alertOffsetDist = 40.0f, + .playerSearchInterval = 10, + .chaseSpeed = 3.5f, + .chaseTurnRate = 90, + .chaseUpdateInterval = 15, + .chaseRadius = 200.0f, + .chaseOffsetDist = 160.0f, + .unk_AI_2C = 1, +}; + +EvtScript N(EVS_NpcAI_FrostClubba_Napping) = { + EVT_CALL(SetSelfVar, 0, 0) + EVT_CALL(SetSelfVar, 1, 10) + EVT_CALL(SetSelfVar, 2, 14) + EVT_CALL(SetSelfVar, 3, 18) + EVT_CALL(N(ClubbaNappingAI_Main), EVT_PTR(N(AISettings_FrostClubba_Napping))) + EVT_RETURN + EVT_END +}; + +NpcSettings N(NpcSettings_FrostClubba_Napping) = { + .height = 36, + .radius = 34, + .level = 13, + .ai = &N(EVS_NpcAI_FrostClubba_Napping), + .onHit = &EnemyNpcHit, + .onDefeat = &EnemyNpcDefeat, +}; + +#endif + +#include "world/common/enemy/ai/MeleeHitbox.inc.c" + EvtScript N(EVS_NpcAI_FrostClubba_Hitbox) = { EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE) EVT_CALL(SetSelfVar, 0, 4) diff --git a/src/world/common/npc/Koopa.inc.c b/src/world/common/npc/Koopa.inc.c index 63194b0927..168c67f161 100644 --- a/src/world/common/npc/Koopa.inc.c +++ b/src/world/common/npc/Koopa.inc.c @@ -1,5 +1,6 @@ #include "common.h" #include "Koopa.h" +#include "Kooper.h" NpcSettings N(NpcSettings_Koopa) = { .height = 35, diff --git a/src/world/common/npc/Kooper.h b/src/world/common/npc/Kooper.h new file mode 100644 index 0000000000..0bf8d65c65 --- /dev/null +++ b/src/world/common/npc/Kooper.h @@ -0,0 +1,22 @@ +#include "common.h" +#include "sprite/npc/WorldKooper.h" + +#define KOOPER_ANIMS \ +{ \ + .idle = ANIM_WorldKooper_Idle, \ + .walk = ANIM_WorldKooper_Walk, \ + .run = ANIM_WorldKooper_Walk, \ + .chase = ANIM_WorldKooper_Walk, \ + .anim_4 = ANIM_WorldKooper_Walk, \ + .anim_5 = ANIM_WorldKooper_Walk, \ + .death = ANIM_WorldKooper_Still, \ + .hit = ANIM_WorldKooper_Still, \ + .anim_8 = ANIM_WorldKooper_Still, \ + .anim_9 = ANIM_WorldKooper_Still, \ + .anim_A = ANIM_WorldKooper_Still, \ + .anim_B = ANIM_WorldKooper_Still, \ + .anim_C = ANIM_WorldKooper_Still, \ + .anim_D = ANIM_WorldKooper_Still, \ + .anim_E = ANIM_WorldKooper_Still, \ + .anim_F = ANIM_WorldKooper_Still, \ +} diff --git a/src/world/common/npc/Kooper.inc.c b/src/world/common/npc/Kooper.inc.c new file mode 100644 index 0000000000..06a374a877 --- /dev/null +++ b/src/world/common/npc/Kooper.inc.c @@ -0,0 +1,9 @@ +#include "common.h" +#include "Kooper.h" + +NpcSettings N(NpcSettings_Kooper) = { + .height = 35, + .radius = 24, + .level = 99, + .actionFlags = AI_ACTION_LOOK_AROUND_DURING_LOITER, +}; diff --git a/src/world/common/todo/UnkFunc11.inc.c b/src/world/common/todo/UnkFunc11.inc.c index 97de5f0ce4..ac7d877ef9 100644 --- a/src/world/common/todo/UnkFunc11.inc.c +++ b/src/world/common/todo/UnkFunc11.inc.c @@ -1,7 +1,7 @@ #include "common.h" #include "npc.h" -ApiStatus N(UnkFunc11)(Evt* script, s32 isInitialCall) { +API_CALLABLE(N(UnkFunc11)) { s32 pushableColliderID = evt_get_variable(script, *script->ptrReadPos); PlayerStatus* playerStatus = &gPlayerStatus; CollisionStatus* collisionStatus = &gCollisionStatus; diff --git a/src/world/dead/area_flo/flo_00/flo_00_5_beanstalk.c b/src/world/dead/area_flo/flo_00/flo_00_5_beanstalk.c index e7ddcaf0c3..b4a3b0eeec 100644 --- a/src/world/dead/area_flo/flo_00/flo_00_5_beanstalk.c +++ b/src/world/dead/area_flo/flo_00/flo_00_5_beanstalk.c @@ -461,7 +461,7 @@ s32 N(BeanstalkIngredients)[] = { EvtScript N(EVS_BeanPatch_ItemPrompt) = { EVT_CALL(DisablePlayerInput, TRUE) - EVT_CALL(func_802D2884, -85, 85, 0) + EVT_CALL(FacePlayerTowardPoint, -85, 85, 0) EVT_CALL(func_802CF56C, 2) EVT_CALL(DisablePlayerInput, FALSE) EVT_IF_EQ(GF_FLO00_PlacedFertileSoil, FALSE) diff --git a/src/world/dead/area_flo/flo_19/flo_19_4_clouds.c b/src/world/dead/area_flo/flo_19/flo_19_4_clouds.c index 318a56891c..e11a9ce67b 100644 --- a/src/world/dead/area_flo/flo_19/flo_19_4_clouds.c +++ b/src/world/dead/area_flo/flo_19/flo_19_4_clouds.c @@ -157,10 +157,10 @@ EvtScript N(EVS_SetupClouds) = { EVT_CALL(ParentColliderToModel, COLLIDER_o78, MODEL_g21) EVT_CALL(ParentColliderToModel, COLLIDER_o76, MODEL_g22) EVT_CALL(ParentColliderToModel, COLLIDER_o79, MODEL_g23) - EVT_CALL(SetModelFlags, MODEL_g17, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g21, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g22, 256, TRUE) - EVT_CALL(SetModelFlags, MODEL_g23, 256, TRUE) + EVT_CALL(SetModelFlags, MODEL_g17, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g21, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g22, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) + EVT_CALL(SetModelFlags, MODEL_g23, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE) EVT_EXEC(N(EVS_AnimatePlatforms)) EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_01)), TRIGGER_FLOOR_TOUCH, COLLIDER_o77, 1, 0) EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_02)), TRIGGER_FLOOR_TOUCH, COLLIDER_o78, 1, 0) diff --git a/src/world/dead/area_kzn/kzn_17/kzn_17_3_npc.c b/src/world/dead/area_kzn/kzn_17/kzn_17_3_npc.c index 4c7bf75861..909b33292d 100644 --- a/src/world/dead/area_kzn/kzn_17/kzn_17_3_npc.c +++ b/src/world/dead/area_kzn/kzn_17/kzn_17_3_npc.c @@ -45,7 +45,7 @@ EvtScript N(EVS_Kolorado_TrompImpact) = { EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13) EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250) EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) + EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) EVT_CALL(PlaySoundAtNpc, NPC_Kolorado, SOUND_HIT_PLAYER_NORMAL, SOUND_SPACE_MODE_0) EVT_THREAD EVT_CALL(SetNpcCollisionSize, NPC_Kolorado, 20, 24) @@ -70,7 +70,7 @@ EvtScript N(EVS_Kolorado_HurtInit) = { EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13) EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250) EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill) - EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) + EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0) EVT_RETURN EVT_END }; diff --git a/src/world/script_api/push_blocks.c b/src/world/script_api/push_blocks.c index 87306ea488..0c2b7c09d2 100644 --- a/src/world/script_api/push_blocks.c +++ b/src/world/script_api/push_blocks.c @@ -1,13 +1,34 @@ #include "common.h" #include "entity.h" -extern PushBlockGrid* D_802DBC88[8]; +extern PushBlockGrid* wPushBlockGrids[8]; -f32 D_80285640_7E64C0[] = { +// outVars for values returned by FetchPushedBlockProperties (func_80282E30) +enum { + BLOCK_PROP_X = LVar0, + BLOCK_PROP_Y = LVar1, + BLOCK_PROP_Z = LVar2, + BLOCK_PROP_I = LVar3, + BLOCK_PROP_J = LVar4, + BLOCK_PROP_K = LVar5, + BLOCK_PROP_DI = LVar6, + BLOCK_PROP_DJ = LVar7, + BLOCK_PROP_DK = LVar8, + BLOCK_PROP_RESULT = LVar9, +}; + +// values for BLOCK_PROP_RESULT +enum { + PUSH_BLOCK_READY = 0, + PUSH_BLOCK_OBSTRUCTED = 1, + PUSH_BLOCK_INVALID = 2, +}; + +f32 PushBlockMovePositions[] = { 0.04, 0.04, 0.08, 0.16, 0.21, 0.4, 0.6, 0.72, 0.84, 0.92, 0.96, 0.96, 1.0, }; -API_CALLABLE(func_80282880) { +API_CALLABLE(MovePlayerTowardBlock) { PlayerStatus* playerStatus = &gPlayerStatus; playerStatus->position.x += (script->varTable[0] - playerStatus->position.x) / 2; @@ -16,10 +37,10 @@ API_CALLABLE(func_80282880) { return ApiStatus_DONE2; } -API_CALLABLE(func_802828DC) { +API_CALLABLE(UpdatePushBlockMotion) { PlayerStatus* playerStatus = &gPlayerStatus; Entity* entity = get_entity_by_index(script->varTable[11]); - f32 temp_f4; + f32 moveRatio; if (isInitialCall) { script->functionTemp[0] = 0; @@ -33,20 +54,20 @@ API_CALLABLE(func_802828DC) { script->varTable[12] = entity->rotation.z; } - temp_f4 = D_80285640_7E64C0[script->functionTemp[0]]; - playerStatus->position.x = script->varTable[0] + (script->varTable[6] * temp_f4 * BLOCK_GRID_SIZE); - playerStatus->position.y = script->varTable[1] + (script->varTable[7] * temp_f4 * BLOCK_GRID_SIZE); - playerStatus->position.z = script->varTable[2] + (script->varTable[8] * temp_f4 * BLOCK_GRID_SIZE); - entity->position.x = script->varTable[3] + (script->varTable[6] * temp_f4 * BLOCK_GRID_SIZE); - entity->position.y = script->varTable[4] + (script->varTable[7] * temp_f4 * BLOCK_GRID_SIZE); - entity->position.z = script->varTable[5] + (script->varTable[8] * temp_f4 * BLOCK_GRID_SIZE); + moveRatio = PushBlockMovePositions[script->functionTemp[0]]; + playerStatus->position.x = script->varTable[0] + (script->varTable[6] * moveRatio * BLOCK_GRID_SIZE); + playerStatus->position.y = script->varTable[1] + (script->varTable[7] * moveRatio * BLOCK_GRID_SIZE); + playerStatus->position.z = script->varTable[2] + (script->varTable[8] * moveRatio * BLOCK_GRID_SIZE); + entity->position.x = script->varTable[3] + (script->varTable[6] * moveRatio * BLOCK_GRID_SIZE); + entity->position.y = script->varTable[4] + (script->varTable[7] * moveRatio * BLOCK_GRID_SIZE); + entity->position.z = script->varTable[5] + (script->varTable[8] * moveRatio * BLOCK_GRID_SIZE); if (script->functionTemp[0] < 12) { - entity->rotation.z = script->varTable[12] + (script->varTable[6] * temp_f4 * -90.0f); - entity->rotation.x = script->varTable[9] + (script->varTable[8] * temp_f4 * 90.0f); - entity->position.y = entity->position.y + (sin_deg(temp_f4 * 90.0f) * BLOCK_GRID_SIZE * 0.5); - entity->position.x = entity->position.x - (script->varTable[6] * sin_deg(temp_f4 * 90.0f) * BLOCK_GRID_SIZE * 0.5); - entity->position.z = entity->position.z - (script->varTable[8] * sin_deg(temp_f4 * 90.0f) * BLOCK_GRID_SIZE * 0.5); + entity->rotation.z = script->varTable[12] + (script->varTable[6] * moveRatio * -90.0f); + entity->rotation.x = script->varTable[9] + (script->varTable[8] * moveRatio * 90.0f); + entity->position.y = entity->position.y + (sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5); + entity->position.x = entity->position.x - (script->varTable[6] * sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5); + entity->position.z = entity->position.z - (script->varTable[8] * sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5); } else { entity->rotation.z = entity->rotation.x = 0.0f; } @@ -56,13 +77,13 @@ API_CALLABLE(func_802828DC) { gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z; script->functionTemp[0]++; - if (script->functionTemp[0] == ARRAY_COUNT(D_80285640_7E64C0)) { + if (script->functionTemp[0] == ARRAY_COUNT(PushBlockMovePositions)) { return ApiStatus_DONE1; } return ApiStatus_BLOCK; } -API_CALLABLE(func_80282C40) { +API_CALLABLE(FinishPushBlockMotion) { PushBlockGrid* grid = script->varTablePtr[10]; Entity* block = get_entity_by_index(script->varTable[11]); f32 hitX, hitY, hitZ, hitDepth; @@ -96,9 +117,9 @@ API_CALLABLE(func_80282C40) { return ApiStatus_BLOCK; } } else { - block->position.y = script->varTable[0] - (D_80285640_7E64C0[script->functionTemp[0]] * BLOCK_GRID_SIZE); + block->position.y = script->varTable[0] - (PushBlockMovePositions[script->functionTemp[0]] * BLOCK_GRID_SIZE); script->functionTemp[0]++; - if (script->functionTemp[0] != ARRAY_COUNT(D_80285640_7E64C0)) { + if (script->functionTemp[0] != ARRAY_COUNT(PushBlockMovePositions)) { return ApiStatus_BLOCK; } i = (block->position.x - grid->centerPos.x) / BLOCK_GRID_SIZE; @@ -108,6 +129,7 @@ API_CALLABLE(func_80282C40) { return ApiStatus_DONE1; } +//TODO FetchPushedBlockProperties API_CALLABLE(func_80282E30); // regalloc #ifdef NON_MATCHING @@ -204,11 +226,11 @@ API_CALLABLE(func_80282E30) { INCLUDE_ASM(s32, "world/script_api/push_blocks", func_80282E30); #endif -API_CALLABLE(func_80283080) { +API_CALLABLE(ClearPushedBlockFromGrid) { PushBlockGrid* grid = script->varTablePtr[10]; Entity* block = get_entity_by_index(script->varTable[11]); - s32 ip, jp; - s32 in, jn; + s32 ip, jp; // prev grid pos (i,j) + s32 in, jn; // next grid pos (i,j) ip = ((s32)block->position.x - grid->centerPos.x) / BLOCK_GRID_SIZE; jp = ((s32)block->position.z - grid->centerPos.z) / BLOCK_GRID_SIZE; @@ -221,30 +243,25 @@ API_CALLABLE(func_80283080) { return ApiStatus_DONE2; } -API_CALLABLE(func_80283174) { +API_CALLABLE(CanPlayerPushBlock) { PlayerStatus* playerStatus = &gPlayerStatus; - s32 collider = script->varTable[11] + COLLISION_WITH_ENTITY_BIT; + s32 blockCollider = script->varTable[11] + COLLISION_WITH_ENTITY_BIT; - if (gCollisionStatus.pushingAgainstWall == collider) { - if (playerStatus->actionState == ACTION_STATE_PUSHING_BLOCK + if ((gCollisionStatus.pushingAgainstWall == blockCollider) + && (playerStatus->actionState == ACTION_STATE_PUSHING_BLOCK || playerStatus->actionState == ACTION_STATE_WALK - || playerStatus->actionState == ACTION_STATE_RUN) { - if (playerStatus->animFlags & PA_FLAG_USING_WATT) { - script->varTable[13] = FALSE; - } else { - script->varTable[13] = TRUE; - } - } else { - script->varTable[13] = FALSE; - } + || playerStatus->actionState == ACTION_STATE_RUN) + && !(playerStatus->animFlags & PA_FLAG_USING_WATT)) + { + script->varTable[13] = TRUE; } else { script->varTable[13] = FALSE; } - + return ApiStatus_DONE2; } -API_CALLABLE(CheckActionState) { +API_CALLABLE(CheckPlayerActionState) { Bytecode* args = script->ptrReadPos; Bytecode outVar = *args++; s32 checkState = evt_get_float_variable(script, *args++); @@ -253,12 +270,12 @@ API_CALLABLE(CheckActionState) { return ApiStatus_DONE2; } -API_CALLABLE(func_80283240) { +API_CALLABLE(IsEventForSourceRunning) { Bytecode* args = script->ptrReadPos; Bytecode outVar = *args++; Bytecode* sourceToFind = (Bytecode*)evt_get_variable(script, *args++); - s32 retVal = FALSE; + s32 foundScript = FALSE; s32 i; for (i = 0; i < MAX_SCRIPTS; i++) { @@ -266,66 +283,71 @@ API_CALLABLE(func_80283240) { if (iterScript != NULL) { if (iterScript->ptrFirstLine == sourceToFind) { - retVal = TRUE; + foundScript = TRUE; break; } } } - evt_set_variable(script, outVar, retVal); + evt_set_variable(script, outVar, foundScript); return ApiStatus_DONE2; } -EvtScript D_80285674_7E64F4 = { - EVT_SET(LVarA, LVar0) - EVT_SET(LVarB, LVar1) +EvtScript EVS_PushWall_PushBlock = { + EVT_SET(LVarA, LVar0) // grid system + EVT_SET(LVarB, LVar1) // block entity ID + // check cell where the block will move to EVT_CALL(func_80282E30) - EVT_CALL(func_802D2884, LVar3, LVar5, 0) - EVT_IF_NE(LVar9, 2) - EVT_CALL(func_80282880) + EVT_CALL(FacePlayerTowardPoint, BLOCK_PROP_I, BLOCK_PROP_K, 0) + EVT_IF_NE(LVar9, PUSH_BLOCK_INVALID) + EVT_CALL(MovePlayerTowardBlock) EVT_END_IF + // try setting the player action state EVT_SET(LVarC, 0) - EVT_CALL(CheckActionState, LVarD, ACTION_STATE_RUN) + EVT_CALL(CheckPlayerActionState, LVarD, ACTION_STATE_RUN) EVT_IF_EQ(LVarD, FALSE) - EVT_CALL(CheckActionState, LVarD, ACTION_STATE_PUSHING_BLOCK) + EVT_CALL(CheckPlayerActionState, LVarD, ACTION_STATE_PUSHING_BLOCK) EVT_IF_EQ(LVarD, FALSE) EVT_RETURN EVT_END_IF EVT_END_IF - EVT_IF_NE(LVar9, 0) + // cancel state change if the block can't be pushed + EVT_IF_NE(LVar9, PUSH_BLOCK_READY) EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE) EVT_RETURN EVT_END_IF + // wait for 8 frames of pushing EVT_SET(LVarC, 0) EVT_LABEL(0) - EVT_ADD(LVarC, 1) - EVT_CALL(func_80283174) - EVT_IF_EQ(LVarD, TRUE) - EVT_GOTO(1) - EVT_END_IF - EVT_CALL(GetPlayerActionState, LVarD) - EVT_IF_EQ(LVarD, ACTION_STATE_JUMP) - EVT_RETURN - EVT_END_IF - EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE) - EVT_RETURN - EVT_LABEL(1) - EVT_CALL(SetPlayerActionState, ACTION_STATE_PUSHING_BLOCK) - EVT_CALL(func_80282880) - EVT_IF_LT(LVarC, 8) - EVT_WAIT(1) - EVT_GOTO(0) - EVT_END_IF - EVT_CALL(func_80283080) + EVT_ADD(LVarC, 1) + EVT_CALL(CanPlayerPushBlock) + EVT_IF_EQ(LVarD, TRUE) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetPlayerActionState, LVarD) + EVT_IF_EQ(LVarD, ACTION_STATE_JUMP) + EVT_RETURN + EVT_END_IF + EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE) + EVT_RETURN + EVT_LABEL(1) + EVT_CALL(SetPlayerActionState, ACTION_STATE_PUSHING_BLOCK) + EVT_CALL(MovePlayerTowardBlock) + EVT_IF_LT(LVarC, 8) + EVT_WAIT(1) + EVT_GOTO(0) + EVT_END_IF + // perform the push + EVT_CALL(ClearPushedBlockFromGrid) EVT_CALL(PlaySound, SOUND_2088) EVT_CALL(DisablePlayerPhysics, TRUE) - EVT_CALL(func_802828DC) - EVT_CALL(func_80282C40) + EVT_CALL(UpdatePushBlockMotion) + EVT_CALL(FinishPushBlockMotion) EVT_THREAD EVT_WAIT(2) - EVT_CALL(CheckActionState, LVarD, ACTION_STATE_PUSHING_BLOCK) + EVT_CALL(CheckPlayerActionState, LVarD, ACTION_STATE_PUSHING_BLOCK) EVT_IF_NE(LVarD, FALSE) - EVT_CALL(func_80283240, LVarD, EVT_PTR(D_80285674_7E64F4)) - EVT_IF_EQ(LVarD, 0) + EVT_CALL(IsEventForSourceRunning, LVarD, EVT_PTR(EVS_PushWall_PushBlock)) + EVT_IF_EQ(LVarD, FALSE) EVT_CALL(SetPlayerActionState, ACTION_STATE_IDLE) EVT_END_IF EVT_END_IF @@ -349,7 +371,7 @@ API_CALLABLE(CreatePushBlockGrid) { u8* dataToCopy; s32 i; - D_802DBC88[blockSystemID] = blockGrid = general_heap_malloc(sizeof(*blockGrid)); + wPushBlockGrids[blockSystemID] = blockGrid = general_heap_malloc(sizeof(*blockGrid)); blockGrid->cells = general_heap_malloc(sizeNx*sizeNz); @@ -381,7 +403,7 @@ API_CALLABLE(SetPushBlock) { s32 gridZ = evt_get_variable(script, *args++); s32 occupant = evt_get_variable(script, *args++); - PushBlockGrid* blockGrid = D_802DBC88[blockSystemID]; + PushBlockGrid* blockGrid = wPushBlockGrids[blockSystemID]; s32 blockEntityID; s32 cellIndex; @@ -393,7 +415,7 @@ API_CALLABLE(SetPushBlock) { s32 posY = blockGrid->centerPos.y; s32 posZ = blockGrid->centerPos.z + (gridZ * BLOCK_GRID_SIZE) + (BLOCK_GRID_SIZE / 2); blockEntityID = create_entity(&Entity_PushBlock, posX, posY, posZ, 0, 0, 0, 0, MAKE_ENTITY_END); - bind_trigger_1(&D_80285674_7E64F4, TRIGGER_WALL_PUSH, blockEntityID + EVT_ENTITY_ID_BIT, (s32)blockGrid, blockEntityID, 3); + bind_trigger_1(&EVS_PushWall_PushBlock, TRIGGER_WALL_PUSH, blockEntityID + EVT_ENTITY_ID_BIT, (s32)blockGrid, blockEntityID, 3); script->varTable[0] = blockEntityID; } @@ -407,7 +429,7 @@ API_CALLABLE(GetPushBlock) { s32 gridZ = evt_get_variable(script, *args++); s32 outVar = *args++; - PushBlockGrid* blockGrid = D_802DBC88[blockSystemID]; + PushBlockGrid* blockGrid = wPushBlockGrids[blockSystemID]; s32 cellIndex; if (gridX >= blockGrid->numCellsX || gridX < 0 || gridZ >= blockGrid->numCellsZ || gridZ < 0) { @@ -429,7 +451,7 @@ API_CALLABLE(GetGridIndexFromPos) { Bytecode outVarX = *args++; Bytecode outVarZ = *args++; - PushBlockGrid* blockGrid = D_802DBC88[blockSystemID]; + PushBlockGrid* blockGrid = wPushBlockGrids[blockSystemID]; s32 gridX; s32 gridZ; @@ -449,7 +471,7 @@ API_CALLABLE(SetPushBlockFallEffect) { s32 blockSystemID = evt_get_variable(script, *args++); PushBlockFallCallback fallCallback = (PushBlockFallCallback)evt_get_variable(script, *args++); - D_802DBC88[blockSystemID]->dropCallback = fallCallback; + wPushBlockGrids[blockSystemID]->dropCallback = fallCallback; return ApiStatus_DONE2; } diff --git a/src/world/script_api/rooms.c b/src/world/script_api/rooms.c index fc7a4d5121..794f9aa54a 100644 --- a/src/world/script_api/rooms.c +++ b/src/world/script_api/rooms.c @@ -429,7 +429,7 @@ EvtScript EVS_EnterRoom_MovePlayerA = { EVT_SET(LVarB, ROOM_DATA_ENTER_POS_AX) EVT_SET(LVarD, ROOM_DATA_ENTER_POS_AZ) EVT_CALL(PlayerMoveTo, ROOM_DATA_ENTER_POS_AX, ROOM_DATA_ENTER_POS_AZ, LVarE) - EVT_CALL(func_802D2884, ROOM_DATA_ENTER_POS_BX, ROOM_DATA_ENTER_POS_BZ, 0) + EVT_CALL(FacePlayerTowardPoint, ROOM_DATA_ENTER_POS_BX, ROOM_DATA_ENTER_POS_BZ, 0) EVT_RETURN EVT_END }; @@ -464,7 +464,7 @@ EvtScript EVS_ExitRoom_MovePlayerA = { EVT_SET(LVarD, ROOM_DATA_EXIT_POS_AZ) EVT_SET(LVarE, 10) EVT_CALL(PlayerMoveTo, ROOM_DATA_EXIT_POS_AX, ROOM_DATA_EXIT_POS_AZ, LVarE) - EVT_CALL(func_802D2884, ROOM_DATA_EXIT_POS_BX, ROOM_DATA_EXIT_POS_BZ, 0) + EVT_CALL(FacePlayerTowardPoint, ROOM_DATA_EXIT_POS_BX, ROOM_DATA_EXIT_POS_BZ, 0) EVT_RETURN EVT_END }; diff --git a/src/world/world.c b/src/world/world.c index c265b35859..bd32cf010b 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -473,8 +473,8 @@ MapConfig trd_maps[] = { MapConfig nok_maps[] = { { MAP(nok_01), .bgName = "nok_bg" }, { MAP(nok_02), .bgName = "nok_bg" }, - { MAP_UNSPLIT(nok_03, 0x80240E40), .bgName = "nok_bg" }, - { MAP_UNSPLIT(nok_04, 0x80240F40), .bgName = "nok_bg" }, + { MAP(nok_03), .bgName = "nok_bg" }, + { MAP(nok_04), .bgName = "nok_bg" }, { MAP(nok_11), .bgName = "nok_bg" }, { MAP(nok_12), .bgName = "nok_bg" }, { MAP(nok_13), .bgName = "nok_bg" }, @@ -763,27 +763,27 @@ MapConfig pra_maps[] = { { MAP_WITH_INIT(pra_04), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_05), .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_06), .songVariation = 1, .sfxReverb = 1 }, - { MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, + { MAP_WITH_INIT(pra_09), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_10), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_11), .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_12), .songVariation = 1, .sfxReverb = 1 }, - { MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, + { MAP_WITH_INIT(pra_13), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_14), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_15), .bgName = "yki_bg", .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_16), .songVariation = 1, .sfxReverb = 2 }, - { MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, + { MAP_WITH_INIT(pra_18), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_19), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_20), .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_21), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_22), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_27), .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_28), .songVariation = 1, .sfxReverb = 1 }, - { MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, - { MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, - { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .sfxReverb = 1, .init = (MapInit)0x80240000 }, + { MAP_WITH_INIT(pra_29), .songVariation = 1, .sfxReverb = 2 }, + { MAP_WITH_INIT(pra_31), .songVariation = 1, .sfxReverb = 2 }, + { MAP_WITH_INIT(pra_32), .bgName = "sam_bg", .songVariation = 1, .sfxReverb = 1 }, { MAP_WITH_INIT(pra_33), .songVariation = 1, .sfxReverb = 2 }, - { MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .sfxReverb = 1, .init = (MapInit)0x80240000 }, - { MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .sfxReverb = 2, .init = (MapInit)0x80240000 }, + { MAP_WITH_INIT(pra_34), .songVariation = 1, .sfxReverb = 1 }, + { MAP_WITH_INIT(pra_35), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_36), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_37), .songVariation = 1, .sfxReverb = 2 }, { MAP_WITH_INIT(pra_38), .songVariation = 1, .sfxReverb = 2 }, diff --git a/tools/ignored_funcs.txt b/tools/ignored_funcs.txt index de574e717c..fe2124ec65 100644 --- a/tools/ignored_funcs.txt +++ b/tools/ignored_funcs.txt @@ -139,7 +139,7 @@ dead_ClearPartnerMoveHistory = 0x802DC8D0; dead_PlayerJump = 0x802DEF08; dead_StopSound = 0x802E3908; dead_NpcFacePlayer = 0x802DC228; -dead_func_802D2884 = 0x802DFED0; +dead_FacePlayerTowardPoint = 0x802DFED0; dead_SetTimeFreezeMode = 0x802E2E80; dead_ShowKeyChoicePopup = 0x802E3A70; dead_CloseChoicePopup = 0x802E3FA4; diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index d1affe5cf6..70aabbfe85 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = 741a0d030dff0f7e38071e6b8c80c2b3c7f64c9f - parent = 7baafe2faf6d3fb48e00653fa82ab72c3fa043ba + commit = 3bbc02af68a1797077bba120fd910c4992115fa9 + parent = 1a2bdd81bd812638e9d935dd9cdd84ab151a4dcd method = merge cmdver = 0.4.5 diff --git a/tools/splat/CHANGELOG.md b/tools/splat/CHANGELOG.md index cf2c81102a..e800f28911 100644 --- a/tools/splat/CHANGELOG.md +++ b/tools/splat/CHANGELOG.md @@ -1,9 +1,58 @@ # splat Release Notes +### 0.13.4 +* Renamed `follows_vram_symbol` segment option to `vram_of_symbol` to more accurately reflect what it's used for - to set the segment's vram based on a symbol. +* Refactored the `appears_after_overlays_addr` feature so that expressions are written at the latest possible moment in the linker script. This fixes errors and warnings regarding forward references to later symbols. + +### 0.13.3 +* Added a new symbol_addrs attribute `appears_after_overlays_addr:0x1234` which will modify the linker script such that the symbol's address is equal to the value of the end of the longest overlay starting with address 0x1234. It achieve this by writing a series of sym = MAX(sym, seg_vram_END) statements into the linker script. For some games, it's feasible to manually create such statements, but for games with hundreds of overlays at the same address, this is very tedious and prone to error. The new attribute allows you to have peace of mind that the symbol will end up after all of these overlays. + +### 0.13.2 +* Actually implemented `ld_use_follows`. Oopz + +### 0.13.1 +* Added `ld_wildcard_sections` option (disabled by default), which adds a wildcard to the linker script for section linking. This can be helpful for modern GCC, which creates additional rodata sections such as ".rodata.xyz". +* Added `ld_use_follows` option (enabled by default), which, if disabled, makes splat ignore follows_vram and follows_symbols. This helps for fixing matching builds while being able to add infrastructure to the yaml for non-matching builds by just re-enabling the option. + +### 0.13.0 + +* Automatically generate `INCLUDE_RODATA`/`#pragma GLOBAL_ASM` directives for non migrated rodata symbols when creating new C files. +* Non migrated rodata symbols will now only be produced if the C file has a corresponding rodata file with the same name and the C file has a `INCLUDE_RODATA`/`#pragma GLOBAL_ASM` directive referencing the symbol, similar to how functions are disassembled. + * Because of this, the `partial_migration` attribute has lost its purpose and has been removed. +* Rodata symbol files are now included in the autogenerated dependency files too. + +### 0.12.14 + +* New option: `pair_rodata_to_text`. + * If enabled, splat will try to find to which text segment an unpaired rodata segment belongs and it will hint it to the user. + +### 0.12.13 + +* bss segments can now omit the rom offset. + +### 0.12.12 + +* Try to detect and warn to the user if a gap between two migrated rodata symbols is detected and suggest possible solutions to the user. + +### 0.12.11 + +* New disassembly option in the yaml: `allow_data_addends`. + * Allows enabling/disabling using addends on all `.data` symbols. +* Three new options for symbols: `name_end`, `allow_addend` and `dont_allow_addend`. + * `name_end`: allows to provide a closing name for any symbol. Useful for handwritten asm which usually have an "end" name. + * `allow_addend` and `dont_allow_addend`: Allow overriding the global `allow_data_addends` option for allowing addends on data symbols. + +### 0.12.10 + +* Allows passing user-created relocs to the disassembler via the `reloc_addrs.txt` file, allowing to improve the automatic disassembly. +* Multiple reloc_addrs files can be specified in the yaml with the `reloc_addrs_path` option. + ### 0.12.9 + * Added `format_sym_name()` to the vtx segment so it, too, can be extended ### 0.12.8 + * The gfx and vtx segments now have a `data_only` option, which, if enabled, will emit only the plain data for the type and omit the enclosing symbol definition. This mode is useful when you want to manually declare the symbol and then #include the extracted data within the declaration. * The gfx segment has a method, `format_sym_name()`, which will allow custom overriding of the output of symbol names by extending the `gfx` segment. For example, this can be used to transform context-specific symbol names like mac_01_vtx into N(vtx), where N() is a macro that applies the current "namespace" to the symbol. Paper Mario plans to use this so we can extract an asset once and then #include it in multiple places, while giving each inclusion unique symbol names for each component. diff --git a/tools/splat/requirements.txt b/tools/splat/requirements.txt index 796133d0be..e101756134 100644 --- a/tools/splat/requirements.txt +++ b/tools/splat/requirements.txt @@ -4,7 +4,7 @@ tqdm intervaltree colorama # This value should be keep in sync with the version listed on split.py -spimdisasm>=1.7.11 -rabbitizer>=1.3.1 +spimdisasm>=1.11.1 +rabbitizer>=1.4.0 pygfxd -n64img>=0.1.2 +n64img>=0.1.4 diff --git a/tools/splat/segtypes/common/asm.py b/tools/splat/segtypes/common/asm.py index de27772486..db7a184042 100644 --- a/tools/splat/segtypes/common/asm.py +++ b/tools/splat/segtypes/common/asm.py @@ -7,13 +7,17 @@ from segtypes.common.codesubsegment import CommonSegCodeSubsegment class CommonSegAsm(CommonSegCodeSubsegment): + @staticmethod + def is_text() -> bool: + return True + def out_path(self) -> Optional[Path]: return options.opts.asm_path / self.dir / f"{self.name}.s" def scan(self, rom_bytes: bytes): if ( - self.rom_start != "auto" - and self.rom_end != "auto" + self.rom_start is not None + and self.rom_end is not None and self.rom_start != self.rom_end ): self.scan_code(rom_bytes) diff --git a/tools/splat/segtypes/common/bin.py b/tools/splat/segtypes/common/bin.py index 7d30b9d60b..b72a201071 100644 --- a/tools/splat/segtypes/common/bin.py +++ b/tools/splat/segtypes/common/bin.py @@ -15,7 +15,7 @@ class CommonSegBin(CommonSegment): assert path is not None path.parent.mkdir(parents=True, exist_ok=True) - if self.rom_end == "auto": + if self.rom_end is None: log.error( f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" ) diff --git a/tools/splat/segtypes/common/bss.py b/tools/splat/segtypes/common/bss.py index 711c102f23..ef79311fec 100644 --- a/tools/splat/segtypes/common/bss.py +++ b/tools/splat/segtypes/common/bss.py @@ -1,5 +1,5 @@ import spimdisasm -from util import symbols +from util import options, symbols, log from segtypes.common.data import CommonSegData @@ -8,19 +8,34 @@ class CommonSegBss(CommonSegData): def get_linker_section(self) -> str: return ".bss" - def disassemble_data(self, rom_bytes: bytes): - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) + @staticmethod + def is_noload() -> bool: + return True + def disassemble_data(self, rom_bytes: bytes): + if not isinstance(self.rom_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a rom_start. Got '{self.rom_start}'" + ) + + # Supposedly logic error, not user error + assert isinstance(self.rom_end, int), f"{self.name} {self.rom_end}" + + # Supposedly logic error, not user error segment_rom_start = self.get_most_parent().rom_start - assert isinstance(segment_rom_start, int) + assert isinstance(segment_rom_start, int), f"{self.name} {segment_rom_start}" + + if not isinstance(self.vram_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a vram address. Got '{self.vram_start}'" + ) next_subsegment = self.parent.get_next_subsegment_for_ram(self.vram_start) if next_subsegment is None: bss_end = self.get_most_parent().vram_end - assert isinstance(bss_end, int) else: bss_end = next_subsegment.vram_start + assert isinstance(bss_end, int), f"{self.name} {bss_end}" self.spim_section = spimdisasm.mips.sections.SectionBss( symbols.spim_context, @@ -40,3 +55,6 @@ class CommonSegBss(CommonSegData): symbols.create_symbol_from_spim_symbol( self.get_most_parent(), spim_sym.contextSym ) + + def should_scan(self) -> bool: + return options.opts.is_mode_active("code") and self.vram_start is not None diff --git a/tools/splat/segtypes/common/c.py b/tools/splat/segtypes/common/c.py index a3c2a548eb..76d6981d8c 100644 --- a/tools/splat/segtypes/common/c.py +++ b/tools/splat/segtypes/common/c.py @@ -1,12 +1,12 @@ import os import re from pathlib import Path -from typing import Optional, Set +from typing import Optional, Set, List, Tuple import spimdisasm from util import log, options, symbols -from util.compiler import GCC, SN64 +from util.compiler import GCC, SN64, IDO from util.symbols import Symbol from segtypes.common.codesubsegment import CommonSegCodeSubsegment @@ -17,6 +17,7 @@ from segtypes.common.rodata import CommonSegRodata class CommonSegC(CommonSegCodeSubsegment): defined_funcs: Set[str] = set() global_asm_funcs: Set[str] = set() + global_asm_rodata_syms: Set[str] = set() STRIP_C_COMMENTS_RE = re.compile( r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', @@ -43,27 +44,27 @@ class CommonSegC(CommonSegCodeSubsegment): return re.sub(CommonSegC.STRIP_C_COMMENTS_RE, replacer, text) @staticmethod - def get_funcs_defined_in_c(c_file): + def get_funcs_defined_in_c(c_file: Path) -> Set[str]: with open(c_file, "r") as f: text = CommonSegC.strip_c_comments(f.read()) return set(m.group(1) for m in CommonSegC.C_FUNC_RE.finditer(text)) @staticmethod - def find_all_instances(str, sub): + def find_all_instances(string: str, sub: str): start = 0 while True: - start = str.find(sub, start) + start = string.find(sub, start) if start == -1: return yield start start += len(sub) @staticmethod - def get_close_parenthesis(str, pos): + def get_close_parenthesis(string: str, pos: int): paren_count = 0 while True: - cur_char = str[pos] + cur_char = string[pos] if cur_char == "(": paren_count += 1 elif cur_char == ")": @@ -74,10 +75,10 @@ class CommonSegC(CommonSegCodeSubsegment): pos += 1 @staticmethod - def find_include_asm(text: str): - for pos in CommonSegC.find_all_instances(text, "INCLUDE_ASM("): + def find_include_macro(text: str, macro_name: str): + for pos in CommonSegC.find_all_instances(text, f"{macro_name}("): close_paren_pos = CommonSegC.get_close_parenthesis( - text, pos + len("INCLUDE_ASM(") + text, pos + len(f"{macro_name}(") ) macro_contents = text[pos:close_paren_pos] macro_args = macro_contents.split(",") @@ -89,8 +90,16 @@ class CommonSegC(CommonSegCodeSubsegment): yield macro_args[1].strip(" )") @staticmethod - def get_global_asm_funcs(c_file): - with open(c_file, "r") as f: + def find_include_asm(text: str): + return CommonSegC.find_include_macro(text, "INCLUDE_ASM") + + @staticmethod + def find_include_rodata(text: str): + return CommonSegC.find_include_macro(text, "INCLUDE_RODATA") + + @staticmethod + def get_global_asm_funcs(c_file: Path) -> Set[str]: + with c_file.open() as f: text = CommonSegC.strip_c_comments(f.read()) if options.opts.compiler in [GCC, SN64]: return set(CommonSegC.find_include_asm(text)) @@ -99,6 +108,21 @@ class CommonSegC(CommonSegCodeSubsegment): m.group(2) for m in CommonSegC.C_GLOBAL_ASM_IDO_RE.finditer(text) ) + @staticmethod + def get_global_asm_rodata_syms(c_file: Path) -> Set[str]: + with c_file.open() as f: + text = CommonSegC.strip_c_comments(f.read()) + if options.opts.compiler in [GCC, SN64]: + return set(CommonSegC.find_include_rodata(text)) + else: + return set( + m.group(2) for m in CommonSegC.C_GLOBAL_ASM_IDO_RE.finditer(text) + ) + + @staticmethod + def is_text() -> bool: + return True + def out_path(self) -> Optional[Path]: return options.opts.src_path / self.dir / f"{self.name}.c" @@ -114,39 +138,89 @@ class CommonSegC(CommonSegCodeSubsegment): # TODO run cpp? self.defined_funcs = self.get_funcs_defined_in_c(path) self.global_asm_funcs = self.get_global_asm_funcs(path) + self.global_asm_rodata_syms = self.get_global_asm_rodata_syms(path) symbols.to_mark_as_defined.update(self.defined_funcs) symbols.to_mark_as_defined.update(self.global_asm_funcs) + symbols.to_mark_as_defined.update(self.global_asm_rodata_syms) self.scan_code(rom_bytes) def split(self, rom_bytes: bytes): - if not self.rom_start == self.rom_end: + if self.rom_start != self.rom_end: asm_out_dir = options.opts.nonmatchings_path / self.dir asm_out_dir.mkdir(parents=True, exist_ok=True) self.print_file_boundaries() + assert self.spim_section is not None and isinstance( + self.spim_section, spimdisasm.mips.sections.SectionText + ), f"{self.name}, rom_start:{self.rom_start}, rom_end:{self.rom_end}" + + rodata_spim_segment = None + if ( + options.opts.migrate_rodata_to_functions + and self.rodata_sibling is not None + ): + assert isinstance( + self.rodata_sibling, CommonSegRodata + ), self.rodata_sibling.type + if self.rodata_sibling.spim_section is not None: + assert isinstance( + self.rodata_sibling.spim_section, + spimdisasm.mips.sections.SectionRodata, + ) + rodata_spim_segment = self.rodata_sibling.spim_section + + # Precompute function-rodata pairings + symbols_entries = ( + spimdisasm.mips.FunctionRodataEntry.getAllEntriesFromSections( + self.spim_section, rodata_spim_segment + ) + ) + is_new_c_file = False + # Check and create the C file c_path = self.out_path() if c_path: - if not os.path.exists(c_path) and options.opts.create_c_files: - self.create_c_file(asm_out_dir, c_path) + if not c_path.exists() and options.opts.create_c_files: + self.create_c_file(asm_out_dir, c_path, symbols_entries) is_new_c_file = True - self.create_asm_dependencies_file(c_path, asm_out_dir, is_new_c_file) + self.create_asm_dependencies_file( + c_path, asm_out_dir, is_new_c_file, symbols_entries + ) - assert self.spim_section is not None - for func in self.spim_section.symbolList: - if func.getName() in self.global_asm_funcs or is_new_c_file: - assert func.vram is not None - assert isinstance(func, spimdisasm.mips.symbols.SymbolFunction) - func_sym = self.get_symbol( - func.vram, in_segment=True, type="func", local_only=True - ) - assert func_sym is not None + # Produce the asm files for functions + for entry in symbols_entries: + if entry.function is not None: + if ( + entry.function.getName() in self.global_asm_funcs + or is_new_c_file + ): + func_sym = self.get_symbol( + entry.function.vram, + in_segment=True, + type="func", + local_only=True, + ) + assert func_sym is not None - self.create_c_asm_file(func, asm_out_dir, func_sym) + self.create_c_asm_file(entry, asm_out_dir, func_sym) + else: + for spim_rodata_sym in entry.rodataSyms: + if ( + spim_rodata_sym.getName() in self.global_asm_rodata_syms + or is_new_c_file + ): + rodata_sym = self.get_symbol( + spim_rodata_sym.vram, in_segment=True, local_only=True + ) + assert rodata_sym is not None + + self.create_unmigrated_rodata_file( + spim_rodata_sym, asm_out_dir, rodata_sym + ) def get_c_preamble(self): ret = [] @@ -157,14 +231,36 @@ class CommonSegC(CommonSegCodeSubsegment): return ret - def create_c_asm_file( + def check_gaps_in_migrated_rodata( self, func: spimdisasm.mips.symbols.SymbolFunction, + rodata_list: List[spimdisasm.mips.symbols.SymbolBase], + ): + for index in range(len(rodata_list) - 1): + rodata_sym = rodata_list[index] + next_rodata_sym = rodata_list[index + 1] + + if rodata_sym.vramEnd != next_rodata_sym.vram: + log.write( + f"\nA gap was detected in migrated rodata symbols!", status="warn" + ) + log.write( + f"\t In function '{func.getName()}' (0x{func.vram:08X}), gap detected between '{rodata_sym.getName()}' (0x{rodata_sym.vram:08X}) and '{next_rodata_sym.getName()}' (0x{next_rodata_sym.vram:08X})" + ) + log.write( + f"\t The address of the missing rodata symbol is 0x{rodata_sym.vramEnd:08X}" + ) + log.write( + f"\t Try to force the migration of that symbol with `force_migration:True` in the symbol_addrs.txt file; or avoid the migration of symbols around this address with `force:not_migration:True`" + ) + + def create_c_asm_file( + self, + func_rodata_entry: spimdisasm.mips.FunctionRodataEntry, out_dir: Path, func_sym: Symbol, ): outpath = out_dir / self.name / (func_sym.name + ".s") - assert func.vram is not None # Skip extraction if the file exists and the symbol is marked as extract=false if outpath.exists() and not func_sym.extract: @@ -172,111 +268,131 @@ class CommonSegC(CommonSegCodeSubsegment): outpath.parent.mkdir(parents=True, exist_ok=True) - with open(outpath, "w", newline="\n") as f: + with outpath.open("w", newline="\n") as f: if options.opts.asm_inc_header: f.write( options.opts.c_newline.join(options.opts.asm_inc_header.split("\n")) ) - if self.parent and isinstance(self.parent, CommonSegGroup): - if ( - options.opts.migrate_rodata_to_functions - and func.vram in self.parent.rodata_syms - ): - func_rodata = list({s for s in self.parent.rodata_syms[func.vram]}) - func_rodata.sort(key=lambda s: s.vram_start) + func_rodata_entry.writeToFile(f) - rdata_list = [] - late_rodata_list = [] - late_rodata_size = 0 - - processed_rodata_segments = set() - for func_rodata_symbol in func_rodata: - rsub = self.parent.get_subsegment_for_ram( - func_rodata_symbol.vram_start - ) - - if rsub is not None and isinstance(rsub, CommonSegRodata): - if ( - rsub in processed_rodata_segments - or rsub.spim_section is None - ): - continue - - assert isinstance( - rsub.spim_section, - spimdisasm.mips.sections.SectionRodata, - ) - ( - rdata_list_aux, - late_rodata_list_aux, - late_rodata_size_aux, - ) = spimdisasm.mips.FilesHandlers.getRdataAndLateRodataForFunctionFromSection( - func, rsub.spim_section - ) - rdata_list += rdata_list_aux - late_rodata_list += late_rodata_list_aux - late_rodata_size += late_rodata_size_aux - - processed_rodata_segments.add(rsub) - spimdisasm.mips.FilesHandlers.writeFunctionRodataToFile( - f, func, rdata_list, late_rodata_list, late_rodata_size - ) - - f.write(func.disassemble()) + if func_rodata_entry.function is not None: + self.check_gaps_in_migrated_rodata( + func_rodata_entry.function, func_rodata_entry.rodataSyms + ) + self.check_gaps_in_migrated_rodata( + func_rodata_entry.function, func_rodata_entry.lateRodataSyms + ) self.log(f"Disassembled {func_sym.name} to {outpath}") - def create_c_file(self, asm_out_dir, c_path): - assert self.spim_section is not None + def create_unmigrated_rodata_file( + self, + spim_rodata_sym: spimdisasm.mips.symbols.SymbolBase, + out_dir: Path, + rodata_sym: Symbol, + ): + outpath = out_dir / self.name / (rodata_sym.name + ".s") + # Skip extraction if the file exists and the symbol is marked as extract=false + if outpath.exists() and not rodata_sym.extract: + return + + outpath.parent.mkdir(parents=True, exist_ok=True) + + with outpath.open("w", newline="\n") as f: + if options.opts.include_macro_inc: + f.write('.include "macro.inc"\n\n') + preamble = options.opts.generated_s_preamble + if preamble: + f.write(preamble + "\n") + assert rodata_sym.linker_section is not None, rodata_sym.name + f.write(f".section {rodata_sym.linker_section}\n\n") + f.write(spim_rodata_sym.disassemble()) + + self.log(f"Disassembled {rodata_sym.name} to {outpath}") + + def get_c_line_include_macro( + self, + spim_sym: spimdisasm.mips.symbols.SymbolBase, + asm_out_dir: Path, + macro_name: str, + ) -> str: + if options.opts.compiler == IDO: + # IDO uses the asm processor to embeed assembly and it doesn't require a special directive to include symbols + asm_outpath = Path( + os.path.join(asm_out_dir, self.name, spim_sym.getName() + ".s") + ) + rel_asm_outpath = os.path.relpath(asm_outpath, options.opts.base_path) + return f'#pragma GLOBAL_ASM("{rel_asm_outpath}")' + + if options.opts.use_legacy_include_asm: + rel_asm_out_dir = asm_out_dir.relative_to(options.opts.nonmatchings_path) + return f'{macro_name}(const s32, "{rel_asm_out_dir / self.name}", {spim_sym.getName()});' + + return f'{macro_name}("{asm_out_dir / self.name}", {spim_sym.getName()});' + + def get_c_lines_for_function( + self, func: spimdisasm.mips.symbols.SymbolFunction, asm_out_dir: Path + ) -> List[str]: + c_lines = [] + + # Terrible hack to "auto-decompile" empty functions + if ( + options.opts.auto_decompile_empty_functions + and func.instructions[0].isReturn() + and func.instructions[1].isNop() + ): + c_lines.append("void " + func.getName() + "(void) {") + c_lines.append("}") + else: + c_lines.append( + self.get_c_line_include_macro(func, asm_out_dir, "INCLUDE_ASM") + ) + c_lines.append("") + return c_lines + + def get_c_lines_for_rodata_sym( + self, rodata_sym: spimdisasm.mips.symbols.SymbolBase, asm_out_dir: Path + ): + c_lines = [ + self.get_c_line_include_macro(rodata_sym, asm_out_dir, "INCLUDE_RODATA") + ] + c_lines.append("") + return c_lines + + def create_c_file( + self, + asm_out_dir: Path, + c_path: Path, + symbols_entries: List[spimdisasm.mips.FunctionRodataEntry], + ): c_lines = self.get_c_preamble() - for func in self.spim_section.symbolList: - assert isinstance(func, spimdisasm.mips.symbols.SymbolFunction) - - # Terrible hack to "auto-decompile" empty functions - if ( - options.opts.auto_decompile_empty_functions - and func.instructions[0].isJrRa() - and func.instructions[1].isNop() - ): - c_lines.append("void " + func.getName() + "(void) {") - c_lines.append("}") + for entry in symbols_entries: + if entry.function is not None: + c_lines += self.get_c_lines_for_function(entry.function, asm_out_dir) else: - if options.opts.compiler in [GCC, SN64]: - if options.opts.use_legacy_include_asm: - rel_asm_out_dir = asm_out_dir.relative_to( - options.opts.nonmatchings_path - ) - c_lines.append( - f'INCLUDE_ASM(s32, "{rel_asm_out_dir / self.name}", {func.getName()});' - ) - else: - c_lines.append( - f'INCLUDE_ASM("{asm_out_dir / self.name}", {func.getName()});' - ) - else: - asm_outpath = Path( - os.path.join(asm_out_dir, self.name, func.getName() + ".s") - ) - rel_asm_outpath = os.path.relpath( - asm_outpath, options.opts.base_path - ) - c_lines.append(f'#pragma GLOBAL_ASM("{rel_asm_outpath}")') - c_lines.append("") + for rodata_sym in entry.rodataSyms: + c_lines += self.get_c_lines_for_rodata_sym(rodata_sym, asm_out_dir) - Path(c_path).parent.mkdir(parents=True, exist_ok=True) - with open(c_path, "w") as f: + c_path.parent.mkdir(parents=True, exist_ok=True) + with c_path.open("w") as f: f.write("\n".join(c_lines)) log.write(f"Wrote {self.name} to {c_path}") def create_asm_dependencies_file( - self, c_path: Path, asm_out_dir: Path, is_new_c_file: bool + self, + c_path: Path, + asm_out_dir: Path, + is_new_c_file: bool, + symbols_entries: List[spimdisasm.mips.FunctionRodataEntry], ): if not options.opts.create_asm_dependencies: return - if not (len(self.global_asm_funcs) > 0 or is_new_c_file): + if ( + len(self.global_asm_funcs) + len(self.global_asm_rodata_syms) + ) == 0 and not is_new_c_file: return assert self.spim_section is not None @@ -289,13 +405,23 @@ class CommonSegC(CommonSegCodeSubsegment): o_path = build_path / c_path.with_suffix(".o") f.write(f"{o_path}:") depend_list = [] - for func in self.spim_section.symbolList: - func_name = func.getName() + for entry in symbols_entries: + if entry.function is not None: + func_name = entry.function.getName() + + if func_name in self.global_asm_funcs or is_new_c_file: + outpath = asm_out_dir / self.name / (func_name + ".s") + depend_list.append(outpath) + f.write(f" \\\n {outpath}") + else: + for rodata_sym in entry.rodataSyms: + rodata_name = rodata_sym.getName() + + if rodata_name in self.global_asm_rodata_syms or is_new_c_file: + outpath = asm_out_dir / self.name / (rodata_name + ".s") + depend_list.append(outpath) + f.write(f" \\\n {outpath}") - if func_name in self.global_asm_funcs or is_new_c_file: - outpath = asm_out_dir / self.name / (func_name + ".s") - depend_list.append(outpath) - f.write(f" \\\n {outpath}") f.write("\n") for depend_file in depend_list: diff --git a/tools/splat/segtypes/common/code.py b/tools/splat/segtypes/common/code.py index 3486552a75..dc9a5bce57 100644 --- a/tools/splat/segtypes/common/code.py +++ b/tools/splat/segtypes/common/code.py @@ -1,13 +1,13 @@ import typing from collections import OrderedDict -from typing import Dict, List, Optional, Tuple +from typing import Dict, List, Optional, Tuple, Set from util import log, options from util.range import Range from util.symbols import Symbol from segtypes.common.group import CommonSegGroup -from segtypes.segment import RomAddr, Segment +from segtypes.segment import Segment CODE_TYPES = ["c", "asm", "hasm"] @@ -20,12 +20,12 @@ def dotless_type(type: str) -> str: class CommonSegCode(CommonSegGroup): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, ): self.bss_size: int = yaml.get("bss_size", 0) if isinstance(yaml, dict) else 0 @@ -41,7 +41,7 @@ class CommonSegCode(CommonSegGroup): ) self.reported_file_split = False - self.jtbl_glabels_to_add = set() + self.jtbl_glabels_to_add: Set[int] = set() self.jumptables: Dict[int, Tuple[int, int]] = {} self.rodata_syms: Dict[int, List[Symbol]] = {} self.align = 0x10 @@ -91,9 +91,10 @@ class CommonSegCode(CommonSegGroup): self.rom_start, int ): # Shoddy rom to ram + assert self.vram_start is not None, self.vram_start vram_start = elem.rom_start - self.rom_start + self.vram_start else: - vram_start = "auto" + vram_start = None rep: Segment = replace_class( rom_start=elem.rom_start, rom_end=elem.rom_end, @@ -158,7 +159,7 @@ class CommonSegCode(CommonSegGroup): base_segments: OrderedDict[str, Segment] = OrderedDict() ret = [] - prev_start: RomAddr = -1 + prev_start: Optional[int] = -1 inserts: OrderedDict[ str, int ] = ( @@ -217,6 +218,8 @@ class CommonSegCode(CommonSegGroup): inserts = self.find_inserts(found_sections) + last_rom_end = 0 + for i, subsection_yaml in enumerate(segment_yaml["subsegments"]): # endpos marker if isinstance(subsection_yaml, list) and len(subsection_yaml) == 1: @@ -229,10 +232,10 @@ class CommonSegCode(CommonSegGroup): if typ.startswith("all_"): dummy_seg = Segment( rom_start=start, - rom_end="auto", + rom_end=None, type=typ, name="", - vram_start="auto", + vram_start=None, args=[], yaml={}, ) @@ -260,14 +263,24 @@ class CommonSegCode(CommonSegGroup): ) vram = None - if start != "auto": + if start is not None: assert isinstance(start, int) vram = self.get_most_parent().rom_to_ram(start) + if segment_class.is_noload(): + # Pretend bss's rom address is after the last actual rom segment + start = last_rom_end + # and it has a rom size of zero + end = last_rom_end + segment: Segment = Segment.from_yaml( segment_class, subsection_yaml, start, end, vram ) + segment.sibling = base_segments.get(segment.name, None) + if segment.is_rodata() and segment.sibling is not None: + segment.sibling.rodata_sibling = segment + segment.parent = self if segment.special_vram_segment: self.special_vram_segment = True @@ -281,13 +294,15 @@ class CommonSegCode(CommonSegGroup): self.section_boundaries[prev_section].end = segment.vram_start self.section_boundaries[section].start = segment.vram_start + segment.bss_contains_common = self.bss_contains_common ret.append(segment) - # todo change - if typ in CODE_TYPES: + if segment.is_text(): base_segments[segment.name] = segment prev_start = start + if end is not None: + last_rom_end = end # Add the automatic all_ sections orig_len = len(ret) @@ -298,16 +313,21 @@ class CommonSegCode(CommonSegGroup): idx = orig_len # bss hack TODO maybe rethink - if section == "bss" and self.vram_start is not None: + if ( + section == "bss" + and self.vram_start is not None + and self.rom_end is not None + and self.rom_start is not None + ): rom_start = self.rom_end vram_start = self.vram_start + self.rom_end - self.rom_start else: - rom_start = "auto" - vram_start = "auto" + rom_start = None + vram_start = None new_seg = Segment( rom_start=rom_start, - rom_end="auto", + rom_end=None, type="all_" + section, name="", vram_start=vram_start, diff --git a/tools/splat/segtypes/common/codesubsegment.py b/tools/splat/segtypes/common/codesubsegment.py index 80beb4276d..04237059a4 100644 --- a/tools/splat/segtypes/common/codesubsegment.py +++ b/tools/splat/segtypes/common/codesubsegment.py @@ -3,13 +3,14 @@ from typing import Optional import spimdisasm import rabbitizer -from util import options, symbols +from util import options, symbols, log from segtypes import segment from segtypes.common.code import CommonSegCode from segtypes.segment import Segment + # abstract class for c, asm, data, etc class CommonSegCodeSubsegment(Segment): def __init__(self, *args, **kwargs): @@ -18,11 +19,6 @@ class CommonSegCodeSubsegment(Segment): vram = segment.parse_segment_vram(self.yaml) if vram is not None: self.vram_start = vram - self.partial_migration: bool = ( - self.yaml.get("partial_migration", False) - if isinstance(self.yaml, dict) - else False - ) self.str_encoding: Optional[str] = ( self.yaml.get("str_encoding", None) if isinstance(self.yaml, dict) else None @@ -41,11 +37,22 @@ class CommonSegCodeSubsegment(Segment): return ".text" def scan_code(self, rom_bytes, is_hasm=False): - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) + if not isinstance(self.rom_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a rom_start. Got '{self.rom_start}'" + ) + # Supposedly logic error, not user error + assert isinstance(self.rom_end, int), self.rom_end + + # Supposedly logic error, not user error segment_rom_start = self.get_most_parent().rom_start - assert isinstance(segment_rom_start, int) + assert isinstance(segment_rom_start, int), segment_rom_start + + if not isinstance(self.vram_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a vram address. Got '{self.vram_start}'" + ) self.spim_section = spimdisasm.mips.sections.SectionText( symbols.spim_context, @@ -157,6 +164,7 @@ class CommonSegCodeSubsegment(Segment): def gather_jumptable_labels(self, rom_bytes): assert isinstance(self.rom_start, int) + assert isinstance(self.vram_start, int) # TODO: use the seg_symbols for this # jumptables = [j.type == "jtbl" for j in self.seg_symbols] @@ -180,11 +188,11 @@ class CommonSegCodeSubsegment(Segment): def should_scan(self) -> bool: return ( options.opts.is_mode_active("code") - and self.rom_start != "auto" - and self.rom_end != "auto" + and self.rom_start is not None + and self.rom_end is not None ) def should_split(self) -> bool: - return self.extract and ( - self.partial_migration or options.opts.is_mode_active("code") - ) + return ( + self.extract and options.opts.is_mode_active("code") and self.should_scan() + ) # only split if the segment was scanned first diff --git a/tools/splat/segtypes/common/data.py b/tools/splat/segtypes/common/data.py index d30ef03cd9..e97ce6dece 100644 --- a/tools/splat/segtypes/common/data.py +++ b/tools/splat/segtypes/common/data.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import Optional import spimdisasm -from util import options, symbols +from util import options, symbols, log from segtypes.common.codesubsegment import CommonSegCodeSubsegment from segtypes.common.group import CommonSegGroup @@ -24,7 +24,7 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def scan(self, rom_bytes: bytes): CommonSegGroup.scan(self, rom_bytes) - if super().should_scan(): + if self.should_scan(): self.disassemble_data(rom_bytes) def split(self, rom_bytes: bytes): @@ -54,10 +54,12 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def should_self_split(self) -> bool: return options.opts.is_mode_active("data") - def should_split(self) -> bool: - return True - def should_scan(self) -> bool: + # Ensure data segments are scanned even if extract is False so subsegments get scanned too + # Check for not None so we avoid scanning "auto" segments + return self.rom_start is not None and self.rom_end is not None + + def should_split(self) -> bool: return True def cache(self): @@ -70,11 +72,22 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): return CommonSegCodeSubsegment.get_linker_entries(self) def disassemble_data(self, rom_bytes): - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) + if not isinstance(self.rom_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a rom_start. Got '{self.rom_start}'" + ) + # Supposedly logic error, not user error + assert isinstance(self.rom_end, int), self.rom_end + + # Supposedly logic error, not user error segment_rom_start = self.get_most_parent().rom_start - assert isinstance(segment_rom_start, int) + assert isinstance(segment_rom_start, int), segment_rom_start + + if not isinstance(self.vram_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a vram address. Got '{self.vram_start}'" + ) self.spim_section = spimdisasm.mips.sections.SectionData( symbols.spim_context, diff --git a/tools/splat/segtypes/common/decompressor.py b/tools/splat/segtypes/common/decompressor.py index 4d5b6d9379..3bdc5ea9ae 100644 --- a/tools/splat/segtypes/common/decompressor.py +++ b/tools/splat/segtypes/common/decompressor.py @@ -17,7 +17,7 @@ class CommonSegDecompressor(N64Segment): out_dir = options.opts.asset_path / self.dir out_dir.mkdir(parents=True, exist_ok=True) - if self.rom_end == "auto": + if self.rom_end is None: log.error( f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" ) diff --git a/tools/splat/segtypes/common/group.py b/tools/splat/segtypes/common/group.py index b964456745..fa263de8ae 100644 --- a/tools/splat/segtypes/common/group.py +++ b/tools/splat/segtypes/common/group.py @@ -3,18 +3,18 @@ from typing import List, Optional from util import log from segtypes.common.segment import CommonSegment -from segtypes.segment import RomAddr, Segment +from segtypes.segment import Segment class CommonSegGroup(CommonSegment): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, ): super().__init__( @@ -42,7 +42,8 @@ class CommonSegGroup(CommonSegment): if not yaml or "subsegments" not in yaml: return ret - prev_start: RomAddr = -1 + prev_start: Optional[int] = -1 + last_rom_end = 0 for i, subsection_yaml in enumerate(yaml["subsegments"]): # endpos marker @@ -66,10 +67,16 @@ class CommonSegGroup(CommonSegment): ) vram = None - if start != "auto": + if start is not None: assert isinstance(start, int) vram = self.get_most_parent().rom_to_ram(start) + if segment_class.is_noload(): + # Pretend bss's rom address is after the last actual rom segment + start = last_rom_end + # and it has a rom size of zero + end = last_rom_end + segment: Segment = Segment.from_yaml( segment_class, subsection_yaml, start, end, vram ) @@ -79,6 +86,8 @@ class CommonSegGroup(CommonSegment): ret.append(segment) prev_start = start + if end is not None: + last_rom_end = end return ret @@ -116,7 +125,7 @@ class CommonSegGroup(CommonSegment): return c - def get_subsegment_for_ram(self, addr) -> Optional[Segment]: + def get_subsegment_for_ram(self, addr: int) -> Optional[Segment]: for sub in self.subsegments: if sub.contains_vram(addr): return sub @@ -129,7 +138,7 @@ class CommonSegGroup(CommonSegment): """ for sub in self.subsegments: - if sub.vram_start == "auto": + if sub.vram_start is None: continue assert isinstance(sub.vram_start, int) if sub.vram_start > addr: diff --git a/tools/splat/segtypes/common/hasm.py b/tools/splat/segtypes/common/hasm.py index 933a20eb0a..de7c54c1df 100644 --- a/tools/splat/segtypes/common/hasm.py +++ b/tools/splat/segtypes/common/hasm.py @@ -4,8 +4,8 @@ from segtypes.common.asm import CommonSegAsm class CommonSegHasm(CommonSegAsm): def scan(self, rom_bytes: bytes): if ( - self.rom_start != "auto" - and self.rom_end != "auto" + self.rom_start is not None + and self.rom_end is not None and self.rom_start != self.rom_end ): self.scan_code(rom_bytes, is_hasm=True) diff --git a/tools/splat/segtypes/common/lib.py b/tools/splat/segtypes/common/lib.py index b4b190c462..51371c17f3 100644 --- a/tools/splat/segtypes/common/lib.py +++ b/tools/splat/segtypes/common/lib.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import Optional from util import log, options @@ -9,12 +10,12 @@ from segtypes.n64.segment import N64Segment class CommonSegLib(N64Segment): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, ): super().__init__( diff --git a/tools/splat/segtypes/common/rodata.py b/tools/splat/segtypes/common/rodata.py index 17cd0b4b16..a189671721 100644 --- a/tools/splat/segtypes/common/rodata.py +++ b/tools/splat/segtypes/common/rodata.py @@ -1,5 +1,7 @@ +from typing import Optional, Set, Tuple import spimdisasm -from util import compiler, options, symbols +from segtypes.segment import Segment +from util import log, options, symbols from segtypes.common.data import CommonSegData @@ -8,12 +10,48 @@ class CommonSegRodata(CommonSegData): def get_linker_section(self) -> str: return ".rodata" - def disassemble_data(self, rom_bytes): - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) + @staticmethod + def is_rodata() -> bool: + return True + def get_possible_text_subsegment_for_symbol( + self, rodata_sym: spimdisasm.mips.symbols.SymbolBase + ) -> Optional[Tuple[Segment, spimdisasm.common.ContextSymbol]]: + # Check if this rodata segment does not have a corresponding code file, try to look for one + + if self.sibling is not None or not options.opts.pair_rodata_to_text: + return None + + if not rodata_sym.shouldMigrate(): + return None + + if len(rodata_sym.contextSym.referenceFunctions) != 1: + return None + + func = list(rodata_sym.contextSym.referenceFunctions)[0] + text_segment = self.parent.get_subsegment_for_ram(func.vram) + + if text_segment is None or not text_segment.is_text(): + return None + return text_segment, func + + def disassemble_data(self, rom_bytes): + if not isinstance(self.rom_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a rom_start. Got '{self.rom_start}'" + ) + + # Supposedly logic error, not user error + assert isinstance(self.rom_end, int), self.rom_end + + # Supposedly logic error, not user error segment_rom_start = self.get_most_parent().rom_start - assert isinstance(segment_rom_start, int) + assert isinstance(segment_rom_start, int), segment_rom_start + + if not isinstance(self.vram_start, int): + log.error( + f"Segment '{self.name}' (type '{self.type}') requires a vram address. Got '{self.vram_start}'" + ) self.spim_section = spimdisasm.mips.sections.SectionRodata( symbols.spim_context, @@ -38,30 +76,22 @@ class CommonSegRodata(CommonSegData): self.spim_section.analyze() self.spim_section.setCommentOffset(self.rom_start) + possible_text_segments: Set[Segment] = set() + for symbol in self.spim_section.symbolList: - symbols.create_symbol_from_spim_symbol( + generated_symbol = symbols.create_symbol_from_spim_symbol( self.get_most_parent(), symbol.contextSym ) + generated_symbol.linker_section = self.get_linker_section() - def split(self, rom_bytes: bytes): - # Disassemble the file itself - super().split(rom_bytes) - - if options.opts.migrate_rodata_to_functions: - if self.spim_section is not None and self.partial_migration: - path_folder = options.opts.nonmatchings_path / self.dir / self.name - path_folder.mkdir(parents=True, exist_ok=True) - - for rodataSym in self.spim_section.symbolList: - if rodataSym.shouldMigrate(): - continue - - path = path_folder / f"{rodataSym.getName()}.s" - with open(path, "w", newline="\n") as f: - if options.opts.include_macro_inc: - f.write('.include "macro.inc"\n\n') - preamble = options.opts.generated_s_preamble - if preamble: - f.write(preamble + "\n") - f.write(f".section {self.get_linker_section()}\n\n") - f.write(rodataSym.disassemble()) + possible_text = self.get_possible_text_subsegment_for_symbol(symbol) + if possible_text is not None: + text_segment, refenceeFunction = possible_text + if text_segment not in possible_text_segments: + print( + f"\nRodata segment '{self.name}' may belong to the text segment '{text_segment.name}'" + ) + print( + f" Based on the usage from the function {refenceeFunction.getName()} to the symbol {symbol.getName()}" + ) + possible_text_segments.add(text_segment) diff --git a/tools/splat/segtypes/linker_entry.py b/tools/splat/segtypes/linker_entry.py index 233346a4ac..3750ae66f2 100644 --- a/tools/splat/segtypes/linker_entry.py +++ b/tools/splat/segtypes/linker_entry.py @@ -3,12 +3,14 @@ import re from dataclasses import dataclass from functools import lru_cache from pathlib import Path -from typing import Dict, List, Optional, OrderedDict, Union +from typing import Dict, List, OrderedDict, Set, Tuple, Union +from segtypes.n64.palette import N64SegPalette from util import options -from segtypes.n64.palette import N64SegPalette from segtypes.segment import Segment +from util.symbols import to_cname + # clean 'foo/../bar' to 'bar' @lru_cache(maxsize=None) @@ -52,16 +54,7 @@ def write_file_if_different(path: Path, new_content: str): f.write(new_content) -def to_cname(symbol: str) -> str: - symbol = re.sub(r"[^0-9a-zA-Z_]", "_", symbol) - - if symbol[0] in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]: - symbol = "_" + symbol - - return symbol - - -def get_segment_cname(segment: Segment) -> str: +def segment_cname(segment: Segment) -> str: name = segment.name if segment.parent: name = segment.parent.name + "_" + name @@ -72,6 +65,10 @@ def get_segment_cname(segment: Segment) -> str: return to_cname(name) +def get_segment_vram_end_symbol_name(segment: Segment) -> str: + return segment_cname(segment) + "_VRAM_END" + + @dataclass class LinkerSection: name: str @@ -125,12 +122,27 @@ class LinkerWriter: if options.opts.gp is not None: self._writeln("_gp = " + f"0x{options.opts.gp:X};") + # Write a series of statements which compute a symbol that represents the highest address among a list of segments' end addresses + def write_max_vram_end_sym(self, symbol: str, overlays: List[Segment]): + for segment in overlays: + if segment == overlays[0]: + self._writeln( + f"{symbol} = {get_segment_vram_end_symbol_name(segment)};" + ) + else: + self._writeln( + f"{symbol} = MAX({symbol}, {get_segment_vram_end_symbol_name(segment)});" + ) + # Adds all the entries of a segment to the linker script buffer - def add(self, segment: Segment, next_segment: Optional[Segment]): + def add(self, segment: Segment, max_vram_syms: List[Tuple[str, List[Segment]]]): entries = segment.get_linker_entries() self.entries.extend(entries) - seg_name = get_segment_cname(segment) + seg_name = segment_cname(segment) + + for sym, segs in max_vram_syms: + self.write_max_vram_end_sym(sym, segs) section_labels: OrderedDict[str, LinkerSection] = OrderedDict( { @@ -170,7 +182,7 @@ class LinkerWriter: cur_section = entry.section_type if cur_section == "linker_offset": - self._write_symbol(f"{get_segment_cname(entry.segment)}_OFFSET", ".") + self._write_symbol(f"{segment_cname(entry.segment)}_OFFSET", ".") continue for i, section in enumerate(section_labels.values()): @@ -202,6 +214,8 @@ class LinkerWriter: ) self._write_symbol(path_cname, ".") + wildcard = "*" if options.opts.ld_wildcard_sections else "" + # Create new linker section for BSS if entering_bss or leaving_bss: # If this is the last entry of its type, add the END marker for the section we're ending @@ -230,10 +244,13 @@ class LinkerWriter: section_labels[cur_section].started = True # Write THIS linker entry - self._writeln(f"{entry.object_path}({entry.section});") + self._writeln(f"{entry.object_path}({entry.section}{wildcard});") else: # Write THIS linker entry - self._writeln(f"{entry.object_path}({entry.section});") + if entry.section == ".bss" and entry.segment.bss_contains_common: + self._writeln(f"{entry.object_path}(.bss COMMON .scommon);") + else: + self._writeln(f"{entry.object_path}({entry.section}{wildcard});") # If this is the last entry of its type, add the END marker for the section we're ending if entry in last_seen_sections: @@ -258,7 +275,7 @@ class LinkerWriter: ) all_bss = all(e.section == ".bss" for e in entries) - self._end_segment(segment, next_segment, all_bss) + self._end_segment(segment, all_bss) def save_linker_script(self): if self.linker_discard_section: @@ -317,10 +334,8 @@ class LinkerWriter: self.symbols.append(symbol) def _begin_segment(self, segment: Segment): - if segment.follows_vram_segment: - vram_str = get_segment_cname(segment.follows_vram_segment) + "_VRAM_END " - elif segment.follows_vram_symbol: - vram_str = segment.follows_vram_symbol + " " + if options.opts.ld_use_follows and segment.vram_of_symbol: + vram_str = segment.vram_of_symbol + " " else: vram_str = ( f"0x{segment.vram_start:X} " @@ -328,20 +343,20 @@ class LinkerWriter: else "" ) - name = get_segment_cname(segment) + name = segment_cname(segment) self._write_symbol(f"{name}_VRAM", f"ADDR(.{name})") - self._writeln( - f".{name} {vram_str}: AT({name}_ROM_START) SUBALIGN({segment.subalign})" - ) + line = f".{name} {vram_str}: AT({name}_ROM_START)" + if segment.subalign != None: + line += f" SUBALIGN({segment.subalign})" + + self._writeln(line) self._begin_block() def _begin_bss_segment(self, segment: Segment, is_first: bool = False): - if segment.follows_vram_segment: - vram_str = get_segment_cname(segment.follows_vram_segment) + "_VRAM_END " - elif segment.follows_vram_symbol: - vram_str = segment.follows_vram_symbol + " " + if options.opts.ld_use_follows and segment.vram_of_symbol: + vram_str = segment.vram_of_symbol + " " else: vram_str = ( f"0x{segment.vram_start:X} " @@ -349,7 +364,7 @@ class LinkerWriter: else "" ) - name = get_segment_cname(segment) + "_bss" + name = segment_cname(segment) + "_bss" self._write_symbol(f"{name}_VRAM", f"ADDR(.{name})") @@ -358,15 +373,17 @@ class LinkerWriter: else: addr_str = "(NOLOAD)" - self._writeln(f".{name} {addr_str} : SUBALIGN({segment.subalign})") + line = f".{name} {addr_str} :" + if segment.subalign != None: + line += f" SUBALIGN({segment.subalign})" + + self._writeln(line) self._begin_block() - def _end_segment( - self, segment: Segment, next_segment: Optional[Segment] = None, all_bss=False - ): + def _end_segment(self, segment: Segment, all_bss=False): self._end_block() - name = get_segment_cname(segment) + name = segment_cname(segment) if not all_bss: self._writeln(f"__romPos += SIZEOF(.{name});") @@ -377,6 +394,6 @@ class LinkerWriter: self._write_symbol(f"{name}_ROM_END", "__romPos") - self._write_symbol(f"{name}_VRAM_END", ".") + self._write_symbol(get_segment_vram_end_symbol_name(segment), ".") self._writeln("") diff --git a/tools/splat/segtypes/n64/ci.py b/tools/splat/segtypes/n64/ci.py index 0df169d947..436908fd20 100644 --- a/tools/splat/segtypes/n64/ci.py +++ b/tools/splat/segtypes/n64/ci.py @@ -7,6 +7,7 @@ from segtypes.n64.img import N64SegImg if TYPE_CHECKING: from segtypes.n64.palette import N64SegPalette + # Base class for CI4/CI8 class N64SegCi(N64SegImg): def parse_palette_name(self, yaml, args) -> str: diff --git a/tools/splat/segtypes/n64/gfx.py b/tools/splat/segtypes/n64/gfx.py index 29e82a1636..62d0965969 100644 --- a/tools/splat/segtypes/n64/gfx.py +++ b/tools/splat/segtypes/n64/gfx.py @@ -4,6 +4,7 @@ Dumps out Gfx[] as a .inc.c file. """ import re +from typing import Optional from pathlib import Path @@ -47,12 +48,12 @@ LIGHTS_RE = re.compile(r"\*\(Lightsn \*\)0x[0-9A-F]{8}") class N64SegGfx(CommonSegCodeSubsegment): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, ): super().__init__( @@ -134,7 +135,7 @@ class N64SegGfx(CommonSegCodeSubsegment): sym = self.create_symbol( addr=addr, in_segment=True, type="data", reference=True ) - gfxd_printf(self.format_sym_name(sym)) + gfxd_printf(f"&{self.format_sym_name(sym)}") return 1 def lookat_handler(self, addr, count): @@ -175,6 +176,7 @@ class N64SegGfx(CommonSegCodeSubsegment): def disassemble_data(self, rom_bytes): assert isinstance(self.rom_start, int) assert isinstance(self.rom_end, int) + assert isinstance(self.vram_start, int) gfx_data = rom_bytes[self.rom_start : self.rom_end] segment_length = len(gfx_data) @@ -250,8 +252,8 @@ class N64SegGfx(CommonSegCodeSubsegment): def should_scan(self) -> bool: return ( options.opts.is_mode_active("gfx") - and self.rom_start != "auto" - and self.rom_end != "auto" + and self.rom_start is not None + and self.rom_end is not None ) def should_split(self) -> bool: diff --git a/tools/splat/segtypes/n64/i1.py b/tools/splat/segtypes/n64/i1.py new file mode 100644 index 0000000000..c293099938 --- /dev/null +++ b/tools/splat/segtypes/n64/i1.py @@ -0,0 +1,9 @@ +import n64img.image + +from segtypes.n64.img import N64SegImg + + +class N64SegI1(N64SegImg): + def __init__(self, *args, **kwargs): + kwargs["img_cls"] = n64img.image.I1 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/img.py b/tools/splat/segtypes/n64/img.py index 9d59d24f84..7c4bf80714 100644 --- a/tools/splat/segtypes/n64/img.py +++ b/tools/splat/segtypes/n64/img.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Type +from typing import Type, Optional from n64img.image import Image from util import log, options @@ -10,12 +10,12 @@ from segtypes.n64.segment import N64Segment class N64SegImg(N64Segment): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, img_cls: Type[Image], ): @@ -57,6 +57,7 @@ class N64SegImg(N64Segment): expected_len = int(self.n64img.size()) assert isinstance(self.rom_start, int) assert isinstance(self.rom_end, int) + assert isinstance(self.subalign, int) actual_len = self.rom_end - self.rom_start if actual_len > expected_len and actual_len - expected_len > self.subalign: log.error( diff --git a/tools/splat/segtypes/n64/palette.py b/tools/splat/segtypes/n64/palette.py index b9d048f930..eabd472b97 100644 --- a/tools/splat/segtypes/n64/palette.py +++ b/tools/splat/segtypes/n64/palette.py @@ -35,7 +35,7 @@ class N64SegPalette(N64Segment): ) if self.extract: - if self.rom_end == "auto": + if self.rom_end is None: log.error( f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" ) @@ -44,6 +44,7 @@ class N64SegPalette(N64Segment): expected_len = int(self.max_length()) assert isinstance(self.rom_end, int) assert isinstance(self.rom_start, int) + assert isinstance(self.subalign, int) actual_len = self.rom_end - self.rom_start if ( actual_len > expected_len diff --git a/tools/splat/segtypes/n64/vtx.py b/tools/splat/segtypes/n64/vtx.py index 95310698b3..8d961b291f 100644 --- a/tools/splat/segtypes/n64/vtx.py +++ b/tools/splat/segtypes/n64/vtx.py @@ -7,9 +7,9 @@ Originally written by Mark Street (https://github.com/mkst) import struct from pathlib import Path +from typing import Optional -from util import options -from util.log import error +from util import options, log from segtypes.common.codesubsegment import CommonSegCodeSubsegment @@ -17,12 +17,12 @@ from segtypes.common.codesubsegment import CommonSegCodeSubsegment class N64SegVtx(CommonSegCodeSubsegment): def __init__( self, - rom_start, - rom_end, - type, - name, - vram_start, - args, + rom_start: Optional[int], + rom_end: Optional[int], + type: str, + name: str, + vram_start: Optional[int], + args: list, yaml, ): super().__init__( @@ -52,11 +52,12 @@ class N64SegVtx(CommonSegCodeSubsegment): def disassemble_data(self, rom_bytes): assert isinstance(self.rom_start, int) assert isinstance(self.rom_end, int) + assert isinstance(self.vram_start, int) vertex_data = rom_bytes[self.rom_start : self.rom_end] segment_length = len(vertex_data) if (segment_length) % 16 != 0: - error( + log.error( f"Error: Vtx segment {self.name} length ({segment_length}) is not a multiple of 16!" ) @@ -97,8 +98,8 @@ class N64SegVtx(CommonSegCodeSubsegment): def should_scan(self) -> bool: return ( options.opts.is_mode_active("vtx") - and self.rom_start != "auto" - and self.rom_end != "auto" + and self.rom_start is not None + and self.rom_end is not None ) def should_split(self) -> bool: diff --git a/tools/splat/segtypes/segment.py b/tools/splat/segtypes/segment.py index d4160b9baa..2650b9d042 100644 --- a/tools/splat/segtypes/segment.py +++ b/tools/splat/segtypes/segment.py @@ -2,19 +2,17 @@ import importlib import importlib.util from pathlib import Path -from typing import Any, Dict, List, Optional, Set, Type, TYPE_CHECKING, Union +from typing import Dict, List, Optional, Set, Type, TYPE_CHECKING, Union from intervaltree import Interval, IntervalTree from util import log, options, symbols -from util.symbols import Symbol +from util.symbols import Symbol, to_cname # circular import if TYPE_CHECKING: from segtypes.linker_entry import LinkerEntry -RomAddr = Union[int, str] - def parse_segment_vram(segment: Union[dict, list]) -> Optional[int]: if isinstance(segment, dict) and "vram" in segment: @@ -32,7 +30,10 @@ def parse_segment_align(segment: Union[dict, list]) -> Optional[int]: def parse_segment_subalign(segment: Union[dict, list]) -> int: default = options.opts.subalign if isinstance(segment, dict): - return int(segment.get("subalign", default)) + subalign = segment.get("subalign", default) + if subalign != None: + subalign = int(subalign) + return subalign return default @@ -49,9 +50,9 @@ def parse_segment_follows_vram(segment: Union[dict, list]) -> Optional[str]: return None -def parse_segment_follows_vram_symbol(segment: Union[dict, list]) -> Optional[str]: +def parse_segment_vram_of_symbol(segment: Union[dict, list]) -> Optional[str]: if isinstance(segment, dict): - return segment.get("follows_vram_symbol", None) + return segment.get("vram_of_symbol", segment.get("follows_vram_symbol", None)) return None @@ -118,14 +119,16 @@ class Segment: ) @staticmethod - def parse_segment_start(segment: Union[dict, list]) -> RomAddr: + def parse_segment_start(segment: Union[dict, list]) -> Optional[int]: if isinstance(segment, dict): s = segment.get("start", "auto") else: s = segment[0] if s == "auto": - return "auto" + return None + elif s == "...": + return None else: return int(s) @@ -167,13 +170,20 @@ class Segment: return Path(segment["path"]) return None + @staticmethod + def parse_segment_bss_contains_common(segment: Union[dict, list]) -> bool: + if isinstance(segment, dict) and "bss_contains_common" in segment: + return bool(segment["bss_contains_common"]) + else: + return False + def __init__( self, - rom_start: RomAddr, - rom_end: RomAddr, + rom_start: Optional[int], + rom_end: Optional[int], type: str, name: str, - vram_start: Any, + vram_start: Optional[int], args: list, yaml, ): @@ -181,7 +191,7 @@ class Segment: self.rom_end = rom_end self.type = type self.name = name - self.vram_start = vram_start + self.vram_start: Optional[int] = vram_start self.align: Optional[int] = None self.given_subalign: int = options.opts.subalign @@ -196,8 +206,8 @@ class Segment: self.symbol_ranges_rom: IntervalTree = IntervalTree() self.given_section_order: List[str] = options.opts.section_order - self.follows_vram: Optional[str] = None - self.follows_vram_symbol: Optional[str] = None + self.given_follows_vram: Optional[str] = None + self.vram_of_symbol: Optional[str] = None self.given_symbol_name_format: str = options.opts.symbol_name_format self.given_symbol_name_format_no_rom: str = ( @@ -206,20 +216,21 @@ class Segment: self.parent: Optional[Segment] = None self.sibling: Optional[Segment] = None - self.follows_vram_segment: Optional[Segment] = None + self.rodata_sibling: Optional[Segment] = None self.file_path: Optional[Path] = None self.args: List[str] = args self.yaml = yaml self.extract: bool = True - if self.rom_start == "auto": + if self.rom_start is None: self.extract = False elif self.type.startswith("."): self.extract = False self.warnings: List[str] = [] self.did_run = False + self.bss_contains_common = Segment.parse_segment_bss_contains_common(yaml) # For segments which are not in the usual VRAM segment space, like N64's IPL3 which lives in 0xA4... self.special_vram_segment: bool = False @@ -234,8 +245,8 @@ class Segment: def from_yaml( cls: Type["Segment"], yaml: Union[dict, list], - rom_start: RomAddr, - rom_end: RomAddr, + rom_start: Optional[int], + rom_end: Optional[int], vram=None, ): type = Segment.parse_segment_type(yaml) @@ -265,16 +276,32 @@ class Segment: ) ret.file_path = Segment.parse_segment_file_path(yaml) - if not ret.follows_vram: - ret.follows_vram = parse_segment_follows_vram(yaml) + ret.bss_contains_common = Segment.parse_segment_bss_contains_common(yaml) + if not ret.given_follows_vram: + ret.given_follows_vram = parse_segment_follows_vram(yaml) - if not ret.follows_vram_symbol: - ret.follows_vram_symbol = parse_segment_follows_vram_symbol(yaml) + if not ret.vram_of_symbol: + ret.vram_of_symbol = parse_segment_vram_of_symbol(yaml) if not ret.align: ret.align = parse_segment_align(yaml) return ret + # For executable segments (.text); like c, asm or hasm + @staticmethod + def is_text() -> bool: + return False + + # For readonly segments (.rodata); like rodata or rdata + @staticmethod + def is_rodata() -> bool: + return False + + # For segments which does not take space in ROM; like bss + @staticmethod + def is_noload() -> bool: + return False + @property def needs_symbols(self) -> bool: return False diff --git a/tools/splat/split.py b/tools/splat/split.py index b8d699ba3b..040f286727 100755 --- a/tools/splat/split.py +++ b/tools/splat/split.py @@ -4,7 +4,7 @@ import argparse import hashlib import importlib import pickle -from typing import Any, Dict, List, Optional, Set, Union +from typing import Any, Dict, List, Optional, Set, Tuple, Union import rabbitizer import spimdisasm @@ -13,13 +13,19 @@ import yaml from colorama import Fore, Style from intervaltree import Interval, IntervalTree -from segtypes.linker_entry import LinkerWriter, to_cname -from segtypes.segment import RomAddr, Segment -from util import compiler, log, options, palettes, symbols +from segtypes.linker_entry import ( + LinkerWriter, + get_segment_vram_end_symbol_name, + to_cname, +) +from segtypes.segment import Segment +from util import compiler, log, options, palettes, symbols, relocs -VERSION = "0.12.9" -# This value should be keep in sync with the version listed on requirements.txt -SPIMDISASM_MIN = (1, 7, 11) +from util.symbols import Symbol + +VERSION = "0.13.4" +# This value should be kept in sync with the version listed on requirements.txt +SPIMDISASM_MIN = (1, 11, 1) parser = argparse.ArgumentParser( description="Split a rom given a rom, a config, and output directory" @@ -62,6 +68,8 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: segments_by_name: Dict[str, Segment] = {} ret = [] + last_rom_end = 0 + for i, seg_yaml in enumerate(config_segments): # end marker if isinstance(seg_yaml, list) and len(seg_yaml) == 1: @@ -74,10 +82,16 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: this_start = Segment.parse_segment_start(seg_yaml) if i == len(config_segments) - 1 and Segment.parse_segment_file_path(seg_yaml): - next_start: RomAddr = 0 + next_start: Optional[int] = 0 else: next_start = Segment.parse_segment_start(config_segments[i + 1]) + if segment_class.is_noload(): + # Pretend bss's rom address is after the last actual rom segment + this_start = last_rom_end + # and it has a rom size of zero + next_start = last_rom_end + segment: Segment = Segment.from_yaml( segment_class, seg_yaml, this_start, next_start ) @@ -102,13 +116,18 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: ): segment_rams.addi(segment.vram_start, segment.vram_end, segment) + if next_start is not None: + last_rom_end = next_start + for segment in ret: - if segment.follows_vram: - if segment.follows_vram not in segments_by_name: + if segment.given_follows_vram: + if segment.given_follows_vram not in segments_by_name: log.error( - f"segment '{segment.name}' follows_vram segment'{segment.follows_vram}' does not exist" + f"segment '{segment.given_follows_vram}', the 'follows_vram' value for segment '{segment.name}', does not exist" ) - segment.follows_vram_segment = segments_by_name[segment.follows_vram] + segment.vram_of_symbol = get_segment_vram_end_symbol_name( + segments_by_name[segment.given_follows_vram] + ) return ret @@ -226,18 +245,18 @@ def configure_disassembler(): rabbitizer.config.pseudos_pseudoMove = False - selectedCompiler = options.opts.compiler - if selectedCompiler == compiler.SN64: + selected_compiler = options.opts.compiler + if selected_compiler == compiler.SN64: rabbitizer.config.regNames_namedRegisters = False rabbitizer.config.toolchainTweaks_sn64DivFix = True rabbitizer.config.toolchainTweaks_treatJAsUnconditionalBranch = True spimdisasm.common.GlobalConfig.ASM_COMMENT = False spimdisasm.common.GlobalConfig.SYMBOL_FINDER_FILTERED_ADDRESSES_AS_HILO = False spimdisasm.common.GlobalConfig.COMPILER = spimdisasm.common.Compiler.SN64 - elif selectedCompiler == compiler.GCC: + elif selected_compiler == compiler.GCC: rabbitizer.config.toolchainTweaks_treatJAsUnconditionalBranch = True spimdisasm.common.GlobalConfig.COMPILER = spimdisasm.common.Compiler.GCC - elif selectedCompiler == compiler.IDO: + elif selected_compiler == compiler.IDO: spimdisasm.common.GlobalConfig.COMPILER = spimdisasm.common.Compiler.IDO spimdisasm.common.GlobalConfig.GP_VALUE = options.opts.gp @@ -256,6 +275,10 @@ def configure_disassembler(): spimdisasm.common.GlobalConfig.LINE_ENDS = options.opts.c_newline + spimdisasm.common.GlobalConfig.ALLOW_ALL_ADDENDS_ON_DATA = ( + options.opts.allow_data_addends + ) + def brief_seg_name(seg: Segment, limit: int, ellipsis="…") -> str: s = seg.name.strip() @@ -334,12 +357,14 @@ def main(config_path, modes, verbose, use_cache=True, skip_version_check=False): # Load and process symbols symbols.initialize(all_segments) + relocs.initialize() # Assign symbols to segments assign_symbols_to_segments() if options.opts.is_mode_active("code"): symbols.initialize_spim_context(all_segments) + relocs.initialize_spim_context() # Resolve raster/palette siblings if options.opts.is_mode_active("img"): @@ -406,18 +431,41 @@ def main(config_path, modes, verbose, use_cache=True, skip_version_check=False): if ( options.opts.is_mode_active("ld") and options.opts.platform != "gc" ): # TODO move this to platform initialization when it gets implemented + # Calculate list of segments for which we need to find the largest so we can safely place the symbol after it + max_vram_end_syms: Dict[str, List[Segment]] = {} + for sym in symbols.appears_after_overlays_syms: + max_vram_end_syms[sym.name] = [ + seg + for seg in all_segments + if isinstance(seg.vram_start, int) + and seg.vram_start == sym.appears_after_overlays_addr + ] + max_vram_end_sym_names: Set[str] = set(max_vram_end_syms.keys()) + + max_vram_end_insertion_points: Dict[ + Segment, List[Tuple[str, List[Segment]]] + ] = {} + # Find the last segment whose vram_of_symbol is one of the max_vram_end_syms + for segment in reversed(all_segments): + vram_of_sym = segment.vram_of_symbol + if vram_of_sym is not None and vram_of_sym in max_vram_end_sym_names: + if segment not in max_vram_end_insertion_points: + max_vram_end_insertion_points[segment] = [] + max_vram_end_insertion_points[segment].append( + (vram_of_sym, max_vram_end_syms[vram_of_sym]) + ) + max_vram_end_sym_names.remove(vram_of_sym) + global linker_writer linker_writer = LinkerWriter() linker_bar = tqdm.tqdm( all_segments, total=len(all_segments), ) - for i, segment in enumerate(linker_bar): + + for segment in linker_bar: linker_bar.set_description(f"Linker script {brief_seg_name(segment, 20)}") - next_segment: Optional[Segment] = None - if i < len(all_segments) - 1: - next_segment = all_segments[i + 1] - linker_writer.add(segment, next_segment) + linker_writer.add(segment, max_vram_end_insertion_points.get(segment, [])) linker_writer.save_linker_script() linker_writer.save_symbol_header() @@ -481,7 +529,7 @@ def main(config_path, modes, verbose, use_cache=True, skip_version_check=False): with open(options.opts.cache_path, "wb") as f4: pickle.dump(cache, f4) - if options.opts.dump_symbols: + if options.opts.dump_symbols and options.opts.is_mode_active("code"): from pathlib import Path splat_hidden_folder = Path(".splat/") diff --git a/tools/splat/util/color.py b/tools/splat/util/color.py index d54daeb755..6d75cbd7cd 100644 --- a/tools/splat/util/color.py +++ b/tools/splat/util/color.py @@ -2,6 +2,7 @@ from math import ceil from util import options + # RRRRRGGG GGBBBBBA def unpack_color(data): s = int.from_bytes(data[0:2], byteorder=options.opts.endianness) diff --git a/tools/splat/util/floats.py b/tools/splat/util/floats.py index 60d66f1db9..009725e7ff 100644 --- a/tools/splat/util/floats.py +++ b/tools/splat/util/floats.py @@ -1,6 +1,7 @@ import math import struct + # From mips_to_c: https://github.com/matt-kempster/mips_to_c/blob/d208400cca045113dada3e16c0d59c50cdac4529/src/translate.py#L2085 def format_f32_imm(num: int) -> str: packed = struct.pack(">I", num & (2**32 - 1)) diff --git a/tools/splat/util/log.py b/tools/splat/util/log.py index e33e9998d8..df6ef53b53 100644 --- a/tools/splat/util/log.py +++ b/tools/splat/util/log.py @@ -1,5 +1,5 @@ import sys -from typing import Optional +from typing import NoReturn, Optional from colorama import Fore, init, Style @@ -20,7 +20,7 @@ def write(*args, status=None, **kwargs): print(status_to_ansi(status) + str(args[0]), *args[1:], **kwargs) -def error(*args, **kwargs): +def error(*args, **kwargs) -> NoReturn: write(*args, **kwargs, status="error") sys.exit(2) diff --git a/tools/splat/util/n64/__init__.py b/tools/splat/util/n64/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/splat/util/options.py b/tools/splat/util/options.py index 8fa876d055..a8a3ebad5d 100644 --- a/tools/splat/util/options.py +++ b/tools/splat/util/options.py @@ -45,6 +45,7 @@ class SplatOpts: # # It's possible to use more than one file by supplying a list instead of a string symbol_addrs_paths: List[Path] + reloc_addrs_paths: List[Path] # Determines the path to the project build directory build_path: Path # Determines the path to the source code directory @@ -95,6 +96,11 @@ class SplatOpts: ld_discard_section: bool # Determines the list of section labels that are to be added to the linker script ld_section_labels: List[str] + # Determines whether to add wildcards for section linking in the linker script (.rodata* for example) + ld_wildcard_sections: bool + # Determines whether to use use "follows" settings to determine locations of overlays in the linker script. + # If disabled, this effectively ignores "follows" directives in the yaml. + ld_use_follows: bool ################################################################################ # C file options @@ -118,6 +124,8 @@ class SplatOpts: symbol_name_format_no_rom: str # Determines whether to detect and hint to the user about likely file splits when disassembling find_file_boundaries: bool + # Determines whether to detect and hint to the user about possible rodata sections corresponding to a text section + pair_rodata_to_text: bool # Determines whether to attempt to automatically migrate rodata into functions # (only works in certain circumstances) migrate_rodata_to_functions: bool @@ -150,6 +158,8 @@ class SplatOpts: create_asm_dependencies: bool # Global option for rodata string encoding. This can be overriden per segment string_encoding: Optional[str] + # Global option for allowing data symbols using addends on symbol references. It can be overriden per symbol + allow_data_addends: bool ################################################################################ # N64-specific options @@ -231,6 +241,16 @@ class OptParser: return None return self.parse_path(base_path, opt) + def parse_path_list(self, base_path: Path, opt: str, default: str) -> List[Path]: + paths = self.parse_opt(opt, object, default) + + if isinstance(paths, str): + return [base_path / paths] + elif isinstance(paths, list): + return [base_path / path for path in paths] + else: + raise ValueError(f"Expected str or list for '{opt}', got {type(paths)}") + def check_no_unread_opts(self) -> None: opts = [opt for opt in self._yaml if opt not in self._read_opts] if opts: @@ -245,18 +265,6 @@ def _parse_yaml( ) -> SplatOpts: p = OptParser(yaml) - def parse_symbol_addrs_paths(base_path: Path) -> List[Path]: - paths = p.parse_opt("symbol_addrs_path", object, "symbol_addrs.txt") - - if isinstance(paths, str): - return [base_path / paths] - elif isinstance(paths, list): - return [base_path / path for path in paths] - else: - raise ValueError( - f"Expected str or list for 'symbol_addrs_paths', got {type(paths)}" - ) - basename = p.parse_opt("basename", str) platform = p.parse_opt_within("platform", str, ["n64", "psx", "gc", "ps2"]) comp = compiler.for_name(p.parse_opt("compiler", str, "IDO")) @@ -298,7 +306,12 @@ def _parse_yaml( use_o_as_suffix=p.parse_opt("o_as_suffix", bool, False), gp=p.parse_opt("gp_value", int, 0), asset_path=p.parse_path(base_path, "asset_path", "assets"), - symbol_addrs_paths=parse_symbol_addrs_paths(base_path), + symbol_addrs_paths=p.parse_path_list( + base_path, "symbol_addrs_path", "symbol_addrs.txt" + ), + reloc_addrs_paths=p.parse_path_list( + base_path, "reloc_addrs_path", "reloc_addrs.txt" + ), build_path=p.parse_path(base_path, "build_path", "build"), src_path=p.parse_path(base_path, "src_path", "src"), asm_path=asm_path, @@ -332,6 +345,8 @@ def _parse_yaml( list, [".text", ".data", ".rodata", ".bss"], ), + ld_wildcard_sections=p.parse_opt("ld_wildcard_sections", bool, False), + ld_use_follows=p.parse_opt("ld_use_follows", bool, True), create_c_files=p.parse_opt("create_c_files", bool, True), auto_decompile_empty_functions=p.parse_opt( "auto_decompile_empty_functions", bool, True @@ -343,6 +358,7 @@ def _parse_yaml( "symbol_name_format_no_rom", str, "$VRAM_$SEG" ), find_file_boundaries=p.parse_opt("find_file_boundaries", bool, True), + pair_rodata_to_text=p.parse_opt("pair_rodata_to_text", bool, True), migrate_rodata_to_functions=p.parse_opt( "migrate_rodata_to_functions", bool, True ), @@ -375,6 +391,7 @@ def _parse_yaml( add_set_gp_64=p.parse_opt("add_set_gp_64", bool, True), create_asm_dependencies=p.parse_opt("create_asm_dependencies", bool, False), string_encoding=p.parse_optional_opt("string_encoding", str), + allow_data_addends=p.parse_opt("allow_data_addends", bool, True), header_encoding=p.parse_opt("header_encoding", str, "ASCII"), gfx_ucode=p.parse_opt_within( "gfx_ucode", diff --git a/tools/splat/util/palettes.py b/tools/splat/util/palettes.py index f5b7760622..8ee1e9a014 100644 --- a/tools/splat/util/palettes.py +++ b/tools/splat/util/palettes.py @@ -4,6 +4,7 @@ from segtypes.common.group import CommonSegGroup from segtypes.n64.ci import N64SegCi from segtypes.n64.palette import N64SegPalette as Palette + # Resolve Raster#palette and Palette#raster links def initialize(all_segments): def process(segments): diff --git a/tools/splat/util/relocs.py b/tools/splat/util/relocs.py new file mode 100644 index 0000000000..36cdb653c9 --- /dev/null +++ b/tools/splat/util/relocs.py @@ -0,0 +1,125 @@ +from dataclasses import dataclass +from typing import Dict + +import spimdisasm +import tqdm +from intervaltree import Interval, IntervalTree + +from util import log, options, symbols + + +@dataclass +class Reloc: + rom_address: int + reloc_type: str + symbol_name: str + + addend: int = 0 + + +all_relocs: Dict[int, Reloc] = {} + + +def add_reloc(reloc: Reloc): + all_relocs[reloc.rom_address] = reloc + + +def initialize(): + global all_relocs + + all_relocs = {} + + for path in options.opts.reloc_addrs_paths: + if not path.exists(): + continue + + with path.open() as f: + sym_addrs_lines = f.readlines() + for line_num, line in enumerate( + tqdm.tqdm(sym_addrs_lines, desc=f"Loading relocs ({path.stem})") + ): + line = line.strip() + # Allow comments + line = line.split("//")[0] + line = line.strip() + + if line == "": + continue + + rom_addr = None + reloc_type = None + symbol_name = None + addend = None + + for info in line.split(" "): + if ":" not in info: + continue + + if info.count(":") > 1: + log.parsing_error_preamble(path, line_num, line) + log.write(f"Too many ':'s in '{info}'") + log.error("") + + attr_name, attr_val = info.split(":") + if attr_name == "": + log.parsing_error_preamble(path, line_num, line) + log.write( + f"Missing attribute name in '{info}', is there extra whitespace?" + ) + log.error("") + if attr_val == "": + log.parsing_error_preamble(path, line_num, line) + log.write( + f"Missing attribute value in '{info}', is there extra whitespace?" + ) + log.error("") + + # Non-Boolean attributes + try: + if attr_name == "rom": + rom_addr = int(attr_val, 0) + continue + if attr_name == "reloc": + reloc_type = attr_val + continue + if attr_name == "symbol": + symbol_name = attr_val + continue + if attr_name == "addend": + addend = int(attr_val, 0) + continue + except: + log.parsing_error_preamble(path, line_num, line) + log.write(f"value of attribute '{attr_name}' could not be read:") + log.write("") + raise + + if rom_addr is None: + log.parsing_error_preamble(path, line_num, line) + log.error(f"Missing required 'rom' attribute for reloc") + if reloc_type is None: + log.parsing_error_preamble(path, line_num, line) + log.error(f"Missing required 'reloc' attribute for reloc") + if symbol_name is None: + log.parsing_error_preamble(path, line_num, line) + log.error(f"Missing required 'symbol' attribute for reloc") + + reloc = Reloc(rom_addr, reloc_type, symbol_name) + if addend is not None: + reloc.addend = addend + + add_reloc(reloc) + + +def initialize_spim_context(): + for rom_address, reloc in all_relocs.items(): + reloc_type = spimdisasm.common.RelocType.fromStr(reloc.reloc_type) + + if reloc_type is None: + log.error( + f"Reloc type '{reloc.reloc_type}' is not valid. Rom address: 0x{rom_address:X}" + ) + + symbols.spim_context.addGlobalReloc( + rom_address, reloc_type, reloc.symbol_name, addend=reloc.addend + ) diff --git a/tools/splat/util/symbols.py b/tools/splat/util/symbols.py index b08c94f50b..7377f13045 100644 --- a/tools/splat/util/symbols.py +++ b/tools/splat/util/symbols.py @@ -1,9 +1,10 @@ from dataclasses import dataclass +import re from typing import Dict, List, Optional, Set, TYPE_CHECKING import spimdisasm import tqdm -from intervaltree import Interval, IntervalTree +from intervaltree import IntervalTree # circular import if TYPE_CHECKING: @@ -16,6 +17,7 @@ all_symbols_dict: Dict[int, List["Symbol"]] = {} all_symbols_ranges = IntervalTree() ignored_addresses: Set[int] = set() to_mark_as_defined: Set[str] = set() +appears_after_overlays_syms: List["Symbol"] = [] # Initialize a spimdisasm context, used to store symbols and functions spim_context = spimdisasm.common.Context() @@ -44,6 +46,15 @@ def add_symbol(sym: "Symbol"): all_symbols_ranges.addi(sym.vram_start, sym.vram_end, sym) +def to_cname(symbol_name: str) -> str: + symbol_name = re.sub(r"[^0-9a-zA-Z_]", "_", symbol_name) + + if symbol_name[0] in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]: + symbol_name = "_" + symbol_name + + return symbol_name + + def initialize(all_segments: "List[Segment]"): global all_symbols global all_symbols_dict @@ -144,6 +155,15 @@ def initialize(all_segments: "List[Segment]"): # Add segment to symbol sym.segment = seg continue + if attr_name == "name_end": + sym.given_name_end = attr_val + continue + if attr_name == "appears_after_overlays_addr": + sym.appears_after_overlays_addr = int( + attr_val, 0 + ) + appears_after_overlays_syms.append(sym) + continue except: log.parsing_error_preamble(path, line_num, line) log.write( @@ -186,8 +206,20 @@ def initialize(all_segments: "List[Segment]"): if attr_name == "force_not_migration": sym.force_not_migration = tf_val continue + if attr_name == "allow_addend": + sym.allow_addend = tf_val + continue + if attr_name == "dont_allow_addend": + sym.dont_allow_addend = tf_val + continue if ignore_sym: - ignored_addresses.add(sym.vram_start) + if sym.given_size == None or sym.given_size == 0: + ignored_addresses.add(sym.vram_start) + else: + spim_context.addBannedSymbolRangeBySize( + sym.vram_start, sym.given_size + ) + ignore_sym = False continue @@ -340,7 +372,13 @@ def add_symbol_to_spim_segment( context_sym.forceMigration = True if sym.force_not_migration: context_sym.forceNotMigration = True + if sym.allow_addend: + context_sym.allowedToReferenceAddends = True + if sym.dont_allow_addend: + context_sym.notAllowedToReferenceAddends = True context_sym.setNameGetCallbackIfUnset(lambda _: sym.name) + if sym.given_name_end: + context_sym.nameEnd = sym.given_name_end return context_sym @@ -384,6 +422,8 @@ def add_symbol_to_spim_section( if sym.force_not_migration: context_sym.forceNotMigration = True context_sym.setNameGetCallbackIfUnset(lambda _: sym.name) + if sym.given_name_end: + context_sym.nameEnd = sym.given_name_end return context_sym @@ -455,6 +495,7 @@ class Symbol: vram_start: int given_name: Optional[str] = None + given_name_end: Optional[str] = None rom: Optional[int] = None type: Optional[str] = None given_size: Optional[int] = None @@ -469,9 +510,16 @@ class Symbol: force_migration: bool = False force_not_migration: bool = False + allow_addend: bool = False + dont_allow_addend: bool = False + + linker_section: Optional[str] = None + _generated_default_name: Optional[str] = None _last_type: Optional[str] = None + appears_after_overlays_addr: Optional[int] = None + def __str__(self): return self.name diff --git a/ver/us/asm/data/world/area_jan/jan_13/B77000.data.s b/ver/us/asm/data/world/area_jan/jan_13/B77000.data.s index 2bd5c77781..1f17e6f79b 100644 --- a/ver/us/asm/data/world/area_jan/jan_13/B77000.data.s +++ b/ver/us/asm/data/world/area_jan/jan_13/B77000.data.s @@ -24,7 +24,7 @@ dlabel D_80241110_B778C0 .word 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000019, 0x00000191, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x00000005, 0xF24A8080, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241154_B77904 -.word 0x00000024, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E83, 0xFFFFFFFF, 0x00000044, 0x00000001, D_80240FB8_B77768, 0x00000003, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406077, 0x00000001, 0x0000000A, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000003B, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000002, 0x00000000, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x0000001C, 0x00000006, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000019, 0x00000004, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000015, 0x00000008, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000002, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000004, 0x00000004, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000003, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x0000000E, 0x00000006, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000004, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF8406077, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000002, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000005, 0x00000008, 0x00000001, 0x0000001E, 0x00000005, 0x00000001, 0x00000002, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000003, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFFD, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000008, 0x00000006, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000262, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000000, 0x00000000, 0x00000000, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, GetModelCenter, 0x0000003B, 0x00000043, 0x00000004, func_802D2884, 0xFE363C80, 0xFE363C82, 0x00000004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C85, 0xFE363C80, 0x00000028, 0x00000002, 0xFE363C84, 0x00000078, 0x00000027, 0x00000002, 0xFE363C85, 0x00000078, 0x00000014, 0x00000001, 0xFE363C83, 0x00000021, 0x00000002, 0xFE363C84, 0xFE363C85, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x0000002A, 0x00000002, 0xFE363C80, 0x00000002, 0x00000023, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000190, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000057, 0x00000000, 0x00000005, 0x00000001, 0x00000003, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000005, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFFB, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000005, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x00000007, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000007, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF9, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x00000008, 0x00000043, 0x00000003, RandInt, 0x00000002, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x00000008, 0x00000000, 0xFFFFFFAE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x00000026, 0x00000000, 0xFFFFFFC2, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x0000004E, 0x00000000, 0xFFFFFFB3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000023, 0x00000000, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x0000000A, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF6, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x0000000F, 0xF24A7C1A, 0x00000057, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0x8000001D, 0x00000000, 0x00000025, 0x00000000, 0xFFFFFF76, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000001, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x000000C8, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x0000000A, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF6, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000012, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x0000003C, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000002, 0x00000005, 0x00000001, 0x00000019, 0x00000027, 0x00000002, 0xFE363C80, 0x00000008, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x000000C8, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000005, 0x00000001, 0x0000003C, 0x00000027, 0x00000002, 0xFE363C81, 0x00000001, 0x00000028, 0x00000002, 0xFE363C80, 0xFE363C81, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C82, 0xFFFFFFF6, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0xFFFFFF38, 0xFE363C80, 0xFFFFFE0C, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFE363C82, 0xFFFFFFFF, 0xF24A7AE7, 0xF24A7AE7, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000003B, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF8406077, 0x00000001, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000005, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000006, 0x00000003, 0x00000001, 0x00000001, 0x00000044, 0x00000001, D_80240FB8_B77768, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000024, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E83, 0xFFFFFFFF, 0x00000044, 0x00000001, D_80240FB8_B77768, 0x00000003, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406077, 0x00000001, 0x0000000A, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000003B, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000002, 0x00000000, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x0000001C, 0x00000006, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000019, 0x00000004, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000015, 0x00000008, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000002, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000004, 0x00000004, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000003, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x0000000E, 0x00000006, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000004, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF8406077, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000001, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000002, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000002, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000005, 0x00000008, 0x00000001, 0x0000001E, 0x00000005, 0x00000001, 0x00000002, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000003, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFFD, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000008, 0x00000006, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000262, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000000, 0x00000000, 0x00000000, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, GetModelCenter, 0x0000003B, 0x00000043, 0x00000004, FacePlayerTowardPoint, 0xFE363C80, 0xFE363C82, 0x00000004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C85, 0xFE363C80, 0x00000028, 0x00000002, 0xFE363C84, 0x00000078, 0x00000027, 0x00000002, 0xFE363C85, 0x00000078, 0x00000014, 0x00000001, 0xFE363C83, 0x00000021, 0x00000002, 0xFE363C84, 0xFE363C85, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x0000002A, 0x00000002, 0xFE363C80, 0x00000002, 0x00000023, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000190, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000057, 0x00000000, 0x00000005, 0x00000001, 0x00000003, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000005, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFFB, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000005, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x00000007, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x00000007, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF9, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x00000008, 0x00000043, 0x00000003, RandInt, 0x00000002, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x00000008, 0x00000000, 0xFFFFFFAE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x00000026, 0x00000000, 0xFFFFFFC2, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x0000000F, PlayEffect, 0x00000006, 0x00000001, 0x0000004E, 0x00000000, 0xFFFFFFB3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000023, 0x00000000, 0x00000044, 0x00000001, D_80241110_B778C0, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x0000000A, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF6, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x0000000F, 0xF24A7C1A, 0x00000057, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0x8000001D, 0x00000000, 0x00000025, 0x00000000, 0xFFFFFF76, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000001, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x000000C8, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0x0000000A, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFFFFFFF6, 0x00000000, 0xF24A7B4D, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000012, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x0000003C, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000002, 0x00000005, 0x00000001, 0x00000019, 0x00000027, 0x00000002, 0xFE363C80, 0x00000008, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x000000C8, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000005, 0x00000001, 0x0000003C, 0x00000027, 0x00000002, 0xFE363C81, 0x00000001, 0x00000028, 0x00000002, 0xFE363C80, 0xFE363C81, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C82, 0xFFFFFFF6, 0x00000043, 0x00000005, TranslateModel, 0x0000003B, 0xFFFFFF38, 0xFE363C80, 0xFFFFFE0C, 0x00000043, 0x00000006, RotateModel, 0x0000003B, 0xFE363C82, 0xFFFFFFFF, 0xF24A7AE7, 0xF24A7AE7, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000003B, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF8406077, 0x00000001, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000005, GetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000005, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000006, 0x00000003, 0x00000001, 0x00000001, 0x00000044, 0x00000001, D_80240FB8_B77768, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241F5C_B7870C .word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000007, GetGridIndexFromPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C83, 0x0000001C, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000006, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000019, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000004, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000002, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000015, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000008, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000003, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000004, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000004, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000004, 0x0000000A, 0x00000002, 0xFE363C83, 0x0000000E, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000006, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000005, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000011, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000005, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000010, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000005, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000012, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F80, 0x00000005, 0x0000000A, 0x00000002, 0xFE363C83, 0x00000013, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C85, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, func_802402B8_B76A68, 0x00000043, 0x00000001, InterruptUsePartner, 0x00000005, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x0000000C, 0x00000002, 0xFE363C84, 0x00000028, 0x0000002C, 0x00000002, 0xFE363C84, 0x00000006, 0x00000013, 0x00000000, 0x0000002E, 0x00000002, 0xFE363C83, 0x0000000A, 0x0000002E, 0x00000002, 0xFE363C85, 0x0000000A, 0x0000002C, 0x00000002, 0xFE363C83, 0xFE363C80, 0x0000002C, 0x00000002, 0xFE363C85, 0xFE363C82, 0x0000002F, 0x00000002, 0xFE363C83, 0x0000000B, 0x0000002F, 0x00000002, 0xFE363C85, 0x0000000B, 0x00000043, 0x00000004, SetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002E, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000008, CreatePushBlockGrid, 0x00000000, 0x00000020, 0x0000000C, 0xFFFFFE70, 0x00000000, 0xFFFFFF6A, 0x00000000, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000007, 0x00000005, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000D, 0x00000009, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000005, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000015, 0x00000002, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000016, 0x00000004, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000001A, 0x00000006, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000001B, 0x00000007, 0x00000001, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000000, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000000, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000000, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000000, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x0000000F, 0x00000002, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000010, 0x00000002, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000011, 0x00000002, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000012, 0x00000002, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0x00000013, 0x00000002, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000020, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000000, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000F, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000001, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000014, 0x00000005, 0x00000001, 0x0000000C, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000001, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000003, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000002, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x0000000A, 0x00000005, 0x00000001, 0x00000004, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000002, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x0000001A, 0x00000005, 0x00000001, 0x00000006, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000002, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000003, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x0000000A, 0x00000005, 0x00000001, 0x00000004, 0x00000043, 0x00000005, SetPushBlock, 0x00000000, 0xFE363C80, 0x00000003, 0x00000002, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000044, 0x00000001, D_80241154_B77904, 0x00000024, 0x00000002, 0xFE363C80, 0x0000002E, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000013, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240854_B77004, 0x00000024, 0x00000002, 0xFE363C80, 0x00000030, 0x00000024, 0x00000002, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C82, 0x00000014, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240854_B77004, 0x00000024, 0x00000002, 0xFE363C80, 0x00000032, 0x00000024, 0x00000002, 0xFE363C81, 0x00000002, 0x00000024, 0x00000002, 0xFE363C82, 0x00000015, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240854_B77004, 0x00000024, 0x00000002, 0xFE363C80, 0x00000034, 0x00000024, 0x00000002, 0xFE363C81, 0x00000003, 0x00000024, 0x00000002, 0xFE363C82, 0x00000016, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240854_B77004, 0x00000024, 0x00000002, 0xFE363C80, 0x00000036, 0x00000024, 0x00000002, 0xFE363C81, 0x00000004, 0x00000024, 0x00000002, 0xFE363C82, 0x00000017, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240854_B77004, 0x00000024, 0x00000002, 0xFE363C80, 0x00000038, 0x00000024, 0x00000002, 0xFE363C81, 0x00000005, 0x00000024, 0x00000002, 0xFE363C82, 0x0000001A, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0xFE363C82, 0x7FFFFE00, 0x00000044, 0x00000001, D_80240ADC_B7728C, 0x00000044, 0x00000001, D_80241F5C_B7870C, 0x00000043, 0x00000003, EnableTexPanning, 0x0000002E, 0x00000001, 0x00000043, 0x00000003, EnableTexPanning, 0x00000030, 0x00000001, 0x00000043, 0x00000003, EnableTexPanning, 0x00000032, 0x00000001, 0x00000043, 0x00000003, EnableTexPanning, 0x00000034, 0x00000001, 0x00000043, 0x00000003, EnableTexPanning, 0x00000036, 0x00000001, 0x00000043, 0x00000003, EnableTexPanning, 0x00000038, 0x00000001, 0x00000043, 0x00000004, SetModelCustomGfx, 0x0000002E, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000030, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000032, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000034, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000036, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000038, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000000, func_80240000_B767B0, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000028, 0x00000002, 0xFE363C80, 0x000007D0, 0x0000000C, 0x00000002, 0xFE363C80, 0xFFFF0000, 0x00000027, 0x00000002, 0xFE363C80, 0x00010000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000001, 0x00000000, 0x00000000, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_kkj/kkj_14/ADC0F0.data.s b/ver/us/asm/data/world/area_kkj/kkj_14/ADC0F0.data.s index fed8e927eb..9a5fb938cd 100644 --- a/ver/us/asm/data/world/area_kkj/kkj_14/ADC0F0.data.s +++ b/ver/us/asm/data/world/area_kkj/kkj_14/ADC0F0.data.s @@ -36,7 +36,7 @@ dlabel D_80241F80_ADCE20 .word 0x00000043, 0x00000003, EnableModel, 0x0000004E, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000004F, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x0000004D, 0x00000001, 0x0000000A, 0x00000002, 0xF5DE0180, 0xFFFFFFB4, 0x00000024, 0x00000002, 0xFE363C80, 0x00000078, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x0000003C, 0x00000013, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000025, 0x000000FC, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x000000FF, 0x00000000, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000002, func_802403CC_ADB26C, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000050, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x00000050, 0x00000010, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, PlaySoundAt, 0x000000FB, 0x00000000, 0xFFFFFF83, 0x0000000A, 0xFFFFFF88, 0x00000043, 0x0000000F, PlayEffect, 0x00000027, 0x00000000, 0xFFFFFF83, 0x0000000A, 0xFFFFFF88, 0xF24A8280, 0x0000001E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0xFFFFFF4C, 0x0000001E, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000006, RotateModel, 0x00000041, 0xFE363C80, 0x00000001, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000025, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF8405D5F, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80242228_ADD0C8 -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x00000046, 0x00000001, D_80241E4C_ADCCEC, 0x00000012, 0x00000000, 0x00000043, 0x00000004, func_802D2884, 0xFFFFFFE3, 0xFFFFFF6C, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0010, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0011, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000018, 0x000000FA, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000002, SetPlayerJumpscale, 0xF24A7E80, 0x00000043, 0x00000005, PlayerJump1, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0012, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000A0001, 0x00000043, 0x00000003, InterpPlayerYaw, 0x000000E1, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x0000010E, 0x00000000, 0x00000046, 0x00000001, D_80241F80_ADCE20, 0x00000048, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x00000046, 0x00000001, D_80241E4C_ADCCEC, 0x00000012, 0x00000000, 0x00000043, 0x00000004, FacePlayerTowardPoint, 0xFFFFFFE3, 0xFFFFFF6C, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0010, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0011, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000018, 0x000000FA, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000002, SetPlayerJumpscale, 0xF24A7E80, 0x00000043, 0x00000005, PlayerJump1, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0012, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000A0001, 0x00000043, 0x00000003, InterpPlayerYaw, 0x000000E1, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x0000010E, 0x00000000, 0x00000046, 0x00000001, D_80241F80_ADCE20, 0x00000048, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_802423F4_ADD294 -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x0000000A, 0x00000002, 0xF9718884, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0xFFFFFFFC, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0020000C, 0x0020000C, 0x00000005, 0x00140046, 0x00000024, 0x00000002, 0xF9718884, 0x00000001, 0x00000013, 0x00000000, 0x00000046, 0x00000001, D_80241E4C_ADCCEC, 0x00000012, 0x00000000, 0x00000043, 0x00000004, func_802D2884, 0xFFFFFFE3, 0xFFFFFF6C, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0010, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0011, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000018, 0x000000FA, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000002, SetPlayerJumpscale, 0xF24A7E80, 0x00000043, 0x00000005, PlayerJump1, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0012, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000A0001, 0x00000043, 0x00000003, InterpPlayerYaw, 0x000000E1, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x000000E1, 0x00000000, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF88, 0x00000019, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000013, 0x00000000, 0x00000046, 0x00000001, D_80241F80_ADCE20, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8680, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000C0009, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0020000F, 0x0020000F, 0x00000005, 0x00140047, 0x00000024, 0x00000002, 0xF9718885, 0x00000001, 0x00000013, 0x00000000, 0x00000048, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000049, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000047, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000048, 0x00000000, 0x00000043, 0x00000006, RotateGroup, 0x00000046, 0x000000B4, 0x00000001, 0x00000000, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D5F, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x0000004D, 0x00000000, 0x00000044, 0x00000001, D_80241D3C_ADCBDC, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000050, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000001, func_802403F8_ADB298, 0x00000000, 0x00000014, 0x00000001, 0xF5DE0180, 0x00000018, 0x00000001, 0xFFFFFF81, 0x00000018, 0x00000001, 0xFFFFFFCA, 0x00000047, 0x00000005, D_802423F4_ADD294, 0x00000100, 0x00000018, 0x00000001, 0x00000000, 0x00000018, 0x00000001, 0x0000005F, 0x00000047, 0x00000005, D_80242228_ADD0C8, 0x00000100, 0x00000018, 0x00000001, 0x00000000, 0x0000001C, 0x00000000, 0x00000023, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000025, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000043, 0x00000006, RotateModel, 0x00000041, 0xFFFFFF4C, 0x00000001, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x00000051, 0x00000000, 0x00000013, 0x00000000, 0x00000047, 0x00000005, D_80241250_ADC0F0, 0x00000100, 0x00000025, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_8024143C_ADC2DC, 0x00000100, 0x00000026, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241608_ADC4A8, 0x00000100, 0x00000027, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802417D4_ADC674, 0x00000100, 0x00000028, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802419A0_ADC840, 0x00000100, 0x00000029, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241B6C_ADCA0C, 0x00000100, 0x0000002A, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 +.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x0000000A, 0x00000002, 0xF9718884, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0xFFFFFFFC, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0020000C, 0x0020000C, 0x00000005, 0x00140046, 0x00000024, 0x00000002, 0xF9718884, 0x00000001, 0x00000013, 0x00000000, 0x00000046, 0x00000001, D_80241E4C_ADCCEC, 0x00000012, 0x00000000, 0x00000043, 0x00000004, FacePlayerTowardPoint, 0xFFFFFFE3, 0xFFFFFF6C, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0010, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0011, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000018, 0x000000FA, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000002, SetPlayerJumpscale, 0xF24A7E80, 0x00000043, 0x00000005, PlayerJump1, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0012, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000A0001, 0x00000043, 0x00000003, InterpPlayerYaw, 0x000000E1, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x000000E1, 0x00000000, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF88, 0x00000019, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000013, 0x00000000, 0x00000046, 0x00000001, D_80241F80_ADCE20, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8680, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000C0009, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0020000F, 0x0020000F, 0x00000005, 0x00140047, 0x00000024, 0x00000002, 0xF9718885, 0x00000001, 0x00000013, 0x00000000, 0x00000048, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D60, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000049, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000047, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000048, 0x00000000, 0x00000043, 0x00000006, RotateGroup, 0x00000046, 0x000000B4, 0x00000001, 0x00000000, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF8405D5F, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x0000004D, 0x00000000, 0x00000044, 0x00000001, D_80241D3C_ADCBDC, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000050, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000001, func_802403F8_ADB298, 0x00000000, 0x00000014, 0x00000001, 0xF5DE0180, 0x00000018, 0x00000001, 0xFFFFFF81, 0x00000018, 0x00000001, 0xFFFFFFCA, 0x00000047, 0x00000005, D_802423F4_ADD294, 0x00000100, 0x00000018, 0x00000001, 0x00000000, 0x00000018, 0x00000001, 0x0000005F, 0x00000047, 0x00000005, D_80242228_ADD0C8, 0x00000100, 0x00000018, 0x00000001, 0x00000000, 0x0000001C, 0x00000000, 0x00000023, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000025, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000019, 0x7FFFFE00, 0x00000043, 0x00000006, RotateModel, 0x00000041, 0xFFFFFF4C, 0x00000001, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x00000051, 0x00000000, 0x00000013, 0x00000000, 0x00000047, 0x00000005, D_80241250_ADC0F0, 0x00000100, 0x00000025, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_8024143C_ADC2DC, 0x00000100, 0x00000026, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241608_ADC4A8, 0x00000100, 0x00000027, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802417D4_ADC674, 0x00000100, 0x00000028, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802419A0_ADC840, 0x00000100, 0x00000029, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241B6C_ADCA0C, 0x00000100, 0x0000002A, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_kkj/kkj_27/B143E0.data.s b/ver/us/asm/data/world/area_kkj/kkj_27/B143E0.data.s index f1d3c608e2..27a447e5fb 100644 --- a/ver/us/asm/data/world/area_kkj/kkj_27/B143E0.data.s +++ b/ver/us/asm/data/world/area_kkj/kkj_27/B143E0.data.s @@ -24,7 +24,7 @@ dlabel D_80240D40_B14AB0 .word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF33, 0xFFFFFFF6, 0x0000000F, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000010E, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0013, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000007, 0x000000FA, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0014, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0015, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x0000000A, 0xF24A7E80, 0x00000046, 0x00000001, D_80240B04_B14874, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80240E48_B14BB8 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, func_802D2884, 0xFFFFFF22, 0x00000000, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0013, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000007, 0x000000FA, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0014, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0015, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x0020000E, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000010E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000C0011, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFE, 0x000C0005, 0x000C0006, 0x00000005, 0x00140048, 0x00000057, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x00000005, 0xF24A7E80, 0x00000046, 0x00000001, D_80240B04_B14874, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, FacePlayerTowardPoint, 0xFFFFFF22, 0x00000000, 0x00000005, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0013, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000007, 0x000000FA, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0014, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000D0015, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x0020000E, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000010E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x000C0011, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFE, 0x000C0005, 0x000C0006, 0x00000005, 0x00140048, 0x00000057, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x00000005, 0xF24A7E80, 0x00000046, 0x00000001, D_80240B04_B14874, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241018_B14D88 .word 0x00000043, 0x00000003, EnableModel, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000009, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000000B, 0x00000000, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000006, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000009, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x0000000B, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000001, func_80240448_B141B8, 0x00000000, 0x0000000A, 0x00000002, 0xF5DE0180, 0xFFFFFFB4, 0x00000047, 0x00000005, D_80240E48_B14BB8, 0x00000100, 0x00000007, 0x00000001, 0x00000000, 0x00000012, 0x00000000, 0x00000047, 0x00000005, D_80240D40_B14AB0, 0x00000100, 0x00000007, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_03/9EC610.data.s b/ver/us/asm/data/world/area_nok/nok_03/9EC610.data.s deleted file mode 100644 index b442b3f4f3..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_03/9EC610.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240E20_9EC610 -.word 0xC4238000, 0x00000000, 0x40C00000, 0x42B40000, 0x4482C000, 0x00000000, 0xC1F80000, 0x43870000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8024126C, D_80240E20_9EC610, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80200000, 0x0019004A, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000012, 0x00000000, 0x00000008, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000013, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0x8000005B, 0x00000000, 0x00000377, 0x00000000, 0xFFFFFFD7, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_03/9EC700.data.s b/ver/us/asm/data/world/area_nok/nok_03/9EC700.data.s deleted file mode 100644 index 68c1a6c2ff..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_03/9EC700.data.s +++ /dev/null @@ -1,21 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240F10_9EC700 -.word 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000000, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x802423A0, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80240F60_9EC750 -.word 0x00000043, 0x00000003, UseExitHeading, 0x0000007B, 0x00000001, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x802423A8, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80240FB0_9EC7A0 -.word 0x00000047, 0x00000005, D_80240F10_9EC700, 0x00080000, 0x00000006, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80240F60_9EC750, 0x00080000, 0x00000008, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80240FF8_9EC7E8 -.word 0x00000043, 0x00000003, SetTexPanner, 0x00000034, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000005, 0x00000001, 0x0000000C, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000005, 0x00000001, 0x0000000C, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000004, 0x00000001, 0x0000000A, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802410AC_9EC89C -.word 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetTexPanner, 0x00000036, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000001, 0x00000000, 0xFE363C80, 0x00000000, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000001, 0x00000001, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0x00000064, 0x00000028, 0x00000002, 0xFE363C81, 0x00000190, 0x00000027, 0x00000002, 0xFE363C81, 0x000003E8, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x0000000A, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetTexPanner, 0x00000035, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000003, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000002, 0x00000000, 0xFE363C80, 0x00000000, 0x00000043, 0x00000005, SetTexPanOffset, 0x00000002, 0x00000001, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0x00000064, 0x00000027, 0x00000002, 0xFE363C81, 0x00000320, 0x00000028, 0x00000002, 0xFE363C81, 0x00000190, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000014, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000021, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000003, MakeNpcs, 0x00000000, 0x80242368, 0x00000013, 0x00000000, 0x00000046, 0x00000001, D_802413A0_9ECB90, 0x00000044, 0x00000001, D_80240FF8_9EC7E8, 0x00000044, 0x00000001, D_802410AC_9EC89C, 0x00000044, 0x00000001, 0x80240E80, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000007, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000009, 0x7FFFFE00, 0x00000024, 0x00000002, 0xFE363C80, D_80240FB0_9EC7A0, 0x00000044, 0x00000001, EnterWalk, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802413A0_9ECB90 -.word 0x00000043, 0x00000007, MakeItemEntity, 0x00000134, 0x000000DA, 0x00000040, 0xFFFFFF9C, 0x00000011, 0xF8405DC2, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_03/9ECBD0.data.s b/ver/us/asm/data/world/area_nok/nok_03/9ECBD0.data.s deleted file mode 100644 index 8bce39e444..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_03/9ECBD0.data.s +++ /dev/null @@ -1,48 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802413E0_9ECBD0 -.word 0x40000000, 0x0000001E, 0x0000001E, 0x42C80000, 0x00000000, 0x0000000A, 0x40900000, 0x00000046, 0x0000000A, 0x43480000, 0x00000000, 0x00000001 - -dlabel D_80241410_9ECC00 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000040, 0x00000001, 0x00000043, 0x00000003, nok_03_HoppingAI_Main, D_802413E0_9ECBD0, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024144C_9ECC3C -.word 0x00000000, 0x00140016, 0x00000000, 0x00000000, D_80241410_9ECC00, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00060000 - -dlabel D_80241478_9ECC68 -.word 0x00000000, 0x00140016, 0x00000000, 0x00000000, 0x00000000, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00060000 - -dlabel D_802414A4_9ECC94 -.word 0x00000000, 0x00230018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630010 - -dlabel D_802414D0_9ECCC0 -.word 0x00000056, 0x00000000, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C82, 0x00000002, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000057, 0x00000000, 0x00000003, 0x00000001, 0x00000001, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C86, 0xFE363C83, 0x00000028, 0x00000002, 0xFE363C86, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C86, 0x00000064, 0x00000027, 0x00000002, 0xFE363C83, 0x00000064, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x0000000A, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFA2, 0x00000013, 0x00000000, 0x0000000D, 0x00000002, 0xFE363C83, 0x000004B0, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802416C4_9ECEB4 -.word 0x00000008, 0x00000001, 0x00000005, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000C, 0x00000002, 0xFE363C80, 0xFFFFFE70, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0xFFFFFFFF, 0xF24A8680, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000006, 0x00000043, 0x00000003, SetNpcJumpscale, 0xFFFFFFFF, 0xF24A7F4D, 0x00000027, 0x00000002, 0xFE363C80, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000028, 0x00000002, 0xFE363C80, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C82, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000014, 0x00000027, 0x00000002, 0xFE363C82, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0xFFFFFFFF, 0xF24A81B4, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFFFFFEAB, 0x00000000, 0x00000017, 0x0000000F, 0x00000043, 0x00000003, SetSelfEnemyFlagBits, 0x40000000, 0x00000001, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, D_80241410_9ECC00, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024192C_9ED11C -.word 0x00000008, 0x00000001, 0x00000005, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000C, 0x00000002, 0xFE363C80, 0xFFFFFF74, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0xFFFFFFFF, 0xF24A8680, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000006, 0x00000043, 0x00000003, SetSelfEnemyFlagBits, 0x40000000, 0x00000001, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, D_80241410_9ECC00, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A24_9ED214 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_802416C4_9ECEB4, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000040, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A60_9ED250 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_8024192C_9ED11C, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000040, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A9C_9ED28C -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFA2, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000004, 0x00000200, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000005, 0x00000200, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_802414D0_9ECCC0, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241B70_9ED360 -.word 0x00000043, 0x00000003, EnableNpcShadow, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00020012, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241BA8_9ED398 -.word 0x00000000, D_8024144C_9ECC3C, 0xC3C20000, 0x42C80000, 0xC2D60000, 0x00400400, D_80241A24_9ED214, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x33320002, 0x33322666, 0x33320002, 0x33323FFF, 0x33320002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0xFFFFFE7C, 0x00000064, 0xFFFFFF95, 0x0000001E, 0x00000000, 0xFFFF8001, 0x00000000, 0xFFFFFE7C, 0x00000000, 0xFFFFFF95, 0x0000012C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000001, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80241D98_9ED588 -.word 0x00000001, D_8024144C_9ECC3C, 0xC2980000, 0x42EC0000, 0xC22C0000, 0x00400400, D_80241A60_9ED250, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x33320002, 0x33322666, 0x33320002, 0x33323FFF, 0x33320002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0xFFFFFFB4, 0x00000076, 0xFFFFFFD5, 0x00000064, 0x00000000, 0xFFFF8001, 0x00000000, 0xFFFFFFB4, 0x00000076, 0xFFFFFFD5, 0x0000012C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000001, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80241F88_9ED778 -.word 0x00000004, D_80241478_9ECC68, 0xC4070000, 0x00000000, 0x00000000, 0x00400B09, D_80241A9C_9ED28C, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x33320002, 0x33322666, 0x33320002, 0x33323FFF, 0x33320002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005, D_802414A4_9ECC94, 0x00000000, 0x00000000, 0x00000000, 0x00400B09, D_80241B70_9ED360, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x33320002, 0x33322666, 0x33320002, 0x33323FFF, 0x33320002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020003, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, D_80241BA8_9ED398, 0x05160002, 0x00000001, D_80241D98_9ED588, 0x05160002, 0x00000002, D_80241F88_9ED778, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_04/9EEB20.data.s b/ver/us/asm/data/world/area_nok/nok_04/9EEB20.data.s deleted file mode 100644 index 59c02bdd42..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_04/9EEB20.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240F30_9EEB20 -.word 0xC3A80000, 0x00000000, 0x43B20000, 0x42340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x802410CC, D_80240F30_9EEB20, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80200000, 0x0019004B, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000012, 0x00000000, 0x00000008, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, PushSong, 0x00000082, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, FadeOutMusic, 0x00000000, 0x000001F4, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, PopSong, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_04/9EEC40.data.s b/ver/us/asm/data/world/area_nok/nok_04/9EEC40.data.s deleted file mode 100644 index e688674e47..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_04/9EEC40.data.s +++ /dev/null @@ -1,9 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241050_9EEC40 -.word 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000000, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x80246E10, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802410A0_9EEC90 -.word 0x00000047, 0x00000005, D_80241050_9EEC40, 0x00080000, 0x0000000C, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000021, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000024, 0x00000002, 0xF9718883, 0x00000000, 0x00000024, 0x00000002, 0xF9718884, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000014, 0x7FFFFE00, 0x00000043, 0x00000003, MakeNpcs, 0x00000000, 0x80246DE0, 0x00000046, 0x00000001, 0x802412C0, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000047, 0x00000005, 0x80245BD8, 0x00001000, 0x00000005, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000047, 0x00000005, 0x80245BD8, 0x00001000, 0x00000006, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000047, 0x00000005, 0x80245BD8, 0x00001000, 0x00000007, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000003, 0x00000047, 0x00000005, 0x80245BD8, 0x00001000, 0x00000008, 0x00000001, 0x00000000, 0x00000044, 0x00000001, 0x80240F80, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x0000000D, 0x7FFFFE00, 0x00000024, 0x00000002, 0xFE363C80, D_802410A0_9EEC90, 0x00000044, 0x00000001, EnterWalk, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s b/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s deleted file mode 100644 index dd27237561..0000000000 --- a/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s +++ /dev/null @@ -1,120 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802412C0_9EEEB0 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802412D0_9EEEC0 -.word 0x00000000, 0x00140016, 0x00000000, 0x00000000, 0x00000000, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00060000 - -dlabel D_802412FC_9EEEEC -.word 0x00000000, 0x00230018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630010 - -dlabel D_80241328_9EEF18 -.word 0x00000043, 0x00000003, GetNpcYaw, 0xFE363C84, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C82, 0x0000001E, 0x0000000D, 0x00000002, 0xFE363C81, 0x00000097, 0x0000000E, 0x00000002, 0xFE363C81, 0x0000014B, 0x00000024, 0x00000002, 0xFE363C82, 0xFFFFFFE2, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000005, SetNpcRotation, 0xFE363C83, 0x00000000, 0x00000000, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802413F8_9EEFE8 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80241438_9EF028 -.word 0x00000000 - -dlabel D_8024143C_9EF02C -.word 0x00000000 - -dlabel D_80241440_9EF030 -.word 0xFFFFFFAE, 0x00000065, 0x00000082, 0x00000026, 0x000000A4, 0x00000082, 0x0000009E, 0x00000087, 0x0000009D, 0x00000119, 0x0000009C, 0x000000CA - -dlabel D_80241470_9EF060 -.word 0x00000024, 0x00000002, 0xFE363C82, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C84, 0x00000258, 0x0000002A, 0x00000002, 0xFE363C84, 0x00000064, 0x00000027, 0x00000002, 0xFE363C84, 0x0000001B, 0x00000043, 0x00000003, RandInt, 0x00000001, 0xFE363C85, 0x00000029, 0x00000002, 0xFE363C85, 0x00000014, 0x00000028, 0x00000002, 0xFE363C85, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C86, 0x00000000, 0x00000026, 0x00000002, 0xFE363C88, 0xF24A8E80, 0x00000043, 0x00000005, MakeLerp, 0xFE363C85, 0x00000000, 0xFE363C84, 0x00000008, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x0000002E, 0x00000002, 0xFE363C80, 0xF24A7C20, 0x00000027, 0x00000002, 0xFE363C86, 0x00000001, 0x00000026, 0x00000002, 0xFE363C89, 0xFE363C88, 0x0000002E, 0x00000002, 0xFE363C89, 0xF24A7680, 0x00000043, 0x00000008, nok_04_CosInterpMinMax, 0xFE363C86, 0xFE363C87, 0xFE363C89, 0xFE363C88, 0x00000003, 0x00000000, 0x00000000, 0x0000002E, 0x00000002, 0xFE363C88, 0xF24A7E20, 0x00000043, 0x00000005, TranslateModel, 0xFE363C82, 0xFE363C87, 0xFE363C80, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024161C_9EF20C -.word 0x00000024, 0x00000002, 0xFE363C82, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C84, 0x00000258, 0x0000002A, 0x00000002, 0xFE363C84, 0x00000064, 0x00000027, 0x00000002, 0xFE363C84, 0x0000001B, 0x00000024, 0x00000002, 0xFE363C80, 0x00000005, 0x00000005, 0x00000001, 0xFE363C80, 0x00000043, 0x00000005, TranslateModel, 0xFE363C82, 0xFE363C80, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C80, 0x00000029, 0x00000002, 0xFE363C81, 0xFFFFFFFF, 0x00000043, 0x00000005, TranslateModel, 0xFE363C82, 0xFE363C81, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241710_9EF300 -.word 0x00000043, 0x00000007, InterpCamTargetPos, 0x00000000, 0x00000001, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0xFE363C8D, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 - -dlabel D_80241748_9EF338 -.word 0xFFFE0000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00010000, 0x00000000, 0x02000000, 0xFFFFFFFF - -dlabel D_80241768_9EF358 -.word 0xD7000000, 0xFFFFFFFF, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xFCFFFFFF, 0xFFFE793C, 0xE3001201, 0x00000000, 0xE200001C, 0x00552078, 0xD9C0F9FB, 0x00000000, 0xD9FFFFFF, 0x00200005, 0xDF000000, 0x00000000 - -dlabel D_802417B0_9EF3A0 -.word 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0xFE363C8D, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802417F8_9EF3E8 -.word 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00BE, 0x000000A0, 0x00000028, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFDAB, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0x0000000A, 0xFFFFFFF5, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x00000000, 0x000002C3, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x0000005A, 0x00000000, 0x000000E4, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000003C, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002A, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000003, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0x00000003, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0x00000003, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0x00000003, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0x00000003, 0x00000014, 0x00000001, 0xFD050F80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8E, 0x0000000A, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8E, 0x00000009, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8E, 0x00000008, 0x00000023, 0x00000000, 0x00000043, 0x00000003, RandInt, 0x00000003, 0xFE363C80, 0x00000027, 0x00000002, 0xFE363C8E, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C86, 0x00000000, 0x00000024, 0x00000002, 0xFE363C87, 0x00000000, 0x00000024, 0x00000002, 0xFE363C88, 0x00000000, 0x00000024, 0x00000002, 0xFE363C89, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8F, 0xFD050F81, 0x00000005, 0x00000001, 0xFE363C8E, 0x00000024, 0x00000002, 0xFE363C8A, 0xFD050F81, 0x00000043, 0x00000003, func_80240630_9EE220, 0xFE363C8F, 0xFD050F81, 0x00000014, 0x00000001, 0xFE363C8F, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000016, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000003, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000001, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000001, 0x00000016, 0x00000001, 0x00000004, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000001, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000005, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000043, 0x00000003, RandInt, 0x00000001, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8F, 0xFFFFFFFF, 0x00000012, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8F, 0x00000001, 0x00000013, 0x00000000, 0x0000000F, 0x00000002, 0xFE363C8F, 0x00000006, 0x00000024, 0x00000002, 0xFE363C8F, 0x00000000, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xFE363C8F, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8F, 0x00000005, 0x00000013, 0x00000000, 0x00000014, 0x00000001, 0xFD050F80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000000F, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000000A, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8D, 0x00000006, 0x00000023, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x002B0005, 0x00000043, 0x00000003, RandInt, 0x00000002, 0xFE363C81, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C81, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0xFE363C80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0xFE363C80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000004, 0xFE363C80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0xFE363C80, 0x00000043, 0x00000002, PlaySound, 0xB0000017, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFD050F81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x0000000B, 0x00000002, 0xFD050F81, 0xFE363C8A, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFD050F81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8A, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8B, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8B, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8C, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8C, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8B, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000012, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8B, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8B, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8C, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8C, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x00000012, 0x00000000, 0x00000056, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000001, 0x0000002B, 0x00000002, 0xFE363C8A, 0x00000004, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8A, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000002, 0x0000002B, 0x00000002, 0xFE363C8A, 0x00000004, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8A, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000003, 0x0000002B, 0x00000002, 0xFE363C8A, 0x00000004, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C8A, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFD050F81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C82, 0x00000002, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C8D, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x002B0000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000004, 0x002B0000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x002B0000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000000, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000001, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000002, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000003, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x00000166, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242500_9F00F0 -.word 0x00000024, 0x00000002, 0xF9718883, 0x00000001, 0x0000000A, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000002, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x00000166, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000043, 0x00000005, func_80240574_9EE164, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000032, 0x00000000, 0x00000000, 0x00000043, 0x00000003, GetNpcPointer, 0x00000000, 0xFE363C80, 0x00000043, 0x00000003, GetNpcPointer, 0x00000001, 0xFE363C81, 0x00000043, 0x00000002, func_80240548_9EE138, 0xFE363C80, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C81, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA3, 0x00000024, 0x00000002, 0xFE363C80, 0x000C00BC, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFA3, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x000C00BD, 0x00000013, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0xFE363C80, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000085, 0x00000000, 0x00000008, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024274C_9F033C -.word 0x00000014, 0x00000001, 0xF5DE0180, 0x00000016, 0x00000001, 0xFFFFFFA3, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000C, 0x00000002, 0xFE363C80, 0x0000003C, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000000, 0x00000044, 0x00000001, D_80242500_9F00F0, 0x00000002, 0x00000000, 0x0000001B, 0x00000001, 0xFFFFFFA4, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000002, 0x00000000, 0x00000023, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000043, 0x00000002, SetPlayerSpeed, 0x00000004, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFED4, 0x00000145, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A7D50, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0xF24A7D50, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000003A, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x000000E3, 0x00000024, 0x00000002, 0xFE363C8D, 0x00000050, 0x00000044, 0x00000001, D_80241710_9EF300, 0x00000057, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0xFFFFFEFC, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x00000122, 0x00000024, 0x00000002, 0xFE363C8D, 0x00000014, 0x00000044, 0x00000001, D_802417B0_9EF3A0, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C8A, 0x00000000, 0x00000125, 0xFE363C8D, 0x00000024, 0x00000002, 0xFE363C8A, 0xFFFFFF4C, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x000000F5, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000000F, 0x00000044, 0x00000001, D_802417B0_9EF3A0, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C8A, 0xFE363C8B, 0x000000F8, 0xFE363C8D, 0x00000024, 0x00000002, 0xFE363C8A, 0xFFFFFF9C, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x000000EB, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000000F, 0x00000044, 0x00000001, D_802417B0_9EF3A0, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C8A, 0xFE363C8B, 0x000000EE, 0xFE363C8D, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000055, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8C, 0x000000D9, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000001E, 0x00000044, 0x00000001, D_802417B0_9EF3A0, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C8A, 0xFE363C8B, 0x000000DC, 0xFE363C8D, 0x00000043, 0x00000005, func_80240574_9EE164, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C8B, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C8D, 0x0000001E, 0x00000044, 0x00000001, D_802417B0_9EF3A0, 0x00000008, 0x00000001, 0x00000001, 0x00000027, 0x00000002, 0xFE363C8C, 0x00000003, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0xFE363C8D, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000001, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0x00000002, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x00000166, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFF68, 0x00000000, 0x000000EB, 0x00000043, 0x00000004, PlayerMoveTo, 0x0000003A, 0x000000E3, 0x0000003C, 0x00000024, 0x00000002, 0xFBD3E280, 0x00000001, 0x00000044, 0x00000001, D_80242500_9F00F0, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242C5C_9F084C -.word 0x00000003, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000001, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000003, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, RandInt, 0x0000018F, 0xFE363C84, 0x0000002A, 0x00000002, 0xFE363C84, 0x00000064, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000003, RandInt, 0x0000012C, 0xFE363C85, 0x00000014, 0x00000001, 0xFE363C85, 0x00000018, 0x00000001, 0x00000064, 0x00000028, 0x00000002, 0xFE363C84, 0x00000001, 0x00000018, 0x00000001, 0x000000C8, 0x00000027, 0x00000002, 0xFE363C84, 0x00000001, 0x00000023, 0x00000000, 0x0000000C, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0x00000001, 0x00000013, 0x00000000, 0x0000000D, 0x00000002, 0xFE363C84, 0x00000003, 0x00000024, 0x00000002, 0xFE363C84, 0x00000002, 0x00000013, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C84, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, RandInt, 0x0000000A, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C83, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242E68_9F0A58 -.word 0x00000043, 0x00000001, func_802404D0_9EE0C0, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x002B000B, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFD050F83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C81, 0x00000032, 0x00000043, 0x00000003, GetNpcPointer, 0x00000002, 0xFE363C83, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C83, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C81, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000024, 0x00000002, 0xFD050F82, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242F9C_9F0B8C -.word 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C80, 0x00000043, 0x00000005, MakeLerp, 0xFE363C8B, 0xFE363C8D, 0x0000001E, 0x00000003, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C83, 0xFE363C80, 0xFE363C82, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024303C_9F0C2C -.word 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C80, 0x00000043, 0x00000005, MakeLerp, 0xFE363C8B, 0xFE363C8D, 0x0000001E, 0x00000003, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C83, 0xFE363C80, 0xFE363C82, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802430DC_9F0CCC -.word 0x00000003, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x0000000A, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243110_9F0D00 -.word 0x0000000A, 0x00000002, 0xF9718884, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000024, 0x00000002, 0xF9718884, 0x00000001, 0x00000013, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x0000000A, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024317C_9F0D6C -.word 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF9718885, 0x00000001, 0x00000024, 0x00000002, 0xF9718888, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x0000000A, 0x00000002, 0xF9718888, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcAI, 0x00000000, D_802430DC_9F0CCC, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243254_9F0E44 -.word 0x00000000 - -dlabel D_80243258_9F0E48 -.word 0x00000024, 0x00000002, 0xFBD3E28A, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, ShowKeyChoicePopup, 0x00000043, 0x00000001, CloseChoicePopup, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000019, 0x0000000A, 0x00000002, 0xFBD3E28A, 0x00000000, 0x00000024, 0x00000002, 0xFBD3E28A, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x000C00C5, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x000C00C6, 0x00000013, 0x00000000, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000043, 0x00000001, func_80240E70_9EEA60, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243374_9F0F64 -.word 0x00000019, 0x00000000 - -dlabel D_8024337C_9F0F6C -.word 0x0000004E, 0x00000006, D_80243258_9F0E48, 0x00000010, 0x00000000, D_80243374_9F0F64, 0x00000000, 0x00000001, 0x00000043, 0x00000001, func_80240E4C_9EEA3C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802433B8_9F0FA8 -.word 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0xFFFFFF98, 0x00000028, 0x00000002, 0xFE363C82, 0x000000F1, 0x00000029, 0x00000002, 0xFE363C80, 0xFFFFFF9B, 0x00000029, 0x00000002, 0xFE363C82, 0x00000023, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C82, 0x0000000E, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000006, 0xFFFFFEA2, 0x00000000, 0x0000015E, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000003, GetCamDistance, 0x00000000, 0xFE363C8A, 0x0000002E, 0x00000002, 0xFE363C8A, 0xF24A7D50, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C8A, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF33, 0x0000010B, 0x00000028, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000006, 0xFFFFFF0A, 0x00000122, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110004, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0011000A, 0x00110004, 0x00000000, 0x000C00C3, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000004, NpcFaceNpc, 0xFFFFFFFC, 0x00000006, 0x00000000, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C4, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000046, 0x00000001, D_8024337C_9F0F6C, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF31, 0x0000010C, 0x00000007, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0x00000001, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFF1, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000C, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x000C00C7, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x0011000D, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110000, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000006, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000027, 0x00000002, 0xFE363C82, 0x00000001, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000006, 0x00000044, 0x00000001, D_80241328_9EEF18, 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C83, 0x0000003C, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000001E, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020003, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000006, 0x00000100, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020000, 0x00000008, 0x00000001, 0x00000004, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C8, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00C9, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000263, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000000, 0x00000002, 0xFFFFFFD3, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x000C00CA, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CB, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00CC, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000043, 0x00000002, ShowChoice, 0x001E000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CD, 0x00000004, 0x00000001, 0x0000000A, 0x00000012, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CE, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000013, 0x00000000, 0x00000043, 0x00000003, nok_04_ChangeNpcToPartner, 0x00000006, 0x00000002, 0x00000043, 0x00000001, nok_04_LoadPartyImage, 0x00000044, 0x00000001, 0x80240FE8, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018A, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x8024100C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000004, AwaitPlayerApproach, 0xFFFFFE70, 0x00000190, 0x00000064, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00CF, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFF06, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0002, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000014, 0x00000024, 0x00000002, 0xF9718886, 0x00000000, 0x00000024, 0x00000002, 0xF9718887, 0x00000000, 0x00000024, 0x00000002, 0xF9718885, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D0, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718886, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718886, 0x00000000, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, BindNpcDefeat, 0x00000000, D_8024317C_9F0D6C, 0x00000043, 0x00000003, BindNpcAI, 0x00000000, D_80243110_9F0D00, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF2C, 0x00000000, 0x000000ED, 0x0000000F, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8B, 0x00000025, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080012, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000003, 0x00000001, 0x00000015, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000015, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFF01, 0x00000000, 0x0000011F, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001F, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x0000001F, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000002, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF3B, 0x00000000, 0x000000E3, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF17, 0x00000000, 0x0000011D, 0x0000000A, 0x00000003, 0x00000001, 0x00000016, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000016, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFFFFFF2E, 0x00000000, 0x000000F4, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x00000020, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000020, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000007, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF86, 0x00000000, 0x000000DB, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF4F, 0x00000000, 0x000000F2, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF2B, 0x00000000, 0x0000012C, 0x0000000F, 0x00000003, 0x00000001, 0x00000017, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000017, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFFFFFF2E, 0x00000000, 0x0000010A, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000002, 0x00000003, 0x00000001, 0x00000021, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000021, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF9C, 0x00000000, 0x0000010D, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF27, 0x00000000, 0x000000D4, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF03, 0x00000000, 0x0000010E, 0x0000000A, 0x00000003, 0x00000001, 0x00000018, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000018, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFFFFFF49, 0x00000000, 0x00000101, 0x00000043, 0x00000005, GetNpcPos, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000005, 0x00000003, 0x00000001, 0x00000022, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000022, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000003, 0x00000001, 0x00000028, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000028, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFECF, 0x00000000, 0x00000149, 0x00000043, 0x00000003, InterpPlayerYaw, 0x00000032, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFFFFFEB1, 0x00000000, 0x00000163, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x00000032, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D1, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718887, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000024, 0x00000002, 0xF9718888, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244D0C_9F28FC -.word 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000027, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x0000002A, 0x00000002, 0xFE363C8A, 0x00000002, 0x0000002A, 0x00000002, 0xFE363C8C, 0x00000002, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0x0000000F, 0xFFFFFFF5, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, GetNpcPointer, 0x00000000, 0xFE363C8E, 0x00000043, 0x00000003, GetNpcPointer, 0x00000001, 0xFE363C8F, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C8B, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x00000014, 0x00000001, 0xFD050F80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C8C, 0x00000028, 0x00000002, 0xFE363C84, 0x00000004, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C84, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C8B, 0x0000002A, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8D, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C8D, 0xFE363C83, 0x00000044, 0x00000001, D_8024303C_9F0C2C, 0x00000008, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C83, 0x00000000, 0xFFFFFFFF, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8D, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C8C, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00BF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C89, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000027, 0x00000002, 0xFD050F80, 0x00000001, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C8C, 0x00000028, 0x00000002, 0xFE363C84, 0x00000004, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C84, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C8B, 0x00000029, 0x00000002, 0xFE363C83, 0x00000002, 0x0000002A, 0x00000002, 0xFE363C83, 0x00000003, 0x00000024, 0x00000002, 0xFE363C8D, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C8D, 0xFE363C83, 0x00000044, 0x00000001, D_80242F9C_9F0B8C, 0x00000008, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C83, 0x00000000, 0xFFFFFFFF, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8D, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C8C, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C0, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C89, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000027, 0x00000002, 0xFD050F80, 0x00000001, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000024, 0x00000002, 0xFE363C80, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C80, 0x00000032, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C80, 0x00000000, 0x00000000, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000043, 0x00000002, func_80240548_9EE138, 0xFE363C8E, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C1, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x00000028, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0xF24A7CE7, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010024, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000027, 0x00000002, 0xFE363C84, 0x00000032, 0x00000027, 0x00000002, 0xFE363C85, 0x00000002, 0x00000027, 0x00000002, 0xFE363C83, 0x00000008, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000003, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000027, 0x00000002, 0xFE363C83, 0xFFFFFFF0, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000003, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x000000D2, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D0006, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, AddKeyItem, 0x00000019, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C2, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x00000014, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF9718883, 0x00000000, 0x00000044, 0x00000001, D_802433B8_9F0FA8, 0x00000023, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245858_9F3448 -.word 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000027, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x0000002A, 0x00000002, 0xFE363C8A, 0x00000002, 0x0000002A, 0x00000002, 0xFE363C8C, 0x00000002, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0x0000000F, 0xFFFFFFF5, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000024, 0x00000002, 0xFD050F83, 0xFE363C80, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFD050F83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, GetNpcPointer, 0x00000001, 0xFE363C8F, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C8B, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x00000043, 0x00000003, RandInt, 0x000003E7, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000018, 0x00000001, 0x000000C8, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000007, MakeItemEntity, 0x00000156, 0xFE363C80, 0x000000C8, 0xFE363C82, 0x0000000C, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000018, 0x00000001, 0x00000190, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000007, MakeItemEntity, 0x00000157, 0xFE363C80, 0x000000C8, 0xFE363C82, 0x0000000C, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000018, 0x00000001, 0x000003E8, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x002B0006, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000002, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000014, 0x00000024, 0x00000002, 0xFD050F82, 0x00000001, 0x00000023, 0x00000000, 0x00000003, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, func_802406C4_9EE2B4, 0xFE363C80, 0x00000001, 0x00000043, 0x00000002, PlaySound, 0x00000166, 0x0000000A, 0x00000002, 0xF9718883, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x00000057, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C80, 0xFD050F81, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000002, PlaySound, 0x0000021C, 0x00000057, 0x00000000, 0x00000046, 0x00000001, D_80244D0C_9F28FC, 0x00000012, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000002, PlaySound, 0x0000021D, 0x00000057, 0x00000000, 0x00000046, 0x00000001, D_80245858_9F3448, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245CF8_9F38E8 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245D08_9F38F8 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_8024274C_9F033C, 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F81, 0x00000002, 0x00000024, 0x00000002, 0xFD050F84, 0x00000002, 0x00000043, 0x00000001, func_802404D0_9EE0C0, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000000, 0x00000000, func_80240814_9EE404, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFEDB, 0x00000000, 0x0000013F, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFFFFFEDB, 0x00000000, 0x00000142, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000002, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000200, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFA3, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C84, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245F18_9F3B08 -.word 0x00000043, 0x00000003, EnableNpcShadow, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00020012, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245F50_9F3B40 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80242C5C_9F084C, 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_80242E68_9F0A58, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245F88_9F3B78 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245FAC_9F3B9C -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80245CF8_9F38E8, 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000006, 0x000000E1, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000006, 0xFFFFFEED, 0x00000000, 0x00000131, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00110004, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80246050_9F3C40 -.word 0x00000001, D_802412FC_9EEEEC, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B09, D_80245F18_9F3B08, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020003, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_802412D0_9EEEC0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B0D, D_80245F50_9F3B40, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, D_802412D0_9EEEC0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B09, D_80245F88_9F3B78, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, D_802412D0_9EEEC0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B09, D_80245F88_9F3B78, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005, D_802412D0_9EEEC0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B09, D_80245F88_9F3B78, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, D_802412FC_9EEEEC, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40B09, D_80245FAC_9F3B9C, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020003, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020004, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80246BF0_9F47E0 -.word 0x00000000, D_802412D0_9EEEC0, 0x00000000, 0xC47A0000, 0x00000000, 0x00400B0D, D_80245D08_9F38F8, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0002, 0x002B0002, 0x002B0003, 0x002B0003, 0x002B0001, 0x002B0001, 0x002B0008, 0x002B0008, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x002B0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, D_80246050_9F3C40, 0x05160004, 0x00000001, D_80246BF0_9F47E0, 0x05170004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_09/D59EE0.data.s b/ver/us/asm/data/world/area_pra/pra_09/D59EE0.data.s deleted file mode 100644 index 92832b5379..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_09/D59EE0.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241650_D59EE0 -.word 0x41500000, 0x00000000, 0x42920000, 0x42B40000, 0x43EF8000, 0x00000000, 0x42A80000, 0x43870000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80241BB8, D_80241650_D59EE0, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0019013C, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_09/D59F80.data.s b/ver/us/asm/data/world/area_pra/pra_09/D59F80.data.s deleted file mode 100644 index 21ec9001ed..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_09/D59F80.data.s +++ /dev/null @@ -1,183 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802416F0_D59F80 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241800_D5A090 -.word 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_09_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_09_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_09_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_09_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802418A8_D5A138 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x0000000C, 0x00000024, 0x00000002, 0xFE363C82, 0x00000018, 0x00000024, 0x00000002, 0xFE363C83, 0x00000015, 0x00000024, 0x00000002, 0xFE363C84, 0x00000019, 0x00000024, 0x00000002, 0xFE363C85, 0x00000016, 0x00000044, 0x00000001, 0x80285E9C, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80246A10, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024196C_D5A1FC -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000001, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x80246A18, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419C8_D5A258 -.word 0x00000047, 0x00000005, D_802418A8_D5A138, 0x00000100, 0x0000000C, 0x00000001, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000050, 0x00000047, 0x00000005, D_8024196C_D5A1FC, 0x00080000, 0x0000000E, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A28_D5A2B8 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, 0x00000018, 0x00000024, 0x00000002, 0xFE363C83, 0x00000015, 0x00000024, 0x00000002, 0xFE363C84, 0x00000019, 0x00000024, 0x00000002, 0xFE363C85, 0x00000016, 0x00000046, 0x00000001, 0x80285EC4, 0x00000044, 0x00000001, D_802419C8_D5A258, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, D_802419C8_D5A258, 0x00000044, 0x00000001, EnterWalk, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241AE8_D5A378 -.word 0x43F38000, 0x00000000, 0x42A00000, 0x00000000 - -dlabel D_80241AF8_D5A388 -.word 0x00000043, 0x0000000F, PlayEffect, 0x00000042, 0x00000000, 0x00000026, 0x0000001E, 0x00000001, 0x0000000A, 0x0000001E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000026, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000029, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000012, 0x7FFFFE00, 0x00000043, 0x00000003, EnableModel, 0x0000002B, 0x00000001, 0x00000024, 0x00000002, 0xF840615C, 0x00000001, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, D_802469D8_D5F268, 0x0000000A, 0x00000002, 0xF840615C, 0x00000000, 0x00000047, 0x00000005, D_80241AF8_D5A388, 0x00100000, D_80241AE8_D5A378, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000002B, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000026, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000029, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000012, 0x7FFFFE00, 0x00000013, 0x00000000, 0x00000044, 0x00000001, 0x802416B0, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xF8406152, 0x00000044, 0x00000001, D_80241800_D5A090, 0x00000044, 0x00000001, D_80241A28_D5A2B8, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241D40_D5A5D0 -.word 0x00000000, 0x001E002D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000 - -dlabel D_80241D6C_D5A5FC -.word 0x00000000, 0x00170014, 0x00000000, 0x00000000, 0x00000000, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00060000 - -dlabel pra_09_ItemChoice_HasSelectedItem -.word 0x00000000 - -dlabel pra_09_ItemChoice_SelectedItemID -.word 0x00000000 - -dlabel D_80241DA0_D5A630 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowKeyChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_09_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000042, 0x00000002, 0xFE363C80, 0x00050000, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_09_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_802411D8_D59A68, 0xFE363C80, 0x0000004E, 0x00000006, D_80241DA0_D5A630, 0x00000010, 0x00000000, pra_09_80246A20, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_09_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241F34_D5A7C4 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowConsumableChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_09_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_09_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80241274_D59B04, 0xFE363C80, 0x0000004E, 0x00000006, D_80241F34_D5A7C4, 0x00000010, 0x00000000, D_80246BE8, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_09_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802420B8_D5A948 -.word 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xFE363C8A, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24FF280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AAA80, 0xF24A6480, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xF2524A80, 0xF24ACA80, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242184_D5AA14 -.word 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A9280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF2524A80, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xF2508280, 0xF24ACA80, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242268_D5AAF8 -.word 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000D, 0x00000002, 0xFE363C80, 0x00000182, 0x00000024, 0x00000002, 0xFE363C80, 0x00000182, 0x00000013, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A9280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF2524A80, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xF2524A80, 0xF24ACA80, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242374_D5AC04 -.word 0x00000043, 0x00000001, func_802415F8_D59E88, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C83, 0x00000100, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFE363C83, 0x0003000E, 0x00030003, 0x00000000, 0xFE363C85, 0x00000043, 0x00000005, GetNpcPos, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, pra_09_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0xFE363C83, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C83, 0x00000100, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFE363C84, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFE363C84, 0x000002CD, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00000B40, 0x00000028, 0x00000004, 0x00000003, 0x00000001, 0x00000001, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcRotation, 0xFE363C84, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0xFE363C84, 0x004E0005, 0x004E0002, 0x00000000, 0x00000046, 0x00000001, D_80242268_D5AAF8, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFE363C84, 0x004E0004, 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C84, 0x0000005A, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0xFE363C84, 0xF24A9480, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFE363C84, 0x000002CB, 0x00000000, 0x00000043, 0x00000005, NpcMoveTo, 0xFE363C84, 0x00000000, 0xFE363C82, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFE363C84, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802425D0_D5AE60 -.word 0x00000043, 0x00000003, SetNpcJumpscale, 0xFE363C83, 0xF24A7E80, 0x00000043, 0x00000005, GetNpcPos, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000005, GetNpcPos, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024266C_D5AEFC -.word 0x0000000A, 0x00000002, 0xFD050F82, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, pra_09_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0x000002CD, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x004E0004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, NpcMoveTo, 0x00000005, 0xFE363C80, 0xFE363C82, 0x0000001E, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F83, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, pra_09_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000006, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000006, 0x000002CD, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x004E0004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, NpcMoveTo, 0x00000006, 0xFE363C80, 0xFE363C82, 0x0000001E, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F84, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, pra_09_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000007, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000007, 0x000002CD, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000007, 0x004E0004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, NpcMoveTo, 0x00000007, 0xFE363C80, 0xFE363C82, 0x0000001E, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F85, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, pra_09_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000008, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000008, 0x000002CD, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000008, 0x004E0004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, NpcMoveTo, 0x00000008, 0xFE363C80, 0xFE363C82, 0x0000001E, 0x00000057, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242A58_D5B2E8 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C83, 0x00000100, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFE363C83, 0x00030007, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, NpcMoveTo, 0xFE363C83, 0xFE363C80, 0xFE363C82, 0x0000001E, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242AC8_D5B358 -.word 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C83, 0xFE363C89, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C84, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C85, 0x00000027, 0x00000002, 0xFE363C82, 0xFE363C86, 0x00000043, 0x00000005, SetNpcPos, 0xFE363C83, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242B78_D5B408 -.word 0x00000043, 0x00000005, NpcMoveTo, 0xFE363C83, 0xFE363C80, 0xFE363C82, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0xFE363C83, 0x00030003, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C83, 0x00000100, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C83, 0x0000005A, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242BE8_D5B478 -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, GetPlayerActionState, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000001, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000044, 0x00000001, D_80242A58_D5B2E8, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F83, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000044, 0x00000001, D_80242A58_D5B2E8, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000003, 0x00000044, 0x00000001, D_80242A58_D5B2E8, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000004, 0x00000044, 0x00000001, D_80242A58_D5B2E8, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000000, 0x00000046, 0x00000001, D_80242A58_D5B2E8, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000005A, 0x00000003, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080009, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000043, 0x00000004, SetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x00000023, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0x00000000, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000043, 0x00000004, SetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C86, 0x0000000A, 0x00000044, 0x00000001, D_80242AC8_D5B358, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F83, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C84, 0xFFFFFFEC, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C86, 0x00000000, 0x00000044, 0x00000001, D_80242AC8_D5B358, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000003, 0x00000024, 0x00000002, 0xFE363C84, 0xFFFFFFEC, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C86, 0x0000000A, 0x00000044, 0x00000001, D_80242AC8_D5B358, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000004, 0x00000024, 0x00000002, 0xFE363C84, 0xFFFFFFEC, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C86, 0x00000014, 0x00000044, 0x00000001, D_80242AC8_D5B358, 0x00000013, 0x00000000, 0x00000043, 0x00000005, NpcMoveTo, 0x00000000, 0x00000172, 0x00000049, 0x0000001E, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000118, 0x00000024, 0x00000002, 0xFE363C82, 0x00000064, 0x00000044, 0x00000001, D_80242B78_D5B408, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F83, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, 0x0000013B, 0x00000024, 0x00000002, 0xFE363C82, 0x00000037, 0x00000044, 0x00000001, D_80242B78_D5B408, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F84, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000003, 0x00000024, 0x00000002, 0xFE363C80, 0x0000015E, 0x00000024, 0x00000002, 0xFE363C82, 0x00000050, 0x00000044, 0x00000001, D_80242B78_D5B408, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000004, 0x00000024, 0x00000002, 0xFE363C80, 0x000001A4, 0x00000024, 0x00000002, 0xFE363C82, 0x0000003C, 0x00000044, 0x00000001, D_80242B78_D5B408, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C83, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000181, 0x00000024, 0x00000002, 0xFE363C82, 0x00000078, 0x00000046, 0x00000001, D_80242B78_D5B408, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x0012014E, 0x000000A0, 0x00000028, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243270_D5BB00 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000050, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000003, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0xF840615C, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000102, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000182, 0x00000000, 0x0000005D, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000182, 0x00000000, 0x0000005D, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF2524A80, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AAA80, 0xF24A5E80, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xF2524A80, 0xF24ACA80, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000056, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000003, 0x00000024, 0x00000002, 0xFE363C81, 0x0000015E, 0x00000024, 0x00000002, 0xFE363C82, 0x00000096, 0x00000024, 0x00000002, 0xFE363C83, 0x0000005A, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000001, 0x00000043, 0x00000001, func_802414F4_D59D84, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000056, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x00000118, 0x00000024, 0x00000002, 0xFE363C82, 0x00000096, 0x00000024, 0x00000002, 0xFE363C83, 0x00000064, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000001, 0x00000043, 0x00000001, func_802414F4_D59D84, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000056, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000004, 0x00000024, 0x00000002, 0xFE363C81, 0x000001A4, 0x00000024, 0x00000002, 0xFE363C82, 0x00000096, 0x00000024, 0x00000002, 0xFE363C83, 0x0000003C, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000001, 0x00000043, 0x00000001, func_802414F4_D59D84, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000056, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000181, 0x00000024, 0x00000002, 0xFE363C82, 0x00000096, 0x00000024, 0x00000002, 0xFE363C83, 0x00000078, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000001, 0x00000043, 0x00000001, func_802414F4_D59D84, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x0000013B, 0x00000024, 0x00000002, 0xFE363C82, 0x00000096, 0x00000024, 0x00000002, 0xFE363C83, 0x00000037, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000001, 0x00000043, 0x00000001, func_802414F4_D59D84, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFE363C80, 0x00000100, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000000, 0x00000044, 0x00000001, D_802425D0_D5AE60, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x0003000E, 0x00030003, 0x00000000, 0x0012013C, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000044, 0x00000001, D_802425D0_D5AE60, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x0003000E, 0x00030003, 0x00000000, 0x0012013D, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000044, 0x00000001, D_802425D0_D5AE60, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x0003000E, 0x00030003, 0x00000000, 0x0012013E, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000003, 0x00000044, 0x00000001, D_802425D0_D5AE60, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000003, 0x0003000E, 0x00030003, 0x00000000, 0x0012013F, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000004, 0x00000044, 0x00000001, D_802425D0_D5AE60, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000004, 0x0003000E, 0x00030003, 0x00000000, 0x00120140, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x0003000E, 0x00030003, 0x00000000, 0x00120141, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x0003000E, 0x00030003, 0x00000000, 0x00120142, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A8680, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000003, 0x0003000E, 0x00030003, 0x00000000, 0x00120143, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000003, SetPlayerFlagBits, 0x000000C0, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000D, 0x00000002, 0xFE363C80, 0x000001EA, 0x00000024, 0x00000002, 0xFE363C89, 0x0000010E, 0x00000046, 0x00000001, D_80242BE8_D5B478, 0x00000013, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000BE, 0x00000024, 0x00000002, 0xFE363C89, 0x0000005A, 0x00000046, 0x00000001, D_80242BE8_D5B478, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000001, 0x0000000A, 0x00000002, 0xFD050F83, 0x00000001, 0x0000000A, 0x00000002, 0xFD050F84, 0x00000001, 0x0000000A, 0x00000002, 0xFD050F85, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000043, 0x00000003, GetAngleToNPC, 0xFFFFFFFC, 0xFE363C8A, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000E, 0x00000002, 0xFE363C8A, 0x000000B4, 0x00000027, 0x00000002, 0xFE363C80, 0x00000014, 0x00000012, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFEC, 0x00000013, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x00030005, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000100, 0x00000001, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFE363C80, 0xFE363C82, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x00030003, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0003000E, 0x00030003, 0x00000000, 0x0012014F, 0x00000043, 0x00000003, SetNpcJumpscale, 0xFFFFFFFC, 0xF24A7E80, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x0003000B, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000A, 0x00000043, 0x00000003, GetAngleToNPC, 0xFFFFFFFC, 0xFE363C8A, 0x0000000F, 0x00000002, 0xFE363C8A, 0x000000B4, 0x00000027, 0x00000002, 0xFE363C80, 0x00000014, 0x00000013, 0x00000000, 0x00000043, 0x0000000F, PlayEffect, 0x00000040, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000214, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x00030003, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000100, 0x00000000, 0x00000043, 0x00000003, SetPlayerFlagBits, 0x000000C0, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000050, 0x00000047, 0x00000005, D_8024196C_D5A1FC, 0x00080000, 0x0000000E, 0x00000001, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000014, 0x00000001, 0xFD050F80, 0x00000016, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A9280, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x0003000E, 0x0003000D, 0x00000000, 0x00120149, 0x00000046, 0x00000001, D_80242184_D5AA14, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002B, 0x00000046, 0x00000001, D_8024266C_D5AEFC, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, func_802413A4_D59C34, 0xFD050F82, 0xFD050F83, 0xFD050F84, 0xFD050F85, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000007, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A9280, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000005, 0x00000024, 0x00000002, 0xFE363C85, 0x0012014A, 0x00000046, 0x00000001, D_80242374_D5AC04, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F82, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A9280, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C84, 0x00000006, 0x00000024, 0x00000002, 0xFE363C85, 0x0012014B, 0x00000046, 0x00000001, D_80242374_D5AC04, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F83, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000016, 0x00000001, 0x00000004, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A9280, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000003, 0x00000024, 0x00000002, 0xFE363C84, 0x00000007, 0x00000024, 0x00000002, 0xFE363C85, 0x0012014C, 0x00000046, 0x00000001, D_80242374_D5AC04, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F84, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000016, 0x00000001, 0x00000005, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000026, 0x00000002, 0xFE363C8A, 0xF24A9280, 0x00000046, 0x00000001, D_802420B8_D5A948, 0x00000024, 0x00000002, 0xFE363C83, 0x00000004, 0x00000024, 0x00000002, 0xFE363C84, 0x00000008, 0x00000024, 0x00000002, 0xFE363C85, 0x0012014D, 0x00000046, 0x00000001, D_80242374_D5AC04, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F85, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000023, 0x00000000, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024432C_D5CBBC -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000102, 0x00000000, 0x00000043, 0x00000003, SetPlayerFlagBits, 0x000000C0, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000050, 0x00000047, 0x00000005, D_8024196C_D5A1FC, 0x00080000, 0x0000000E, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244424_D5CCB4 -.word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x0003000E, 0x00030003, 0x00000000, 0x00120144, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244454_D5CCE4 -.word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x0003000E, 0x00030003, 0x00000000, 0x00120145, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244484_D5CD14 -.word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x0003000E, 0x00030003, 0x00000000, 0x00120146, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802444B4_D5CD44 -.word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x0003000E, 0x00030003, 0x00000000, 0x00120147, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802444E4_D5CD74 -.word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x0003000E, 0x00030003, 0x00000000, 0x00120148, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244514_D5CDA4 -.word 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_8024432C_D5CBBC, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000102, 0x00000001, 0x00000044, 0x00000001, D_80243270_D5BB00, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024455C_D5CDEC -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80244424_D5CCB4, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000100, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802445B0_D5CE40 -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80244454_D5CCE4, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000100, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244604_D5CE94 -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80244484_D5CD14, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000100, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244658_D5CEE8 -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_802444B4_D5CD44, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000100, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802446AC_D5CF3C -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_802444E4_D5CD74, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000100, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244700_D5CF90 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10080100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244728_D5CFB8 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10080100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244750_D5CFE0 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10080100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80244778_D5D008 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10080100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802447A0_D5D030 -.word 0x00000000, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03D40D09, D_8024455C_D5CDEC, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03D40D09, D_802445B0_D5CE40, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03D40D09, D_80244604_D5CE94, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03D40D09, D_80244658_D5CEE8, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03D40D09, D_802446AC_D5CF3C, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245150_D5D9E0 -.word 0x00000005, D_80241D40_D5A5D0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40D01, D_80244700_D5CF90, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, D_80241D40_D5A5D0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40D01, D_80244728_D5CFB8, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000007, D_80241D40_D5A5D0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40D01, D_80244750_D5CFE0, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, D_80241D40_D5A5D0, 0x00000000, 0xC47A0000, 0x00000000, 0x00C40D01, D_80244778_D5D008, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, D_80241D40_D5A5D0, 0x00000000, 0xC47A0000, 0x00000000, 0x00E44D00, D_80244514_D5CDA4, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245B00_D5E390 -.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFD050F80, 0x00000001, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245B50_D5E3E0 -.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFD050F80, 0x00000002, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245BA0_D5E430 -.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFD050F80, 0x00000003, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245BF0_D5E480 -.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFD050F80, 0x00000004, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245C40_D5E4D0 -.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFD050F80, 0x00000005, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245C90_D5E520 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x0000000A, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245CF8_D5E588 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x0000000B, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245D60_D5E5F0 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x0000000C, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245DC8_D5E658 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x0000000D, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245E30_D5E6C0 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x0000000E, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245E98_D5E728 -.word 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80245B00_D5E390, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80245C90_D5E520, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245EE8_D5E778 -.word 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80245B50_D5E3E0, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80245CF8_D5E588, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245F38_D5E7C8 -.word 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80245BA0_D5E430, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80245D60_D5E5F0, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245F88_D5E818 -.word 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80245BF0_D5E480, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80245DC8_D5E658, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80245FD8_D5E868 -.word 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80245C40_D5E4D0, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80245E30_D5E6C0, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000100, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80246028_D5E8B8 -.word 0x0000000A, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03F44D08, D_80245E98_D5E728, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000B, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03F44D08, D_80245EE8_D5E778, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000C, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03F44D08, D_80245F38_D5E7C8, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000D, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03F44D08, D_80245F88_D5E818, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, D_80241D6C_D5A5FC, 0x00000000, 0xC47A0000, 0x00000000, 0x03F44D08, D_80245FD8_D5E868, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_802469D8_D5F268 -.word 0x00000005, D_802447A0_D5D030, 0x21010001, 0x00000005, D_80245150_D5D9E0, 0x21010001, 0x00000005, D_80246028_D5E8B8, 0x21010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_13/D65BC0.data.s b/ver/us/asm/data/world/area_pra/pra_13/D65BC0.data.s deleted file mode 100644 index ad81408a19..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_13/D65BC0.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802415E0_D65BC0 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x43F38000, 0x00000000, 0x428C0000, 0x43870000, 0x43F38000, 0x00000000, 0xC28C0000, 0x43870000, 0x41500000, 0x00000000, 0xC28C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80242040, D_802415E0_D65BC0, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190140, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_13/D65C70.data.s b/ver/us/asm/data/world/area_pra/pra_13/D65C70.data.s deleted file mode 100644 index 90c5347cd0..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_13/D65C70.data.s +++ /dev/null @@ -1,60 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241690_D65C70 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802417A0_D65D80 -.word 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_13_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_13_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_13_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_13_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241848_D65E28 -.word 0x00000043, 0x00000003, SetTexPanner, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C81, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000001, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0xFE363C82, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000BB8, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000000, 0x00000008, 0x00000001, 0x000000A0, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024194C_D65F2C -.word 0x0000001D, 0x0000001E, 0xFFFFFFFF - -dlabel D_80241958_D65F38 -.word 0x0000001A, 0x0000001B, 0xFFFFFFFF - -dlabel D_80241964_D65F44 -.word 0x00000051, 0x00000052, 0xFFFFFFFF - -dlabel D_80241970_D65F50 -.word 0x00000054, 0x00000055, 0xFFFFFFFF - -dlabel D_8024197C_D65F5C -.word 0x0000001D, 0x0000001E, 0x00000051, 0x00000052, 0xFFFFFFFF - -dlabel D_80241990_D65F70 -.word 0x0000001A, 0x0000001B, 0x00000054, 0x00000055, 0xFFFFFFFF - -dlabel D_802419A4_D65F84 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, UseDoorSounds, 0x00000003, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000014, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024197C_D65F5C, 0x00000024, 0x00000002, 0xFE363C83, D_80241990_D65F70, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024194C_D65F2C, 0x00000024, 0x00000002, 0xFE363C83, D_80241958_D65F38, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243710, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A98_D66078 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000001, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x80243718, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241B04_D660E4 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000002, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x80243718, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241B70_D66150 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, UseDoorSounds, 0x00000003, 0x00000024, 0x00000002, 0xFE363C80, 0x00000003, 0x00000024, 0x00000002, 0xFE363C81, 0x00000018, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024197C_D65F5C, 0x00000024, 0x00000002, 0xFE363C83, D_80241990_D65F70, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241964_D65F44, 0x00000024, 0x00000002, 0xFE363C83, D_80241970_D65F50, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243710, 0x00000003, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241C64_D66244 -.word 0x00000047, 0x00000005, D_802419A4_D65F84, 0x00000100, 0x00000014, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241A98_D66078, 0x00080000, 0x0000001A, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241B04_D660E4, 0x00080000, 0x0000001C, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241B70_D66150, 0x00000100, 0x00000018, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241CE4_D662C4 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000002, UseDoorSounds, 0x00000003, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024197C_D65F5C, 0x00000024, 0x00000002, 0xFE363C83, D_80241990_D65F70, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024194C_D65F2C, 0x00000024, 0x00000002, 0xFE363C83, D_80241958_D65F38, 0x00000013, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80241C64_D66244, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, D_80241C64_D66244, 0x00000044, 0x00000001, EnterWalk, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, D_80241C64_D66244, 0x00000044, 0x00000001, EnterWalk, 0x00000016, 0x00000001, 0x00000003, 0x00000043, 0x00000002, UseDoorSounds, 0x00000003, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024197C_D65F5C, 0x00000024, 0x00000002, 0xFE363C83, D_80241990_D65F70, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241964_D65F44, 0x00000024, 0x00000002, 0xFE363C83, D_80241970_D65F50, 0x00000013, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80241C64_D66244, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241E90_D66470 -.word 0x43F38000, 0x00000000, 0x42A00000, 0x00000000 - -dlabel D_80241EA0_D66480 -.word 0x43F38000, 0x00000000, 0xC2A00000, 0x00000000 - -dlabel D_80241EB0_D66490 -.word 0x00000043, 0x0000000F, PlayEffect, 0x00000042, 0x00000000, 0x00000032, 0x00000022, 0x00000001, 0x0000000A, 0x0000001E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000032, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000035, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000037, 0x00000001, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000025, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF840615E, 0x00000001, 0x00000024, 0x00000002, 0xF8406152, 0x00000001, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241F80_D66560 -.word 0x00000043, 0x0000000F, PlayEffect, 0x00000042, 0x00000000, 0x00000041, 0x00000022, 0x00000001, 0x0000000A, 0x0000001E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000041, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000044, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000046, 0x00000001, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000027, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF840615F, 0x00000001, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, 0x802436EC, 0x00000024, 0x00000002, 0xFE363C80, 0x00000058, 0x00000024, 0x00000002, 0xFE363C81, 0x00000059, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000044, 0x00000001, D_80241848_D65E28, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0xF8406152, 0x00000044, 0x00000001, D_802417A0_D65D80, 0x00000044, 0x00000001, D_80241CE4_D662C4, 0x00000008, 0x00000001, 0x00000001, 0x00000044, 0x00000001, 0x80241660, 0x0000000A, 0x00000002, 0xF840615E, 0x00000000, 0x00000047, 0x00000005, D_80241EB0_D66490, 0x00100000, D_80241E90_D66470, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000037, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000032, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000035, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000025, 0x7FFFFE00, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF840615F, 0x00000000, 0x00000047, 0x00000005, D_80241F80_D66560, 0x00100000, D_80241EA0_D66480, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000046, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000041, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000044, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000027, 0x7FFFFE00, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_13/D66880.data.s b/ver/us/asm/data/world/area_pra/pra_13/D66880.data.s deleted file mode 100644 index cd91e39ead..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_13/D66880.data.s +++ /dev/null @@ -1,45 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802422A0_D66880 -.word 0x00000000, 0x001E002D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000 - -dlabel pra_13_ItemChoice_HasSelectedItem -.word 0x00000000 - -dlabel pra_13_ItemChoice_SelectedItemID -.word 0x00000000 - -dlabel D_802422D4_D668B4 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowKeyChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_13_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000042, 0x00000002, 0xFE363C80, 0x00050000, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_13_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_802411D8_D657B8, 0xFE363C80, 0x0000004E, 0x00000006, D_802422D4_D668B4, 0x00000010, 0x00000000, D_80243720, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_13_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242468_D66A48 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowConsumableChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_13_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_13_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80241274_D65854, 0xFE363C80, 0x0000004E, 0x00000006, D_80242468_D66A48, 0x00000010, 0x00000000, pra_13_802438E8, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_13_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802425EC_D66BCC -.word 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00000B40, 0x00000028, 0x00000004, 0x00000003, 0x00000001, 0x00000001, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcRotation, 0xFE363C84, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000004, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024267C_D66C5C -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000002, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcYaw, 0x00000000, 0x0000005A, 0x00000056, 0x00000000, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8280, 0x00000043, 0x00000004, PlayerMoveTo, 0x000001B8, 0xFFFFFFBA, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000009, SetCamProperties, 0x00000000, 0xF24A8E80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xF24FF280, 0xF24AAA80, 0xF24A5E80, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x0001002B, 0x0001002B, 0x00000000, 0x00120139, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x0003000E, 0x00030003, 0x00000000, 0x0012013A, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A9280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, pra_13_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x000002CD, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000100, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000002, 0x00000043, 0x00000003, SetNpcYaw, 0x00000002, 0x0000005A, 0x00000046, 0x00000001, D_802425EC_D66BCC, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x004E0004, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000100, 0x00000001, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0x000001AE, 0xFFFFFFBA, 0x0000000F, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, pra_13_PlayBigSmokePuff, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000185, 0x00000000, 0xFFFFFFC3, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0x000002CD, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x01000100, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000100, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000003, 0x00000043, 0x00000003, SetNpcYaw, 0x00000003, 0x0000005A, 0x00000046, 0x00000001, D_802425EC_D66BCC, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x004E0004, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000100, 0x00000001, 0x00000043, 0x00000005, NpcMoveTo, 0x00000003, 0x000001A4, 0xFFFFFFBA, 0x0000000F, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000023, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242A70_D67050 -.word 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000190, 0x00000000, 0xFFFFFFBA, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000172, 0x00000000, 0xFFFFFFBA, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x004E0002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x004E0002, 0x0000004D, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetTimeFreezeMode, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x004E0005, 0x004E0002, 0x00000000, 0x0012013B, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0x0000010E, 0x00000000, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000003, 0x0000010E, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000056, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x000002CB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x004E0004, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0x00000000, 0xFFFFFFBA, 0x0000002D, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0x000002CB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x004E0004, 0x00000043, 0x00000005, NpcMoveTo, 0x00000003, 0xFFFFFFE2, 0xFFFFFFBA, 0x0000002D, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFFFFFFE2, 0xFFFFFC18, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000002, SetTimeFreezeMode, 0x00000000, 0x0000004D, 0x00000001, 0x0000000B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242CA0_D67280 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00010002, 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000002, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000177, 0x00000000, 0xFFFFFFC5, 0x00000013, 0x00000000, 0x00000012, 0x00000000, 0x0000000A, 0x00000002, 0xF8406152, 0x00000001, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x000001D1, 0x00000000, 0xFFFFFFC5, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFF, 0x0000010E, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242DA4_D67384 -.word 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_8024267C_D66C5C, 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_80242A70_D67050, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000002, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000159, 0x00000000, 0xFFFFFFC5, 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x00000043, 0x00000001, func_802413D0_D659B0, 0x00000013, 0x00000000, 0x00000012, 0x00000000, 0x0000000A, 0x00000002, 0xF8406152, 0x00000001, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000004F, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x000001B3, 0x00000000, 0xFFFFFFC5, 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x00000043, 0x00000001, func_802413D0_D659B0, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242EDC_D674BC -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242F04_D674E4 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242F2C_D6750C -.word 0x00000000, D_802422A0_D66880, 0x00000000, 0xC47A0000, 0x00000000, 0x00604D0D, D_80242CA0_D67280, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_8024311C_D676FC -.word 0x00000001, D_802422A0_D66880, 0x00000000, 0xC47A0000, 0x00000000, 0x00E40D0C, D_80242DA4_D67384, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030003, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_802422A0_D66880, 0x00000000, 0xC47A0000, 0x00000000, 0x00E40D09, D_80242EDC_D674BC, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, D_802422A0_D66880, 0x00000000, 0xC47A0000, 0x00000000, 0x00E40D09, D_80242F04_D674E4, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, D_80242F2C_D6750C, 0x21020001, 0x00000003, D_8024311C_D676FC, 0x21020001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_18/D6C540.data.s b/ver/us/asm/data/world/area_pra/pra_18/D6C540.data.s deleted file mode 100644 index ac539fdc74..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_18/D6C540.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240F20_D6C540 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x44384000, 0x00000000, 0xC28C0000, 0x43870000, 0x41500000, 0x00000000, 0xC28C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80241714, D_80240F20_D6C540, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190144, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_18/D6C5F0.data.s b/ver/us/asm/data/world/area_pra/pra_18/D6C5F0.data.s deleted file mode 100644 index 2cf1c80ac8..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_18/D6C5F0.data.s +++ /dev/null @@ -1,45 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240FD0_D6C5F0 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_18_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_18_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_18_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_18_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C81, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000001, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0xFE363C82, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000BB8, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000000, 0x00000008, 0x00000001, 0x000000A0, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024128C_D6C8AC -.word 0x0000004B, 0xFFFFFFFF - -dlabel D_80241294_D6C8B4 -.word 0x00000049, 0xFFFFFFFF - -dlabel D_8024129C_D6C8BC -.word 0x0000004D, 0xFFFFFFFF - -dlabel D_802412A4_D6C8C4 -.word 0x0000004F, 0xFFFFFFFF - -dlabel D_802412AC_D6C8CC -.word 0x0000004B, 0x0000004D, 0xFFFFFFFF - -dlabel D_802412B8_D6C8D8 -.word 0x00000049, 0x0000004F, 0xFFFFFFFF - -dlabel D_802412C4_D6C8E4 -.word 0x00000052, 0x00000053, 0xFFFFFFFF - -dlabel D_802412D0_D6C8F0 -.word 0x00000055, 0x00000056, 0xFFFFFFFF - -dlabel D_802412DC_D6C8FC -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001B, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802412AC_D6C8CC, 0x00000024, 0x00000002, 0xFE363C83, D_802412B8_D6C8D8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024128C_D6C8AC, 0x00000024, 0x00000002, 0xFE363C83, D_80241294_D6C8B4, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243380, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802413C0_D6C9E0 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x00000023, 0x00000024, 0x00000002, 0xFE363C82, D_802412C4_D6C8E4, 0x00000024, 0x00000002, 0xFE363C83, D_802412D0_D6C8F0, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243388, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241464_D6CA84 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001F, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802412AC_D6C8CC, 0x00000024, 0x00000002, 0xFE363C83, D_802412B8_D6C8D8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024129C_D6C8BC, 0x00000024, 0x00000002, 0xFE363C83, D_802412A4_D6C8C4, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243380, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241548_D6CB68 -.word 0x00000047, 0x00000005, D_802412DC_D6C8FC, 0x00000100, 0x0000001B, 0x00000001, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000047, 0x00000005, D_802413C0_D6C9E0, 0x00000100, 0x00000023, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000047, 0x00000005, D_80241464_D6CA84, 0x00000100, 0x0000001F, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802415C4_D6CBE4 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802412AC_D6C8CC, 0x00000024, 0x00000002, 0xFE363C83, D_802412B8_D6C8D8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024128C_D6C8AC, 0x00000024, 0x00000002, 0xFE363C83, D_80241294_D6C8B4, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C82, D_802412C4_D6C8E4, 0x00000024, 0x00000002, 0xFE363C83, D_802412D0_D6C8F0, 0x00000016, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802412AC_D6C8CC, 0x00000024, 0x00000002, 0xFE363C83, D_802412B8_D6C8D8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024129C_D6C8BC, 0x00000024, 0x00000002, 0xFE363C83, D_802412A4_D6C8C4, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80241548_D6CB68, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, 0x80243350, 0x00000044, 0x00000001, 0x80240F90, 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000027, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000047, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000028, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000003E, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000029, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000042, 0x00000000, 0x00000012, 0x00000000, 0x00000014, 0x00000001, 0xF5DE029C, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000029, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000042, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000028, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000003E, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000029, 0x7FFFFE00, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000042, 0x00000000, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000044, 0x00000001, D_802415C4_D6CBE4, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_18/D6CF60.data.s b/ver/us/asm/data/world/area_pra/pra_18/D6CF60.data.s deleted file mode 100644 index b66e027e0e..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_18/D6CF60.data.s +++ /dev/null @@ -1,81 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241940_D6CF60 -.word 0x00000000, 0x0046003C, 0x00000000, 0x00000000, 0x00000000, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00630000 - -dlabel D_8024196C_D6CF8C -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241990_D6CFB0 -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419B4_D6CFD4 -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419D8_D6CFF8 -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419FC_D6D01C -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A20_D6D040 -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A44_D6D064 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A54_D6D074 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A64_D6D084 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A74_D6D094 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000005, IsPlayerWithin, 0xFE363C83, 0xFE363C85, 0x00000050, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00390105, 0x00390102, 0x00000000, 0x00120150, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241B98_D6D1B8 -.word 0x00000005, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000005, IsPlayerWithin, 0xFE363C83, 0xFE363C85, 0x00000050, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00390105, 0x00390102, 0x00000000, 0x00120151, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241CBC_D6D2DC -.word 0x00000005, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000005, IsPlayerWithin, 0xFE363C83, 0xFE363C85, 0x00000050, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00390105, 0x00390102, 0x00000000, 0x00120152, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241DF4_D6D414 -.word 0x00000008, 0x00000001, 0x00000014, 0x00000005, 0x00000001, 0x00000004, 0x00000024, 0x00000002, 0xFE363C80, 0xFE363C8A, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C8B, 0x00000024, 0x00000002, 0xFE363C82, 0xFE363C8C, 0x00000043, 0x00000003, RandInt, 0x00000032, 0xFE363C83, 0x00000043, 0x00000003, RandInt, 0x00000032, 0xFE363C84, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFF1, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C84, 0x00000043, 0x0000000F, PlayEffect, 0x00000043, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xF24A7DB4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0xB0000018, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, 0xFE363C8A, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C8B, 0x00000024, 0x00000002, 0xFE363C82, 0xFE363C8C, 0x00000043, 0x00000003, RandInt, 0x00000032, 0xFE363C83, 0x00000043, 0x00000003, RandInt, 0x00000032, 0xFE363C84, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFF1, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C84, 0x00000043, 0x0000000F, PlayEffect, 0x00000043, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xF24A7DB4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0xB0000018, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000008, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242014_D6D634 -.word 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000008, 0x00000001, 0x00000032, 0x00000005, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000042, 0x00000001, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000042, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000029, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF5DE029C, 0x00000001, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000010E, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000014, 0x00000024, 0x00000002, 0xFE363C8C, 0xFFFFFFB5, 0x00000044, 0x00000001, D_80241DF4_D6D414, 0x00000057, 0x00000000, 0x00000043, 0x00000001, DoNpcDefeat, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242140_D6D760 -.word 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000008, 0x00000001, 0x00000032, 0x00000005, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000003E, 0x00000001, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000003E, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000028, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF5DE029C, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000024, 0x00000002, 0xFE363C8A, 0x000001E0, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000014, 0x00000024, 0x00000002, 0xFE363C8C, 0xFFFFFFB5, 0x00000044, 0x00000001, D_80241DF4_D6D414, 0x00000057, 0x00000000, 0x00000043, 0x00000001, DoNpcDefeat, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024226C_D6D88C -.word 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000008, 0x00000001, 0x00000032, 0x00000005, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000047, 0x00000001, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000047, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000027, 0x7FFFFE00, 0x00000047, 0x00000005, D_802413C0_D6C9E0, 0x00000100, 0x00000023, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000024, 0x00000002, 0xFE363C8A, 0x000002D5, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000014, 0x00000024, 0x00000002, 0xFE363C8C, 0xFFFFFFB5, 0x00000044, 0x00000001, D_80241DF4_D6D414, 0x00000057, 0x00000000, 0x00000043, 0x00000001, DoNpcDefeat, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802423B4_D6D9D4 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE029C, 0x00000001, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_8024196C_D6CF8C, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80241A74_D6D094, 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_80242014_D6D634, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_802419D8_D6CFF8, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024248C_D6DAAC -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE029C, 0x00000002, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80241990_D6CFB0, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80241B98_D6D1B8, 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_80242140_D6D760, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_802419FC_D6D01C, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242564_D6DB84 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_802419B4_D6CFD4, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80241CBC_D6D2DC, 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_8024226C_D6D88C, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80241A20_D6D040, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024260C_D6DC2C -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE029C, 0x00000001, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80241A44_D6D064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802426A8_D6DCC8 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE029C, 0x00000002, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80241A54_D6D074, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242744_D6DD64 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000051, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000000, 0x00000001, 0x00000043, 0x00000003, BindNpcHit, 0xFFFFFFFF, D_80241A64_D6D084, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802427B0_D6DDD0 -.word 0x00000000, D_80241940_D6CF60, 0x43860000, 0x00000000, 0x428C0000, 0x00500D00, D_802423B4_D6D9D4, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, D_80241940_D6CF60, 0x43860000, 0x00000000, 0x428C0000, 0x00404D00, D_8024260C_D6DC2C, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80242B90_D6E1B0 -.word 0x00000001, D_80241940_D6CF60, 0x43F50000, 0x00000000, 0x428C0000, 0x00500D00, D_8024248C_D6DAAC, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, D_80241940_D6CF60, 0x43F50000, 0x00000000, 0x428C0000, 0x00404D00, D_802426A8_D6DCC8, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80242F70_D6E590 -.word 0x00000002, D_80241940_D6CF60, 0x44334000, 0x00000000, 0x428C0000, 0x00500D00, D_80242564_D6DB84, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005, D_80241940_D6CF60, 0x44334000, 0x00000000, 0x428C0000, 0x00404D00, D_80242744_D6DD64, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_802427B0_D6DDD0, 0x1F0B0003, 0x00000002, D_80242B90_D6E1B0, 0x1F090003, 0x00000002, D_80242F70_D6E590, 0x1F0C0004, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_29/D7DDD0.data.s b/ver/us/asm/data/world/area_pra/pra_29/D7DDD0.data.s deleted file mode 100644 index b81f5e9f07..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_29/D7DDD0.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241280_D7DDD0 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x43F38000, 0x00000000, 0x428C0000, 0x43870000, 0x43F38000, 0x00000000, 0xC28C0000, 0x43870000, 0x41500000, 0x00000000, 0xC28C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80241D08, D_80241280_D7DDD0, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0019014B, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_29/D7DE90.data.s b/ver/us/asm/data/world/area_pra/pra_29/D7DE90.data.s deleted file mode 100644 index 0691ed1ef9..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_29/D7DE90.data.s +++ /dev/null @@ -1,66 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241340_D7DE90 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000053, 0x00000012, 0x00000000, 0x00000043, 0x00000008, MakeEntity, Entity_BlueSwitch, 0x0000014A, 0x00000000, 0xFFFFFFB3, 0x00000000, 0x00000002, 0x80000000, 0x00000043, 0x00000008, MakeEntity, Entity_BlueSwitch, 0x0000014A, 0x00000000, 0x0000004D, 0x00000000, 0x00000001, 0x80000000, 0x00000043, 0x00000002, AssignSwitchFlag, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802414E0_D7E030 -.word 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_29_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_29_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_29_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_29_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241588_D7E0D8 -.word 0x00000043, 0x00000003, SetTexPanner, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C81, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000001, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0xFE363C82, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000BB8, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000000, 0x00000008, 0x00000001, 0x000000A0, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024168C_D7E1DC -.word 0x0000000D, 0xFFFFFFFF - -dlabel D_80241694_D7E1E4 -.word 0x0000000B, 0xFFFFFFFF - -dlabel D_8024169C_D7E1EC -.word 0x0000000F, 0xFFFFFFFF - -dlabel D_802416A4_D7E1F4 -.word 0x00000011, 0xFFFFFFFF - -dlabel D_802416AC_D7E1FC -.word 0x0000000D, 0x0000000F, 0xFFFFFFFF - -dlabel D_802416B8_D7E208 -.word 0x0000000B, 0x00000011, 0xFFFFFFFF - -dlabel D_802416C4_D7E214 -.word 0x0000001B, 0xFFFFFFFF - -dlabel D_802416CC_D7E21C -.word 0x0000001D, 0xFFFFFFFF - -dlabel D_802416D4_D7E224 -.word 0x00000021, 0xFFFFFFFF - -dlabel D_802416DC_D7E22C -.word 0x0000001F, 0xFFFFFFFF - -dlabel D_802416E4_D7E234 -.word 0x0000001B, 0x00000021, 0xFFFFFFFF - -dlabel D_802416F0_D7E240 -.word 0x0000001D, 0x0000001F, 0xFFFFFFFF - -dlabel D_802416FC_D7E24C -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000013, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416AC_D7E1FC, 0x00000024, 0x00000002, 0xFE363C83, D_802416B8_D7E208, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024168C_D7E1DC, 0x00000024, 0x00000002, 0xFE363C83, D_80241694_D7E1E4, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80242200, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802417E0_D7E330 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001B, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416E4_D7E234, 0x00000024, 0x00000002, 0xFE363C83, D_802416F0_D7E240, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416C4_D7E214, 0x00000024, 0x00000002, 0xFE363C83, D_802416CC_D7E21C, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80242208, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802418C4_D7E414 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001F, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416E4_D7E234, 0x00000024, 0x00000002, 0xFE363C83, D_802416F0_D7E240, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416D4_D7E224, 0x00000024, 0x00000002, 0xFE363C83, D_802416DC_D7E22C, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80242208, 0x00000003, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419A8_D7E4F8 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000003, 0x00000024, 0x00000002, 0xFE363C81, 0x00000017, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416AC_D7E1FC, 0x00000024, 0x00000002, 0xFE363C83, D_802416B8_D7E208, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024169C_D7E1EC, 0x00000024, 0x00000002, 0xFE363C83, D_802416A4_D7E1F4, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80242200, 0x00000003, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A8C_D7E5DC -.word 0x00000047, 0x00000005, D_802416FC_D7E24C, 0x00000100, 0x00000013, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802417E0_D7E330, 0x00000100, 0x0000001B, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802418C4_D7E414, 0x00000100, 0x0000001F, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802419A8_D7E4F8, 0x00000100, 0x00000017, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241B0C_D7E65C -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416AC_D7E1FC, 0x00000024, 0x00000002, 0xFE363C83, D_802416B8_D7E208, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024168C_D7E1DC, 0x00000024, 0x00000002, 0xFE363C83, D_80241694_D7E1E4, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416E4_D7E234, 0x00000024, 0x00000002, 0xFE363C83, D_802416F0_D7E240, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416C4_D7E214, 0x00000024, 0x00000002, 0xFE363C83, D_802416CC_D7E21C, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416E4_D7E234, 0x00000024, 0x00000002, 0xFE363C83, D_802416F0_D7E240, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416D4_D7E224, 0x00000024, 0x00000002, 0xFE363C83, D_802416DC_D7E22C, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802416AC_D7E1FC, 0x00000024, 0x00000002, 0xFE363C83, D_802416B8_D7E208, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024169C_D7E1EC, 0x00000024, 0x00000002, 0xFE363C83, D_802416A4_D7E1F4, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80241A8C_D7E5DC, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000046, 0x00000001, D_80241340_D7DE90, 0x00000044, 0x00000001, 0x80241300, 0x00000044, 0x00000001, 0x80241F8C, 0x00000024, 0x00000002, 0xFE363C80, 0x00000031, 0x00000024, 0x00000002, 0xFE363C81, 0x00000031, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000044, 0x00000001, D_80241588_D7E0D8, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000053, 0x00000024, 0x00000002, 0xFE363C81, 0x00000001, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000013, 0x00000000, 0x00000044, 0x00000001, D_802414E0_D7E030, 0x00000044, 0x00000001, D_80241B0C_D7E65C, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_29/D7E9B0.data.s b/ver/us/asm/data/world/area_pra/pra_29/D7E9B0.data.s deleted file mode 100644 index 487dca4072..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_29/D7E9B0.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241E60_D7E9B0 -.word 0x00000008, 0x00000001, 0x00000028, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x00000005, 0x00000043, 0x00000004, pra_29_PlayRisingBubble, 0x00000104, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000006, PlaySoundAt, 0x0000002F, 0x00000000, 0x000000FA, 0x00000000, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x000001FF, 0x00000050, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000024, 0x00000002, 0xFD050F80, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x0000002D, 0x7FFFFE00, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000053, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0x00000053, 0x00000043, 0x00000003, EnableModel, 0x00000033, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000038, 0x00000000, 0x00000024, 0x00000002, 0xFD050F80, 0x00000000, 0x00000024, 0x00000002, 0xFD050F81, 0x000000FF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x00000035, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelCustomGfx, 0x0000003A, 0x00000001, 0xFFFFFFFF, 0x00000043, 0x00000004, SetModelFlags, 0x00000035, 0x00000010, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000003A, 0x00000010, 0x00000000, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000000, func_802410B0_D7DC00, 0x00000000, 0x00000043, 0x00000004, SetCustomGfxBuilders, 0x00000001, func_802410B0_D7DC00, 0x00000000, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000000, 0x00000035, 0x00000001, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000001, 0x00000034, 0x00000000, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000002, 0x00000036, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x00000035, 0x00000090, 0x00000001, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000003, 0x0000003A, 0x00000001, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000004, 0x00000039, 0x00000000, 0x00000043, 0x00000004, MakeLocalVertexCopy, 0x00000005, 0x0000003B, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000003A, 0x00000090, 0x00000001, 0x00000047, 0x00000005, D_80241E60_D7E9B0, 0x00020000, 0xF9718882, 0x00000001, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x0000002D, 0x7FFFFE00, 0x00000043, 0x00000003, EnableModel, 0x00000033, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000034, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000035, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000038, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000039, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000003A, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_31/D7FE10.data.s b/ver/us/asm/data/world/area_pra/pra_31/D7FE10.data.s deleted file mode 100644 index 2058bc188f..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_31/D7FE10.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802410B0_D7FE10 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x43F38000, 0x42480000, 0x41500000, 0x43870000, 0x41500000, 0x00000000, 0xC28C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80242410, D_802410B0_D7FE10, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0019014C, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_31/D7FEC0.data.s b/ver/us/asm/data/world/area_pra/pra_31/D7FEC0.data.s deleted file mode 100644 index 336d042526..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_31/D7FEC0.data.s +++ /dev/null @@ -1,45 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241160_D7FEC0 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241170_D7FED0 -.word 0x00000000, 0x00460032, D_80241160_D7FEC0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00630000 - -dlabel pra_31_ItemChoice_HasSelectedItem -.word 0x00000000 - -dlabel pra_31_ItemChoice_SelectedItemID -.word 0x00000000 - -dlabel D_802411A4_D7FF04 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowKeyChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_31_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000042, 0x00000002, 0xFE363C80, 0x00050000, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_31_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_802402D8_D7F038, 0xFE363C80, 0x0000004E, 0x00000006, D_802411A4_D7FF04, 0x00000010, 0x00000000, D_80247CA0, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_31_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241338_D80098 -.word 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C81, 0x00000043, 0x00000001, ShowConsumableChoicePopup, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, RemoveItemAt, 0xFE363C81, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000004, pra_31_AddPlayerHandsOffset, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000007, MakeItemEntity, 0xFE363C80, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, RemoveItemEntity, 0xFE363C80, 0x00000023, 0x00000000, 0x00000043, 0x00000002, pra_31_ItemChoice_SaveSelected, 0xFE363C8A, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240374_D7F0D4, 0xFE363C80, 0x0000004E, 0x00000006, D_80241338_D80098, 0x00000010, 0x00000000, D_80247E68, 0x00000000, 0x00000001, 0x00000043, 0x00000002, pra_31_ItemChoice_WaitForSelection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802414BC_D8021C -.word 0x00000043, 0x00000001, func_80240410_D7F170, 0x00000014, 0x00000001, 0xFE363C80, 0x00000021, 0x00000002, 0x0000002D, 0x00000086, 0x00000024, 0x00000002, 0xFE363C85, 0x0000005A, 0x00000024, 0x00000002, 0xFE363C86, 0x004F0000, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000005A, 0x00000021, 0x00000002, 0x00000087, 0x000000E0, 0x00000024, 0x00000002, 0xFE363C85, 0x000000B4, 0x00000024, 0x00000002, 0xFE363C86, 0x004F0001, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000010E, 0x00000021, 0x00000002, 0x000000E1, 0x0000013A, 0x00000024, 0x00000002, 0xFE363C85, 0x0000010E, 0x00000024, 0x00000002, 0xFE363C86, 0x004F0000, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000010E, 0x0000001C, 0x00000000, 0x00000024, 0x00000002, 0xFE363C85, 0x00000000, 0x00000024, 0x00000002, 0xFE363C86, 0x004F0002, 0x00000024, 0x00000002, 0xFE363C8A, 0x0000010E, 0x00000023, 0x00000000, 0x00000014, 0x00000001, 0xFE363C83, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0xFD050F83, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0xFD050F84, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, 0xFD050F85, 0x00000023, 0x00000000, 0x0000000B, 0x00000002, 0xFE363C85, 0xFE363C80, 0x00000056, 0x00000000, 0x00000043, 0x00000001, func_80240468_D7F1C8, 0x00000043, 0x00000005, MakeLerp, 0xFE363C86, 0xFE363C87, 0xFE363C88, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000014, 0x00000001, 0xFE363C83, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFD050F86, 0xFE363C80, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFD050F87, 0xFE363C80, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFD050F88, 0xFE363C80, 0x00000023, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFF, 0x000001ED, 0x00000000, 0x00000014, 0x00000001, 0xFE363C85, 0x0000001D, 0x00000001, 0x0000005A, 0x0000001D, 0x00000001, 0x0000010E, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x0000021C, 0x0000001E, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcYaw, 0xFFFFFFFF, 0xFE363C8A, 0x0000001C, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000003, SetNpcYaw, 0xFFFFFFFF, 0xFE363C8A, 0x00000057, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00000168, 0x00000014, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0xFE363C86, 0x00000014, 0x00000001, 0xFE363C83, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFD050F83, 0xFE363C85, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFD050F84, 0xFE363C85, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFD050F85, 0xFE363C85, 0x00000023, 0x00000000, 0x00000043, 0x00000003, func_80240818_D7F578, 0xFE363C83, 0xFE363C85, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0xFE363C86, 0xFE363C86, 0x00000005, 0xFE363C84, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419B4_D80714 -.word 0x00000024, 0x00000002, 0xFE363C83, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0x00120167, 0x00000046, 0x00000001, D_802414BC_D8021C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802419F0_D80750 -.word 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00120168, 0x00000046, 0x00000001, D_802414BC_D8021C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A2C_D8078C -.word 0x00000024, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C84, 0x00120169, 0x00000046, 0x00000001, D_802414BC_D8021C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A68_D807C8 -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_802419B4_D80714, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A8C_D807EC -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_802419F0_D80750, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241AB0_D80810 -.word 0x00000043, 0x00000003, BindNpcInteract, 0xFFFFFFFF, D_80241A2C_D8078C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241AD4_D80834 -.word 0x00000000, D_80241170_D7FED0, 0x433E0000, 0xC1200000, 0x43250000, 0x00400D09, D_80241A68_D807C8, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0003, 0x004F0003, 0x004F0003, 0x004F0000, 0x00000000, 0x00000000, 0x00000000, 0x001A010B, 0x00000001, D_80241170_D7FED0, 0x43960000, 0xC1200000, 0x42B20000, 0x00400D09, D_80241A8C_D807EC, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0003, 0x004F0003, 0x004F0003, 0x004F0000, 0x00000000, 0x00000000, 0x00000000, 0x001A010B, 0x00000002, D_80241170_D7FED0, 0x43E20000, 0xC1200000, 0x430B0000, 0x00400D09, D_80241AB0_D80810, 0x00000000, 0x00000000, 0x0000010E, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0000, 0x004F0003, 0x004F0003, 0x004F0003, 0x004F0000, 0x00000000, 0x00000000, 0x00000000, 0x001A010B, 0x00000003, D_80241AD4_D80834, 0x21010002, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_31/D80E20.data.s b/ver/us/asm/data/world/area_pra/pra_31/D80E20.data.s deleted file mode 100644 index ed1f6a3f43..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_31/D80E20.data.s +++ /dev/null @@ -1,36 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802420C0_D80E20 -.word 0x00000028, 0xFFFFFFFF - -dlabel D_802420C8_D80E28 -.word 0x00000026, 0xFFFFFFFF - -dlabel D_802420D0_D80E30 -.word 0x0000002F, 0xFFFFFFFF - -dlabel D_802420D8_D80E38 -.word 0x00000031, 0xFFFFFFFF - -dlabel D_802420E0_D80E40 -.word 0x0000002A, 0xFFFFFFFF - -dlabel D_802420E8_D80E48 -.word 0x0000002C, 0xFFFFFFFF - -dlabel D_802420F0_D80E50 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x0000000D, 0x00000024, 0x00000002, 0xFE363C82, D_802420C0_D80E20, 0x00000024, 0x00000002, 0xFE363C83, D_802420C8_D80E28, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80247C80, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242194_D80EF4 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x00000015, 0x00000024, 0x00000002, 0xFE363C82, D_802420D0_D80E30, 0x00000024, 0x00000002, 0xFE363C83, D_802420D8_D80E38, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80247C88, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242238_D80F98 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x00000011, 0x00000024, 0x00000002, 0xFE363C82, D_802420E0_D80E40, 0x00000024, 0x00000002, 0xFE363C83, D_802420E8_D80E48, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80247C80, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802422DC_D8103C -.word 0x00000047, 0x00000005, D_802420F0_D80E50, 0x00000100, 0x0000000D, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80242194_D80EF4, 0x00000100, 0x00000015, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80242238_D80F98, 0x00000100, 0x00000011, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242340_D810A0 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802420C0_D80E20, 0x00000024, 0x00000002, 0xFE363C83, D_802420C8_D80E28, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C82, D_802420D0_D80E30, 0x00000024, 0x00000002, 0xFE363C83, D_802420D8_D80E38, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C82, D_802420E0_D80E40, 0x00000024, 0x00000002, 0xFE363C83, D_802420E8_D80E48, 0x00000023, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_802422DC_D8103C, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, 0x802420A4, 0x00000046, 0x00000001, 0x8024321C, 0x00000044, 0x00000001, 0x80241120, 0x00000044, 0x00000001, D_80242340_D810A0, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_31/D81250.data.s b/ver/us/asm/data/world/area_pra/pra_31/D81250.data.s deleted file mode 100644 index fcd42ca72e..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_31/D81250.data.s +++ /dev/null @@ -1,336 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802424F0_D81250 -.word 0x00000002, 0x00000000, 0x0000010E, 0x00000003, 0x00000002, 0x0000010E, 0x00000005, 0x00000001, 0x0000010E - -dlabel D_80242514_D81274 -.word 0x00000001, 0x00000001, 0x0000010E, 0x00000004, 0x00000001, 0x0000010E, 0x00000007, 0x00000001, 0x0000010E - -dlabel D_80242538_D81298 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000, 0x0000FFFF, 0x00000000, 0xFFFF0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80242570_D812D0 -.word 0x00000005, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F81, 0x00000001, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFD050F82, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x0000000B, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000145, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000145, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AAA80, 0xF24A5280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24FF280, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0xF24F87B4, 0xF2497080, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xF2524A80, 0xF24F1DB4, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000002D, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000021, 0x00000001, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000023, 0x00000001, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000030, 0x00000001, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000032, 0x00000001, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000001, 0x00000018, 0x7FFFFE00, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000032, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000056, 0x00000030, 0x00000000, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000057, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000004, PlaySoundAtModel, 0x00000058, 0x000001EE, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000032, 0x00000043, 0x00000003, EnableModel, 0x00000050, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000056, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, EnableModel, 0x00000051, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000057, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, EnableModel, 0x00000052, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000058, 0x00000001, 0x00000008, 0x00000001, 0x00000016, 0x00000043, 0x00000003, EnableModel, 0x00000053, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x00000059, 0x00000001, 0x00000008, 0x00000001, 0x00000012, 0x00000043, 0x00000003, EnableModel, 0x00000054, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0x0000005A, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000003, PlayModelAnimation, 0x00000000, D_80246558_D852B8, 0x00000008, 0x00000001, 0x000000C8, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000055, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242B40_D818A0 -.word 0x0000004D, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000000, 0x00000024, 0x00000002, 0xFD050F86, 0xFE363C82, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000001, 0x00000024, 0x00000002, 0xFD050F87, 0xFE363C82, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000002, 0x00000024, 0x00000002, 0xFD050F88, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000000, 0x00000043, 0x00000005, TranslateGroup, 0x0000003B, 0xFE363C80, 0x00000000, 0xFE363C81, 0x00000043, 0x00000006, RotateGroup, 0x00000038, 0xFD050F86, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000001, 0x00000043, 0x00000005, TranslateGroup, 0x00000043, 0xFE363C80, 0x00000000, 0xFE363C81, 0x00000043, 0x00000006, RotateGroup, 0x00000040, 0xFD050F87, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240E70_D7FBD0, 0x00000002, 0x00000043, 0x00000005, TranslateGroup, 0x0000004B, 0xFE363C80, 0x00000000, 0xFE363C81, 0x00000043, 0x00000006, RotateGroup, 0x00000048, 0xFD050F88, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, func_80240F2C_D7FC8C, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFE363C80, 0xFFFFFFF6, 0xFE363C81, 0x00000043, 0x00000002, func_80240F2C_D7FC8C, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0xFFFFFFF6, 0xFE363C81, 0x00000043, 0x00000002, func_80240F2C_D7FC8C, 0x00000002, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0xFE363C80, 0xFFFFFFF6, 0xFE363C81, 0x00000043, 0x00000002, UpdateColliderTransform, 0x0000001A, 0x00000043, 0x00000002, UpdateColliderTransform, 0x0000001B, 0x00000043, 0x00000002, UpdateColliderTransform, 0x0000001C, 0x00000043, 0x00000002, UpdateColliderTransform, 0x0000001D, 0x00000043, 0x00000002, UpdateColliderTransform, 0x0000001F, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000020, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000021, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000022, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000024, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000025, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000026, 0x00000043, 0x00000002, UpdateColliderTransform, 0x00000027, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242E04_D81B64 -.word 0x00000043, 0x00000002, func_80240BBC_D7F91C, 0xFE363C8A, 0x00000043, 0x00000003, InterpPlayerYaw, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000002, pra_31_UnkFunc11, 0xFE363C89, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000002, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000002, SetPlayerActionState, 0x00000014, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000002, func_80240C70_D7F9D0, 0xFE363C8A, 0x00000043, 0x00000005, MakeLerp, 0xFE363C83, 0xFE363C84, 0x00000028, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetPlayerActionState, 0x00000014, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000001, pra_31_UnkFunc12, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x00000028, 0xF24A7BB4, 0x00000057, 0x00000000, 0x00000024, 0x00000002, 0xFD050F82, 0x00000001, 0x00000043, 0x00000004, PlaySoundAtCollider, 0xFE363C89, 0x0000002D, 0x00000000, 0x00000043, 0x00000002, func_80240A3C_D7F79C, 0xFE363C8A, 0x00000008, 0x00000001, 0x00000028, 0x00000024, 0x00000002, 0xFD050F82, 0x00000000, 0x00000043, 0x00000001, func_80240FD0_D7FD30, 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000002, pra_31_UnkFunc11, 0xFE363C89, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000002, pra_31_UnkFunc11, 0xFE363C89, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, SetPlayerActionState, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243078_D81DD8 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000055, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_80240894_D7F5F4, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000024, 0x00000002, 0xFE363C89, 0x0000001B, 0x00000046, 0x00000001, D_80242E04_D81B64, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243104_D81E64 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000055, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_80240894_D7F5F4, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000001, 0x00000024, 0x00000002, 0xFE363C89, 0x00000020, 0x00000046, 0x00000001, D_80242E04_D81B64, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243190_D81EF0 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000055, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_80240894_D7F5F4, 0x00000002, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000002, 0x00000024, 0x00000002, 0xFE363C89, 0x00000025, 0x00000046, 0x00000001, D_80242E04_D81B64, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000001, InitAnimatedModels, 0x00000043, 0x00000003, LoadAnimatedModel, 0x00000000, D_80246094_D84DF4, 0x00000043, 0x00000005, SetAnimatedModelRootPosition, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetAnimatedModelRenderMode, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000001, func_80240510_D7F270, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, ParentColliderToModel, 0x0000001A, 0x00000034, 0x00000043, 0x00000003, ParentColliderToModel, 0x0000001B, 0x00000034, 0x00000043, 0x00000003, ParentColliderToModel, 0x0000001C, 0x00000034, 0x00000043, 0x00000003, ParentColliderToModel, 0x0000001D, 0x00000034, 0x00000043, 0x00000003, ParentColliderToModel, 0x0000001F, 0x0000003C, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000020, 0x0000003C, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000021, 0x0000003C, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000022, 0x0000003C, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000024, 0x00000044, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000025, 0x00000044, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000026, 0x00000044, 0x00000043, 0x00000003, ParentColliderToModel, 0x00000027, 0x00000044, 0x00000024, 0x00000002, 0xFD050F81, 0x00000000, 0x00000044, 0x00000001, D_80242B40_D818A0, 0x00000047, 0x00000005, D_80243078_D81DD8, 0x00000040, 0x0000001B, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80243104_D81E64, 0x00000040, 0x00000020, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80243190_D81EF0, 0x00000040, 0x00000025, 0x00000001, 0x00000000, 0x0000000F, 0x00000002, 0xF5DE0180, 0x00000055, 0x00000043, 0x00000003, PlayModelAnimation, 0x00000000, D_802471E4_D85F44, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000055, 0x00000000, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000005B, 0x00000001, 0x00000012, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000018, 0x7FFFFE00, 0x00000043, 0x00000003, PlayModelAnimation, 0x00000000, D_80246130_D84E90, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000021, 0x00000000, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000023, 0x00000000, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000030, 0x00000000, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000032, 0x00000000, 0x00000043, 0x00000003, SetGroupEnabled, 0x00000055, 0x00000001, 0x00000043, 0x00000003, SetGroupEnabled, 0x0000005B, 0x00000000, 0x00000044, 0x00000001, D_80242570_D812D0, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243510_D82270 -.word 0x2BC17217, 0x2DD00000, 0x00000000, 0x00000000, 0x00000111, 0x11111111, 0x10C3CDD2, 0x712ABC18, 0x81C1F817, 0x8DD03300, 0x11000000, 0x00000000, 0x00000111, 0x11111111, 0x11330DD2, 0x712ABC18, 0x81C1F817, 0x2DD13000, 0x00000000, 0x00000000, 0x000B1011, 0x11111111, 0x11031332, 0x8B2A1C18, 0x80C17817, 0x2DD13004, 0x00000000, 0x00000000, 0x000B7B00, 0x11111111, 0x1100F332, 0xAB2A1C08, 0x80C17217, 0x8DD10400, 0x00000000, 0x00000000, 0x00BBBBB0, 0x01111111, 0x11007332, 0xAB2A1C08, 0x80C17817, 0x8DD03304, 0x00000111, 0x00000000, 0x0B0BB77B, 0xB1111111, 0x1100F332, 0xAB271C08, 0x80C1F817, 0x2D3B0000, 0x00000111, 0x00000000, 0x0B0B7777, 0x7F111111, 0x1110B332, 0xA18F0C08, 0x80C0F817, 0x233F0000, 0x00000011, 0x00000B00, 0x00BB7777, 0x7777B110, 0x0010F332, 0xA18F0C08, 0x80C0F817, 0x233F0000, 0x00000001, 0x0001B000, 0x11117777, 0x77777703, 0x3400F332, 0xA12F0C08, 0x80C072B8, 0x63370011, 0x00000000, 0x00000000, 0xBF777777, 0x7777B000, 0x30330DD2, 0x71271C18, 0x80C0F2B8, 0x633A0001, 0x11000000, 0x10330001, 0xB777B777, 0x777B3DDD, 0xD3330DD2, 0x712F1C18, 0x80C0F21A, 0x233A0001, 0x11000000, 0x03DD001B, 0x777B7BBB, 0xBB0DDDDD, 0xDD3DDDD8, 0x2F2ABC12, 0x80C0F8BA, 0x23370000, 0x11100000, 0x4DD3400B, 0x777B7000, 0x003DDDDD, 0xDDDDDDD7, 0xAB2A1C12, 0x80C0F2B8, 0x63370000, 0x01110000, 0x3DDDD30B, 0x777B1100, 0x043DDDDD, 0xDDDDDDDB, 0x7F271C08, 0x80C0F2B2, 0x93370000, 0x00011103, 0xDD33330B, 0x77B11110, 0x003DDDDD, 0xDDDDDDD1, 0xFF68BC1A, 0x80C0721A, 0x63370000, 0x0000003D, 0xD3333330, 0xBB711111, 0x0043DDD3, 0xDDDDDDD1, 0x00871C0B, 0x80C17218, 0x63370000, 0x000003DD, 0x3333403D, 0x4BB11111, 0x100043DD, 0xDDDDDDD1, 0x0CF103C1, 0x80C172B2, 0x63377700, 0x00003D33, 0x33334003, 0x33B11111, 0x10000033, 0x3DDDDDDF, 0x1010333F, 0x80C0F2B8, 0x63370000, 0x00043DD3, 0x33340000, 0x43B11110, 0x000000B3, 0x3DDDDDDA, 0xF171C33F, 0x80C072B8, 0x63370000, 0x00333333, 0x33300000, 0x03111110, 0x00000000, 0x33DD3D36, 0x2B27030F, 0x80C1A2B2, 0x63370700, 0x33333333, 0x33300001, 0x03111100, 0x00000000, 0x00330336, 0x8B2703C7, 0x81C1A2F2, 0x63370870, 0x33333333, 0x3333C400, 0x33010000, 0x00000000, 0x00047339, 0x2F2A1307, 0x80C172B2, 0x63370080, 0x3333333C, 0x33334040, 0x3D0100BB, 0xB0000000, 0x0000A339, 0x2F2A13CF, 0x80C172F2, 0x63370000, 0x43333000, 0x00433333, 0x3D000BBB, 0xB0000000, 0x0000A339, 0x2F68B3C1, 0x80C172B8, 0x63370008, 0x03333000, 0xE0003333, 0x3300B77B, 0x00000000, 0x0008A339, 0x2F68B3C1, 0x80C0F81A, 0x63370007, 0x04333030, 0x00043333, 0xD3400BBB, 0x00000111, 0x0078A336, 0x2F2A1331, 0x80C0F817, 0x233F0770, 0x00433003, 0x00E4333D, 0xD340BB00, 0x00011111, 0x5178A336, 0x2F270331, 0x80C172BA, 0x633BB444, 0x440033C0, 0x000C3DDD, 0x0000B000, 0x00100111, 0x17887336, 0x2B270330, 0x80C172B8, 0x633B0044, 0x4440033C, 0xCC33DDD0, 0x0000B000, 0x00110011, 0x11157332, 0xA08F030A, 0x81C1F81A, 0x2D3B4040, 0x0000000C, 0x333DDD30, 0x00000000, 0x01110000, 0x01117336, 0x70FF130A, 0x81C172BA, 0x23310444, 0x44440000, 0xCDDD3330, 0x000B0000, 0x01100000, 0x0400B332, 0x70FF0C0A, 0x81CBA2F2, 0x63377000, 0x00000000, 0x04333344, 0x00010000, 0x01100000, 0x00C3F332, 0xA1F1030A, 0x81C172B2, 0x63370000, 0x00000000, 0x00043304, 0x40000000, 0x00000000, 0x0C30B332, 0xAB210307, 0x81CBA2BA, 0x233F0000, 0x00000000, 0x00000C04, 0x4C000000, 0x0000004C, 0x333C0DD2, 0x718F0307, 0x80C1A2BA, 0x63370000, 0x00000000, 0x00000000, 0xCCCC4440, 0x3400400C, 0x3C041DD2, 0x70AB03CB, 0x80C1A2BA, 0x23370000, 0x00000000, 0x00000000, 0x00000000, 0x043CCC33, 0x34041332, 0xA1AF030A, 0x80C1A2B2, 0x63370000, 0x000000B0, 0x00000000, 0x00000000, 0x04433C33, 0x444C13D2, 0x71AF030A, 0x80C1A2F2, 0x633A0000, 0x00000000, 0x00000000, 0x00000000, 0x04444444, 0x4444B3D2, 0xF0AB030A, 0x81C1A2F2, 0x633A0000, 0x00000000, 0x00000000, 0x00000000, 0x00444444, 0x4444F332, 0x70AB030A, 0x81CB86F2, 0x933A0110, 0x11111100, 0x00000000, 0x00000000, 0x00000444, 0x4444B332, 0xA1AB030A, 0x80CB86F2, 0x933A1111, 0x11111110, 0x00000000, 0x000000C0, 0x00000000, 0x0444B336, 0x8BAB030A, 0x80C1A2F2, 0x933A1111, 0x11100111, 0x00000000, 0x00000400, 0x00000000, 0x0004F332, 0x8BAF1C0A, 0x80C1A2F2, 0x933A0111, 0x10000011, 0x1100000B, 0x77504000, 0x00000000, 0x0000F336, 0x8B8F1C0A, 0x81C172B8, 0x633A1111, 0x00000011, 0x11111850, 0x0007B000, 0x00000000, 0x0000F332, 0xA127030A, 0x81C1A2F2, 0x9331CC55, 0x87000111, 0x11118111, 0x00000070, 0x05700777, 0xBBB7F332, 0x812F030A, 0x81C172B2, 0x63303330, 0x78787111, 0x11108111, 0x00000000, 0x0000B077, 0x77777336, 0x812F030A, 0x81C1F2F2, 0x933C33DD, 0x07588111, 0x11115511, 0x0000000B, 0x0000700B, 0x0E077336, 0x8127030A, 0x81C172B8, 0x633C3DDD, 0x34580581, 0x11110501, 0x00000000, 0x00007000, 0x00077336, 0xA1871C0A, 0x81CBA2F2, 0x63333DDD, 0x33005850, 0x11111500, 0x00000000, 0x00000700, 0x00077332, 0x718F030A, 0x81CB8672, 0x9333DD33, 0xD3333070, 0x11110700, 0x00000000, 0x00000B00, 0x000E7336, 0x2B2F030A, 0x80C172F8, 0x633CDD3D, 0x33DDD370, 0x11110500, 0x00000000, 0x00000750, 0x00EE7336, 0x8B2F030A, 0x21C1A2B2, 0x6330DD33, 0xDDDDD301, 0x11115000, 0x000000BE, 0x00000070, 0x0000F332, 0x718F030A, 0x21CBA2F2, 0x63310DDD, 0xDDD33D40, 0x11108100, 0x040000BE, 0xE0000770, 0x00007332, 0x718F030A, 0x81C1F217, 0x23300DDD, 0xDDD3330C, 0x01118100, 0x040000EE, 0xE0000070, 0x00007336, 0xA18F030A, 0x81C17217, 0x2D3003DD, 0xDDD33403, 0x01118000, 0x044000EE, 0xE0000700, 0x000BF336, 0xAB2F030A, 0x80C0F21A, 0x2330103D, 0xDDD40403, 0x00110570, 0x00400E0E, 0x00000700, 0x777BB3D2, 0xF0AF030A, 0x80C0F81A, 0x23300033, 0xDD3C0040, 0x00110075, 0x00000EE0, 0x00000770, 0x0007BDD2, 0x70AF030A, 0x80C0F81A, 0x233C333C, 0xDD340010, 0x01000004, 0x17100B08, 0x71100F00, 0x00001DD2, 0xF0AF030A, 0x80C172BA, 0x633C3103, 0x3D301075, 0x10000443, 0xD4717777, 0x88F100B0, 0x04CC0DDA, 0xF08F030A, 0x80C1A2BA, 0x63300700, 0x33D005B7, 0x70004043, 0xD400B001, 0x78A55770, 0x000B0DD8, 0xF18F130A, 0x80C1A2BA, 0x233B0070, 0x30040100, 0x4004444D, 0x3000E011, 0x11AA7710, 0x00100DD2, 0x718F0C0A, 0x81C1A2B8, 0x23310070, 0x000533C0, 0x4040443D, 0x40000111, 0x115A7510, 0x04010DD2, 0x718F0C0A, 0x81CBA217, 0x2DD04400, 0x50053330, 0x33444433, 0x04000111, 0x1117F101, 0x00400DD8, 0xF08F0C0A, 0x81CBA217, 0x2DDC0C40, 0xCC033300, 0x03444330, 0x04000111, 0x111A7111, 0x10000DD2, 0xF1871CB2 - -dlabel D_80243D10_D82A70 -.word 0xD675C637, 0x8C63EF7B, 0xCEB9B5F5, 0x739DAD6B, 0x9CE76319, 0xA529BDEF, 0xDEF7F7BD, 0xCE31B5AD, 0xD7000002, 0xFFFFFFFF, 0xE7000000, 0x00000000, 0xFC121824, 0xFF33FFFF, 0xE3000D01, 0x00000000, 0xE3000F00, 0x00000000, 0xFD500000, D_80243510_D82270, 0xF5500000, 0x07018060, 0xE6000000, 0x00000000, 0xF3000000, 0x073FF200, 0xE7000000, 0x00000000, 0xF5400800, 0x00018060, 0xF2000000, 0x000FC0FC, 0xE3000C00, 0x00080000, 0xE3001001, 0x00008000, 0xFD100000, D_80243D10_D82A70, 0xE8000000, 0x00000000, 0xF5000100, 0x07000000, 0xE6000000, 0x00000000, 0xF0000000, 0x0703C000, 0xE7000000, 0x00000000, 0xE3001201, 0x00002000, 0xE3001402, 0x00000C00, 0xDF000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80243DF0_D82B50 -.word 0x55E45545, 0x5445E4E4, 0x44444444, 0x4C111111, 0x1111111C, 0x44C44CCC, 0xCD445EE5, 0x5E545E54, 0x65555555, 0x5E444E4E, 0x4E44444C, 0x11111111, 0x11111111, 0xC44C4C11, 0xCD445445, 0x55555E45, 0x65555555, 0x64E544E4, 0x444444C4, 0xC1111111, 0x11111111, 0xCDD4C111, 0xD44464E5, 0x5455E455, 0x86555558, 0x6E454E44, 0x4444C44C, 0xC1111111, 0x11111111, 0x9CCC111C, 0xD44D8545, 0x55545456, 0x86565658, 0xA545E4E4, 0x44C4CCCC, 0x11111111, 0x11111111, 0x1C911199, 0xDDDD3655, 0x5E555558, 0x36556658, 0x3D44444C, 0xC444CCCC, 0x11111111, 0x11111111, 0x1CC1911C, 0xDCDD3D66, 0x55558556, 0xA6568668, 0x3555444C, 0xCC4CCCC1, 0x11111111, 0x11111111, 0x1C11C119, 0x9C5C35D8, 0x54558568, 0xA8668368, 0x354544DC, 0xCCCCCC11, 0x11111111, 0x111C111C, 0x111C1111, 0xC9993656, 0x55568563, 0x78563A88, 0x3D45D4C9, 0xCC1CCC11, 0x11111111, 0xC191999C, 0xCC9C199C, 0xC3113565, 0x5658856A, 0x7356A73A, 0x3646D5CC, 0x91111C11, 0x11111111, 0x19191999, 0x9999999C, 0xD1303D56, 0x56586637, 0x7366A73A, 0xA646CDC9, 0x11111111, 0x11111111, 0x11111111, 0x99911999, 0xD1103556, 0x56888637, 0x7363A73A, 0xA556DCC1, 0x11111C11, 0x11111111, 0x11111011, 0x11111819, 0xC981A446, 0x6883863B, 0x7368AA3A, 0xAD589C91, 0x11111C11, 0x11111111, 0x10100110, 0x10101019, 0x9989B455, 0x68333637, 0x7368AAA7, 0x76531911, 0x11111111, 0x11111111, 0x11010000, 0x00000131, 0x89C9B446, 0x83AA3637, 0x7363AB37, 0xBD531911, 0x19111111, 0x11111111, 0x10101010, 0x00000001, 0x9981B546, 0x8AA7A637, 0x7363A737, 0x7D6A1119, 0x19C91911, 0x11111111, 0x01010000, 0x00200003, 0x0319B456, 0x63AA363A, 0x7363AB37, 0x7D671111, 0x9CC11111, 0x11111111, 0x10101100, 0x00220000, 0x0309B546, 0x86A38663, 0x7363A7AB, 0xB6D71111, 0x94499191, 0x11111111, 0x11010010, 0x00022202, 0x2231A558, 0x88386563, 0x7363AB37, 0xBD6B1999, 0x944CC991, 0x11110101, 0x00101010, 0x10190020, 0x0910AD43, 0xA8A3666A, 0x7363AB3B, 0xB6671C94, 0x44444C91, 0x11011111, 0x11010100, 0x000D9000, 0x95108D6A, 0x7ABA856A, 0x73637B3B, 0xB867199C, 0x4444D111, 0x11100000, 0x00000000, 0x00094D14, 0x4100A98A, 0x737A3687, 0x7383ABAB, 0xB89B0011, 0xD4444101, 0x10110000, 0x00000000, 0x0000444D, 0x4001B88B, 0x7AB7366A, 0x7363AB3B, 0xB88B0001, 0xDDD44111, 0x01000000, 0x00000000, 0x0001C444, 0xC000B98B, 0x7AB7368A, 0x73637BA7, 0xB89B0000, 0xD9119910, 0x10000000, 0x00000000, 0x001D4444, 0x4C10B38F, 0xBAB73663, 0x7363A7A7, 0xB88B2021, 0x10010110, 0x00000000, 0x00020202, 0x01CCD444, 0xDCD1B83B, 0xBAB7A663, 0x7363A737, 0xB98B2200, 0x00000000, 0x00000000, 0x10000000, 0x00001D4D, 0x1000B93B, 0x7AB73563, 0x7363A737, 0xB68B2220, 0x00000000, 0x00002200, 0xD0020202, 0x00000941, 0x0101B38B, 0xBABA3563, 0x7363AB37, 0xB8672222, 0x02020002, 0x0202011C, 0x49012000, 0x00001191, 0x0111B88B, 0x7A7A3668, 0x7363A7A7, 0xB89B2222, 0x20002000, 0x000000C4, 0x44C00200, 0x00100191, 0x1131B98B, 0x737A363A, 0x7363A737, 0xB86B2272, 0x22220020, 0x2020220D, 0x44000000, 0x00011131, 0x3111B88B, 0xA8AA3687, 0x7363A737, 0xB6972B22, 0x22222202, 0x02020014, 0x94902000, 0x00003100, 0x003178CB, 0xA8AA363A, 0x736A7BA7, 0xB88B2272, 0x22202000, 0x000000C1, 0x01C00020, 0x00000000, 0x0300788B, 0xA3A38687, 0x73837B3B, 0xB98B2722, 0x22222020, 0x00000001, 0x00000000, 0x00000020, 0x2001B96B, 0x7A73868A, 0x7363AB37, 0xB88B2272, 0x22220202, 0x00000001, 0x11000200, 0x00202002, 0x0200A867, 0xA37A668A, 0x736AAB37, 0xB89B2722, 0x22220200, 0x00020000, 0x01310000, 0x00000202, 0x00007D6B, 0xA37A866A, 0x73637B37, 0xB88B2220, 0x12220020, 0x20110000, 0x11103030, 0x32022020, 0x0020789B, 0xA3733637, 0x73637BA7, 0xB83B2221, 0x49120200, 0x19410000, 0x00010100, 0x00000222, 0x2000766B, 0xA37A868A, 0x7363ABAB, 0xB98B2222, 0x94910021, 0x94902202, 0x00000000, 0x00222022, 0x2020796B, 0xA3AA8637, 0x73637BA7, 0xB33B2222, 0x144491C4, 0x44100000, 0x00000000, 0x00000220, 0x0001B89B, 0xA3733687, 0x738A7BAB, 0xB89B2222, 0x294D44D4, 0x49020220, 0x20200200, 0x20000000, 0x0010788B, 0x737A8637, 0x73637BA7, 0xF83B0222, 0x21444444, 0x41202002, 0x02020020, 0x00000000, 0x0031796B, 0x73733637, 0x73637BA7, 0xB88B2020, 0x21C44D44, 0xD1002202, 0x02022202, 0x00000001, 0x3011B86B, 0x737A3687, 0x736A7BAB, 0xF89B0202, 0x19C4444D, 0xC9120020, 0x20200000, 0x00001010, 0x0113B967, 0x7A7A3637, 0x7363A737, 0xB86B0211, 0x9444D444, 0x44911202, 0x02002000, 0x00010113, 0x1131B86A, 0xA3B73637, 0x73637BAB, 0xB66A0194, 0x444444D4, 0x4444C102, 0x02220200, 0x01301311, 0x3111B86A, 0xA37A3687, 0x7363A7A7, 0xBD630011, 0x11CC444D, 0xC1113000, 0x20222000, 0x00010131, 0x1311B8DA, 0x737A3637, 0x7363A7AB, 0xB6630010, 0x001C5449, 0x12020022, 0x22222220, 0x00000111, 0x3003B95A, 0x737A3687, 0x7383AB37, 0xB6D81100, 0x00014451, 0x22220222, 0x22222222, 0x20030303, 0x103078DA, 0x337A3637, 0x73637BA7, 0x7D660110, 0x0000C4C0, 0x20222222, 0x27222222, 0x22200230, 0x3000B6DA, 0xA37A868A, 0x73837BAB, 0xB6D61811, 0x10001C10, 0x20202222, 0x22272272, 0x22222D02, 0x1D00B653, 0x333A3637, 0x7363A737, 0x75561993, 0x11101C10, 0x00020022, 0x22222722, 0x72272049, 0x413276D8, 0x83A33687, 0xB38377A7, 0x765D9991, 0x19313900, 0x00000202, 0x02222227, 0x22222254, 0x4232B6D8, 0x68888637, 0x736377A7, 0x7D566669, 0x31119310, 0x01000020, 0x22200222, 0x27220C45, 0x4D02B6D6, 0x56886687, 0x7366A73A, 0x36469D98, 0x13131931, 0x30300002, 0x02291222, 0x222A2094, 0xD032A656, 0x6668663A, 0x7366A733, 0x3545CD99, 0x30303903, 0x00000020, 0x220D9222, 0x22222724, 0x8222A566, 0x56686537, 0x78563783, 0x36456593, 0x91099310, 0x03002002, 0x0214C022, 0x222222AC, 0x92233DD5, 0x5556856A, 0xA8668388, 0x3554D460, 0x88888003, 0x00222019, 0x19C44111, 0x12222223, 0x33993556, 0x45568563, 0xA6568568, 0x355454D0, 0x99993322, 0x0222220C, 0x4444D5DC, 0x02222201, 0x98D88D56, 0x54558568, 0x36556668, 0xAD545451, 0x3D6D9300, 0x22222222, 0x1D4444C0, 0x22220203, 0xDCDC8556, 0x55556556, 0x86566658, 0xA545445D, 0x569D3000, 0x22222222, 0x29444D12, 0x22202019, 0x9DDD8D55, 0x4E555458, 0x86555658, 0x84454445, 0xDCDD9930, 0x22222222, 0x2CDD4412, 0x22220038, 0xC54D6545, 0x5555E556, 0x65555556, 0x54455444, 0x4545C693, 0x22222222, 0x0D111D92, 0x2222009C, 0xDD5554E5, 0x5E545E45, 0x65555555, 0x54E55455, 0x454545C9, 0x32222222, 0x00222010, 0x2200196C, 0xD54D5445, 0x54554445, 0x54445544, 0x5E444444, 0x4444454D, 0x90222222, 0x22222202, 0x20039DD4, 0x545444E5, 0x44544E45 - -dlabel D_802445F0_D83350 -.word 0x33E944AF, 0x33677467, 0xCEFBC675, 0x9DAF4B1B, 0x8CE97533, 0x5B5F4257, 0x85B5A5F3, 0xFFFF2109 - -dlabel D_80244610_D83370 -.word 0xE3001001, 0x00008000, 0xFD100000, D_802445F0_D83350, 0xE8000000, 0x00000000, 0xF5000100, 0x07000000, 0xE6000000, 0x00000000, 0xF0000000, 0x0703C000, 0xE7000000, 0x00000000, 0xD7000002, 0xFFFFFFFF, 0xFC121824, 0xFF33FFFF, 0xE3000D01, 0x00000000, 0xE3000F00, 0x00000000, 0xFD500000, D_80243DF0_D82B50, 0xF5500000, 0x07018060, 0xE6000000, 0x00000000, 0xF3000000, 0x073FF200, 0xE7000000, 0x00000000, 0xF5400800, 0x00018060, 0xF2000000, 0x000FC0FC, 0xE3000C00, 0x00080000, 0xE3001201, 0x00002000, 0xDF000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_802446C0_D83420 -.word 0x6B997399, 0x6B996357, 0x73997399, 0x73996B99, 0x6B997399, 0x73996B99, 0x73997399, 0x63576357, 0x73DB73DB, 0x73DB7399, 0x73DB73DB, 0x73DB7399, 0x73DB73DB, 0x739973DB, 0x5AD55AD5, 0x4A534211, 0x73DB7399, 0x6B996357, 0x6B996B99, 0x63176B99, 0x4A536B57, 0x6B596B57, 0x6B996317, 0x73DB6B57, 0x73997399, 0x73DB73DB, 0x73996B99, 0x73997399, 0x739973DB, 0x73DB7399, 0x5AD55293, 0x4A534251, 0x73997399, 0x6B577399, 0x6B995AD5, 0x63176B57, 0x5AD55AD5, 0x63576357, 0x6B996B99, 0x73996B99, 0x73DB73DB, 0x73997399, 0x635773DB, 0x73997399, 0x73DB73DB, 0x739973DB, 0x5AD54251, 0x52934A53, 0x73DB6B99, 0x63576B59, 0x6B9952D5, 0x63576B57, 0x6B996B99, 0x6B596317, 0x63177399, 0x6B996357, 0x63577399, 0x63176B99, 0x63576B59, 0x73DB7399, 0x73DB7399, 0x73DB7399, 0x5AD54211, 0x52934211, 0x73996B99, 0x63176357, 0x63175AD5, 0x52D56317, 0x63175AD5, 0x5AD56357, 0x6B996357, 0x63176317, 0x6B596B57, 0x6B996B99, 0x63176357, 0x6B9973DB, 0x739973DB, 0x73DB73DB, 0x52934211, 0x42514211, 0x73DB5295, 0x6B576357, 0x5AD56317, 0x5AD55AD5, 0x63176357, 0x6B575AD5, 0x6B995AD5, 0x63576357, 0x63176357, 0x63576B59, 0x63576B57, 0x73996B57, 0x6B997399, 0x739973DB, 0x52D54211, 0x42114211, 0x73996357, 0x63175AD5, 0x63576357, 0x5AD56357, 0x5AD56357, 0x5AD56317, 0x6B596317, 0x63576317, 0x63176317, 0x6B996357, 0x6B576B99, 0x739973DB, 0x6B996B57, 0x73DB73DB, 0x52934251, 0x4A534251, 0x73996357, 0x63176317, 0x63175AD5, 0x63175AD5, 0x63576357, 0x63576317, 0x6B576357, 0x63576B57, 0x63176357, 0x73996B99, 0x73996B99, 0x739973DB, 0x73996B99, 0x73DB73DB, 0x52935AD5, 0x42114211, 0x73996B99, 0x63576B99, 0x63176317, 0x63576317, 0x63176B99, 0x5AD56317, 0x63576317, 0x6B996B99, 0x63577399, 0x739973DB, 0x739973DB, 0x739973DB, 0x73996B99, 0x73997399, 0x52D55AD5, 0x42114251, 0x6B996B99, 0x6B597399, 0x63576317, 0x73996357, 0x63176B99, 0x63575AD5, 0x63577399, 0x63576357, 0x73997399, 0x73DB7399, 0x73DB7399, 0x73DB7399, 0x6B996B99, 0x739973DB, 0x5AD54251, 0x42114211, 0x73996357, 0x6B996B57, 0x63576317, 0x6B995AD5, 0x635773DB, 0x63576317, 0x73DB7399, 0x73DB6B99, 0x739973DB, 0x73DB73DB, 0x739973DB, 0x73DB73DB, 0x73996B99, 0x6B9973DB, 0x5AD54A53, 0x42114211, 0x73995AD5, 0x6B596357, 0x6B996357, 0x6B996357, 0x6B576B99, 0x63576357, 0x73997399, 0x6B997399, 0x6B997399, 0x73DB6B57, 0x73DB73DB, 0x6B996B99, 0x73DB6B57, 0x6B997399, 0x52D55AD5, 0x42114211, 0x73DB6B57, 0x5AD56357, 0x6B576317, 0x73996B99, 0x6B996357, 0x73996357, 0x73DB6B99, 0x73997399, 0x5AD573DB, 0x6B996B99, 0x73DB7399, 0x6B996B57, 0x6B576B99, 0x6B9973DB, 0x5AD56317, 0x42114211, 0x6B9973DB, 0x73994A53, 0x73996B99, 0x739973DB, 0x73996B99, 0x73996B99, 0x73997399, 0x739973DB, 0x6B997399, 0x6B997399, 0x73997399, 0x6B996B99, 0x6B996B99, 0x6B5773DB, 0x4A535293, 0x42514211, 0x6B997399, 0x6B996B57, 0x6B996357, 0x73DB73DB, 0x73997399, 0x73996B99, 0x6B996B99, 0x73DB7399, 0x73996B99, 0x73DB6B99, 0x6B997399, 0x6B997399, 0x73997399, 0x73DB6B99, 0x4A534A53, 0x42114211, 0x63176357, 0x63176357, 0x739973DB, 0x73997399, 0x73DB7399, 0x73DB7399, 0x6B5773DB, 0x6B576B99, 0x6B996B99, 0x73997399, 0x73DB6B57, 0x6B996357, 0x6B996B99, 0x73996357, 0x4A535293, 0x4A534211, 0x73996B99, 0x73996B99, 0x73DB7399, 0x73DB7399, 0x73997399, 0x73997399, 0x6B997399, 0x73DB7399, 0x73996B99, 0x73DB7399, 0x73DB6357, 0x6B996B59, 0x52936B99, 0x6B996B99, 0x52934251, 0x42514211, 0x73DB6B57, 0x6B9973DB, 0x739973DB, 0x739973DB, 0x73997399, 0x73DB7399, 0x6B5773DB, 0x73DB7399, 0x73DB7399, 0x6B996B99, 0x73996B99, 0x73997399, 0x73996B99, 0x6B576317, 0x52D54A53, 0x42514211, 0x73996B99, 0x73997399, 0x73996B99, 0x73997399, 0x73DB73DB, 0x73DB7399, 0x6B997399, 0x73997399, 0x73997399, 0x73997399, 0x6B997399, 0x73996B99, 0x6B997399, 0x6B996357, 0x52955293, 0x52954211, 0x73DB7399, 0x73DB6B99, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x739973DB, 0x73997399, 0x73DB7399, 0x73DB7399, 0x6B997399, 0x73DB6B99, 0x73996B99, 0x6B996B57, 0x631773DB, 0x52935293, 0x52D54211, 0x739973DB, 0x739973DB, 0x739973DB, 0x739973DB, 0x73997399, 0x73DB73DB, 0x73997399, 0x73DB7399, 0x6B997399, 0x73DB6B99, 0x73997399, 0x6B997399, 0x6B996B99, 0x5AD57399, 0x52D54A53, 0x52934211, 0x73DB7399, 0x73DB7399, 0x73DB7399, 0x73DB7399, 0x739973DB, 0x739973DB, 0x73DB7399, 0x73DB73DB, 0x73997399, 0x739973DB, 0x6B997399, 0x63577399, 0x6B996B59, 0x6B576357, 0x63575293, 0x4A534211, 0x739973DB, 0x73DB73DB, 0x73DB73DB, 0x73DB7399, 0x6B997399, 0x73DB7399, 0x73DB73DB, 0x73996B99, 0x73997399, 0x6B997399, 0x73996B99, 0x73997399, 0x6B996357, 0x63576B99, 0x5AD55293, 0x52954251, 0x73DB73DB, 0x739973DB, 0x739973DB, 0x739973DB, 0x739973DB, 0x73DB73DB, 0x73DB7399, 0x73DB6B99, 0x6B5773DB, 0x73996B99, 0x73DB6357, 0x6B996317, 0x6B996B57, 0x6B9973DB, 0x4A535293, 0x52D54211, 0x739973DB, 0x73DB7399, 0x73DB7399, 0x73DB6B57, 0x6B997399, 0x73DB7399, 0x739973DB, 0x73996B59, 0x6B576B99, 0x63577399, 0x63576B57, 0x63176357, 0x6B596357, 0x6B996357, 0x52935AD5, 0x5AD54211, 0x73DB7399, 0x73DB73DB, 0x73DB6B59, 0x73996B99, 0x6B9973DB, 0x6B996357, 0x73DB73DB, 0x73DB6B99, 0x6B995AD5, 0x5AD56B99, 0x6B596B99, 0x63576317, 0x63576317, 0x63576357, 0x52935AD5, 0x5AD54211, 0x739973DB, 0x73997399, 0x73996357, 0x635773DB, 0x73996357, 0x63176B99, 0x73996357, 0x6B576357, 0x6B996357, 0x6B576B59, 0x6B576357, 0x6B996B57, 0x5AD56357, 0x5AD57399, 0x4A535AD5, 0x4A534251, 0x73DB73DB, 0x73DB6B99, 0x6B996B57, 0x73DB7399, 0x73996B57, 0x6B576B99, 0x52957399, 0x6B996B57, 0x73DB5AD5, 0x6B9952D5, 0x6B996B59, 0x73996357, 0x6B596B57, 0x6B596B99, 0x421152D5, 0x52934211, 0x739973DB, 0x739973DB, 0x73DB7399, 0x73DB7399, 0x73DB7399, 0x73DB5AD5, 0x6B5773DB, 0x5AD57399, 0x73DB6B57, 0x6B995AD5, 0x63576B99, 0x6B576317, 0x63576B99, 0x6B576317, 0x42516317, 0x4A534A53, 0x73DB7399, 0x6B596B57, 0x6B996B99, 0x6B997399, 0x73DB73DB, 0x6B996B57, 0x73DB7399, 0x73DB6B99, 0x5AD56B99, 0x52936B99, 0x52D56317, 0x63176B57, 0x63176357, 0x6B997399, 0x42515293, 0x52934251, 0x739973DB, 0x6B577399, 0x739973DB, 0x739973DB, 0x739973DB, 0x6B577399, 0x739973DB, 0x73DB7399, 0x739973DB, 0x6B996317, 0x6B596317, 0x63576357, 0x6B995AD5, 0x63575AD5, 0x4A534211, 0x52D54251, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x73DB73DB, 0x73DB7399, 0x6B997399, 0x63576357, 0x63576B57, 0x6B5952D5, 0x63176317, 0x6B997399, 0x42514211, 0x5AD55293 - -dlabel D_80244EC0_D83C20 -.word 0xD7000002, 0xFFFFFFFF, 0xE7000000, 0x00000000, 0xFC121824, 0xFF33FFFF, 0xE3000D01, 0x00000000, 0xE3000F00, 0x00000000, 0xFD100000, D_802446C0_D83420, 0xF5100000, 0x07054150, 0xE6000000, 0x00000000, 0xF3000000, 0x073FF100, 0xE7000000, 0x00000000, 0xF5101000, 0x00054150, 0xF2000000, 0x0007C07C, 0xE3000C00, 0x00080000, 0xE3001001, 0x00000000, 0xE3001201, 0x00002000, 0xE3001402, 0x00000C00, 0xDF000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80244F50_D83CB0 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100C018, D_80247B90_D868F0, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0x060C0E10, 0x000C1012, 0x06121014, 0x00121416, 0xDF000000, 0x00000000 - -dlabel D_80244FC8_D83D28 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247A80_D867E0, 0xDE000000, D_80244F50_D83CB0, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245000_D83D60 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x0100600C, D_80247BF0_D86950, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0xDF000000, 0x00000000 - -dlabel D_80245068_D83DC8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247A40_D867A0, 0xDE000000, D_80245000_D83D60, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_802450A0_D83E00 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x01001002, D_80247BF0_D86950, 0x01001004, D_80247C20_D86980, 0x0100400C, D_80247C40_D869A0, 0x06000608, 0x00000802, 0x0602080A, 0x00020A04, 0xDF000000, 0x00000000 - -dlabel D_80245118_D83E78 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247A00_D86760, 0xDE000000, D_802450A0_D83E00, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245150_D83EB0 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100C018, D_80247B90_D868F0, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0x060C0E10, 0x000C1012, 0x06121014, 0x00121416, 0xDF000000, 0x00000000 - -dlabel D_802451C8_D83F28 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_802479C0_D86720, 0xDE000000, D_80245150_D83EB0, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245200_D83F60 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x0100600C, D_80247BF0_D86950, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0xDF000000, 0x00000000 - -dlabel D_80245268_D83FC8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247980_D866E0, 0xDE000000, D_80245200_D83F60, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_802452A0_D84000 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x01001002, D_80247BF0_D86950, 0x01001004, D_80247C20_D86980, 0x0100400C, D_80247C40_D869A0, 0x06000608, 0x00000802, 0x0602080A, 0x00020A04, 0xDF000000, 0x00000000 - -dlabel D_80245318_D84078 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247940_D866A0, 0xDE000000, D_802452A0_D84000, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245350_D840B0 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100C018, D_80247B90_D868F0, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0x060C0E10, 0x000C1012, 0x06121014, 0x00121416, 0xDF000000, 0x00000000 - -dlabel D_802453C8_D84128 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247900_D86660, 0xDE000000, D_80245350_D840B0, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245400_D84160 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x0100600C, D_80247BF0_D86950, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0xDF000000, 0x00000000 - -dlabel D_80245468_D841C8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_802478C0_D86620, 0xDE000000, D_80245400_D84160, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_802454A0_D84200 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x01001002, D_80247BF0_D86950, 0x01001004, D_80247C20_D86980, 0x0100400C, D_80247C40_D869A0, 0x06000608, 0x00000802, 0x0602080A, 0x00020A04, 0xDF000000, 0x00000000 - -dlabel D_80245518_D84278 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247880_D865E0, 0xDE000000, D_802454A0_D84200, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245550_D842B0 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100C018, D_80247B90_D868F0, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0x060C0E10, 0x000C1012, 0x06121014, 0x00121416, 0xDF000000, 0x00000000 - -dlabel D_802455C8_D84328 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247840_D865A0, 0xDE000000, D_80245550_D842B0, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245600_D84360 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x0100600C, D_80247BF0_D86950, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0xDF000000, 0x00000000 - -dlabel D_80245668_D843C8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247800_D86560, 0xDE000000, D_80245600_D84360, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_802456A0_D84400 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFBFF, 0x00000000, 0xD9FFFFFF, 0x00200000, 0x01001002, D_80247BF0_D86950, 0x01001004, D_80247C20_D86980, 0x0100400C, D_80247C40_D869A0, 0x06000608, 0x00000802, 0x0602080A, 0x00020A04, 0xDF000000, 0x00000000 - -dlabel D_80245718_D84478 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_802477C0_D86520, 0xDE000000, D_802456A0_D84400, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245750_D844B0 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100C018, D_80247B90_D868F0, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0x060C0E10, 0x000C1012, 0x06121014, 0x00121416, 0xDF000000, 0x00000000 - -dlabel D_802457C8_D84528 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247780_D864E0, 0xDE000000, D_80245750_D844B0, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245800_D84560 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244610_D83370, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x01001002, D_80247B20_D86880, 0x01003008, D_80247B60_D868C0, 0x06020406, 0x00020600, 0xDF000000, 0x00000000 - -dlabel D_80245868_D845C8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244610_D83370, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x01004008, D_80247B20_D86880, 0x06000204, 0x00000406, 0xDF000000, 0x00000000 - -dlabel D_802458C8_D84628 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00552078, 0xDE000000, D_80244EC0_D83C20, 0xD9FDFFFF, 0x00000000, 0xD9FFFFFF, 0x00200400, 0x0100600C, D_80247AC0_D86820, 0x06000204, 0x00000406, 0x06060408, 0x0006080A, 0xDF000000, 0x00000000 - -dlabel D_80245930_D84690 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDA380000, D_80247740_D864A0, 0xDE000000, D_802458C8_D84628, 0xDE000000, D_80245868_D845C8, 0xDE000000, D_80245800_D84560, 0xD8380002, 0x00000040, 0xDF000000, 0x00000000 - -dlabel D_80245978_D846D8 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDE000000, D_80245930_D84690, 0xDE000000, D_802457C8_D84528, 0xDE000000, D_80245718_D84478, 0xDE000000, D_80245668_D843C8, 0xDE000000, D_802455C8_D84328, 0xDE000000, D_80245518_D84278, 0xDE000000, D_80245468_D841C8, 0xDE000000, D_802453C8_D84128, 0xDE000000, D_80245318_D84078, 0xDE000000, D_80245268_D83FC8, 0xDE000000, D_802451C8_D83F28, 0xDE000000, D_80245118_D83E78, 0xDE000000, D_80245068_D83DC8, 0xDE000000, D_80244FC8_D83D28, 0xDF000000, 0x00000000 - -dlabel D_80245A08_D84768 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDE000000, D_80245978_D846D8, 0xDF000000, 0x00000000 - -dlabel D_80245A30_D84790 -.word 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDE000000, D_80245A08_D84768, 0xDF000000, 0x00000000, 0xDB020000, 0x00000018, 0xDC08060A, D_80247728_D86488, 0xDC08090A, D_80247720_D86480, 0xDE000000, D_80245A30_D84790, 0xDF000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245A90_D847F0 -.word D_802458C8_D84628, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245ABC_D8481C -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80245A90_D847F0, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245AE8_D84848 -.word D_80245868_D845C8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245B14_D84874 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80245ABC_D8481C, D_80245AE8_D84848, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245B40_D848A0 -.word D_80245800_D84560, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245B6C_D848CC -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80245B14_D84874, D_80245B40_D848A0, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245B98_D848F8 -.word 0x00000000, 0x00000000, 0x3FFF0000, 0x43FA0000, 0x42480000, 0x00000000, 0x00000000, D_80245B6C_D848CC, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245BC4_D84924 -.word D_80245750_D844B0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245BF0_D84950 -.word 0x00000000, 0x00000000, 0xC0010000, 0x43D20000, 0x42480000, 0x00000000, D_80245B98_D848F8, D_80245BC4_D84924, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245C1C_D8497C -.word D_80245600_D84360, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245C48_D849A8 -.word 0x00000000, 0x00000000, 0x80010000, 0x43CD0000, 0x42200000, 0x00000000, D_80245BF0_D84950, D_80245C1C_D8497C, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245C74_D849D4 -.word D_80245550_D842B0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245CA0_D84A00 -.word 0x00000000, 0x00000000, 0xC0010000, 0x43C80000, 0x42200000, 0x00000000, D_80245C48_D849A8, D_80245C74_D849D4, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245CCC_D84A2C -.word D_80245400_D84160, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245CF8_D84A58 -.word 0x00000000, 0x00000000, 0x80010000, 0x43C30000, 0x41F00000, 0x00000000, D_80245CA0_D84A00, D_80245CCC_D84A2C, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245D24_D84A84 -.word D_80245350_D840B0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245D50_D84AB0 -.word 0x00000000, 0x00000000, 0xC0010000, 0x43BE0000, 0x41F00000, 0x00000000, D_80245CF8_D84A58, D_80245D24_D84A84, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245D7C_D84ADC -.word D_802452A0_D84000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245DA8_D84B08 -.word 0x00000000, 0x00000000, 0x3FFF0000, 0x43BE0000, 0x41A00000, 0x00000000, D_80245D50_D84AB0, D_80245D7C_D84ADC, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245DD4_D84B34 -.word D_80245200_D83F60, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245E00_D84B60 -.word 0x00000000, 0x00000000, 0x80010000, 0x43B90000, 0x41A00000, 0x00000000, D_80245DA8_D84B08, D_80245DD4_D84B34, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245E2C_D84B8C -.word D_80245150_D83EB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245E58_D84BB8 -.word 0x00000000, 0x00000000, 0xC0010000, 0x43B40000, 0x41A00000, 0x00000000, D_80245E00_D84B60, D_80245E2C_D84B8C, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245E84_D84BE4 -.word D_802450A0_D83E00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245EB0_D84C10 -.word 0x00000000, 0x00000000, 0x3FFF0000, 0x43B40000, 0x41200000, 0x00000000, D_80245E58_D84BB8, D_80245E84_D84BE4, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245EDC_D84C3C -.word D_80245000_D83D60, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245F08_D84C68 -.word 0x00000000, 0x00000000, 0x80010000, 0x43AF0000, 0x41200000, 0x00000000, D_80245EB0_D84C10, D_80245EDC_D84C3C, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245F34_D84C94 -.word D_80244F50_D83CB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245F60_D84CC0 -.word 0x00000000, 0x00000000, 0xC0010000, 0x43AA0000, 0x41200000, 0x00000000, D_80245F08_D84C68, D_80245F34_D84C94, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245F8C_D84CEC -.word D_802454A0_D84200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245FB8_D84D18 -.word 0x00000000, 0x00000000, 0x3FFF0000, 0x43C80000, 0x41F00000, 0x00000000, D_80245F60_D84CC0, D_80245F8C_D84CEC, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80245FE4_D84D44 -.word D_802456A0_D84400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80246010_D84D70 -.word 0x00000000, 0x00000000, 0x3FFF0000, 0x43D20000, 0x42200000, 0x00000000, D_80245FB8_D84D18, D_80245FE4_D84D44, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_8024603C_D84D9C -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80246010_D84D70, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80246068_D84DC8 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_8024603C_D84D9C, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80246094_D84DF4 -.word D_80246068_D84DC8, D_8024603C_D84D9C, D_80246010_D84D70, D_80245FE4_D84D44, D_80245FB8_D84D18, D_80245F8C_D84CEC, D_80245F60_D84CC0, D_80245F34_D84C94, D_80245F08_D84C68, D_80245EDC_D84C3C, D_80245EB0_D84C10, D_80245E84_D84BE4, D_80245E58_D84BB8, D_80245E2C_D84B8C, D_80245E00_D84B60, D_80245DD4_D84B34, D_80245DA8_D84B08, D_80245D7C_D84ADC, D_80245D50_D84AB0, D_80245D24_D84A84, D_80245CF8_D84A58, D_80245CCC_D84A2C, D_80245CA0_D84A00, D_80245C74_D849D4, D_80245C48_D849A8, D_80245C1C_D8497C, D_80245BF0_D84950, D_80245BC4_D84924, D_80245B98_D848F8, D_80245B6C_D848CC, D_80245B40_D848A0, D_80245B14_D84874, D_80245AE8_D84848, D_80245ABC_D8481C, D_80245A90_D847F0, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80246130_D84E90 -.word 0x00130005, 0x00010000, 0x00000000, 0x00080001, 0x00000000, 0x00000011, 0x000100B6, 0x00B600B6, 0x00050002, 0x00000000, 0x00000008, 0x00020000, 0x00000000, 0x00110002, 0x00B600B6, 0x00B60005, 0x00030000, 0x00000000, 0x00080003, 0x01A4FFC4, 0x00000011, 0x000300B6, 0x00B600B6, 0x00050004, 0x00000000, 0x00000008, 0x00040000, 0x00000000, 0x00110004, 0x00B600B6, 0x00B60005, 0x00050000, 0x00000000, 0x00080005, 0x0190FFBA, 0x00000011, 0x000500B6, 0x00B600B6, 0x00050006, 0x00000000, 0x00000008, 0x00060000, 0x00000000, 0x00110006, 0x00B600B6, 0x00B60005, 0x00070000, 0x00000000, 0x00080007, 0x0154FFA6, 0x00000011, 0x000700B6, 0x00B600B6, 0x00050008, 0x00000000, 0x00000008, 0x00080000, 0x00000000, 0x00110008, 0x00B600B6, 0x00B60005, 0x00090000, 0x00000000, 0x00080009, 0x015EFFA6, 0x00000011, 0x000900B6, 0x00B600B6, 0x0005000A, 0x00000000, 0x00000008, 0x000A0000, 0x00000000, 0x0011000A, 0x00B600B6, 0x00B60005, 0x000B0000, 0x00000000, 0x0008000B, 0x0168FFA6, 0x00000011, 0x000B00B6, 0x00B600B6, 0x0005000C, 0x00000000, 0x00000008, 0x000C0000, 0x00000000, 0x0011000C, 0x00B600B6, 0x00B60005, 0x000D0000, 0x00000000, 0x0008000D, 0x0168FFB0, 0x00000011, 0x000D00B6, 0x00B600B6, 0x0005000E, 0x00000000, 0x00000008, 0x000E0000, 0x00000000, 0x0011000E, 0x00B600B6, 0x00B60005, 0x000F0000, 0x00000000, 0x0008000F, 0x0172FFB0, 0x00000011, 0x000F00B6, 0x00B600B6, 0x00050010, 0x00000000, 0x00000008, 0x00100000, 0x00000000, 0x00110010, 0x00B600B6, 0x00B60005, 0x00110000, 0x00000000, 0x00080011, 0x017CFFB0, 0x00000011, 0x001100B6, 0x00B600B6, 0x00050012, 0x00000000, 0x00000008, 0x00120000, 0x00000000, 0x00110012, 0x00B600B6, 0x00B60005, 0x00130000, 0x00000000, 0x00080013, 0x017CFFBA, 0x00000011, 0x001300B6, 0x00B600B6, 0x00050014, 0x00000000, 0x00000008, 0x00140000, 0x00000000, 0x00110014, 0x00B600B6, 0x00B60005, 0x00150000, 0x00000000, 0x00080015, 0x0186FFBA, 0x00000011, 0x001500B6, 0x00B600B6, 0x00050016, 0x00000000, 0x00000008, 0x00160000, 0x00000000, 0x00110016, 0x00B600B6, 0x00B60005, 0x00170000, 0x00000000, 0x00080017, 0x0190FFC4, 0x00000011, 0x001700B6, 0x00B600B6, 0x00050018, 0x00000000, 0x00000008, 0x00180000, 0x00000000, 0x00110018, 0x00B600B6, 0x00B60005, 0x00190000, 0x00000000, 0x00080019, 0x019AFFC4, 0x00000011, 0x001900B6, 0x00B600B6, 0x0005001A, 0x00000000, 0x00000008, 0x001A0000, 0x00000000, 0x0011001A, 0x00B600B6, 0x00B60005, 0x001B0000, 0x00000000, 0x0008001B, 0x01A4FFCE, 0x00000011, 0x001B00B6, 0x00B600B6, 0x0005001C, 0x00000000, 0x00000008, 0x001C0000, 0x00000000, 0x0011001C, 0x00B600B6, 0x00B60005, 0x001D0000, 0x00000000, 0x0008001D, 0x01F40032, 0x00000011, 0x001D00B6, 0x00B600B6, 0x0005001E, 0x00000000, 0x00000008, 0x001E0000, 0x00000000, 0x0011001E, 0x00B600B6, 0x00B60005, 0x001F0000, 0x00000000, 0x0008001F, 0x00000000, 0x00000011, 0x001F00B6, 0x00B600B6, 0x00050020, 0x00000000, 0x00000008, 0x00200000, 0x00000000, 0x00110020, 0x00B600B6, 0x00B60005, 0x00210000, 0x00000000, 0x00080021, 0x00000000, 0x00000011, 0x002100B6, 0x00B600B6, 0x00050022, 0x00000000, 0x00000008, 0x00220000, 0x00000000, 0x00110022, 0x00B600B6, 0x00B60005, 0x00230000, 0x00000000, 0x00080023, 0x00000000, 0x00000011, 0x002300B6, 0x00B600B6, 0x00010001, 0x000A0001, 0x00010003 - -dlabel D_80246558_D852B8 -.word 0x00130005, 0x00010000, 0x00000000, 0x00080001, 0x00000000, 0x00000011, 0x000100B6, 0x00B600B6, 0x00050002, 0x00000000, 0x00000008, 0x00020000, 0x00000000, 0x00110002, 0x00B600B6, 0x00B60005, 0x00030000, 0x00000000, 0x00080003, 0x01A4FFC4, 0x00000011, 0x000300B6, 0x00B600B6, 0x00050004, 0x00000000, 0x00000008, 0x00040000, 0x00000000, 0x00110004, 0x00B600B6, 0x00B60005, 0x00050000, 0x00000000, 0x00080005, 0x0190FFBA, 0x00000011, 0x000500B6, 0x00B600B6, 0x00050006, 0x00000000, 0x00000008, 0x00060000, 0x00000000, 0x00110006, 0x00B600B6, 0x00B60005, 0x00070000, 0x00000000, 0x00080007, 0x0154FFA6, 0x00000011, 0x000700B6, 0x00B600B6, 0x00050008, 0x00000000, 0x00000008, 0x00080000, 0x00000000, 0x00110008, 0x00B600B6, 0x00B60005, 0x00090000, 0x00000000, 0x00080009, 0x015EFFA6, 0x00000011, 0x000900B6, 0x00B600B6, 0x0005000A, 0x00000000, 0x00000008, 0x000A0000, 0x00000000, 0x0011000A, 0x00B600B6, 0x00B60005, 0x000B0000, 0x00000000, 0x0008000B, 0x0168FFA6, 0x00000011, 0x000B00B6, 0x00B600B6, 0x0005000C, 0x00000000, 0x00000008, 0x000C0000, 0x00000000, 0x0011000C, 0x00B600B6, 0x00B60005, 0x000D0000, 0x00000000, 0x0008000D, 0x0168FFB0, 0x00000011, 0x000D00B6, 0x00B600B6, 0x0005000E, 0x00000000, 0x00000008, 0x000E0000, 0x00000000, 0x0011000E, 0x00B600B6, 0x00B60005, 0x000F0000, 0x00000000, 0x0008000F, 0x0172FFB0, 0x00000011, 0x000F00B6, 0x00B600B6, 0x00050010, 0x00000000, 0x00000008, 0x00100000, 0x00000000, 0x00110010, 0x00B600B6, 0x00B60005, 0x00110000, 0x00000000, 0x00080011, 0x017CFFB0, 0x00000011, 0x001100B6, 0x00B600B6, 0x00050012, 0x00000000, 0x00000008, 0x00120000, 0x00000000, 0x00110012, 0x00B600B6, 0x00B60005, 0x00130000, 0x00000000, 0x00080013, 0x017CFFBA, 0x00000011, 0x001300B6, 0x00B600B6, 0x00050014, 0x00000000, 0x00000008, 0x00140000, 0x00000000, 0x00110014, 0x00B600B6, 0x00B60005, 0x00150000, 0x00000000, 0x00080015, 0x0186FFBA, 0x00000011, 0x001500B6, 0x00B600B6, 0x00050016, 0x00000000, 0x00000008, 0x00160000, 0x00000000, 0x00110016, 0x00B600B6, 0x00B60005, 0x00170000, 0x00000000, 0x00080017, 0x0190FFC4, 0x00000011, 0x001700B6, 0x00B600B6, 0x00050018, 0x00000000, 0x00000008, 0x00180000, 0x00000000, 0x00110018, 0x00B600B6, 0x00B60005, 0x00190000, 0x00000000, 0x00080019, 0x019AFFC4, 0x00000011, 0x001900B6, 0x00B600B6, 0x0005001A, 0x00000000, 0x00000008, 0x001A0000, 0x00000000, 0x0011001A, 0x00B600B6, 0x00B60005, 0x001B0000, 0x00000000, 0x0008001B, 0x01A4FFCE, 0x00000011, 0x001B00B6, 0x00B600B6, 0x0005001C, 0x00000000, 0x00000008, 0x001C0000, 0x00000000, 0x0011001C, 0x00B600B6, 0x00B60005, 0x001D0000, 0x00000000, 0x0008001D, 0x01F40032, 0x00000011, 0x001D00B6, 0x00B600B6, 0x0005001E, 0x00000000, 0x00000008, 0x001E0000, 0x00000000, 0x0011001E, 0x00B600B6, 0x00B60005, 0x001F0000, 0x00000000, 0x0008001F, 0x00000000, 0x00000011, 0x001F00B6, 0x00B600B6, 0x00050020, 0x00000000, 0x00000008, 0x00200000, 0x00000000, 0x00110020, 0x00B600B6, 0x00B60005, 0x00210000, 0x00000000, 0x00080021, 0x00000000, 0x00000011, 0x002100B6, 0x00B600B6, 0x00050022, 0x00000000, 0x00000008, 0x00220000, 0x00000000, 0x00110022, 0x00B600B6, 0x00B60005, 0x00230000, 0x00000000, 0x00080023, 0x00000000, 0x00000011, 0x002300B6, 0x00B600B6, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x0005001D, 0x00000000, 0xFFFA0001, 0x00010005, 0x001D0000, 0x0000FFEF, 0x00010001, 0x0005001D, 0x00000000, 0xFFF00001, 0x00010005, 0x001D0000, 0x0000000A, 0x00010001, 0x0005001D, 0x00000000, 0x00500001, 0x00010005, 0x001D0000, 0x000000CD, 0x00010001, 0x0005001D, 0x00000000, 0x01930001, 0x00010005, 0x001D0000, 0x000002B0, 0x00010001, 0x0005001D, 0x00000000, 0x04330001, 0x00010005, 0x001D0000, 0x0000062A, 0x00010001, 0x0005001D, 0x00000000, 0x08A70001, 0x00010005, 0x001D0000, 0x00000BB6, 0x00010001, 0x0005001D, 0x00000000, 0x0F680001, 0x00010005, 0x001D0000, 0x000013CB, 0x00010001, 0x0005001D, 0x00000000, 0x18F00001, 0x00010005, 0x001D0000, 0x00001EE4, 0x00010001, 0x0005001D, 0x00000000, 0x25B60001, 0x00010005, 0x001D0000, 0x00002D77, 0x00010001, 0x0005001D, 0x00000000, 0x36350001, 0x00010005, 0x001D0000, 0x00003FFF, 0x00010001, 0x0005001D, 0x00000000, 0x3CB70001, 0x00010005, 0x001D0000, 0x00003AA2, 0x00010001, 0x0005001D, 0x00000000, 0x397C0001, 0x00010005, 0x001D0000, 0x000038FD, 0x00010001, 0x0005001D, 0x00000000, 0x38E30001, 0x00010005, 0x001D0000, 0x000038FC, 0x00010001, 0x0005001D, 0x00000000, 0x39780001, 0x00010005, 0x001D0000, 0x00003A9C, 0x00010001, 0x0005001D, 0x00000000, 0x3CB20001, 0x00010005, 0x001D0000, 0x00003FFF, 0x00010001, 0x0005001B, 0x00000000, 0x15620008, 0x001B01A4, 0x00320000, 0x00010001, 0x0005001B, 0x00000000, 0x2AB60001, 0x00010005, 0x001B0000, 0x00003FFF, 0x00010001, 0x0005001B, 0x00000000, 0x40260001, 0x00010005, 0x001B0000, 0x000040D8, 0x00010001, 0x0005001B, 0x00000000, 0x427E0001, 0x00010005, 0x001B0000, 0x00004580, 0x00010001, 0x0005001B, 0x00000000, 0x4A490001, 0x00010005, 0x001B0000, 0x00005142, 0x00010001, 0x0005001B, 0x00000000, 0x5AD30001, 0x00010005, 0x001B0000, 0x00006766, 0x00010001, 0x0005001B, 0x00000000, 0x77640001, 0x00010005, 0x001B0000, 0x00008B3A, 0x00010001, 0x0005001B, 0x00000000, 0xA34A0001, 0x00010005, 0x001B0000, 0x0000C001, 0x00010001, 0x00050003, 0x00000000, 0x00330008, 0x000301A4, 0x00280000, 0x00010001, 0x00050003, 0x00000000, 0x00FE0001, 0x00010005, 0x00030000, 0x000002AD, 0x00010001, 0x00050003, 0x00000000, 0x058A0001, 0x00010005, 0x00030000, 0x000009E2, 0x00010001, 0x00050003, 0x00000000, 0x0FFE0001, 0x00010005, 0x00030000, 0x0000182A, 0x00010001, 0x00050003, 0x00000000, 0x22B20001, 0x00010005, 0x00030000, 0x00002FDF, 0x00010001, 0x00050003, 0x00000000, 0x3FFF0001, 0x00010005, 0x00190000, 0x0000020E, 0x00080019, 0x019A0028, 0x00000001, 0x00010005, 0x00190000, 0x000008A5, 0x00010001, 0x00050019, 0x00000000, 0x144A0001, 0x00010005, 0x00190000, 0x00002585, 0x00010001, 0x00050019, 0x00000000, 0x3CDD0001, 0x00010005, 0x00190000, 0x00005AD8, 0x00010001, 0x00050019, 0x00000000, 0x80010001, 0x00010005, 0x00170000, 0x00000006, 0x00080017, 0x01900028, 0x00000001, 0x00010005, 0x00170000, 0x000000EF, 0x00010001, 0x00050017, 0x00000000, 0x04010001, 0x00010005, 0x00170000, 0x00000A7D, 0x00010001, 0x00050017, 0x00000000, 0x15A80001, 0x00010005, 0x00170000, 0x000026C6, 0x00010001, 0x00050017, 0x00000000, 0x3F1A0001, 0x00010005, 0x00170000, 0x00005FE7, 0x00010001, 0x00050017, 0x00000000, 0x8A750001, 0x00010005, 0x00170000, 0x0000C001, 0x00010001, 0x00050005, 0x00000000, 0x00710008, 0x00050190, 0x001E0000, 0x00010001, 0x00050005, 0x00000000, 0x03E30001, 0x00010005, 0x00050000, 0x00000D83, 0x00010001, 0x00050005, 0x00000000, 0x207D0001, 0x00010005, 0x00050000, 0x00003FFF, 0x00010001, 0x00050015, 0x00000000, 0x00560008, 0x00150186, 0x001E0000, 0x00010001, 0x00050015, 0x00000000, 0x06220001, 0x00010005, 0x00150000, 0x0000188F, 0x00010001, 0x00050015, 0x00000000, 0x3ECA0001, 0x00010005, 0x00150000, 0x00008001, 0x00010001, 0x00050013, 0x00000000, 0x001E0008, 0x0013017C, 0x001E0000, 0x00010001, 0x00050013, 0x00000000, 0x03020001, 0x00010005, 0x00130000, 0x00000C77, 0x00010001, 0x00050013, 0x00000000, 0x204C0001, 0x00010005, 0x00130000, 0x0000424B, 0x00010001, 0x00050013, 0x00000000, 0x76420001, 0x00010005, 0x00130000, 0x0000C001, 0x00010001, 0x00050011, 0x00000000, 0x01750008, 0x0011017C, 0x00140000, 0x00010001, 0x00050011, 0x00000000, 0x11240001, 0x00010005, 0x00110000, 0x00003FFF, 0x00010001, 0x0005000F, 0x00000000, 0x009D0008, 0x000F0172, 0x00140000, 0x00010001, 0x0005000F, 0x00000000, 0x06F70001, 0x00010005, 0x000F0000, 0x000019CF, 0x00010001, 0x0005000F, 0x00000000, 0x3FE60001, 0x00010005, 0x000F0000, 0x00008001, 0x00010001, 0x0005000D, 0x00000000, 0x00030008, 0x000D0168, 0x00140000, 0x00010001, 0x0005000D, 0x00000000, 0x02A90001, 0x00010005, 0x000D0000, 0x00000BD7, 0x00010001, 0x0005000D, 0x00000000, 0x1F760001, 0x00010005, 0x000D0000, 0x0000416C, 0x00010001, 0x0005000D, 0x00000000, 0x75A20001, 0x00010005, 0x000D0000, 0x0000C001, 0x00010001, 0x0005000B, 0x00000000, 0x017A0008, 0x000B0168, 0x000A0000, 0x00010001, 0x0005000B, 0x00000000, 0x112D0001, 0x00010005, 0x000B0000, 0x00003FFF, 0x00010001, 0x00050009, 0x00000000, 0x00520008, 0x0009015E, 0x000A0000, 0x00010001, 0x00050009, 0x00000000, 0x06150001, 0x00010005, 0x00090000, 0x0000187B, 0x00010001, 0x00050009, 0x00000000, 0x3EB80001, 0x00010005, 0x00090000, 0x00008001, 0x00010001, 0x00050007, 0x00000000, 0x00660008, 0x00070154, 0x000A0000, 0x00010001, 0x00050007, 0x00000000, 0x03150001, 0x00010005, 0x00070000, 0x00000A49, 0x00010001, 0x00050007, 0x00000000, 0x183A0001, 0x00010005, 0x00070000, 0x00002F24, 0x00010001, 0x00050007, 0x00000000, 0x51410001, 0x00010005, 0x00070000, 0x000080CE, 0x00010001, 0x00050007, 0x00000000, 0xC0010001, 0x00010005, 0x00070000, 0x0000B528, 0x00010001, 0x00050007, 0x00000000, 0xAECA0001, 0x00010005, 0x00070000, 0x0000ABB6, 0x00010001, 0x00050007, 0x00000000, 0xAABC0001, 0x00010005, 0x00070000, 0x0000AAAC, 0x00010001, 0x00050007, 0x00000000, 0xAAC90001, 0x00010005, 0x00070000, 0x0000ABDD, 0x00010001, 0x00050007, 0x00000000, 0xAF050001, 0x00010005, 0x00070000, 0x0000B55D, 0x00010001, 0x00050007, 0x00000000, 0xC0010001, 0x00010005, 0x00070000, 0x0000BCD8, 0x00010001, 0x00050007, 0x00000000, 0xBC730001, 0x00010005, 0x00070000, 0x0000BCD7, 0x00010001, 0x00050007, 0x00000000, 0xC0010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x0001000A, 0x00010001, 0x00030000 - -dlabel D_802471E4_D85F44 -.word 0x00130005, 0x00010000, 0x00000000, 0x00080001, 0x00000000, 0x00000011, 0x000100B6, 0x00B600B6, 0x00050002, 0x00000000, 0x00000008, 0x00020000, 0x00000000, 0x00110002, 0x00B600B6, 0x00B60005, 0x00030000, 0x00000000, 0x00080003, 0x01A4FFC4, 0x00000011, 0x000300B6, 0x00B600B6, 0x00050004, 0x00000000, 0x00000008, 0x00040000, 0x00000000, 0x00110004, 0x00B600B6, 0x00B60005, 0x00050000, 0x00000000, 0x00080005, 0x0190FFBA, 0x00000011, 0x000500B6, 0x00B600B6, 0x00050006, 0x00000000, 0x00000008, 0x00060000, 0x00000000, 0x00110006, 0x00B600B6, 0x00B60005, 0x00070000, 0x00000000, 0x00080007, 0x0154FFA6, 0x00000011, 0x000700B6, 0x00B600B6, 0x00050008, 0x00000000, 0x00000008, 0x00080000, 0x00000000, 0x00110008, 0x00B600B6, 0x00B60005, 0x00090000, 0x00000000, 0x00080009, 0x015EFFA6, 0x00000011, 0x000900B6, 0x00B600B6, 0x0005000A, 0x00000000, 0x00000008, 0x000A0000, 0x00000000, 0x0011000A, 0x00B600B6, 0x00B60005, 0x000B0000, 0x00000000, 0x0008000B, 0x0168FFA6, 0x00000011, 0x000B00B6, 0x00B600B6, 0x0005000C, 0x00000000, 0x00000008, 0x000C0000, 0x00000000, 0x0011000C, 0x00B600B6, 0x00B60005, 0x000D0000, 0x00000000, 0x0008000D, 0x0168FFB0, 0x00000011, 0x000D00B6, 0x00B600B6, 0x0005000E, 0x00000000, 0x00000008, 0x000E0000, 0x00000000, 0x0011000E, 0x00B600B6, 0x00B60005, 0x000F0000, 0x00000000, 0x0008000F, 0x0172FFB0, 0x00000011, 0x000F00B6, 0x00B600B6, 0x00050010, 0x00000000, 0x00000008, 0x00100000, 0x00000000, 0x00110010, 0x00B600B6, 0x00B60005, 0x00110000, 0x00000000, 0x00080011, 0x017CFFB0, 0x00000011, 0x001100B6, 0x00B600B6, 0x00050012, 0x00000000, 0x00000008, 0x00120000, 0x00000000, 0x00110012, 0x00B600B6, 0x00B60005, 0x00130000, 0x00000000, 0x00080013, 0x017CFFBA, 0x00000011, 0x001300B6, 0x00B600B6, 0x00050014, 0x00000000, 0x00000008, 0x00140000, 0x00000000, 0x00110014, 0x00B600B6, 0x00B60005, 0x00150000, 0x00000000, 0x00080015, 0x0186FFBA, 0x00000011, 0x001500B6, 0x00B600B6, 0x00050016, 0x00000000, 0x00000008, 0x00160000, 0x00000000, 0x00110016, 0x00B600B6, 0x00B60005, 0x00170000, 0x00000000, 0x00080017, 0x0190FFC4, 0x00000011, 0x001700B6, 0x00B600B6, 0x00050018, 0x00000000, 0x00000008, 0x00180000, 0x00000000, 0x00110018, 0x00B600B6, 0x00B60005, 0x00190000, 0x00000000, 0x00080019, 0x019AFFC4, 0x00000011, 0x001900B6, 0x00B600B6, 0x0005001A, 0x00000000, 0x00000008, 0x001A0000, 0x00000000, 0x0011001A, 0x00B600B6, 0x00B60005, 0x001B0000, 0x00000000, 0x0008001B, 0x01A4FFCE, 0x00000011, 0x001B00B6, 0x00B600B6, 0x0005001C, 0x00000000, 0x00000008, 0x001C0000, 0x00000000, 0x0011001C, 0x00B600B6, 0x00B60005, 0x001D0000, 0x00000000, 0x0008001D, 0x01F40032, 0x00000011, 0x001D00B6, 0x00B600B6, 0x0005001E, 0x00000000, 0x00000008, 0x001E0000, 0x00000000, 0x0011001E, 0x00B600B6, 0x00B60005, 0x001F0000, 0x00000000, 0x0008001F, 0x00000000, 0x00000011, 0x001F00B6, 0x00B600B6, 0x00050020, 0x00000000, 0x00000008, 0x00200000, 0x00000000, 0x00110020, 0x00B600B6, 0x00B60005, 0x00210000, 0x00000000, 0x00080021, 0x00000000, 0x00000011, 0x002100B6, 0x00B600B6, 0x00050022, 0x00000000, 0x00000008, 0x00220000, 0x00000000, 0x00110022, 0x00B600B6, 0x00B60005, 0x00230000, 0x00000000, 0x00080023, 0x00000000, 0x00000011, 0x002300B6, 0x00B600B6, 0x0005001D, 0x00000000, 0x3FFF0008, 0x001B01A4, 0x00320000, 0x0005001B, 0x00000000, 0xC0010008, 0x000301A4, 0x00280000, 0x00050003, 0x00000000, 0x3FFF0008, 0x0019019A, 0x00280000, 0x00050019, 0x00000000, 0x80010008, 0x00170190, 0x00280000, 0x00050017, 0x00000000, 0xC0010008, 0x00050190, 0x001E0000, 0x00050005, 0x00000000, 0x3FFF0008, 0x00150186, 0x001E0000, 0x00050015, 0x00000000, 0x80010008, 0x0013017C, 0x001E0000, 0x00050013, 0x00000000, 0xC0010008, 0x0011017C, 0x00140000, 0x00050011, 0x00000000, 0x3FFF0008, 0x000F0172, 0x00140000, 0x0005000F, 0x00000000, 0x80010008, 0x000D0168, 0x00140000, 0x0005000D, 0x00000000, 0xC0010008, 0x000B0168, 0x000A0000, 0x0005000B, 0x00000000, 0x3FFF0008, 0x0009015E, 0x000A0000, 0x00050009, 0x00000000, 0x80010008, 0x00070154, 0x000A0000, 0x00050007, 0x00000000, 0xC001000A, 0x00010001, 0x00030000, 0x00000000, 0x00000000 - -dlabel D_80247720_D86480 -.word 0x00000000, 0x00000000 - -dlabel D_80247728_D86488 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247740_D864A0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01F40032, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247780_D864E0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01A40032, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_802477C0_D86520 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01A40028, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247800_D86560 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x019A0028, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247840_D865A0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01900028, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247880_D865E0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x0190001E, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_802478C0_D86620 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x0186001E, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247900_D86660 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x017C001E, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247940_D866A0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x017C0014, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247980_D866E0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01720014, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_802479C0_D86720 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x01680014, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247A00_D86760 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x0168000A, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247A40_D867A0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x015E000A, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247A80_D867E0 -.word 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x0154000A, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_80247AC0_D86820 -.word 0x00000050, 0x00280000, 0x04000800, 0xBE1F1FFF, 0x00000000, 0x00280000, 0x04000000, 0xBE1F1FFF, 0x00000000, 0x00000000, 0x00000000, 0xBE1F1FFF, 0x00000050, 0x00000000, 0x00000800, 0xBE1F1FFF, 0x00000000, 0xFFD80000, 0x04000000, 0xBE1F1FFF, 0x00000050, 0xFFD80000, 0x04000800, 0xBE1F1FFF - -dlabel D_80247B20_D86880 -.word 0x00000050, 0x00000000, 0x06AB0466, 0x8080D1FF, 0x00000000, 0x00000000, 0x06AB0133, 0xB2B2FFFF, 0x00000000, 0x00280000, 0x059A0133, 0xB2B2FFFF, 0x00000050, 0x00280000, 0x059A0466, 0x8080D1FF - -dlabel D_80247B60_D868C0 -.word 0x00000050, 0xFFD80000, 0x059A0466, 0x8080D1FF, 0x00000000, 0xFFD80000, 0x059A0133, 0xB2B2FFFF, 0x00000000, 0x00000000, 0x06AB0133, 0xB2B2FFFF - -dlabel D_80247B90_D868F0 -.word 0x00000000, 0xFFD80000, 0x04000800, 0x6E1212FF, 0x000A0000, 0xFFD80000, 0x04000700, 0x6E1212FF, 0x000A0000, 0x00000000, 0x00000700, 0x6E1212FF, 0x00000000, 0x00000000, 0x00000800, 0x6E1212FF, 0x000A0000, 0x00280000, 0x04000700, 0x6E1212FF, 0x00000000, 0x00280000, 0x04000800, 0x6E1212FF - -dlabel D_80247BF0_D86950 -.word 0x00000000, 0x00280000, 0x04000800, 0xBE1F1FFF, 0x000A0000, 0x00280000, 0x04000700, 0xBE1F1FFF, 0x000A0000, 0x00000000, 0x00000700, 0xBE1F1FFF - -dlabel D_80247C20_D86980 -.word 0x00000000, 0x00000000, 0x00000800, 0xBE1F1FFF, 0x000A0000, 0xFFD80000, 0x04000700, 0xBE1F1FFF - -dlabel D_80247C40_D869A0 -.word 0x00000000, 0xFFD80000, 0x04000800, 0xBE1F1FFF, 0x0000000A, 0x00280000, 0x04000700, 0xBE1F1FFF, 0x0000000A, 0x00000000, 0x00000700, 0xBE1F1FFF, 0x0000000A, 0xFFD80000, 0x04000700, 0xBE1F1FFF diff --git a/ver/us/asm/data/world/area_pra/pra_32/D87240.data.s b/ver/us/asm/data/world/area_pra/pra_32/D87240.data.s deleted file mode 100644 index 397200789f..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_32/D87240.data.s +++ /dev/null @@ -1,27 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80240840_D87240 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_802412A0_D87CA0, D_80240840_D87240, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80200000, 0x0019014D - -dlabel D_80240890_D87290 -.word 0x0000000A, 0x00000002, 0xF5DE0180, 0x00000056, 0x00000043, 0x00000003, FadeOutMusic, 0x00000000, 0x000001F4, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000013, 0x00000000, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7CE7, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000253, 0x00000082, 0x00000074, 0x00000043, 0x00000003, GetCamDistance, 0x00000000, 0xFE363C81, 0x00000028, 0x00000002, 0xFE363C81, 0x00000064, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C81, 0x0000000B, 0x00000002, 0x00002710, 0x00002710, 0x00000043, 0x00000004, GetCamPitch, 0x00000000, 0xFE363C82, 0xFE363C83, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xFE363C82, 0x00002710, 0x00000013, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x0000000B, pra_32_StarSpiritEffectFunc2, 0x00000006, 0x000000B4, 0x0000024E, 0x00000078, 0x00000074, 0x00000253, 0x000000B9, 0x00000074, 0x00000082, 0x00000064, 0x00000056, 0x00000000, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc3, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, PlaySound, 0x80000067, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc1, 0x00000043, 0x00000002, StopSound, 0x80000067, 0x00000043, 0x00000006, PlaySoundAt, 0x000000B2, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000002D, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002A, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x000000B4, 0x00000008, 0x00000001, 0x00000073, 0x00000043, 0x00000006, PlaySoundAt, 0x00000137, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000057, 0x00000000, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000050, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000057, 0x00000000, 0x00000027, 0x00000002, 0xFE363C81, 0x00000064, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C81, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000253, 0x00000064, 0x00000074, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000002, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, pra_32_StarSpiritEffectFunc5, 0x00000006, 0x00000253, 0x00000082, 0x00000074, 0x00000064, 0x00000056, 0x00000000, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc6, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000003, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000138, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000057, 0x00000043, 0x00000004, GotoMapSpecial, 0x80242CC4, 0x00000006, 0x0000000E, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7CE7, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000253, 0x00000082, 0x00000074, 0x00000043, 0x00000003, GetCamDistance, 0x00000000, 0xFE363C81, 0x00000028, 0x00000002, 0xFE363C81, 0x00000064, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C81, 0x0000000B, 0x00000002, 0x00002710, 0x00002710, 0x00000043, 0x00000004, GetCamPitch, 0x00000000, 0xFE363C82, 0xFE363C83, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xFE363C82, 0x00002710, 0x00000013, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x0000000B, pra_32_StarSpiritEffectFunc2, 0x00000006, 0x000000B4, 0x0000024E, 0x00000078, 0x00000074, 0x00000253, 0x000000B9, 0x00000074, 0x00000082, 0x00000064, 0x00000056, 0x00000000, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc3, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, PlaySound, 0x80000067, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc1, 0x00000043, 0x00000002, StopSound, 0x80000067, 0x00000043, 0x00000006, PlaySoundAt, 0x000000B2, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000002D, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002A, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x000000B4, 0x00000008, 0x00000001, 0x00000073, 0x00000043, 0x00000006, PlaySoundAt, 0x00000137, 0x00000000, 0x00000253, 0x000000B9, 0x00000074, 0x00000057, 0x00000000, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000050, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000057, 0x00000000, 0x00000027, 0x00000002, 0xFE363C81, 0x00000064, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C81, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000253, 0x00000064, 0x00000074, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000002, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, pra_32_StarSpiritEffectFunc5, 0x00000006, 0x00000253, 0x00000082, 0x00000074, 0x00000064, 0x00000056, 0x00000000, 0x00000043, 0x00000001, pra_32_StarSpiritEffectFunc6, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_32_StarSpiritEffectFunc4, 0x00000003, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000138, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000057, 0x00000043, 0x00000004, GotoMapSpecial, 0x80242CC4, 0x00000006, 0x0000000E, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241178_D87B78 -.word 0x00000006, 0xFFFFFFFF - -dlabel D_80241180_D87B80 -.word 0x00000004, 0xFFFFFFFF - -dlabel D_80241188_D87B88 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000005, 0x00000024, 0x00000002, 0xFE363C82, D_80241178_D87B78, 0x00000024, 0x00000002, 0xFE363C83, D_80241180_D87B80, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80242CCC, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024122C_D87C2C -.word 0x00000047, 0x00000005, D_80241188_D87B88, 0x00000100, 0x00000005, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241258_D87C58 -.word 0x00000024, 0x00000002, 0xFE363C82, D_80241178_D87B78, 0x00000024, 0x00000002, 0xFE363C83, D_80241180_D87B80, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_8024122C_D87C2C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802412A0_D87CA0 -.word 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, 0x80242C94, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000003, 0x0000000B, 0x00000008, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000003, 0x0000000A, 0x00000008, 0x00000043, 0x0000000F, PlayEffect, 0x00000045, 0x00000000, 0x00000078, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000001, func_80240814_D87214, 0x00000044, 0x00000001, D_80240890_D87290, 0x00000044, 0x00000001, D_80241258_D87C58, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_32/D87DF0.data.s b/ver/us/asm/data/world/area_pra/pra_32/D87DF0.data.s deleted file mode 100644 index a424dbd419..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_32/D87DF0.data.s +++ /dev/null @@ -1,30 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802413F0_D87DF0 -.word 0x00000000, 0x00320037, 0x00000000, 0x00000000, 0x00000000, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00630000 - -dlabel D_8024141C_D87E1C -.word 0x00000000, 0x001A0018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000, 0x00000000, 0x00160018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000 - -dlabel D_802414A0_D87EA0 -.word 0x00000024, 0x00000002, 0xFD050F80, 0x00000190, 0x00000056, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000190, 0x0000012C, 0x000000C8, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000024, 0x00000002, 0xFD050F80, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x000000C8, 0x00000064, 0x000000C8, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x0000024C, 0xFE363C80, 0x00000074, 0x00000024, 0x00000002, 0xFE363C85, 0xFE363C80, 0x00000027, 0x00000002, 0xFE363C85, 0xFFFFFFE2, 0x0000000F, 0x00000002, 0xFE363C85, 0x00000064, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x0000024C, 0xFE363C85, 0x00000074, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFD050F80, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241660_D88060 -.word 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x0000000C, 0x00000002, 0xFE363C80, 0x00000179, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, InterruptUsePartner, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000059, 0x00000000, 0x00000008, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x0012016A, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x0000024C, 0x000000C8, 0x00000074, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0xFFFFFFE2, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AAA80, 0xF24A5280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF250BA80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010006, 0x00000043, 0x00000004, SetPlayerPos, 0x000001DB, 0x00000064, 0x00000074, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000002, PartnerIsFlying, 0xFE363C84, 0x0000000A, 0x00000002, 0xFE363C84, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0x000001C4, 0x00000074, 0x00000078, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0x000001C4, 0x00000064, 0x00000078, 0x00000013, 0x00000000, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000A, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000028, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000028, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000028, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000014, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000014, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000072, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000032, 0x00000032, 0x00000001, 0x00000014, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000030, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000030, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x000000FF, 0x00000078, 0x00000000, 0x00000003, 0x00000001, 0x00000005, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000004, 0x00000001, 0x00000005, 0x00000013, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000046, 0x00000001, D_802414A0_D87EA0, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C83, 0xFE363C84, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x0000002A, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8680, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x007F0009, 0x007F0009, 0x00000000, 0x0012016B, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010005, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8480, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000003, 0x0000000B, 0x00000000, 0x00000043, 0x00000004, PlayerMoveTo, 0x00000234, 0x00000074, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000002, StartBossBattle, 0x0000000F, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241E44_D88844 -.word 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000003, FadeOutMusic, 0x00000000, 0x000001F4, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetEncounterStatusFlags, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetPlayerPos, 0x000001DB, 0x00000064, 0x00000074, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AAA80, 0xF24A5280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24F2A80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x007F0009, 0x007F0009, 0x00000000, 0x0012016C, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcRotationPivot, 0x00000000, 0x0000001E, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00001AB8, 0x000000D2, 0x0000000A, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, SetNpcRotation, 0x00000000, 0x00000000, 0x00000000, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000064, 0x000000C8, 0x000000D2, 0x0000000A, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000026, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x0000002E, 0x00000002, 0xFE363C8A, 0xF24A7A8B, 0x00000043, 0x00000005, SetNpcScale, 0x00000000, 0xFE363C8A, 0xFE363C8A, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x000000FF, 0x0000007A, 0x0000001E, 0x0000000A, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0x0000036B, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x0000000F, PlayEffect, 0x00000038, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000001, 0x00000082, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, MakeLerp, 0x00000078, 0x00000000, 0x0000001E, 0x0000000A, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000008, 0x00000001, 0x0000004B, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000003, 0x0000000B, 0x00000008, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000044, 0x00000001, 0x80240900, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000056, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802423F4_D88DF4 -.word 0x00000043, 0x00000003, BindNpcDefeat, 0xFFFFFFFF, D_80241E44_D88844, 0x00000014, 0x00000001, 0xF5DE0180, 0x00000018, 0x00000001, 0x00000056, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_80241660_D88060, 0x00000016, 0x00000001, 0x00000056, 0x00000044, 0x00000001, 0x80240D3C, 0x00000019, 0x00000001, 0x00000056, 0x00000023, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x10000102, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000010, 0x00000000, 0x00000043, 0x00000003, SetNpcYaw, 0x00000000, 0x0000010E, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802424B4_D88EB4 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802424C4_D88EC4 -.word 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802424D4_D88ED4 -.word 0x00000000, D_802413F0_D87DF0, 0x00000000, 0xC47A0000, 0x00000000, 0x00640D08, D_802424B4_D88EB4, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, D_802413F0_D87DF0, 0x00000000, 0xC47A0000, 0x00000000, 0x00640D08, 0x00000000, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_8024141C_D87E1C, 0x00000000, 0xC47A0000, 0x00000000, 0x00640D09, D_802424C4_D88EC4, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180000, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00180001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, D_802413F0_D87DF0, 0x00000000, 0xC47A0000, 0x00000000, 0x00644D0C, D_802423F4_D88DF4, 0x00000000, 0x00000000, 0x0000005A, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x007F0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, D_802424D4_D88ED4, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_34/D8C3B0.data.s b/ver/us/asm/data/world/area_pra/pra_34/D8C3B0.data.s deleted file mode 100644 index 7f4b8baacf..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_34/D8C3B0.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241000_D8C3B0 -.word 0x41500000, 0x00000000, 0x428C0000, 0x42B40000, 0x436D0000, 0x00000000, 0x428C0000, 0x43870000, 0x436D0000, 0x00000000, 0xC28C0000, 0x43870000, 0x41500000, 0x00000000, 0xC28C0000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80241C4C, D_80241000_D8C3B0, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0019014F, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_34/D8C470.data.s b/ver/us/asm/data/world/area_pra/pra_34/D8C470.data.s deleted file mode 100644 index 214368566a..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_34/D8C470.data.s +++ /dev/null @@ -1,72 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802410C0_D8C470 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802411D0_D8C580 -.word 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_34_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_34_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_34_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_34_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241278_D8C628 -.word 0x00000043, 0x00000003, SetTexPanner, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C81, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000001, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0xFE363C82, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000BB8, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000000, 0x00000008, 0x00000001, 0x000000A0, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024137C_D8C72C -.word 0x0000002E, 0x0000002F, 0xFFFFFFFF - -dlabel D_80241388_D8C738 -.word 0x00000031, 0x00000032, 0xFFFFFFFF - -dlabel D_80241394_D8C744 -.word 0x00000018, 0x00000019, 0xFFFFFFFF - -dlabel D_802413A0_D8C750 -.word 0x00000015, 0x00000016, 0xFFFFFFFF - -dlabel D_802413AC_D8C75C -.word 0x0000002E, 0x0000002F, 0x00000018, 0x00000019, 0xFFFFFFFF - -dlabel D_802413C0_D8C770 -.word 0x00000031, 0x00000032, 0x00000015, 0x00000016, 0xFFFFFFFF - -dlabel D_802413D4_D8C784 -.word 0x00000028, 0x00000029, 0xFFFFFFFF - -dlabel D_802413E0_D8C790 -.word 0x0000002B, 0x0000002C, 0xFFFFFFFF - -dlabel D_802413EC_D8C79C -.word 0x00000012, 0x00000013, 0xFFFFFFFF - -dlabel D_802413F8_D8C7A8 -.word 0x0000000F, 0x00000010, 0xFFFFFFFF - -dlabel D_80241404_D8C7B4 -.word 0x00000028, 0x00000029, 0x00000012, 0x00000013, 0xFFFFFFFF - -dlabel D_80241418_D8C7C8 -.word 0x0000002B, 0x0000002C, 0x0000000F, 0x00000010, 0xFFFFFFFF - -dlabel D_8024142C_D8C7DC -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x0000000D, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413AC_D8C75C, 0x00000024, 0x00000002, 0xFE363C83, D_802413C0_D8C770, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024137C_D8C72C, 0x00000024, 0x00000002, 0xFE363C83, D_80241388_D8C738, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80241E90, 0x00000001, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241510_D8C8C0 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x00000015, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241404_D8C7B4, 0x00000024, 0x00000002, 0xFE363C83, D_80241418_D8C7C8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413D4_D8C784, 0x00000024, 0x00000002, 0xFE363C83, D_802413E0_D8C790, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80241E98, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802415F4_D8C9A4 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x00000019, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241404_D8C7B4, 0x00000024, 0x00000002, 0xFE363C83, D_80241418_D8C7C8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413EC_D8C79C, 0x00000024, 0x00000002, 0xFE363C83, D_802413F8_D8C7A8, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80241E98, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802416D8_D8CA88 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000003, 0x00000024, 0x00000002, 0xFE363C81, 0x00000011, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413AC_D8C75C, 0x00000024, 0x00000002, 0xFE363C83, D_802413C0_D8C770, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241394_D8C744, 0x00000024, 0x00000002, 0xFE363C83, D_802413A0_D8C750, 0x00000013, 0x00000000, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80241E90, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802417BC_D8CB6C -.word 0x00000014, 0x00000000 - -dlabel D_802417C4_D8CB74 -.word 0x0000004D, 0x00000001, 0x00000000, 0x0000004F, 0x00000001, 0x00000001, 0x00000043, 0x00000001, ShowKeyChoicePopup, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D00D8, 0x000000A0, 0x00000028, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000050, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C80, 0xFFFFFFFF, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000050, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000043, 0x00000001, CloseChoicePopup, 0x00000024, 0x00000002, 0xF8406170, 0x00000001, 0x00000043, 0x00000005, pra_34_GetEntityPosition, 0xFD050F80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, PlaySoundAt, 0x00000269, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, pra_34_GetEntityPosition, 0xFD050F81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, PlaySoundAt, 0x00000269, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0xFD050F80, 0x00000043, 0x00000001, pra_34_RemovePadlock, 0x00000024, 0x00000002, 0xFE363C80, 0xFD050F81, 0x00000043, 0x00000001, pra_34_RemovePadlock, 0x00000050, 0x00000001, 0x00000001, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241970_D8CD20 -.word 0x00000047, 0x00000005, D_8024142C_D8C7DC, 0x00000100, 0x0000000D, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802416D8_D8CA88, 0x00000100, 0x00000011, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406170, 0x00000000, 0x0000004E, 0x00000006, D_802417C4_D8CB74, 0x00000100, 0x00004000, D_802417BC_D8CB6C, 0x00000000, 0x00000001, 0x0000004E, 0x00000006, D_802417C4_D8CB74, 0x00000100, 0x00004001, D_802417BC_D8CB6C, 0x00000000, 0x00000001, 0x00000012, 0x00000000, 0x00000047, 0x00000005, D_80241510_D8C8C0, 0x00000100, 0x00000015, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802415F4_D8C9A4, 0x00000100, 0x00000019, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80241A50_D8CE00 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413AC_D8C75C, 0x00000024, 0x00000002, 0xFE363C83, D_802413C0_D8C770, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_8024137C_D8C72C, 0x00000024, 0x00000002, 0xFE363C83, D_80241388_D8C738, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241404_D8C7B4, 0x00000024, 0x00000002, 0xFE363C83, D_80241418_D8C7C8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413D4_D8C784, 0x00000024, 0x00000002, 0xFE363C83, D_802413E0_D8C790, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241404_D8C7B4, 0x00000024, 0x00000002, 0xFE363C83, D_80241418_D8C7C8, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413EC_D8C79C, 0x00000024, 0x00000002, 0xFE363C83, D_802413F8_D8C7A8, 0x00000013, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x0000000A, 0x00000002, 0xF8406152, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_802413AC_D8C75C, 0x00000024, 0x00000002, 0xFE363C83, D_802413C0_D8C770, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80241394_D8C744, 0x00000024, 0x00000002, 0xFE363C83, D_802413A0_D8C750, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80241970_D8CD20, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000046, 0x00000001, 0x80241DD8, 0x00000044, 0x00000001, 0x80241080, 0x00000024, 0x00000002, 0xFE363C80, 0x0000001D, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001E, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000044, 0x00000001, D_80241278_D8C628, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0xF8406152, 0x00000044, 0x00000001, D_802411D0_D8C580, 0x00000044, 0x00000001, D_80241A50_D8CE00, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_34/D8D130.data.s b/ver/us/asm/data/world/area_pra/pra_34/D8D130.data.s deleted file mode 100644 index 57d89384a8..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_34/D8D130.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80241D80_D8D130 -.word 0x00000024, 0x00000002, 0xF8406170, 0x00000001, 0x00000047, 0x00000005, D_80241510_D8C8C0, 0x00000100, 0x00000015, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802415F4_D8C9A4, 0x00000100, 0x00000019, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xF8406170, 0x00000000, 0x00000043, 0x00000007, MakeEntity, Entity_Padlock, 0x000000F0, 0x00000008, 0xFFFFFFB5, 0x0000010E, 0x80000000, 0x00000043, 0x00000002, AssignScript, D_80241D80_D8D130, 0x00000024, 0x00000002, 0xFD050F80, 0xFE363C80, 0x00000043, 0x00000007, MakeEntity, Entity_Padlock, 0x000000F0, 0x00000008, 0x0000004B, 0x0000010E, 0x80000000, 0x00000043, 0x00000002, AssignScript, D_80241D80_D8D130, 0x00000024, 0x00000002, 0xFD050F81, 0xFE363C80, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_35/D8FE60.data.s b/ver/us/asm/data/world/area_pra/pra_35/D8FE60.data.s deleted file mode 100644 index 3e89299b6a..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_35/D8FE60.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80242C10_D8FE60 -.word 0x41500000, 0x00000000, 0x42A00000, 0x42B40000, 0x43F38000, 0x00000000, 0x42A00000, 0x43870000, 0x41500000, 0x00000000, 0xC2A00000, 0x42B40000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x802432FC, D_80242C10_D8FE60, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190150, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000037, 0x00000000, 0x00000008, 0x00000043, 0x00000002, UseDoorSounds, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_35/D8FF10.data.s b/ver/us/asm/data/world/area_pra/pra_35/D8FF10.data.s deleted file mode 100644 index eeb188d9d1..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_35/D8FF10.data.s +++ /dev/null @@ -1,42 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80242CC0_D8FF10 -.word 0x00000043, 0x00000003, SetTexPanner, 0xFE363C80, 0xFE363C82, 0x00000043, 0x00000003, SetTexPanner, 0xFE363C81, 0xFE363C82, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000001, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000001, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetTexPanOffset, 0xFE363C82, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000BB8, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, EnableModel, 0xFE363C81, 0x00000000, 0x00000008, 0x00000001, 0x000000A0, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000002, GetEntryID, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C84, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C85, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFE363C86, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242ED4_D90124 -.word 0x0000003E, 0x00000002, 0x00000010, 0xFE363C8A, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, pra_35_EnableWallReflection, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000001, pra_35_EnableWallReflection, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, pra_35_EnableFloorReflection, 0xFE363C80, 0x00000043, 0x00000002, pra_35_EnablePartnerReflection, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80242F7C_D901CC -.word 0x0000002D, 0x0000002E, 0xFFFFFFFF - -dlabel D_80242F88_D901D8 -.word 0x0000002A, 0x0000002B, 0xFFFFFFFF - -dlabel D_80242F94_D901E4 -.word 0x00000033, 0x00000034, 0xFFFFFFFF - -dlabel D_80242FA0_D901F0 -.word 0x00000030, 0x00000031, 0xFFFFFFFF - -dlabel D_80242FAC_D901FC -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000014, 0x00000024, 0x00000002, 0xFE363C82, D_80242F7C_D901CC, 0x00000024, 0x00000002, 0xFE363C83, D_80242F88_D901D8, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243FD0, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243050_D902A0 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0x00000014, 0x00000024, 0x00000002, 0xFE363C82, D_80242F94_D901E4, 0x00000024, 0x00000002, 0xFE363C83, D_80242FA0_D901F0, 0x00000044, 0x00000001, BaseExitDoor, 0x00000008, 0x00000001, 0x00000011, 0x00000043, 0x00000003, GotoMap, 0x80243FD8, 0x00000000, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802430F4_D90344 -.word 0x0000004D, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, UseExitHeading, 0x0000003C, 0x00000002, 0x00000044, 0x00000001, ExitWalk, 0x00000043, 0x00000003, GotoMap, 0x80243FD0, 0x00000002, 0x00000008, 0x00000001, 0x00000064, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243160_D903B0 -.word 0x00000047, 0x00000005, D_80242FAC_D901FC, 0x00000100, 0x00000014, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80243050_D902A0, 0x00000100, 0x00000021, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_802430F4_D90344, 0x00080000, 0x00000016, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802431C4_D90414 -.word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C82, D_80242F7C_D901CC, 0x00000024, 0x00000002, 0xFE363C83, D_80242F88_D901D8, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80243160_D903B0, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C82, D_80242F94_D901E4, 0x00000024, 0x00000002, 0xFE363C83, D_80242FA0_D901F0, 0x00000046, 0x00000001, BaseEnterDoor, 0x00000044, 0x00000001, D_80243160_D903B0, 0x00000016, 0x00000001, 0x00000002, 0x00000024, 0x00000002, 0xFE363C80, D_80243160_D903B0, 0x00000044, 0x00000001, EnterWalk, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802432A8_D904F8 -.word 0x41500000, 0x00000000, 0xC2A00000, 0x00000000 - -dlabel D_802432B8_D90508 -.word 0x00000043, 0x00000003, EnableGroup, 0x00000019, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000018, 0x7FFFFE00, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0329, 0x00000015, 0x00000043, 0x00000002, SetSpriteShading, 0xFFFFFFFF, 0x00000043, 0x00000006, SetCamPerspective, 0x00000000, 0x00000003, 0x00000019, 0x00000010, 0x00001000, 0x00000043, 0x00000005, SetCamBGColor, 0x00000000, 0x00000018, 0x00000018, 0x00000028, 0x00000043, 0x00000003, SetCamLeadPlayer, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamEnabled, 0x00000000, 0x00000001, 0x00000043, 0x00000003, MakeNpcs, 0x00000001, 0x80243DB0, 0x00000024, 0x00000002, 0xFE363C80, 0x00000040, 0x00000024, 0x00000002, 0xFE363C81, 0x00000041, 0x00000024, 0x00000002, 0xFE363C82, 0x00000000, 0x00000044, 0x00000001, D_80242CC0_D8FF10, 0x00000046, 0x00000001, 0x80243F78, 0x00000044, 0x00000001, D_802431C4_D90414, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xF840616C, 0x00000000, 0x00000047, 0x00000005, D_802432B8_D90508, 0x00100000, D_802432A8_D904F8, 0x00000001, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000003, EnableGroup, 0x00000019, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000018, 0x7FFFFE00, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0xF8406152, 0x00000044, 0x00000001, D_80242ED4_D90124, 0x00000044, 0x00000001, 0x80242C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_35/D90700.data.s b/ver/us/asm/data/world/area_pra/pra_35/D90700.data.s deleted file mode 100644 index f5cf30e24b..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_35/D90700.data.s +++ /dev/null @@ -1,42 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802434B0_D90700 -.word 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000002, OnPlayerFled, 0x00000001, 0x00000016, 0x00000001, 0x00000003, 0x00000043, 0x00000004, SetEnemyFlagBits, 0xFFFFFFFF, 0x00000010, 0x00000001, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00390000, 0x00390002, 0x00390003, 0x00390004, 0x0039000C, 0x00390007, 0x00390008, 0x00390011, 0x00390012, 0xFFFFFFFF - -dlabel D_80243594_D907E4 -.word 0x00390000, 0xFFFFFFFF - -dlabel D_8024359C_D907EC -.word 0x40000000, 0x00000000, 0x00000000, 0x42C80000, 0x42200000, 0x00000007, 0x40733333, 0x0000003C, 0x0000000A, 0x42DC0000, 0x42480000, 0x00000001 - -dlabel D_802435CC_D9081C -.word 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000001, 0x00000003, 0x00000043, 0x00000003, SetSelfVar, 0x00000002, 0x00000007, 0x00000043, 0x00000003, SetSelfVar, 0x00000003, 0x00000006, 0x00000043, 0x00000002, pra_35_ClubbaPatrolAI_Main, D_8024359C_D907EC, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024363C_D9088C -.word 0x00000000, 0x00240022, 0x00000000, 0x00000000, D_802435CC_D9081C, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00170000 - -dlabel D_80243668_D908B8 -.word 0x00000043, 0x00000003, EnableNpcShadow, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000004, 0x00000043, 0x00000003, SetSelfVar, 0x00000001, 0x00000020, 0x00000043, 0x00000003, SetSelfVar, 0x00000002, 0x00000030, 0x00000043, 0x00000003, SetSelfVar, 0x00000003, 0x0000001E, 0x00000043, 0x00000003, SetSelfVar, 0x00000004, 0x00000003, 0x00000043, 0x00000003, SetSelfVar, 0x0000000F, 0x000020C5, 0x00000043, 0x00000001, pra_35_MeleeHitbox_Main, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243710_D90960 -.word 0x00000000, 0x000E0010, 0x00000000, 0x00000000, D_80243668_D908B8, 0x00000000, 0x00000000, D_802434B0_D90700, 0x00000000, 0x00000000, 0x00170008 - -dlabel D_8024373C_D9098C -.word 0x40000000, 0x00000000, 0x00000000, 0x42C80000, 0x00000000, 0x00000004, 0x40600000, 0x0000001E, 0x00000003, 0x43160000, 0x00000000, 0x00000001 - -dlabel D_8024376C_D909BC -.word 0x00000043, 0x00000002, pra_35_PatrolNoAttackAI_Main, D_8024373C_D9098C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_8024378C_D909DC -.word 0x00000000, 0x001E001E, 0x00000000, 0x00000000, D_8024376C_D909BC, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000000, 0x00000000, 0x00170000 - -dlabel D_802437B8_D90A08 -.word 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00080000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_802437E0_D90A30 -.word 0x00000000, D_8024363C_D9088C, 0x43480000, 0x00000000, 0x42960000, 0x00000C00, D_802437B8_D90A08, 0x00000000, 0x00000000, 0x0000005A, 0x8005008C, 0x000A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x3FFF0002, 0x33322666, 0x33320002, 0x33323FFF, 0x33320002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030000, 0x00000002, 0x000000C8, 0x00000000, 0x0000004B, 0x0000012C, 0x00000000, 0x0000004B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x000000FA, 0x00000000, 0x0000004B, 0x000000C8, 0x00000064, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000001, D_80243710_D90960, 0x00000000, 0xC47A0000, 0x00000000, 0x00800D00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00007FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390102, 0x00390103, 0x00390104, 0x00390104, 0x00390102, 0x00390102, 0x0039010C, 0x0039010C, 0x00390111, 0x00390112, 0x00390107, 0x00390108, 0x00390102, 0x00390102, 0x00390102, 0x00390102, 0x00000000, 0x00000000, D_80243594_D907E4, 0x00000000 - -dlabel D_80243BC0_D90E10 -.word 0x00000004, D_8024378C_D909DC, 0x43480000, 0x00000000, 0xC2960000, 0x00200C00, D_802437B8_D90A08, 0x00000000, 0x00000000, 0x0000005A, 0x80050096, 0x000A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x59980002, 0x3FFF2666, 0x4CCC0002, 0x3FFF3FFF, 0x3FFF0002, 0x33326665, 0x33320002, 0x33327FFF, 0x26660002, 0x26660000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001999, 0x3FFF0003, 0x33322666, 0x33320003, 0x33323FFF, 0x33320003, 0x33326665, 0x33320003, 0x33327FFF, 0x26660003, 0x33320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00000002, 0x000000C8, 0x00000000, 0xFFFFFFB5, 0x0000012C, 0x00000000, 0xFFFFFFB5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF8001, 0x000000FA, 0x00000000, 0x0000004B, 0x000000C8, 0x00000064, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E0002, 0x004E0003, 0x004E0004, 0x004E0004, 0x004E0002, 0x004E0002, 0x004E000A, 0x004E000A, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x004E0002, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000002, D_802437E0_D90A30, 0x1F080002, 0x00000001, D_80243BC0_D90E10, 0x21040001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_pra/pra_35/D91030.data.s b/ver/us/asm/data/world/area_pra/pra_35/D91030.data.s deleted file mode 100644 index 4fc106cabc..0000000000 --- a/ver/us/asm/data/world/area_pra/pra_35/D91030.data.s +++ /dev/null @@ -1,15 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel pra_35_varStash -.word 0x00000000 - -dlabel D_80243DE4_D91034 -.word 0x0000004D, 0x00000001, 0x00000000, 0x00000043, 0x00000002, SetTimeFreezeMode, 0x00000002, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000004, ShowGotItem, 0xFE363C80, 0x00000000, 0x00000000, 0x00000043, 0x00000002, SetTimeFreezeMode, 0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243E4C_D9109C -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000024, 0x00000002, 0xFE363C80, 0xFE363C8A, 0x0000000B, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000046, 0x00000001, D_80243DE4_D91034, 0x00000013, 0x00000000, 0x00000014, 0x00000001, 0xFE363C8B, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000003, AddItem, 0xFE363C8A, 0xFE363C80, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000002, AddKeyItem, 0xFE363C8A, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000003, AddBadge, 0xFE363C8A, 0xFE363C80, 0x00000023, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 - -dlabel D_80243F2C_D9117C -.word 0x00000024, 0x00000002, 0xFE363C8A, 0x00000106, 0x00000024, 0x00000002, 0xFE363C8B, 0x00000002, 0x00000024, 0x00000002, 0xF840616D, 0x00000001, 0x00000046, 0x00000001, D_80243E4C_D9109C, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000008, MakeEntity, Entity_Chest, 0x000001B3, 0x00000000, 0xFFFFFFBA, 0x00000000, 0x00000000, 0x80000000, 0x00000043, 0x00000002, AssignChestFlag, 0xF840616D, 0x00000043, 0x00000002, AssignScript, D_80243F2C_D9117C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index 62b17e4819..2d722bfdb5 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -10910,23 +10910,25 @@ segments: start: 0x9EB7F0 vram: 0x80240000 subsegments: - - [0x9EB7F0, c] - - [0x9EC610, data] - - [0x9EC700, data] - - [0x9ECBD0, data] - - [0x9EDB90] + - [0x9EB7F0, c, nok_03_0_header] + - [0x9EB7F0, c, nok_03_1_music] + - [0x9EB7F0, c, nok_03_2_main] + - [0x9EB7F0, c, nok_03_3_entity] + - [0x9EB7F0, c, nok_03_4_npc] + - [0x9EC610] - name: nok_04 dir: world/area_nok/nok_04 type: code start: 0x9EDBF0 vram: 0x80240000 subsegments: - - [0x9EDBF0, c] - - [0x9EEA80, c] - - [0x9EEB20, data] - - [0x9EEC40, data] - - [0x9EEEB0, data] - - [0x9F4A00] + - [0x9EDBF0, c, nok_04_0_header] + - [0x9EDBF0, c, nok_04_1_music] + - [0x9EDBF0, c, nok_04_2_main] + - [0x9EDBF0, c, nok_04_3_entity] + - [0x9EDBF0, c, nok_04_4_npc] + - [0x9EEA80, c, nok_04_5_partner] + - [0x9EEB20] - name: nok_11 dir: world/area_nok/nok_11 type: code @@ -14213,11 +14215,11 @@ segments: start: 0xD58890 vram: 0x80240000 subsegments: - - [0xD58890, c] - - [0xD588B0, c] - - [0xD59EE0, data] - - [0xD59F80, data] - - [0xD5F2A0] + - [0xD58890, c, pra_09_0_header] + - [0xD588B0, c, pra_09_1_music] + - [0xD588B0, c, pra_09_2_main] + - [0xD597B0, c, pra_09_3_npc] + - [0xD59EE0] - name: pra_10 dir: world/area_pra/pra_10 type: code @@ -14257,12 +14259,11 @@ segments: start: 0xD645E0 vram: 0x80240000 subsegments: - - [0xD645E0, c] - - [0xD64600, c] - - [0xD65BC0, data] - - [0xD65C70, data] - - [0xD66880, data] - - [0xD67CF0] + - [0xD645E0, c, pra_13_0_header] + - [0xD64600, c, pra_13_1_music] + - [0xD64600, c, pra_13_2_main] + - [0xD65500, c, pra_13_3_npc] + - [0xD65BC0] - name: pra_14 dir: world/area_pra/pra_14 type: code @@ -14301,12 +14302,11 @@ segments: start: 0xD6B620 vram: 0x80240000 subsegments: - - [0xD6B620, c] - - [0xD6B640, c] - - [0xD6C540, data] - - [0xD6C5F0, data] - - [0xD6CF60, data] - - [0xD6E9A0] + - [0xD6B620, c, pra_18_0_header] + - [0xD6B640, c, pra_18_1_music] + - [0xD6B640, c, pra_18_2_main] + - [0xD6B640, c, pra_18_3_npc] + - [0xD6C540] - name: pra_19 dir: world/area_pra/pra_19 type: code @@ -14378,25 +14378,106 @@ segments: start: 0xD7CB50 vram: 0x80240000 subsegments: - - [0xD7CB50, c] - - [0xD7CB70, c] - - [0xD7DDD0, data] - - [0xD7DE90, data] - - [0xD7E9B0, data] - - [0xD7ED50] + - [0xD7CB50, c, pra_29_0_header] + - [0xD7CB70, c, pra_29_1_music] + - [0xD7CB70, c, pra_29_2_entity] + - [0xD7CB70, c, pra_29_3_main] + - [0xD7DA70, c, pra_29_4_bridge] + - [0xD7DDD0] - name: pra_31 dir: world/area_pra/pra_31 type: code start: 0xD7ED60 vram: 0x80240000 subsegments: - - [0xD7ED60, c] - - [0xD7ED80, c] - - [0xD7F270, c] - - [0xD7FE10, data] - - [0xD7FEC0, data] - - [0xD80E20, data] - - [0xD81250, data] + - [0xD7ED60, c, pra_31_0_header] + - [0xD7ED80, c, pra_31_1_music] + - [0xD7ED80, c, pra_31_2_npc] + - [0xD7F270, c, pra_31_3_main] + - [0xD7F270, c, pra_31_4_puzzle] + - [0xD7FE10, c, pra_31_5_texture_1] + - [0xD7FE10, c, pra_31_6_texture_2] + - [0xD7FE10, c, pra_31_7_texture_3] + - [0xD7FE10, c, pra_31_8_stairs_skele] + - [0xD7FE10, c, pra_31_9_stairs_anim] + - [0xD7FE10, c, pra_31_10_stairs_lights] + - [0xD7FE10, c, pra_31_11_stairs_vtx] + - [0xD7FE10, .data, pra_31_0_header] + - [0xD7FE80, .data, pra_31_1_music] + - [0xD7FEC0, .data, pra_31_2_npc] + - [0xD80E20, .data, pra_31_3_main] + - [0xD81250, .data, pra_31_4_puzzle] + - start: 0xD82270 + type: .data + name: pra_31_5_texture_1 + subsegments: + - [0xD82270, ci4, texture_1, 64, 64] + - [0xD82A70, palette, texture_1] + - [0xD82A90, gfx, texture_1] + - [0xD82B48] + - start: 0xD82B50 + type: .data + name: pra_31_6_texture_2 + subsegments: + - [0xD82B50, ci4, texture_2, 64, 64] + - [0xD83350, palette, texture_2] + - [0xD83370, gfx, texture_2] + - [0xD83418] + - start: 0xD83420 + type: .data + name: pra_31_7_texture_3 + subsegments: + - [0xD83420, rgba16, texture_3, 32, 32] + - [0xD83C20, gfx, texture_3] + - [0xD83CA8] + - start: 0xD83CB0 + type: .data + name: pra_31_8_stairs_skele + subsegments: + - [0xD83CB0, gfx, unk_01] + - [0xD83D28, gfx, unk_02] + - [0xD83D60, gfx, unk_03] + - [0xD83DC8, gfx, unk_04] + - [0xD83E00, gfx, unk_05] + - [0xD83E78, gfx, unk_06] + - [0xD83EB0, gfx, unk_07] + - [0xD83F28, gfx, unk_08] + - [0xD83F60, gfx, unk_09] + - [0xD83FC8, gfx, unk_10] + - [0xD84000, gfx, unk_11] + - [0xD84078, gfx, unk_12] + - [0xD840B0, gfx, unk_13] + - [0xD84128, gfx, unk_14] + - [0xD84160, gfx, unk_15] + - [0xD841C8, gfx, unk_16] + - [0xD84200, gfx, unk_17] + - [0xD84278, gfx, unk_18] + - [0xD842B0, gfx, unk_19] + - [0xD84328, gfx, unk_20] + - [0xD84360, gfx, unk_21] + - [0xD843C8, gfx, unk_22] + - [0xD84400, gfx, unk_23] + - [0xD84478, gfx, unk_24] + - [0xD844B0, gfx, unk_25] + - [0xD84528, gfx, unk_26] + - [0xD84560, gfx, unk_27] + - [0xD845C8, gfx, unk_28] + - [0xD84628, gfx, unk_29] + - [0xD84690, gfx, unk_30] + - [0xD846D8, gfx, unk_31] + - [0xD84768, gfx, unk_32] + - [0xD84790, gfx, unk_33] + - [0xD847B8, gfx, unk_34] + - [0xD847F0] + - [0xD84E90, .data, pra_31_9_stairs_anim] + - [0xD86480, .data, pra_31_10_stairs_lights] + - start: 0xD864A0 + type: .data + name: pra_31_11_stairs_vtx + subsegments: + - [0xD864A0] + - [0xD86820, vtx, stairs] + - [0xD869E0] - [0xD869E0] - name: pra_32 dir: world/area_pra/pra_32 @@ -14404,11 +14485,11 @@ segments: start: 0xD86A00 vram: 0x80240000 subsegments: - - [0xD86A00, c] - - [0xD86A20, c] - - [0xD87240, data] - - [0xD87DF0, data] - - [0xD896B0] + - [0xD86A00, c, pra_32_0_header] + - [0xD86A20, c, pra_32_1_music] + - [0xD86A20, c, pra_32_2_main] + - [0xD86A20, c, pra_32_3_npc] + - [0xD87240] - name: pra_33 dir: world/area_pra/pra_33 type: code @@ -14426,26 +14507,23 @@ segments: start: 0xD8B3B0 vram: 0x80240000 subsegments: - - [0xD8B3B0, c] - - [0xD8B3D0, c] - - [0xD8C3B0, data] - - [0xD8C470, data] - - [0xD8D130, data] - - [0xD8D240] + - [0xD8B3B0, c, pra_34_0_header] + - [0xD8B3D0, c, pra_34_1_music] + - [0xD8B3D0, c, pra_34_2_main] + - [0xD8B3D0, c, pra_34_3_entity] + - [0xD8C3B0] - name: pra_35 dir: world/area_pra/pra_35 type: code start: 0xD8D250 vram: 0x80240000 subsegments: - - [0xD8D250, c] - - [0xD8D270, c] - - [0xD8FBA0, c] - - [0xD8FE60, data] - - [0xD8FF10, data] - - [0xD90700, data] - - [0xD91030, data] - - [0xD91220] + - [0xD8B3B0, c, pra_35_0_header] + - [0xD8D270, c, pra_35_1_music] + - [0xD8D270, c, pra_35_2_main] + - [0xD8D270, c, pra_35_3_npc] + - [0xD8FBA0, c, pra_35_4_entity] + - [0xD8FE60] - name: pra_36 dir: world/area_pra/pra_36 type: code diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index 35623e42fa..8d4d1eb5a5 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -5435,7 +5435,7 @@ WaitForPlayerMoveToComplete = 0x802D24F4; // type:func rom:0xF6EA4 WaitForPlayerInputEnabled = 0x802D2508; // type:func rom:0xF6EB8 func_802D2520 = 0x802D2520; // type:func rom:0xF6ED0 func_802D286C = 0x802D286C; // type:func rom:0xF721C -func_802D2884 = 0x802D2884; // type:func rom:0xF7234 +FacePlayerTowardPoint = 0x802D2884; // type:func rom:0xF7234 DisablePulseStone = 0x802D2AA8; // type:func rom:0xF7458 GetPartnerInUse = 0x802D2B0C; // type:func rom:0xF74BC ForceUsePartner = 0x802D2B50; // type:func rom:0xF7500 @@ -15013,9 +15013,9 @@ SetNewItemVisGroup = 0x80282774; // type:func rom:0x7E35F4 RestorePrevItemVisGroup = 0x802827A8; // type:func rom:0x7E3628 GetDoorData = 0x802827CC; // type:func rom:0x7E364C GetDoorPtr = 0x80282868; // type:func rom:0x7E36E8 -func_80282880 = 0x80282880; // type:func rom:0x7E3700 -func_802828DC = 0x802828DC; // type:func rom:0x7E375C -func_80282C40 = 0x80282C40; // type:func rom:0x7E3AC0 +ClearPushedBlockFromGrid = 0x80282880; // type:func rom:0x7E3700 +UpdatePushBlockMotion = 0x802828DC; // type:func rom:0x7E375C +FinishPushBlockMotion = 0x80282C40; // type:func rom:0x7E3AC0 func_80282E30 = 0x80282E30; // type:func rom:0x7E3CB0 func_80283080 = 0x80283080; // type:func rom:0x7E3F00 func_80283174 = 0x80283174; // type:func rom:0x7E3FF4 @@ -24330,10 +24330,68 @@ func_80240C70_D7F9D0 = 0x80240C70; // type:func rom:0xD7F9D0 pra_31_UnkFunc12 = 0x80240DBC; // type:func rom:0xD7FB1C func_80240E70_D7FBD0 = 0x80240E70; // type:func rom:0xD7FBD0 func_80240F2C_D7FC8C = 0x80240F2C; // type:func rom:0xD7FC8C -func_80240FD0_D7FD30 = 0x80240FD0; // type:func rom:0xD7FD30 +EndBlockPushingState = 0x80240FD0; // type:func rom:0xD7FD30 pra_31_UnkFunc11 = 0x80240FF0; // type:func rom:0xD7FD50 pra_31_ItemChoice_HasSelectedItem = 0x8024119C; // type:data rom:0xD7FEFC pra_31_ItemChoice_SelectedItemID = 0x802411A0; // type:data rom:0xD7FF00 +pra_31_texture_1_img = 0x80243510; // segment:pra_31 type:data rom:0xD82270 +pra_31_texture_1_pal = 0x80243D10; // segment:pra_31 type:data rom:0xD82A70 +pra_31_texture_1_gfx = 0x80243D30; // segment:pra_31 type:data rom:0xD82A90 +pra_31_texture_2_img = 0x80243DF0; // segment:pra_31 type:data rom:0xD82B50 +pra_31_texture_2_pal = 0x802445F0; // segment:pra_31 type:data rom:0xD83350 +pra_31_texture_2_gfx = 0x80244610; // segment:pra_31 type:data rom:0xD83370 +pra_31_texture_3_img = 0x802446C0; // segment:pra_31 type:data rom:0xD83420 +pra_31_texture_3_gfx = 0x80244EC0; // segment:pra_31 type:data rom:0xD83C20 +pra_31_unk_01_gfx = 0x80244F50; // segment:pra_31 type:data rom:0xD83CB0 +pra_31_unk_02_gfx = 0x80244FC8; // segment:pra_31 type:data rom:0xD83D28 +pra_31_unk_03_gfx = 0x80245000; // segment:pra_31 type:data rom:0xD83D60 +pra_31_unk_04_gfx = 0x80245068; // segment:pra_31 type:data rom:0xD83DC8 +pra_31_unk_05_gfx = 0x802450A0; // segment:pra_31 type:data rom:0xD83E00 +pra_31_unk_06_gfx = 0x80245118; // segment:pra_31 type:data rom:0xD83E78 +pra_31_unk_07_gfx = 0x80245150; // segment:pra_31 type:data rom:0xD83EB0 +pra_31_unk_08_gfx = 0x802451C8; // segment:pra_31 type:data rom:0xD83F28 +pra_31_unk_09_gfx = 0x80245200; // segment:pra_31 type:data rom:0xD83F60 +pra_31_unk_10_gfx = 0x80245268; // segment:pra_31 type:data rom:0xD83FC8 +pra_31_unk_11_gfx = 0x802452A0; // segment:pra_31 type:data rom:0xD84000 +pra_31_unk_12_gfx = 0x80245318; // segment:pra_31 type:data rom:0xD84078 +pra_31_unk_13_gfx = 0x80245350; // segment:pra_31 type:data rom:0xD840B0 +pra_31_unk_14_gfx = 0x802453C8; // segment:pra_31 type:data rom:0xD84128 +pra_31_unk_15_gfx = 0x80245400; // segment:pra_31 type:data rom:0xD84160 +pra_31_unk_16_gfx = 0x80245468; // segment:pra_31 type:data rom:0xD841C8 +pra_31_unk_17_gfx = 0x802454A0; // segment:pra_31 type:data rom:0xD84200 +pra_31_unk_18_gfx = 0x80245518; // segment:pra_31 type:data rom:0xD84278 +pra_31_unk_19_gfx = 0x80245550; // segment:pra_31 type:data rom:0xD842B0 +pra_31_unk_20_gfx = 0x802455C8; // segment:pra_31 type:data rom:0xD84328 +pra_31_unk_21_gfx = 0x80245600; // segment:pra_31 type:data rom:0xD84360 +pra_31_unk_22_gfx = 0x80245668; // segment:pra_31 type:data rom:0xD843C8 +pra_31_unk_23_gfx = 0x802456A0; // segment:pra_31 type:data rom:0xD84400 +pra_31_unk_24_gfx = 0x80245718; // segment:pra_31 type:data rom:0xD84478 +pra_31_unk_25_gfx = 0x80245750; // segment:pra_31 type:data rom:0xD844B0 +pra_31_unk_26_gfx = 0x802457C8; // segment:pra_31 type:data rom:0xD84528 +pra_31_unk_27_gfx = 0x80245800; // segment:pra_31 type:data rom:0xD84560 +pra_31_unk_28_gfx = 0x80245868; // segment:pra_31 type:data rom:0xD845C8 +pra_31_unk_29_gfx = 0x802458C8; // segment:pra_31 type:data rom:0xD84628 +pra_31_unk_30_gfx = 0x80245930; // segment:pra_31 type:data rom:0xD84690 +pra_31_unk_31_gfx = 0x80245978; // segment:pra_31 type:data rom:0xD846D8 +pra_31_unk_32_gfx = 0x80245A08; // segment:pra_31 type:data rom:0xD84768 +pra_31_unk_33_gfx = 0x80245A30; // segment:pra_31 type:data rom:0xD84790 +pra_31_unk_34_gfx = 0x80245A58; // segment:pra_31 type:data rom:0xD847B8 +pra_31_unk_30_mtx = 0x80247740; // segment:pra_31 type:data rom:0xD864A0 +pra_31_unk_26_mtx = 0x80247780; // segment:pra_31 type:data rom:0xD864E0 +pra_31_unk_24_mtx = 0x802477C0; // segment:pra_31 type:data rom:0xD86520 +pra_31_unk_22_mtx = 0x80247800; // segment:pra_31 type:data rom:0xD86560 +pra_31_unk_20_mtx = 0x80247840; // segment:pra_31 type:data rom:0xD865A0 +pra_31_unk_18_mtx = 0x80247880; // segment:pra_31 type:data rom:0xD865E0 +pra_31_unk_16_mtx = 0x802478C0; // segment:pra_31 type:data rom:0xD86620 +pra_31_unk_14_mtx = 0x80247900; // segment:pra_31 type:data rom:0xD86660 +pra_31_unk_12_mtx = 0x80247940; // segment:pra_31 type:data rom:0xD866A0 +pra_31_unk_10_mtx = 0x80247980; // segment:pra_31 type:data rom:0xD866E0 +pra_31_unk_08_mtx = 0x802479C0; // segment:pra_31 type:data rom:0xD86720 +pra_31_unk_06_mtx = 0x80247A00; // segment:pra_31 type:data rom:0xD86760 +pra_31_unk_04_mtx = 0x80247A40; // segment:pra_31 type:data rom:0xD867A0 +pra_31_unk_02_mtx = 0x80247A80; // segment:pra_31 type:data rom:0xD867E0 +pra_31_stairs_lights = 0x80247720; // segment:pra_31 type:data rom:0xD86480 +pra_31_stairs_vtx = 0x80247AC0; // segment:pra_31 type:data rom:0xD86820 size:0x1D0 D_802424F0_D81250 = 0x802424F0; // type:data rom:0xD81250 D_80242514_D81274 = 0x80242514; // type:data rom:0xD81274 D_80242538_D81298 = 0x80242538; // type:data rom:0xD81298 @@ -26366,7 +26424,6 @@ D_80247AF0 = 0x80247AF0; // type:data D_80247B00 = 0x80247B00; // type:data flo_13_D_80247B00 = 0x80247B00; // type:data D_80247BB8 = 0x80247BB8; // type:data -D_80247BF0 = 0x80247BF0; // type:data D_80247CA0 = 0x80247CA0; // type:data D_80247CB4 = 0x80247CB4; // type:data jan_00_LetterDelivery_SavedNpcAnim = 0x80247CB4; // type:data @@ -27127,7 +27184,7 @@ D_802DBB60 = 0x802DBB60; // type:data D_802DBB68 = 0x802DBB68; // type:data gWorldMapFlags = 0x802DBC70; // size:0xC DoorModelsSwingCW = 0x802DBC7C; // type:data -D_802DBC88 = 0x802DBC88; // type:data +wPushBlockGrids = 0x802DBC88; // type:data gWorldMapVars = 0x802DBCA8; // size:0x40 gBattleMapVars = 0x802DBCE8; // size:0x40 DoorModelsSwingCCW = 0x802DBD28; // type:data diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index fa48c9d6c4..78e9a21b62 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -336,7 +336,7 @@ dead_IsPlayerOnValidFloor = IsPlayerOnValidFloor + 0xD620; dead_WaitForPlayerInputEnabled = WaitForPlayerInputEnabled + 0xD620; dead_func_802D2520 = func_802D2520 + 0xD620; dead_func_802D286C = func_802D286C + 0xD64C; -dead_func_802D2884 = func_802D2884 + 0xD64C; +dead_FacePlayerTowardPoint = FacePlayerTowardPoint + 0xD64C; dead_GetPartnerInUse = GetPartnerInUse + 0xD64C; dead_InterruptUsePartner = InterruptUsePartner + 0xD64C; dead_func_802D2C14 = func_802D2C14 + 0xD64C;