From 179998098cb055456eceb082c2eb2c5f1e0d50cb Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 5 May 2022 10:08:16 -0400 Subject: [PATCH] Misc decomp 53 (#703) * some btl_state work * msg_draw_speech_bubble * cleaners * btl_state_stuff * btl_state_update_next_enemy wip * btl_state stuff * disable_x fx + cleanup * wip * fxstuff * path funcs & cleanup * clean * model_api funcs * two action commands * action_cmd progress * UnkFunc001 * air raid func * cleanup, data migration, goodies * remove data file * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "a847090eac" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "a847090eac" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * fix build * more cleanup * clean * PR comments --- .gitignore | 1 + include/common_structs.h | 81 +- include/effects.h | 21 +- include/effects_internal.h | 2 +- include/enums.h | 30 + include/functions.h | 10 +- include/model.h | 2 + include/npc.h | 56 +- include/nu/nualsgi.h | 5 +- include/variables.h | 1 - requirements.txt | 1 + src/16F740.c | 797 ++++++++++++++++-- src/16c8e0.c | 4 +- src/190B20.c | 24 +- src/1A5830.c | 2 +- src/1a1f0_len_5390.c | 1 + src/415D90.c | 604 ++++++++++--- src/77480.c | 12 +- src/7B440.c | 2 +- src/7E9D0.c | 4 +- src/7bb60_len_41b0.c | 10 +- src/891b0_len_fb0.c | 22 +- src/919B0.c | 555 ++++++++++++ src/9D650.c | 13 - src/9d10_len_1080.c | 2 +- src/C50A0.c | 2 +- src/actor_api.c | 76 +- src/battle/action_cmd/07.c | 101 ++- src/battle/action_cmd/0A.c | 103 ++- src/battle/action_cmd/air_lift.c | 149 +++- src/battle/action_cmd/air_raid.c | 169 +++- src/battle/area_arn/stage/arn_01.c | 4 +- src/battle/area_arn/stage/arn_02.c | 4 +- src/battle/area_arn/stage/arn_03.c | 4 +- src/battle/area_arn/stage/arn_04.c | 4 +- src/battle/area_arn/stage/arn_05.c | 4 +- src/battle/area_arn/stage/arn_06.c | 4 +- src/battle/area_dgb/stage/dgb_01.c | 4 +- src/battle/area_dgb/stage/dgb_02.c | 4 +- src/battle/area_dgb/stage/dgb_03.c | 4 +- src/battle/area_dgb/stage/dgb_04.c | 4 +- src/battle/area_dgb/stage/dgb_05.c | 4 +- src/battle/area_hos/stage/hos_00.c | 4 +- src/battle/area_hos/stage/hos_01.c | 4 +- src/battle/area_hos/stage/hos_02.c | 4 +- src/battle/area_isk_part_1/stage/isk_00.c | 4 +- src/battle/area_isk_part_1/stage/isk_01.c | 4 +- src/battle/area_isk_part_1/stage/isk_02.c | 4 +- src/battle/area_isk_part_1/stage/isk_02b.c | 4 +- src/battle/area_isk_part_1/stage/isk_02c.c | 4 +- src/battle/area_isk_part_1/stage/isk_03.c | 4 +- src/battle/area_isk_part_1/stage/isk_03b.c | 4 +- src/battle/area_isk_part_1/stage/isk_04.c | 4 +- src/battle/area_isk_part_1/stage/isk_05.c | 4 +- src/battle/area_isk_part_1/stage/isk_06.c | 4 +- src/battle/area_isk_part_1/stage/isk_06b.c | 4 +- src/battle/area_isk_part_1/stage/isk_07.c | 4 +- src/battle/area_isk_part_1/stage/isk_08.c | 4 +- src/battle/area_isk_part_2/stage/isk_00.c | 4 +- src/battle/area_isk_part_2/stage/isk_01.c | 4 +- src/battle/area_isk_part_2/stage/isk_02.c | 4 +- src/battle/area_isk_part_2/stage/isk_02b.c | 4 +- src/battle/area_isk_part_2/stage/isk_02c.c | 4 +- src/battle/area_isk_part_2/stage/isk_03.c | 4 +- src/battle/area_isk_part_2/stage/isk_03b.c | 4 +- src/battle/area_isk_part_2/stage/isk_04.c | 4 +- src/battle/area_isk_part_2/stage/isk_05.c | 4 +- src/battle/area_isk_part_2/stage/isk_06.c | 4 +- src/battle/area_isk_part_2/stage/isk_06b.c | 4 +- src/battle/area_isk_part_2/stage/isk_07.c | 4 +- src/battle/area_iwa/stage/iwa_01.c | 4 +- src/battle/area_iwa/stage/iwa_01b.c | 4 +- src/battle/area_iwa/stage/iwa_02.c | 4 +- src/battle/area_jan/stage/jan_00.c | 4 +- src/battle/area_jan/stage/jan_01.c | 4 +- src/battle/area_jan/stage/jan_01b.c | 4 +- src/battle/area_jan/stage/jan_02.c | 4 +- src/battle/area_jan/stage/jan_03.c | 4 +- src/battle/area_jan/stage/jan_03b.c | 4 +- src/battle/area_jan/stage/jan_04.c | 4 +- src/battle/area_jan/stage/jan_04b.c | 4 +- src/battle/area_jan2/stage/jan_00.c | 4 +- src/battle/area_jan2/stage/jan_01.c | 4 +- src/battle/area_jan2/stage/jan_01b.c | 4 +- src/battle/area_jan2/stage/jan_02.c | 4 +- src/battle/area_jan2/stage/jan_03.c | 4 +- src/battle/area_jan2/stage/jan_03b.c | 4 +- src/battle/area_jan2/stage/jan_04.c | 4 +- src/battle/area_jan2/stage/jan_04b.c | 4 +- src/battle/area_kgr/stage/kgr_01.c | 4 +- src/battle/area_kmr_part_1/stage/kmr_02.c | 4 +- src/battle/area_kmr_part_1/stage/kmr_03.c | 4 +- src/battle/area_kmr_part_1/stage/kmr_04.c | 4 +- src/battle/area_kmr_part_1/stage/kmr_05.c | 4 +- src/battle/area_kmr_part_1/stage/kmr_06.c | 4 +- src/battle/area_kmr_part_2/stage/kmr_02.c | 4 +- src/battle/area_kmr_part_2/stage/kmr_03.c | 4 +- src/battle/area_kmr_part_2/stage/kmr_04.c | 4 +- src/battle/area_kmr_part_2/stage/kmr_05.c | 4 +- src/battle/area_kmr_part_2/stage/kmr_06.c | 4 +- src/battle/area_kmr_part_3/stage/kmr_02.c | 4 +- src/battle/area_kmr_part_3/stage/kmr_03.c | 4 +- src/battle/area_kmr_part_3/stage/kmr_04.c | 4 +- src/battle/area_kmr_part_3/stage/kmr_05.c | 4 +- src/battle/area_kmr_part_3/stage/kmr_06.c | 4 +- src/battle/area_kmr_part_3/stage/kpa_01.c | 4 +- src/battle/area_kmr_part_3/stage/mac_01.c | 4 +- src/battle/area_kmr_part_3/stage/mim_01.c | 4 +- src/battle/area_kmr_part_3/stage/nok_01.c | 4 +- src/battle/area_kmr_part_3/stage/sam_01.c | 4 +- src/battle/area_kzn/stage/kzn_01.c | 4 +- src/battle/area_kzn/stage/kzn_01b.c | 4 +- src/battle/area_kzn/stage/kzn_02.c | 4 +- src/battle/area_kzn/stage/kzn_04.c | 4 +- src/battle/area_kzn/stage/kzn_04b.c | 4 +- src/battle/area_kzn/stage/kzn_04c.c | 4 +- src/battle/area_kzn/stage/kzn_05.c | 4 +- src/battle/area_mac/stage/mac_01.c | 4 +- src/battle/area_mac/stage/mac_02.c | 4 +- src/battle/area_mim/stage/mim_01.c | 4 +- src/battle/area_nok/stage/nok_01.c | 4 +- src/battle/area_nok/stage/nok_02.c | 4 +- src/battle/area_nok/stage/nok_03.c | 4 +- src/battle/area_nok/stage/nok_04.c | 4 +- src/battle/area_omo/stage/omo_01.c | 4 +- src/battle/area_omo/stage/omo_02.c | 4 +- src/battle/area_omo/stage/omo_03.c | 4 +- src/battle/area_omo/stage/omo_03b.c | 4 +- src/battle/area_omo/stage/omo_04.c | 4 +- src/battle/area_omo/stage/omo_05.c | 4 +- src/battle/area_omo/stage/omo_05b.c | 4 +- src/battle/area_omo/stage/omo_06.c | 4 +- src/battle/area_omo/stage/omo_07.c | 4 +- src/battle/area_sbk/stage/sbk_02.c | 4 +- src/battle/area_trd_part_1/stage/trd_00.c | 4 +- src/battle/area_trd_part_1/stage/trd_01.c | 4 +- src/battle/area_trd_part_1/stage/trd_02.c | 4 +- src/battle/area_trd_part_1/stage/trd_02b.c | 4 +- src/battle/area_trd_part_1/stage/trd_02c.c | 4 +- src/battle/area_trd_part_1/stage/trd_02d.c | 4 +- src/battle/area_trd_part_1/stage/trd_03.c | 4 +- src/battle/area_trd_part_1/stage/trd_04.c | 4 +- src/battle/area_trd_part_1/stage/trd_05.c | 4 +- src/battle/area_trd_part_1/stage/trd_05b.c | 4 +- src/battle/area_trd_part_1/stage/trd_05c.c | 4 +- src/battle/area_trd_part_1/stage/trd_05d.c | 4 +- src/battle/area_trd_part_1/stage/trd_05e.c | 4 +- src/battle/area_trd_part_1/stage/trd_05f.c | 4 +- src/battle/area_trd_part_2/stage/trd_00.c | 4 +- src/battle/area_trd_part_2/stage/trd_01.c | 4 +- src/battle/area_trd_part_2/stage/trd_02.c | 4 +- src/battle/area_trd_part_2/stage/trd_02b.c | 4 +- src/battle/area_trd_part_2/stage/trd_03.c | 4 +- src/battle/area_trd_part_2/stage/trd_04.c | 4 +- src/battle/area_trd_part_2/stage/trd_05.c | 4 +- src/battle/area_trd_part_2/stage/trd_05b.c | 4 +- src/battle/area_trd_part_2/stage/trd_05c.c | 4 +- src/battle/area_trd_part_2/stage/trd_05d.c | 4 +- src/battle/area_trd_part_2/stage/trd_05e.c | 4 +- src/battle/area_trd_part_2/stage/trd_05f.c | 4 +- src/battle/area_trd_part_3/stage/nok_01.c | 4 +- src/battle/battle.h | 8 +- src/battle/item/food.c | 6 +- src/battle/item/life_shroom.c | 6 +- src/battle/item/mushroom.c | 6 +- src/battle/item/super_soda.c | 10 +- src/battle/item/tasty_tonic.c | 4 +- src/battle/star/refresh/78B600.c | 2 +- src/effects/disable_x.c | 316 ++++++- src/evt/f8f60_len_1560.c | 261 ++++-- src/evt/fa4c0_len_3bf0.c | 20 +- src/evt/model_api.c | 141 +++- src/main_pre.c | 26 + src/msg.c | 151 +++- src/sprite.c | 44 +- src/sprite.h | 35 +- src/world/action/18.c | 2 +- src/world/action/encounter.c | 8 +- src/world/action/hit_lava.c | 16 +- src/world/action/idle.c | 8 +- src/world/action/jump.c | 14 +- src/world/action/land.c | 8 +- src/world/action/sneaky_parasol.c | 2 +- src/world/action/super_boots.c | 2 +- src/world/action/ultra_boots.c | 2 +- src/world/area_obk/obk_01/BBD1A0.c | 4 +- src/world/area_pra/pra_04/D54840.c | 2 +- src/world/area_pra/pra_10/D5F2D0.c | 2 +- src/world/area_pra/pra_38/D955F0.c | 2 +- src/world/area_pra/pra_39/D97890.c | 2 +- src/world/common/UnkFunc001.inc.c | 188 +++++ src/world/partner/kooper.c | 4 +- src/world/partner/lakilester.c | 4 +- tools/build/configure.py | 4 +- tools/splat/.github/workflows/mypy.yml | 11 +- tools/splat/.gitignore | 4 + tools/splat/.gitrepo | 4 +- tools/splat/CHANGELOG.md | 7 + tools/splat/LICENSE | 21 + tools/splat/README.md | 7 +- tools/splat/create_config.py | 16 +- tools/splat/segtypes/address_range.py | 5 +- tools/splat/segtypes/common/asm.py | 11 +- tools/splat/segtypes/common/bin.py | 5 +- tools/splat/segtypes/common/bss.py | 5 +- tools/splat/segtypes/common/c.py | 178 ++-- tools/splat/segtypes/common/code.py | 110 +-- tools/splat/segtypes/common/codesubsegment.py | 509 ++++++++--- tools/splat/segtypes/common/data.py | 156 +++- tools/splat/segtypes/common/group.py | 178 ++-- tools/splat/segtypes/common/header.py | 5 +- tools/splat/segtypes/common/lib.py | 57 ++ tools/splat/segtypes/common/linker_section.py | 12 + tools/splat/segtypes/common/rdata.py | 6 + tools/splat/segtypes/common/rodata.py | 1 + tools/splat/segtypes/common/segment.py | 1 + tools/splat/segtypes/linker_entry.py | 132 +-- tools/splat/segtypes/n64/Yay0.py | 20 +- tools/splat/segtypes/n64/asm.py | 10 +- tools/splat/segtypes/n64/ci4.py | 1 + tools/splat/segtypes/n64/ci8.py | 52 +- tools/splat/segtypes/n64/cpp.py | 1 + tools/splat/segtypes/n64/header.py | 33 +- tools/splat/segtypes/n64/i4.py | 1 + tools/splat/segtypes/n64/i8.py | 1 + tools/splat/segtypes/n64/ia16.py | 1 + tools/splat/segtypes/n64/ia4.py | 1 + tools/splat/segtypes/n64/ia8.py | 5 +- tools/splat/segtypes/n64/img.py | 50 +- tools/splat/segtypes/n64/linker.py | 2 +- tools/splat/segtypes/n64/linker_offset.py | 2 +- tools/splat/segtypes/n64/palette.py | 80 +- tools/splat/segtypes/n64/rgba16.py | 15 +- tools/splat/segtypes/n64/rgba32.py | 1 + tools/splat/segtypes/n64/segment.py | 1 + tools/splat/segtypes/n64/vtx.py | 46 +- tools/splat/segtypes/psx/asm.py | 8 +- tools/splat/segtypes/psx/header.py | 70 +- tools/splat/segtypes/segment.py | 226 ++++- tools/splat/split.py | 75 +- tools/splat/stubs/png.pyi | 34 +- tools/splat/util/color.py | 10 +- tools/splat/util/compiler.py | 34 + tools/splat/util/floats.py | 10 +- tools/splat/util/iter.py | 18 +- tools/splat/util/log.py | 11 + tools/splat/util/n64/Yay0decompress.py | 22 +- tools/splat/util/n64/find_code_length.py | 11 +- tools/splat/util/n64/rominfo.py | 126 ++- tools/splat/util/options.py | 310 ++++++- tools/splat/util/palettes.py | 4 +- tools/splat/util/range.py | 7 +- tools/splat/util/symbols.py | 220 +++-- tools/update_symbol_addrs.py | 5 +- ver/us/asm/data/4F200.data.s | 18 - ver/us/asm/data/542E0.data.s | 13 +- ver/us/asm/data/95130.data.s | 6 - ver/us/asm/data/95E30.data.s | 6 - ver/us/asm/data/99390.data.s | 6 - ver/us/asm/data/9DE60.data.s | 20 +- .../asm/data/battle/action_cmd/426130.data.s | 6 - .../asm/data/battle/action_cmd/428A30.data.s | 6 - .../asm/data/battle/action_cmd/4292C0.data.s | 3 - .../asm/data/battle/action_cmd/429C90.data.s | 21 - ver/us/asm/data/effects/386340.data.s | 12 - .../data/world/area_pra/pra_04/D55840.data.s | 4 +- .../data/world/area_pra/pra_10/D60A00.data.s | 4 +- .../data/world/area_pra/pra_38/D96D70.data.s | 4 +- .../data/world/area_pra/pra_39/D99010.data.s | 4 +- .../16F740/btl_state_draw_end_battle.s | 48 -- .../16F740/btl_state_update_end_demo_battle.s | 186 ---- .../btl_state_update_end_training_battle.s | 228 ----- .../16F740/btl_state_update_next_enemy.s | 199 ----- .../415D90/btl_state_draw_peach_menu.s | 30 - .../415D90/btl_state_draw_player_menu.s | 30 - .../action_cmd/07/func_802A9228_425D78.s | 193 ----- .../action_cmd/0A/func_802A928C_42763C.s | 208 ----- .../air_lift/func_802A9278_428CE8.s | 317 ------- .../air_raid/func_802A9294_4295B4.s | 401 --------- .../body_slam/func_802A92D4_4285B4.s | 33 +- .../effects/disable_x/disable_x_main.s | 124 --- .../effects/disable_x/disable_x_update.s | 240 ------ .../effects/disable_x/func_E0082528.s | 27 - .../effects/disable_x/func_E0082580.s | 85 -- .../effects/disable_x/func_E00826C4.s | 130 --- .../effects/disable_x/func_E00828B4.s | 126 --- .../effects/disable_x/func_E0082A84.s | 168 ---- .../evt/f8f60_len_1560/GetNextPathPos.s | 160 ---- .../evt/f8f60_len_1560/get_path_position.s | 120 --- .../evt/model_api/GetAnimatedNodePosition.s | 76 -- .../evt/model_api/GetAnimatedNodeRotation.s | 66 -- .../GetAnimatedPositionByTreeIndex.s | 76 -- .../GetAnimatedRotationByTreeIndex.s | 66 -- .../evt/model_api/SetAnimatedNodeFlags.s | 58 -- .../evt/model_api/render_animated_models.s | 108 --- .../evt/model_api/reset_model_animators.s | 59 -- .../nonmatchings/msg/msg_draw_speech_arrow.s | 8 +- .../nonmatchings/msg/msg_draw_speech_bubble.s | 513 ----------- .../pra_04/D54840/func_802401B0_D54840.s | 529 ------------ .../pra_10/D5F2D0/func_80240F20_D601D0.s | 529 ------------ .../pra_38/D955F0/func_80240F50_D96540.s | 529 ------------ .../pra_39/D97890/func_80240F50_D987E0.s | 529 ------------ ver/us/splat.yaml | 697 ++++++++------- ver/us/symbol_addrs.txt | 682 ++++++++++++--- ver/us/undefined_syms.txt | 25 +- 305 files changed, 7141 insertions(+), 8252 deletions(-) create mode 100644 src/919B0.c delete mode 100644 src/9D650.c create mode 100644 src/main_pre.c create mode 100644 src/world/common/UnkFunc001.inc.c create mode 100644 tools/splat/LICENSE create mode 100644 tools/splat/segtypes/common/lib.py create mode 100644 tools/splat/segtypes/common/linker_section.py create mode 100644 tools/splat/segtypes/common/rdata.py create mode 100644 tools/splat/util/compiler.py delete mode 100644 ver/us/asm/data/4F200.data.s delete mode 100644 ver/us/asm/data/95130.data.s delete mode 100644 ver/us/asm/data/95E30.data.s delete mode 100644 ver/us/asm/data/99390.data.s delete mode 100644 ver/us/asm/data/battle/action_cmd/426130.data.s delete mode 100644 ver/us/asm/data/battle/action_cmd/428A30.data.s delete mode 100644 ver/us/asm/data/battle/action_cmd/429C90.data.s delete mode 100644 ver/us/asm/data/effects/386340.data.s delete mode 100644 ver/us/asm/nonmatchings/16F740/btl_state_draw_end_battle.s delete mode 100644 ver/us/asm/nonmatchings/16F740/btl_state_update_end_demo_battle.s delete mode 100644 ver/us/asm/nonmatchings/16F740/btl_state_update_end_training_battle.s delete mode 100644 ver/us/asm/nonmatchings/16F740/btl_state_update_next_enemy.s delete mode 100644 ver/us/asm/nonmatchings/415D90/btl_state_draw_peach_menu.s delete mode 100644 ver/us/asm/nonmatchings/415D90/btl_state_draw_player_menu.s delete mode 100644 ver/us/asm/nonmatchings/battle/action_cmd/07/func_802A9228_425D78.s delete mode 100644 ver/us/asm/nonmatchings/battle/action_cmd/0A/func_802A928C_42763C.s delete mode 100644 ver/us/asm/nonmatchings/battle/action_cmd/air_lift/func_802A9278_428CE8.s delete mode 100644 ver/us/asm/nonmatchings/battle/action_cmd/air_raid/func_802A9294_4295B4.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/disable_x_main.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/disable_x_update.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/func_E0082528.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/func_E0082580.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/func_E00826C4.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/func_E00828B4.s delete mode 100644 ver/us/asm/nonmatchings/effects/disable_x/func_E0082A84.s delete mode 100644 ver/us/asm/nonmatchings/evt/f8f60_len_1560/GetNextPathPos.s delete mode 100644 ver/us/asm/nonmatchings/evt/f8f60_len_1560/get_path_position.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodePosition.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodeRotation.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/GetAnimatedPositionByTreeIndex.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/GetAnimatedRotationByTreeIndex.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/SetAnimatedNodeFlags.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/render_animated_models.s delete mode 100644 ver/us/asm/nonmatchings/evt/model_api/reset_model_animators.s delete mode 100644 ver/us/asm/nonmatchings/msg/msg_draw_speech_bubble.s delete mode 100644 ver/us/asm/nonmatchings/world/area_pra/pra_04/D54840/func_802401B0_D54840.s delete mode 100644 ver/us/asm/nonmatchings/world/area_pra/pra_10/D5F2D0/func_80240F20_D601D0.s delete mode 100644 ver/us/asm/nonmatchings/world/area_pra/pra_38/D955F0/func_80240F50_D96540.s delete mode 100644 ver/us/asm/nonmatchings/world/area_pra/pra_39/D97890/func_80240F50_D987E0.s diff --git a/.gitignore b/.gitignore index 1e0f3cd47d..4e45fd5930 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ venv/ ctx.c expected/ .vscode/launch.json +.vscode/*.log /tools/star-rod /tools/to_rename.txt /ver/current diff --git a/include/common_structs.h b/include/common_structs.h index 1b83916fea..a4e28e31b1 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -262,10 +262,10 @@ typedef struct PlayerData { /* 0x29E */ s16 enemyFirstStrikes; /* 0x2A0 */ u16 powerBounces; /* 0x2A2 */ u16 battlesCount; - /* 0x2A4 */ s16 battlesWon; + /* 0x2A4 */ u16 battlesWon; /* 0x2A6 */ s16 unk_2A6; /* 0x2A8 */ s16 battlesFled; - /* 0x2AA */ s16 trainingsDone; + /* 0x2AA */ u16 trainingsDone; /* 0x2AC */ s32 walkingStepsTaken; /* 0x2B0 */ s32 runningStepsTaken; /* 0x2B4 */ u32 totalCoinsEarned; @@ -928,7 +928,8 @@ typedef struct BattleStatus { /* 0x049 */ char unk_49[3]; /* 0x04C */ s8 unk_4C[16]; /* 0x05C */ s8 unk_5C[16]; - /* 0x06C */ char unk_6C[0x4]; + /* 0x06C */ s16 unk_6C; + /* 0x06E */ s16 unk_6E; /* 0x070 */ s16 menuDisableFlags; /* 1 = jump, 2 = hammer, 4 = items */ /* 0x072 */ char unk_72[2]; /* 0x074 */ s32 unk_74; @@ -949,7 +950,7 @@ typedef struct BattleStatus { /* 0x089 */ s8 hpDrainCount; /* 0x08A */ s8 nextMerleeSpellType; /* 0x08B */ s8 hustleTurns; /* numTurns from hustle drink, normally 0 */ - /* 0x08C */ char unk_8C; + /* 0x08C */ s8 unk_8C; /* 0x08D */ s8 unk_8D; /* 0x08E */ s8 initialEnemyCount; /* used for SP award bonus */ /* 0x08F */ char unk_8F[1]; @@ -1219,7 +1220,7 @@ typedef struct ItemEntity { /* 0x28 */ u32* savedReadPos; /* 0x2C */ char unk_2C[2]; /* 0x2E */ u8 unkCounter; - /* 0x2F */ u8 unk_2F; + /* 0x2F */ u8 alpha; /* 0x30 */ f32 scale; /* 0x34 */ Vec3s unk_34; /* 0x3A */ char unk_3A[2]; @@ -1577,9 +1578,9 @@ typedef struct SelectableTarget { /* 0x0C */ s16 unk_0C; /* 0x0E */ s16 unk_0E; /* 0x10 */ s8 unk_10; - /* 0x11 */ u8 homeCol; /* from xpos --> 0-3 */ - /* 0x12 */ u8 homeRow; /* from ypos --> 0-3 */ - /* 0x13 */ u8 layer; /* from zpos? --> 0-1 */ + /* 0x11 */ s8 homeCol; /* from xpos --> 0-3 */ + /* 0x12 */ s8 homeRow; /* from ypos --> 0-3 */ + /* 0x13 */ s8 layer; /* from zpos? --> 0-1 */ } SelectableTarget; // size = 0x14 typedef struct ActorPartMovement { @@ -1779,15 +1780,6 @@ typedef struct DecorationTable { /* 0x8C6 */ DecorationUnk unk_8C6[2]; } DecorationTable; // size = 0x8E8 -typedef struct Encounter { - /* 0x00 */ s32 count; - /* 0x04 */ struct Enemy* enemy[16]; - /* 0x44 */ s16 battle; - /* 0x46 */ s16 stage; - /* 0x48 */ s16 encounterID; - /* 0x4A */ char unk_4C[0x12]; -} Encounter; // size = 0x5C - typedef struct PlayerPathElement { /* 0x00 */ s8 isJumping; /* 0x03 */ char unk_01[3]; @@ -1884,7 +1876,7 @@ typedef struct Actor { /* 0x120 */ s16 flyTime; /* 0x122 */ s16 flyArcAmplitude; /* 0x124 */ char unk_124[16]; - /* 0x134 */ s8 unk_134; + /* 0x134 */ u8 unk_134; /* 0x135 */ u8 footStepCounter; /* 0x136 */ u8 actorType; /* 0x137 */ char unk_137; @@ -1964,7 +1956,7 @@ typedef struct Actor { /* 0x223 */ s8 chillOutAmount; /* attack reduction */ /* 0x224 */ s8 chillOutTurns; /* 0x225 */ char unk_225[3]; - /* 0x228 */ struct EffectInstance* unk_228; + /* 0x228 */ struct EffectInstance* icePillarEffect; /* 0x22C */ struct SelectableTarget targetData[24]; /* 0x40C */ s8 targetListLength; /* 0x40D */ s8 targetIndexList[24]; /* into targetData */ @@ -1981,7 +1973,7 @@ typedef struct Actor { /* 0x434 */ s16 renderMode; /* initially 0xD, set to 0x22 if any part is transparent */ /* 0x436 */ s16 hudElementDataIndex; /* 0x438 */ s32 unk_438[2]; /* ??? see FUN_80253974 */ - /* 0x440 */ struct EffectInstance* debuffIcon; // TODO: figure out the type of data field of debuffIcon + /* 0x440 */ struct EffectInstance* debuffEffect; } Actor; // size = 0x444 typedef struct BackgroundHeader { @@ -2046,7 +2038,7 @@ typedef struct PlayerStatus { /* 0x0BC */ u16 unk_BC; /* 0x0BE */ s8 renderMode; /* 0x0BF */ s8 unk_BF; - /* 0x0C0 */ s16 decorationList; + /* 0x0C0 */ s16 timeInAir; /* 0x0C2 */ s16 unk_C2; /* 0x0C4 */ char unk_C4; /* 0x0C5 */ s8 unk_C5; @@ -2071,49 +2063,6 @@ typedef struct PlayerStatus { /* 0x281 */ char unk_281[7]; } PlayerStatus; // size = 0x288 -typedef struct EncounterStatus { - /* 0x000 */ s32 flags; - /* 0x004 */ s8 eFirstStrike; /* 0 = none, 1 = player, 2 = enemy */ - /* 0x005 */ s8 hitType; /* 1 = none/enemy, 2 = jump */ - /* 0x006 */ s8 hitTier; /* 0 = normal, 1 = super, 2 = ultra */ - /* 0x007 */ char unk_07; - /* 0x008 */ s8 unk_08; - /* 0x009 */ s8 battleOutcome; /* 0 = won, 1 = lost */ - /* 0x00A */ s8 unk_0A; - /* 0x00B */ s8 merleeCoinBonus; /* triple coins when != 0 */ - /* 0x00C */ u8 damageTaken; /* valid after battle */ - /* 0x00D */ char unk_0D; - /* 0x00E */ s16 coinsEarned; /* valid after battle */ - /* 0x010 */ char unk_10; - /* 0x011 */ u8 allowFleeing; - /* 0x012 */ s8 unk_12; - /* 0x013 */ u8 dropWhackaBump; - /* 0x014 */ s32 songID; - /* 0x018 */ s32 unk_18; - /* 0x01C */ s8 numEncounters; /* number of encounters for current map (in list) */ - /* 0x01D */ s8 currentAreaIndex; - /* 0x01E */ u8 currentMapIndex; - /* 0x01F */ u8 currentEntryIndex; - /* 0x020 */ s8 mapID; - /* 0x021 */ s8 resetMapEncounterFlags; - /* 0x021 */ char unk_22[2]; - /* 0x024 */ s32* npcGroupList; - /* 0x028 */ struct Encounter* encounterList[24]; - /* 0x088 */ struct Encounter* currentEncounter; - /* 0x08C */ struct Enemy* currentEnemy; - /* 0x090 */ s32 fadeOutAmount; - /* 0x094 */ s32 unk_94; - /* 0x098 */ s32 fadeOutAccel; - /* 0x09C */ s32 battleStartCountdown; - /* 0x0A0 */ s8 unk_A0; - /* 0x0A1 */ char unk_A1[0x1]; - /* 0x0A2 */ s16 unk_A2; - /* 0x0A4 */ char unk_A4[0xC]; - /* 0x0B0 */ s32 defeatFlags[60][12]; - /* 0xFB0 */ s16 recentMaps[2]; - /* 0xFB4 */ char unk_FB4[4]; -} EncounterStatus; // size = 0xFB8 - typedef struct SaveDataHeader { /* 0x0000 */ char magicString[16]; /* "Mario Story 006" string */ /* 0x0010 */ s8 pad[0x20]; /* always zero */ @@ -2162,9 +2111,9 @@ typedef struct SaveData { /* 0x1304 */ char unk_1304[0x7C]; } SaveData; // size = 0x1380 -typedef struct { +typedef struct Path { /* 0x00 */ s32 numVectors; - /* 0x04 */ s32 unk_04; + /* 0x04 */ f32* unk_04; /* 0x08 */ Vec3f* staticVectorList; /* 0x0C */ Vec3f* vectors; /* 0x10 */ s32 timeElapsed; diff --git a/include/effects.h b/include/effects.h index 5d80ced679..88f00e9989 100644 --- a/include/effects.h +++ b/include/effects.h @@ -602,6 +602,25 @@ typedef struct FireFlowerFXData { /* 0x40 */ Vec3i unk_40; } FireFlowerFXData; // size = 0x4C +typedef struct DisableXFXData { + /* 0x00 */ s32 type; + /* 0x04 */ s32 unk_04; + /* 0x08 */ Vec3f pos; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ s32 alpha; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ f32 unk_30; + /* 0x34 */ f32 scale; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ f32 unk_40; + /* 0x44 */ s32 unk_44; +} DisableXFXData; // size = 0x48 + typedef struct FireBreathFXData { /* 0x00 */ s32 type; /* 0x04 */ s32 numChildren; @@ -783,7 +802,7 @@ typedef struct EffectDataQuizStage { typedef struct EffectDataQuizVannaT { /* 0x00 */ char unk_00[0x4]; /* 0x04 */ Vec3f position; - /* 0x10 */ s32 vanishTimer; + /* 0x10 */ s32 vanishTimer; /* 0x14 */ s32 lifetime; /* 0x18 */ s32 fadeInAmt; // 0 = all-black, FF = fully-visible /* 0x1C */ s32 anim; diff --git a/include/effects_internal.h b/include/effects_internal.h index dec9eea579..668052bcbc 100644 --- a/include/effects_internal.h +++ b/include/effects_internal.h @@ -93,7 +93,7 @@ FX_MAIN(fx_3D_main); void blast_main(s32, f32, f32, f32, f32, s32); EffectInstance* fire_flower_main(s32, f32, f32, f32, s32); FX_MAIN(recover_main); -FX_MAIN(disable_x_main); +EffectInstance* disable_x_main(s32, f32, f32, f32, s32); FX_MAIN(bombette_breaking_main); FX_MAIN(firework_main); FX_MAIN(confetti_main); diff --git a/include/enums.h b/include/enums.h index 7578637016..617fac4535 100644 --- a/include/enums.h +++ b/include/enums.h @@ -2600,6 +2600,7 @@ enum BattleStatusFlags2 { BS_FLAGS2_400 = 0x00000400, BS_FLAGS2_800 = 0x00000800, BS_FLAGS2_NO_TARGET_AVAILABLE = 0x00001000, + BS_FLAGS2_10000 = 0x00010000, BS_FLAGS2_1000000 = 0x01000000, BS_FLAGS2_2000000 = 0x02000000, BS_FLAGS2_4000000 = 0x04000000, @@ -2660,13 +2661,42 @@ enum BattleStates2 { BATTLE_STATE2_PLAYER_DEFEATED = 0x0000000A, BATTLE_STATE2_UNK_B = 0x0000000B, BATTLE_STATE2_UNK_C = 0x0000000C, + BATTLE_STATE2_UNK_D = 0x0000000D, + BATTLE_STATE2_UNK_E = 0x0000000E, BATTLE_STATE2_UNK_F = 0x0000000F, BATTLE_STATE2_UNK_10 = 0x00000010, BATTLE_STATE2_UNK_14 = 0x00000014, BATTLE_STATE2_UNK_15 = 0x00000015, BATTLE_STATE2_UNK_16 = 0x00000016, + BATTLE_STATE2_UNK_17 = 0x00000017, + BATTLE_STATE2_UNK_18 = 0x00000018, BATTLE_STATE2_UNK_1E = 0x0000001E, + BATTLE_STATE2_UNK_1F = 0x0000001F, + BATTLE_STATE2_UNK_20 = 0x00000020, + BATTLE_STATE2_UNK_21 = 0x00000021, + BATTLE_STATE2_UNK_22 = 0x00000022, + BATTLE_STATE2_UNK_28 = 0x00000028, + BATTLE_STATE2_UNK_29 = 0x00000029, + BATTLE_STATE2_UNK_2A = 0x0000002A, + BATTLE_STATE2_UNK_2B = 0x0000002B, + BATTLE_STATE2_UNK_2C = 0x0000002C, + BATTLE_STATE2_UNK_33 = 0x00000033, + BATTLE_STATE2_UNK_34 = 0x00000034, + BATTLE_STATE2_UNK_35 = 0x00000035, + BATTLE_STATE2_UNK_36 = 0x00000036, + BATTLE_STATE2_UNK_3D = 0x0000003D, + BATTLE_STATE2_UNK_3E = 0x0000003E, + BATTLE_STATE2_UNK_3F = 0x0000003F, + BATTLE_STATE2_UNK_40 = 0x00000040, + BATTLE_STATE2_UNK_41 = 0x00000041, BATTLE_STATE2_UNK_46 = 0x00000046, + BATTLE_STATE2_UNK_64 = 0x00000064, + BATTLE_STATE2_UNK_C8 = 0x000000C8, + BATTLE_STATE2_UNK_C9 = 0x000000C9, + BATTLE_STATE2_UNK_CA = 0x000000CA, + BATTLE_STATE2_UNK_CB = 0x000000CB, + BATTLE_STATE2_UNK_CC = 0x000000CC, + BATTLE_STATE2_UNK_CD = 0x000000CD, }; enum DebuffTypes { diff --git a/include/functions.h b/include/functions.h index c7487b450b..54bdf23c0d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -388,7 +388,7 @@ s32 is_point_within_region(s32 shape, f32 pointX, f32 pointY, f32 centerX, f32 c PlayerData* get_player_data(void); s32 npc_raycast_down_around(s32, f32*, f32*, f32*, f32*, f32, f32); -s32 npc_raycast_down_sides(s32, f32*, f32*, f32*, f32*); +s32 npc_raycast_down_sides(s32 ignoreFlags, f32* posX, f32* posY, f32* posZ, f32* hitDepth); s32 npc_raycast_up(s32, f32*, f32*, f32*, f32*); s32 player_raycast_up_corners(PlayerStatus*, f32*, f32*, f32*, f32*, f32); s32 player_raycast_below_cam_relative(PlayerStatus* playerStatus, f32* outX, f32* outY, f32* outZ, f32* outLength, @@ -412,6 +412,10 @@ void partner_clear_player_tracking(Npc* partner); void set_background_color_blend(u8 r, u8 g, u8 b, u8 a); void partner_set_tether_distance(f32); + +void btl_delete_player_actor(Actor* player); + +void kill_all_scripts(void); s32 does_script_exist(s32 id); s32 does_script_exist_by_ref(Evt* script); Evt* start_script(EvtScript* source, s32 priority, s32 initialState); @@ -476,6 +480,8 @@ s32 check_input_hammer(void); Npc* resolve_npc(Evt* script, s32 npcIdOrPtr); void enable_npc_blur(Npc* npc); void disable_npc_blur(Npc* npc); +void enable_partner_blur(void); +void disable_partner_blur(void); f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by); f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz); @@ -560,6 +566,7 @@ void load_partner_actor(void); void dispatch_event_partner(s32); void dispatch_event_player(s32); s32 btl_are_all_enemies_defeated(void); +s32 btl_check_enemies_defeated(void); s32 btl_check_player_defeated(void); void btl_show_battle_message(s32, s32); void btl_update_ko_status(void); @@ -789,6 +796,7 @@ s32 get_defense(Actor* actor, s32* defenseTable, s32 elementFlags); void func_8024EDC0(void); +void remove_all_effects(void); void update_effects(void); void update_cameras(void); void clear_render_tasks(void); diff --git a/include/model.h b/include/model.h index ce46abfd71..150cdd2543 100644 --- a/include/model.h +++ b/include/model.h @@ -157,6 +157,8 @@ void update_model_animator(s32); void update_model_animator_with_transform(s32 animatorID, Mtx* mtx); void set_mdl_custom_gfx_set(Model*, s32, u32); s32 step_model_animator(ModelAnimator* animator); +AnimatorNode* get_animator_node_for_tree_index(ModelAnimator* animator, s32 treeIndex); +AnimatorNode* get_animator_node_with_id(ModelAnimator* animator, s32 id); void animator_update_model_transforms(ModelAnimator* animator, Mtx* rootTransform); void render_animated_model(s32 animatorID, Mtx* rootTransform); void animator_node_update_model_transform(ModelAnimator* animator, f32 (*flipMtx)[4], AnimatorNode* node, diff --git a/include/npc.h b/include/npc.h index b1fbbf8630..c96c5b10a8 100644 --- a/include/npc.h +++ b/include/npc.h @@ -243,7 +243,7 @@ typedef struct Enemy { /* 0x0A */ s16 spawnPos[3]; /* 0x10 */ Vec3s unk_10; /* 0x16 */ char unk_16[2]; - /* 0x18 */ struct NpcSettings* npcSettings; + /* 0x18 */ NpcSettings* npcSettings; /* 0x1C */ EvtScript* initBytecode; /* 0x20 */ EvtScript* interactBytecode; /* 0x24 */ EvtScript* aiBytecode; @@ -287,6 +287,60 @@ typedef struct Enemy { /* 0xDC */ char unk_DC[20]; } Enemy; // size = 0xF0 +typedef struct Encounter { + /* 0x00 */ s32 count; + /* 0x04 */ Enemy* enemy[16]; + /* 0x44 */ s16 battle; + /* 0x46 */ s16 stage; + /* 0x48 */ s16 encounterID; + /* 0x4A */ char unk_4C[0x12]; +} Encounter; // size = 0x5C + +typedef struct EncounterStatus { + /* 0x000 */ s32 flags; + /* 0x004 */ s8 eFirstStrike; /* 0 = none, 1 = player, 2 = enemy */ + /* 0x005 */ s8 hitType; /* 1 = none/enemy, 2 = jump */ + /* 0x006 */ s8 hitTier; /* 0 = normal, 1 = super, 2 = ultra */ + /* 0x007 */ char unk_07; + /* 0x008 */ s8 unk_08; + /* 0x009 */ s8 battleOutcome; /* 0 = won, 1 = lost */ + /* 0x00A */ s8 unk_0A; + /* 0x00B */ s8 merleeCoinBonus; /* triple coins when != 0 */ + /* 0x00C */ u8 damageTaken; /* valid after battle */ + /* 0x00D */ char unk_0D; + /* 0x00E */ s16 coinsEarned; /* valid after battle */ + /* 0x010 */ char unk_10; + /* 0x011 */ u8 allowFleeing; + /* 0x012 */ s8 unk_12; + /* 0x013 */ u8 dropWhackaBump; + /* 0x014 */ s32 songID; + /* 0x018 */ s32 unk_18; + /* 0x01C */ s8 numEncounters; /* number of encounters for current map (in list) */ + /* 0x01D */ s8 currentAreaIndex; + /* 0x01E */ u8 currentMapIndex; + /* 0x01F */ u8 currentEntryIndex; + /* 0x020 */ s8 mapID; + /* 0x021 */ s8 resetMapEncounterFlags; + /* 0x021 */ char unk_22[2]; + /* 0x024 */ s32* npcGroupList; + /* 0x028 */ Encounter* encounterList[24]; + /* 0x088 */ Encounter* currentEncounter; + /* 0x08C */ Enemy* currentEnemy; + /* 0x090 */ s32 fadeOutAmount; + /* 0x094 */ s32 unk_94; + /* 0x098 */ s32 fadeOutAccel; + /* 0x09C */ s32 battleStartCountdown; + /* 0x0A0 */ s8 unk_A0; + /* 0x0A1 */ char unk_A1[0x1]; + /* 0x0A2 */ s16 unk_A2; + /* 0x0A4 */ char unk_A4[0xC]; + /* 0x0B0 */ s32 defeatFlags[60][12]; + /* 0xFB0 */ s16 recentMaps[2]; + /* 0xFB4 */ char unk_FB4[4]; +} EncounterStatus; // size = 0xFB8 + +extern EncounterStatus gCurrentEncounter; + s32 basic_ai_check_player_dist(EnemyDetectVolume* arg0, Enemy* arg1, f32 arg2, f32 arg3, s8 arg4); /// The default Npc::onUpdate and Npc::onRender callback. diff --git a/include/nu/nualsgi.h b/include/nu/nualsgi.h index 84030df1d9..7da6e1b342 100644 --- a/include/nu/nualsgi.h +++ b/include/nu/nualsgi.h @@ -210,7 +210,7 @@ extern ALBankFile* nuAuSndBank_ptr; extern ALSndId* nuAuSndId; extern ALSynConfig nuAuSynConfig; extern ALSeqpConfig nuAuSeqpConfig; -extern ALSndpConfig nuAnSndpConfig; +extern ALSndpConfig nuAuSndpConfig; extern u8 nuAuTaskStop; extern u8 nuAuPreNMI; extern NUAuPreNMIFunc nuAuPreNMIFunc; @@ -239,9 +239,6 @@ extern u32 nuAuDebAcmdLenMax; /* Maximum length of the audio command list */ extern s16 nuAuFrameSampleSize; /* Number of samples created at one time */ extern s16 nuAuExtraSampleSize; /* Number of extra samples */ -extern ALSynConfig nuAuSynConfig; -extern ALSeqpConfig nuAuSeqpConfig; -extern ALSndpConfig nuAuSndpConfig; /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ diff --git a/include/variables.h b/include/variables.h index 05b2c9018b..7a5eba5d2c 100644 --- a/include/variables.h +++ b/include/variables.h @@ -78,7 +78,6 @@ extern CollisionData gCollisionData; extern s8 D_800A0900; extern f32 GravityParamsStartFall[]; extern s16 D_800F7B80; -extern EncounterStatus gCurrentEncounter; extern u8* D_801512F0; extern s16 D_80151308; extern s32 gEntityHideMode; diff --git a/requirements.txt b/requirements.txt index f8d09a8f4a..b9513eb927 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ colorama ninja_syntax msgpack pylibyaml +tqdm diff --git a/src/16F740.c b/src/16F740.c index 4a5cb87233..a282634060 100644 --- a/src/16F740.c +++ b/src/16F740.c @@ -5,10 +5,15 @@ #include "hud_element.h" #include "battle/battle.h" +extern s32* D_800DC064; + extern s16 D_802809F6; +extern s16 D_802809F8; extern s32 D_80280A30; extern s32 D_8029F254; +extern u8 D_8029F244; extern s32 D_8029F248; +extern s32 D_8029F258; // Almost good but some reorderings at the beginning #ifdef NON_EQUIVALENT @@ -17,7 +22,7 @@ void btl_merlee_on_start_turn(void) { BattleStatus* battleStatus = &gBattleStatus; EncounterStatus* currentEncounter = &gCurrentEncounter; - if (!(battleStatus->flags2 & 0x40) && battleStatus->unk_8A != 3 && battleStatus->unk_8A != 4 && playerData->merleeCastsLeft > 0) { + if (!(gBattleStatus.flags2 & 0x40) && battleStatus->unk_8A != 3 && battleStatus->unk_8A != 4 && playerData->merleeCastsLeft > 0) { if (playerData->merleeTurnCount <= 0) { s32 d100 = rand_int(100); @@ -75,17 +80,17 @@ void btl_set_state(s32 battleState) { flags &= BS_FLAGS2_40; if (flags) { switch (battleState) { - case 14: - battleState = 16; + case BATTLE_STATE_PARTNER_MENU: + battleState = BATTLE_STATE_TWINK_MENU; break; - case 13: - battleState = 15; + case BATTLE_STATE_PLAYER_MENU: + battleState = BATTLE_STATE_PEACH_MENU; break; - case 7: - battleState = 8; + case BATTLE_STATE_BEGIN_PLAYER_TURN: + battleState = BATTLE_STATE_BEGIN_PARTNER_TURN; break; - case 8: - battleState = 7; + case BATTLE_STATE_BEGIN_PARTNER_TURN: + battleState = BATTLE_STATE_BEGIN_PLAYER_TURN; break; } gBattleState = battleState; @@ -109,7 +114,344 @@ INCLUDE_ASM(s32, "16F740", btl_state_update_begin_turn); void btl_state_draw_begin_turn(void) { } +// tail merging +#ifdef NON_MATCHING +void btl_state_update_begin_player_turn(void) { + BattleStatus* battleStatus = &gBattleStatus; + PlayerData* playerData = &gPlayerData; + Actor* player = battleStatus->playerActor; + Actor* partner = battleStatus->partnerActor; + ActorPart* part = &player->partsTable[0]; + Evt* script; + s32 i; + + s32 phi_v0; + s32 phi_v1; + s32 phi_a0; + s32 phi_v0_2; + + if (gBattleState2 == BATTLE_STATE2_UNK_0) { + func_8024E40C(2); + btl_cam_move(5); + gBattleState2 = BATTLE_STATE2_UNK_64; + } + + if (gBattleState2 != BATTLE_STATE2_UNK_14) { + if (gBattleState2 == BATTLE_STATE2_UNK_64 && (func_8024E584() != 0)) { + gBattleStatus.flags1 &= ~0x80000; + reset_actor_turn_info(); + battleStatus->unk_86 = 0x7F; + battleStatus->blockResult = 0x7F; + battleStatus->selectedMoveID = 0; + gBattleStatus.flags1 |= 8; + gBattleStatus.flags2 &= ~0x1000000; + player->unk_21D = 0; + player->flags |= 0x0C000000; + + if (partner != NULL) { + player->flags |= 0x0C000000; + partner->unk_21D = 0; + } + + battleStatus->unk_8C = 0; + D_8029F254 = 0; + D_8029F258 = 0; + + if (battleStatus->outtaSightActive == 0) { + gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; + } else { + battleStatus->battlePhase = 0xC; + script = start_script(partner->onTurnChanceScriptSource, 0xA, 0); + partner->onTurnChangeScript = script; + gBattleState2 = BATTLE_STATE2_UNK_14; + partner->onTurnChangeID = script->id; + script->owner1.actorID = ACTOR_PARTNER; + } + } + } else if (!does_script_exist(partner->onTurnChangeID)) { + battleStatus->outtaSightActive = 0; + gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; + gBattleStatus.flags2 |= 4; + } + + if (gBattleState2 != BATTLE_STATE2_UNK_2) { + if (gBattleState2 == BATTLE_STATE2_PLAYER_DEFEATED && (battleStatus->unk_8C == 0)) { + if (battleStatus->waterBlockTurnsLeft != 0) { + battleStatus->waterBlockTurnsLeft--; + battleStatus->unk_43C->unk_0C->unk_10 = battleStatus->waterBlockTurnsLeft; + if (battleStatus->waterBlockTurnsLeft <= 0) { + battleStatus->waterBlockEffect->flags |= 0x10; + fx_water_block(1, player->currentPos.x, player->currentPos.y + 18.0f, player->currentPos.z + 5.0f, 1.5f, 10); + fx_water_splash(0, player->currentPos.x - 10.0f, player->currentPos.y + 5.0f, player->currentPos.z + 5.0f, 1.0f, 0x18); + fx_water_splash(0, player->currentPos.x - 15.0f, player->currentPos.y + 32.0f, player->currentPos.z + 5.0f, 1.0f, 0x18); + fx_water_splash(1, player->currentPos.x + 15.0f, player->currentPos.y + 22.0f, player->currentPos.z + 5.0f, 1.0f, 0x18); + battleStatus->waterBlockEffect = NULL; + sfx_play_sound(0x299); + btl_show_battle_message(0x27, 0x3C); + gBattleState2 = BATTLE_STATE2_UNK_2; + } else { + gBattleState2 = BATTLE_STATE2_UNK_B; + } + } else { + gBattleState2 = BATTLE_STATE2_UNK_B; + } + } + } else if (!btl_is_popup_displayed()) { + gBattleState2 = BATTLE_STATE2_UNK_B; + } + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_B: + if (battleStatus->cloudNineTurnsLeft != 0) { + battleStatus->cloudNineTurnsLeft--; + battleStatus->unk_43C->unk_0C->unk_1A = battleStatus->cloudNineTurnsLeft; + + if (battleStatus->cloudNineTurnsLeft <= 0) { + remove_effect(battleStatus->cloudNineEffect); + battleStatus->cloudNineEffect = NULL; + btl_show_battle_message(0x29, 0x3C); + gBattleState2 = BATTLE_STATE2_UNK_C; + } else { + gBattleState2 = BATTLE_STATE2_UNK_F; + } + } else { + gBattleState2 = BATTLE_STATE2_UNK_F; + } + break; + case BATTLE_STATE2_UNK_C: + if (!btl_is_popup_displayed()) { + gBattleState2 = BATTLE_STATE2_UNK_F; + } + break; + } + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_F: + if (battleStatus->turboChargeTurnsLeft != 0) { + if (gBattleStatus.flags2 & 0x100) { + gBattleStatus.flags2 &= ~0x100; + gBattleState2 = BATTLE_STATE2_UNK_15; + } else { + battleStatus->turboChargeTurnsLeft--; + battleStatus->unk_43C->unk_0C->unk_24 = battleStatus->turboChargeTurnsLeft; + if (battleStatus->turboChargeTurnsLeft <= 0) { + btl_show_battle_message(0x2B, 0x3C); + gBattleState2 = BATTLE_STATE2_UNK_10; + } else { + gBattleState2 = BATTLE_STATE2_UNK_15; + } + } + } else { + gBattleState2 = BATTLE_STATE2_UNK_15; + } + break; + case BATTLE_STATE2_UNK_10: + if (!btl_is_popup_displayed()) { + gBattleState2 = BATTLE_STATE2_UNK_15; + } + break; + } + + if (gBattleState2 == BATTLE_STATE2_UNK_15) { + if ((player->debuff == 9) && (player->stoneStatus == 0)) { + gBattleStatus.flags1 |= 0x20; + dispatch_damage_event_player_0(1, 0xA); + } + + battleStatus->rushFlags = 0; + gBattleStatus.flags2 &= ~0x8000000; + if (!(gBattleStatus.flags2 & 0x40)) { + if (playerData->curHP <= 1 && is_ability_active(0x14)) { + gBattleStatus.flags2 |= 0x08000000; + battleStatus->rushFlags |= 1; + } + if (playerData->curHP < 6 && is_ability_active(0x1E) && !(battleStatus->rushFlags & 1)) { + gBattleStatus.flags2 |= 0x08000000; + battleStatus->rushFlags |= 2; + } + } + gBattleState2 = BATTLE_STATE2_UNK_16; + } + + if ((gBattleState2 == BATTLE_STATE2_UNK_16) && (player->onHitScript == NULL || !does_script_exist(player->onHitID))) { + player->onHitScript = NULL; + if (!btl_check_player_defeated()) { + D_8029F254 = 0; + player->unk_21D = 0; + player->flags |= 0x0C000000; + if (is_ability_active(0xE)) { + if (player->debuff != 0) { + player->debuffDuration = 1; + } + if (player->staticStatus != 0) { + player->staticDuration = 1; + } + if (player->stoneStatus != 0) { + player->stoneDuration = 1; + } + if (player->koStatus != 0) { + player->koDuration = 1; + } + if (player->transStatus != 0) { + player->transDuration = 1; + } + } + if (player->stoneStatus != 0) { + player->stoneDuration--; + if (player->stoneDuration <= 0) { + player->stoneStatus = 0; + dispatch_event_player(0x31); + } + } else { + s32 debuffDuration; + s32 koDuration; + + if (!is_ability_active(0x13) && (player->staticStatus != 0)) { + player->staticDuration--; + if (player->staticDuration <= 0) { + player->staticStatus = 0; + remove_status_static(player->hudElementDataIndex); + } + } + if (player->transStatus != 0) { + player->transDuration--; + part->flags |= 0x100; + if (player->transDuration <= 0) { + player->transStatus = 0; + part->flags &= ~0x100; + remove_status_transparent(player->hudElementDataIndex); + } + } + + if (player->debuff != 0) { + if (player->debuff < 9) { + D_8029F254 = 1; + } + D_8029F258 = 20; + player->debuffDuration--; + if (player->debuffDuration <= 0) { + if (player->debuff == STATUS_FROZEN) { + sfx_play_sound(0xE7); + player->icePillarEffect->flags |= 0x10; + player->icePillarEffect = NULL; + dispatch_event_player(0x32); + } else { + dispatch_event_player(0x31); + } + player->debuff = 0; + player->debuffDuration = 0; + remove_status_debuff(player->hudElementDataIndex); + } + } + + debuffDuration = (u8) player->debuffDuration; + koDuration = player->koDuration; + player->koDuration = debuffDuration; + if ((s8) debuffDuration > 0) { + player->koStatus = 0xD; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = player->koDuration; + } else if (koDuration != (s8) debuffDuration) { + player->koStatus = 0; + player->koDuration = 0; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = 0; + } + } + + for (i = 0; i < ARRAY_COUNT(battleStatus->enemyActors); i++) { + Actor* enemy = battleStatus->enemyActors[i]; + + if (enemy != NULL) { + enemy->flags |= 0x0C000000; + if (enemy->chillOutTurns != 0) { + enemy->chillOutTurns--; + if (enemy->chillOutTurns == 0) { + enemy->chillOutAmount = 0; + remove_status_chill_out(enemy->hudElementDataIndex); + D_8029F258 = 20; + } + } + } + } + gBattleState2 = BATTLE_STATE2_UNK_1; + } else { + return; + } + } + + if (gBattleState2 == BATTLE_STATE2_UNK_1) { + s32 phi_s0_2 = 1; + s32 phi_s0_3; + + if (!btl_check_enemies_defeated()) { + battleStatus->unk_8C = 0; + if (battleStatus->hammerLossTurns >= 0) { + battleStatus->hammerLossTurns--; + if (battleStatus->hammerLossTurns == -1) { + script = start_script(RegainAbility, 0xA, 0); + player->takeTurnScript = script; + player->takeTurnID = script->id; + script->varTable[0] = 1; + phi_s0_2 = 9; + script->owner1.actorID = ACTOR_PLAYER; + script->varTable[10] = 1; + battleStatus->unk_8C = 1; + } + } + + phi_s0_3 = phi_s0_2; + if (battleStatus->jumpLossTurns >= 0) { + battleStatus->jumpLossTurns--; + if (battleStatus->jumpLossTurns == -1) { + script = start_script(RegainAbility, 0xA, 0); + player->takeTurnScript = script; + player->takeTurnID = script->id; + script->varTable[0] = phi_s0_3; + script->owner1.actorID = ACTOR_PLAYER; + script->varTable[10] = 0; + battleStatus->unk_8C = 1; + phi_s0_3 += 8; + } + } + + if (battleStatus->itemLossTurns >= 0) { + battleStatus->itemLossTurns--; + if (battleStatus->itemLossTurns == -1) { + script = start_script(RegainAbility, 0xA, 0); + player->takeTurnScript = script; + player->takeTurnID = script->id; + script->varTable[10] = 2; + script->owner1.actorID = ACTOR_PLAYER; + script->varTable[0] = phi_s0_3; + battleStatus->unk_8C = 1; + } + } + gBattleState2 = BATTLE_STATE2_UNK_1E; + } + } else { + return; + } + + if (gBattleState2 == BATTLE_STATE2_UNK_1E && (player->onHitScript == NULL || !does_script_exist(player->onHitID))) { + player->onHitScript = NULL; + + if (!btl_check_player_defeated() && !btl_check_enemies_defeated()) { + if (D_8029F258 != 0) { + D_8029F258--; + return; + } + + if (D_8029F254 == 0) { + btl_set_state(BATTLE_STATE2_PLAYER_DEFEATED); + } else{ + btl_set_state(BATTLE_STATE2_UNK_8); + gBattleStatus.flags2 |= 2; + } + } + } +} +#else INCLUDE_ASM(s32, "16F740", btl_state_update_begin_player_turn); +#endif void btl_state_draw_begin_player_turn(void) { } @@ -133,13 +475,14 @@ void btl_state_update_switch_to_player(void) { for (i = 0; i < ARRAY_COUNT(gBattleStatus.enemyActors); i++) { Actor* enemy = gBattleStatus.enemyActors[i]; + if (enemy != NULL) { enemy->flags |= ENEMY_FLAGS_80000; enemy->flags |= ENEMY_FLAGS_8000000; } } - btl_set_state(0xC); + btl_set_state(BATTLE_STATE_PREPARE_MENU); } } @@ -174,7 +517,7 @@ void btl_state_update_switch_to_partner(void) { } } - btl_set_state(0xC); + btl_set_state(BATTLE_STATE_PREPARE_MENU); } } @@ -204,12 +547,12 @@ void btl_state_update_prepare_menu(void) { dma_copy(_415D90_ROM_START, _415D90_ROM_END, _415D90_VRAM); if (battleStatus->flags1 & BS_FLAGS1_80000) { - btl_set_state(14); + btl_set_state(BATTLE_STATE_PARTNER_MENU); } else if (gBattleState2 == BATTLE_STATE2_UNK_46) { - btl_set_state(13); + btl_set_state(BATTLE_STATE_PLAYER_MENU); gBattleState2 = BATTLE_STATE2_UNK_46; } else { - btl_set_state(13); + btl_set_state(BATTLE_STATE_PLAYER_MENU); } } @@ -223,7 +566,7 @@ void btl_state_draw_end_turn(void) { void btl_state_update_1C(void) { func_8024E40C(2); - btl_set_state(12); + btl_set_state(BATTLE_STATE_PREPARE_MENU); } void btl_state_draw_1C(void) { @@ -255,7 +598,7 @@ void btl_state_update_victory(void) { script = start_script(partner->onTurnChanceScriptSource, EVT_PRIORITY_A, 0); partner->onTurnChangeScript = script; partner->onTurnChangeID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; gBattleState2 = BATTLE_STATE2_UNK_1; } @@ -281,7 +624,7 @@ void btl_state_update_victory(void) { gBattleStatus.flags2 &= ~BS_FLAGS2_10; gBattleStatus.flags1 &= ~BS_FLAGS1_8; - if (player->koStatus == 0xD) { + if (player->koStatus == STATUS_DAZE) { dispatch_event_player(EVENT_34); gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; } @@ -291,10 +634,10 @@ void btl_state_update_victory(void) { player->transStatus = 0; player->koStatus = 0; player->koDuration = 0; - ((s32*)player->debuffIcon->data)[15] = 0; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = 0; if (partner != NULL) { - if (partner->koStatus == 0xD) { + if (partner->koStatus == STATUS_DAZE) { dispatch_event_partner(EVENT_34); gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; } @@ -304,7 +647,7 @@ void btl_state_update_victory(void) { partner->transStatus = 0; partner->koStatus = 0; partner->koDuration = 0; - ((s32*)partner->debuffIcon->data)[15] = 0; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; } break; case BATTLE_STATE2_PLAYER_DEFEATED: @@ -372,16 +715,16 @@ void btl_state_update_victory(void) { if (gBattleState2 == BATTLE_STATE2_UNK_2) { func_8024E40C(2); if (battleStatus->nextMerleeSpellType == 3) { - if ((s8) battleStatus->totalStarPoints == 0) { + if (battleStatus->totalStarPoints == 0) { battleStatus->nextMerleeSpellType = 0; playerData->merleeTurnCount = 0; playerData->merleeCastsLeft++; } else { battleStatus->battlePhase = PHASE_MERLEE_EXP_BONUS; - script = start_script(PlayerScriptDispatcher, EVT_PRIORITY_A, 0); + script = start_script(&PlayerScriptDispatcher, EVT_PRIORITY_A, 0); player->takeTurnScript = script; player->takeTurnID = script->id; - script->owner1.enemyID = 0; + script->owner1.actorID = ACTOR_PLAYER; } } gBattleState2 = BATTLE_STATE2_UNK_3; @@ -410,7 +753,7 @@ void btl_state_update_victory(void) { if (gBattleStatus.flags1 & BS_FLAGS1_1000000) { gBattleStatus.flags1 &= ~BS_FLAGS1_40000; } - if ((u16) playerData->battlesWon < 9999) { + if (playerData->battlesWon < 9999) { playerData->battlesWon++; } if (gBattleStatus.flags1 & BS_FLAGS1_40000) { @@ -420,11 +763,11 @@ void btl_state_update_victory(void) { } if (gBattleStatus.flags1 & BS_FLAGS1_20000) { if (!(gBattleStatus.flags2 & BS_FLAGS2_2000000)) { - bgm_set_song(0, -1, 0, 0x5DC, 8); + bgm_set_song(0, -1, 0, 1500, 8); } - btl_set_state(0x20); + btl_set_state(BATTLE_STATE_END_BATTLE); } else { - btl_set_state(0x21); + btl_set_state(BATTLE_STATE_CELEBRATION); } } } @@ -432,14 +775,132 @@ void btl_state_update_victory(void) { void btl_state_draw_victory(void) { } -INCLUDE_ASM(s32, "16F740", btl_state_update_end_training_battle); +void btl_state_update_end_training_battle(void) { + BattleStatus* battleStatus = &gBattleStatus; + PlayerData* playerData = &gPlayerData; + EncounterStatus* encounterStatus = &gCurrentEncounter; + Actor* player = gBattleStatus.playerActor; + Actor* partner = gBattleStatus.partnerActor; + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_0: + player->flags &= ~(ACTOR_FLAG_8000000 | ACTOR_FLAG_4000000); + if (partner != NULL) { + partner->flags &= ~(ACTOR_FLAG_8000000 | ACTOR_FLAG_4000000); + } + gBattleState2 = 0xB; + gBattleStatus.flags2 &= ~BS_FLAGS2_2; + gBattleStatus.flags2 &= ~BS_FLAGS2_4; + gBattleStatus.flags2 &= ~BS_FLAGS2_8; + gBattleStatus.flags2 &= ~BS_FLAGS2_10; + + if (player->koStatus == STATUS_DAZE) { + dispatch_event_player(EVENT_34); + gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; + } + player->debuff = 0; + player->staticStatus = 0; + player->stoneStatus = 0; + player->transStatus = 0; + player->koStatus = 0; + player->koDuration = 0; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = 0; + if (partner != NULL) { + if (partner->koStatus == STATUS_DAZE) { + dispatch_event_partner(EVENT_34); + gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; + } + partner->debuff = 0; + partner->staticStatus = 0; + partner->stoneStatus = 0; + partner->transStatus = 0; + partner->koStatus = 0; + partner->koDuration = 0; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; + } + break; + case BATTLE_STATE2_PLAYER_DEFEATED: + if (player->onHitScript == NULL || !does_script_exist(player->onHitID)) { + player->onHitScript = NULL; + if (partner != NULL) { + if (partner->onHitScript == NULL || !does_script_exist(partner->onHitID)) { + partner->onHitScript = NULL; + } else { + break; + } + } + gBattleState2 = BATTLE_STATE2_UNK_B; + } + break; + } + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_B: + battleStatus->unk_8C = 0; + gBattleStatus.flags2 &= ~BS_FLAGS2_2; + gBattleStatus.flags2 &= ~BS_FLAGS2_4; + gBattleStatus.flags2 &= ~BS_FLAGS2_8; + gBattleStatus.flags2 &= ~BS_FLAGS2_10; + + if (!battleStatus->outtaSightActive) { + gBattleState2 = BATTLE_STATE2_UNK_D; + } else { + Evt* script; + + battleStatus->battlePhase = PHASE_ENEMY_BEGIN; + script = start_script(partner->onTurnChanceScriptSource, 0xA, 0); + partner->onTurnChangeScript = script; + gBattleState2 = BATTLE_STATE2_UNK_C; + partner->onTurnChangeID = script->id; + script->owner1.actorID = ACTOR_PARTNER; + } + break; + case BATTLE_STATE2_UNK_D: + if (!does_script_exist(partner->onTurnChangeID)) { + battleStatus->outtaSightActive = FALSE; + gBattleState2 = BATTLE_STATE2_UNK_D; + } + break; + } + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_D: + func_8024E40C(2); + D_8029F248 = 30; + gBattleState2 = BATTLE_STATE2_UNK_E; + break; + case BATTLE_STATE2_UNK_E: + if (D_8029F248 != 0) { + D_8029F248--; + return; + } + if (playerData->trainingsDone < 9999) { + playerData->trainingsDone++; + } + encounterStatus->battleOutcome = 3; + if (!(gBattleStatus.flags2 & BS_FLAGS2_2000000)) { + bgm_set_song(0, -1, 0, 1500, 8); + } + btl_set_state(BATTLE_STATE_END_BATTLE); + break; + } +} void btl_state_draw_end_training_battle(void) { } INCLUDE_ASM(s32, "16F740", btl_state_update_end_battle); -INCLUDE_ASM(s32, "16F740", btl_state_draw_end_battle); +void btl_state_draw_end_battle(void) { + Camera* camera = &gCameras[gCurrentCameraID]; + + if (gCurrentEncounter.battleOutcome == 1 && !(gBattleStatus.flags1 & BS_FLAGS1_800000)) { + camera->auxBoomZOffset += 0x100; + set_screen_overlay_params_front(7, D_80280A30); + } else { + set_screen_overlay_params_front(0, D_80280A30); + } +} void btl_state_update_defend(void) { Actor* player = gBattleStatus.playerActor; @@ -449,14 +910,14 @@ void btl_state_update_defend(void) { case BATTLE_STATE2_UNK_0: gBattleStatus.unk_8C = 0; gBattleStatus.battlePhase = PHASE_USE_DEFEND; - player->takeTurnScript = script = start_script(PlayerScriptDispatcher, EVT_PRIORITY_A, 0); + player->takeTurnScript = script = start_script(&PlayerScriptDispatcher, EVT_PRIORITY_A, 0); player->takeTurnID = script->id; gBattleState2 = BATTLE_STATE2_UNK_1; - script->owner1.enemyID = 0; + script->owner1.actorID = ACTOR_PLAYER; break; case BATTLE_STATE2_UNK_1: if (!does_script_exist(player->takeTurnID) && gBattleStatus.unk_8C == 0) { - btl_set_state(0x16); + btl_set_state(BATTLE_STATE_END_PLAYER_TURN); } break; } @@ -481,38 +942,38 @@ void btl_state_update_defeat(void) { case BATTLE_STATE2_UNK_0: battleStatus->flags1 &= ~BS_FLAGS1_8; battleStatus->unk_8C = 0; - battleStatus->flags2 &= ~BS_FLAGS2_2; - battleStatus->flags2 &= ~BS_FLAGS2_4; - battleStatus->flags2 &= ~BS_FLAGS2_8; - battleStatus->flags2 &= ~BS_FLAGS2_10; + gBattleStatus.flags2 &= ~BS_FLAGS2_2; + gBattleStatus.flags2 &= ~BS_FLAGS2_4; + gBattleStatus.flags2 &= ~BS_FLAGS2_8; + gBattleStatus.flags2 &= ~BS_FLAGS2_10; if (player->debuff != 0) { if (player->debuff == 7) { sfx_play_sound(SOUND_FROZEN_SHATTER); - player->unk_228->flags |= EFFECT_INSTANCE_FLAGS_10; - player->unk_228 = NULL; + player->icePillarEffect->flags |= EFFECT_INSTANCE_FLAGS_10; + player->icePillarEffect = NULL; } player->debuff = 0; player->debuffDuration = 0; remove_status_debuff(player->hudElementDataIndex); player->koStatus = 0; player->koDuration = 0; - ((s32*)player->debuffIcon->data)[15] = 0; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = 0; } func_8024E40C(0x19); btl_cam_target_actor(0); battleStatus->battlePhase = PHASE_RUN_AWAY_RESET; - script = start_script(PlayerScriptDispatcher, EVT_PRIORITY_A, 0); + script = start_script(&PlayerScriptDispatcher, EVT_PRIORITY_A, 0); player->takeTurnScript = script; player->takeTurnID = script->id; - script->owner1.enemyID = 0; + script->owner1.actorID = ACTOR_PLAYER; if (partner != NULL) { script = start_script(partner->takeTurnScriptSource, EVT_PRIORITY_A, 0); partner->takeTurnScript = script; partner->takeTurnID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; } gBattleState2 = BATTLE_STATE2_UNK_1; break; @@ -520,10 +981,10 @@ void btl_state_update_defeat(void) { if (!does_script_exist(player->takeTurnID) && battleStatus->unk_8C == 0) { if (find_item(ITEM_LIFE_SHROOM) >= 0) { battleStatus->battlePhase = PHASE_USE_LIFE_SHROOM; - script = start_script(PlayerScriptDispatcher, EVT_PRIORITY_A, 0); + script = start_script(&PlayerScriptDispatcher, EVT_PRIORITY_A, 0); player->takeTurnScript = script; player->takeTurnID = script->id; - script->owner1.enemyID = 0; + script->owner1.actorID = ACTOR_PLAYER; gBattleState2 = BATTLE_STATE2_UNK_2; } else { gBattleState2 = BATTLE_STATE2_PLAYER_DEFEATED; @@ -542,7 +1003,7 @@ void btl_state_update_defeat(void) { if (!(gBattleStatus.flags2 & BS_FLAGS2_2000000)) { bgm_set_song(0, -1, 0, 0x5DC, 8); } - btl_set_state(0x20); + btl_set_state(BATTLE_STATE_END_BATTLE); } } @@ -599,10 +1060,10 @@ void btl_state_update_change_partner(void) { break; } deduct_current_move_fp(); - script = start_script(BtlPutPartnerAway, EVT_PRIORITY_A, 0); + script = start_script(&BtlPutPartnerAway, EVT_PRIORITY_A, 0); battleStatus->controlScript = script; battleStatus->controlScriptID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; state->unk_18.x = partner->currentPos.x; state->unk_18.y = 0.0f; state->unk_18.z = partner->currentPos.z; @@ -636,10 +1097,10 @@ void btl_state_update_change_partner(void) { } } - script = start_script(BtlBringPartnerOut, EVT_PRIORITY_A, 0); + script = start_script(&BtlBringPartnerOut, EVT_PRIORITY_A, 0); battleStatus->controlScript = script; battleStatus->controlScriptID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; gBattleState2 = BATTLE_STATE2_UNK_5; break; case BATTLE_STATE2_UNK_5: @@ -651,7 +1112,7 @@ void btl_state_update_change_partner(void) { script = start_script(partner->onTurnChanceScriptSource, EVT_PRIORITY_A, 0); partner->onTurnChangeScript = script; partner->onTurnChangeID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; } } gBattleState2 = BATTLE_STATE2_UNK_6; @@ -670,15 +1131,15 @@ void btl_state_update_change_partner(void) { gBattleStatus.flags2 &= ~BS_FLAGS2_10; if (!(gBattleStatus.flags1 & BS_FLAGS1_80000)) { if (player_team_is_ability_active(player, ABILITY_QUICK_CHANGE) != FALSE) { - btl_set_state(0xC); + btl_set_state(BATTLE_STATE_PREPARE_MENU); } else { - btl_set_state(0x16); + btl_set_state(BATTLE_STATE_END_PLAYER_TURN); } } else { if (player_team_is_ability_active(player, ABILITY_QUICK_CHANGE) == FALSE) { - btl_set_state(0x17); + btl_set_state(BATTLE_STATE_END_PARTNER_TURN); } else { - btl_set_state(0xC); + btl_set_state(BATTLE_STATE_PREPARE_MENU); } } } @@ -715,7 +1176,7 @@ void btl_state_update_partner_move(void) { switch (gBattleState2) { case BATTLE_STATE2_UNK_0: if (partner == NULL) { - btl_set_state(9); + btl_set_state(BATTLE_STATE_9); } else { battleStatus->unk_8C = 0; battleStatus->unk_86 = 0x7F; @@ -759,7 +1220,7 @@ void btl_state_update_partner_move(void) { script = start_script(partner->takeTurnScriptSource, EVT_PRIORITY_A, 0); partner->takeTurnScript = script; partner->takeTurnID = script->id; - script->owner1.enemyID = 0x100; + script->owner1.actorID = ACTOR_PARTNER; gBattleState2 = BATTLE_STATE2_UNK_3; break; case BATTLE_STATE2_UNK_3: @@ -809,7 +1270,7 @@ void btl_state_update_partner_move(void) { } if (battleStatus->unk_8C == 0) { if (gGameStatusPtr->demoFlags & 1) { - btl_set_state(0x23); + btl_set_state(BATTLE_STATE_END_DEMO_BATTLE); break; } decrement_status_menu_disabled(); @@ -929,7 +1390,7 @@ void btl_state_update_partner_move(void) { if (btl_is_popup_displayed() == FALSE) { func_8024E40C(2); btl_cam_move(0xF); - D_8029F248 = 0xA; + D_8029F248 = 10; gBattleState2 = BATTLE_STATE2_UNK_16; } break; @@ -945,7 +1406,7 @@ void btl_state_update_partner_move(void) { if (gBattleState2 == BATTLE_STATE2_UNK_1E && (partner->takeTurnScript == NULL || !does_script_exist(partner->takeTurnID))) { partner->takeTurnScript = NULL; - btl_set_state(0x17); + btl_set_state(BATTLE_STATE_END_PARTNER_TURN); } } @@ -963,9 +1424,9 @@ void btl_state_update_end_partner_turn(void) { if (battleStatus->unk_94 < 0) { battleStatus->unk_94 = 0; - btl_set_state(6); + btl_set_state(BATTLE_STATE_END_TURN); } else { - btl_set_state(9); + btl_set_state(BATTLE_STATE_9); } } } @@ -974,7 +1435,127 @@ void btl_state_update_end_partner_turn(void) { void btl_state_draw_end_partner_turn(void) { } -INCLUDE_ASM(s32, "16F740", btl_state_update_next_enemy); +void btl_state_update_next_enemy(void) { + BattleStatus* battleStatus = &gBattleStatus; + Actor* player = gBattleStatus.playerActor; + Actor* partner = gBattleStatus.partnerActor; + Actor* enemy; + s32 cond; + s32 i; + + switch (gBattleState2) { + case BATTLE_STATE2_UNK_0: + case BATTLE_STATE2_UNK_1: + i = battleStatus->nextEnemyIndex; + if (i >= battleStatus->numEnemyActors) { + battleStatus->nextEnemyIndex = 0; + btl_set_state(BATTLE_STATE_END_TURN); + return; + } + + while (TRUE) { + if (battleStatus->enemyIDs[i] >= 0) { + u16 enemyID = battleStatus->enemyIDs[i]; + + enemy = battleStatus->enemyActors[enemyID & 0xFF]; + if (enemy != NULL) { + if (!(enemy->flags & (ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_TARGET_ONLY))) { + break; + } + } + } + i++; + if (i >= battleStatus->numEnemyActors) { + i = 0; + } + if (i == 0) { + battleStatus->nextEnemyIndex = 0; + btl_set_state(BATTLE_STATE_END_TURN); + return; + } + } + + battleStatus->activeEnemyActorID = battleStatus->enemyIDs[i++]; + battleStatus->currentTurnEnemy = enemy; + battleStatus->nextEnemyIndex = i; + + cond = enemy->debuff == STATUS_SLEEP; + if (enemy->debuff == STATUS_FEAR) { + cond = TRUE; + } + if (enemy->debuff == STATUS_DIZZY) { + cond = TRUE; + } + if (enemy->debuff == STATUS_PARALYZE) { + cond = TRUE; + } + if (enemy->debuff == STATUS_FROZEN) { + cond = TRUE; + } + if (enemy->debuff == STATUS_STOP) { + cond = TRUE; + } + if (enemy->stoneStatus == STATUS_STONE) { + cond = TRUE; + } + if (enemy->flags & ACTOR_FLAG_10000) { + cond = TRUE; + } + if (cond) { + gBattleState2 = BATTLE_STATE2_UNK_0; + return; + } + + battleStatus->unk_8C = 0; + gBattleStatus.flags1 &= ~BS_FLAGS1_2; + gBattleStatus.flags1 &= ~BS_FLAGS1_40000; + gBattleStatus.flags1 &= ~BS_FLAGS1_1000; + gBattleStatus.flags1 &= ~BS_FLAGS1_80000; + + player->flags &= ~ACTOR_FLAG_8000000; + player->flags |= ACTOR_FLAG_4000000; + + if (partner != NULL) { + partner->flags &= ~ACTOR_FLAG_8000000; + partner->flags |= ACTOR_FLAG_4000000; + } + + gBattleStatus.flags2 &= ~BS_FLAGS2_2; + gBattleStatus.flags2 &= ~BS_FLAGS2_4; + gBattleStatus.flags2 |= BS_FLAGS2_10000; + + D_8029F244 = enemy->unk_134; + if (enemy->onTurnChanceScriptSource != NULL) { + Evt* onTurnChanceScript; + + battleStatus->battlePhase = PHASE_ENEMY_BEGIN; + onTurnChanceScript = start_script(enemy->onTurnChanceScriptSource, 0xA, 0); + enemy->onTurnChangeScript = onTurnChanceScript; + enemy->onTurnChangeID = onTurnChanceScript->id; + onTurnChanceScript->owner1.actorID = battleStatus->activeEnemyActorID; + } + gBattleState2 = BATTLE_STATE2_UNK_2; + break; + case BATTLE_STATE2_UNK_2: + if (battleStatus->unk_8C == 0) { + enemy = get_actor(battleStatus->activeEnemyActorID); + + if (enemy != NULL && enemy->unk_134 == D_8029F244) { + if (enemy->onTurnChanceScriptSource == NULL || !does_script_exist(enemy->onTurnChangeID)) { + if (battleStatus->unk_94 < 0) { + battleStatus->unk_94 = 0; + btl_set_state(BATTLE_STATE_END_TURN); + } else { + btl_set_state(BATTLE_STATE_ENEMY_MOVE); + } + } + } else { + btl_set_state(BATTLE_STATE_NEXT_ENEMY); + } + } + break; + } +} void btl_state_draw_next_enemy(void) { } @@ -1039,7 +1620,97 @@ void btl_state_draw_enemy_striking_first(void) { } } -INCLUDE_ASM(s32, "16F740", btl_state_update_end_demo_battle); +void btl_state_update_end_demo_battle(void) { + BattleStatus* battleStatus = &gBattleStatus; + Battle* blah = (*D_800DC4FC); + Stage* stage; + s32 i; + + switch (gBattleState2) { + case 0: + D_80280A30 = 0; + if (D_802809F6 == -1) { + if (D_802809F8 != 0) { + D_802809F8--; + break; + } + } + gBattleState2 = BATTLE_STATE2_UNK_1; + break; + case 1: + switch (D_802809F6) { + case 255: + gBattleState2 = BATTLE_STATE2_UNK_2; + return; + case -1: + if (D_80280A30 == 0xFF) { + gBattleState2 = BATTLE_STATE2_UNK_2; + return; + } + D_80280A30 += 50; + if (D_80280A30 > 0xFF) { + D_80280A30 = 0xFF; + } + return; + } + break; + case 2: + D_80280A30 = 0xFF; + gBattleStatus.flags1 &= ~BS_FLAGS1_1; + if (D_800DC064 == NULL) { + stage = blah->stage; + } else { + stage = D_800DC064[1]; // TODO cleanup + } + + if (stage->postBattle == NULL) { + gBattleState2 = BATTLE_STATE2_UNK_4; + } else { + battleStatus->controlScript = start_script(stage->postBattle, 0xA, 0); + gBattleState2 = BATTLE_STATE2_UNK_3; + battleStatus->controlScriptID = battleStatus->controlScript->id; + } + break; + case 3: + if (does_script_exist(battleStatus->controlScriptID)) { + break; + } + gBattleState2 = BATTLE_STATE2_UNK_4; + case 4: + kill_all_scripts(); + + for (i = 0; i < ARRAY_COUNT(battleStatus->enemyActors); i++) { + Actor* enemy = battleStatus->enemyActors[i]; + + if (enemy != NULL) { + btl_delete_actor(enemy); + } + } + + if (battleStatus->partnerActor != NULL) { + btl_delete_actor(battleStatus->partnerActor); + } + + btl_delete_player_actor(battleStatus->playerActor); + remove_all_effects(); + set_windows_visible(WINDOW_GROUP_ALL); + + if (gBattleStatus.flags2 & BS_FLAGS2_40) { + decrement_status_menu_disabled(); + } + + if (D_802809F6 != -1) { + gGameStatusPtr->nextDemoScene = 0x12; + } + + btl_set_state(BATTLE_STATE_0); + D_800DC4D0 = gBattleState; + set_game_mode(GAME_MODE_END_BATTLE); + break; + } +} + +const static f32 padding[] = { 0.0f, 0.0f, 0.0f }; void btl_state_draw_end_demo_battle(void) { if (D_802809F6 == -1) { diff --git a/src/16c8e0.c b/src/16c8e0.c index d5e944ff9e..c12bf249d4 100644 --- a/src/16c8e0.c +++ b/src/16c8e0.c @@ -1024,7 +1024,7 @@ void btl_delete_actor(Actor* actor) { delete_shadow(actor->shadow.id); remove_all_status_icons(actor->hudElementDataIndex); - remove_effect(actor->debuffIcon); // ??? + remove_effect(actor->debuffEffect); if (actor->unk_200 != NULL) { actor->unk_200[3][9] = 0; @@ -1067,7 +1067,7 @@ void btl_delete_player_actor(Actor* player) { delete_shadow(player->shadow.id); remove_all_status_icons(player->hudElementDataIndex); - remove_effect(player->debuffIcon); // ??? + remove_effect(player->debuffEffect); if (player->unk_200 != NULL) { player->unk_200[3][9] = 0; diff --git a/src/190B20.c b/src/190B20.c index 43902226a4..3fd269c51d 100644 --- a/src/190B20.c +++ b/src/190B20.c @@ -2064,8 +2064,8 @@ void load_player_actor(void) { player->shadow.id = create_shadow_type(0, player->currentPos.x, player->currentPos.y, player->currentPos.z); player->shadowScale = player->size.x / 24.0; player->hudElementDataIndex = create_status_icon_set(); - player->debuffIcon = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); - player->unk_228 = NULL; + player->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); + player->icePillarEffect = NULL; if (is_ability_active(ABILITY_ZAP_TAP)) { player->staticStatus = STATUS_STATIC; @@ -2318,8 +2318,8 @@ void load_partner_actor(void) { partnerActor->shadow.id = create_shadow_type(0, partnerActor->currentPos.x, partnerActor->currentPos.y, partnerActor->currentPos.z); partnerActor->shadowScale = partnerActor->size.x / 24.0; partnerActor->hudElementDataIndex = create_status_icon_set(); - partnerActor->debuffIcon = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); - partnerActor->unk_228 = NULL; + partnerActor->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); + partnerActor->icePillarEffect = NULL; takeTurnScript = start_script(partnerActor->takeTurnScriptSource, EVT_PRIORITY_A, 0); partnerActor->takeTurnID = takeTurnScript->id; @@ -2589,8 +2589,8 @@ Actor* create_actor(Formation formation) { takeTurnScript->owner1.enemyID = actor->enemyIndex | 0x200; actor->shadow.id = create_shadow_type(0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z); actor->shadowScale = actor->size.x / 24.0; - actor->debuffIcon = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); - actor->unk_228 = NULL; + actor->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0); + actor->icePillarEffect = NULL; actor->hudElementDataIndex = create_status_icon_set(); return actor; } @@ -2754,7 +2754,7 @@ s32 inflict_status(Actor* target, s32 statusTypeKey, s32 duration) { if (target->debuff != statusTypeKey) { target->status = statusTypeKey; } - ((s32*)target->debuffIcon->data)[15] = 0; + ((DisableXFXData*)target->debuffEffect->data)->unk_3C = 0; target->debuff = statusTypeKey; target->debuffDuration = duration; if ((s8)duration > 9) { @@ -2764,11 +2764,11 @@ s32 inflict_status(Actor* target, s32 statusTypeKey, s32 duration) { switch (statusTypeKey) { case STATUS_FROZEN: if (target->actorID != ACTOR_PARTNER) { - effect = target->unk_228; + effect = target->icePillarEffect; if (effect != NULL) { effect->flags |= EFFECT_INSTANCE_FLAGS_10; } - target->unk_228 = fx_ice_pillar(0, target->currentPos.x, target->currentPos.y, + target->icePillarEffect = fx_ice_pillar(0, target->currentPos.x, target->currentPos.y, target->currentPos.z, 1.0f, 0); create_status_debuff(target->hudElementDataIndex, STATUS_FROZEN); } @@ -3502,7 +3502,7 @@ void btl_update_ko_status(void) { player->koDuration = player->debuffDuration; if (player->koDuration > 0) { player->koStatus = STATUS_DAZE; - ((s32*)player->debuffIcon->data)[15] = player->koDuration; + ((DisableXFXData*)player->debuffEffect->data)->unk_3C = player->koDuration; if (koDuration == 0) { sfx_play_sound(SOUND_2107); @@ -3517,7 +3517,7 @@ void btl_update_ko_status(void) { if (partner->koDuration > 0) { partner->koStatus = STATUS_DAZE; - ((s32*)partner->debuffIcon->data)[15] = partner->koDuration; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = partner->koDuration; } } @@ -3528,7 +3528,7 @@ void btl_update_ko_status(void) { enemy->koDuration = enemy->debuffDuration; if (enemy->koDuration > 0) { enemy->koStatus = STATUS_DAZE; - ((s32*)enemy->debuffIcon->data)[15] = enemy->koDuration; + ((DisableXFXData*)enemy->debuffEffect->data)->unk_3C = enemy->koDuration; } } } diff --git a/src/1A5830.c b/src/1A5830.c index ccbc7ea824..c00b24e65d 100644 --- a/src/1A5830.c +++ b/src/1A5830.c @@ -1997,7 +1997,7 @@ ApiStatus ClearStatusEffects(Evt* script, s32 isInitialCall) { actor->koStatus = 0; actor->koDuration = 0; - ((s32*)actor->debuffIcon->data)[15] = 0; + ((DisableXFXData*)actor->debuffEffect->data)->unk_3C = 0; actor->attackBoost = 0; actor->defenseBoost = 0; actor->isGlowing = 0; diff --git a/src/1a1f0_len_5390.c b/src/1a1f0_len_5390.c index 3488e82b51..e5b192d687 100644 --- a/src/1a1f0_len_5390.c +++ b/src/1a1f0_len_5390.c @@ -5,6 +5,7 @@ #include "hud_element.h" extern s32 D_80077C40; +extern EnemyDrops D_80077EB8; extern s8 D_8009A654; extern s16 D_8009A668; diff --git a/src/415D90.c b/src/415D90.c index 26cc992dbe..071ce7dbd4 100644 --- a/src/415D90.c +++ b/src/415D90.c @@ -1,6 +1,8 @@ #include "common.h" #include "hud_element.h" +extern s32 D_8008FA78; + extern HudScript HudScript_YellowArrow[]; extern HudScript HudScript_MenuFlee[]; @@ -83,7 +85,9 @@ extern HudScript HudScript_MoveBlueOrbDisabled[]; extern HudScript HudScript_MoveGreenOrbDisabled[]; extern HudScript HudScript_MoveRedOrbDisabled[]; -extern u8 D_802AD000; +extern s32 D_802ACC60; +extern s32 D_802ACC6C; +extern s8 D_802AD000; extern u8 D_802AD001; extern s16 D_802AD006; extern s16 D_802AD008; @@ -99,6 +103,16 @@ extern s32 D_802AD054; extern s32 D_802AD058; extern s8 D_802AD068; extern s32 main_menu_numOptions; +extern s32 D_802AD0A8; +extern s32 D_802AD0B0; +extern s32 D_802AD0BB[]; +extern s32 D_802AD100; +extern s32 D_802AD104; +extern s32 battle_menu_isEnabled; +extern s32 battle_menu_isMessageDisabled; +extern s32 battle_menu_messageIDs[]; +extern s32 battle_menu_submenuIDs; +extern HudScript* main_battle_menu_JumpHudScripts; extern s8 D_802AD10A; extern s8 D_802AD10D; extern s8 D_802AD10E; @@ -149,7 +163,7 @@ extern s32 D_802AD690[]; extern s32 D_802AD6C0[]; extern s32 D_802AD6D4; -s16 D_802AB340[] = { 0x001C, 0x0028 }; +s16 D_802AB340[] = { 28, 40 }; s16 D_802AB344[] = { 0, -2 }; @@ -169,22 +183,28 @@ HudScript* battle_menu_ItemHudScripts[] = { HudScript_MenuItem, HudScript_MenuIt HudScript* battle_menu_StarPowerHudScripts[] = { HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled }; -HudScript* battle_menu_StarPowerMovesHudScripts[] = { HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled, HudScript_Eldstar, HudScript_EldstarDisabled, +HudScript* battle_menu_StarPowerMovesHudScripts[] = { + HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled, HudScript_Eldstar, HudScript_EldstarDisabled, HudScript_Mamar, HudScript_MamarDisabled, HudScript_Skolar, HudScript_SkolarDisabled, HudScript_Muskular, HudScript_MuskularDisabled, HudScript_Misstar, HudScript_MisstarDisabled, HudScript_Klevar, HudScript_KlevarDisabled, HudScript_Kalmar, HudScript_KalmarDisabled, HudScript_StarBeam, HudScript_StarBeamDisabled, HudScript_PeachBeam, HudScript_PeachBeamDisabled, - HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled, HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled }; + HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled, HudScript_MenuStarPower, HudScript_MenuStarPowerDisabled +}; -HudScript* battle_menu_PartnerHudScripts[] = { HudScript_Partner0, HudScript_Goombario, HudScript_Kooper, HudScript_Bombette, +HudScript* battle_menu_PartnerHudScripts[] = { + HudScript_Partner0, HudScript_Goombario, HudScript_Kooper, HudScript_Bombette, HudScript_Parakarry, HudScript_Partner0, HudScript_Watt, HudScript_Sushie, HudScript_Lakilester, HudScript_Bow, HudScript_PartnerA, HudScript_PartnerA, - HudScript_PartnerA, HudScript_PartnerA, HudScript_PartnerA, HudScript_PartnerA }; + HudScript_PartnerA, HudScript_PartnerA, HudScript_PartnerA, HudScript_PartnerA +}; -HudScript* battle_menu_DisabledPartnerHudScripts[] = { HudScript_Partner0Disabled, HudScript_GoombarioDisabled, HudScript_KooperDisabled, HudScript_BombetteDisabled, +HudScript* battle_menu_DisabledPartnerHudScripts[] = { + HudScript_Partner0Disabled, HudScript_GoombarioDisabled, HudScript_KooperDisabled, HudScript_BombetteDisabled, HudScript_ParakarryDisabled, HudScript_Partner0Disabled, HudScript_WattDisabled, HudScript_SushieDisabled, HudScript_LakilesterDisabled, HudScript_BowDisabled, HudScript_PartnerADisabled, HudScript_PartnerADisabled, - HudScript_PartnerADisabled, HudScript_PartnerADisabled, HudScript_PartnerADisabled, HudScript_PartnerADisabled }; + HudScript_PartnerADisabled, HudScript_PartnerADisabled, HudScript_PartnerADisabled, HudScript_PartnerADisabled +}; HudScript* battle_menu_StrategiesHudScript[] = { HudScript_MenuStrategies }; @@ -219,9 +239,15 @@ s32 D_802AB4F0[] = { 0x2, 0x1, 0x4, 0x6, 0x3, 0x5, 0x1A, 0x3, 0x34, 0x39, 0x31, // s8 D_802AB513 -s32 D_802AB520[] = { 0x00000000, 0x00090012, 0x000A001A, 0x000B001C, 0x000C0017, 0x009D0001, 0x000E000B, 0x000F0012, 0x00100003, 0x000D0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; +s32 D_802AB520[] = { + 0x00000000, 0x00090012, 0x000A001A, 0x000B001C, 0x000C0017, 0x009D0001, 0x000E000B, 0x000F0012, 0x00100003, + 0x000D0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 +}; -s32 D_802AB558[] = { 0x00000000, 0x00090002, 0x000A0005, 0x000B0006, 0x000C0002, 0x009D0002, 0x000E0002, 0x000F0002, 0x00100002, 0x000D0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000 }; +s32 D_802AB558[] = { + 0x00000000, 0x00090002, 0x000A0005, 0x000B0006, 0x000C0002, 0x009D0002, 0x000E0002, 0x000F0002, 0x00100002, + 0x000D0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000 +}; HudScript* battle_menu_PartnerMoveHudScripts[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -245,7 +271,10 @@ HudScript* battle_menu_TwinkStarPowerHudScripts[] = { HudScript_MenuStarPower, H // Dash s32 D_802AB734[] = { 0x001D0057 }; -s32 D_802AB738[] = { 0x00000000, 0x001D0007, 0x001D0008, 0x001D0009, 0x001D000A, 0x001D000B, 0x001D000C, 0x001D000D, 0x001D000E, 0x001D000F, 0x001D0010, 0x001D0011, 0x001D0012, 0x00000000 }; +s32 D_802AB738[] = { + 0x00000000, 0x001D0007, 0x001D0008, 0x001D0009, 0x001D000A, 0x001D000B, 0x001D000C, 0x001D000D, 0x001D000E, + 0x001D000F, 0x001D0010, 0x001D0011, 0x001D0012, 0x00000000 +}; void func_802A1000(void) { D_802AD006 = 255; @@ -296,10 +325,212 @@ void func_802A10B8(void) { hud_element_free(D_802AD058); } +s32 func_802A11B0(void); INCLUDE_ASM(s32, "415D90", func_802A11B0); void btl_draw_menu_wheel(void); + +// various issues +#ifdef NON_MATCHING +extern s8 D_802AD002; +extern s8 D_802AD004; +extern s16 D_802AD00A; +extern s32 D_802AD060; +extern s32 D_802AD064; +extern s8 D_802AD06B; +extern f32 D_802AD06C; +extern f32 D_802AD070; + +void btl_draw_menu_wheel(void) { + s32 id; + s32 opacity; + + f32 temp_f24; + f32 theta; + + s32 cond; + f32 x; + f32 y; + f32 scale; + s32 i; + + s32 new_var; + + switch (D_802AD000) { + case 1: + func_80144218(-1); + id = D_802AD048; + hud_element_set_transform_rotation(id, 0.0f, 0.0f, 0.0f); + hud_element_set_alpha(id, (D_802AD006 * 254) / 255); + hud_element_set_render_pos(id, 3940 - D_802AD00A, D_802AD00A + 212); + func_80144238(id); + id = D_802AD044; + hud_element_set_alpha(id, (D_802AD006 * 254) / 255); + hud_element_set_render_pos(id, 40 - D_802AD00A, D_802AD00A + 212); + func_80144238(id); + break; + case -1: + case 2: + case 10: + case 20: + case 30: + opacity = (D_802AD006 * D_802AD008) / 255; + func_80144218(-1); + temp_f24 = (D_802AD100 - D_802AD002) * 28; + + cond = FALSE; + if (D_802AD06C > temp_f24) { + D_802AD06C -= D_802AD070; + if (D_802AD06C < temp_f24) { + D_802AD06C = temp_f24; + cond = TRUE; + } + } else if (D_802AD06C < temp_f24) { + D_802AD06C += D_802AD070; + if (D_802AD06C > temp_f24) { + D_802AD06C = temp_f24; + cond = TRUE; + } + } else { + cond = TRUE; + } + + if (!cond) { + D_802AD070 = (D_802AD070 * (D_802AD070 + 1.0) * (D_802AD070 + 1.0)); + } else { + D_802AD004 = 0; + D_802AD070 = 0.3f; + } + + theta = D_802AD06C; + for (i = 0; i < main_menu_numOptions; i++, theta += 28.0f) { + x = 0.0f; + y = 0.0f; + add_vec2D_polar(&x, &y, 87.0f, theta); + id = D_802AD028[i]; + x = D_802AD060 + x; + y = D_802AD064 + y; + hud_element_set_transform_pos(id, x, -y, 0.0f); + hud_element_set_render_pos(id, 0, 0); + hud_element_set_alpha(id, (opacity * 150) / 255); + + if (theta == 56.0f && cond == TRUE) { + hud_element_set_scale(id, 1.6f); + } else { + hud_element_set_scale(id, 1.0f); + } + + func_80144238(id); + if (i == D_802AD06B + D_802AD002) { + x = 0.0f; + y = 0.0f; + add_vec2D_polar(&x, &y, 87.0f, 56.0f); + x = D_802AD060 + x; + y = D_802AD064 + y; + id = D_802AD040; + hud_element_set_transform_pos(id, x, -y, 0.0f); + hud_element_set_render_pos(id, 0, 0); + hud_element_set_alpha(id, (opacity * 180) / 255); + hud_element_set_scale(id, 1.2f); + if (!cond) { + hud_element_set_flags(id, 2); + } else { + hud_element_clear_flags(id, 2); + } + func_80144238(id); + } + } + + scale = (fabsf(fabsf((D_802AD06C - ((D_802AD100 - D_802AD002) * 28)) * (45.0 / 28.0)) - 22.5) / 22.5) + 0.01; + if (cond) { + scale = 1.0f; + } + + id = D_802AD04C; + hud_element_set_transform_rotation_pivot(id, 0, 0); + hud_element_set_transform_rotation(id, 0.0f, 0.0f, -43.0f); + hud_element_set_scale(id, scale); + hud_element_set_transform_scale(id, 1.0f, 1.8f, 1.0f); + hud_element_set_alpha(id, (opacity * 200) / 255); + hud_element_set_render_pos(id, 79, 176); + func_80144238(id); + + id = D_802AD048; + scale = (D_802AD06C - ((D_802AD100 - D_802AD002) * 28)) * (45.0 / 28.0); + hud_element_set_transform_rotation(id, 0.0f, 0.0f, -scale); + hud_element_set_transform_rotation_pivot(id, 18, -20); + hud_element_set_scale(id, 0.95f); + hud_element_set_alpha(id, (opacity * 254) / 255); + hud_element_set_render_pos(id, 40 - D_802AD00A, D_802AD00A + 212); + func_80144238(id); + + id = D_802AD044; + hud_element_set_alpha(id, (opacity * 254) / 255); + hud_element_set_render_pos(id, 40 - D_802AD00A, D_802AD00A + 212); + hud_element_set_scale(id, 1.0f); + func_80144238(id); + + theta = D_802AD06C; + for (i = 0; i < main_menu_numOptions; i++, theta += 28.0f) { + s32 l; + s32 t; + s32 new_var; + + x = 0.0f; + y = 0.0f; + add_vec2D_polar(&x, &y, 87.0f, theta); + + x = D_802AD060 + x; + l = x; + y = D_802AD064 + y; + t = y; + btl_draw_prim_quad(0, 0, 0, 0, l - 12, t - 12, 24, 24); + id = D_802AD010[i]; + hud_element_set_render_pos(id, l, t); + hud_element_set_alpha(id, (opacity * 180) / 255); + if (i == D_802AD06B + D_802AD002) { + hud_element_set_alpha(id, opacity); + } + hud_element_draw_clipped(id); + } + + if (cond) { + s32 msgX; + s32 msgY; + + msgX = D_802AD060 + 20; + msgY = D_802AD064; + + msgY -= 34; + + btl_draw_prim_quad(0, 0, 0, 0, D_802AD060 + 46, msgY, 48, 16); + draw_msg(battle_menu_messageIDs[D_802AD002 + D_802AD06B], msgX, msgY, opacity, 0x35, 0); + } + + if ((gBattleStatus.flags1 & 0x02000000) || (gBattleStatus.flags2 & 0x40)) { + D_802AD104 = 0; + } + + if (D_802AD104 != 0) { + id = D_802AD05C; + hud_element_set_alpha(id, (opacity * 200) / 255); + hud_element_draw_clipped(id); + id = D_802AD050; + hud_element_set_alpha(id, opacity); + hud_element_draw_clipped(id); + id = D_802AD054; + hud_element_set_alpha(id, opacity); + hud_element_draw_clipped(id); + id = D_802AD058; + hud_element_set_alpha(id, opacity); + hud_element_draw_clipped(id); + } + break; + } +} +#else INCLUDE_ASM(s32, "415D90", btl_draw_menu_wheel); +#endif // Very similar to func_802A45D8 - maybe can be used to reduce fake matches there void func_802A2684(void) { @@ -857,122 +1088,116 @@ s32 func_802A58D0(void) { INCLUDE_ASM(s32, "415D90", btl_state_update_player_menu); -//requires above to be decomped -#ifdef NON_EQUIVALENT void btl_state_draw_player_menu(void) { switch (gBattleState2) { - case 1: + case BATTLE_STATE2_UNK_1: btl_draw_menu_wheel(); break; - case 2: - case 3: - case 4: - case 5: - case 10: - case 11: - case 12: - case 13: - case 14: - case 20: - case 21: - case 22: - case 23: - case 24: - case 30: - case 31: - case 32: - case 33: - case 34: - case 40: - case 41: - case 42: - case 43: - case 44: - case 51: - case 52: - case 53: - case 54: - case 61: - case 62: - case 63: - case 64: - case 65: - case 200: - case 201: + case BATTLE_STATE2_UNK_2: + case BATTLE_STATE2_UNK_3: + case BATTLE_STATE2_UNK_4: + case BATTLE_STATE2_UNK_5: + case BATTLE_STATE2_PLAYER_DEFEATED: + case BATTLE_STATE2_UNK_B: + case BATTLE_STATE2_UNK_C: + case BATTLE_STATE2_UNK_D: + case BATTLE_STATE2_UNK_14: + case BATTLE_STATE2_UNK_15: + case BATTLE_STATE2_UNK_16: + case BATTLE_STATE2_UNK_17: + case BATTLE_STATE2_UNK_18: + case BATTLE_STATE2_UNK_1E: + case BATTLE_STATE2_UNK_1F: + case BATTLE_STATE2_UNK_20: + case BATTLE_STATE2_UNK_21: + case BATTLE_STATE2_UNK_22: + case BATTLE_STATE2_UNK_28: + case BATTLE_STATE2_UNK_29: + case BATTLE_STATE2_UNK_2A: + case BATTLE_STATE2_UNK_2B: + case BATTLE_STATE2_UNK_2C: + case BATTLE_STATE2_UNK_3D: + case BATTLE_STATE2_UNK_3E: + case BATTLE_STATE2_UNK_3F: btl_draw_menu_wheel(); break; - case 202: + case BATTLE_STATE2_UNK_40: + case BATTLE_STATE2_UNK_41: + case BATTLE_STATE2_UNK_C8: + case BATTLE_STATE2_UNK_C9: btl_draw_menu_wheel(); break; - case 203: + case BATTLE_STATE2_UNK_CA: btl_draw_menu_wheel(); break; - case 204: + case BATTLE_STATE2_UNK_CB: btl_draw_menu_wheel(); break; - case 205: + case BATTLE_STATE2_UNK_CC: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_CD: btl_draw_menu_wheel(); break; } } -#else -INCLUDE_ASM(s32, "415D90", btl_state_draw_player_menu); -#endif + +static const f32 padding = 0.0f; INCLUDE_ASM(s32, "415D90", btl_state_update_partner_menu); void btl_state_draw_partner_menu(void) { switch (gBattleState2) { - case 2: + case BATTLE_STATE2_UNK_2: btl_draw_menu_wheel(); break; - case 3: - case 4: - case 5: - case 6: - case 10: - case 11: - case 12: - case 13: - case 14: - case 20: - case 21: - case 22: - case 23: - case 24: - case 30: - case 31: - case 32: - case 33: - case 34: - case 40: - case 41: - case 42: - case 43: - case 44: - case 51: - case 52: - case 53: - case 54: - case 61: - case 62: - case 63: - case 64: - case 65: - case 200: - case 201: + case BATTLE_STATE2_UNK_3: + case BATTLE_STATE2_UNK_4: + case BATTLE_STATE2_UNK_5: + case BATTLE_STATE2_UNK_6: + case BATTLE_STATE2_PLAYER_DEFEATED: + case BATTLE_STATE2_UNK_B: + case BATTLE_STATE2_UNK_C: + case BATTLE_STATE2_UNK_D: + case BATTLE_STATE2_UNK_E: + case BATTLE_STATE2_UNK_14: + case BATTLE_STATE2_UNK_15: + case BATTLE_STATE2_UNK_16: + case BATTLE_STATE2_UNK_17: + case BATTLE_STATE2_UNK_18: + case BATTLE_STATE2_UNK_1E: + case BATTLE_STATE2_UNK_1F: + case BATTLE_STATE2_UNK_20: + case BATTLE_STATE2_UNK_21: + case BATTLE_STATE2_UNK_22: + case BATTLE_STATE2_UNK_28: + case BATTLE_STATE2_UNK_29: + case BATTLE_STATE2_UNK_2A: + case BATTLE_STATE2_UNK_2B: + case BATTLE_STATE2_UNK_2C: + case BATTLE_STATE2_UNK_33: + case BATTLE_STATE2_UNK_34: + case BATTLE_STATE2_UNK_35: + case BATTLE_STATE2_UNK_36: + case BATTLE_STATE2_UNK_3D: + case BATTLE_STATE2_UNK_3E: + case BATTLE_STATE2_UNK_3F: + case BATTLE_STATE2_UNK_40: + case BATTLE_STATE2_UNK_41: + case BATTLE_STATE2_UNK_C8: + case BATTLE_STATE2_UNK_C9: btl_draw_menu_wheel(); break; - case 202: + case BATTLE_STATE2_UNK_CA: btl_draw_menu_wheel(); break; - case 203: + case BATTLE_STATE2_UNK_CB: btl_draw_menu_wheel(); break; - case 204: + case BATTLE_STATE2_UNK_CC: btl_draw_menu_wheel(); break; - case 205: + case BATTLE_STATE2_UNK_CD: btl_draw_menu_wheel(); break; } @@ -982,38 +1207,179 @@ s32 func_802A9B30(void) { return (gBattleStatus.flags2 & BS_FLAGS2_4) <= 0; } -INCLUDE_ASM(s32, "415D90", btl_state_update_peach_menu); - -// Needs the above jtbl to be decompiled and then this will work +// Ordering shenanigans #ifdef NON_MATCHING -void btl_state_draw_peach_menu(void) { +void btl_state_update_peach_menu(void) { + BattleStatus* battleStatus = &gBattleStatus; + Actor* player = battleStatus->playerActor; + Actor* partner = battleStatus->partnerActor; + s32 temp_s0_2; + s32 phi_v0; + switch (gBattleState2) { + case 0: + func_8024E40C(2); + btl_cam_move(0xA); + if (!(gBattleStatus.flags1 & 0x100000)) { + gBattleState2 = 0xB; + break; + } + player->state.currentPos.x = player->homePos.x; + player->state.currentPos.z = player->homePos.z; + gBattleState2 = 0xA; + player->state.goalPos.x = partner->homePos.x; + player->state.goalPos.z = partner->homePos.z; + player->state.moveTime = 4; + player->state.angle = 0.0f; + break; + case 10: + if (player->state.moveTime != 0) { + player->currentPos.x += (player->state.goalPos.x - player->currentPos.x) / player->state.moveTime; + player->currentPos.z += (player->state.goalPos.z - player->currentPos.z) / player->state.moveTime; + partner->currentPos.x += (player->state.currentPos.x - partner->currentPos.x) / player->state.moveTime; + partner->currentPos.z += (player->state.currentPos.z - partner->currentPos.z) / player->state.moveTime; + } + + player->currentPos.z -= sin_rad(player->state.angle * TAU / 360.0f) * 16.0f; + player->yaw = clamp_angle(-player->state.angle); + partner->currentPos.z += sin_rad(player->state.angle * TAU / 360.0f) * 16.0f; + partner->yaw = clamp_angle(-player->state.angle); + player->state.angle += 90.0f; + + if (player->state.moveTime != 0) { + player->state.moveTime--; + break; + } + + player->currentPos.x = player->state.goalPos.x; + player->currentPos.z = player->state.goalPos.z; + partner->currentPos.x = player->state.currentPos.x; + partner->currentPos.z = player->state.currentPos.z; + player->homePos.x = player->currentPos.x; + player->homePos.z = player->currentPos.z; + partner->homePos.x = partner->currentPos.x; + partner->homePos.z = partner->currentPos.z; + gBattleStatus.flags1 &= ~0x100000; + case 11: + gBattleStatus.flags1 |= 2; + player->flags &= ~0x4000000; + player->flags |= 0x08000000; + + if (partner != NULL) { + partner->flags |= 0x4000000; + partner->flags |= 0x08000000; + } + + battleStatus->selectedMoveID = 0; + battle_menu_submenuIDs = 8; + battle_menu_isEnabled = TRUE; + battle_menu_isMessageDisabled = 0; + main_battle_menu_JumpHudScripts = battle_menu_PeachStarPowerHudScripts[0]; + battle_menu_messageIDs = D_802AB728[0]; + if (!(battleStatus->menuDisableFlags & 0x100)) { + battle_menu_isEnabled = FALSE; + battle_menu_isMessageDisabled = 0x48; + main_battle_menu_JumpHudScripts = battle_menu_PeachStarPowerHudScripts[1]; + } + + if (func_802A9B30()) { + D_802AD104 = 1; + phi_v0 = 2 - 0; + main_menu_numOptions = 1; + } else { + D_802AD104 = 0; + phi_v0 = 2 - 0; + main_menu_numOptions = 1; + } + + D_802AD0A8 = 0; + D_802AD0B0 = 0; + D_802AD100 = phi_v0; + func_802A1000(); + D_802ACC60 = 8; + gBattleState2 = 1; + break; case 1: - btl_draw_menu_wheel(); + set_animation(0, 0, 0xC0009); + temp_s0_2 = func_802A11B0(); + if (D_802ACC60 != 0) { + D_802ACC60--; + break; + } + if (temp_s0_2 != 0) { + set_animation(0, 0, 0xA0002); + battleStatus->currentSubmenu = D_802AD0BB[temp_s0_2 - 1]; + func_802A1030(); + D_802ACC60 = 8; + D_802ACC6C = 4; + gBattleState2 = 2; + } break; case 2: - btl_draw_menu_wheel(); - break; - case 3: - btl_draw_menu_wheel(); + if (func_802A11B0() != 0) { + battleStatus->unk_6C = 4; + battleStatus->unk_6E = 5; + battleStatus->moveCategory = 8; + battleStatus->selectedMoveID = 0x81; + battleStatus->selectedItemID = 0xA; + battleStatus->currentTargetListFlags = D_8008FA78; + btl_set_state(0x11); + } break; case 4: - btl_draw_menu_wheel(); + func_802A1050(); + gBattleState2 = 1; + btl_state_update_peach_menu(); + btl_state_update_peach_menu(); break; case 5: - btl_draw_menu_wheel(); + func_802A10B8(); break; - case 6: - case 7: case 8: + btl_show_variable_battle_message(0x50, 60, 0); + D_802AD607 = 1; + gBattleState2 = 9; + break; case 9: + if (!btl_is_popup_displayed()) { + D_802AD607 = 0; + D_802ACC60 = 0; + gBattleState2 = 1; + } break; } } #else -INCLUDE_ASM(s32, "415D90", btl_state_draw_peach_menu); +INCLUDE_ASM(s32, "415D90", btl_state_update_peach_menu); #endif +void btl_state_draw_peach_menu(void) { + switch (gBattleState2) { + case BATTLE_STATE2_UNK_1: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_2: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_3: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_4: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_5: + btl_draw_menu_wheel(); + break; + case BATTLE_STATE2_UNK_6: + case BATTLE_STATE2_UNK_7: + case BATTLE_STATE2_UNK_8: + case BATTLE_STATE2_UNK_9: + break; + } +} + +static const f32 padding2 = 0.0f; + s32 func_802AA0A4(void) { return (gBattleStatus.flags2 & 2) <= 0; } @@ -1022,25 +1388,25 @@ INCLUDE_ASM(s32, "415D90", btl_state_update_twink_menu); // look into m2c bug void btl_state_draw_twink_menu(void) { switch (gBattleState2) { - case 1: + case BATTLE_STATE2_UNK_1: btl_draw_menu_wheel(); break; - case 2: + case BATTLE_STATE2_UNK_2: btl_draw_menu_wheel(); break; - case 3: + case BATTLE_STATE2_UNK_3: btl_draw_menu_wheel(); break; - case 4: + case BATTLE_STATE2_UNK_4: btl_draw_menu_wheel(); break; - case 5: + case BATTLE_STATE2_UNK_5: btl_draw_menu_wheel(); break; - case 6: - case 7: - case 8: - case 9: + case BATTLE_STATE2_UNK_6: + case BATTLE_STATE2_UNK_7: + case BATTLE_STATE2_UNK_8: + case BATTLE_STATE2_UNK_9: break; } } diff --git a/src/77480.c b/src/77480.c index 56965a92c7..c2ea41596b 100644 --- a/src/77480.c +++ b/src/77480.c @@ -591,9 +591,9 @@ void update_player(void) { update_partner_timers(); - if ((playerStatus->decorationList > 100) || (playerStatus->position.y < -2000.0f)) { + if ((playerStatus->timeInAir > 100) || (playerStatus->position.y < -2000.0f)) { if (!(playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_10000000)) { - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->position.x = playerStatus->lastGoodPosition.x; playerStatus->position.y = playerStatus->lastGoodPosition.y; playerStatus->position.z = playerStatus->lastGoodPosition.z; @@ -608,7 +608,7 @@ void update_player(void) { partner->pos.z = playerStatus->lastGoodPosition.z; partner->moveToPos.y = playerStatus->lastGoodPosition.y; } else { - playerStatus->decorationList = 10; + playerStatus->timeInAir = 10; } } } @@ -718,7 +718,7 @@ void phys_update_standard(void) { if ( collision_main_above() < 0 && - playerStatus->decorationList == 0 && + playerStatus->timeInAir == 0 && playerStatus->animFlags & PLAYER_STATUS_ANIM_FLAGS_USING_PEACH_PHYSICS ) { func_800E4F10(); @@ -1119,7 +1119,7 @@ s32 func_800E06D8(void) { s32 temp = playerStatus->interactingWithID; s32 wall; - if (playerStatus->decorationList || playerStatus->inputEnabledCounter) { + if (playerStatus->timeInAir || playerStatus->inputEnabledCounter) { return FALSE; } if (gCollisionStatus.currentWall == -1) { @@ -1176,7 +1176,7 @@ void check_for_interactables(void) { return; } - if (playerStatus->decorationList != NULL) { + if (playerStatus->timeInAir != 0) { return; } diff --git a/src/7B440.c b/src/7B440.c index 0fdda28251..c4a4b376dd 100644 --- a/src/7B440.c +++ b/src/7B440.c @@ -93,7 +93,7 @@ void reset_player_status(void) { playerStatus->overlapPushAmount = 0.0f; playerStatus->overlapPushYaw = 0.0f; playerStatus->anim = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->position.x = 0.0f; playerStatus->position.y = 0.0f; playerStatus->position.z = 0.0f; diff --git a/src/7E9D0.c b/src/7E9D0.c index bc817cbaa3..6965cad2cf 100644 --- a/src/7E9D0.c +++ b/src/7E9D0.c @@ -225,9 +225,9 @@ void phys_update_action_state(void) { } } - if (playerStatus->decorationList != 0) { + if (playerStatus->timeInAir != 0) { if (playerStatus->gravityIntegrator[0] <= 0.0f && D_800F7B90 > 0.0f) { - playerStatus->unk_C2 = playerStatus->decorationList; + playerStatus->unk_C2 = playerStatus->timeInAir; } D_800F7B90 = playerStatus->gravityIntegrator[0]; } diff --git a/src/7bb60_len_41b0.c b/src/7bb60_len_41b0.c index 933f7ae45a..200e375c29 100644 --- a/src/7bb60_len_41b0.c +++ b/src/7bb60_len_41b0.c @@ -204,7 +204,7 @@ void func_800E2BB0(void) { void phys_update_jump(void) { PlayerStatus* playerStatus = &gPlayerStatus; - if (playerStatus->decorationList != 0) { + if (playerStatus->timeInAir != 0) { switch (playerStatus->actionState) { case ACTION_STATE_LAUNCH: func_800E2BB0(); @@ -389,7 +389,7 @@ void phys_player_land(void) { f32 moveAngle; f32 moveMagnitude; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->flags &= ~PLAYER_STATUS_FLAGS_800000; playerStatus->landPos.x = playerStatus->position.x; @@ -659,7 +659,7 @@ void collision_main_lateral(void) { playerStatus->position.x += playerStatus->extraVelocity.x; playerStatus->position.z += playerStatus->extraVelocity.z; - if (playerStatus->decorationList == 0) { + if (playerStatus->timeInAir == 0) { playerStatus->position.y += playerStatus->extraVelocity.y; } @@ -874,7 +874,7 @@ void phys_main_collision_below(void) { if (collHeightHalf + (temp_f24 * 0.5f) < outLength) { result = -1; } - if (playerStatus->decorationList == 0) { + if (playerStatus->timeInAir == 0) { collisionStatus->currentFloor = result; } if (result >= 0) { @@ -1063,7 +1063,7 @@ void check_input_midair_jump(void) { if (!(gPlayerStatus.flags & (PLAYER_STATUS_FLAGS_800000 | PLAYER_STATUS_FLAGS_10 | PLAYER_STATUS_FLAGS_FLYING)) && !(gPlayerStatus.animFlags & 0x4001) && gPlayerStatus.unk_C2 >= 6 && - gPlayerStatus.decorationList < 0x12 && + gPlayerStatus.timeInAir < 18 && gPlayerStatus.pressedButtons & A_BUTTON) { switch (gPlayerData.bootsLevel) { diff --git a/src/891b0_len_fb0.c b/src/891b0_len_fb0.c index c043632657..9bb2281ee5 100644 --- a/src/891b0_len_fb0.c +++ b/src/891b0_len_fb0.c @@ -39,7 +39,7 @@ void func_800EFD08(void) { D_8010CFF4 = D_8010CFF0; } - D_8010CFF0 = playerStatus->decorationList; + D_8010CFF0 = playerStatus->timeInAir; switch (colliderType) { case 6: @@ -70,11 +70,11 @@ void func_800F0248(void) { PlayerStatus* playerStatus = &gPlayerStatus; f32 sin, cos, x, y, z; - if (playerStatus->actionState == ACTION_STATE_JUMP && playerStatus->decorationList == 1 && D_80109492 == 5) { + if (playerStatus->actionState == ACTION_STATE_JUMP && playerStatus->timeInAir == 1 && D_80109492 == 5) { fx_flower_splash( - playerStatus->position.x, - playerStatus->position.y + 14.0f, - playerStatus->position.z, + playerStatus->position.x, + playerStatus->position.y + 14.0f, + playerStatus->position.z, D_8010948C ); D_8010948C = clamp_angle(D_8010948C + 35.0f); @@ -88,7 +88,7 @@ void func_800F0248(void) { } if ( - playerStatus->actionState != ACTION_STATE_WALK && playerStatus->actionState != ACTION_STATE_RUN && + playerStatus->actionState != ACTION_STATE_WALK && playerStatus->actionState != ACTION_STATE_RUN && (playerStatus->actionState != ACTION_STATE_SPIN || playerStatus->fallState != 0) ) { D_80109490 = 0; @@ -127,7 +127,7 @@ void func_800F0864(void) { if ( ( - playerStatus->actionState != ACTION_STATE_WALK && playerStatus->actionState != ACTION_STATE_RUN && + playerStatus->actionState != ACTION_STATE_WALK && playerStatus->actionState != ACTION_STATE_RUN && (playerStatus->actionState != ACTION_STATE_SPIN || playerStatus->fallState != 0) && playerStatus->actionState != ACTION_STATE_LAND && playerStatus->actionState != ACTION_STATE_IDLE ) || playerStatus->flags >= 0 @@ -140,10 +140,10 @@ void func_800F0864(void) { D_801094A4 = 0; sin_cos_rad((clamp_angle(-playerStatus->currentYaw) * TAU) / 360.0f, &sin, &cos); fx_footprint( - playerStatus->position.x + (playerStatus->colliderDiameter * sin * 0.2f), - playerStatus->position.y + 1.5f, - playerStatus->position.z + (playerStatus->colliderDiameter * cos * 0.2f), - -playerStatus->currentYaw, + playerStatus->position.x + (playerStatus->colliderDiameter * sin * 0.2f), + playerStatus->position.y + 1.5f, + playerStatus->position.z + (playerStatus->colliderDiameter * cos * 0.2f), + -playerStatus->currentYaw, D_801094A8 ); D_801094A8 = !D_801094A8; diff --git a/src/919B0.c b/src/919B0.c new file mode 100644 index 0000000000..66152ce54a --- /dev/null +++ b/src/919B0.c @@ -0,0 +1,555 @@ +#include "common.h" + +#include "ui/a_button_unpressed.png.inc.c" +#include "ui/a_button_unpressed.pal.inc.c" + +#include "ui/a_button_pressed.png.inc.c" +#include "ui/a_button_pressed.pal.inc.c" + +#include "ui/analog_stick.png.inc.c" +#include "ui/analog_stick.pal.inc.c" + +#include "ui/analog_stick_left.png.inc.c" +#include "ui/analog_stick_left.pal.inc.c" + +#include "ui/analog_stick2.png.inc.c" +#include "ui/analog_stick2.pal.inc.c" + +#include "ui/analog_stick_right.png.inc.c" +#include "ui/analog_stick_right.pal.inc.c" + +#include "ui/analog_stick3.png.inc.c" +#include "ui/analog_stick3.pal.inc.c" + +#include "ui/analog_stick_down.png.inc.c" +#include "ui/analog_stick_down.pal.inc.c" + +#include "ui/analog_stick_up.png.inc.c" +#include "ui/analog_stick_up.pal.inc.c" + +#include "ui/unk_bar.png.inc.c" +#include "ui/unk_bar.pal.inc.c" + +#include "ui/ok.png.inc.c" +#include "ui/ok.pal.inc.c" + +#include "ui/start_button.png.inc.c" +#include "ui/start_button.pal.inc.c" + +#include "ui/start_button2.png.inc.c" +#include "ui/start_button2.pal.inc.c" + +#include "ui/start.png.inc.c" +#include "ui/start.pal.inc.c" + +#include "ui/hammer.png.inc.c" +#include "ui/hammer.pal.inc.c" +#include "ui/hammer.disabled.pal.inc.c" + +#include "ui/super_hammer.png.inc.c" +#include "ui/super_hammer.pal.inc.c" +#include "ui/super_hammer.disabled.pal.inc.c" + +#include "ui/ultra_hammer.png.inc.c" +#include "ui/ultra_hammer.pal.inc.c" +#include "ui/ultra_hammer.disabled.pal.inc.c" + +#include "ui/boots.png.inc.c" +#include "ui/boots.pal.inc.c" +#include "ui/boots.disabled.pal.inc.c" + +#include "ui/super_boots.png.inc.c" +#include "ui/super_boots.pal.inc.c" +#include "ui/super_boots.disabled.pal.inc.c" + +#include "ui/ultra_boots.png.inc.c" +#include "ui/ultra_boots.pal.inc.c" +#include "ui/ultra_boots.disabled.pal.inc.c" + +#include "ui/item.png.inc.c" +#include "ui/item.pal.inc.c" +#include "ui/item.disabled.pal.inc.c" + +#include "ui/star_spirit.png.inc.c" +#include "ui/star_spirit.pal.inc.c" +#include "ui/star_spirit.disabled.pal.inc.c" + +#include "ui/arrow_left.png.inc.c" +#include "ui/arrow_left.pal.inc.c" + +#include "ui/arrow_right.png.inc.c" +#include "ui/arrow_right.pal.inc.c" + +#include "ui/point_right.png.inc.c" +#include "ui/point_right.pal.inc.c" + +#include "ui/pip.png.inc.c" +#include "ui/pip.pal.inc.c" + +#include "ui/pip2.png.inc.c" +#include "ui/pip2.pal.inc.c" + +#include "ui/coin_sparkle.png.inc.c" +#include "ui/coin_sparkle.pal.inc.c" + +#include "ui/coin_sparkle2.png.inc.c" +#include "ui/coin_sparkle2.pal.inc.c" + +#include "ui/coin_sparkle3.png.inc.c" +#include "ui/coin_sparkle3.pal.inc.c" + +#include "ui/coin_sparkle4.png.inc.c" +#include "ui/coin_sparkle4.pal.inc.c" + +#include "ui/coin_sparkle5.png.inc.c" +#include "ui/coin_sparkle5.pal.inc.c" + +#include "ui/coin_sparkle6.png.inc.c" +#include "ui/coin_sparkle6.pal.inc.c" + +#include "ui/coin_sparkle7.png.inc.c" +#include "ui/coin_sparkle7.pal.inc.c" + +#include "ui/status_sp_shine.png.inc.c" + +#include "ui/star_piece_sparkle.png.inc.c" +#include "ui/star_piece_sparkle.pal.inc.c" + +#include "ui/star_piece_sparkle2.png.inc.c" +#include "ui/star_piece_sparkle2.pal.inc.c" + +#include "ui/star_piece_sparkle3.png.inc.c" +#include "ui/star_piece_sparkle3.pal.inc.c" + +#include "ui/menu_times.png.inc.c" +#include "ui/menu_times.pal.inc.c" + +#include "ui/fp_cost.png.inc.c" +#include "ui/fp_cost.pal.inc.c" +#include "ui/fp_cost.reduced.pal.inc.c" +#include "ui/fp_cost.reduced2x.pal.inc.c" +#include "ui/fp_cost.notenough.pal.inc.c" + +#include "ui/pow_cost.png.inc.c" +#include "ui/pow_cost.pal.inc.c" +#include "ui/pow_cost.reduced.pal.inc.c" +#include "ui/pow_cost.reduced2x.pal.inc.c" +#include "ui/pow_cost.notenough.pal.inc.c" + +#include "ui/green_arrow_down.png.inc.c" +#include "ui/green_arrow_down.pal.inc.c" + +#include "ui/green_arrow_up.png.inc.c" +#include "ui/green_arrow_up.pal.inc.c" + +#include "ui/kaime.png.inc.c" +#include "ui/kaime.pal.inc.c" + +#include "ui/unused_1.png.inc.c" +#include "ui/unused_1.pal.inc.c" + +#include "ui/unused_2.png.inc.c" +#include "ui/unused_2.pal.inc.c" + +#include "ui/unused_3.png.inc.c" +#include "ui/unused_3.pal.inc.c" + +#include "ui/red_bar1.png.inc.c" +#include "ui/red_bar1.pal.inc.c" + +#include "ui/empty_bar.png.inc.c" +#include "ui/empty_bar.pal.inc.c" + +#include "ui/red_bar2.png.inc.c" +#include "ui/red_bar2.pal.inc.c" + +#include "ui/eldstar.png.inc.c" +#include "ui/eldstar.pal.inc.c" +#include "ui/eldstar.disabled.pal.inc.c" + +#include "ui/mamar.png.inc.c" +#include "ui/mamar.pal.inc.c" +#include "ui/mamar.disabled.pal.inc.c" + +#include "ui/skolar.png.inc.c" +#include "ui/skolar.pal.inc.c" +#include "ui/skolar.disabled.pal.inc.c" + +#include "ui/muskular.png.inc.c" +#include "ui/muskular.pal.inc.c" +#include "ui/muskular.disabled.pal.inc.c" + +#include "ui/misstar.png.inc.c" +#include "ui/misstar.pal.inc.c" +#include "ui/misstar.disabled.pal.inc.c" + +#include "ui/klevar.png.inc.c" +#include "ui/klevar.pal.inc.c" +#include "ui/klevar.disabled.pal.inc.c" + +#include "ui/kalmar.png.inc.c" +#include "ui/kalmar.pal.inc.c" +#include "ui/kalmar.disabled.pal.inc.c" + +#include "ui/all_spirits.png.inc.c" +#include "ui/all_spirits.pal.inc.c" +#include "ui/all_spirits.disabled.pal.inc.c" + +#include "ui/peach_beam.png.inc.c" +#include "ui/peach_beam.pal.inc.c" +#include "ui/peach_beam.disabled.pal.inc.c" + +#include "ui/mario_head.png.inc.c" +#include "ui/mario_head.pal.inc.c" + +#include "ui/partner0.png.inc.c" +#include "ui/partner0.pal.inc.c" +#include "ui/partner0.disabled.pal.inc.c" + +#include "ui/goombario.png.inc.c" +#include "ui/goombario.pal.inc.c" +#include "ui/goombario.disabled.pal.inc.c" + +#include "ui/kooper.png.inc.c" +#include "ui/kooper.pal.inc.c" +#include "ui/kooper.disabled.pal.inc.c" + +#include "ui/bombette.png.inc.c" +#include "ui/bombette.pal.inc.c" +#include "ui/bombette.disabled.pal.inc.c" + +#include "ui/parakarry.png.inc.c" +#include "ui/parakarry.pal.inc.c" +#include "ui/parakarry.disabled.pal.inc.c" + +#include "ui/bow.png.inc.c" +#include "ui/bow.pal.inc.c" +#include "ui/bow.disabled.pal.inc.c" + +#include "ui/watt.png.inc.c" +#include "ui/watt.pal.inc.c" +#include "ui/watt.disabled.pal.inc.c" + +#include "ui/sushie.png.inc.c" +#include "ui/sushie.pal.inc.c" +#include "ui/sushie.disabled.pal.inc.c" + +#include "ui/lakilester.png.inc.c" +#include "ui/lakilester.pal.inc.c" +#include "ui/lakilester.disabled.pal.inc.c" + +#include "ui/partner9.png.inc.c" +#include "ui/partner9.pal.inc.c" +#include "ui/partner9.disabled.pal.inc.c" + +#include "ui/partner10.png.inc.c" +#include "ui/partner10.pal.inc.c" +#include "ui/partner10.disabled.pal.inc.c" + +#include "ui/partner11.png.inc.c" +#include "ui/partner11.pal.inc.c" +#include "ui/partner11.disabled.pal.inc.c" + +#include "ui/status_times.png.inc.c" +#include "ui/status_times.pal.inc.c" + +#include "ui/status_slash.png.inc.c" +#include "ui/status_slash.pal.inc.c" + +#include "ui/0.png.inc.c" +#include "ui/0.pal.inc.c" + +#include "ui/1.png.inc.c" +#include "ui/1.pal.inc.c" + +#include "ui/2.png.inc.c" +#include "ui/2.pal.inc.c" + +#include "ui/3.png.inc.c" +#include "ui/3.pal.inc.c" + +#include "ui/4.png.inc.c" +#include "ui/4.pal.inc.c" + +#include "ui/5.png.inc.c" +#include "ui/5.pal.inc.c" + +#include "ui/6.png.inc.c" +#include "ui/6.pal.inc.c" + +#include "ui/7.png.inc.c" +#include "ui/7.pal.inc.c" + +#include "ui/8.png.inc.c" +#include "ui/8.pal.inc.c" + +#include "ui/9.png.inc.c" +#include "ui/9.pal.inc.c" + +#include "ui/hp.png.inc.c" +#include "ui/hp.pal.inc.c" + +#include "ui/fp.png.inc.c" +#include "ui/fp.pal.inc.c" + +#include "ui/status_sp_increment_1.png.inc.c" +#include "ui/status_sp_increment_1.pal.inc.c" + +#include "ui/status_sp_increment_2.png.inc.c" +#include "ui/status_sp_increment_2.pal.inc.c" + +#include "ui/status_sp_increment_3.png.inc.c" +#include "ui/status_sp_increment_3.pal.inc.c" + +#include "ui/status_sp_increment_4.png.inc.c" +#include "ui/status_sp_increment_4.pal.inc.c" + +#include "ui/status_sp_increment_5.png.inc.c" +#include "ui/status_sp_increment_5.pal.inc.c" + +#include "ui/status_sp_increment_6.png.inc.c" +#include "ui/status_sp_increment_6.pal.inc.c" + +#include "ui/status_sp_increment_7.png.inc.c" +#include "ui/status_sp_increment_7.pal.inc.c" + +#include "ui/status_sp_empty_increment.png.inc.c" +#include "ui/status_sp_empty_increment.pal.inc.c" + +#include "ui/status_sp_star_1.png.inc.c" +#include "ui/status_sp_star_1.pal.inc.c" + +#include "ui/status_sp_star_2.png.inc.c" +#include "ui/status_sp_star_2.pal.inc.c" + +#include "ui/status_sp_star_3.png.inc.c" +#include "ui/status_sp_star_3.pal.inc.c" + +#include "ui/status_sp_star_4.png.inc.c" +#include "ui/status_sp_star_4.pal.inc.c" + +#include "ui/status_sp_star_5.png.inc.c" +#include "ui/status_sp_star_5.pal.inc.c" + +#include "ui/status_sp_star_6.png.inc.c" +#include "ui/status_sp_star_6.pal.inc.c" + +#include "ui/status_sp_star_7.png.inc.c" +#include "ui/status_sp_star_7.pal.inc.c" + +#include "ui/status_sp_star_empty.png.inc.c" +#include "ui/status_sp_star_empty.pal.inc.c" + +#include "ui/coins0.png.inc.c" +#include "ui/coins0.pal.inc.c" + +#include "ui/coins1.png.inc.c" +#include "ui/coins1.pal.inc.c" + +#include "ui/coins2.png.inc.c" +#include "ui/coins2.pal.inc.c" + +#include "ui/coins3.png.inc.c" +#include "ui/coins3.pal.inc.c" + +#include "ui/coins4.png.inc.c" +#include "ui/coins4.pal.inc.c" + +#include "ui/coins5.png.inc.c" +#include "ui/coins5.pal.inc.c" + +#include "ui/coins6.png.inc.c" +#include "ui/coins6.pal.inc.c" + +#include "ui/coins7.png.inc.c" +#include "ui/coins7.pal.inc.c" + +#include "ui/coins8.png.inc.c" +#include "ui/coins8.pal.inc.c" + +#include "ui/coins9.png.inc.c" +#include "ui/coins9.pal.inc.c" + +#include "ui/star_points0.png.inc.c" +#include "ui/star_points0.pal.inc.c" + +#include "ui/star_points1.png.inc.c" +#include "ui/star_points1.pal.inc.c" + +#include "ui/star_points2.png.inc.c" +#include "ui/star_points2.pal.inc.c" + +#include "ui/star_points3.png.inc.c" +#include "ui/star_points3.pal.inc.c" + +#include "ui/star_points4.png.inc.c" +#include "ui/star_points4.pal.inc.c" + +#include "ui/star_points5.png.inc.c" +#include "ui/star_points5.pal.inc.c" + +#include "ui/star_points6.png.inc.c" +#include "ui/star_points6.pal.inc.c" + +#include "ui/star_points7.png.inc.c" +#include "ui/star_points7.pal.inc.c" + +#include "ui/bluepip.png.inc.c" +#include "ui/bluepip.pal.inc.c" + +#include "ui/bluepip2.png.inc.c" +#include "ui/bluepip2.pal.inc.c" + +#include "ui/charge_jump.png.inc.c" +#include "ui/charge_jump.pal.inc.c" + +#include "ui/charge_hammer.png.inc.c" +#include "ui/charge_hammer.pal.inc.c" + +#include "ui/charge_goombario.png.inc.c" +#include "ui/charge_goombario.pal.inc.c" + +#include "ui/exclamation.png.inc.c" +#include "ui/exclamation.pal.inc.c" + +#include "ui/sleeping.png.inc.c" +#include "ui/sleeping.pal.inc.c" + +#include "ui/sleeping2.png.inc.c" +#include "ui/sleeping2.pal.inc.c" + +#include "ui/sleeping3.png.inc.c" +#include "ui/sleeping3.pal.inc.c" + +#include "ui/shocked.png.inc.c" +#include "ui/shocked.pal.inc.c" + +#include "ui/shocked2.png.inc.c" +#include "ui/shocked2.pal.inc.c" + +#include "ui/shocked3.png.inc.c" +#include "ui/shocked3.pal.inc.c" + +#include "ui/shocked4.png.inc.c" +#include "ui/shocked4.pal.inc.c" + +#include "ui/dizzy.png.inc.c" +#include "ui/dizzy.pal.inc.c" + +#include "ui/dizzy2.png.inc.c" +#include "ui/dizzy2.pal.inc.c" + +#include "ui/dizzy3.png.inc.c" +#include "ui/dizzy3.pal.inc.c" + +#include "ui/dizzy4.png.inc.c" +#include "ui/dizzy4.pal.inc.c" + +#include "ui/poisoned.png.inc.c" +#include "ui/poisoned.pal.inc.c" + +#include "ui/poisoned2.png.inc.c" +#include "ui/poisoned2.pal.inc.c" + +#include "ui/frozen.png.inc.c" +#include "ui/frozen.pal.inc.c" + +#include "ui/frozen2.png.inc.c" +#include "ui/frozen2.pal.inc.c" + +#include "ui/frozen3.png.inc.c" +#include "ui/frozen3.pal.inc.c" + +#include "ui/frozen4.png.inc.c" +#include "ui/frozen4.pal.inc.c" + +#include "ui/timed.png.inc.c" +#include "ui/timed.pal.inc.c" + +#include "ui/timed2.png.inc.c" +#include "ui/timed2.pal.inc.c" + +#include "ui/timed3.png.inc.c" +#include "ui/timed3.pal.inc.c" + +#include "ui/timed4.png.inc.c" +#include "ui/timed4.pal.inc.c" + +#include "ui/downed.png.inc.c" +#include "ui/downed.pal.inc.c" + +#include "ui/downed2.png.inc.c" +#include "ui/downed2.pal.inc.c" + +#include "ui/shrink.png.inc.c" +#include "ui/shrink.pal.inc.c" + +#include "ui/shrink2.png.inc.c" +#include "ui/shrink2.pal.inc.c" + +#include "ui/shrink3.png.inc.c" +#include "ui/shrink3.pal.inc.c" + +#include "ui/shrink4.png.inc.c" +#include "ui/shrink4.pal.inc.c" + +#include "ui/transparent.png.inc.c" +#include "ui/transparent.pal.inc.c" + +#include "ui/transparent2.png.inc.c" +#include "ui/transparent2.pal.inc.c" + +#include "ui/transparent3.png.inc.c" +#include "ui/transparent3.pal.inc.c" + +#include "ui/transparent4.png.inc.c" +#include "ui/transparent4.pal.inc.c" + +#include "ui/transparent5.png.inc.c" +#include "ui/transparent5.pal.inc.c" + +#include "ui/transparent6.png.inc.c" +#include "ui/transparent6.pal.inc.c" + +#include "ui/peril.png.inc.c" +#include "ui/peril.pal.inc.c" + +#include "ui/danger.png.inc.c" +#include "ui/danger.pal.inc.c" + +#include "ui/refund.png.inc.c" +#include "ui/refund.pal.inc.c" + +#include "ui/happy.png.inc.c" +#include "ui/happy.pal.inc.c" + +#include "ui/hp_drain.png.inc.c" +#include "ui/hp_drain.pal.inc.c" + +#include "ui/diamond.png.inc.c" +#include "ui/diamond.pal.inc.c" +#include "ui/diamond.disabled.pal.inc.c" + +#include "ui/orb_blue.png.inc.c" +#include "ui/orb_blue.pal.inc.c" +#include "ui/orb_blue.disabled.pal.inc.c" + +#include "ui/orb_green.png.inc.c" +#include "ui/orb_green.pal.inc.c" +#include "ui/orb_green.disabled.pal.inc.c" + +#include "ui/orb_red.png.inc.c" +#include "ui/orb_red.pal.inc.c" +#include "ui/orb_red.disabled.pal.inc.c" + +Gfx D_801041A0[] = { + gsSPEndDisplayList(), +}; + +#include "ui/stat_heart.png.inc.c" + +Gfx D_801045A8[] = { + gsSPEndDisplayList(), +}; + +#include "ui/stat_flower.png.inc.c" diff --git a/src/9D650.c b/src/9D650.c deleted file mode 100644 index 49a2a0759b..0000000000 --- a/src/9D650.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "common.h" - -Gfx D_801041A0[] = { - gsSPEndDisplayList(), -}; - -#include "ui/stat_heart.png.inc.c" - -Gfx D_801045A8[] = { - gsSPEndDisplayList(), -}; - -#include "ui/stat_flower.png.inc.c" diff --git a/src/9d10_len_1080.c b/src/9d10_len_1080.c index 071e431151..b6c4a12886 100644 --- a/src/9d10_len_1080.c +++ b/src/9d10_len_1080.c @@ -7,7 +7,7 @@ INCLUDE_ASM(void, "9d10_len_1080", update_camera_mode_4, Camera* camera); void update_camera_mode_2(Camera* camera); INCLUDE_ASM(void, "9d10_len_1080", update_camera_mode_2, Camera* camera); -void update_camera_mode_2(Camera* camera); +void update_camera_mode_1(Camera* camera); INCLUDE_ASM(void, "9d10_len_1080", update_camera_mode_1, Camera* camera); void update_camera_mode_0(Camera* camera) { diff --git a/src/C50A0.c b/src/C50A0.c index 1a30628ce4..27978b23dd 100644 --- a/src/C50A0.c +++ b/src/C50A0.c @@ -523,7 +523,7 @@ void func_8013559C(ItemEntity* itemEntity) { } } else { if (physicsData->unk_1C < 0xA) { - itemEntity->unk_2F = physicsData->unk_1C * 28; + itemEntity->alpha = physicsData->unk_1C * 28; itemEntity->flags |= 0x80000; } } diff --git a/src/actor_api.c b/src/actor_api.c index 5fa61ff6e5..f84f53bcac 100644 --- a/src/actor_api.c +++ b/src/actor_api.c @@ -2382,99 +2382,97 @@ ApiStatus ChooseNextTarget(Evt* script, s32 isInitialCall) { #ifdef NON_MATCHING s32 func_8026E558(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; - Actor* actor; - f32 y; - f32 x; - f32 z; - s32 temp_s0_3; + s32 actorID; s32 temp_s2; - s8 temp_v0_4; - SelectableTarget* target; + s32 outVar; + Actor* actor; + f32 x, y, z; + s32 outVal; s32 row; s32 column; s32 layer; - s32 phi_a2; s32 i; - actor = (Actor *) evt_get_variable(script, *args++); + actorID = evt_get_variable(script, *args++); temp_s2 = evt_get_variable(script, *args++); - temp_s0_3 = *args++; + outVar = *args++; - if (actor == ACTOR_SELF) { - actor = (Actor *) script->owner1.actor; + if (actorID == ACTOR_SELF) { + actorID = script->owner1.actorID; } - actor = get_actor((s32) actor); + actor = get_actor(actorID); x = actor->currentPos.x; y = actor->currentPos.y; z = actor->currentPos.z; + + outVal = -1; + if (y < 40.0f) { - phi_a2 = -1; row = 0; - } else { - phi_a2 = -1; + } else if (y < 85.0f) { row = 1; - if (!(y < 85.0f)) { - row = 3; - if (y < 100.0f) { - row = 2; - } - } + } else if (y < 100.0f) { + row = 2; + } else { + row = 3; } - column = 0; - if (!(x < 25.0f)) { + if (x < 25.0f) { + column = 0; + } else if (x < 65.0f) { column = 1; - if (!(x < 65.0f)) { - column = 3; - if (x < 105.0f) { - column = 2; - } - } + } else if (x < 105.0f) { + column = 2; + } else { + column = 3; } - layer = 1; if (z < -30.0f) { layer = 0; + } else { + layer = 1; } switch (temp_s2) { case 0: for (i = 0; i < actor->targetListLength; i++) { - target = &actor->targetData[actor->targetIndexList[i]]; + SelectableTarget* target = &actor->targetData[actor->targetIndexList[i]]; + if (target->homeCol == column && target->layer == layer && target->homeRow < row) { actor->targetActorID = target->actorID; actor->targetPartIndex = target->partID; - phi_a2 = 0; + outVal = 0; } } break; case 1: for (i = 0; i < actor->targetListLength; i++) { - target = &actor->targetData[actor->targetIndexList[i]]; + SelectableTarget* target = &actor->targetData[actor->targetIndexList[i]]; + if (target->homeCol == column && target->layer == layer && target->homeRow < row) { actor->targetActorID = target->actorID; actor->targetPartIndex = target->partID; - phi_a2 = 0; + outVal = 0; } } break; case -1: for (i = 0; i < actor->targetListLength; i++) { - target = &actor->targetData[actor->targetIndexList[i]]; + SelectableTarget* target = &actor->targetData[actor->targetIndexList[i]]; + if (target->homeCol == column && target->layer == layer && target->homeRow < row) { actor->targetActorID = target->actorID; actor->targetPartIndex = target->partID; - phi_a2 = 0; + outVal = 0; } } break; } - evt_set_variable(script, temp_s0_3, phi_a2); + evt_set_variable(script, outVar, outVal); return ApiStatus_DONE2; } #else -s32 func_8026E558(Evt*, s32); INCLUDE_ASM(s32, "actor_api", func_8026E558); #endif diff --git a/src/battle/action_cmd/07.c b/src/battle/action_cmd/07.c index 987fc60300..6900237afb 100644 --- a/src/battle/action_cmd/07.c +++ b/src/battle/action_cmd/07.c @@ -7,6 +7,7 @@ extern s32 D_80294280; extern s32 D_802A9620; extern HudScript HudScript_BlueMeter[]; extern HudScript HudScript_AButton[]; +extern HudScript HudScript_MashAButton[]; extern HudScript HudScript_RunAwayOK[]; s32 func_8024FAFC(s32); @@ -82,7 +83,105 @@ ApiStatus func_802A916C_425CBC(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A9228_425D78); +void func_802A9228_425D78(void) { + ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; + BattleStatus* battleStatus = &gBattleStatus; + s32 id; + + switch (actionCommandStatus->state) { + case 0: + btl_set_popup_duration(99); + + id = actionCommandStatus->hudElements[0]; + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + hud_element_set_alpha(id, 255); + + id = actionCommandStatus->hudElements[1]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + id = actionCommandStatus->hudElements[2]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + actionCommandStatus->state = 1; + break; + case 1: + btl_set_popup_duration(99); + + actionCommandStatus->hudElementX += 20; + if (actionCommandStatus->hudElementX > 50) { + actionCommandStatus->hudElementX = 50; + } + + hud_element_set_render_pos(actionCommandStatus->hudElements[0], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY); + hud_element_set_render_pos(actionCommandStatus->hudElements[1], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY + 28); + hud_element_set_render_pos(actionCommandStatus->hudElements[2], actionCommandStatus->hudElementX + 31, actionCommandStatus->hudElementY + 14); + break; + case 10: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_4E != 0) { + actionCommandStatus->unk_4E--; + return; + } + + hud_element_set_script(actionCommandStatus->hudElements[0], HudScript_MashAButton); + battleStatus->actionSuccess = 0; + D_802A9620 = 1; + actionCommandStatus->unk_5D = 0; + actionCommandStatus->state = 0xB; + actionCommandStatus->unk_54 = actionCommandStatus->unk_52; + // fallthrough + case 11: + btl_set_popup_duration(99); + + if (battleStatus->currentButtonsPressed & BUTTON_A) { + s32 fillAmt = battleStatus->unk_434[actionCommandStatus->unk_50] * 6; + + if (actionCommandStatus->unk_5D == 0) { + actionCommandStatus->barFillLevel += fillAmt; + } + } + + if (actionCommandStatus->barFillLevel > 10000) { + actionCommandStatus->barFillLevel = 10000; + actionCommandStatus->unk_5D = 3; + } + + if (actionCommandStatus->unk_5D != 0) { + actionCommandStatus->unk_5D--; + if (actionCommandStatus->unk_5D == 0) { + actionCommandStatus->barFillLevel = 0; + battleStatus->actionSuccess++; + } + } + + battleStatus->unk_84 = actionCommandStatus->barFillLevel / 100; + + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + btl_set_popup_duration(0); + actionCommandStatus->unk_54 = 5; + actionCommandStatus->state = 0xC; + break; + case 12: + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + func_80268C9C(); + break; + } +} void func_802A94D8_426028(void) { ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; diff --git a/src/battle/action_cmd/0A.c b/src/battle/action_cmd/0A.c index ebc20b2ec2..934242cc07 100644 --- a/src/battle/action_cmd/0A.c +++ b/src/battle/action_cmd/0A.c @@ -4,7 +4,7 @@ #define NAMESPACE action_command_0A extern s32 D_802942E0; -extern s32 HudScript_MashAButton; +extern HudScript HudScript_MashAButton[]; extern HudScript HudScript_100pct[]; extern HudScript HudScript_BlueMeter[]; extern HudScript HudScript_AButton[]; @@ -59,7 +59,106 @@ ApiStatus func_802A9000_4273B0(Evt* script, s32 isInitialCall) { #include "common/MashActionCommandInit.inc.c" -INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A928C_42763C); +void func_802A928C_42763C(void) { + ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; + BattleStatus* battleStatus = &gBattleStatus; + s32 id; + s32 cutoff; + + switch (actionCommandStatus->state) { + case 0: + btl_set_popup_duration(99); + + id = actionCommandStatus->hudElements[0]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + id = actionCommandStatus->hudElements[1]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + actionCommandStatus->state = 1; + break; + case 1: + btl_set_popup_duration(99); + + actionCommandStatus->hudElementX += 20; + if (actionCommandStatus->hudElementX > 50) { + actionCommandStatus->hudElementX = 50; + } + + hud_element_set_render_pos(actionCommandStatus->hudElements[0], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY); + hud_element_set_render_pos(actionCommandStatus->hudElements[1], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY + 28); + break; + case 10: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_4E != 0) { + actionCommandStatus->unk_4E--; + return; + } + + hud_element_set_script(actionCommandStatus->hudElements[0], HudScript_MashAButton); + actionCommandStatus->barFillLevel = 0; + actionCommandStatus->state = 0xB; + actionCommandStatus->unk_54 = actionCommandStatus->unk_52; + // fallthrough + case 11: + btl_set_popup_duration(99); + + if (battleStatus->currentButtonsPressed & BUTTON_A) { + actionCommandStatus->barFillLevel += battleStatus->unk_434[actionCommandStatus->unk_50] * 15; + } + + if (actionCommandStatus->barFillLevel >= 10000) { + id = actionCommandStatus->hudElements[2]; + actionCommandStatus->barFillLevel = 10000; + actionCommandStatus->unk_68 = 1; + hud_element_set_render_pos(id, actionCommandStatus->hudElementX + 50, actionCommandStatus->hudElementY + 28); + hud_element_clear_flags(id, 2); + } + + battleStatus->unk_84 = actionCommandStatus->barFillLevel / 100; + + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + + if (actionCommandStatus->barFillLevel == 0) { + battleStatus->actionSuccess = -1; + } else { + battleStatus->actionSuccess = actionCommandStatus->barFillLevel / 100; + } + + cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals - 1]; + if (battleStatus->actionSuccess >= cutoff) { + battleStatus->unk_86 = 1; + } else { + battleStatus->unk_86 = -2; + } + + if (battleStatus->actionSuccess == 100) { + func_80269160(); + } + + btl_set_popup_duration(0); + actionCommandStatus->unk_54 = 5; + actionCommandStatus->state = 0xC; + break; + case 12: + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + func_80268C9C(); + break; + } +} #include "common/UnkActionCommandFunc1.inc.c" diff --git a/src/battle/action_cmd/air_lift.c b/src/battle/action_cmd/air_lift.c index 228f3869e1..a72dd6c174 100644 --- a/src/battle/action_cmd/air_lift.c +++ b/src/battle/action_cmd/air_lift.c @@ -9,8 +9,13 @@ void func_80268834(s32, s32, s16, s32); extern HudScript HudScript_BlueMeter[]; extern HudScript HudScript_AButton[]; +extern HudScript HudScript_MashAButton[]; extern HudScript HudScript_100pct[]; extern s32 D_80294340; + +s32 D_802A9852_4292C0[] = { 0, 25, 50, 75, 75, 0, 0, 0 }; + +BSS s32 air_lift_bss_pre[2]; BSS s32 air_lift_bss_0; ApiStatus func_802A9000_428A70(Evt* script, s32 isInitialCall) { @@ -80,7 +85,7 @@ ApiStatus func_802A9184_428BF4(Evt* script, s32 isInitialCall) { mashMeterCutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals - 1]; actionCommandStatus->unk_5C = 0; - battleStatus->flags1 &= ~0x8000; + battleStatus->flags1 &= ~BS_FLAGS1_8000; actionCommandStatus->state = 10; battleStatus->unk_82 = mashMeterCutoff; @@ -89,7 +94,147 @@ ApiStatus func_802A9184_428BF4(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A9278_428CE8); +void func_802A9278_428CE8(void) { + ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; + BattleStatus* battleStatus = &gBattleStatus; + s32 id; + + switch (actionCommandStatus->state) { + case 0: + btl_set_popup_duration(99); + + id = actionCommandStatus->hudElements[0]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + id = actionCommandStatus->hudElements[1]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + actionCommandStatus->state = 1; + break; + case 1: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_6C != 0) { + actionCommandStatus->unk_6C--; + return; + } + + actionCommandStatus->hudElementX += 20; + if (actionCommandStatus->hudElementX > 50) { + actionCommandStatus->hudElementX = 50; + } + + hud_element_set_render_pos(actionCommandStatus->hudElements[0], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY); + hud_element_set_render_pos(actionCommandStatus->hudElements[1], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY + 28); + break; + case 10: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_4E != 0) { + actionCommandStatus->unk_4E--; + return; + } + + hud_element_set_script(actionCommandStatus->hudElements[0], HudScript_MashAButton); + air_lift_bss_0 = 1; + actionCommandStatus->unk_54 = actionCommandStatus->unk_52; + sfx_play_sound_with_params(0x80000041, 0, 0, 0); + actionCommandStatus->state = 0xB; + // fallthrough + case 11: + btl_set_popup_duration(99); + if (actionCommandStatus->unk_68 == 0) { + if (actionCommandStatus->unk_5A != 0) { + s32 a = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals]; + + actionCommandStatus->barFillLevel -= D_802A9852_4292C0[actionCommandStatus->barFillLevel / a / 20]; + if (actionCommandStatus->barFillLevel < 0) { + actionCommandStatus->barFillLevel = 0; + } + } else { + actionCommandStatus->barFillLevel -= 10; + if (actionCommandStatus->barFillLevel < 0) { + actionCommandStatus->barFillLevel = 0; + } + } + } + + if (battleStatus->unk_83 != 0 && (battleStatus->currentButtonsPressed & BUTTON_A)) { + if (actionCommandStatus->unk_5A != 0) { + s32 a = battleStatus->unk_434[actionCommandStatus->unk_50]; + s32 b = actionCommandStatus->unk_5A * 820; + + actionCommandStatus->barFillLevel += (a * b) / 10000; + } else { + actionCommandStatus->barFillLevel += 100; + if (actionCommandStatus->barFillLevel >= 500) { + actionCommandStatus->barFillLevel = 500; + } + } + + } + + if (actionCommandStatus->barFillLevel > 10000) { + actionCommandStatus->barFillLevel = 10000; + actionCommandStatus->unk_68 = 1; + id = actionCommandStatus->hudElements[2]; + hud_element_set_render_pos(id, actionCommandStatus->hudElementX + 50, actionCommandStatus->hudElementY + 28); + hud_element_clear_flags(id, 2); + } + + battleStatus->actionSuccess = actionCommandStatus->barFillLevel / 100; + if (battleStatus->unk_84 < battleStatus->actionSuccess) { + battleStatus->unk_84 = battleStatus->actionSuccess; + } + sfx_adjust_env_sound_params(0x80000041, 0, 0, battleStatus->actionSuccess * 12); + + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + + if (actionCommandStatus->unk_5A == 0) { + battleStatus->unk_84 = 0; + } + + battleStatus->actionSuccess = battleStatus->unk_84; + if (rand_int(99) < battleStatus->actionSuccess) { + battleStatus->unk_86 = 1; + battleStatus->actionSuccess = 1; + } else { + battleStatus->unk_86 = -2; + battleStatus->actionSuccess = -1; + } + + if (battleStatus->actionSuccess == 1) { + func_80269160(); + } + btl_set_popup_duration(0); + sfx_stop_sound(0x80000041); + actionCommandStatus->unk_54 = 20; + actionCommandStatus->state = 0xC; + break; + case 12: + if (actionCommandStatus->unk_5A == 0) { + actionCommandStatus->barFillLevel -= 100; + if (actionCommandStatus->barFillLevel < 0) { + actionCommandStatus->barFillLevel = 0; + } + } + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + func_80268C9C(); + break; + } +} void func_802A96EC_42915C(void) { ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; diff --git a/src/battle/action_cmd/air_raid.c b/src/battle/action_cmd/air_raid.c index bae85d00d8..ea95e9d316 100644 --- a/src/battle/action_cmd/air_raid.c +++ b/src/battle/action_cmd/air_raid.c @@ -1,4 +1,5 @@ #include "common.h" +#include "battle/battle.h" #include "hud_element.h" #define NAMESPACE action_command_air_raid @@ -6,9 +7,15 @@ extern HudScript HudScript_BlueMeter[]; extern HudScript HudScript_StickNeutral[]; extern HudScript HudScript_100pct[]; +extern HudScript HudScript_StickMashLeft[]; extern s32 D_80294360; +s32 D_802A9970_429C90[] = { 0, 25, 50, 75, 75, }; +s32 D_802A9984_429CA4[] = { 40, 70, 99, 200, }; +s32 D_802A9994_429CB4[] = { 35, 60, 80, 99, 200, }; +s32 D_802A99A8_429CC8[] = { 35, 35, 60, 80, 99, 200, }; + ApiStatus func_802A9000_429320(void) { ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; BattleStatus* battleStatus = &gBattleStatus; @@ -60,7 +67,167 @@ ApiStatus func_802A9000_429320(void) { #include "common/MashActionCommandInit.inc.c" -INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A9294_4295B4); +void func_802A9294_4295B4(void) { + ActionCommandStatus* actionCommandStatus = &gActionCommandStatus; + BattleStatus* battleStatus = &gBattleStatus; + Actor* partner = battleStatus->partnerActor; + s32 cutoff; + s32 id; + + switch (actionCommandStatus->state) { + case 0: + btl_set_popup_duration(99); + + id = actionCommandStatus->hudElements[0]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + id = actionCommandStatus->hudElements[1]; + hud_element_set_alpha(id, 255); + if (actionCommandStatus->unk_61 != 0) { + hud_element_clear_flags(id, 2); + } + + actionCommandStatus->state = 1; + break; + case 1: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_6C != 0) { + actionCommandStatus->unk_6C--; + return; + } + + actionCommandStatus->hudElementX += 20; + if (actionCommandStatus->hudElementX > 50) { + actionCommandStatus->hudElementX = 50; + } + + hud_element_set_render_pos(actionCommandStatus->hudElements[0], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY); + hud_element_set_render_pos(actionCommandStatus->hudElements[1], actionCommandStatus->hudElementX, actionCommandStatus->hudElementY + 28); + break; + case 10: + btl_set_popup_duration(99); + + if (actionCommandStatus->unk_4E != 0) { + actionCommandStatus->unk_4E--; + return; + } + + hud_element_set_script(actionCommandStatus->hudElements[0], HudScript_StickMashLeft); + actionCommandStatus->barFillLevel = 0; + battleStatus->unk_85 = 0; + actionCommandStatus->unk_5C = 0; + actionCommandStatus->unk_54 = actionCommandStatus->unk_52; + sfx_play_sound_with_params(0x80000041, 0, 0, 0); + actionCommandStatus->state = 11; + // fallthrough + case 11: + btl_set_popup_duration(99); + if (actionCommandStatus->unk_68 == 0) { + cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals]; + + actionCommandStatus->barFillLevel -= D_802A9970_429C90[actionCommandStatus->barFillLevel / cutoff / 20]; + if (actionCommandStatus->barFillLevel < 0) { + actionCommandStatus->barFillLevel = 0; + } + + if (actionCommandStatus->unk_68 == 0) { + if ( // todo remove assignment from conditional + (!(battleStatus->currentButtonsDown & BUTTON_STICK_LEFT) || (actionCommandStatus->unk_5C = 1, !(battleStatus->currentButtonsDown & BUTTON_STICK_LEFT))) && + (actionCommandStatus->unk_5C != 0)) + { + actionCommandStatus->barFillLevel += (battleStatus->unk_434[actionCommandStatus->unk_50] * 850) / 100; + actionCommandStatus->unk_5C = 0; + } + + if (battleStatus->currentButtonsPressed & BUTTON_STICK_RIGHT) { + actionCommandStatus->barFillLevel -= (battleStatus->unk_434[actionCommandStatus->unk_50] * 850) / 100; + } + } + } + + if (actionCommandStatus->barFillLevel < 0) { + actionCommandStatus->barFillLevel = 0; + } + + if (actionCommandStatus->barFillLevel > 10000) { + id = actionCommandStatus->hudElements[2]; + actionCommandStatus->barFillLevel = 10000; + actionCommandStatus->unk_68 = 1; + hud_element_set_render_pos(id, actionCommandStatus->hudElementX + 50, actionCommandStatus->hudElementY + 28); + hud_element_clear_flags(id, 2); + } + + battleStatus->unk_84 = actionCommandStatus->barFillLevel / 100; + sfx_adjust_env_sound_params(0x80000041, 0, 0, battleStatus->unk_84 * 12); + + switch (partner->actorBlueprint->level) { + case 0: + if (battleStatus->unk_84 >= D_802A9984_429CA4[battleStatus->unk_85]) { + battleStatus->unk_85++; + } + + if (battleStatus->unk_85 > 0 && battleStatus->unk_84 < D_802A9984_429CA4[battleStatus->unk_85 - 1]) { + battleStatus->unk_85--; + } + break; + case 1: + if (battleStatus->unk_84 >= D_802A9994_429CB4[battleStatus->unk_85]) { + battleStatus->unk_85++; + } + if (battleStatus->unk_85 > 0 && battleStatus->unk_84 < D_802A9994_429CB4[battleStatus->unk_85 - 1]) { + battleStatus->unk_85--; + } + break; + case 2: + if (battleStatus->unk_84 >= D_802A99A8_429CC8[battleStatus->unk_85]) { + battleStatus->unk_85++; + } + if (battleStatus->unk_85 > 0 && battleStatus->unk_84 < D_802A99A8_429CC8[battleStatus->unk_85 - 1]) { + battleStatus->unk_85--; + } + break; + } + + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + + if (actionCommandStatus->barFillLevel == 0) { + battleStatus->actionSuccess = -1; + } else { + battleStatus->actionSuccess = actionCommandStatus->barFillLevel / 100; + } + + cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals - 1]; + if (battleStatus->actionSuccess <= cutoff) { + battleStatus->unk_86 = -2; + } else { + battleStatus->unk_86 = 1; + } + + if (battleStatus->actionSuccess == 100) { + func_80269160(); + } + + btl_set_popup_duration(0); + sfx_stop_sound(0x80000041); + actionCommandStatus->unk_54 = 5; + actionCommandStatus->state = 12; + break; + case 12: + if (actionCommandStatus->unk_54 != 0) { + actionCommandStatus->unk_54--; + return; + } + func_80268C9C(); + break; + } +} #include "common/UnkActionCommandFunc1.inc.c" diff --git a/src/battle/area_arn/stage/arn_01.c b/src/battle/area_arn/stage/arn_01.c index 4edf112acd..b443499561 100644 --- a/src/battle/area_arn/stage/arn_01.c +++ b/src/battle/area_arn/stage/arn_01.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .shape = "arn_bt01_shape", .hit = "arn_bt01_hit", .bg = "arn_bg", - .preBattle = N(beforeBattle_802278F0), - .postBattle = N(afterBattle_80227910), + .preBattle = &N(beforeBattle_802278F0), + .postBattle = &N(afterBattle_80227910), .foregroundModelList = N(foregroundModelList_80227920), }; diff --git a/src/battle/area_arn/stage/arn_02.c b/src/battle/area_arn/stage/arn_02.c index f53d39ae3f..150e52c268 100644 --- a/src/battle/area_arn/stage/arn_02.c +++ b/src/battle/area_arn/stage/arn_02.c @@ -41,7 +41,7 @@ Stage NAMESPACE = { .shape = "arn_bt02_shape", .hit = "arn_bt02_hit", .bg = "arn_bg", - .preBattle = N(beforeBattle_80227A0C), - .postBattle = N(afterBattle_80227A48), + .preBattle = &N(beforeBattle_80227A0C), + .postBattle = &N(afterBattle_80227A48), .foregroundModelList = N(foregroundModelList_80227A58), }; diff --git a/src/battle/area_arn/stage/arn_03.c b/src/battle/area_arn/stage/arn_03.c index 955a533d8f..6fb69f9fa1 100644 --- a/src/battle/area_arn/stage/arn_03.c +++ b/src/battle/area_arn/stage/arn_03.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .shape = "arn_bt03_shape", .hit = "arn_bt03_hit", .bg = "arn_bg", - .preBattle = N(beforeBattle_80227A90), - .postBattle = N(afterBattle_80227AB0), + .preBattle = &N(beforeBattle_80227A90), + .postBattle = &N(afterBattle_80227AB0), .foregroundModelList = N(foregroundModelList_80227AC0), }; diff --git a/src/battle/area_arn/stage/arn_04.c b/src/battle/area_arn/stage/arn_04.c index e725952165..79533b74d2 100644 --- a/src/battle/area_arn/stage/arn_04.c +++ b/src/battle/area_arn/stage/arn_04.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .texture = "arn_tex", .shape = "arn_bt04_shape", .hit = "arn_bt04_hit", - .preBattle = N(beforeBattle_80227B00), - .postBattle = N(afterBattle_80227B3C), + .preBattle = &N(beforeBattle_80227B00), + .postBattle = &N(afterBattle_80227B3C), .foregroundModelList = N(foregroundModelList_80227B4C), }; diff --git a/src/battle/area_arn/stage/arn_05.c b/src/battle/area_arn/stage/arn_05.c index 56efde7e4c..db6b2b78e8 100644 --- a/src/battle/area_arn/stage/arn_05.c +++ b/src/battle/area_arn/stage/arn_05.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .texture = "arn_tex", .shape = "arn_bt05_shape", .hit = "arn_bt05_hit", - .preBattle = N(beforeBattle_80227B80), - .postBattle = N(afterBattle_80227BBC), + .preBattle = &N(beforeBattle_80227B80), + .postBattle = &N(afterBattle_80227BBC), .foregroundModelList = N(foregroundModelList_80227BCC), }; diff --git a/src/battle/area_arn/stage/arn_06.c b/src/battle/area_arn/stage/arn_06.c index e313807ccd..13430a4f0b 100644 --- a/src/battle/area_arn/stage/arn_06.c +++ b/src/battle/area_arn/stage/arn_06.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .texture = "arn_tex", .shape = "arn_bt06_shape", .hit = "arn_bt06_hit", - .preBattle = N(beforeBattle_80227C00), - .postBattle = N(afterBattle_80227C20), + .preBattle = &N(beforeBattle_80227C00), + .postBattle = &N(afterBattle_80227C20), .foregroundModelList = N(foregroundModelList_80227C30), }; diff --git a/src/battle/area_dgb/stage/dgb_01.c b/src/battle/area_dgb/stage/dgb_01.c index 702a7ef36a..efc45e6370 100644 --- a/src/battle/area_dgb/stage/dgb_01.c +++ b/src/battle/area_dgb/stage/dgb_01.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "dgb_tex", .shape = "dgb_bt01_shape", .hit = "dgb_bt01_hit", - .preBattle = N(beforeBattle_8021B050), - .postBattle = N(afterBattle_8021B070), + .preBattle = &N(beforeBattle_8021B050), + .postBattle = &N(afterBattle_8021B070), }; diff --git a/src/battle/area_dgb/stage/dgb_02.c b/src/battle/area_dgb/stage/dgb_02.c index edbe3f631b..b4d2f08442 100644 --- a/src/battle/area_dgb/stage/dgb_02.c +++ b/src/battle/area_dgb/stage/dgb_02.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "dgb_tex", .shape = "dgb_bt02_shape", .hit = "dgb_bt02_hit", - .preBattle = N(beforeBattle_8021B0B0), - .postBattle = N(afterBattle_8021B0D0), + .preBattle = &N(beforeBattle_8021B0B0), + .postBattle = &N(afterBattle_8021B0D0), }; diff --git a/src/battle/area_dgb/stage/dgb_03.c b/src/battle/area_dgb/stage/dgb_03.c index 01d05f4d31..a3e086c582 100644 --- a/src/battle/area_dgb/stage/dgb_03.c +++ b/src/battle/area_dgb/stage/dgb_03.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "dgb_tex", .shape = "dgb_bt03_shape", .hit = "dgb_bt03_hit", - .preBattle = N(beforeBattle_8021B110), - .postBattle = N(afterBattle_8021B130), + .preBattle = &N(beforeBattle_8021B110), + .postBattle = &N(afterBattle_8021B130), }; diff --git a/src/battle/area_dgb/stage/dgb_04.c b/src/battle/area_dgb/stage/dgb_04.c index 96411ce264..8091dd51b5 100644 --- a/src/battle/area_dgb/stage/dgb_04.c +++ b/src/battle/area_dgb/stage/dgb_04.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .texture = "dgb_tex", .shape = "dgb_bt04_shape", .hit = "dgb_bt04_hit", - .preBattle = N(beforeBattle_8021B170), - .postBattle = N(afterBattle_8021B190), + .preBattle = &N(beforeBattle_8021B170), + .postBattle = &N(afterBattle_8021B190), .foregroundModelList = N(foregroundModelList_8021B1A0), }; diff --git a/src/battle/area_dgb/stage/dgb_05.c b/src/battle/area_dgb/stage/dgb_05.c index ac612e0add..3875b1b589 100644 --- a/src/battle/area_dgb/stage/dgb_05.c +++ b/src/battle/area_dgb/stage/dgb_05.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "dgb_tex", .shape = "dgb_bt05_shape", .hit = "dgb_bt05_hit", - .preBattle = N(beforeBattle_8021B1D0), - .postBattle = N(afterBattle_8021B1F0), + .preBattle = &N(beforeBattle_8021B1D0), + .postBattle = &N(afterBattle_8021B1F0), }; diff --git a/src/battle/area_hos/stage/hos_00.c b/src/battle/area_hos/stage/hos_00.c index 0e62198ca5..af54414171 100644 --- a/src/battle/area_hos/stage/hos_00.c +++ b/src/battle/area_hos/stage/hos_00.c @@ -75,7 +75,7 @@ Stage NAMESPACE = { .shape = "nok_bt02_shape", .hit = "nok_bt02_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_802256E8), - .postBattle = N(afterBattle_8022589C), + .preBattle = &N(beforeBattle_802256E8), + .postBattle = &N(afterBattle_8022589C), .foregroundModelList = N(foregroundModelList_802258AC), }; diff --git a/src/battle/area_hos/stage/hos_01.c b/src/battle/area_hos/stage/hos_01.c index 82f72ff61f..a052a4c97e 100644 --- a/src/battle/area_hos/stage/hos_01.c +++ b/src/battle/area_hos/stage/hos_01.c @@ -178,7 +178,7 @@ Stage NAMESPACE = { .shape = "hos_bt01_shape", .hit = "hos_bt01_hit", .bg = "hos_bg", - .preBattle = N(beforeBattle_80224BD0), - .postBattle = N(afterBattle_80225598), + .preBattle = &N(beforeBattle_80224BD0), + .postBattle = &N(afterBattle_80225598), .foregroundModelList = N(foregroundModelList_802255A8), }; diff --git a/src/battle/area_hos/stage/hos_02.c b/src/battle/area_hos/stage/hos_02.c index 19849d6011..86dd58a72c 100644 --- a/src/battle/area_hos/stage/hos_02.c +++ b/src/battle/area_hos/stage/hos_02.c @@ -98,6 +98,6 @@ Stage NAMESPACE = { .shape = "hos_bt02_shape", .hit = "hos_bt02_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_802258E0), - .postBattle = N(afterBattle_80225E20), + .preBattle = &N(beforeBattle_802258E0), + .postBattle = &N(afterBattle_80225E20), }; diff --git a/src/battle/area_isk_part_1/stage/isk_00.c b/src/battle/area_isk_part_1/stage/isk_00.c index a7f0822370..df657a3a6b 100644 --- a/src/battle/area_isk_part_1/stage/isk_00.c +++ b/src/battle/area_isk_part_1/stage/isk_00.c @@ -18,6 +18,6 @@ EvtScript N(afterBattle_802238EC) = { Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt00_shape", - .preBattle = N(beforeBattle_802238B0), - .postBattle = N(afterBattle_802238EC), + .preBattle = &N(beforeBattle_802238B0), + .postBattle = &N(afterBattle_802238EC), }; diff --git a/src/battle/area_isk_part_1/stage/isk_01.c b/src/battle/area_isk_part_1/stage/isk_01.c index fc4440a510..969930cec9 100644 --- a/src/battle/area_isk_part_1/stage/isk_01.c +++ b/src/battle/area_isk_part_1/stage/isk_01.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt01_shape", .hit = "isk_bt01_hit", - .preBattle = N(beforeBattle_80223930), - .postBattle = N(afterBattle_8022396C), + .preBattle = &N(beforeBattle_80223930), + .postBattle = &N(afterBattle_8022396C), }; diff --git a/src/battle/area_isk_part_1/stage/isk_02.c b/src/battle/area_isk_part_1/stage/isk_02.c index 7fe6cd503e..c08b92c6dd 100644 --- a/src/battle/area_isk_part_1/stage/isk_02.c +++ b/src/battle/area_isk_part_1/stage/isk_02.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_802239B0), - .postBattle = N(afterBattle_802239EC), + .preBattle = &N(beforeBattle_802239B0), + .postBattle = &N(afterBattle_802239EC), .foregroundModelList = N(foregroundModelList_802239FC), }; diff --git a/src/battle/area_isk_part_1/stage/isk_02b.c b/src/battle/area_isk_part_1/stage/isk_02b.c index 91363b5e14..b4f0dbf6d0 100644 --- a/src/battle/area_isk_part_1/stage/isk_02b.c +++ b/src/battle/area_isk_part_1/stage/isk_02b.c @@ -30,7 +30,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_80223D90), - .postBattle = N(afterBattle_80223E44), + .preBattle = &N(beforeBattle_80223D90), + .postBattle = &N(afterBattle_80223E44), .foregroundModelList = N(foregroundModelList_80223E54), }; diff --git a/src/battle/area_isk_part_1/stage/isk_02c.c b/src/battle/area_isk_part_1/stage/isk_02c.c index 2887bcbdd3..0e65bf02ba 100644 --- a/src/battle/area_isk_part_1/stage/isk_02c.c +++ b/src/battle/area_isk_part_1/stage/isk_02c.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_80223E90), - .postBattle = N(afterBattle_80223EF4), + .preBattle = &N(beforeBattle_80223E90), + .postBattle = &N(afterBattle_80223EF4), .foregroundModelList = N(foregroundModelList_80223F04), }; diff --git a/src/battle/area_isk_part_1/stage/isk_03.c b/src/battle/area_isk_part_1/stage/isk_03.c index 03a0869921..48e71c8df0 100644 --- a/src/battle/area_isk_part_1/stage/isk_03.c +++ b/src/battle/area_isk_part_1/stage/isk_03.c @@ -20,6 +20,6 @@ Stage NAMESPACE = { .shape = "isk_bt03_shape", .hit = "isk_bt03_hit", .bg = "sbk3_bg", - .preBattle = N(beforeBattle_80223A40), - .postBattle = N(afterBattle_80223A7C), + .preBattle = &N(beforeBattle_80223A40), + .postBattle = &N(afterBattle_80223A7C), }; diff --git a/src/battle/area_isk_part_1/stage/isk_03b.c b/src/battle/area_isk_part_1/stage/isk_03b.c index 03c18971ce..30a9210e46 100644 --- a/src/battle/area_isk_part_1/stage/isk_03b.c +++ b/src/battle/area_isk_part_1/stage/isk_03b.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt03_shape", .hit = "isk_bt03_hit", - .preBattle = N(beforeBattle_80223D10), - .postBattle = N(afterBattle_80223D4C), + .preBattle = &N(beforeBattle_80223D10), + .postBattle = &N(afterBattle_80223D4C), }; diff --git a/src/battle/area_isk_part_1/stage/isk_04.c b/src/battle/area_isk_part_1/stage/isk_04.c index 5c202766ac..ad516d6a14 100644 --- a/src/battle/area_isk_part_1/stage/isk_04.c +++ b/src/battle/area_isk_part_1/stage/isk_04.c @@ -43,7 +43,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt04_shape", .hit = "isk_bt04_hit", - .preBattle = N(beforeBattle_80223AC0), - .postBattle = N(afterBattle_80223B08), + .preBattle = &N(beforeBattle_80223AC0), + .postBattle = &N(afterBattle_80223B08), .foregroundModelList = N(foregroundModelList_80223B24), }; diff --git a/src/battle/area_isk_part_1/stage/isk_05.c b/src/battle/area_isk_part_1/stage/isk_05.c index 596e52505d..afb87a0738 100644 --- a/src/battle/area_isk_part_1/stage/isk_05.c +++ b/src/battle/area_isk_part_1/stage/isk_05.c @@ -38,6 +38,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt05_shape", .hit = "isk_bt05_hit", - .preBattle = N(beforeBattle_80223B60), - .postBattle = N(afterBattle_80223BA8), + .preBattle = &N(beforeBattle_80223B60), + .postBattle = &N(afterBattle_80223BA8), }; diff --git a/src/battle/area_isk_part_1/stage/isk_06.c b/src/battle/area_isk_part_1/stage/isk_06.c index 96bacce064..c7e2e15558 100644 --- a/src/battle/area_isk_part_1/stage/isk_06.c +++ b/src/battle/area_isk_part_1/stage/isk_06.c @@ -35,6 +35,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt06_shape", .hit = "isk_bt06_hit", - .preBattle = N(beforeBattle_80223BF0), - .postBattle = N(afterBattle_80223C38), + .preBattle = &N(beforeBattle_80223BF0), + .postBattle = &N(afterBattle_80223C38), }; diff --git a/src/battle/area_isk_part_1/stage/isk_06b.c b/src/battle/area_isk_part_1/stage/isk_06b.c index 04ac7edb0f..59c6bc00ac 100644 --- a/src/battle/area_isk_part_1/stage/isk_06b.c +++ b/src/battle/area_isk_part_1/stage/isk_06b.c @@ -37,6 +37,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt06_shape", .hit = "isk_bt06_hit", - .preBattle = N(beforeBattle_80223F40), - .postBattle = N(afterBattle_80223F9C), + .preBattle = &N(beforeBattle_80223F40), + .postBattle = &N(afterBattle_80223F9C), }; diff --git a/src/battle/area_isk_part_1/stage/isk_07.c b/src/battle/area_isk_part_1/stage/isk_07.c index 41e88297d1..169eeeecc5 100644 --- a/src/battle/area_isk_part_1/stage/isk_07.c +++ b/src/battle/area_isk_part_1/stage/isk_07.c @@ -35,6 +35,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt07_shape", .hit = "isk_bt07_hit", - .preBattle = N(beforeBattle_80223C80), - .postBattle = N(afterBattle_80223CC8), + .preBattle = &N(beforeBattle_80223C80), + .postBattle = &N(afterBattle_80223CC8), }; diff --git a/src/battle/area_isk_part_1/stage/isk_08.c b/src/battle/area_isk_part_1/stage/isk_08.c index eefc9e79e0..4cd87140d9 100644 --- a/src/battle/area_isk_part_1/stage/isk_08.c +++ b/src/battle/area_isk_part_1/stage/isk_08.c @@ -35,6 +35,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt08_shape", .hit = "isk_bt08_hit", - .preBattle = N(beforeBattle_80223FE0), - .postBattle = N(afterBattle_80224028), + .preBattle = &N(beforeBattle_80223FE0), + .postBattle = &N(afterBattle_80224028), }; diff --git a/src/battle/area_isk_part_2/stage/isk_00.c b/src/battle/area_isk_part_2/stage/isk_00.c index 91802eafc6..e7dd2aaa30 100644 --- a/src/battle/area_isk_part_2/stage/isk_00.c +++ b/src/battle/area_isk_part_2/stage/isk_00.c @@ -18,6 +18,6 @@ EvtScript N(afterBattle_8021FD2C) = { Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt00_shape", - .preBattle = N(beforeBattle_8021FCF0), - .postBattle = N(afterBattle_8021FD2C), + .preBattle = &N(beforeBattle_8021FCF0), + .postBattle = &N(afterBattle_8021FD2C), }; diff --git a/src/battle/area_isk_part_2/stage/isk_01.c b/src/battle/area_isk_part_2/stage/isk_01.c index c5c103e738..d80ebe7e1f 100644 --- a/src/battle/area_isk_part_2/stage/isk_01.c +++ b/src/battle/area_isk_part_2/stage/isk_01.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt01_shape", .hit = "isk_bt01_hit", - .preBattle = N(beforeBattle_8021FD70), - .postBattle = N(afterBattle_8021FDAC), + .preBattle = &N(beforeBattle_8021FD70), + .postBattle = &N(afterBattle_8021FDAC), }; diff --git a/src/battle/area_isk_part_2/stage/isk_02.c b/src/battle/area_isk_part_2/stage/isk_02.c index 5c370f83c5..8ff4113111 100644 --- a/src/battle/area_isk_part_2/stage/isk_02.c +++ b/src/battle/area_isk_part_2/stage/isk_02.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_8021FDF0), - .postBattle = N(afterBattle_8021FE2C), + .preBattle = &N(beforeBattle_8021FDF0), + .postBattle = &N(afterBattle_8021FE2C), .foregroundModelList = N(foregroundModelList_8021FE3C), }; diff --git a/src/battle/area_isk_part_2/stage/isk_02b.c b/src/battle/area_isk_part_2/stage/isk_02b.c index 9c593675b7..2c744dfa72 100644 --- a/src/battle/area_isk_part_2/stage/isk_02b.c +++ b/src/battle/area_isk_part_2/stage/isk_02b.c @@ -30,7 +30,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_8021FE80), - .postBattle = N(afterBattle_8021FF34), + .preBattle = &N(beforeBattle_8021FE80), + .postBattle = &N(afterBattle_8021FF34), .foregroundModelList = N(foregroundModelList_8021FF44), }; diff --git a/src/battle/area_isk_part_2/stage/isk_02c.c b/src/battle/area_isk_part_2/stage/isk_02c.c index 3ae3ccc70a..a4a77b892b 100644 --- a/src/battle/area_isk_part_2/stage/isk_02c.c +++ b/src/battle/area_isk_part_2/stage/isk_02c.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt02_shape", .hit = "isk_bt02_hit", - .preBattle = N(beforeBattle_8021FF80), - .postBattle = N(afterBattle_8021FFE4), + .preBattle = &N(beforeBattle_8021FF80), + .postBattle = &N(afterBattle_8021FFE4), .foregroundModelList = N(foregroundModelList_8021FFF4), }; diff --git a/src/battle/area_isk_part_2/stage/isk_03.c b/src/battle/area_isk_part_2/stage/isk_03.c index e02e87ac31..4676f959d9 100644 --- a/src/battle/area_isk_part_2/stage/isk_03.c +++ b/src/battle/area_isk_part_2/stage/isk_03.c @@ -20,6 +20,6 @@ Stage NAMESPACE = { .shape = "isk_bt03_shape", .hit = "isk_bt03_hit", .bg = "sbk3_bg", - .preBattle = N(beforeBattle_80220030), - .postBattle = N(afterBattle_8022006C), + .preBattle = &N(beforeBattle_80220030), + .postBattle = &N(afterBattle_8022006C), }; diff --git a/src/battle/area_isk_part_2/stage/isk_03b.c b/src/battle/area_isk_part_2/stage/isk_03b.c index 3068b665e2..733e8bc12e 100644 --- a/src/battle/area_isk_part_2/stage/isk_03b.c +++ b/src/battle/area_isk_part_2/stage/isk_03b.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt03_shape", .hit = "isk_bt03_hit", - .preBattle = N(beforeBattle_802200B0), - .postBattle = N(afterBattle_802200EC), + .preBattle = &N(beforeBattle_802200B0), + .postBattle = &N(afterBattle_802200EC), }; diff --git a/src/battle/area_isk_part_2/stage/isk_04.c b/src/battle/area_isk_part_2/stage/isk_04.c index c89a568444..e109f739b1 100644 --- a/src/battle/area_isk_part_2/stage/isk_04.c +++ b/src/battle/area_isk_part_2/stage/isk_04.c @@ -42,7 +42,7 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt04_shape", .hit = "isk_bt04_hit", - .preBattle = N(beforeBattle_80220130), - .postBattle = N(afterBattle_80220178), + .preBattle = &N(beforeBattle_80220130), + .postBattle = &N(afterBattle_80220178), .foregroundModelList = N(foregroundModelList_80220194), }; diff --git a/src/battle/area_isk_part_2/stage/isk_05.c b/src/battle/area_isk_part_2/stage/isk_05.c index 72232b88ef..acf18f56e3 100644 --- a/src/battle/area_isk_part_2/stage/isk_05.c +++ b/src/battle/area_isk_part_2/stage/isk_05.c @@ -37,6 +37,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt05_shape", .hit = "isk_bt05_hit", - .preBattle = N(beforeBattle_802201D0), - .postBattle = N(afterBattle_80220218), + .preBattle = &N(beforeBattle_802201D0), + .postBattle = &N(afterBattle_80220218), }; diff --git a/src/battle/area_isk_part_2/stage/isk_06.c b/src/battle/area_isk_part_2/stage/isk_06.c index dee7d2911c..d0b1c10607 100644 --- a/src/battle/area_isk_part_2/stage/isk_06.c +++ b/src/battle/area_isk_part_2/stage/isk_06.c @@ -34,6 +34,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt06_shape", .hit = "isk_bt06_hit", - .preBattle = N(beforeBattle_80220260), - .postBattle = N(afterBattle_802202A8), + .preBattle = &N(beforeBattle_80220260), + .postBattle = &N(afterBattle_802202A8), }; diff --git a/src/battle/area_isk_part_2/stage/isk_06b.c b/src/battle/area_isk_part_2/stage/isk_06b.c index 5cc66eb27e..1138d947bb 100644 --- a/src/battle/area_isk_part_2/stage/isk_06b.c +++ b/src/battle/area_isk_part_2/stage/isk_06b.c @@ -36,6 +36,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt06_shape", .hit = "isk_bt06_hit", - .preBattle = N(beforeBattle_802202F0), - .postBattle = N(afterBattle_8022034C), + .preBattle = &N(beforeBattle_802202F0), + .postBattle = &N(afterBattle_8022034C), }; diff --git a/src/battle/area_isk_part_2/stage/isk_07.c b/src/battle/area_isk_part_2/stage/isk_07.c index d8325e0cce..5ff90baf63 100644 --- a/src/battle/area_isk_part_2/stage/isk_07.c +++ b/src/battle/area_isk_part_2/stage/isk_07.c @@ -34,6 +34,6 @@ Stage NAMESPACE = { .texture = "isk_tex", .shape = "isk_bt07_shape", .hit = "isk_bt07_hit", - .preBattle = N(beforeBattle_80220390), - .postBattle = N(afterBattle_802203D8), + .preBattle = &N(beforeBattle_80220390), + .postBattle = &N(afterBattle_802203D8), }; diff --git a/src/battle/area_iwa/stage/iwa_01.c b/src/battle/area_iwa/stage/iwa_01.c index 94df4ec30b..4ccaed3d72 100644 --- a/src/battle/area_iwa/stage/iwa_01.c +++ b/src/battle/area_iwa/stage/iwa_01.c @@ -36,8 +36,8 @@ Stage NAMESPACE = { .shape = "iwa_bt01_shape", .hit = "iwa_bt01_hit", .bg = "iwa_bg\0", - .preBattle = N(beforeBattle_80220860), - .postBattle = N(afterBattle_80220894), + .preBattle = &N(beforeBattle_80220860), + .postBattle = &N(afterBattle_80220894), .foregroundModelList = N(foregroundModelList_802208A4), .specialFormationSize = 1, .specialFormation = &N(specialFormation_802208E4), diff --git a/src/battle/area_iwa/stage/iwa_01b.c b/src/battle/area_iwa/stage/iwa_01b.c index 9a42980291..b9e7a2344c 100644 --- a/src/battle/area_iwa/stage/iwa_01b.c +++ b/src/battle/area_iwa/stage/iwa_01b.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .shape = "iwa_bt01_shape", .hit = "iwa_bt01_hit", .bg = "iwa_bg", - .preBattle = N(beforeBattle_80221510), - .postBattle = N(afterBattle_80221544), + .preBattle = &N(beforeBattle_80221510), + .postBattle = &N(afterBattle_80221544), .foregroundModelList = N(foregroundModelList_80221554), }; diff --git a/src/battle/area_iwa/stage/iwa_02.c b/src/battle/area_iwa/stage/iwa_02.c index 1e5c053295..2b023efb70 100644 --- a/src/battle/area_iwa/stage/iwa_02.c +++ b/src/battle/area_iwa/stage/iwa_02.c @@ -34,8 +34,8 @@ Stage NAMESPACE = { .shape = "iwa_bt02_shape", .hit = "iwa_bt02_hit", .bg = "iwa_bg", - .preBattle = N(beforeBattle_80221590), - .postBattle = N(afterBattle_802215B0), + .preBattle = &N(beforeBattle_80221590), + .postBattle = &N(afterBattle_802215B0), .foregroundModelList = N(foregroundModelList_802215C0), }; diff --git a/src/battle/area_jan/stage/jan_00.c b/src/battle/area_jan/stage/jan_00.c index e12d32e693..1c9a0f9bb7 100644 --- a/src/battle/area_jan/stage/jan_00.c +++ b/src/battle/area_jan/stage/jan_00.c @@ -125,6 +125,6 @@ Stage NAMESPACE = { .shape = "jan_bt00_shape", .hit = "jan_bt00_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_802271C4), - .postBattle = N(afterBattle_80227298), + .preBattle = &N(beforeBattle_802271C4), + .postBattle = &N(afterBattle_80227298), }; diff --git a/src/battle/area_jan/stage/jan_01.c b/src/battle/area_jan/stage/jan_01.c index d681feca3c..34cad59d5b 100644 --- a/src/battle/area_jan/stage/jan_01.c +++ b/src/battle/area_jan/stage/jan_01.c @@ -133,7 +133,7 @@ Stage NAMESPACE = { .shape = "jan_bt01_shape", .hit = "jan_bt01_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_80227994), - .postBattle = N(afterBattle_80227A6C), + .preBattle = &N(beforeBattle_80227994), + .postBattle = &N(afterBattle_80227A6C), .foregroundModelList = N(foregroundModelList_80227A7C), }; diff --git a/src/battle/area_jan/stage/jan_01b.c b/src/battle/area_jan/stage/jan_01b.c index cf2058dbef..a819deeb8e 100644 --- a/src/battle/area_jan/stage/jan_01b.c +++ b/src/battle/area_jan/stage/jan_01b.c @@ -133,7 +133,7 @@ Stage NAMESPACE = { .shape = "jan_bt01_shape", .hit = "jan_bt01_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_80228174), - .postBattle = N(afterBattle_8022824C), + .preBattle = &N(beforeBattle_80228174), + .postBattle = &N(afterBattle_8022824C), .foregroundModelList = N(foregroundModelList_8022825C), }; diff --git a/src/battle/area_jan/stage/jan_02.c b/src/battle/area_jan/stage/jan_02.c index 5961694b30..98636b841c 100644 --- a/src/battle/area_jan/stage/jan_02.c +++ b/src/battle/area_jan/stage/jan_02.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .shape = "jan_bt02_shape", .hit = "jan_bt02_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_80228290), - .postBattle = N(afterBattle_802282CC), + .preBattle = &N(beforeBattle_80228290), + .postBattle = &N(afterBattle_802282CC), .foregroundModelList = N(foregroundModelList_802282DC), }; diff --git a/src/battle/area_jan/stage/jan_03.c b/src/battle/area_jan/stage/jan_03.c index efa35c7191..e348f24a1e 100644 --- a/src/battle/area_jan/stage/jan_03.c +++ b/src/battle/area_jan/stage/jan_03.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt03_shape", .hit = "jan_bt03_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_80228320), - .postBattle = N(afterBattle_80228370), + .preBattle = &N(beforeBattle_80228320), + .postBattle = &N(afterBattle_80228370), .foregroundModelList = N(foregroundModelList_80228380), }; diff --git a/src/battle/area_jan/stage/jan_03b.c b/src/battle/area_jan/stage/jan_03b.c index 50bf7b4267..d306524d38 100644 --- a/src/battle/area_jan/stage/jan_03b.c +++ b/src/battle/area_jan/stage/jan_03b.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt03_shape", .hit = "jan_bt03_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_802283C0), - .postBattle = N(afterBattle_80228410), + .preBattle = &N(beforeBattle_802283C0), + .postBattle = &N(afterBattle_80228410), .foregroundModelList = N(foregroundModelList_80228420), }; diff --git a/src/battle/area_jan/stage/jan_04.c b/src/battle/area_jan/stage/jan_04.c index e3c20edded..604c29b39c 100644 --- a/src/battle/area_jan/stage/jan_04.c +++ b/src/battle/area_jan/stage/jan_04.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt04_shape", .hit = "jan_bt04_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_80228460), - .postBattle = N(afterBattle_802284B0), + .preBattle = &N(beforeBattle_80228460), + .postBattle = &N(afterBattle_802284B0), .foregroundModelList = N(foregroundModelList_802284C0), }; diff --git a/src/battle/area_jan/stage/jan_04b.c b/src/battle/area_jan/stage/jan_04b.c index 5047c78fdf..ebf71fd78a 100644 --- a/src/battle/area_jan/stage/jan_04b.c +++ b/src/battle/area_jan/stage/jan_04b.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt04_shape", .hit = "jan_bt04_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_802284F0), - .postBattle = N(afterBattle_80228540), + .preBattle = &N(beforeBattle_802284F0), + .postBattle = &N(afterBattle_80228540), .foregroundModelList = N(foregroundModelList_80228550), }; diff --git a/src/battle/area_jan2/stage/jan_00.c b/src/battle/area_jan2/stage/jan_00.c index b73bd5773e..75cb13242b 100644 --- a/src/battle/area_jan2/stage/jan_00.c +++ b/src/battle/area_jan2/stage/jan_00.c @@ -125,6 +125,6 @@ Stage NAMESPACE = { .shape = "jan_bt00_shape", .hit = "jan_bt00_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_8021E1F4), - .postBattle = N(afterBattle_8021E2C8), + .preBattle = &N(beforeBattle_8021E1F4), + .postBattle = &N(afterBattle_8021E2C8), }; diff --git a/src/battle/area_jan2/stage/jan_01.c b/src/battle/area_jan2/stage/jan_01.c index 58bc0d5c6d..d66df6c69c 100644 --- a/src/battle/area_jan2/stage/jan_01.c +++ b/src/battle/area_jan2/stage/jan_01.c @@ -133,7 +133,7 @@ Stage NAMESPACE = { .shape = "jan_bt01_shape", .hit = "jan_bt01_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_8021E9C4), - .postBattle = N(afterBattle_8021EA9C), + .preBattle = &N(beforeBattle_8021E9C4), + .postBattle = &N(afterBattle_8021EA9C), .foregroundModelList = N(foregroundModelList_8021EAAC), }; diff --git a/src/battle/area_jan2/stage/jan_01b.c b/src/battle/area_jan2/stage/jan_01b.c index 4c8ea60891..2355114318 100644 --- a/src/battle/area_jan2/stage/jan_01b.c +++ b/src/battle/area_jan2/stage/jan_01b.c @@ -133,7 +133,7 @@ Stage NAMESPACE = { .shape = "jan_bt01_shape", .hit = "jan_bt01_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_8021F1A4), - .postBattle = N(afterBattle_8021F27C), + .preBattle = &N(beforeBattle_8021F1A4), + .postBattle = &N(afterBattle_8021F27C), .foregroundModelList = N(foregroundModelList_8021F28C), }; diff --git a/src/battle/area_jan2/stage/jan_02.c b/src/battle/area_jan2/stage/jan_02.c index d1d4261cd6..ac63fa8137 100644 --- a/src/battle/area_jan2/stage/jan_02.c +++ b/src/battle/area_jan2/stage/jan_02.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .shape = "jan_bt02_shape", .hit = "jan_bt02_hit", .bg = "yos_bg", - .preBattle = N(beforeBattle_8021F2C0), - .postBattle = N(afterBattle_8021F2FC), + .preBattle = &N(beforeBattle_8021F2C0), + .postBattle = &N(afterBattle_8021F2FC), .foregroundModelList = N(foregroundModelList_8021F30C), }; diff --git a/src/battle/area_jan2/stage/jan_03.c b/src/battle/area_jan2/stage/jan_03.c index fc34d92835..126ddcc4fe 100644 --- a/src/battle/area_jan2/stage/jan_03.c +++ b/src/battle/area_jan2/stage/jan_03.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt03_shape", .hit = "jan_bt03_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_8021F350), - .postBattle = N(afterBattle_8021F3A0), + .preBattle = &N(beforeBattle_8021F350), + .postBattle = &N(afterBattle_8021F3A0), .foregroundModelList = N(foregroundModelList_8021F3B0), }; diff --git a/src/battle/area_jan2/stage/jan_03b.c b/src/battle/area_jan2/stage/jan_03b.c index e1048a62ab..b8eb5fca82 100644 --- a/src/battle/area_jan2/stage/jan_03b.c +++ b/src/battle/area_jan2/stage/jan_03b.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt03_shape", .hit = "jan_bt03_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_8021F3F0), - .postBattle = N(afterBattle_8021F440), + .preBattle = &N(beforeBattle_8021F3F0), + .postBattle = &N(afterBattle_8021F440), .foregroundModelList = N(foregroundModelList_8021F450), }; diff --git a/src/battle/area_jan2/stage/jan_04.c b/src/battle/area_jan2/stage/jan_04.c index d554310db0..50b0dfb4f8 100644 --- a/src/battle/area_jan2/stage/jan_04.c +++ b/src/battle/area_jan2/stage/jan_04.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt04_shape", .hit = "jan_bt04_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_8021F490), - .postBattle = N(afterBattle_8021F4E0), + .preBattle = &N(beforeBattle_8021F490), + .postBattle = &N(afterBattle_8021F4E0), .foregroundModelList = N(foregroundModelList_8021F4F0), }; diff --git a/src/battle/area_jan2/stage/jan_04b.c b/src/battle/area_jan2/stage/jan_04b.c index 9d7fa16618..5a138acd14 100644 --- a/src/battle/area_jan2/stage/jan_04b.c +++ b/src/battle/area_jan2/stage/jan_04b.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .shape = "jan_bt04_shape", .hit = "jan_bt04_hit", .bg = "jan_bg", - .preBattle = N(beforeBattle_8021F520), - .postBattle = N(afterBattle_8021F570), + .preBattle = &N(beforeBattle_8021F520), + .postBattle = &N(afterBattle_8021F570), .foregroundModelList = N(foregroundModelList_8021F580), }; diff --git a/src/battle/area_kgr/stage/kgr_01.c b/src/battle/area_kgr/stage/kgr_01.c index 7ec0133895..56acef02fe 100644 --- a/src/battle/area_kgr/stage/kgr_01.c +++ b/src/battle/area_kgr/stage/kgr_01.c @@ -308,7 +308,7 @@ Stage NAMESPACE = { .texture = "kgr_tex", .shape = "kgr_bt01_shape", .hit = "kgr_bt01_hit", - .preBattle = N(beforeBattle_8021D3B4), - .postBattle = N(afterBattle_8021D598), + .preBattle = &N(beforeBattle_8021D3B4), + .postBattle = &N(afterBattle_8021D598), .foregroundModelList = N(foregroundModelList_8021D5A8), }; diff --git a/src/battle/area_kmr_part_1/stage/kmr_02.c b/src/battle/area_kmr_part_1/stage/kmr_02.c index 9bb723cab9..58429b5ffb 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_02.c +++ b/src/battle/area_kmr_part_1/stage/kmr_02.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "kmr_tex", .shape = "kmr_bt02_shape", .bg = "kmr_bg", - .preBattle = N(beforeBattle_8021FDA0), - .postBattle = N(afterBattle_8021FDC0), + .preBattle = &N(beforeBattle_8021FDA0), + .postBattle = &N(afterBattle_8021FDC0), }; diff --git a/src/battle/area_kmr_part_1/stage/kmr_03.c b/src/battle/area_kmr_part_1/stage/kmr_03.c index dc30080e1f..9541d24482 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_03.c +++ b/src/battle/area_kmr_part_1/stage/kmr_03.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt03_shape", .hit = "kmr_bt03_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80220188), - .postBattle = N(afterBattle_80220200), + .preBattle = &N(beforeBattle_80220188), + .postBattle = &N(afterBattle_80220200), .foregroundModelList = N(foregroundModelList_80220210), }; diff --git a/src/battle/area_kmr_part_1/stage/kmr_04.c b/src/battle/area_kmr_part_1/stage/kmr_04.c index 107e2facdf..7061b0ac90 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_04.c +++ b/src/battle/area_kmr_part_1/stage/kmr_04.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt04_shape", .hit = "kmr_bt04_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_802205D8), - .postBattle = N(afterBattle_80220650), + .preBattle = &N(beforeBattle_802205D8), + .postBattle = &N(afterBattle_80220650), .foregroundModelList = N(foregroundModelList_80220660), }; diff --git a/src/battle/area_kmr_part_1/stage/kmr_05.c b/src/battle/area_kmr_part_1/stage/kmr_05.c index 6bb9a11e99..8d03a61b67 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_05.c +++ b/src/battle/area_kmr_part_1/stage/kmr_05.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .shape = "kmr_bt05_shape", .hit = "kmr_bt05_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80220A28), - .postBattle = N(afterBattle_80220A5C), + .preBattle = &N(beforeBattle_80220A28), + .postBattle = &N(afterBattle_80220A5C), .foregroundModelList = N(foregroundModelList_80220A6C), }; diff --git a/src/battle/area_kmr_part_1/stage/kmr_06.c b/src/battle/area_kmr_part_1/stage/kmr_06.c index 471bce46e4..1eec061443 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_06.c +++ b/src/battle/area_kmr_part_1/stage/kmr_06.c @@ -33,7 +33,7 @@ Stage NAMESPACE = { .shape = "kmr_bt06_shape", .hit = "kmr_bt06_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80220E28), - .postBattle = N(afterBattle_80220EAC), + .preBattle = &N(beforeBattle_80220E28), + .postBattle = &N(afterBattle_80220EAC), .foregroundModelList = N(foregroundModelList_80220EBC), }; diff --git a/src/battle/area_kmr_part_2/stage/kmr_02.c b/src/battle/area_kmr_part_2/stage/kmr_02.c index 8a6d152c16..4e6f8f8de9 100644 --- a/src/battle/area_kmr_part_2/stage/kmr_02.c +++ b/src/battle/area_kmr_part_2/stage/kmr_02.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "kmr_tex", .shape = "kmr_bt02_shape", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80224700), - .postBattle = N(afterBattle_80224720), + .preBattle = &N(beforeBattle_80224700), + .postBattle = &N(afterBattle_80224720), }; diff --git a/src/battle/area_kmr_part_2/stage/kmr_03.c b/src/battle/area_kmr_part_2/stage/kmr_03.c index ef0aae133e..a918ed8ff6 100644 --- a/src/battle/area_kmr_part_2/stage/kmr_03.c +++ b/src/battle/area_kmr_part_2/stage/kmr_03.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt03_shape", .hit = "kmr_bt03_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80224AE8), - .postBattle = N(afterBattle_80224B60), + .preBattle = &N(beforeBattle_80224AE8), + .postBattle = &N(afterBattle_80224B60), .foregroundModelList = N(foregroundModelList_80224B70), }; diff --git a/src/battle/area_kmr_part_2/stage/kmr_04.c b/src/battle/area_kmr_part_2/stage/kmr_04.c index 8ede9385fc..0e5d17342f 100644 --- a/src/battle/area_kmr_part_2/stage/kmr_04.c +++ b/src/battle/area_kmr_part_2/stage/kmr_04.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt04_shape", .hit = "kmr_bt04_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80224F38), - .postBattle = N(afterBattle_80224FB0), + .preBattle = &N(beforeBattle_80224F38), + .postBattle = &N(afterBattle_80224FB0), .foregroundModelList = N(foregroundModelList_80224FC0), }; diff --git a/src/battle/area_kmr_part_2/stage/kmr_05.c b/src/battle/area_kmr_part_2/stage/kmr_05.c index 00c5349389..bbf6b49a3a 100644 --- a/src/battle/area_kmr_part_2/stage/kmr_05.c +++ b/src/battle/area_kmr_part_2/stage/kmr_05.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .shape = "kmr_bt05_shape", .hit = "kmr_bt05_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80225388), - .postBattle = N(afterBattle_802253BC), + .preBattle = &N(beforeBattle_80225388), + .postBattle = &N(afterBattle_802253BC), .foregroundModelList = N(foregroundModelList_802253CC), }; diff --git a/src/battle/area_kmr_part_2/stage/kmr_06.c b/src/battle/area_kmr_part_2/stage/kmr_06.c index 5772a8634b..57ec34dc1c 100644 --- a/src/battle/area_kmr_part_2/stage/kmr_06.c +++ b/src/battle/area_kmr_part_2/stage/kmr_06.c @@ -34,7 +34,7 @@ Stage NAMESPACE = { .shape = "kmr_bt06_shape", .hit = "kmr_bt06_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80225788), - .postBattle = N(afterBattle_8022580C), + .preBattle = &N(beforeBattle_80225788), + .postBattle = &N(afterBattle_8022580C), .foregroundModelList = N(foregroundModelList_8022581C), }; diff --git a/src/battle/area_kmr_part_3/stage/kmr_02.c b/src/battle/area_kmr_part_3/stage/kmr_02.c index 867f2179f0..f90f642132 100644 --- a/src/battle/area_kmr_part_3/stage/kmr_02.c +++ b/src/battle/area_kmr_part_3/stage/kmr_02.c @@ -18,6 +18,6 @@ Stage NAMESPACE = { .texture = "kmr_tex", .shape = "kmr_bt02_shape", .bg = "kmr_bg", - .preBattle = N(beforeBattle_802322D0), - .postBattle = N(afterBattle_802322F0), + .preBattle = &N(beforeBattle_802322D0), + .postBattle = &N(afterBattle_802322F0), }; diff --git a/src/battle/area_kmr_part_3/stage/kmr_03.c b/src/battle/area_kmr_part_3/stage/kmr_03.c index 3712d03b56..77b8df1056 100644 --- a/src/battle/area_kmr_part_3/stage/kmr_03.c +++ b/src/battle/area_kmr_part_3/stage/kmr_03.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt03_shape", .hit = "kmr_bt03_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_802326B8), - .postBattle = N(afterBattle_80232730), + .preBattle = &N(beforeBattle_802326B8), + .postBattle = &N(afterBattle_80232730), .foregroundModelList = N(foregroundModelList_80232740), }; diff --git a/src/battle/area_kmr_part_3/stage/kmr_04.c b/src/battle/area_kmr_part_3/stage/kmr_04.c index 0e26ca7799..55d114f137 100644 --- a/src/battle/area_kmr_part_3/stage/kmr_04.c +++ b/src/battle/area_kmr_part_3/stage/kmr_04.c @@ -31,7 +31,7 @@ Stage NAMESPACE = { .shape = "kmr_bt04_shape", .hit = "kmr_bt04_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80232B08), - .postBattle = N(afterBattle_80232B80), + .preBattle = &N(beforeBattle_80232B08), + .postBattle = &N(afterBattle_80232B80), .foregroundModelList = N(foregroundModelList_80232B90), }; diff --git a/src/battle/area_kmr_part_3/stage/kmr_05.c b/src/battle/area_kmr_part_3/stage/kmr_05.c index af50035e75..8dde70b737 100644 --- a/src/battle/area_kmr_part_3/stage/kmr_05.c +++ b/src/battle/area_kmr_part_3/stage/kmr_05.c @@ -27,7 +27,7 @@ Stage NAMESPACE = { .shape = "kmr_bt05_shape", .hit = "kmr_bt05_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80232F58), - .postBattle = N(afterBattle_80232FA0), + .preBattle = &N(beforeBattle_80232F58), + .postBattle = &N(afterBattle_80232FA0), .foregroundModelList = N(foregroundModelList_80232FB0), }; diff --git a/src/battle/area_kmr_part_3/stage/kmr_06.c b/src/battle/area_kmr_part_3/stage/kmr_06.c index f93c155c33..2fcc119198 100644 --- a/src/battle/area_kmr_part_3/stage/kmr_06.c +++ b/src/battle/area_kmr_part_3/stage/kmr_06.c @@ -34,7 +34,7 @@ Stage NAMESPACE = { .shape = "kmr_bt06_shape", .hit = "kmr_bt06_hit", .bg = "kmr_bg", - .preBattle = N(beforeBattle_80233378), - .postBattle = N(afterBattle_802333FC), + .preBattle = &N(beforeBattle_80233378), + .postBattle = &N(afterBattle_802333FC), .foregroundModelList = N(foregroundModelList_8023340C), }; diff --git a/src/battle/area_kmr_part_3/stage/kpa_01.c b/src/battle/area_kmr_part_3/stage/kpa_01.c index 5f39d174a6..9bfae4a7e2 100644 --- a/src/battle/area_kmr_part_3/stage/kpa_01.c +++ b/src/battle/area_kmr_part_3/stage/kpa_01.c @@ -34,6 +34,6 @@ Stage NAMESPACE = { .texture = "kpa_tex", .shape = "kpa_bt13_shape", .hit = "kpa_bt13_hit", - .preBattle = N(beforeBattle_80234D60), - .postBattle = N(afterBattle_80234D9C), + .preBattle = &N(beforeBattle_80234D60), + .postBattle = &N(afterBattle_80234D9C), }; diff --git a/src/battle/area_kmr_part_3/stage/mac_01.c b/src/battle/area_kmr_part_3/stage/mac_01.c index bf66c88e05..f94312edbb 100644 --- a/src/battle/area_kmr_part_3/stage/mac_01.c +++ b/src/battle/area_kmr_part_3/stage/mac_01.c @@ -287,6 +287,6 @@ Stage NAMESPACE = { .shape = "mac_bt01_shape", .hit = "mac_bt01_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80234B74), - .postBattle = N(afterBattle_80234C70), + .preBattle = &N(beforeBattle_80234B74), + .postBattle = &N(afterBattle_80234C70), }; diff --git a/src/battle/area_kmr_part_3/stage/mim_01.c b/src/battle/area_kmr_part_3/stage/mim_01.c index 8bfda5d3a6..93ef301d3e 100644 --- a/src/battle/area_kmr_part_3/stage/mim_01.c +++ b/src/battle/area_kmr_part_3/stage/mim_01.c @@ -21,7 +21,7 @@ Stage NAMESPACE = { .texture = "mim_tex", .shape = "mim_bt01_shape", .hit = "mim_bt01_hit", - .preBattle = N(beforeBattle_80233670), - .postBattle = N(afterBattle_8023369C), + .preBattle = &N(beforeBattle_80233670), + .postBattle = &N(afterBattle_8023369C), }; diff --git a/src/battle/area_kmr_part_3/stage/nok_01.c b/src/battle/area_kmr_part_3/stage/nok_01.c index adf0bf57a5..671c3459f9 100644 --- a/src/battle/area_kmr_part_3/stage/nok_01.c +++ b/src/battle/area_kmr_part_3/stage/nok_01.c @@ -54,7 +54,7 @@ Stage NAMESPACE = { .shape = "nok_bt01_shape", .hit = "nok_bt01_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80233558), - .postBattle = N(afterBattle_80233620), + .preBattle = &N(beforeBattle_80233558), + .postBattle = &N(afterBattle_80233620), .foregroundModelList = N(foregroundModelList_80233630), }; diff --git a/src/battle/area_kmr_part_3/stage/sam_01.c b/src/battle/area_kmr_part_3/stage/sam_01.c index 978b6ce5ff..c03c381f98 100644 --- a/src/battle/area_kmr_part_3/stage/sam_01.c +++ b/src/battle/area_kmr_part_3/stage/sam_01.c @@ -111,7 +111,7 @@ Stage NAMESPACE = { .shape = "sam_bt01_shape", .hit = "sam_bt01_hit", .bg = "yki_bg", - .preBattle = N(beforeBattle_80233998), - .postBattle = N(afterBattle_80233AA8), + .preBattle = &N(beforeBattle_80233998), + .postBattle = &N(afterBattle_80233AA8), .foregroundModelList = N(foregroundModelList_80233AB8), }; diff --git a/src/battle/area_kzn/stage/kzn_01.c b/src/battle/area_kzn/stage/kzn_01.c index d7fca47906..3a1d6c89d3 100644 --- a/src/battle/area_kzn/stage/kzn_01.c +++ b/src/battle/area_kzn/stage/kzn_01.c @@ -24,7 +24,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt01_shape", .hit = "kzn_bt01_hit", - .preBattle = N(beforeBattle_80227780), - .postBattle = N(afterBattle_802277D0), + .preBattle = &N(beforeBattle_80227780), + .postBattle = &N(afterBattle_802277D0), .foregroundModelList = N(foregroundModelList_802277E0), }; diff --git a/src/battle/area_kzn/stage/kzn_01b.c b/src/battle/area_kzn/stage/kzn_01b.c index 228be40c36..bb31076624 100644 --- a/src/battle/area_kzn/stage/kzn_01b.c +++ b/src/battle/area_kzn/stage/kzn_01b.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt01_shape", .hit = "kzn_bt01_hit", - .preBattle = N(beforeBattle_80227820), - .postBattle = N(afterBattle_8022785C), + .preBattle = &N(beforeBattle_80227820), + .postBattle = &N(afterBattle_8022785C), .foregroundModelList = N(foregroundModelList_8022786C), }; diff --git a/src/battle/area_kzn/stage/kzn_02.c b/src/battle/area_kzn/stage/kzn_02.c index 4c8d2a877e..e06dc48a3c 100644 --- a/src/battle/area_kzn/stage/kzn_02.c +++ b/src/battle/area_kzn/stage/kzn_02.c @@ -113,7 +113,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt02_shape", .hit = "kzn_bt02_hit", - .preBattle = N(beforeBattle_80227BDC), - .postBattle = N(afterBattle_80227D98), + .preBattle = &N(beforeBattle_80227BDC), + .postBattle = &N(afterBattle_80227D98), .foregroundModelList = N(foregroundModelList_80227DA8), }; diff --git a/src/battle/area_kzn/stage/kzn_04.c b/src/battle/area_kzn/stage/kzn_04.c index 8b9a45703e..6b15f08828 100644 --- a/src/battle/area_kzn/stage/kzn_04.c +++ b/src/battle/area_kzn/stage/kzn_04.c @@ -119,7 +119,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt04_shape", .hit = "kzn_bt04_hit", - .preBattle = N(beforeBattle_8022810C), - .postBattle = N(afterBattle_80228328), + .preBattle = &N(beforeBattle_8022810C), + .postBattle = &N(afterBattle_80228328), .foregroundModelList = N(foregroundModelList_80228338), }; diff --git a/src/battle/area_kzn/stage/kzn_04b.c b/src/battle/area_kzn/stage/kzn_04b.c index 55d105c998..c2e503fc4d 100644 --- a/src/battle/area_kzn/stage/kzn_04b.c +++ b/src/battle/area_kzn/stage/kzn_04b.c @@ -119,7 +119,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt04_shape", .hit = "kzn_bt04_hit", - .preBattle = N(beforeBattle_8022869C), - .postBattle = N(afterBattle_802288B8), + .preBattle = &N(beforeBattle_8022869C), + .postBattle = &N(afterBattle_802288B8), .foregroundModelList = N(foregroundModelList_802288C8), }; diff --git a/src/battle/area_kzn/stage/kzn_04c.c b/src/battle/area_kzn/stage/kzn_04c.c index 50b7633412..a27c4bf7ff 100644 --- a/src/battle/area_kzn/stage/kzn_04c.c +++ b/src/battle/area_kzn/stage/kzn_04c.c @@ -113,7 +113,7 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt04_shape", .hit = "kzn_bt04_hit", - .preBattle = N(beforeBattle_80228C2C), - .postBattle = N(afterBattle_80228DF0), + .preBattle = &N(beforeBattle_80228C2C), + .postBattle = &N(afterBattle_80228DF0), .foregroundModelList = N(foregroundModelList_80228E00), }; diff --git a/src/battle/area_kzn/stage/kzn_05.c b/src/battle/area_kzn/stage/kzn_05.c index 449d2e6d54..94a8db310e 100644 --- a/src/battle/area_kzn/stage/kzn_05.c +++ b/src/battle/area_kzn/stage/kzn_05.c @@ -160,6 +160,6 @@ Stage NAMESPACE = { .texture = "kzn_tex", .shape = "kzn_bt05_shape", .hit = "kzn_bt05_hit", - .preBattle = N(beforeBattle_8022916C), - .postBattle = N(afterBattle_8022974C), + .preBattle = &N(beforeBattle_8022916C), + .postBattle = &N(afterBattle_8022974C), }; diff --git a/src/battle/area_mac/stage/mac_01.c b/src/battle/area_mac/stage/mac_01.c index 1ddfb8a5bf..455ed9073f 100644 --- a/src/battle/area_mac/stage/mac_01.c +++ b/src/battle/area_mac/stage/mac_01.c @@ -287,6 +287,6 @@ Stage NAMESPACE = { .shape = "mac_bt01_shape", .hit = "mac_bt01_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_802327F4), - .postBattle = N(afterBattle_802328F0), + .preBattle = &N(beforeBattle_802327F4), + .postBattle = &N(afterBattle_802328F0), }; diff --git a/src/battle/area_mac/stage/mac_02.c b/src/battle/area_mac/stage/mac_02.c index 9355c422ba..6d475cb580 100644 --- a/src/battle/area_mac/stage/mac_02.c +++ b/src/battle/area_mac/stage/mac_02.c @@ -22,6 +22,6 @@ Stage NAMESPACE = { .texture = "mac_tex", .shape = "mac_bt02_shape", .hit = "mac_bt02_hit", - .preBattle = N(beforeBattle_80232930), - .postBattle = N(afterBattle_8023297C), + .preBattle = &N(beforeBattle_80232930), + .postBattle = &N(afterBattle_8023297C), }; diff --git a/src/battle/area_mim/stage/mim_01.c b/src/battle/area_mim/stage/mim_01.c index cf5d45fc33..1679f750b4 100644 --- a/src/battle/area_mim/stage/mim_01.c +++ b/src/battle/area_mim/stage/mim_01.c @@ -21,6 +21,6 @@ Stage NAMESPACE = { .texture = "mim_tex", .shape = "mim_bt01_shape", .hit = "mim_bt01_hit", - .preBattle = N(beforeBattle_8021E450), - .postBattle = N(afterBattle_8021E47C), + .preBattle = &N(beforeBattle_8021E450), + .postBattle = &N(afterBattle_8021E47C), }; diff --git a/src/battle/area_nok/stage/nok_01.c b/src/battle/area_nok/stage/nok_01.c index bfbc4dd4a9..adb50f6ad6 100644 --- a/src/battle/area_nok/stage/nok_01.c +++ b/src/battle/area_nok/stage/nok_01.c @@ -54,7 +54,7 @@ Stage NAMESPACE = { .shape = "nok_bt01_shape", .hit = "nok_bt01_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_8022B6F8), - .postBattle = N(afterBattle_8022B7C0), + .preBattle = &N(beforeBattle_8022B6F8), + .postBattle = &N(afterBattle_8022B7C0), .foregroundModelList = N(foregroundModelList_8022B7D0), }; diff --git a/src/battle/area_nok/stage/nok_02.c b/src/battle/area_nok/stage/nok_02.c index 67d63a6d9c..44b43bdcf3 100644 --- a/src/battle/area_nok/stage/nok_02.c +++ b/src/battle/area_nok/stage/nok_02.c @@ -73,7 +73,7 @@ Stage NAMESPACE = { .shape = "nok_bt02_shape", .hit = "nok_bt02_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_8022B918), - .postBattle = N(afterBattle_8022BACC), + .preBattle = &N(beforeBattle_8022B918), + .postBattle = &N(afterBattle_8022BACC), .foregroundModelList = N(foregroundModelList_8022BADC), }; diff --git a/src/battle/area_nok/stage/nok_03.c b/src/battle/area_nok/stage/nok_03.c index 4fc782f89f..3f3d76fdf2 100644 --- a/src/battle/area_nok/stage/nok_03.c +++ b/src/battle/area_nok/stage/nok_03.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .shape = "nok_bt03_shape", .hit = "nok_bt03_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_8022BB20), - .postBattle = N(afterBattle_8022BB40), + .preBattle = &N(beforeBattle_8022BB20), + .postBattle = &N(afterBattle_8022BB40), .foregroundModelList = N(foregroundModelList_8022BB50), }; diff --git a/src/battle/area_nok/stage/nok_04.c b/src/battle/area_nok/stage/nok_04.c index c6ee5dc5a7..6001ccbf2a 100644 --- a/src/battle/area_nok/stage/nok_04.c +++ b/src/battle/area_nok/stage/nok_04.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .shape = "nok_bt04_shape", .hit = "nok_bt04_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_8022BB90), - .postBattle = N(afterBattle_8022BBB0), + .preBattle = &N(beforeBattle_8022BB90), + .postBattle = &N(afterBattle_8022BBB0), .foregroundModelList = N(foregroundModelList_8022BBC0), }; diff --git a/src/battle/area_omo/stage/omo_01.c b/src/battle/area_omo/stage/omo_01.c index e46a140ac2..f79cc11c14 100644 --- a/src/battle/area_omo/stage/omo_01.c +++ b/src/battle/area_omo/stage/omo_01.c @@ -45,6 +45,6 @@ Stage NAMESPACE = { .shape = "omo_bt01_shape", .hit = "omo_bt01_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022DA50), - .postBattle = N(afterBattle_8022DB68), + .preBattle = &N(beforeBattle_8022DA50), + .postBattle = &N(afterBattle_8022DB68), }; diff --git a/src/battle/area_omo/stage/omo_02.c b/src/battle/area_omo/stage/omo_02.c index 43acff7d7e..72acc705ac 100644 --- a/src/battle/area_omo/stage/omo_02.c +++ b/src/battle/area_omo/stage/omo_02.c @@ -20,6 +20,6 @@ Stage NAMESPACE = { .shape = "omo_bt02_shape", .hit = "omo_bt02_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022DBA0), - .postBattle = N(afterBattle_8022DBDC), + .preBattle = &N(beforeBattle_8022DBA0), + .postBattle = &N(afterBattle_8022DBDC), }; diff --git a/src/battle/area_omo/stage/omo_03.c b/src/battle/area_omo/stage/omo_03.c index 3e588b275a..d24904f42b 100644 --- a/src/battle/area_omo/stage/omo_03.c +++ b/src/battle/area_omo/stage/omo_03.c @@ -21,6 +21,6 @@ Stage NAMESPACE = { .shape = "omo_bt03_shape", .hit = "omo_bt03_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022DC20), - .postBattle = N(afterBattle_8022DC70), + .preBattle = &N(beforeBattle_8022DC20), + .postBattle = &N(afterBattle_8022DC70), }; diff --git a/src/battle/area_omo/stage/omo_03b.c b/src/battle/area_omo/stage/omo_03b.c index 3b1edfdb66..56dd3fe298 100644 --- a/src/battle/area_omo/stage/omo_03b.c +++ b/src/battle/area_omo/stage/omo_03b.c @@ -20,6 +20,6 @@ Stage NAMESPACE = { .shape = "omo_bt03_shape", .hit = "omo_bt03_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022DCB0), - .postBattle = N(afterBattle_8022DCEC), + .preBattle = &N(beforeBattle_8022DCB0), + .postBattle = &N(afterBattle_8022DCEC), }; diff --git a/src/battle/area_omo/stage/omo_04.c b/src/battle/area_omo/stage/omo_04.c index 6d04bc7cdb..b8f9b447a7 100644 --- a/src/battle/area_omo/stage/omo_04.c +++ b/src/battle/area_omo/stage/omo_04.c @@ -44,8 +44,8 @@ Stage NAMESPACE = { .shape = "omo_bt04_shape", .hit = "omo_bt04_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022DD30), - .postBattle = N(afterBattle_8022DDEC), + .preBattle = &N(beforeBattle_8022DD30), + .postBattle = &N(afterBattle_8022DDEC), .foregroundModelList = N(foregroundModelList_8022DDFC), .specialFormationSize = 4, .specialFormation = &N(specialFormation_8022DE64), diff --git a/src/battle/area_omo/stage/omo_05.c b/src/battle/area_omo/stage/omo_05.c index 04c928685f..6521b91085 100644 --- a/src/battle/area_omo/stage/omo_05.c +++ b/src/battle/area_omo/stage/omo_05.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .shape = "omo_bt05_shape", .hit = "omo_bt05_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022F4D0), - .postBattle = N(afterBattle_8022F534), + .preBattle = &N(beforeBattle_8022F4D0), + .postBattle = &N(afterBattle_8022F534), .foregroundModelList = N(foregroundModelList_8022F544), }; diff --git a/src/battle/area_omo/stage/omo_05b.c b/src/battle/area_omo/stage/omo_05b.c index 3219dc0e4e..09dc99ad2a 100644 --- a/src/battle/area_omo/stage/omo_05b.c +++ b/src/battle/area_omo/stage/omo_05b.c @@ -26,7 +26,7 @@ Stage NAMESPACE = { .shape = "omo_bt05_shape", .hit = "omo_bt05_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022F580), - .postBattle = N(afterBattle_8022F5E4), + .preBattle = &N(beforeBattle_8022F580), + .postBattle = &N(afterBattle_8022F5E4), .foregroundModelList = N(foregroundModelList_8022F5F4), }; diff --git a/src/battle/area_omo/stage/omo_06.c b/src/battle/area_omo/stage/omo_06.c index 43bb991ab3..f530293029 100644 --- a/src/battle/area_omo/stage/omo_06.c +++ b/src/battle/area_omo/stage/omo_06.c @@ -63,7 +63,7 @@ Stage NAMESPACE = { .shape = "omo_bt06_shape", .hit = "omo_bt06_hit", .bg = "omo_bg", - .preBattle = N(beforeBattle_8022F790), - .postBattle = N(afterBattle_8022F860), + .preBattle = &N(beforeBattle_8022F790), + .postBattle = &N(afterBattle_8022F860), .foregroundModelList = N(foregroundModelList_8022F870), }; diff --git a/src/battle/area_omo/stage/omo_07.c b/src/battle/area_omo/stage/omo_07.c index 4c5921d3ee..afa2a74fab 100644 --- a/src/battle/area_omo/stage/omo_07.c +++ b/src/battle/area_omo/stage/omo_07.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "omo_tex", .shape = "omo_bt07_shape", .hit = "omo_bt07_hit", - .preBattle = N(beforeBattle_8022F8B0), - .postBattle = N(afterBattle_8022F8EC), + .preBattle = &N(beforeBattle_8022F8B0), + .postBattle = &N(afterBattle_8022F8EC), }; diff --git a/src/battle/area_sbk/stage/sbk_02.c b/src/battle/area_sbk/stage/sbk_02.c index c9b31021a9..48bcb41312 100644 --- a/src/battle/area_sbk/stage/sbk_02.c +++ b/src/battle/area_sbk/stage/sbk_02.c @@ -57,7 +57,7 @@ Stage NAMESPACE = { .shape = "sbk_bt02_shape", .hit = "sbk_bt02_hit", .bg = "sbk_bg", - .preBattle = N(beforeBattle_8021F800), - .postBattle = N(afterBattle_8021F8E8), + .preBattle = &N(beforeBattle_8021F800), + .postBattle = &N(afterBattle_8021F8E8), .foregroundModelList = N(foregroundModelList_8021F8F8), }; diff --git a/src/battle/area_trd_part_1/stage/trd_00.c b/src/battle/area_trd_part_1/stage/trd_00.c index 4e344d6a84..0f5b6e7449 100644 --- a/src/battle/area_trd_part_1/stage/trd_00.c +++ b/src/battle/area_trd_part_1/stage/trd_00.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt00_shape", .hit = "trd_bt00_hit", - .preBattle = N(beforeBattle_80224B70), - .postBattle = N(afterBattle_80224BAC), + .preBattle = &N(beforeBattle_80224B70), + .postBattle = &N(afterBattle_80224BAC), .foregroundModelList = N(foregroundModelList_80224BBC), }; diff --git a/src/battle/area_trd_part_1/stage/trd_01.c b/src/battle/area_trd_part_1/stage/trd_01.c index 4dcb2c2078..7c17839c0b 100644 --- a/src/battle/area_trd_part_1/stage/trd_01.c +++ b/src/battle/area_trd_part_1/stage/trd_01.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt01_shape", .hit = "trd_bt01_hit", - .preBattle = N(beforeBattle_80222AE0), - .postBattle = N(afterBattle_80222B1C), + .preBattle = &N(beforeBattle_80222AE0), + .postBattle = &N(afterBattle_80222B1C), }; diff --git a/src/battle/area_trd_part_1/stage/trd_02.c b/src/battle/area_trd_part_1/stage/trd_02.c index a920bed530..794363fde9 100644 --- a/src/battle/area_trd_part_1/stage/trd_02.c +++ b/src/battle/area_trd_part_1/stage/trd_02.c @@ -134,7 +134,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_80223224), - .postBattle = N(afterBattle_80223318), + .preBattle = &N(beforeBattle_80223224), + .postBattle = &N(afterBattle_80223318), .foregroundModelList = N(foregroundModelList_80223328), }; diff --git a/src/battle/area_trd_part_1/stage/trd_02b.c b/src/battle/area_trd_part_1/stage/trd_02b.c index e8954c7ccf..acdffb4c63 100644 --- a/src/battle/area_trd_part_1/stage/trd_02b.c +++ b/src/battle/area_trd_part_1/stage/trd_02b.c @@ -132,6 +132,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_80223A24), - .postBattle = N(afterBattle_80223B40), + .preBattle = &N(beforeBattle_80223A24), + .postBattle = &N(afterBattle_80223B40), }; diff --git a/src/battle/area_trd_part_1/stage/trd_02c.c b/src/battle/area_trd_part_1/stage/trd_02c.c index 3e9dfedd60..20d8e89e56 100644 --- a/src/battle/area_trd_part_1/stage/trd_02c.c +++ b/src/battle/area_trd_part_1/stage/trd_02c.c @@ -25,7 +25,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_80224BF0), - .postBattle = N(afterBattle_80224C54), + .preBattle = &N(beforeBattle_80224BF0), + .postBattle = &N(afterBattle_80224C54), .foregroundModelList = N(foregroundModelList_80224C64), }; diff --git a/src/battle/area_trd_part_1/stage/trd_02d.c b/src/battle/area_trd_part_1/stage/trd_02d.c index f98a963872..ecd9a9961b 100644 --- a/src/battle/area_trd_part_1/stage/trd_02d.c +++ b/src/battle/area_trd_part_1/stage/trd_02d.c @@ -126,7 +126,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_80225364), - .postBattle = N(afterBattle_80225418), + .preBattle = &N(beforeBattle_80225364), + .postBattle = &N(afterBattle_80225418), .foregroundModelList = N(foregroundModelList_80225428), }; diff --git a/src/battle/area_trd_part_1/stage/trd_03.c b/src/battle/area_trd_part_1/stage/trd_03.c index 06c4556018..ec4b699cd5 100644 --- a/src/battle/area_trd_part_1/stage/trd_03.c +++ b/src/battle/area_trd_part_1/stage/trd_03.c @@ -33,7 +33,7 @@ Stage NAMESPACE = { .shape = "trd_bt03_shape", .hit = "trd_bt03_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80223F08), - .postBattle = N(afterBattle_80223FA0), + .preBattle = &N(beforeBattle_80223F08), + .postBattle = &N(afterBattle_80223FA0), .foregroundModelList = N(foregroundModelList_80223FB0), }; diff --git a/src/battle/area_trd_part_1/stage/trd_04.c b/src/battle/area_trd_part_1/stage/trd_04.c index 6dc9e3a286..b2f2eae9b7 100644 --- a/src/battle/area_trd_part_1/stage/trd_04.c +++ b/src/battle/area_trd_part_1/stage/trd_04.c @@ -81,7 +81,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt04_shape", .hit = "trd_bt04_hit", - .preBattle = N(beforeBattle_80224298), - .postBattle = N(afterBattle_80224320), + .preBattle = &N(beforeBattle_80224298), + .postBattle = &N(afterBattle_80224320), .foregroundModelList = N(foregroundModelList_80224330), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05.c b/src/battle/area_trd_part_1/stage/trd_05.c index e65aa83de8..a146946a34 100644 --- a/src/battle/area_trd_part_1/stage/trd_05.c +++ b/src/battle/area_trd_part_1/stage/trd_05.c @@ -134,6 +134,6 @@ Stage NAMESPACE = { .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80224A24), - .postBattle = N(afterBattle_80224B30), + .preBattle = &N(beforeBattle_80224A24), + .postBattle = &N(afterBattle_80224B30), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05b.c b/src/battle/area_trd_part_1/stage/trd_05b.c index 36f175aa8e..1a902135f5 100644 --- a/src/battle/area_trd_part_1/stage/trd_05b.c +++ b/src/battle/area_trd_part_1/stage/trd_05b.c @@ -126,6 +126,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80225B24), - .postBattle = N(afterBattle_80225C28), + .preBattle = &N(beforeBattle_80225B24), + .postBattle = &N(afterBattle_80225C28), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05c.c b/src/battle/area_trd_part_1/stage/trd_05c.c index ab474f0f21..f1006a1000 100644 --- a/src/battle/area_trd_part_1/stage/trd_05c.c +++ b/src/battle/area_trd_part_1/stage/trd_05c.c @@ -134,6 +134,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80226324), - .postBattle = N(afterBattle_80226470), + .preBattle = &N(beforeBattle_80226324), + .postBattle = &N(afterBattle_80226470), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05d.c b/src/battle/area_trd_part_1/stage/trd_05d.c index 6ed99f6268..69a21ec32a 100644 --- a/src/battle/area_trd_part_1/stage/trd_05d.c +++ b/src/battle/area_trd_part_1/stage/trd_05d.c @@ -133,6 +133,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80226B74), - .postBattle = N(afterBattle_80226CB8), + .preBattle = &N(beforeBattle_80226B74), + .postBattle = &N(afterBattle_80226CB8), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05e.c b/src/battle/area_trd_part_1/stage/trd_05e.c index 6e6ab2eee8..388c3250a3 100644 --- a/src/battle/area_trd_part_1/stage/trd_05e.c +++ b/src/battle/area_trd_part_1/stage/trd_05e.c @@ -124,6 +124,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_802273B4), - .postBattle = N(afterBattle_80227490), + .preBattle = &N(beforeBattle_802273B4), + .postBattle = &N(afterBattle_80227490), }; diff --git a/src/battle/area_trd_part_1/stage/trd_05f.c b/src/battle/area_trd_part_1/stage/trd_05f.c index 042711ddd9..6433833789 100644 --- a/src/battle/area_trd_part_1/stage/trd_05f.c +++ b/src/battle/area_trd_part_1/stage/trd_05f.c @@ -126,6 +126,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80227B94), - .postBattle = N(afterBattle_80227C8C), + .preBattle = &N(beforeBattle_80227B94), + .postBattle = &N(afterBattle_80227C8C), }; diff --git a/src/battle/area_trd_part_2/stage/trd_00.c b/src/battle/area_trd_part_2/stage/trd_00.c index 796ece4b9e..930253e97b 100644 --- a/src/battle/area_trd_part_2/stage/trd_00.c +++ b/src/battle/area_trd_part_2/stage/trd_00.c @@ -23,7 +23,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt00_shape", .hit = "trd_bt00_hit", - .preBattle = N(beforeBattle_802313E0), - .postBattle = N(afterBattle_8023141C), + .preBattle = &N(beforeBattle_802313E0), + .postBattle = &N(afterBattle_8023141C), .foregroundModelList = N(foregroundModelList_8023142C), }; diff --git a/src/battle/area_trd_part_2/stage/trd_01.c b/src/battle/area_trd_part_2/stage/trd_01.c index 0b6b4ff0ff..6e802842c8 100644 --- a/src/battle/area_trd_part_2/stage/trd_01.c +++ b/src/battle/area_trd_part_2/stage/trd_01.c @@ -19,6 +19,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt01_shape", .hit = "trd_bt01_hit", - .preBattle = N(beforeBattle_80231460), - .postBattle = N(afterBattle_8023149C), + .preBattle = &N(beforeBattle_80231460), + .postBattle = &N(afterBattle_8023149C), }; diff --git a/src/battle/area_trd_part_2/stage/trd_02.c b/src/battle/area_trd_part_2/stage/trd_02.c index 31c9625d24..ae90e0f9cd 100644 --- a/src/battle/area_trd_part_2/stage/trd_02.c +++ b/src/battle/area_trd_part_2/stage/trd_02.c @@ -134,7 +134,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_80231BA4), - .postBattle = N(afterBattle_80231C98), + .preBattle = &N(beforeBattle_80231BA4), + .postBattle = &N(afterBattle_80231C98), .foregroundModelList = N(foregroundModelList_80231CA8), }; diff --git a/src/battle/area_trd_part_2/stage/trd_02b.c b/src/battle/area_trd_part_2/stage/trd_02b.c index c1a4f91052..5b143bea03 100644 --- a/src/battle/area_trd_part_2/stage/trd_02b.c +++ b/src/battle/area_trd_part_2/stage/trd_02b.c @@ -132,6 +132,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt02_shape", .hit = "trd_bt02_hit", - .preBattle = N(beforeBattle_802323A4), - .postBattle = N(afterBattle_802324C0), + .preBattle = &N(beforeBattle_802323A4), + .postBattle = &N(afterBattle_802324C0), }; diff --git a/src/battle/area_trd_part_2/stage/trd_03.c b/src/battle/area_trd_part_2/stage/trd_03.c index 289bb1cab9..b53c426102 100644 --- a/src/battle/area_trd_part_2/stage/trd_03.c +++ b/src/battle/area_trd_part_2/stage/trd_03.c @@ -33,7 +33,7 @@ Stage NAMESPACE = { .shape = "trd_bt03_shape", .hit = "trd_bt03_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80232888), - .postBattle = N(afterBattle_80232920), + .preBattle = &N(beforeBattle_80232888), + .postBattle = &N(afterBattle_80232920), .foregroundModelList = N(foregroundModelList_80232930), }; diff --git a/src/battle/area_trd_part_2/stage/trd_04.c b/src/battle/area_trd_part_2/stage/trd_04.c index 2ac4e3d250..86545b6b8f 100644 --- a/src/battle/area_trd_part_2/stage/trd_04.c +++ b/src/battle/area_trd_part_2/stage/trd_04.c @@ -81,7 +81,7 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt04_shape", .hit = "trd_bt04_hit", - .preBattle = N(beforeBattle_80232C18), - .postBattle = N(afterBattle_80232CA0), + .preBattle = &N(beforeBattle_80232C18), + .postBattle = &N(afterBattle_80232CA0), .foregroundModelList = N(foregroundModelList_80232CB0), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05.c b/src/battle/area_trd_part_2/stage/trd_05.c index 4d2b31525a..44a85217fb 100644 --- a/src/battle/area_trd_part_2/stage/trd_05.c +++ b/src/battle/area_trd_part_2/stage/trd_05.c @@ -134,6 +134,6 @@ Stage NAMESPACE = { .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_802333A4), - .postBattle = N(afterBattle_802334B0), + .preBattle = &N(beforeBattle_802333A4), + .postBattle = &N(afterBattle_802334B0), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05b.c b/src/battle/area_trd_part_2/stage/trd_05b.c index 910c96b3f6..75e1ee4228 100644 --- a/src/battle/area_trd_part_2/stage/trd_05b.c +++ b/src/battle/area_trd_part_2/stage/trd_05b.c @@ -126,6 +126,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80233BB4), - .postBattle = N(afterBattle_80233CB8), + .preBattle = &N(beforeBattle_80233BB4), + .postBattle = &N(afterBattle_80233CB8), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05c.c b/src/battle/area_trd_part_2/stage/trd_05c.c index 3560728374..cdbf33dedc 100644 --- a/src/battle/area_trd_part_2/stage/trd_05c.c +++ b/src/battle/area_trd_part_2/stage/trd_05c.c @@ -134,6 +134,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_802343B4), - .postBattle = N(afterBattle_80234500), + .preBattle = &N(beforeBattle_802343B4), + .postBattle = &N(afterBattle_80234500), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05d.c b/src/battle/area_trd_part_2/stage/trd_05d.c index 636704f2ed..fddb9839eb 100644 --- a/src/battle/area_trd_part_2/stage/trd_05d.c +++ b/src/battle/area_trd_part_2/stage/trd_05d.c @@ -133,6 +133,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80234C04), - .postBattle = N(afterBattle_80234D48), + .preBattle = &N(beforeBattle_80234C04), + .postBattle = &N(afterBattle_80234D48), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05e.c b/src/battle/area_trd_part_2/stage/trd_05e.c index d82a8a9f9e..4cc8fe27e5 100644 --- a/src/battle/area_trd_part_2/stage/trd_05e.c +++ b/src/battle/area_trd_part_2/stage/trd_05e.c @@ -124,6 +124,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80235444), - .postBattle = N(afterBattle_80235520), + .preBattle = &N(beforeBattle_80235444), + .postBattle = &N(afterBattle_80235520), }; diff --git a/src/battle/area_trd_part_2/stage/trd_05f.c b/src/battle/area_trd_part_2/stage/trd_05f.c index dedac0d66e..7208f06e25 100644 --- a/src/battle/area_trd_part_2/stage/trd_05f.c +++ b/src/battle/area_trd_part_2/stage/trd_05f.c @@ -126,6 +126,6 @@ Stage NAMESPACE = { .texture = "trd_tex", .shape = "trd_bt05_shape", .hit = "trd_bt05_hit", - .preBattle = N(beforeBattle_80235C24), - .postBattle = N(afterBattle_80235D1C), + .preBattle = &N(beforeBattle_80235C24), + .postBattle = &N(afterBattle_80235D1C), }; diff --git a/src/battle/area_trd_part_3/stage/nok_01.c b/src/battle/area_trd_part_3/stage/nok_01.c index 2cd0bf4570..b4c0d66604 100644 --- a/src/battle/area_trd_part_3/stage/nok_01.c +++ b/src/battle/area_trd_part_3/stage/nok_01.c @@ -54,7 +54,7 @@ Stage NAMESPACE = { .shape = "nok_bt01_shape", .hit = "nok_bt01_hit", .bg = "nok_bg", - .preBattle = N(beforeBattle_80218ED8), - .postBattle = N(afterBattle_80218FA0), + .preBattle = &N(beforeBattle_80218ED8), + .postBattle = &N(afterBattle_80218FA0), .foregroundModelList = N(foregroundModelList_80218FB0), }; diff --git a/src/battle/battle.h b/src/battle/battle.h index ebfa6b3014..ea8456dcaa 100644 --- a/src/battle/battle.h +++ b/src/battle/battle.h @@ -274,8 +274,8 @@ typedef struct Stage { /* 0x00 */ const char* texture; /* 0x04 */ const char* shape; /* 0x08 */ const char* hit; - /* 0x0C */ Bytecode* preBattle; - /* 0x10 */ Bytecode* postBattle; + /* 0x0C */ EvtScript* preBattle; + /* 0x10 */ EvtScript* postBattle; /* 0x14 */ const char* bg; /* 0x18 */ s32* foregroundModelList; /* 0x1C */ s32 specialFormationSize; @@ -290,7 +290,9 @@ typedef struct Battle { /* 0x08 */ Formation* formation; /* 0x0C */ Stage* stage; /* 0x10 */ s32 unk_10; -} BattleList[]; // size = 0x14 * n +} Battle; // size = 0x14 * n + +typedef Battle BattleList[]; /// Zero-terminated. typedef struct StageListRow { diff --git a/src/battle/item/food.c b/src/battle/item/food.c index 17e604152a..ef053665be 100644 --- a/src/battle/item/food.c +++ b/src/battle/item/food.c @@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_7333BC)(Evt* script, s32 isInitialCall) { partner->koDuration = 0; } if (partner->koDuration > 0) { - ((s32*)partner->debuffIcon->data)[0xF] = partner->koDuration; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = partner->koDuration; } else { partner->koStatus = 0; - dispatch_event_partner(0x34); - ((s32*)partner->debuffIcon->data)[0xF] = 0; + dispatch_event_partner(EVENT_34); + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; } return ApiStatus_DONE2; diff --git a/src/battle/item/life_shroom.c b/src/battle/item/life_shroom.c index 04a379382d..242759f071 100644 --- a/src/battle/item/life_shroom.c +++ b/src/battle/item/life_shroom.c @@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_72E81C)(Evt* script, s32 isInitialCall) { partner->koDuration = 0; } if (partner->koDuration > 0) { - ((s32*)partner->debuffIcon->data)[0xF] = partner->koDuration; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = partner->koDuration; } else { partner->koStatus = 0; - dispatch_event_partner(0x34); - ((s32*)partner->debuffIcon->data)[0xF] = 0; + dispatch_event_partner(EVENT_34); + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; } return ApiStatus_DONE2; diff --git a/src/battle/item/mushroom.c b/src/battle/item/mushroom.c index 44f034cef1..de9e77ce96 100644 --- a/src/battle/item/mushroom.c +++ b/src/battle/item/mushroom.c @@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_715B3C)(Evt* script, s32 isInitialCall) { partner->koDuration = 0; } if (partner->koDuration > 0) { - ((s32*)partner->debuffIcon->data)[0xF] = partner->koDuration; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = partner->koDuration; } else { partner->koStatus = 0; - dispatch_event_partner(0x34); - ((s32*)partner->debuffIcon->data)[0xF] = 0; + dispatch_event_partner(EVENT_34); + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; } return ApiStatus_DONE2; diff --git a/src/battle/item/super_soda.c b/src/battle/item/super_soda.c index e3170d9eaa..69136ac86f 100644 --- a/src/battle/item/super_soda.c +++ b/src/battle/item/super_soda.c @@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_724FCC)(Evt* script, s32 isInitialCall) { partner->koDuration = 0; } if (partner->koDuration > 0) { - ((s32*)partner->debuffIcon->data)[0xF] = partner->koDuration; + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = partner->koDuration; } else { partner->koStatus = 0; - dispatch_event_partner(0x34); - ((s32*)partner->debuffIcon->data)[0xF] = 0; + dispatch_event_partner(EVENT_34); + ((DisableXFXData*)partner->debuffEffect->data)->unk_3C = 0; } return ApiStatus_DONE2; @@ -60,11 +60,11 @@ ApiStatus N(func_802A1378_725058)(Evt* script, s32 isInitialCall) { case ACTOR_CLASS_PLAYER: break; case ACTOR_CLASS_PARTNER: - dispatch_event_partner(0x31); + dispatch_event_partner(EVENT_RECOVER_STATUS); break; } - ((s32*)actor->debuffIcon->data)[15] = 0; + ((DisableXFXData*)actor->debuffEffect->data)->unk_3C = 0; } btl_update_ko_status(); diff --git a/src/battle/item/tasty_tonic.c b/src/battle/item/tasty_tonic.c index c54e4c2f2d..abeba40c44 100644 --- a/src/battle/item/tasty_tonic.c +++ b/src/battle/item/tasty_tonic.c @@ -22,9 +22,9 @@ ApiStatus N(func_802A123C_72223C)(Evt* script, s32 isInitialCall) { case ACTOR_CLASS_PLAYER: break; case ACTOR_CLASS_PARTNER: - dispatch_event_partner(0x31); + dispatch_event_partner(EVENT_RECOVER_STATUS); } - ((s32*)(actor->debuffIcon->data))[15] = 0; + ((DisableXFXData*)actor->debuffEffect->data)->unk_3C = 0; } return ApiStatus_DONE2; diff --git a/src/battle/star/refresh/78B600.c b/src/battle/star/refresh/78B600.c index 312ff8e08f..bdb73de0e0 100644 --- a/src/battle/star/refresh/78B600.c +++ b/src/battle/star/refresh/78B600.c @@ -22,7 +22,7 @@ ApiStatus func_802A17D4_78BDD4(Evt* script, s32 isInitialCall) { if (actor->koStatus != 0) { actor->koDuration = 0; actor->koStatus = 0; - ((s32*)actor->debuffIcon->data)[15] = 0; + ((DisableXFXData*)actor->debuffEffect->data)->unk_3C = 0; } btl_update_ko_status(); diff --git a/src/effects/disable_x.c b/src/effects/disable_x.c index 9f1f7400d4..3ca5acb482 100644 --- a/src/effects/disable_x.c +++ b/src/effects/disable_x.c @@ -1,22 +1,318 @@ #include "common.h" #include "effects_internal.h" -INCLUDE_ASM(s32, "effects/disable_x", disable_x_main); +extern Gfx D_09002100[]; +extern Gfx D_09002198[]; +extern Gfx D_09002230[]; +extern Gfx D_09002250[]; +extern Gfx D_09002270[]; +extern Gfx D_09002290[]; +extern Gfx D_090022B0[]; +extern Gfx D_09002320[]; +extern Gfx D_09002360[]; +extern Gfx D_090023A0[]; +extern Gfx D_090023E0[]; +extern Gfx D_09002420[]; +extern Gfx D_09002460[]; +extern Gfx D_090024A0[]; +extern Gfx D_090024E0[]; +extern Gfx D_09002520[]; +extern Gfx D_09002560[]; +extern Gfx D_090025A0[]; +extern Gfx D_090025E0[]; -void disable_x_init(void) { +Gfx* D_E0082D00[] = { + D_09002320, D_09002360, D_090023A0, D_090023E0, D_09002420, D_09002460, D_090024A0, D_090024E0, D_09002520, + D_09002560, D_090025A0, D_090025E0 +}; + +void disable_x_init(EffectInstance* effect); +void disable_x_update(EffectInstance* effect); +void disable_x_render(EffectInstance* effect); +void func_E0082528(EffectInstance* effect); +void func_E00828B4(EffectInstance* effect); +void func_E0082A84(EffectInstance* effect); + +EffectInstance* disable_x_main(s32 type, f32 x, f32 y, f32 z, s32 arg4) { + EffectBlueprint bp; + EffectInstance* effect; + DisableXFXData* data; + s32 numParts = 2; + s32 i; + + bp.unk_00 = 0; + bp.init = disable_x_init; + bp.update = disable_x_update; + bp.renderWorld = disable_x_render; + bp.unk_14 = func_E0082528; + bp.effectID = EFFECT_DISABLE_X; + + effect = shim_create_effect_instance(&bp); + effect->numParts = numParts; + data = shim_general_heap_malloc(numParts * sizeof(*data)); + effect->data = data; + ASSERT(effect->data != NULL); + + data->type = type; + data->scale = 1.0f; + if (type == 1) { + data->unk_38 = type; + data->unk_3C = 0; + } else { + data->unk_38 = 0; + data->unk_3C = arg4; + } + + data->pos.x = x; + data->pos.y = y; + data->pos.z = z; + + switch (type) { + case 0: + data->unk_28 = 100; + break; + case 1: + data->unk_28 = 100; + break; + case 10: + data->unk_28 = 21; + break; + } + + data->unk_2C = 0; + data->unk_44 = 0; + data->unk_04 = 1; + + data++; + for (i = 1; i < numParts; i++, data++) { + data->pos.x = data->pos.y = data->pos.z = 0.0f; + data->unk_18 = data->unk_1C = data->unk_20 = 0.0f; + data->unk_14 = 0.0f; + data->unk_40 = 0.0f; + data->unk_28 = 0; + data->alpha = 255; + } + + return effect; } -INCLUDE_ASM(s32, "effects/disable_x", disable_x_update); - -void disable_x_render(void) { +void disable_x_init(EffectInstance* effect) { } -INCLUDE_ASM(s32, "effects/disable_x", func_E0082528); +void disable_x_update(EffectInstance* effect) { + static const f32 D_E0082D30[12] = { 5.0f, 4.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.7f, 1.2f, 1.0f, 0.0f, 0.0f, 0.0f }; -INCLUDE_ASM(s32, "effects/disable_x", func_E0082580); + DisableXFXData* data = effect->data; + s32 unk_28; + s32 unk_2C; + f32 unk_34; + s32 unk_3C; + s32 unk_38; + u32 type; + s32 i; -INCLUDE_ASM(s32, "effects/disable_x", func_E00826C4); + if (effect->flags & 0x10) { + effect->flags &= ~0x10; + data->unk_28 = 21; + } -INCLUDE_ASM(s32, "effects/disable_x", func_E00828B4); + if (data->unk_28 < 100) { + data->unk_28--; + } -INCLUDE_ASM(s32, "effects/disable_x", func_E0082A84); + if (data->unk_28 < 0) { + shim_remove_effect(effect); + return; + } + + data->unk_2C++; + if (data->unk_2C > 324000) { + data->unk_2C = 256; + } + + type = data->type; + unk_28 = data->unk_28; + unk_2C = data->unk_2C; + unk_38 = data->unk_38; + unk_34 = data->scale; + unk_3C = data->unk_3C; + + if (type == 0) { + if (data->unk_44 > 0) { + data->unk_44--; + } else { + if (data->unk_3C != unk_38) { + if (data->unk_3C < 0) { + unk_3C = 0; + } + if (unk_38 < unk_3C) { + data->unk_28 = 100; + data->unk_2C = 1; + data[1].unk_28 = 0; + data->unk_38++; + if (data->pos.y > -500.0f) { + shim_sfx_play_sound_at_position(0x2107, 0, data->pos.x, data->pos.y, data->pos.z); + } + } else if (unk_3C < unk_38) { + shim_load_effect(EFFECT_DISABLE_X); + disable_x_main(10, data->pos.x, data->pos.y + data[1].unk_20, data->pos.z, 0); + data->unk_38--; + } + data->unk_44 = 8; + } + } + } + + data++; + for (i = 1; i < effect->numParts; i++, data++) { + if (data->unk_28 < 9 && type != 10) { + data->unk_30 = D_E0082D30[data->unk_28]; + } else { + data->unk_30 = 1.0f; + } + + data->unk_30 *= unk_34; + if (type < 2) { + data->unk_20 = shim_cos_deg(unk_2C * 12) * 4.0f; + } else { + data->unk_20 = 0.0f; + } + + data->pos.x += data->unk_14; + data->pos.y += data->unk_18; + data->pos.z += data->unk_1C; + + if (unk_28 == 20) { + data->unk_18 = 4.0f; + data->unk_14 = -2.0f; + } + if (unk_28 < 20) { + data->unk_18 += -0.5; + data->unk_40 += 10.0f; + data->unk_20 *= (f32) unk_28 * 0.05; + } + if (unk_28 < 10) { + data->alpha = unk_28 * 25; + } + data->unk_28 += 1; + } +} + +void disable_x_render(EffectInstance* effect) { +} + +void func_E0082528(EffectInstance* effect) { + DisableXFXData* data = effect->data; + + if (data->unk_04 != 0) { + func_E00828B4(effect); + if (data->type != 1) { + func_E0082A84(effect); + } + } +} + +void func_E0082580(DisableXFXData* data) { + Matrix4f sp18, sp58; + + shim_guTranslateF(sp18, data->pos.x, data->pos.y, data->pos.z); + shim_guScaleF(sp58, data->scale, data->scale, 1.0f); + shim_guRotateF(sp58, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f); + shim_guMtxCatF(sp58, sp18, sp18); + shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); +} + +void func_E00826C4(DisableXFXData* data) { + Matrix4f sp18, sp58; + + shim_guTranslateF(sp18, data->pos.x, data->pos.y, data->pos.z); + shim_guScaleF(sp58, data->unk_30, data->unk_30, 1.0f); + shim_guMtxCatF(sp58, sp18, sp18); + shim_guRotateF(sp58, data->unk_40, 0.0f, 0.0f, 1.0f); + shim_guMtxCatF(sp58, sp18, sp18); + shim_guTranslateF(sp58, 0.0f, data->unk_20, 0.0f); + shim_guMtxCatF(sp58, sp18, sp18); + shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, data->alpha); + + if (data->alpha == 255) { + gDPSetRenderMode(gMasterGfxPos++, AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM), + AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)); + gDPSetCombineMode(gMasterGfxPos++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); + } else { + gDPSetRenderMode(gMasterGfxPos++, G_RM_CLD_SURF, G_RM_CLD_SURF2); + gDPSetCombineLERP(gMasterGfxPos++, TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, TEXEL0, 0, TEXEL0, 0, SHADE, 0, + PRIMITIVE, 0, TEXEL0, 0); + } +} + +void func_E00828B4(EffectInstance* effect) { + DisableXFXData* data = effect->data; + s32 type; + s32 unk_38; + s32 i; + + gDPPipeSync(gMasterGfxPos++); + gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(effect->graphics->data)); + func_E0082580(data); + unk_38 = data->unk_38; + type = data->type; + + data++; + for (i = 1; i < effect->numParts; i++, data++) { + if (unk_38 > 0 || type == 10) { + if (type == 1) { + gSPDisplayList(gMasterGfxPos++, D_09002198); + } else { + gSPDisplayList(gMasterGfxPos++, D_09002100); + } + func_E00826C4(data); + gSPDisplayList(gMasterGfxPos++, D_09002230); + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + } + } + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + gDPPipeSync(gMasterGfxPos++); +} + +void func_E0082A84(EffectInstance* effect) { + DisableXFXData* data = effect->data; + s32 unk_38; + s32 i; + + gDPPipeSync(gMasterGfxPos++); + gSPSegment(gMasterGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(effect->graphics->data)); + func_E0082580(data); + unk_38 = data->unk_38; + + data++; + for (i = 1; i < effect->numParts; i++, data++) { + func_E00826C4(data); + if (unk_38 > 0) { + gSPDisplayList(gMasterGfxPos++, D_090022B0); + if (unk_38 < 10) { + gSPDisplayList(gMasterGfxPos++, D_E0082D00[unk_38]); + gSPDisplayList(gMasterGfxPos++, D_09002250); + } else { + s32 ones = unk_38 % 10; + s32 tens = unk_38 / 10; + + gSPDisplayList(gMasterGfxPos++, D_E0082D00[ones]); + gSPDisplayList(gMasterGfxPos++, D_E0082D00[tens]); + gSPDisplayList(gMasterGfxPos++, D_09002290); + gSPDisplayList(gMasterGfxPos++, D_E0082D00[tens]); + gSPDisplayList(gMasterGfxPos++, D_09002270); + } + } + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + } + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + gDPPipeSync(gMasterGfxPos++); +} diff --git a/src/evt/f8f60_len_1560.c b/src/evt/f8f60_len_1560.c index ec1e3e01c0..233eacfe4b 100644 --- a/src/evt/f8f60_len_1560.c +++ b/src/evt/f8f60_len_1560.c @@ -32,10 +32,10 @@ ApiStatus UpdateLerp(Evt* script, s32 isInitialCall) { } ApiStatus RandInt(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - s32 max = evt_get_variable(script, *ptrReadPos++); - Bytecode outVar = *ptrReadPos++; + s32 max = evt_get_variable(script, *args++); + Bytecode outVar = *args++; evt_set_variable(script, outVar, rand_int(max)); @@ -43,11 +43,11 @@ ApiStatus RandInt(Evt* script, s32 isInitialCall) { } ApiStatus GetAngleBetweenNPCs(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - s32 aID = evt_get_variable(script, *ptrReadPos++); - s32 bID = evt_get_variable(script, *ptrReadPos++); - Bytecode outVar = *ptrReadPos++; + s32 aID = evt_get_variable(script, *args++); + s32 bID = evt_get_variable(script, *args++); + Bytecode outVar = *args++; Npc* a = resolve_npc(script, aID); Npc* b = resolve_npc(script, bID); @@ -58,10 +58,10 @@ ApiStatus GetAngleBetweenNPCs(Evt* script, s32 isInitialCall) { ApiStatus GetAngleToNPC(Evt* script, s32 isInitialCall) { PlayerStatus* playerStatus = &gPlayerStatus; - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - s32 npcID = evt_get_variable(script, *ptrReadPos++); - Bytecode outVar = *ptrReadPos++; + s32 npcID = evt_get_variable(script, *args++); + Bytecode outVar = *args++; Npc* npc = resolve_npc(script, npcID); evt_set_variable(script, outVar, atan2(playerStatus->position.x, playerStatus->position.z, npc->pos.x, npc->pos.z)); @@ -71,10 +71,10 @@ ApiStatus GetAngleToNPC(Evt* script, s32 isInitialCall) { ApiStatus GetAngleToPlayer(Evt* script, s32 isInitialCall) { PlayerStatus* playerStatus = &gPlayerStatus; - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - s32 npcID = evt_get_variable(script, *ptrReadPos++); - Bytecode outVar = *ptrReadPos++; + s32 npcID = evt_get_variable(script, *args++); + Bytecode outVar = *args++; Npc* npc = resolve_npc(script, npcID); evt_set_variable(script, outVar, atan2(npc->pos.x, npc->pos.z, playerStatus->position.x, playerStatus->position.z)); @@ -83,7 +83,7 @@ ApiStatus GetAngleToPlayer(Evt* script, s32 isInitialCall) { } ApiStatus AwaitPlayerApproach(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; PlayerStatus* playerStatus = &gPlayerStatus; s32* targetX = &script->functionTemp[0]; @@ -93,9 +93,9 @@ ApiStatus AwaitPlayerApproach(Evt* script, s32 isInitialCall) { f32 distance; if (isInitialCall) { - *targetX = evt_get_variable(script, *ptrReadPos++); - *targetZ = evt_get_variable(script, *ptrReadPos++); - *distanceRequired = evt_get_variable(script, *ptrReadPos++); + *targetX = evt_get_variable(script, *args++); + *targetZ = evt_get_variable(script, *args++); + *distanceRequired = evt_get_variable(script, *args++); } distance = dist2D( @@ -111,7 +111,7 @@ ApiStatus AwaitPlayerApproach(Evt* script, s32 isInitialCall) { } ApiStatus IsPlayerWithin(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; PlayerStatus* playerStatus = &gPlayerStatus; s32* targetX = &script->functionTemp[0]; @@ -122,10 +122,10 @@ ApiStatus IsPlayerWithin(Evt* script, s32 isInitialCall) { Bytecode outVar = EVT_VAR(0); if (isInitialCall) { - *targetX = evt_get_variable(script, *ptrReadPos++); - *targetZ = evt_get_variable(script, *ptrReadPos++); - *distanceRequired = evt_get_variable(script, *ptrReadPos++); - outVar = *ptrReadPos++; + *targetX = evt_get_variable(script, *args++); + *targetZ = evt_get_variable(script, *args++); + *distanceRequired = evt_get_variable(script, *args++); + outVar = *args++; } distance = dist2D( @@ -170,17 +170,17 @@ ApiStatus AwaitPlayerLeave(Evt* script, s32 isInitialCall) { } ApiStatus AddVectorPolar(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - Bytecode xVar = *ptrReadPos++; + Bytecode xVar = *args++; f32 x = evt_get_float_variable(script, xVar); - Bytecode yVar = *ptrReadPos++; + Bytecode yVar = *args++; f32 y = evt_get_float_variable(script, yVar); - f32 r = evt_get_float_variable(script, *ptrReadPos++); + f32 r = evt_get_float_variable(script, *args++); - add_vec2D_polar(&x, &y, r, evt_get_float_variable(script, *ptrReadPos++)); + add_vec2D_polar(&x, &y, r, evt_get_float_variable(script, *args++)); evt_set_float_variable(script, xVar, x); evt_set_float_variable(script, yVar, y); @@ -244,7 +244,9 @@ ApiStatus func_802D4C4C(Evt* script, s32 initialCall) { } ApiStatus func_802D4CC4(Evt* script, s32 initialCall) { - s32 value = evt_get_variable(script, *script->ptrReadPos); + Bytecode* args = script->ptrReadPos; + s32 value = evt_get_variable(script, *args++); + if (value < 0) { set_screen_overlay_params_back(255, -1.0f); } else { @@ -255,7 +257,8 @@ ApiStatus func_802D4CC4(Evt* script, s32 initialCall) { } ApiStatus func_802D4D14(Evt* script, s32 initialCall) { - s32 value = evt_get_float_variable(script, *script->ptrReadPos); + Bytecode* args = script->ptrReadPos; + s32 value = evt_get_float_variable(script, *args++); set_screen_overlay_center(0, 0, 0xC, 0x14); set_screen_overlay_center(0, 1, 0x134, 0xDC); @@ -269,9 +272,11 @@ ApiStatus func_802D4D88(Evt* script, s32 initialCall) { return ApiStatus_DONE2; } +void load_path_data(s32 numVectors, f32* arg1, Vec3f* staticVectorList, Vec3f* vectors); + #ifdef NON_EQUIVALENT // most likely functionally equivalent, lots of issues though. -void load_path_data(s32 numVecs, f32* arg1, struct Vec3f* arg2, struct Vec3f* arg3) { +void load_path_data(s32 numVectors, f32* arg1, Vec3f* staticVectorList, Vec3f* vectors) { struct Vec3f* temp_s4; f32* temp_s7; s32 i; @@ -279,67 +284,67 @@ void load_path_data(s32 numVecs, f32* arg1, struct Vec3f* arg2, struct Vec3f* ar f32 new_var; f32 new_var2; - temp_s7 = heap_malloc(numVecs * sizeof(f32)); - temp_s4 = heap_malloc(numVecs * sizeof(Vec3f)); + temp_s7 = heap_malloc(numVectors * sizeof(f32)); + temp_s4 = heap_malloc(numVectors * sizeof(Vec3f)); arg1[0] = 0.0f; - for (i = 1; i < numVecs; i++) { - f32 temp_x = SQ(arg2[i].x - arg2[i - 1].x); - f32 temp_y = SQ(arg2[i].y - arg2[i - 1].y); - f32 temp_z = SQ(arg2[i].z - arg2[i - 1].z); + for (i = 1; i < numVectors; i++) { + f32 temp_x = SQ(staticVectorList[i].x - staticVectorList[i - 1].x); + f32 temp_y = SQ(staticVectorList[i].y - staticVectorList[i - 1].y); + f32 temp_z = SQ(staticVectorList[i].z - staticVectorList[i - 1].z); arg1[i] = arg1[i - 1] + sqrtf(temp_x + temp_y + temp_z); } - for (i = 1; i < numVecs; i++) { - arg1[i] = arg1[i] / arg1[numVecs - 1]; + for (i = 1; i < numVectors; i++) { + arg1[i] = arg1[i] / arg1[numVectors - 1]; } - arg3[0].x = 0; + vectors[0].x = 0; - arg3[numVecs - 1].z = 0; - arg3[0].z = 0; + vectors[numVectors - 1].z = 0; + vectors[0].z = 0; - arg3[numVecs - 1].x = 0; + vectors[numVectors - 1].x = 0; - arg3[0].y = 0; - arg3[numVecs - 1].y = 0; + vectors[0].y = 0; + vectors[numVectors - 1].y = 0; - for (i = 0; i < (numVecs - 1); i++) { + for (i = 0; i < (numVectors - 1); i++) { f32 temp = temp_s7[i]; temp_s7[i] = arg1[i + 1] - arg1[i]; - temp_s4[i + 1].x = ((arg2[i + 1].x - arg2[i].x) / temp_s7[i]); - temp_s4[i + 1].y = ((arg2[i + 1].y - arg2[i].y) / temp); - temp_s4[i + 1].z = ((arg2[i + 1].z - arg2[i].z) / temp); + temp_s4[i + 1].x = ((staticVectorList[i + 1].x - staticVectorList[i].x) / temp_s7[i]); + temp_s4[i + 1].y = ((staticVectorList[i + 1].y - staticVectorList[i].y) / temp); + temp_s4[i + 1].z = ((staticVectorList[i + 1].z - staticVectorList[i].z) / temp); } - arg3[1].x = temp_s4[2].x - temp_s4[1].x; - arg3[1].y = temp_s4[2].y - temp_s4[1].y; - arg3[1].z = temp_s4[2].z - temp_s4[1].z; + vectors[1].x = temp_s4[2].x - temp_s4[1].x; + vectors[1].y = temp_s4[2].y - temp_s4[1].y; + vectors[1].z = temp_s4[2].z - temp_s4[1].z; temp_s4[1].x = ((arg1[2] - arg1[0]) * 2); temp_s4[1].y = ((arg1[2] - arg1[0]) * 2); temp_s4[1].z = ((arg1[2] - arg1[0]) * 2); - for (i = 1; i < numVecs - 2; i++) { + for (i = 1; i < numVectors - 2; i++) { f32 temp_x = temp_s7[i] / temp_s4[i].x; f32 temp_y = temp_s7[i] / temp_s4[i].y; f32 temp_z = temp_s7[i] / temp_s4[i].z; - new_var = arg3[i].x; - arg3[i + 1].x = (temp_s4[i + 2].x - temp_s4[i].x) - (new_var * temp_x); - arg3[i + 1].y = (temp_s4[i + 2].y - temp_s4[i].y) - (new_var * temp_y); - arg3[i + 1].z = (temp_s4[i + 2].z - temp_s4[i].z) - (new_var * temp_z); + new_var = vectors[i].x; + vectors[i + 1].x = (temp_s4[i + 2].x - temp_s4[i].x) - (new_var * temp_x); + vectors[i + 1].y = (temp_s4[i + 2].y - temp_s4[i].y) - (new_var * temp_y); + vectors[i + 1].z = (temp_s4[i + 2].z - temp_s4[i].z) - (new_var * temp_z); temp_s4[i].x = ((arg1[i + 2] - arg1[i]) * 2) - (temp_s7[i] * temp_x); temp_s4[i].y = ((arg1[i + 2] - arg1[i]) * 2) - (temp_s7[i] * temp_y); temp_s4[i].z = ((arg1[i + 2] - arg1[i]) * 2) - (temp_s7[i] * temp_z); } - arg3[numVecs - 2].x = arg3[numVecs - 2].x - (temp_s7[numVecs - 2] * arg3[numVecs - 1].x); - arg3[numVecs - 2].y = arg3[numVecs - 2].y - (temp_s7[numVecs - 2] * arg3[numVecs - 1].y); - arg3[numVecs - 2].z = arg3[numVecs - 2].z - (temp_s7[numVecs - 2] * arg3[numVecs - 1].z); + vectors[numVectors - 2].x = vectors[numVectors - 2].x - (temp_s7[numVectors - 2] * vectors[numVectors - 1].x); + vectors[numVectors - 2].y = vectors[numVectors - 2].y - (temp_s7[numVectors - 2] * vectors[numVectors - 1].y); + vectors[numVectors - 2].z = vectors[numVectors - 2].z - (temp_s7[numVectors - 2] * vectors[numVectors - 1].z); - for (i = (numVecs - 2); i > 0 ; i--) { - arg3[i].x = (arg3[i].x - (temp_s7[i] * arg3[i + 1].x)) / temp_s4[i].x; - arg3[i].y = (arg3[i].y - (temp_s7[i] * arg3[i + 1].y)) / temp_s4[i].y; - arg3[i].z = (arg3[i].z - (temp_s7[i] * arg3[i + 1].z)) / temp_s4[i].z; + for (i = (numVectors - 2); i > 0 ; i--) { + vectors[i].x = (vectors[i].x - (temp_s7[i] * vectors[i + 1].x)) / temp_s4[i].x; + vectors[i].y = (vectors[i].y - (temp_s7[i] * vectors[i + 1].y)) / temp_s4[i].y; + vectors[i].z = (vectors[i].z - (temp_s7[i] * vectors[i + 1].z)) / temp_s4[i].z; } heap_free(temp_s7); @@ -349,17 +354,45 @@ void load_path_data(s32 numVecs, f32* arg1, struct Vec3f* arg2, struct Vec3f* ar INCLUDE_ASM(s32, "evt/f8f60_len_1560", load_path_data); #endif -INCLUDE_ASM(s32, "evt/f8f60_len_1560", get_path_position); +void get_path_position(f32 alpha, Vec3f* outPos, s32 numVectors, f32* normalizedLengths, Vec3f* staticVectors, Vec3f* vectors) { + s32 limit = numVectors - 1; + f32 lenDiff; + f32 diff2; + s32 i; + + for (i = 0; i < limit;) { + s32 temp_v1 = (i + limit) / 2; + + if (normalizedLengths[temp_v1] < alpha) { + i = temp_v1 + 1; + } else { + limit = temp_v1; + } + } + + if (i > 0) { + i--; + } + + lenDiff = normalizedLengths[i + 1] - normalizedLengths[i]; + diff2 = alpha - normalizedLengths[i]; + + outPos->x = (((((((vectors[i + 1].x - vectors[i].x) * diff2) / lenDiff) + (vectors[i].x * 3.0f)) * diff2) + (((staticVectors[i + 1].x - staticVectors[i].x) / lenDiff) - (((2.0f * vectors[i].x) + vectors[i + 1].x) * lenDiff))) * diff2) + staticVectors[i].x; + + outPos->y = (((((((vectors[i + 1].y - vectors[i].y) * diff2) / lenDiff) + (vectors[i].y * 3.0f)) * diff2) + (((staticVectors[i + 1].y - staticVectors[i].y) / lenDiff) - (((2.0f * vectors[i].y) + vectors[i + 1].y) * lenDiff))) * diff2) + staticVectors[i].y; + + outPos->z = (((((((vectors[i + 1].z - vectors[i].z) * diff2) / lenDiff) + (vectors[i].z * 3.0f)) * diff2) + (((staticVectors[i + 1].z - staticVectors[i].z) / lenDiff) - (((2.0f * vectors[i].z) + vectors[i + 1].z) * lenDiff))) * diff2) + staticVectors[i].z; +} s32 LoadPath(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 time = evt_get_variable(script, *args++); - s32 vectorList = evt_get_variable(script, *args++); + Vec3f* vectorList = (Vec3f*) evt_get_variable(script, *args++); s32 numVectors = evt_get_variable(script, *args++); s32 easingType = evt_get_variable(script, *args++); Path* path = heap_malloc(sizeof(Path)); - script->varTable[15] = path; + script->varTablePtr[15] = path; path->numVectors = numVectors; path->unk_04 = heap_malloc(numVectors * sizeof(f32)); path->staticVectorList = vectorList; @@ -373,31 +406,74 @@ s32 LoadPath(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "evt/f8f60_len_1560", GetNextPathPos, Evt* script, s32 isInitialCall); +ApiStatus GetNextPathPos(Evt* script, s32 isInitialCall) { + Path* path = script->varTablePtr[0xF]; + Vec3f pos; + f32 alpha; + f32 diff; + + switch (path->easingType) { + case 0: + alpha = 1.0f / path->timeLeft * path->timeElapsed; + break; + case 1: + alpha = 1.0f / SQ(path->timeLeft) * SQ(path->timeElapsed); + break; + case 4: + diff = path->timeLeft - path->timeElapsed; + alpha = 1.0f - (SQ(diff) / SQ(path->timeLeft)); + break; + case 10: + alpha = (1.0f - cos_rad((PI / path->timeLeft) * path->timeElapsed)) * 0.5f; + break; + default: + alpha = 0.0f; + break; + } + + get_path_position(alpha, &pos, path->numVectors, path->unk_04, path->staticVectorList, path->vectors); + script->varTable[1] = (pos.x * 1024.0f) + -2.3e8f; + script->varTable[2] = (pos.y * 1024.0f) + -2.3e8f; + script->varTable[3] = (pos.z * 1024.0f) + -2.3e8f; + + if (path->timeElapsed < path->timeLeft) { + path->timeElapsed = path->timeElapsed + 1; + script->varTable[0] = 1; + } else { + heap_free(path->unk_04); + heap_free(path->vectors); + heap_free(script->varTablePtr[15]); + script->varTable[0] = 0; + } + + return ApiStatus_DONE2; +} ApiStatus GetDist2D(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; + Bytecode outVar = *args++; - Bytecode outVar = *ptrReadPos++; evt_set_float_variable(script, outVar, dist2D( - evt_get_float_variable(script, *ptrReadPos++), - evt_get_float_variable(script, *ptrReadPos++), - evt_get_float_variable(script, *ptrReadPos++), - evt_get_float_variable(script, *ptrReadPos++) + evt_get_float_variable(script, *args++), + evt_get_float_variable(script, *args++), + evt_get_float_variable(script, *args++), + evt_get_float_variable(script, *args++) )); return ApiStatus_DONE2; } ApiStatus SetTimeFreezeMode(Evt* script, s32 initialCall) { - set_time_freeze_mode(evt_get_variable(script, *script->ptrReadPos)); + Bytecode* args = script->ptrReadPos; + + set_time_freeze_mode(evt_get_variable(script, *args++)); return ApiStatus_DONE2; } ApiStatus ModifyGlobalOverrideFlags(Evt* script, s32 initialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; - s32 setMode = evt_get_variable(script, *ptrReadPos++); - s32 flags = evt_get_variable(script, *ptrReadPos++); + Bytecode* args = script->ptrReadPos; + s32 setMode = evt_get_variable(script, *args++); + s32 flags = evt_get_variable(script, *args++); if (setMode) { gOverrideFlags |= flags; @@ -409,20 +485,19 @@ ApiStatus ModifyGlobalOverrideFlags(Evt* script, s32 initialCall) { } ApiStatus SetValueByRef(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - s32 dest = evt_get_variable(script, *ptrReadPos++); /* Reference */ - s32 src = evt_get_variable(script, *ptrReadPos++); + s32 dest = evt_get_variable(script, *args++); /* Reference */ + s32 src = evt_get_variable(script, *args++); evt_set_variable(script, dest, src); return ApiStatus_DONE2; } ApiStatus GetValueByRef(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; - - s32 src = evt_get_variable(script, *ptrReadPos++); /* Reference */ - Bytecode dest = *ptrReadPos++; + Bytecode* args = script->ptrReadPos; + s32 src = evt_get_variable(script, *args++); /* Reference */ + Bytecode dest = *args++; evt_set_variable(script, dest, evt_get_variable(script, src)); @@ -430,7 +505,8 @@ ApiStatus GetValueByRef(Evt* script, s32 isInitialCall) { } ApiStatus EnableStatusMenu(Evt* script, s32 isInitialCall) { - if (evt_get_variable(script, *script->ptrReadPos) != 0) { + Bytecode* args = script->ptrReadPos; + if (evt_get_variable(script, *args++) != 0) { decrement_status_menu_disabled(); } else { increment_status_menu_disabled(); @@ -440,7 +516,9 @@ ApiStatus EnableStatusMenu(Evt* script, s32 isInitialCall) { } ApiStatus ShowStatusMenu(Evt* script, s32 isInitialCall) { - if (evt_get_variable(script, *script->ptrReadPos) != 0) { + Bytecode* args = script->ptrReadPos; + + if (evt_get_variable(script, *args++) != 0) { func_800E9894(); close_status_menu(); } else { @@ -451,7 +529,8 @@ ApiStatus ShowStatusMenu(Evt* script, s32 isInitialCall) { } ApiStatus SetGameMode(Evt* script, s32 isInitialCall) { - s16 mode = evt_get_variable(script, *script->ptrReadPos); + Bytecode* args = script->ptrReadPos; + s16 mode = evt_get_variable(script, *args++); set_game_mode(mode); @@ -459,17 +538,17 @@ ApiStatus SetGameMode(Evt* script, s32 isInitialCall) { } ApiStatus ClampAngleInt(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - evt_set_variable(script, *ptrReadPos, clamp_angle(evt_get_variable(script, *ptrReadPos))); + evt_set_variable(script, *args, clamp_angle(evt_get_variable(script, *args))); return ApiStatus_DONE2; } ApiStatus ClampAngleFloat(Evt* script, s32 isInitialCall) { - Bytecode* ptrReadPos = script->ptrReadPos; + Bytecode* args = script->ptrReadPos; - evt_set_float_variable(script, *ptrReadPos, clamp_angle(evt_get_float_variable(script, *ptrReadPos))); + evt_set_float_variable(script, *args, clamp_angle(evt_get_float_variable(script, *args))); return ApiStatus_DONE2; } diff --git a/src/evt/fa4c0_len_3bf0.c b/src/evt/fa4c0_len_3bf0.c index 7db1966313..5edb7d327b 100644 --- a/src/evt/fa4c0_len_3bf0.c +++ b/src/evt/fa4c0_len_3bf0.c @@ -1,7 +1,9 @@ #include "common.h" +#include "pause/pause_common.h" +#include "hud_element.h" -extern Bytecode D_802D9D34[0]; -extern s32 D_802DB7D0; +extern EvtScript D_802D9D34; +extern s32* D_802DB7D0; extern s32 D_802DB7D8[10]; extern s32 D_802DB800[10]; s32 func_802D5B10(); @@ -17,9 +19,10 @@ EvtScript D_802D9D34 = { INCLUDE_ASM(s32, "evt/fa4c0_len_3bf0", func_802D5B10); ApiStatus func_802D5C70(Evt* script) { + Bytecode* args = script->ptrReadPos; s32 i; - D_802DB7D0 = evt_get_variable(script, *script->ptrReadPos); + D_802DB7D0 = evt_get_variable(script, *args++); for (i = 0; i < ARRAY_COUNT(D_802DB7D8); i++) { D_802DB7D8[i] = 0; @@ -477,14 +480,14 @@ ApiStatus SetItemFlags(Evt* script, s32 isInitialCall) { } return ApiStatus_DONE2; } -; + ApiStatus SetItemAlpha(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 itemEntityIndex = evt_get_variable(script, *args++); - s32 var2 = evt_get_variable(script, *args++); + s32 alpha = evt_get_variable(script, *args++); ItemEntity* itemEntity = get_item_entity(itemEntityIndex); - itemEntity->unk_2F = var2; + itemEntity->alpha = alpha; return ApiStatus_DONE2; } @@ -523,13 +526,16 @@ ApiStatus ShowGotItem(Evt* script, s32 isInitialCall) { switch (script->functionTemp[0]) { case 0: - script->functionTemp[1] = make_item_entity_at_player(evt_get_variable(script, *args++), evt_get_variable(script, *args++), *args++); + script->functionTemp[1] = make_item_entity_at_player(evt_get_variable(script, *args++), + evt_get_variable(script, *args++), + *args++); script->functionTemp[0] = 1; break; case 1: if (get_item_entity(script->functionTemp[1]) == NULL) { return ApiStatus_DONE2; } + break; } return ApiStatus_BLOCK; } diff --git a/src/evt/model_api.c b/src/evt/model_api.c index a4d83ba25d..06c9e94146 100644 --- a/src/evt/model_api.c +++ b/src/evt/model_api.c @@ -12,7 +12,36 @@ void update_animated_models(void) { } } -INCLUDE_ASM(s32, "evt/model_api", render_animated_models); +void render_animated_models(void) { + Matrix4f sp18; + Matrix4f sp58; + Matrix4f sp98; + Matrix4f spD8; + Matrix4f sp118; + Matrix4f sp158; + Matrix4f sp198; + Matrix4f sp1D8; + s32 i = 0; + Matrix4f* sp218 = &sp58; + + for (; i < MAX_ANIMATED_MODELS; i++) { + AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[i]; + + if (model->animModelID >= 0) { + guTranslateF(sp18, model->pos.x, model->pos.y, model->pos.z); + guRotateF(*sp218, model->rot.x, 1.0f, 0.0f, 0.0f); + guRotateF(sp98, model->rot.y, 0.0f, 1.0f, 0.0f); + guRotateF(spD8, model->rot.z, 0.0f, 0.0f, 1.0f); + guScaleF(sp1D8, model->scale.x, model->scale.y, model->scale.z); + guMtxCatF(spD8, *sp218, sp158); + guMtxCatF(sp158, sp98, sp118); + guMtxCatF(sp1D8, sp118, sp158); + guMtxCatF(sp158, sp18, sp198); + guMtxF2L(sp198, &model->mtx); + render_animated_model(model->animModelID, &model->mtx); + } + } +} // split here? @@ -222,7 +251,25 @@ ApiStatus SetAnimatorFlags(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "evt/model_api", reset_model_animators); +void reset_model_animators(void) { + s32 i; + + if (!gGameStatusPtr->isBattle ) { + gCurrentMeshAnimationListPtr = &gWorldMeshAnimationList; + } else { + gCurrentMeshAnimationListPtr = &gBattleMeshAnimationList; + } + + for (i = 0; i < MAX_ANIMATED_MODELS; i++) { + AnimatedModel* model = heap_malloc(sizeof(*model)); + + (*gCurrentMeshAnimationListPtr)[i] = model; + ASSERT((*gCurrentMeshAnimationListPtr)[i] != NULL); + (*gCurrentMeshAnimationListPtr)[i]->animModelID = -1; + } + + create_generic_entity_world(update_animated_models, render_animated_models); +} void init_model_animators(void) { if (!gGameStatusPtr->isBattle) { @@ -232,12 +279,92 @@ void init_model_animators(void) { } } -INCLUDE_ASM(s32, "evt/model_api", GetAnimatedNodePosition); +ApiStatus GetAnimatedNodePosition(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 listIndex = evt_get_variable(script, *args++); + s32 treeIndex = evt_get_variable(script, *args++); + s32 outX = *args++; + s32 outY = *args++; + s32 outZ = *args++; + AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[listIndex]; + AnimatorNode* node = get_animator_node_with_id(get_animator_by_index(model->animModelID), treeIndex); + f32 x, y, z; -INCLUDE_ASM(s32, "evt/model_api", GetAnimatedNodeRotation); + guMtxXFML(&model->mtx, node->pos.x, node->pos.y, node->pos.z, &x, &y, &z); + evt_set_variable(script, outX, x); + evt_set_variable(script, outY, y); + evt_set_variable(script, outZ, z); -INCLUDE_ASM(s32, "evt/model_api", GetAnimatedPositionByTreeIndex); + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "evt/model_api", GetAnimatedRotationByTreeIndex); +ApiStatus GetAnimatedNodeRotation(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 listIndex = evt_get_variable(script, *args++); + s32 treeIndex = evt_get_variable(script, *args++); + s32 outX = *args++; + s32 outY = *args++; + s32 outZ = *args++; + AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[listIndex]; + AnimatorNode* node = get_animator_node_with_id(get_animator_by_index(model->animModelID), treeIndex); -INCLUDE_ASM(s32, "evt/model_api", SetAnimatedNodeFlags); + evt_set_variable(script, outX, node->rotation.x); + evt_set_variable(script, outY, node->rotation.y); + evt_set_variable(script, outZ, node->rotation.z); + + return ApiStatus_DONE2; +} + +ApiStatus GetAnimatedPositionByTreeIndex(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 listIndex = evt_get_variable(script, *args++); + s32 treeIndex = evt_get_variable(script, *args++); + s32 outX = *args++; + s32 outY = *args++; + s32 outZ = *args++; + AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[listIndex]; + AnimatorNode* node = get_animator_node_for_tree_index(get_animator_by_index(model->animModelID), treeIndex); + f32 x, y, z; + + guMtxXFML(&model->mtx, node->pos.x, node->pos.y, node->pos.z, &x, &y, &z); + evt_set_variable(script, outX, x); + evt_set_variable(script, outY, y); + evt_set_variable(script, outZ, z); + + return ApiStatus_DONE2; +} + +ApiStatus GetAnimatedRotationByTreeIndex(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 listIndex = evt_get_variable(script, *args++); + s32 treeIndex = evt_get_variable(script, *args++); + s32 outX = *args++; + s32 outY = *args++; + s32 outZ = *args++; + AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[listIndex]; + AnimatorNode* node = get_animator_node_for_tree_index(get_animator_by_index(model->animModelID), treeIndex); + + evt_set_variable(script, outX, node->rotation.x); + evt_set_variable(script, outY, node->rotation.y); + evt_set_variable(script, outZ, node->rotation.z); + + return ApiStatus_DONE2; +} + +ApiStatus SetAnimatedNodeFlags(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 listIndex = evt_get_variable(script, *args++); + s32 id = evt_get_variable(script, *args++); + s32 flags = *args++; + s32 set = evt_get_variable(script, *args++); + ModelAnimator* animator = get_animator_by_index((*gCurrentMeshAnimationListPtr)[listIndex]->animModelID); + AnimatorNode* node = get_animator_node_with_id(animator, id); + + if (set) { + node->flags |= flags; + } else { + node->flags &= ~flags; + } + + return ApiStatus_DONE2; +} diff --git a/src/main_pre.c b/src/main_pre.c new file mode 100644 index 0000000000..929ec88b2f --- /dev/null +++ b/src/main_pre.c @@ -0,0 +1,26 @@ +#include "PR/ultratypes.h" + +s32 D_80073E00 = 0; +s32 D_80073E04 = NULL; +s16 D_80073E08 = 0; +s16 D_80073E0A = 0; + +s32 D_80073E0C = 0; // unused? + +s32 D_80073E10[] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, + 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, + 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, + 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, + 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, + 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, + 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, + 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, +}; diff --git a/src/msg.c b/src/msg.c index df5dbdb975..df9b4bf554 100644 --- a/src/msg.c +++ b/src/msg.c @@ -73,15 +73,40 @@ Gfx D_8014C368[] = { gsSPEndDisplayList(), }; -s32 D_8014C3C0[] = { 0x00010000, 0x00000000, 0x00000000, 0xFFFFF8FF, 0x00200000, 0x00000000, 0x04000000, 0xFFFFF8FF, 0x0001FFC0, 0x00000000, 0x00000800, 0xBFB8B0FF, 0x0020FFC0, 0x00000000, 0x04000800, 0xBFB8B0FF, }; +Vtx gMsgSpeechBoxLQuad[4] = { + { .v = { .ob = {1, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0x20, 0, 0}, .tc = {0x400, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0x1, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0x20, 0xFFC0, 0}, .tc = {0x400, 0x800}, .cn = {191, 184, 176, 255} } }, +}; -s32 D_8014C400[] = { 0x00200000, 0x00000000, 0x00000000, 0xFFFFF8FF, 0x00E10000, 0x00000000, 0x01000000, 0xFFFFF8FF, 0x0020FFC0, 0x00000000, 0x00000800, 0xBFB8B0FF, 0x00E1FFC0, 0x00000000, 0x01000800, 0xBFB8B0FF, }; +Vtx gMsgSpeechBoxMQuad[] = { + { .v = { .ob = {0x20, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0xE1, 0, 0}, .tc = {0x100, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0x20, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0xE1, 0xFFC0, 0}, .tc = {0x100, 0x800}, .cn = {191, 184, 176, 255} } }, +}; -s32 D_8014C440[] = { 0x00E10000, 0x00000000, 0x00000000, 0xFFFFF8FF, 0x01000000, 0x00000000, 0x04000000, 0xFFFFF8FF, 0x00E1FFC0, 0x00000000, 0x00000800, 0xBFB8B0FF, 0x0100FFC0, 0x00000000, 0x04000800, 0xBFB8B0FF, }; +Vtx gMsgSpeechBoxRQuad[] = { + { .v = { .ob = {0xE1, 0, 0}, .tc = {0, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0x100, 0, 0}, .tc = {0x400, 0}, .cn = {255, 255, 248, 255} } }, + { .v = { .ob = {0xE1, 0xFFC0, 0}, .tc = {0, 0x800}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0x100, 0xFFC0, 0}, .tc = {0x400, 0x800}, .cn = {191, 184, 176, 255} } }, +}; -s32 D_8014C480[] = { 0xFFF1001E, 0x00000000, 0x00000000, 0xBFB8B0FF, 0x000F001E, 0x00000000, 0x01E00000, 0xBFB8B0FF, 0xFFFF0000, 0x00000000, 0x000001E0, 0xBFB8B0FF, 0x00010000, 0x00000000, 0x01E001E0, 0xBFB8B0FF, }; +Vtx gMsgUnkArrowQuad[] = { + { .v = { .ob = {0xFFF1, 0x001E, 0}, .tc = {0, 0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0xF, 0x001E, 0}, .tc = {0x1E0, 0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0xFFFF, 0, 0}, .tc = {0, 0x1E0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {1, 0, 0}, .tc = {0x1E0, 0x1E0}, .cn = {191, 184, 176, 255} } }, +}; -s32 D_8014C4C0[] = { 0xFFF1001E, 0x00000000, 0x00000000, 0xBFB8B0FF, 0x000F001E, 0x00000000, 0x01E00000, 0xBFB8B0FF, 0xFFFF0000, 0x00000000, 0x000001E0, 0xBFB8B0FF, 0x00010000, 0x00000000, 0x01E001E0, 0xBFB8B0FF, }; +Vtx gMsgUnkQuad[] = { + { .v = { .ob = {0xFFF1, 0x001E, 0}, .tc = {0, 0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0xF, 0x001E, 0}, .tc = {0x1E0, 0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {0xFFFF, 0, 0}, .tc = {0, 0x1E0}, .cn = {191, 184, 176, 255} } }, + { .v = { .ob = {1, 0, 0}, .tc = {0x1E0, 0x1E0}, .cn = {191, 184, 176, 255} } }, +}; Gfx D_8014C500[] = { gsDPSetCycleType(G_CYC_1CYCLE), @@ -125,6 +150,10 @@ extern MessageDrawState* msg_drawState; // another file? extern s16 D_802EB644[22]; +extern s32 D_802EB670; +extern s32 D_802EBA70; +extern s32 D_802EBB70; +extern s32 D_802EC3F0; extern s32 D_802EC5F0; extern s32 D_802EC670; extern s32 D_802EC6F0; @@ -164,7 +193,7 @@ void msg_draw_speech_arrow(MessagePrintState* printer); void msg_draw_frame(s32 posX, s32 posY, s32 sizeX, s32 sizeY, s32 style, s32 palette, s32 fading, u8 bgAlpha, u8 frameAlpha); void msg_draw_speech_bubble(MessagePrintState* printer, s16 posX, s16 posY, s16 straightWidth, s16 curveWidth, - s32 height, f32 scaleX, f32 scaleY, u8 opacity, s32 arg9); + s16 height, f32 scaleX, f32 scaleY, u8 opacity, s32 arg9); void clear_character_set(void) { D_80155C98 = -1; @@ -716,7 +745,7 @@ MessagePrintState* _msg_get_printer_for_msg(s32 msgID, s32* donePrintingWritebac if (msgID == 0) { return NULL; } - + srcBuffer = (s8*) msgID; if (msgID >= 0) { srcBuffer = load_message_to_buffer((s32)srcBuffer); @@ -745,7 +774,7 @@ MessagePrintState* _msg_get_printer_for_msg(s32 msgID, s32* donePrintingWritebac return printer; } } - + return NULL; } @@ -2470,7 +2499,111 @@ void appendGfx_msg_prim_rect(u8 r, u8 g, u8 b, u8 a, u16 ulX, u16 ulY, u16 lrX, } } -INCLUDE_ASM(s32, "msg", msg_draw_speech_bubble); +void msg_draw_speech_bubble( + MessagePrintState* printer, + s16 posX, s16 posY, s16 straightWidth, s16 curveWidth, s16 height, f32 scaleX, f32 scaleY, u8 opacity, s32 arg9) +{ + Matrix4f sp20, sp60; + s16 temp_v0; + s16 temp_v0_2; + s32 negHeight; + + if (opacity == 255 && scaleX == 1.0 && scaleY == 1.0) { + msg_draw_prim_rect(32, 128, 240, 0, posX - 1, posY + 1, curveWidth + (straightWidth + curveWidth) + 2, height - 2); + } + + negHeight = -height; + + gMsgSpeechBoxLQuad[0].v.ob[0] = 1; + gMsgSpeechBoxLQuad[2].v.ob[0] = 1; + gMsgSpeechBoxLQuad[1].v.ob[0] = curveWidth; + gMsgSpeechBoxLQuad[3].v.ob[0] = curveWidth; + gMsgSpeechBoxLQuad[2].v.ob[1] = negHeight; + gMsgSpeechBoxLQuad[3].v.ob[1] = negHeight; + + temp_v0 = curveWidth + straightWidth; + + gMsgSpeechBoxMQuad[0].v.ob[0] = curveWidth; + gMsgSpeechBoxMQuad[2].v.ob[0] = curveWidth; + gMsgSpeechBoxMQuad[1].v.ob[0] = temp_v0; + gMsgSpeechBoxMQuad[3].v.ob[0] = temp_v0; + gMsgSpeechBoxMQuad[2].v.ob[1] = negHeight; + gMsgSpeechBoxMQuad[3].v.ob[1] = negHeight; + + temp_v0_2 = curveWidth + temp_v0; + + gMsgSpeechBoxRQuad[0].v.ob[0] = temp_v0; + gMsgSpeechBoxRQuad[2].v.ob[0] = temp_v0; + gMsgSpeechBoxRQuad[1].v.ob[0] = temp_v0_2; + gMsgSpeechBoxRQuad[3].v.ob[0] = temp_v0_2; + gMsgSpeechBoxRQuad[2].v.ob[1] = negHeight; + gMsgSpeechBoxRQuad[3].v.ob[1] = negHeight; + + guTranslateF(sp20, posX, -posY, 0.0f); + + if (scaleX != 1.0 || scaleY != 1.0) { + guScaleF(sp60, scaleX, scaleY, 1.0f); + guMtxCatF(sp60, sp20, sp20); + } + + guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); + + gSPMatrix(gMasterGfxPos++, VIRTUAL_TO_PHYSICAL(&gDisplayContext->matrixStack[gMatrixListPos++]), + G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDPPipeSync(gMasterGfxPos++); + gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE); + gSPClearGeometryMode(gMasterGfxPos++, G_CULL_BOTH | G_LIGHTING); + gSPSetGeometryMode(gMasterGfxPos++, G_SHADE | G_SHADING_SMOOTH); + gDPSetColorDither(gMasterGfxPos++, G_CD_DISABLE); + gSPTexture(gMasterGfxPos++, -1, -1, 0, G_TX_RENDERTILE, G_ON); + gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP); + + if (printer->maxLinesPerPage == 3) { + gDPSetTextureFilter(gMasterGfxPos++, G_TF_POINT); + } else { + gDPSetTextureFilter(gMasterGfxPos++, G_TF_BILERP); + } + + if (opacity >= 255) { + gDPSetRenderMode(gMasterGfxPos++, AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM), + AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)); + gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA); + } else { + gDPSetRenderMode(gMasterGfxPos++, IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + TEXEL0, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(gMasterGfxPos++, 0, 0, 32, 32, 32, opacity); + } + + gDPSetTextureLUT(gMasterGfxPos++, G_TT_RGBA16); + gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, + (msg_drawState->framePalette << 5) + (s8*)&D_802EC3F0); // TODO fix (array?) + gDPTileSync(gMasterGfxPos++); + gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 0x0100, G_TX_LOADTILE, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gMasterGfxPos++); + gDPLoadTLUTCmd(gMasterGfxPos++, G_TX_LOADTILE, 15); + gDPPipeSync(gMasterGfxPos++); + gDPLoadTextureTile_4b(gMasterGfxPos++, &D_802EB670, G_IM_FMT_CI, 32, 0, 0, 0, 31, 63, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD); + gSPVertex(gMasterGfxPos++, gMsgSpeechBoxLQuad, 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0); + gDPLoadTextureTile_4b(gMasterGfxPos++, &D_802EBA70, G_IM_FMT_CI, 8, 0, 0, 0, 7, 63, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, 6, G_TX_NOLOD, G_TX_NOLOD); + gSPVertex(gMasterGfxPos++, gMsgSpeechBoxMQuad, 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0); + gDPLoadTextureTile_4b(gMasterGfxPos++, &D_802EBB70, G_IM_FMT_CI, 32, 0, 0, 0, 31, 63, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD); + gSPVertex(gMasterGfxPos++, gMsgSpeechBoxRQuad, 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 1, 2, 3, 0); + gDPPipeSync(gMasterGfxPos++); +} INCLUDE_ASM(s32, "msg", msg_draw_speech_arrow); diff --git a/src/sprite.c b/src/sprite.c index 4a0be24327..cc6e5a8818 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -6,8 +6,8 @@ extern s32 spr_allocateBtlComponentsOnWorldHeap; extern SpriteAnimData* spr_playerSprites[13]; extern s32 spr_playerMaxComponents; extern SpriteAnimData* spr_npcSprites[0xEA]; -extern struct spr_playerCurrentAnimInfo spr_playerCurrentAnimInfo[3]; -extern struct D_802DFA48 D_802DFA48[51]; +extern PlayerCurrentAnimInfo spr_playerCurrentAnimInfo[3]; +extern SpriteInstance D_802DFA48[51]; extern u8 spr_npcSpriteInstanceCount[]; extern s32** D_802DFE44; extern s32 D_802DFE48[22]; @@ -272,26 +272,28 @@ void spr_init_sprites(s32 playerSpriteSet) { } for (i = 0; i < ARRAY_COUNT(spr_playerCurrentAnimInfo); i++) { - struct spr_playerCurrentAnimInfo* d = &spr_playerCurrentAnimInfo[i]; - d->componentList = 0; - d->animID = -1; + PlayerCurrentAnimInfo* animInfo = &spr_playerCurrentAnimInfo[i]; + + animInfo->componentList = NULL; + animInfo->animID = -1; } for (i = 0; i < ARRAY_COUNT(spr_npcSprites); i++) { s32* npcSprites = (s32*)spr_npcSprites; u8* npcSpriteInstanceCount = spr_npcSpriteInstanceCount; - npcSprites[i] = 0; + npcSprites[i] = NULL; npcSpriteInstanceCount[i] = 0; } for (i = 0; i < ARRAY_COUNT(D_802DFA48); i++) { - struct D_802DFA48* d = &D_802DFA48[i]; - d->unk_00 = 0; - d->unk_04 = 0; - d->unk_08 = 0; - d->unk_0C = -1; - d->unk_10 = 0; + SpriteInstance* sprite = &D_802DFA48[i]; + + sprite->spriteIndex = 0; + sprite->componentList = NULL; + sprite->spriteData = 0; + sprite->currentAnimID = -1; + sprite->unk_10 = 0; } spr_init_quad_cache(); // spr_init_quad_cache @@ -345,26 +347,14 @@ s32 func_802DE5C8(s32 arg0) { INCLUDE_ASM(s32, "sprite", spr_free_sprite); -typedef struct { - /* 0x00 */ char unk_00[0x4F]; - /* 0x4F */ u8 unk_4F; -} Unk802DE748_2; - -typedef struct { - /* 0x00 */ Unk802DE748_2** unk_00; - /* 0x04 */ char unk_04[0x10]; -} Unk802DE748; // size = 0x14 - -extern Unk802DE748 D_802DFA4C[]; - s32 func_802DE748(s32 arg0, s32 arg1) { - Unk802DE748_2** unk_00 = D_802DFA4C[arg0].unk_00; + SpriteComponent** componentList = D_802DFA48[arg0].componentList; - if (unk_00 == NULL) { + if (componentList == NULL) { return -1; } - return unk_00[arg1]->unk_4F; + return componentList[arg1]->unk_4F; } INCLUDE_ASM(s32, "sprite", func_802DE780); diff --git a/src/sprite.h b/src/sprite.h index abe027e0a8..f1f1ac2664 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -15,20 +15,21 @@ typedef struct SpriteComponent { /* 0x28 */ Vec3f compPos; /* 0x34 */ Vec3f rotation; /* 0x40 */ Vec3f scale; - /* 0x4C */ char unk_4C[4]; + /* 0x4C */ char unk_4C[3]; + /* 0x4F */ u8 unk_4F; } SpriteComponent; // size = 0x50 -struct spr_playerCurrentAnimInfo { +typedef struct PlayerCurrentAnimInfo { /* 0x00 */ SpriteComponent** componentList; /* 0x04 */ s32 animID; /* 0x08 */ s32 unk_08; -}; // size = 0xC +} PlayerCurrentAnimInfo; // size = 0xC -typedef struct SpriteComponentAnim { +typedef struct SpriteAnimComponent { /* 0x00 */ s16** cmdList; /* 0x04 */ s16 cmdListSize; /* 0x08 */ Vec3s compOffset; -} SpriteComponentAnim; // size = 0xC +} SpriteAnimComponent; // size = 0xC // TODO: consider moving to 101b90_len_8f0 (sprite_cache) typedef struct SpriteRasterCacheEntry { @@ -39,13 +40,21 @@ typedef struct SpriteRasterCacheEntry { /* 0x07 */ u8 quadCacheIndex; } SpriteRasterCacheEntry; // size = 0x8 -struct D_802DFA48 { - s32 unk_00; - s32 unk_04; - s32 unk_08; - s32 unk_0C; - s32 unk_10; -}; // size = 0x14 +typedef struct SpriteHeader { + /* 0x00 */ SpriteRasterCacheEntry* rasterList; + /* 0x04 */ s16** paletteList; + /* 0x08 */ s32 maxComponents; + /* 0x0C */ s32 colorVariants; + /* 0x10 */ SpriteAnimComponent* animListStart; +} SpriteHeader; // size = 0x14 + +typedef struct SpriteInstance { + /* 0x00 */ s32 spriteIndex; + /* 0x04 */ SpriteComponent** componentList; + /* 0x08 */ s32 spriteData; + /* 0x0C */ s32 currentAnimID; + /* 0x10 */ s32 unk_10; +} SpriteInstance; // size = 0x14 typedef struct PlayerSpriteSet { /// Number of cache entries. @@ -128,7 +137,7 @@ s32 spr_sign_extend_12bit(u16 val); s32 spr_sign_extend_16bit(u16 val); -void spr_component_update_commands(SpriteComponent* comp, SpriteComponentAnim* anim); +void spr_component_update_commands(SpriteComponent* comp, SpriteAnimComponent* anim); void spr_component_update_finish( SpriteComponent* comp, diff --git a/src/world/action/18.c b/src/world/action/18.c index 263d76c969..7f3b36a45f 100644 --- a/src/world/action/18.c +++ b/src/world/action/18.c @@ -46,7 +46,7 @@ void func_802B6000_E245D0(void) { func_802B6198_E24768(); } playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->gravityIntegrator[0] = 17.7566f; playerStatus->gravityIntegrator[1] = -11.3862f; diff --git a/src/world/action/encounter.c b/src/world/action/encounter.c index d264bad101..9ba83161f9 100644 --- a/src/world/action/encounter.c +++ b/src/world/action/encounter.c @@ -16,7 +16,7 @@ void func_802B6000_E28A30(void) { ); playerStatus->fallState = 0; playerStatus->framesOnGround = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; playerStatus->unk_8C = 0.0f; @@ -67,7 +67,7 @@ void func_802B609C_E28ACC(void) { playerStatus->flags &= ~(0x80080000 | 0x80000 | 0x8 | 0x4 | 0x2); playerStatus->fallState = 0; playerStatus->framesOnGround = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; playerStatus->unk_8C = 0.0f; @@ -142,7 +142,7 @@ void func_802B6350_E28D80(void) { playerStatus->flags &= ~(0x80000000 | 0x80000 | 0x8 | 0x4 | 0x2); playerStatus->fallState = 0; playerStatus->currentStateTime = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; playerStatus->pitch = 0.0f; @@ -165,7 +165,7 @@ void func_802B63D4_E28E04(void) { if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) { playerStatus->flags &= ~(0x80000000 | 0x8 | 0x4 | 0x2); playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; playerStatus->pitch = 0.0f; diff --git a/src/world/action/hit_lava.c b/src/world/action/hit_lava.c index 73564d35cd..643b9461d2 100644 --- a/src/world/action/hit_lava.c +++ b/src/world/action/hit_lava.c @@ -55,11 +55,11 @@ void func_802B6000_E27F40(void) { break; case 0: if (playerStatus->unk_BF == 1) { - fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 1.0f, 0x28); + fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 1.0f, 40); } suggest_player_anim_setUnkFlag(0x80000 | 2); playerStatus->gravityIntegrator[1] = 0.0f; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->fallState = 2; playerStatus->currentStateTime = 1; @@ -77,7 +77,7 @@ void func_802B6000_E27F40(void) { } break; case 2: - if (playerStatus->unk_BF == 1 && !(playerStatus->decorationList & DECORATION_GOLDEN_FLAMES)) { + if (playerStatus->unk_BF == 1 && (playerStatus->timeInAir % 2) == 0) { fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 0.7f, 18); } if (playerStatus->position.y < playerStatus->gravityIntegrator[3] + playerStatus->gravityIntegrator[2]) { @@ -98,10 +98,8 @@ void func_802B6000_E27F40(void) { } break; case 3: - if (playerStatus->unk_BF == 1) { - if (!(playerStatus->decorationList & DECORATION_GOLDEN_FLAMES)) { - fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 0.7f, 18); - } + if (playerStatus->unk_BF == 1 && (playerStatus->timeInAir % 2) == 0) { + fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 0.7f, 18); } if (get_lava_reset_pos(&sp20, &sp24, &sp28) == 0) { sp20 = playerStatus->position.x; @@ -156,7 +154,7 @@ void func_802B6000_E27F40(void) { } break; case 6: - if (playerStatus->unk_BF == 1 && (playerStatus->decorationList & DECORATION_GOLDEN_FLAMES) == 0) { + if (playerStatus->unk_BF == 1 && (playerStatus->timeInAir % 2) == 0) { fx_smoke_burst(0, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z, 0.7f, 18); } playerStatus->position.y = player_check_collision_below(func_800E34D8(), &sp2C); @@ -193,6 +191,6 @@ void func_802B6000_E27F40(void) { break; } if (playerStatus->fallState < 7) { - playerStatus->decorationList++; + playerStatus->timeInAir++; } } diff --git a/src/world/action/idle.c b/src/world/action/idle.c index 211052efc3..17500e8331 100644 --- a/src/world/action/idle.c +++ b/src/world/action/idle.c @@ -41,7 +41,7 @@ void action_idle_update(void) { if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) { s32 anim; - playerStatus->flags &= + playerStatus->flags &= ~(PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED | PLAYER_STATUS_FLAGS_80000 | PLAYER_STATUS_FLAGS_JUMPING @@ -50,7 +50,7 @@ void action_idle_update(void) { wasMoving = TRUE; playerStatus->fallState = 0; playerStatus->currentStateTime = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; playerStatus->pitch = 0.0f; @@ -105,10 +105,10 @@ void action_idle_update_peach(void) { playerStatus->flags &= ~PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED; playerStatus->fallState = 0; playerStatus->currentStateTime = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0.0f; - playerStatus->flags &= + playerStatus->flags &= ~(PLAYER_STATUS_FLAGS_JUMPING | PLAYER_STATUS_FLAGS_FALLING | PLAYER_STATUS_FLAGS_FLYING); diff --git a/src/world/action/jump.c b/src/world/action/jump.c index bdcfb88bf5..c176e71b52 100644 --- a/src/world/action/jump.c +++ b/src/world/action/jump.c @@ -12,7 +12,7 @@ void func_802B6000_E24040(void) { s32 temp_v1; playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->flags &= ~0x80000008; playerStatus->flags |= 2; @@ -68,7 +68,7 @@ void func_802B60B4_E240F4(void) { } suggest_player_anim_clearUnkFlag(anim); - playerStatus->decorationList++; + playerStatus->timeInAir++; } void func_802B6198_E241D8(void) { @@ -86,7 +86,7 @@ void func_802B6198_E241D8(void) { disable_player_input(); } - playerStatus->decorationList++; + playerStatus->timeInAir++; if (playerStatus->fallState != 1) { return; @@ -134,7 +134,7 @@ void func_802B6294_E242D4(void) { suggest_player_anim_clearUnkFlag(phi_a0); gCameras[CAM_DEFAULT].moveFlags |= CAMERA_MOVE_FLAGS_1; } - playerStatus->decorationList++; + playerStatus->timeInAir++; } void func_802B6348_E24388(void) { @@ -159,7 +159,7 @@ void func_802B6348_E24388(void) { gCameras[CAM_DEFAULT].moveFlags |= CAMERA_MOVE_FLAGS_1; } - playerStatus->decorationList++; + playerStatus->timeInAir++; phys_update_interact_collider(); sp28 = playerStatus->position.x; sp2C = playerStatus->position.y; @@ -193,7 +193,7 @@ void func_802B647C_E244BC(void) { suggest_player_anim_clearUnkFlag(temp_v1); gCameras[CAM_DEFAULT].moveFlags |= CAMERA_MOVE_FLAGS_1; } - playerStatus->decorationList++; + playerStatus->timeInAir++; } void func_802B6508_E24548(void) { @@ -209,6 +209,6 @@ void func_802B6508_E24548(void) { suggest_player_anim_clearUnkFlag(0xA0006); } } - playerStatus->decorationList++; + playerStatus->timeInAir++; phys_update_interact_collider(); } diff --git a/src/world/action/land.c b/src/world/action/land.c index b3593a5dbe..1d9fe0a4aa 100644 --- a/src/world/action/land.c +++ b/src/world/action/land.c @@ -27,7 +27,7 @@ void func_802B6000_E24920(void) { PLAYER_STATUS_FLAGS_JUMPING ); playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->landPos.x = playerStatus->position.x; playerStatus->landPos.z = playerStatus->position.z; @@ -91,7 +91,7 @@ void func_802B61C0_E24AE0(void) { PLAYER_STATUS_FLAGS_JUMPING ); playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->landPos.x = playerStatus->position.x; playerStatus->landPos.z = playerStatus->position.z; @@ -125,7 +125,7 @@ void func_802B62CC_E24BEC(void) { if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) { playerStatus->flags &= ~PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED; playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->flags &= ~(PLAYER_STATUS_FLAGS_FLYING | PLAYER_STATUS_FLAGS_FALLING | PLAYER_STATUS_FLAGS_JUMPING); playerStatus->landPos.x = playerStatus->position.x; @@ -169,7 +169,7 @@ void func_802B644C_E24D6C(void) { if (playerStatus->flags & PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED) { playerStatus->flags &= ~PLAYER_STATUS_FLAGS_ACTION_STATE_CHANGED; playerStatus->fallState = 0; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->flags &= ~(PLAYER_STATUS_FLAGS_FLYING | PLAYER_STATUS_FLAGS_FALLING | PLAYER_STATUS_FLAGS_JUMPING); playerStatus->landPos.x = playerStatus->position.x; diff --git a/src/world/action/sneaky_parasol.c b/src/world/action/sneaky_parasol.c index a3b5fcc57e..59ff7d2d66 100644 --- a/src/world/action/sneaky_parasol.c +++ b/src/world/action/sneaky_parasol.c @@ -68,7 +68,7 @@ void func_802B6120_E2A7D0(void) { mem_clear(&D_802B6E80, sizeof(D_802B6E80)); disable_player_static_collisions(); tempUnk_1C = ¶solStruct->unk_1C; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_C2 = 0; playerStatus->currentSpeed = 0; playerStatus->pitch = 0; diff --git a/src/world/action/super_boots.c b/src/world/action/super_boots.c index 8c81dd9745..1d4b922310 100644 --- a/src/world/action/super_boots.c +++ b/src/world/action/super_boots.c @@ -118,7 +118,7 @@ void func_802B6000_E26DE0(void) { playerStatus->gravityIntegrator[0] = 10.0f; suggest_player_anim_clearUnkFlag(0x1000B); playerStatus->actionState = ACTION_STATE_GROUND_POUND; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->unk_280 = 0xC; playerStatus->pitch = 0.0f; playerStatus->fallState++; diff --git a/src/world/action/ultra_boots.c b/src/world/action/ultra_boots.c index 4c810b196d..4dedeea93c 100644 --- a/src/world/action/ultra_boots.c +++ b/src/world/action/ultra_boots.c @@ -133,7 +133,7 @@ void func_802B6000_E26710(void) { return; } playerStatus->currentStateTime = 8; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; playerStatus->actionState = 0x10; playerStatus->fallState++; exec_ShakeCam1(0, 0, 4); diff --git a/src/world/area_obk/obk_01/BBD1A0.c b/src/world/area_obk/obk_01/BBD1A0.c index 39198d35a8..01edebae64 100644 --- a/src/world/area_obk/obk_01/BBD1A0.c +++ b/src/world/area_obk/obk_01/BBD1A0.c @@ -23,8 +23,8 @@ INCLUDE_ASM(s32, "world/area_obk/obk_01/BBD1A0", func_80240730_BBD8D0); ApiStatus func_80240790_BBD930(Evt* script, s32 isInitialCall) { ItemEntity* item = get_item_entity(script->varTable[0]); - + set_item_entity_flags(script->varTable[0], 0x80000); - item->unk_2F = -1; + item->alpha = -1; return ApiStatus_DONE2; } diff --git a/src/world/area_pra/pra_04/D54840.c b/src/world/area_pra/pra_04/D54840.c index 0e354bb9ce..4320e7c1c4 100644 --- a/src/world/area_pra/pra_04/D54840.c +++ b/src/world/area_pra/pra_04/D54840.c @@ -1,3 +1,3 @@ #include "pra_04.h" -INCLUDE_ASM(s32, "world/area_pra/pra_04/D54840", func_802401B0_D54840); +#include "world/common/UnkFunc001.inc.c" diff --git a/src/world/area_pra/pra_10/D5F2D0.c b/src/world/area_pra/pra_10/D5F2D0.c index 2e3c6cd52c..a91fca8a29 100644 --- a/src/world/area_pra/pra_10/D5F2D0.c +++ b/src/world/area_pra/pra_10/D5F2D0.c @@ -2,4 +2,4 @@ #include "world/common/atomic/Reflection.inc.c" -INCLUDE_ASM(s32, "world/area_pra/pra_10/D5F2D0", func_80240F20_D601D0); +#include "world/common/UnkFunc001.inc.c" diff --git a/src/world/area_pra/pra_38/D955F0.c b/src/world/area_pra/pra_38/D955F0.c index ee4030554a..7692b3def5 100644 --- a/src/world/area_pra/pra_38/D955F0.c +++ b/src/world/area_pra/pra_38/D955F0.c @@ -4,4 +4,4 @@ INCLUDE_ASM(s32, "world/area_pra/pra_38/D955F0", func_80240000_D955F0); #include "world/common/atomic/Reflection.inc.c" -INCLUDE_ASM(s32, "world/area_pra/pra_38/D955F0", func_80240F50_D96540); +#include "world/common/UnkFunc001.inc.c" diff --git a/src/world/area_pra/pra_39/D97890.c b/src/world/area_pra/pra_39/D97890.c index 2e69615c36..f288082e94 100644 --- a/src/world/area_pra/pra_39/D97890.c +++ b/src/world/area_pra/pra_39/D97890.c @@ -4,4 +4,4 @@ INCLUDE_ASM(s32, "world/area_pra/pra_39/D97890", func_80240000_D97890); #include "world/common/atomic/Reflection.inc.c" -INCLUDE_ASM(s32, "world/area_pra/pra_39/D97890", func_80240F50_D987E0); +#include "world/common/UnkFunc001.inc.c" diff --git a/src/world/common/UnkFunc001.inc.c b/src/world/common/UnkFunc001.inc.c new file mode 100644 index 0000000000..9f66912a30 --- /dev/null +++ b/src/world/common/UnkFunc001.inc.c @@ -0,0 +1,188 @@ +#include "common.h" +#include "npc.h" + +ApiStatus N(UnkFunc001)(Evt* script, s32 isInitialCall) { + EnemyDetectVolume detectVolume; + PlayerStatus* playerStatus = &gPlayerStatus; + EnemyDetectVolume* detectVolumePtr = &detectVolume; + Enemy* enemy = script->owner1.enemy; + Npc* npc = get_npc_unsafe(enemy->npcID); + Bytecode* args = script->ptrReadPos; + NpcAISettings* aiSettings = (NpcAISettings*)evt_get_variable(script, *args++); + f32 x, y, z, hitDepth; + f32 y2; + + detectVolumePtr->skipPlayerDetectChance = 0; + detectVolumePtr->shape = enemy->territory->wander.detectShape; + detectVolumePtr->pointX = enemy->territory->wander.detect.x; + detectVolumePtr->pointZ = enemy->territory->wander.detect.z; + detectVolumePtr->sizeX = enemy->territory->wander.detectSizeX; + detectVolumePtr->sizeZ = enemy->territory->wander.detectSizeZ; + detectVolumePtr->halfHeight = 500.0f; + detectVolumePtr->detectFlags = 0; + + if (isInitialCall) { + script->functionTemp[0] = 0; + npc->duration = 0; + enemy->aiFlags |= 0x10; + hitDepth = 1000.0f; + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + npc_raycast_down_sides(npc->collisionChannel, &x, &y, &z, &hitDepth); + enemy->varTable[1] = y; + } + + if (enemy->aiFlags & 4) { + if (enemy->aiPaused == 0) { + enemy->aiFlags &= ~4; + } else { + return ApiStatus_BLOCK; + } + } + + switch (script->functionTemp[0]) { + case 0: + npc->currentAnim.w = enemy->animList[0]; + npc->verticalRenderOffset = npc->collisionHeight; + npc->flags |= NPC_FLAG_UPSIDE_DOWN; + script->functionTemp[1] = 0; + script->functionTemp[0] = 1; + case 1: + if (aiSettings->playerSearchInterval >= 0) { + if (script->functionTemp[1] <= 0) { + script->functionTemp[1] = aiSettings->playerSearchInterval; + if (basic_ai_check_player_dist(detectVolumePtr, enemy, aiSettings->alertRadius, aiSettings->alertOffsetDist, 0) != 0) { + ai_enemy_play_sound(npc, SOUND_2F4, 0x200000); + script->functionTemp[0] = 10; + } + } + script->functionTemp[1]--; + } + if (script->functionTemp[0] != 10) { + break; + } + case 10: + npc->currentAnim.w = enemy->animList[3]; + npc->planarFlyDist = atan2(npc->pos.x, npc->pos.z, playerStatus->position.x, playerStatus->position.z); + npc->jumpScale = 1.3f; + npc->jumpVelocity = 0.0f; + npc->moveSpeed = aiSettings->moveSpeed; + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + hitDepth = 1000.0f; + if (npc_raycast_down_sides(npc->collisionChannel, &x, &y, &z, &hitDepth) != 0) { + y = enemy->varTable[1]; + npc->moveToPos.y = y + ((npc->pos.y - y) * 0.7); + } else { + npc->moveToPos.y = playerStatus->position.y + ((npc->pos.y - playerStatus->position.y) * 0.7); + } + npc->moveToPos.z = npc->pos.y; + script->functionTemp[0] = 11; + case 11: + if (npc->moveSpeed > 0.0) { + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + if (npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, npc->moveSpeed, npc->yaw, npc->collisionHeight, npc->collisionRadius) != 0) { + npc->moveSpeed = 0.0f; + } + npc->yaw = atan2(npc->pos.x, npc->pos.z, playerStatus->position.x, playerStatus->position.z); + npc_move_heading(npc, npc->moveSpeed, npc->yaw); + } + + npc->jumpVelocity -= npc->jumpScale; + npc->pos.y += npc->jumpVelocity; + if (npc->pos.y < npc->moveToPos.y) { + npc->pos.y = npc->moveToPos.y; + script->functionTemp[0] = 12; + } else { + break; + } + case 12: + npc->planarFlyDist = dist2D(npc->pos.x, npc->pos.z, playerStatus->position.x, playerStatus->position.z); + if (npc->planarFlyDist < 60.0f) { + npc->planarFlyDist = 60.0f; + } + + y = enemy->varTable[1]; + y2 = (y + 10.0) - npc->pos.y; + + npc->moveSpeed = aiSettings->chaseSpeed; + npc->duration = npc->planarFlyDist / npc->moveSpeed; + if (npc->duration == 0) { + npc->duration = 1; + } + npc->jumpScale = -fabsf(-(2.0f * ((-npc->jumpVelocity * npc->duration) + y2)) / SQ(npc->duration)); + npc->verticalRenderOffset = 0; + npc->flags &= ~NPC_FLAG_UPSIDE_DOWN; + enemy->varTable[0] = 5; + npc->duration = 0; + script->functionTemp[0] = 13; + case 13: + npc->jumpVelocity -= npc->jumpScale; + if (npc->jumpVelocity < 0.0f) { + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + hitDepth = -npc->jumpVelocity; + if (npc_raycast_down_sides(npc->collisionChannel, &x, &y, &z, &hitDepth) != 0) { + npc->jumpVelocity = 0.0f; + } + } + + npc->pos.y += npc->jumpVelocity; + if (npc->moveSpeed > 0.0) { + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + if (npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, npc->moveSpeed, npc->yaw, + npc->collisionHeight, npc->collisionRadius) != 0) + { + npc->moveSpeed = 0.0f; + } else if (npc->jumpVelocity < -2.5) { + npc->duration++; + if (npc->duration >= aiSettings->chaseUpdateInterval) { + f32 yaw = atan2(npc->pos.x, npc->pos.z, playerStatus->position.x, playerStatus->position.z); + f32 angleDiff = get_clamped_angle_diff(npc->yaw, yaw); + + if (aiSettings->chaseTurnRate < fabsf(angleDiff)) { + yaw = npc->yaw; + if (angleDiff < 0.0f) { + yaw += -aiSettings->chaseTurnRate; + } else { + yaw += aiSettings->chaseTurnRate; + } + } + npc->yaw = clamp_angle(yaw); + npc->duration = 0; + } + } + npc_move_heading(npc, npc->moveSpeed, npc->yaw); + } + enemy->varTable[0]--; + if (enemy->varTable[0] <= 0) { + enemy->varTable[0] = 5; + } + + if (npc->pos.y > npc->moveToPos.z) { + npc->pos.y = npc->moveToPos.z; + script->functionTemp[0] = 14; + } else { + break; + } + case 14: + npc->currentAnim.w = enemy->animList[8]; + npc->verticalRenderOffset = npc->collisionHeight; + npc->flags |= NPC_FLAG_UPSIDE_DOWN; + npc->duration = 15; + script->functionTemp[0] = 15; + case 15: + npc->duration--; + if (npc->duration <= 0) { + script->functionTemp[0] = 0; + } + } + return ApiStatus_BLOCK; +} diff --git a/src/world/partner/kooper.c b/src/world/partner/kooper.c index 0273ae4a4a..dc358a6b20 100644 --- a/src/world/partner/kooper.c +++ b/src/world/partner/kooper.c @@ -223,7 +223,7 @@ ApiStatus func_802BD638_31B658(Evt* script, s32 isInitialCall) { switch (script->functionTemp[0]) { case 20: if (playerStatus->inputEnabledCounter == 0) { - if (playerStatus->decorationList == 0) { + if (playerStatus->timeInAir == 0) { if (kooper->flags & 0x1000) { disable_player_input(); script->functionTemp[2] = playerStatus->inputEnabledCounter; @@ -253,7 +253,7 @@ ApiStatus func_802BD638_31B658(Evt* script, s32 isInitialCall) { case 21: //TODO: make if statement less bad - if ((((u8)playerStatus->actionState - 0x15) < 3U) || (playerStatus->decorationList != 0)) { + if ((((u8)playerStatus->actionState - 0x15) < 3U) || (playerStatus->timeInAir != 0)) { suggest_player_anim_clearUnkFlag(0x10002); script->functionTemp[0] = 0; break; diff --git a/src/world/partner/lakilester.c b/src/world/partner/lakilester.c index c9716fce79..62e6d19411 100644 --- a/src/world/partner/lakilester.c +++ b/src/world/partner/lakilester.c @@ -496,7 +496,7 @@ void func_802BDDD8_321928(Npc* npc) { npc->moveToPos.x = x; npc->moveToPos.z = z; npc->jumpScale = 0.0f; - playerStatus->decorationList = 0; + playerStatus->timeInAir = 0; if ((get_collider_type_by_id(raycastBelowResult) & 0xFF) == 3) { @@ -510,7 +510,7 @@ void func_802BDDD8_321928(Npc* npc) { } collisionStatus->currentFloor = -1; - playerStatus->decorationList = playerStatus->decorationList + 1; + playerStatus->timeInAir++; npc->currentFloor = -1; npc->jumpScale += 1.8; diff --git a/tools/build/configure.py b/tools/build/configure.py index b38656e73e..49d6351d98 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -412,7 +412,7 @@ class Configure: if seg.flip_vertical: flags += "--flip-y " - src_paths = [seg.out_path()] + src_paths = [seg.out_path().relative_to(ROOT)] inc_dir = self.build_path() / "include" / seg.dir bin_path = self.build_path() / seg.dir / (seg.name + ".png.bin") @@ -424,7 +424,7 @@ class Configure: build(inc_dir / (seg.name + ".png.h"), src_paths, "img_header") build(inc_dir / (seg.name + ".png.inc.c"), [bin_path], "bin_inc_c") elif isinstance(seg, segtypes.n64.palette.N64SegPalette): - src_paths = [seg.out_path()] + src_paths = [seg.out_path().relative_to(ROOT)] inc_dir = self.build_path() / "include" / seg.dir bin_path = self.build_path() / seg.dir / (seg.name + ".pal.bin") diff --git a/tools/splat/.github/workflows/mypy.yml b/tools/splat/.github/workflows/mypy.yml index 3cfd2018cf..7c786dd0b7 100644 --- a/tools/splat/.github/workflows/mypy.yml +++ b/tools/splat/.github/workflows/mypy.yml @@ -2,14 +2,11 @@ name: mypy on: push: - branches: [master] pull_request: - branches: [master] jobs: - mypy: + checks: runs-on: ubuntu-latest - name: mypy steps: - uses: actions/checkout@v1 @@ -20,8 +17,10 @@ jobs: - name: Install Dependencies run: | pip install mypy + pip install black pip install -r requirements.txt pip install types-PyYAML - name: mypy - run: | - mypy --show-column-numbers --hide-error-context . \ No newline at end of file + run: mypy --show-column-numbers --hide-error-context . + - name: black + run: black . diff --git a/tools/splat/.gitignore b/tools/splat/.gitignore index d3c5510c6b..38da5f7169 100644 --- a/tools/splat/.gitignore +++ b/tools/splat/.gitignore @@ -4,3 +4,7 @@ venv/ __pycache__/ .mypy_cache/ util/n64/Yay0decompress +*.ld +*.n64 +*.yaml +*.z64 diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index 85186c61c7..3231d7a49f 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = e5838f0b063425e843d44091b8654962995829bd - parent = a1965af227c11f4dde5a7114352db3d24f0bc6a9 + commit = a847090eac32ef0d9cf183cd8f04e2452a0e250b + parent = 3e71bb8cea31e9e5a87f2f251e99d55daa0f902e method = merge cmdver = 0.4.3 diff --git a/tools/splat/CHANGELOG.md b/tools/splat/CHANGELOG.md index f79131e372..e2531cd5e3 100644 --- a/tools/splat/CHANGELOG.md +++ b/tools/splat/CHANGELOG.md @@ -1,5 +1,12 @@ # splat Release Notes +## 0.8.0: Arbitrary Section Order +* You can now use the option `section_order` to define the binary section order for your target binary. By default, this is `[".text", ".data", ".rodata", ".bss"]`. See options.py for more details +* Documented all options in options.py +* Support for SN64 games (thanks Wiseguy!) +* More consistent handling of paths (thanks Mkst!) +* Various other cleanup and fixes across the board + ### 0.7.10: WIP PSX support * WIP PSX support has been added, thanks to @mkst! (https://github.com/ethteck/splat/pull/99) * Many segments have moved to a "common" package diff --git a/tools/splat/LICENSE b/tools/splat/LICENSE new file mode 100644 index 0000000000..42621fb707 --- /dev/null +++ b/tools/splat/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Ethan Roseman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/splat/README.md b/tools/splat/README.md index 434f797bcf..0afbefdbe4 100644 --- a/tools/splat/README.md +++ b/tools/splat/README.md @@ -1,10 +1,11 @@ # splat A binary splitting tool to assist with decompilation and modding projects -Currently, only N64 roms in the .z64 format are supported. +Currently, only N64 and PSX binaries are supported. -For example usage, see https://github.com/pmret/papermario -The Makefile `setup` target calls splat with a config file that you can use for reference. More documentation coming soon. +The Makefile `setup` target calls splat with a config file that you can use for reference. + +Please check out the [wiki](https://github.com/ethteck/splat/wiki) for more information including [examples](https://github.com/ethteck/splat/wiki/Examples) of projects that use splat. ### Requirements Python package requirements can be installed via `pip3 install -r requirements.txt` diff --git a/tools/splat/create_config.py b/tools/splat/create_config.py index c9d184e6f7..f11a9b0e92 100755 --- a/tools/splat/create_config.py +++ b/tools/splat/create_config.py @@ -1,11 +1,12 @@ #! /usr/bin/env python3 import argparse +from pathlib import Path + from util.n64 import rominfo, find_code_length -parser = argparse.ArgumentParser(description="Create a splat config from a ROM. " - "Only n64 .z64 ROMs are supported") -parser.add_argument("rom", help="Path to a .z64 ROM") +parser = argparse.ArgumentParser(description="Create a splat config from an N64 ROM.") +parser.add_argument("rom", help="Path to a .z64/.n64 ROM") def main(rom_path): @@ -17,10 +18,11 @@ name: {rom.name.title()} ({rom.get_country_name()}) sha1: {rom.sha1} options: basename: {basename} - target_path: {rom_path} + target_path: {rom_path.with_suffix(".z64")} base_path: . compiler: {rom.compiler} find_file_boundaries: True + header_encoding: {rom.header_encoding} # platform: n64 # undefined_funcs_auto_path: undefined_funcs_auto.txt # undefined_syms_auto_path: undefined_syms_auto.txt @@ -57,10 +59,12 @@ segments: - [0x{rom.size:X}] """.lstrip() - with open(basename + ".yaml", "w", newline="\n") as f: + out_file = f"{basename}.yaml" + with open(out_file, "w", newline="\n") as f: + print(f"Writing config to {out_file}") f.write(header + segments) if __name__ == "__main__": args = parser.parse_args() - main(args.rom) + main(Path(args.rom)) diff --git a/tools/splat/segtypes/address_range.py b/tools/splat/segtypes/address_range.py index e1bf995636..0c57cc0d94 100644 --- a/tools/splat/segtypes/address_range.py +++ b/tools/splat/segtypes/address_range.py @@ -1,9 +1,10 @@ from dataclasses import dataclass + @dataclass class AddressRange: start: int end: int - + def contains(self, addr: int) -> bool: - return self.start <= addr < self.end \ No newline at end of file + return self.start <= addr < self.end diff --git a/tools/splat/segtypes/common/asm.py b/tools/splat/segtypes/common/asm.py index fbfcac1576..0490e61294 100644 --- a/tools/splat/segtypes/common/asm.py +++ b/tools/splat/segtypes/common/asm.py @@ -10,8 +10,12 @@ class CommonSegAsm(CommonSegCodeSubsegment): return options.get_asm_path() / self.dir / f"{self.name}.s" def scan(self, rom_bytes: bytes): - if self.rom_start != "auto" and self.rom_end != "auto" and self.rom_start != self.rom_end: - self.funcs_text = self.disassemble_code(rom_bytes, options.get("asm_endlabels", False)) + if ( + self.rom_start != "auto" + and self.rom_end != "auto" + and self.rom_start != self.rom_end + ): + self.funcs_text = self.scan_code(rom_bytes, is_asm=True) def get_file_header(self): return [] @@ -23,6 +27,9 @@ class CommonSegAsm(CommonSegCodeSubsegment): out_path.parent.mkdir(parents=True, exist_ok=True) out_lines = self.get_file_header() + + self.funcs_text = self.split_code(rom_bytes) + for func in self.funcs_text: out_lines.extend(self.funcs_text[func][0]) out_lines.append("") diff --git a/tools/splat/segtypes/common/bin.py b/tools/splat/segtypes/common/bin.py index 028310ecc3..4dcd866a22 100644 --- a/tools/splat/segtypes/common/bin.py +++ b/tools/splat/segtypes/common/bin.py @@ -4,6 +4,7 @@ from segtypes.common.segment import CommonSegment from util import options from util import log + class CommonSegBin(CommonSegment): def out_path(self) -> Optional[Path]: return options.get_asset_path() / self.dir / f"{self.name}.bin" @@ -13,7 +14,9 @@ class CommonSegBin(CommonSegment): path.parent.mkdir(parents=True, exist_ok=True) if self.rom_end == "auto": - log.error(f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it") + log.error( + f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" + ) with open(path, "wb") as f: f.write(rom_bytes[self.rom_start : self.rom_end]) diff --git a/tools/splat/segtypes/common/bss.py b/tools/splat/segtypes/common/bss.py index fbd1f89f75..35bbfef6f7 100644 --- a/tools/splat/segtypes/common/bss.py +++ b/tools/splat/segtypes/common/bss.py @@ -1,5 +1,6 @@ from segtypes.common.data import CommonSegData -from util import log +from util import options, log + class CommonSegBss(CommonSegData): def get_linker_section(self) -> str: @@ -17,6 +18,6 @@ class CommonSegBss(CommonSegData): if self.sibling: path = self.sibling.out_path() else: - log.error("Unlinked bss sections currently unsupported") + path = options.get_src_path() / self.name return [LinkerEntry(self, [path], path, self.get_linker_section())] diff --git a/tools/splat/segtypes/common/c.py b/tools/splat/segtypes/common/c.py index c2cd6573c9..bfca20e792 100644 --- a/tools/splat/segtypes/common/c.py +++ b/tools/splat/segtypes/common/c.py @@ -6,6 +6,8 @@ import re from pathlib import Path from util import log, options +from util.compiler import GCC, SN64 +from util.symbols import Symbol class CommonSegC(CommonSegCodeSubsegment): @@ -14,17 +16,15 @@ class CommonSegC(CommonSegCodeSubsegment): STRIP_C_COMMENTS_RE = re.compile( r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', - re.DOTALL | re.MULTILINE + re.DOTALL | re.MULTILINE, ) C_FUNC_RE = re.compile( - r"^(static\s+)?[^\s]+\s+([^\s(]+)\(([^;)]*)\)[^;]+?{", - re.MULTILINE + r"^(?:static\s+)?[^\s]+\s+([^\s(]+)\(([^;)]*)\)[^;]+?{", re.MULTILINE ) - C_GLOBAL_ASM_RE = re.compile( - r"(INCLUDE|GLOBAL)_ASM\(\"(\w+\/)*(\w+)\.s\"\)", - re.MULTILINE + C_GLOBAL_ASM_IDO_RE = re.compile( + r"GLOBAL_ASM\(\"(\w+\/)*(\w+)\.s\"\)", re.MULTILINE ) @staticmethod @@ -35,6 +35,7 @@ class CommonSegC(CommonSegCodeSubsegment): return " " else: return s + return re.sub(CommonSegC.STRIP_C_COMMENTS_RE, replacer, text) @staticmethod @@ -42,60 +43,105 @@ class CommonSegC(CommonSegCodeSubsegment): with open(c_file, "r") as f: text = CommonSegC.strip_c_comments(f.read()) - return set(m.group(2) for m in CommonSegC.C_FUNC_RE.finditer(text)) + return set(m.group(1) for m in CommonSegC.C_FUNC_RE.finditer(text)) + + @staticmethod + def find_all_instances(str, sub): + start = 0 + while True: + start = str.find(sub, start) + if start == -1: + return + yield start + start += len(sub) + + @staticmethod + def get_close_parenthesis(str, pos): + paren_count = 0 + while True: + cur_char = str[pos] + if cur_char == "(": + paren_count += 1 + elif cur_char == ")": + if paren_count == 0: + return pos + 1 + else: + paren_count -= 1 + pos += 1 + + @staticmethod + def find_include_asm(text: str): + for pos in CommonSegC.find_all_instances(text, "INCLUDE_ASM("): + close_paren_pos = CommonSegC.get_close_parenthesis( + text, pos + len("INCLUDE_ASM(") + ) + macro_contents = text[pos:close_paren_pos] + macro_args = macro_contents.split(",") + if options.get_use_legacy_include_asm(): + if len(macro_args) >= 3: + yield macro_args[2].strip(" )") + else: + if len(macro_args) >= 2: + yield macro_args[1].strip(" )") @staticmethod def get_global_asm_funcs(c_file): with open(c_file, "r") as f: text = CommonSegC.strip_c_comments(f.read()) - return set(m.group(3) for m in CommonSegC.C_GLOBAL_ASM_RE.finditer(text)) + if options.get_compiler() in [GCC, SN64]: + return set(CommonSegC.find_include_asm(text)) + else: + return set( + m.group(2) for m in CommonSegC.C_GLOBAL_ASM_IDO_RE.finditer(text) + ) def out_path(self) -> Optional[Path]: return options.get_src_path() / self.dir / f"{self.name}.c" def scan(self, rom_bytes: bytes): - if self.rom_start is not None and self.rom_end is not None and self.rom_start != self.rom_end: + if ( + self.rom_start is not None + and self.rom_end is not None + and self.rom_start != self.rom_end + ): path = self.out_path() if path: - if options.get("do_c_func_detection", True) and os.path.exists(path): + if options.do_c_func_detection() and os.path.exists(path): # TODO run cpp? self.defined_funcs = self.get_funcs_defined_in_c(path) - self.mark_c_funcs_as_defined(self.defined_funcs) self.global_asm_funcs = self.get_global_asm_funcs(path) + self.mark_c_funcs_as_defined( + {*self.defined_funcs, *self.global_asm_funcs} + ) - self.funcs_text = self.disassemble_code(rom_bytes) + self.scan_code(rom_bytes) def split(self, rom_bytes: bytes): if not self.rom_start == self.rom_end: - asm_out_dir = options.get_asm_path() / "nonmatchings" / self.dir + asm_out_dir = options.get_nonmatchings_path() / self.dir asm_out_dir.mkdir(parents=True, exist_ok=True) is_new_c_file = False + self.funcs_text = self.split_code(rom_bytes) + c_path = self.out_path() if c_path: - if not os.path.exists(c_path) and options.get("create_new_c_files", True): + if not os.path.exists(c_path) and options.get_create_c_files(): self.create_c_file(self.funcs_text, asm_out_dir, c_path) is_new_c_file = True - for func in self.funcs_text: - func_name = self.parent.get_symbol(func, type="func", local_only=True).name + for func_addr in self.funcs_text: + func_sym = self.parent.get_symbol( + func_addr, type="func", local_only=True + ) + assert func_sym is not None - if options.get_compiler() == "GCC": - if func_name not in self.defined_funcs: - self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name) - else: - if func_name in self.global_asm_funcs or is_new_c_file: - self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name) - - def get_gcc_inc_header(self): - ret = [] - ret.append(".set noat # allow manual use of $at") - ret.append(".set noreorder # don't insert nops after branches") - ret.append("") - - return ret + if func_sym.name in self.global_asm_funcs or is_new_c_file: + self.create_c_asm_file( + self.funcs_text, func_addr, asm_out_dir, func_sym + ) def get_c_preamble(self): ret = [] @@ -118,16 +164,27 @@ class CommonSegC(CommonSegCodeSubsegment): if found: break - def create_c_asm_file(self, funcs_text, func, out_dir, func_name): - if options.get_compiler() == "GCC": - out_lines = self.get_gcc_inc_header() - else: - out_lines = [] + def create_c_asm_file(self, funcs_text, func_addr, out_dir, func_sym: Symbol): + outpath = Path(os.path.join(out_dir, self.name, func_sym.name + ".s")) + + # Skip extraction if the file exists and the symbol is marked as extract=false + if outpath.exists() and not func_sym.extract: + return + + out_lines = [] + + if options.asm_inc_header(): + out_lines.extend(options.asm_inc_header().split("\n")) if self.parent and isinstance(self.parent, CommonSegGroup): - if func in self.parent.rodata_syms: - func_rodata = list({s for s in self.parent.rodata_syms[func] if s.disasm_str}) - func_rodata.sort(key=lambda s:s.vram_start) + if ( + options.get_migrate_rodata_to_functions() + and func_addr in self.parent.rodata_syms + ): + func_rodata = list( + {s for s in self.parent.rodata_syms[func_addr] if s.disasm_str} + ) + func_rodata.sort(key=lambda s: s.vram_start) if len(func_rodata) > 0: rsub = self.parent.get_subsegment_for_ram(func_rodata[0].vram_start) @@ -135,22 +192,28 @@ class CommonSegC(CommonSegCodeSubsegment): out_lines.append(".section .rodata") for sym in func_rodata: - if sym.disasm_str: - out_lines.extend(sym.disasm_str.replace("\n\n", "\n").split("\n")) + if sym.extract and sym.disasm_str: + out_lines.append("") + out_lines.append( + f"{options.get_asm_data_macro()} {sym.name}" + ) + out_lines.extend( + sym.disasm_str.replace("\n\n", "\n").split("\n") + ) out_lines.append("") out_lines.append(".section .text") out_lines.append("") - out_lines.extend(funcs_text[func][0]) + out_lines.extend(funcs_text[func_addr][0]) out_lines.append("") - outpath = Path(os.path.join(out_dir, self.name, func_name + ".s")) outpath.parent.mkdir(parents=True, exist_ok=True) with open(outpath, "w", newline="\n") as f: - f.write("\n".join(out_lines)) - self.log(f"Disassembled {func_name} to {outpath}") + newline_sep = options.c_newline() + f.write(newline_sep.join(out_lines)) + self.log(f"Disassembled {func_sym.name} to {outpath}") def create_c_file(self, funcs_text, asm_out_dir, c_path): c_lines = self.get_c_preamble() @@ -160,16 +223,31 @@ class CommonSegC(CommonSegCodeSubsegment): # Terrible hack to "auto-decompile" empty functions # TODO move disassembly into funcs_text or somewhere we can access it from here - if len(funcs_text[func][0]) == 3 and funcs_text[func][0][1][-3:] == "$ra" and funcs_text[func][0][2][-3:] == "nop": + if ( + options.get_auto_decompile_empty_functions() + and len(funcs_text[func][0]) == 3 + and funcs_text[func][0][1][-3:] in ["$ra", "$31"] + and funcs_text[func][0][2][-3:] == "nop" + ): c_lines.append("void " + func_name + "(void) {") c_lines.append("}") else: - if options.get_compiler() == "GCC": - c_lines.append("INCLUDE_ASM(s32, \"{}\", {});".format(self.name, func_name)) + if options.get_compiler() in [GCC, SN64]: + if options.get_use_legacy_include_asm(): + rel_asm_out_dir = asm_out_dir.relative_to( + options.get_nonmatchings_path() + ) + c_lines.append(f'INCLUDE_ASM(s32, "{rel_asm_out_dir / self.name}", {func_name});') + else: + c_lines.append(f'INCLUDE_ASM("{asm_out_dir / self.name}", {func_name});') else: - asm_outpath = Path(os.path.join(asm_out_dir, self.dir, self.name, func_name + ".s")) - rel_asm_outpath = os.path.relpath(asm_outpath, options.get_base_path()) - c_lines.append(f"#pragma GLOBAL_ASM(\"{rel_asm_outpath}\")") + asm_outpath = Path( + os.path.join(asm_out_dir, self.name, func_name + ".s") + ) + rel_asm_outpath = os.path.relpath( + asm_outpath, options.get_base_path() + ) + c_lines.append(f'#pragma GLOBAL_ASM("{rel_asm_outpath}")') c_lines.append("") Path(c_path).parent.mkdir(parents=True, exist_ok=True) diff --git a/tools/splat/segtypes/common/code.py b/tools/splat/segtypes/common/code.py index 9c678c3e33..47750e66b7 100644 --- a/tools/splat/segtypes/common/code.py +++ b/tools/splat/segtypes/common/code.py @@ -1,93 +1,55 @@ +from typing import Dict, Tuple from segtypes.common.group import CommonSegGroup -from typing import Optional -from segtypes.segment import Segment -from util import symbols from util.symbols import Symbol # code group class CommonSegCode(CommonSegGroup): - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) self.reported_file_split = False self.labels_to_add = set() self.jtbl_glabels_to_add = set() self.jtbl_jumps = {} - self.jumptables = {} + self.jumptables: Dict[int, Tuple[int, int]] = {} @property def needs_symbols(self) -> bool: return True + # Prepare symbol for migration to the function def check_rodata_sym(self, func_addr: int, sym: Symbol): - if self.section_boundaries["rodata"].is_complete(): - if self.section_boundaries["rodata"].start <= sym.vram_start < self.section_boundaries["rodata"].end: + if self.section_boundaries[".rodata"].is_complete(): + if ( + self.section_boundaries[".rodata"].start + <= sym.vram_start + < self.section_boundaries[".rodata"].end + ): if func_addr not in self.rodata_syms: self.rodata_syms[func_addr] = [] self.rodata_syms[func_addr].append(sym) - - def get_subsegment_for_ram(self, addr) -> Optional[Segment]: - for sub in self.subsegments: - if sub.contains_vram(addr): - return sub - return None - - def retrieve_symbol(self, d, k, t): - if k not in d: - return None - - if t: - items = [s for s in d[k] if s.type == t or s.type == "unknown"] - else: - items = d[k] - - if len(items) > 1: - pass #print(f"Trying to retrieve {k:X} from symbol dict but there are {len(items)} entries to pick from - picking the first") - if len(items) == 0: - return None - return items[0] - - def get_symbol(self, addr, type=None, create=False, define=False, reference=False, offsets=False, local_only=False, dead=True): - ret = None - rom = None - - in_segment = self.contains_vram(addr) - - if in_segment: - # If the vram address is within this segment, we can calculate the symbol's rom address - rom = self.ram_to_rom(addr) - ret = self.retrieve_symbol(self.seg_symbols, addr, type) - elif not local_only: - ret = self.retrieve_symbol(self.ext_symbols, addr, type) - - # Search for symbol ranges - if not ret and offsets: - ret = symbols.retrieve_from_ranges(addr, rom) - - # Reject dead symbols unless we allow them - if not dead and ret and ret.dead: - ret = None - - # Create the symbol if it doesn't exist - if not ret and create: - ret = Symbol(addr, rom=rom, type=type) - symbols.all_symbols.append(ret) - - if in_segment: - if self.is_overlay: - ret.set_in_overlay() - if addr not in self.seg_symbols: - self.seg_symbols[addr] = [] - self.seg_symbols[addr].append(ret) - elif not local_only: - if addr not in self.ext_symbols: - self.ext_symbols[addr] = [] - self.ext_symbols[addr].append(ret) - - if ret: - if define: - ret.defined = True - if reference: - ret.referenced = True - - return ret diff --git a/tools/splat/segtypes/common/codesubsegment.py b/tools/splat/segtypes/common/codesubsegment.py index e0ab03af95..c03bf533e8 100644 --- a/tools/splat/segtypes/common/codesubsegment.py +++ b/tools/splat/segtypes/common/codesubsegment.py @@ -1,13 +1,26 @@ -from typing import Optional +from dataclasses import dataclass +from typing import List, Optional +import typing from util import options from segtypes.common.code import CommonSegCode from collections import OrderedDict import re -from capstone import Cs, CS_ARCH_MIPS, CS_MODE_MIPS64, CS_MODE_BIG_ENDIAN, CS_MODE_MIPS32, CS_MODE_LITTLE_ENDIAN +from capstone import ( + Cs, + CS_ARCH_MIPS, + CS_MODE_MIPS64, + CS_MODE_BIG_ENDIAN, + CS_MODE_MIPS32, + CS_MODE_LITTLE_ENDIAN, + CsInsn, +) from capstone.mips import * from segtypes.segment import Segment +from util.compiler import SN64 +from util.symbols import Instruction, Symbol +from util import log # abstract class for c, asm, data, etc class CommonSegCodeSubsegment(Segment): @@ -16,6 +29,40 @@ class CommonSegCodeSubsegment(Segment): float_mnemonics = ["lwc1", "swc1"] short_mnemonics = ["addiu", "lh", "sh", "lhu"] byte_mnemonics = ["lb", "sb", "lbu"] + reg_numbers = { + "$zero": "$0", + "$at": "$1", + "$v0": "$2", + "$v1": "$3", + "$a0": "$4", + "$a1": "$5", + "$a2": "$6", + "$a3": "$7", + "$t0": "$8", + "$t1": "$9", + "$t2": "$10", + "$t3": "$11", + "$t4": "$12", + "$t5": "$13", + "$t6": "$14", + "$t7": "$15", + "$s0": "$16", + "$s1": "$17", + "$s2": "$18", + "$s3": "$19", + "$s4": "$20", + "$s5": "$21", + "$s6": "$22", + "$s7": "$23", + "$t8": "$24", + "$t9": "$25", + "$k0": "$26", + "$k1": "$27", + "$gp": "$28", + "$sp": "$sp", + "$fp": "$30", + "$ra": "$31", + } if options.get_endianess() == "big": capstone_mode = CS_MODE_MIPS64 | CS_MODE_BIG_ENDIAN @@ -23,7 +70,7 @@ class CommonSegCodeSubsegment(Segment): capstone_mode = CS_MODE_MIPS32 | CS_MODE_LITTLE_ENDIAN md = Cs(CS_ARCH_MIPS, capstone_mode) - md.detail = True + md.detail = False md.skipdata = True @property @@ -34,7 +81,7 @@ class CommonSegCodeSubsegment(Segment): return ".text" @staticmethod - def is_nops(insns): + def is_nops(insns: List[CsInsn]) -> bool: for insn in insns: if insn.mnemonic != "nop": return False @@ -42,30 +89,52 @@ class CommonSegCodeSubsegment(Segment): @staticmethod def is_branch_insn(mnemonic): - return (mnemonic.startswith("b") and not mnemonic.startswith("binsl") and not mnemonic == "break") or mnemonic == "j" + return ( + mnemonic.startswith("b") + and not mnemonic.startswith("binsl") + and not mnemonic == "break" + ) or mnemonic == "j" - def disassemble_code(self, rom_bytes, addsuffix=False): - insns = [insn for insn in CommonSegCodeSubsegment.md.disasm(rom_bytes[self.rom_start : self.rom_end], self.vram_start)] + @staticmethod + def replace_reg_names(op_str): + for regname, regnum in CommonSegCodeSubsegment.reg_numbers.items(): + op_str = op_str.replace(regname, regnum) + return op_str - funcs = self.process_insns(insns, self.rom_start) + def scan_code(self, rom_bytes, is_asm=False): + insns: List[CsInsn] = [ + insn + for insn in CommonSegCodeSubsegment.md.disasm( + rom_bytes[self.rom_start : self.rom_end], self.vram_start + ) + ] - # TODO: someday make func a subclass of symbol and store this disasm info there too - for func in funcs: - self.parent.get_symbol(func, type="func", create=True, define=True, local_only=True) + self.funcs: typing.OrderedDict[int, Symbol] = self.process_insns( + insns, self.rom_start, is_asm=is_asm + ) - funcs = self.determine_symbols(funcs) + # TODO: set these in creation + for func in self.funcs.values(): + func.define = True + func.local_only = True + func.size = len(func.insns) * 4 + + self.determine_symbols() + + def split_code(self, rom_bytes): self.gather_jumptable_labels(rom_bytes) - return self.add_labels(funcs, addsuffix) + return self.add_labels() - def process_insns(self, insns, rom_addr): - assert(isinstance(self.parent, CommonSegCode)) + def process_insns( + self, insns: List[CsInsn], rom_addr, is_asm=False + ) -> typing.OrderedDict[int, Symbol]: + assert isinstance(self.parent, CommonSegCode) self.parent: CommonSegCode = self.parent - ret = OrderedDict() + ret: typing.OrderedDict[int, Symbol] = OrderedDict() - func_addr = None - func = [] end_func = False + start_new_func = True labels = [] big_endian = options.get_endianess() == "big" @@ -82,20 +151,29 @@ class CommonSegCodeSubsegment(Segment): for i, insn in enumerate(insns): mnemonic = insn.mnemonic op_str = insn.op_str - func_addr = insn.address if len(func) == 0 else func[0][0].address # If this is non-zero, disasm size insns hard_size = 0 - func_sym = self.parent.get_symbol(func_addr, type="func") - if func_sym and func_sym.size > 4: - hard_size = func_sym.size / 4 + + if start_new_func: + func: Symbol = self.parent.create_symbol(insn.address, type="func") + start_new_func = False + + if func.size > 4: + hard_size = func.size / 4 + + if options.get_compiler() == SN64: + op_str = self.replace_reg_names(op_str) if mnemonic == "move": # Let's get the actual instruction out idx = 3 if big_endian else 0 opcode = insn.bytes[idx] & 0b00111111 - op_str += ", $zero" + if options.get_compiler() == SN64: + op_str += ", $0" + else: + op_str += ", $zero" if opcode == 37: mnemonic = "or" @@ -107,18 +185,21 @@ class CommonSegCodeSubsegment(Segment): print("INVALID INSTRUCTION " + str(insn), opcode) elif mnemonic == "jal": jal_addr = int(op_str, 0) - jump_func = self.parent.get_symbol(jal_addr, type="func", create=True, reference=True) + jump_func = self.parent.create_symbol( + jal_addr, type="func", reference=True + ) op_str = jump_func.name elif self.is_branch_insn(insn.mnemonic): op_str_split = op_str.split(" ") branch_target = op_str_split[-1] branch_target_int = int(branch_target, 0) - label = "" - label = self.parent.get_symbol(branch_target_int, type="label", reference=True, local_only=True) + label_sym = self.parent.get_symbol( + branch_target_int, type="label", reference=True, local_only=True + ) - if label: - label_name = label.name + if label_sym: + label_name = label_sym.name else: self.parent.labels_to_add.add(branch_target_int) label_name = f".L{branch_target[2:].upper()}" @@ -128,20 +209,46 @@ class CommonSegCodeSubsegment(Segment): idx = 2 if big_endian else 1 rd = (insn.bytes[idx] & 0xF8) >> 3 op_str = op_str.split(" ")[0] + " $" + str(rd) + elif ( + mnemonic == "break" + and op_str in ["6", "7"] + and options.get_compiler() == SN64 + and not is_asm + ): + # SN64's assembler expands div to have break if dividing by zero + # However, the break it generates is different than the one it generates with `break N` + # So we replace break instrutions for SN64 with the exact word that the assembler generates when expanding div + if op_str == "6": + mnemonic = ".word 0x0006000D" + op_str = "" + elif op_str == "7": + mnemonic = ".word 0x0007000D" + op_str = "" + elif ( + mnemonic in ["div", "divu"] + and options.get_compiler() == SN64 + and not is_asm + ): + # SN64's assembler also doesn't like assembling `div $0, a, b` with .set noat active + # Removing the $0 fixes this issue + if op_str.startswith("$0, "): + op_str = op_str[4:] - func.append((insn, mnemonic, op_str, rom_addr)) + func.insns.append(Instruction(insn, mnemonic, op_str, rom_addr)) rom_addr += 4 - size_remaining = hard_size - len(func) if hard_size > 0 else 0 + size_remaining = hard_size - len(func.insns) if hard_size > 0 else 0 if mnemonic == "jr": # Record potential jtbl jumps - if op_str != "$ra": + if op_str not in ["$ra", "$31"]: self.parent.jtbl_jumps[insn.address] = op_str keep_going = False for label in labels: - if (label[0] > insn.address and label[1] <= insn.address) or (label[0] <= insn.address and label[1] > insn.address): + if (label[0] > insn.address and label[1] <= insn.address) or ( + label[0] <= insn.address and label[1] > insn.address + ): keep_going = True break if not keep_going and not size_remaining: @@ -152,20 +259,26 @@ class CommonSegCodeSubsegment(Segment): if hard_size > 0 and size_remaining == 0: end_func = True - if i < len(insns) - 1 and self.parent.get_symbol(insns[i + 1].address, local_only=True, type="func", dead=False): + if i < len(insns) - 1 and self.parent.get_symbol( + insns[i + 1].address, local_only=True, type="func", dead=False + ): end_func = True if end_func: - if self.is_nops(insns[i:]) or i < len(insns) - 1 and insns[i + 1].mnemonic != "nop": + if ( + self.is_nops(insns[i:]) + or i < len(insns) - 1 + and insns[i + 1].mnemonic != "nop" + ): end_func = False - ret[func_addr] = func - func = [] + start_new_func = True + ret[func.vram_start] = func # Add the last function (or append nops to the previous one) - if not self.is_nops([i[0] for i in func]): - ret[func_addr] = func + if not self.is_nops([insn.instruction for insn in func.insns]): + ret[func.vram_start] = func else: - next(reversed(ret.values())).extend(func) + next(reversed(ret.values())).insns.extend(func.insns) return ret @@ -176,7 +289,10 @@ class CommonSegCodeSubsegment(Segment): sym.access_mnemonic = mnemonic elif sym.access_mnemonic in self.double_mnemonics: return - elif sym.access_mnemonic in self.float_mnemonics and mnemonic in self.double_mnemonics: + elif ( + sym.access_mnemonic in self.float_mnemonics + and mnemonic in self.double_mnemonics + ): sym.access_mnemonic = mnemonic elif sym.access_mnemonic in self.short_mnemonics: return @@ -186,81 +302,173 @@ class CommonSegCodeSubsegment(Segment): sym.access_mnemonic = mnemonic # Determine symbols - def determine_symbols(self, funcs): - hi_lo_max_distance = options.get("hi_lo_max_distance", 6) - ret = {} + def determine_symbols(self): + hi_lo_max_distance = options.hi_lo_max_distance() - for func_addr in funcs: - func = funcs[func_addr] - func_end_addr = func[-1][0].address + 4 + for func_addr in self.funcs: + func = self.funcs[func_addr] + func_end_addr = func.insns[-1].instruction.address + 4 - possible_jtbl_jumps = [(k, v) for k, v in self.parent.jtbl_jumps.items() if k >= func_addr and k < func_end_addr] - possible_jtbl_jumps.sort(key=lambda x:x[0]) + possible_jtbl_jumps = [ + (k, v) + for k, v in self.parent.jtbl_jumps.items() + if k >= func_addr and k < func_end_addr + ] + possible_jtbl_jumps.sort(key=lambda x: x[0]) - for i in range(len(func)): - insn = func[i][0] + for i in range(len(func.insns)): + hi_insn: CsInsn = func.insns[i].instruction # Ensure the first item in the list is always ahead of where we're looking - while len(possible_jtbl_jumps) > 0 and possible_jtbl_jumps[0][0] < insn.address: + while ( + len(possible_jtbl_jumps) > 0 + and possible_jtbl_jumps[0][0] < hi_insn.address + ): del possible_jtbl_jumps[0] - if insn.mnemonic == "lui": - op_split = insn.op_str.split(", ") - reg = op_split[0] + # Find gp relative reads and writes e.g lw $a1, 0x670($gp) + if hi_insn.op_str.endswith("($gp)"): + gp_base = options.get_gp() + if gp_base is None: + log.error( + "gp_value not set in yaml, can't calculate %gp_rel reloc value for " + + hi_insn.op_str + ) + + op_split = hi_insn.op_str.split(", ") + gp_offset = op_split[1][:-5] # extract the 0x670 part + if len(gp_offset) == 0: + gp_offset = 0 + else: + gp_offset = int(gp_offset, 16) + symbol_addr = gp_base + gp_offset + + sym = self.parent.create_symbol( + symbol_addr, offsets=True, reference=True + ) + offset = symbol_addr - sym.vram_start + offset_str = f"+0x{offset:X}" + + if self.parent: + self.parent.check_rodata_sym(func_addr, sym) + + self.update_access_mnemonic(sym, hi_insn.mnemonic) + + func.insns[i].is_gp = True + func.insns[i].hi_lo_sym = sym + func.insns[i].sym_offset_str = offset_str + # All hi/lo pairs start with a lui + elif hi_insn.mnemonic == "lui": + op_split = hi_insn.op_str.split(", ") + hi_reg = op_split[0] if not op_split[1].startswith("0x"): continue lui_val = int(op_split[1], 0) + + # Assumes all luis are going to load from 0x80000000 or higher (maybe false) if lui_val >= 0x8000: - for j in range(i + 1, min(i + hi_lo_max_distance, len(func))): - s_insn = func[j][0] + # Iterate over the next few instructions to see if we can find a matching lo + for j in range( + i + 1, min(i + hi_lo_max_distance, len(func.insns)) + ): + lo_insn = func.insns[j].instruction - s_op_split = s_insn.op_str.split(", ") + s_op_split = lo_insn.op_str.split(", ") - if s_insn.mnemonic == "lui" and reg == s_op_split[0]: + if lo_insn.mnemonic == "lui" and hi_reg == s_op_split[0]: break - if s_insn.mnemonic in ["addiu", "ori"]: - s_reg = s_op_split[-2] + if lo_insn.mnemonic in ["addiu", "ori"]: + lo_reg = s_op_split[-2] else: - s_reg = s_op_split[-1][s_op_split[-1].rfind("(") + 1: -1] + lo_reg = s_op_split[-1][ + s_op_split[-1].rfind("(") + 1 : -1 + ] - - if reg == s_reg: - if s_insn.mnemonic not in ["addiu", "lw", "sw", "lh", "sh", "lhu", "lb", "sb", "lbu", "lwc1", "swc1", "ldc1", "sdc1"]: + if hi_reg == lo_reg: + if lo_insn.mnemonic not in [ + "addiu", + "lw", + "sw", + "lh", + "sh", + "lhu", + "lb", + "sb", + "lbu", + "lwc1", + "swc1", + "ldc1", + "sdc1", + ]: break # Match! reg_ext = "" - junk_search = re.search( - r"[\(]", s_op_split[-1]) + # I forgot what this is doing + junk_search = re.search(r"[\(]", s_op_split[-1]) if junk_search is not None: if junk_search.start() == 0: break - s_str = s_op_split[-1][:junk_search.start()] - reg_ext = s_op_split[-1][junk_search.start():] + s_str = s_op_split[-1][: junk_search.start()] + reg_ext = s_op_split[-1][junk_search.start() :] else: s_str = s_op_split[-1] + if options.get_compiler() == SN64: + reg_ext = CommonSegCodeSubsegment.replace_reg_names( + reg_ext + ) + symbol_addr = (lui_val * 0x10000) + int(s_str, 0) - sym = None + sym: Optional[Symbol] = None offset_str = "" - if symbol_addr > func_addr and symbol_addr < self.parent.vram_end and len(possible_jtbl_jumps) > 0 and func_end_addr - s_insn.address >= 0x30: - for jump in possible_jtbl_jumps: - if jump[1] == s_op_split[0]: - dist_to_jump = possible_jtbl_jumps[0][0] - s_insn.address - if dist_to_jump <= 16: - sym = self.parent.get_symbol(symbol_addr, create=True, reference=True, type="jtbl", local_only=True) + # If the symbol is likely in the rodata section + if ( + not self.parent.text_follows_rodata + and symbol_addr > func_addr + ) or ( + self.parent.text_follows_rodata + and symbol_addr < func_addr + ): + # Sanity check that the symbol is within this segment's vram + if ( + self.parent.vram_end + and symbol_addr < self.parent.vram_end + ): + # If we've seen possible jumps to a jumptable and this symbol isn't too close to the end of the function + if ( + len(possible_jtbl_jumps) > 0 + and func_end_addr - lo_insn.address >= 0x30 + ): + for jump in possible_jtbl_jumps: + if jump[1] == s_op_split[0]: + dist_to_jump = ( + possible_jtbl_jumps[0][0] + - lo_insn.address + ) + if dist_to_jump <= 16: + sym = self.parent.create_symbol( + symbol_addr, + reference=True, + type="jtbl", + local_only=True, + ) - self.parent.jumptables[symbol_addr] = (func_addr, func_end_addr) - break + self.parent.jumptables[ + symbol_addr + ] = (func_addr, func_end_addr) + break if not sym: - sym = self.parent.get_symbol(symbol_addr, create=True, offsets=True, reference=True) + sym = self.parent.create_symbol( + symbol_addr, offsets=True, reference=True + ) offset = symbol_addr - sym.vram_start if offset != 0: offset_str = f"+0x{offset:X}" @@ -268,95 +476,146 @@ class CommonSegCodeSubsegment(Segment): if self.parent: self.parent.check_rodata_sym(func_addr, sym) - self.update_access_mnemonic(sym, s_insn.mnemonic) + self.update_access_mnemonic(sym, lo_insn.mnemonic) - sym_label = sym.name + offset_str + func.insns[i].is_hi = True + func.insns[i].hi_lo_sym = sym + func.insns[i].sym_offset_str = offset_str - func[i] += ("%hi({})".format(sym_label),) - func[j] += ("%lo({}){}".format(sym_label, reg_ext),) + func.insns[j].is_lo = True + func.insns[j].hi_lo_sym = sym + func.insns[j].sym_offset_str = offset_str + func.insns[j].hi_lo_reg = reg_ext break - ret[func_addr] = func - return ret - def add_labels(self, funcs, addsuffix): + def add_labels(self): ret = {} - for func in funcs: - func_text = [] + function_macro = options.get_asm_function_macro() + data_macro = options.get_asm_data_macro() - # Add function glabel - rom_addr = funcs[func][0][3] - sym = self.parent.get_symbol(func, type="func", create=True, define=True, local_only=True) - func_text.append(f"glabel {sym.name}") + for func_addr in self.funcs: + func_text = [] + func = self.funcs[func_addr] + + # Add function label + func_text.append(f"{function_macro} {func.name}") + + if options.get_compiler() == SN64: + func_text.append(f".ent {func.name}") + func_text.append(f"{func.name}:") indent_next = False - mnemonic_ljust = options.get("mnemonic_ljust", 11) - rom_addr_padding = options.get("rom_address_padding", None) + mnemonic_ljust = options.mnemonic_ljust() + rom_addr_padding = options.rom_address_padding() - for insn in funcs[func]: - insn_addr = insn[0].address + for insn in func.insns: + insn_addr = insn.instruction.address # Add a label if we need one if insn_addr in self.parent.jtbl_glabels_to_add: - func_text.append(f"glabel L{insn_addr:X}_{insn[3]:X}") + func_text.append(f"{data_macro} L{insn_addr:X}_{insn.rom_addr:X}") elif insn_addr in self.parent.labels_to_add: self.parent.labels_to_add.remove(insn_addr) func_text.append(".L{:X}:".format(insn_addr)) if rom_addr_padding: - rom_str = "{0:0{1}X}".format(insn[3], rom_addr_padding) + rom_str = "{0:0{1}X}".format(insn.rom_addr, rom_addr_padding) else: - rom_str = "{:X}".format(insn[3]) + rom_str = "{:X}".format(insn.rom_addr) - asm_comment = "/* {} {:X} {} */".format(rom_str, insn_addr, insn[0].bytes.hex().upper()) - - if len(insn) > 4: - op_str = ", ".join(insn[2].split(", ")[:-1] + [insn[4]]) + if options.get_compiler() == SN64: + asm_comment = "" else: - op_str = insn[2] + asm_comment = "/* {} {:X} {} */".format( + rom_str, insn_addr, insn.instruction.bytes.hex().upper() + ) - if self.is_branch_insn(insn[0].mnemonic): - branch_addr = int(insn[0].op_str.split(",")[-1].strip(), 0) + if insn.is_hi: + assert insn.hi_lo_sym + op_str = ", ".join( + insn.op_str.split(", ")[:-1] + + [f"%hi({insn.hi_lo_sym.name}{insn.sym_offset_str})"] + ) + elif insn.is_lo: + assert insn.hi_lo_sym + op_str = ", ".join( + insn.op_str.split(", ")[:-1] + + [ + f"%lo({insn.hi_lo_sym.name}{insn.sym_offset_str}){insn.hi_lo_reg}" + ] + ) + elif insn.is_gp: + op_str = ", ".join( + insn.op_str.split(", ")[:-1] + + [f"%gp_rel({insn.hi_lo_sym.name}{insn.sym_offset_str})($gp)"] + ) + else: + op_str = insn.op_str + + if self.is_branch_insn(insn.instruction.mnemonic): + branch_addr = int(insn.instruction.op_str.split(",")[-1].strip(), 0) if branch_addr in self.parent.jtbl_glabels_to_add: label_str = f"L{branch_addr:X}_{self.ram_to_rom(branch_addr):X}" - op_str = ", ".join(insn[2].split(", ")[:-1] + [label_str]) + op_str = ", ".join(insn.op_str.split(", ")[:-1] + [label_str]) - insn_text = insn[1] + insn_text = insn.mnemonic if indent_next: indent_next = False insn_text = " " + insn_text - asm_insn_text = " {}{}".format(insn_text.ljust(mnemonic_ljust), op_str).rstrip() + asm_insn_text = " {}{}".format( + insn_text.ljust(mnemonic_ljust), op_str + ).rstrip() func_text.append(asm_comment + asm_insn_text) - if insn[0].mnemonic != "branch" and insn[0].mnemonic.startswith("b") or insn[0].mnemonic.startswith("j"): + if ( + insn.instruction.mnemonic != "branch" + and insn.instruction.mnemonic.startswith("b") + or insn.instruction.mnemonic.startswith("j") + ): indent_next = True - if addsuffix: - func_text.append(f"endlabel {sym.name}") + end_label = options.get_asm_end_label() - ret[func] = (func_text, rom_addr) + if end_label: + func_text.append(f"{end_label} {func.name}") - if options.get("find_file_boundaries"): + ret[func_addr] = (func_text, func.rom) + + if options.find_file_boundaries(): # If this is not the last function in the file - if func != list(funcs.keys())[-1]: + if func_addr != list(self.funcs.keys())[-1]: # Find where the function returns jr_pos: Optional[int] = None - for i, insn in enumerate(reversed(funcs[func])): - if insn[0].mnemonic == "jr" and insn[0].op_str == "$ra": + for i, insn in enumerate(reversed(func.insns)): + if ( + insn.instruction.mnemonic == "jr" + and insn.instruction.op_str in ["$ra", "$31"] + ): jr_pos = i break # If there is more than 1 nop after the return - if jr_pos is not None and jr_pos > 1 and self.is_nops([i[0] for i in funcs[func][-jr_pos + 1:]]): - new_file_addr = funcs[func][-1][3] + 4 + if ( + jr_pos is not None + and jr_pos > 1 + and self.is_nops( + [insn.instruction for insn in func.insns[-jr_pos + 1 :]] + ) + ): + new_file_addr = func.insns[-1].rom_addr + 4 if (new_file_addr % 16) == 0: if not self.parent.reported_file_split: self.parent.reported_file_split = True - print(f"Segment {self.name}, function at vram {func:X} ends with extra nops, indicating a likely file split.") - print("File split suggestions for this segment will follow in config yaml format:") + print( + f"Segment {self.name}, function at vram {func_addr:X} ends with extra nops, indicating a likely file split." + ) + print( + "File split suggestions for this segment will follow in config yaml format:" + ) print(f" - [0x{new_file_addr:X}, asm]") return ret @@ -371,9 +630,9 @@ class CommonSegCodeSubsegment(Segment): if rom_offset <= 0: return - while (rom_offset): + while rom_offset: word = rom_bytes[rom_offset : rom_offset + 4] - word_int = int.from_bytes(word, "big") + word_int = int.from_bytes(word, options.get_endianess()) if word_int >= start and word_int <= end: self.parent.jtbl_glabels_to_add.add(word_int) else: @@ -382,7 +641,11 @@ class CommonSegCodeSubsegment(Segment): rom_offset += 4 def should_scan(self) -> bool: - return options.mode_active("code") and self.rom_start != "auto" and self.rom_end != "auto" + return ( + options.mode_active("code") + and self.rom_start != "auto" + and self.rom_end != "auto" + ) def should_split(self) -> bool: return self.extract and options.mode_active("code") diff --git a/tools/splat/segtypes/common/data.py b/tools/splat/segtypes/common/data.py index 4b729cbf85..b30f57d62f 100644 --- a/tools/splat/segtypes/common/data.py +++ b/tools/splat/segtypes/common/data.py @@ -6,6 +6,7 @@ from typing import List, Optional from util.symbols import Symbol from util import floats, options + class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def out_path(self) -> Optional[Path]: if self.type.startswith("."): @@ -17,7 +18,7 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): return options.get_src_path() / self.dir / f"{self.name}.c" else: # ASM - return options.get_asm_path() / "data" / self.dir / f"{self.name}.{self.type}.s" + return options.get_data_path() / self.dir / f"{self.name}.{self.type}.s" def scan(self, rom_bytes: bytes): CommonSegGroup.scan(self, rom_bytes) @@ -54,8 +55,10 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def get_linker_entries(self): return CommonSegCodeSubsegment.get_linker_entries(self) + # Check symbols marked as jump tables to be valid def check_jtbls(self, rom_bytes, syms: List[Symbol]): - endian = options.get_endianess() + endianness = options.get_endianess() + for i, sym in enumerate(syms): if sym.type == "jtbl": start = self.get_most_parent().ram_to_rom(syms[i].vram_start) @@ -66,14 +69,26 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): b = 0 last_bits = 0 while b < len(sym_bytes): - bits = int.from_bytes(sym_bytes[b : b + 4], endian) + bits = int.from_bytes(sym_bytes[b : b + 4], endianness) - if last_bits != 0 and bits != 0 and abs(last_bits - bits) > 0x100000: + if ( + last_bits != 0 + and bits != 0 + and abs(last_bits - bits) > 0x100000 + ): new_sym_rom_start = start + b - new_sym_ram_start = self.get_most_parent().rom_to_ram(new_sym_rom_start) + new_sym_ram_start = self.get_most_parent().rom_to_ram( + new_sym_rom_start + ) sym.size = new_sym_rom_start - sym.rom - syms.insert(i + 1, self.get_most_parent().get_symbol(new_sym_ram_start, create=True, define=True, local_only=True)) + # It turns out this isn't a valid jump table, so create a new symbol where it breaks + syms.insert( + i + 1, + self.get_most_parent().create_symbol( + new_sym_ram_start, define=True, local_only=True + ), + ) return False if bits != 0: @@ -90,7 +105,11 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): for i in range(self.rom_start, self.rom_end, 4): bits = int.from_bytes(rom_bytes[i : i + 4], endian) if self.contains_vram(bits): - symset.add(self.get_most_parent().get_symbol(bits, create=True, define=True, local_only=True)) + symset.add( + self.get_most_parent().create_symbol( + bits, define=True, local_only=True + ) + ) for symbol_addr in self.seg_symbols: for symbol in self.seg_symbols[symbol_addr]: @@ -98,11 +117,16 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): symset.add(symbol) ret: List[Symbol] = list(symset) - ret.sort(key=lambda s:s.vram_start) + ret.sort(key=lambda s: s.vram_start) # Ensure we start at the beginning if len(ret) == 0 or ret[0].vram_start != self.vram_start: - ret.insert(0, self.get_most_parent().get_symbol(self.vram_start, create=True, define=True, local_only=True)) + ret.insert( + 0, + self.get_most_parent().create_symbol( + self.vram_start, define=True, local_only=True + ), + ) # Make a dummy symbol here that marks the end of the previous symbol's disasm range ret.append(Symbol(self.vram_end)) @@ -116,14 +140,16 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def are_null(chars): for b in chars: - if b != '\x00': + if b != "\x00": return False return True @staticmethod def is_valid_ascii(bytes): - null_char = '\x00' - valid_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890[]():%!#=-_ " + null_char = "\x00" + valid_chars = ( + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890[]():%!#=-_ " + ) invalid_chars = "" duplicate_limit = 10 @@ -152,7 +178,7 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): true_end = i else: pass - #return False + # return False # Ensure we're not seeing a ton of the same character in a row if last_char == c: @@ -184,6 +210,44 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): return False + # TODO if we see a new function's jtbl, split it + def is_valid_jtbl(self, sym: Symbol, bytes) -> bool: + min_jtbl_len = 16 + + if len(bytes) % 4 != 0: + return False + + # Jump tables must have at least 3 labels + if len(bytes) < min_jtbl_len: + return False + + most_parent = self.get_most_parent() + assert isinstance(most_parent, CommonSegCode) + + # Grab the first word and see if its value is an address within a function + word = int.from_bytes(bytes[0:4], options.get_endianess()) + jtbl_func: Optional[Symbol] = self.get_most_parent().get_func_for_addr(word) + + if not jtbl_func: + return False + + for i in range(4, len(bytes), 4): + word = int.from_bytes(bytes[i : i + 4], options.get_endianess()) + + # If the word doesn't contain an address in the current function, this isn't a valid jump table + if not jtbl_func.contains_vram(word): + # Allow jump tables that are of a minimum length and end in 0s + if i < min_jtbl_len or any(b != 0 for b in bytes[i:]): + return False + + # Mark this symbol as a jump table and record the jump table for later + sym.type = "jtbl" + most_parent.jumptables[sym.vram_start] = ( + jtbl_func.vram_start, + jtbl_func.vram_end, + ) + return True + def disassemble_symbol(self, sym_bytes, sym_type): endian = options.get_endianess() if sym_type == "jtbl": @@ -204,6 +268,8 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): try: ascii_str = sym_bytes.decode("EUC-JP") # ascii_str = ascii_str.rstrip("\x00") + ascii_str = ascii_str.replace("\\", "\\\\") # escape back slashes + ascii_str = ascii_str.replace('"', '\\"') # escape quotes ascii_str = ascii_str.replace("\x00", "\\0") ascii_str = ascii_str.replace("\n", "\\n") @@ -232,9 +298,9 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): if sym: byte_str = sym.name else: - byte_str = '0x{0:0{1}X}'.format(bits, 2 * slen) + byte_str = "0x{0:0{1}X}".format(bits, 2 * slen) else: - byte_str = '0x{0:0{1}X}'.format(bits, 2 * slen) + byte_str = "0x{0:0{1}X}".format(bits, 2 * slen) if sym_type in ["float", "double"]: if sym_type == "float": @@ -260,8 +326,8 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): def disassemble_data(self, rom_bytes): rodata_encountered = "rodata" in self.type - ret = ".include \"macro.inc\"\n\n" - ret += f'.section {self.get_linker_section()}' + ret = '.include "macro.inc"\n\n' + ret += f".section {self.get_linker_section()}" if self.size == 0: return None @@ -270,30 +336,53 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): for i in range(len(syms) - 1): mnemonic = syms[i].access_mnemonic - sym = self.get_most_parent().get_symbol(syms[i].vram_start, create=True, define=True, local_only=True) + sym = self.get_most_parent().create_symbol( + syms[i].vram_start, define=True, local_only=True + ) - sym_str = f"\n\nglabel {sym.name}\n" dis_start = self.get_most_parent().ram_to_rom(syms[i].vram_start) dis_end = self.get_most_parent().ram_to_rom(syms[i + 1].vram_start) sym_len = dis_end - dis_start if self.type == "bss": - ret += f".space 0x{sym_len:X}" + disasm_str = f".space 0x{sym_len:X}" else: - sym_bytes = rom_bytes[dis_start : dis_end] + sym_bytes = rom_bytes[dis_start:dis_end] # Checking if the mnemonic is addiu may be too picky - we'll see if self.is_valid_ascii(sym_bytes) and mnemonic == "addiu": stype = "ascii" - elif syms[i].type == "jtbl": + elif sym.type == "jtbl": stype = "jtbl" - elif len(sym_bytes) % 8 == 0 and mnemonic in CommonSegCodeSubsegment.double_mnemonics: + elif self.is_valid_jtbl(sym, sym_bytes): + stype = "jtbl" + elif ( + len(sym_bytes) % 8 == 0 + and mnemonic in CommonSegCodeSubsegment.double_mnemonics + ): stype = "double" - elif len(sym_bytes) % 4 == 0 and mnemonic in CommonSegCodeSubsegment.float_mnemonics: + elif ( + len(sym_bytes) % 4 == 0 + and mnemonic in CommonSegCodeSubsegment.float_mnemonics + ): stype = "float" - elif len(sym_bytes) % 4 == 0 and sym.vram_start % 4 == 0 and (mnemonic in CommonSegCodeSubsegment.word_mnemonics or not mnemonic): + elif ( + len(sym_bytes) % 4 == 0 + and sym.vram_start % 4 == 0 + and ( + mnemonic in CommonSegCodeSubsegment.word_mnemonics + or not mnemonic + ) + ): stype = "word" - elif len(sym_bytes) % 2 == 0 and sym.vram_start % 2 == 0 and (mnemonic in CommonSegCodeSubsegment.short_mnemonics or not mnemonic): + elif ( + len(sym_bytes) % 2 == 0 + and sym.vram_start % 2 == 0 + and ( + mnemonic in CommonSegCodeSubsegment.short_mnemonics + or not mnemonic + ) + ): stype = "short" else: stype = "byte" @@ -304,13 +393,20 @@ class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): if dis_start % 2 != 0: stype = "byte" - if not rodata_encountered and mnemonic == "jtbl": + # Hint to the user that we are now in the .rodata section and no longer in the .data section (assuming rodata follows data) + if ( + not rodata_encountered + and mnemonic == "jtbl" + and self.get_most_parent().rodata_follows_data + ): rodata_encountered = True ret += "\n\n\n.section .rodata" - sym_str += self.disassemble_symbol(sym_bytes, stype) - sym.disasm_str = sym_str - ret += sym_str + disasm_str = self.disassemble_symbol(sym_bytes, stype) + + sym.disasm_str = disasm_str + name_str = f"\n\n{options.get_asm_data_macro()} {sym.name}\n" + ret += name_str + disasm_str ret += "\n" diff --git a/tools/splat/segtypes/common/group.py b/tools/splat/segtypes/common/group.py index bcdbc98fa3..a83ea71aa5 100644 --- a/tools/splat/segtypes/common/group.py +++ b/tools/splat/segtypes/common/group.py @@ -1,35 +1,51 @@ from collections import OrderedDict -from typing import List, Dict -import sys +from typing import List, Dict, Optional +import typing +from segtypes.common.linker_section import dotless_type from util.range import Range from util import log, options from segtypes.common.segment import CommonSegment from segtypes.segment import RomAddr, Segment from util.symbols import Symbol +CODE_TYPES = ["c", "asm", "hasm"] + + class CommonSegGroup(CommonSegment): - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) self.rodata_syms: Dict[int, List[Symbol]] = {} # TODO: move this to CommonSegCode - if isinstance(yaml, dict): - # TODO Note: These start/end vram options don't really do anything yet - data_vram = Range(yaml.get("data_vram_start"), yaml.get("data_vram_end")) - rodata_vram = Range(yaml.get("rodata_vram_start"), yaml.get("rodata_vram_end")) - bss_vram = Range(yaml.get("bss_vram_start"), yaml.get("bss_vram_end")) - else: - data_vram = Range() - rodata_vram = Range() - bss_vram = Range() - - self.section_boundaries = { - "data": data_vram, - "rodata": rodata_vram, - "bss": bss_vram, - } - + self.section_boundaries = OrderedDict( + (s_name, Range()) for s_name in options.get_section_order() + ) self.subsegments = self.parse_subsegments(yaml) @property @@ -44,7 +60,7 @@ class CommonSegGroup(CommonSegment): if elem.type.startswith("all_"): alls = [] - rep_type = f".{elem.type[4:]}" + rep_type = f"{elem.type[4:]}" replace_class = Segment.get_class_for_type(rep_type) for base in base_segs.items(): @@ -53,7 +69,19 @@ class CommonSegGroup(CommonSegment): vram_start = elem.rom_start - self.rom_start + self.vram_start else: vram_start = "auto" - rep = replace_class(elem.rom_start, elem.rom_end, rep_type, base[0], vram_start, False, self.given_subalign, self.given_is_overlay, self.given_dir, [], {}) + rep = replace_class( + elem.rom_start, + elem.rom_end, + rep_type, + base[0], + vram_start, + False, + self.given_subalign, + self.given_is_overlay, + self.given_dir, + [], + {}, + ) rep.sibling = base[1] rep.parent = self alls.append(rep) @@ -64,9 +92,14 @@ class CommonSegGroup(CommonSegment): return True return False - def find_inserts(self, found_sections: Dict[str, Range], section_order) -> "OrderedDict[str, int]": + def find_inserts( + self, found_sections: typing.OrderedDict[str, Range] + ) -> "OrderedDict[str, int]": inserts = OrderedDict() + section_order = self.section_order + section_order.remove(".text") + for i, section in enumerate(section_order): if not found_sections[section].has_start(): search_done = False @@ -82,22 +115,31 @@ class CommonSegGroup(CommonSegment): return inserts def get_next_seg_start(self, i, subsegment_yamls): - return self.rom_end if i == len(subsegment_yamls) - 1 else Segment.parse_segment_start(subsegment_yamls[i + 1]) + return ( + self.rom_end + if i == len(subsegment_yamls) - 1 + else Segment.parse_segment_start(subsegment_yamls[i + 1]) + ) def parse_subsegments(self, segment_yaml) -> List[Segment]: base_segments: OrderedDict[str, Segment] = OrderedDict() ret = [] prev_start: RomAddr = -1 - inserts: OrderedDict[str, int] = OrderedDict() # Used to manually add "all_" types for sections not otherwise defined in the yaml + inserts: OrderedDict[ + str, int + ] = ( + OrderedDict() + ) # Used to manually add "all_" types for sections not otherwise defined in the yaml - sections = ["data", "rodata", "bss"] - found_sections = {"data": Range(), "rodata": Range(), "bss": Range()} # Stores yaml index where a section was first found + found_sections = OrderedDict( + (s_name, Range()) for s_name in self.section_boundaries + ) # Stores yaml index where a section was first found if "subsegments" not in segment_yaml: return [] # Mark any manually added dot types - if options.get("auto_all_sections"): + if options.auto_all_sections(): cur_section = None for i, subsection_yaml in enumerate(segment_yaml["subsegments"]): @@ -112,8 +154,9 @@ class CommonSegGroup(CommonSegment): typ = Segment.parse_segment_type(subsection_yaml) if typ.startswith("all_"): typ = typ[4:] - elif typ.startswith("."): - typ = typ[1:] + if not typ.startswith("."): + typ = f".{typ}" + if typ in found_sections: if cur_section is None: # Starting point @@ -123,9 +166,13 @@ class CommonSegGroup(CommonSegment): if cur_section != typ: # We're changing sections if found_sections[cur_section].has_end(): - log.error(f"Section {cur_section} end encountered but was already ended earlier!") + log.error( + f"Section {cur_section} end encountered but was already ended earlier!" + ) if found_sections[typ].has_start(): - log.error(f"Section {typ} start encounted but has already started earlier!") + log.error( + f"Section {typ} start encounted but has already started earlier!" + ) # End the current section found_sections[cur_section].end = i @@ -137,7 +184,7 @@ class CommonSegGroup(CommonSegment): if cur_section is not None: found_sections[cur_section].end = len(segment_yaml["subsegments"]) - inserts = self.find_inserts(found_sections, sections) + inserts = self.find_inserts(found_sections) for i, subsection_yaml in enumerate(segment_yaml["subsegments"]): # rompos marker @@ -156,32 +203,39 @@ class CommonSegGroup(CommonSegment): end = self.get_next_seg_start(i, segment_yaml["subsegments"]) - if isinstance(start, int) and isinstance(prev_start, int) and start < prev_start: - log.error(f"Error: Code segment {self.name} contains subsegments which are out of ascending rom order (0x{prev_start:X} followed by 0x{start:X})") + if ( + isinstance(start, int) + and isinstance(prev_start, int) + and start < prev_start + ): + log.error( + f"Error: Group segment {self.name} contains subsegments which are out of ascending rom order (0x{prev_start:X} followed by 0x{start:X})" + ) vram = None if start != "auto": assert isinstance(start, int) vram = self.get_most_parent().rom_to_ram(start) - segment: Segment = Segment.from_yaml(segment_class, subsection_yaml, start, end, vram) + segment: Segment = Segment.from_yaml( + segment_class, subsection_yaml, start, end, vram + ) segment.sibling = base_segments.get(segment.name, None) segment.parent = self - # TODO: assumes section order - generalize and stuff - if not self.section_boundaries["data"].has_start() and "data" in segment.type: - self.section_boundaries["data"].start = segment.vram_start - if not self.section_boundaries["rodata"].has_start() and "rodata" in segment.type: - self.section_boundaries["data"].end = segment.vram_start - self.section_boundaries["rodata"].start = segment.vram_start - if not self.section_boundaries["rodata"].has_end() and "bss" in segment.type: - self.section_boundaries["rodata"].end = segment.vram_start - self.section_boundaries["bss"].start = segment.vram_start + for i, section in enumerate(self.section_order): + if not self.section_boundaries[section].has_start() and dotless_type( + section + ) == dotless_type(segment.type): + if i > 0: + prev_section = self.section_order[i - 1] + self.section_boundaries[prev_section].end = segment.vram_start + self.section_boundaries[section].start = segment.vram_start ret.append(segment) # todo change - if typ in ["c", "asm", "hasm"]: + if typ in CODE_TYPES: base_segments[segment.name] = segment prev_start = start @@ -202,15 +256,21 @@ class CommonSegGroup(CommonSegment): rom_start = "auto" vram_start = "auto" - ret.insert(idx, (Segment(rom_start, "auto", "all_" + section, "", vram_start))) + ret.insert( + idx, (Segment(rom_start, "auto", "all_" + section, "", vram_start)) + ) check = True while check: check = self.handle_alls(ret, base_segments) - if self.section_boundaries["rodata"].has_start() and not self.section_boundaries["rodata"].has_end(): + # TODO why is this necessary? + if ( + self.section_boundaries[".rodata"].has_start() + and not self.section_boundaries[".rodata"].has_end() + ): assert self.vram_end is not None - self.section_boundaries["rodata"].end = self.vram_end + self.section_boundaries[".rodata"].end = self.vram_end return ret @@ -218,8 +278,14 @@ class CommonSegGroup(CommonSegment): return [entry for sub in self.subsegments for entry in sub.get_linker_entries()] def scan(self, rom_bytes): + # Always scan code first for sub in self.subsegments: - if sub.should_scan(): + if sub.type in CODE_TYPES and sub.should_scan(): + sub.scan(rom_bytes) + + # Scan everyone else + for sub in self.subsegments: + if sub.type not in CODE_TYPES and sub.should_scan(): sub.scan(rom_bytes) def split(self, rom_bytes): @@ -241,10 +307,8 @@ class CommonSegGroup(CommonSegment): return c - def get_most_parent(self): - seg = self - - while seg.parent: - seg = seg.parent - - return seg + def get_subsegment_for_ram(self, addr) -> Optional[Segment]: + for sub in self.subsegments: + if sub.contains_vram(addr): + return sub + return None diff --git a/tools/splat/segtypes/common/header.py b/tools/splat/segtypes/common/header.py index a76d931cff..15c651c4e5 100644 --- a/tools/splat/segtypes/common/header.py +++ b/tools/splat/segtypes/common/header.py @@ -2,6 +2,7 @@ from segtypes.common.segment import CommonSegment from pathlib import Path from util import options + class CommonSegHeader(CommonSegment): def should_split(self): return self.extract and options.mode_active("code") @@ -11,8 +12,8 @@ class CommonSegHeader(CommonSegment): if typ == "ascii": text = data.decode("ASCII").strip() text = text.replace("\x00", "\\0") # escape NUL chars - dstr = "\"" + text + "\"" - else: # .word, .byte + dstr = '"' + text + '"' + else: # .word, .byte dstr = "0x" + data.hex().upper() dstr = dstr.ljust(20 - len(typ)) diff --git a/tools/splat/segtypes/common/lib.py b/tools/splat/segtypes/common/lib.py new file mode 100644 index 0000000000..430218541c --- /dev/null +++ b/tools/splat/segtypes/common/lib.py @@ -0,0 +1,57 @@ +from segtypes.n64.segment import N64Segment +from segtypes.linker_entry import LinkerEntry + +from util import options, log + + +class CommonSegLib(N64Segment): + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) + if isinstance(yaml, dict): + log.error("Error: 'dict' not currently supported for 'lib' segment") + return + if len(args) < 1: + log.error(f"Error: {self.name} is missing object file") + return + + self.extract = False + + if len(args) > 1: + self.object, self.section = args[0], args[1] + else: + self.object, self.section = args[0], ".text" + + def get_linker_section(self) -> str: + return self.section + + def get_linker_entries(self): + path = options.get_lib_path() / self.name + + object_path = f"{path}.a:{self.object}.o" + + return [LinkerEntry(self, [path], object_path, self.get_linker_section())] diff --git a/tools/splat/segtypes/common/linker_section.py b/tools/splat/segtypes/common/linker_section.py new file mode 100644 index 0000000000..c54639026b --- /dev/null +++ b/tools/splat/segtypes/common/linker_section.py @@ -0,0 +1,12 @@ +from dataclasses import dataclass + + +def dotless_type(type: str) -> str: + return type[1:] if type[0] == "." else type + + +@dataclass +class LinkerSection: + name: str + started: bool = False + ended: bool = False diff --git a/tools/splat/segtypes/common/rdata.py b/tools/splat/segtypes/common/rdata.py new file mode 100644 index 0000000000..9c0ee300ce --- /dev/null +++ b/tools/splat/segtypes/common/rdata.py @@ -0,0 +1,6 @@ +from segtypes.common.data import CommonSegData + + +class CommonSegRdata(CommonSegData): + def get_linker_section(self) -> str: + return ".rdata" diff --git a/tools/splat/segtypes/common/rodata.py b/tools/splat/segtypes/common/rodata.py index 8cf1164fb8..be08cba5d3 100644 --- a/tools/splat/segtypes/common/rodata.py +++ b/tools/splat/segtypes/common/rodata.py @@ -1,5 +1,6 @@ from segtypes.common.data import CommonSegData + class CommonSegRodata(CommonSegData): def get_linker_section(self) -> str: return ".rodata" diff --git a/tools/splat/segtypes/common/segment.py b/tools/splat/segtypes/common/segment.py index 2ccda48156..10e2b850bd 100644 --- a/tools/splat/segtypes/common/segment.py +++ b/tools/splat/segtypes/common/segment.py @@ -1,4 +1,5 @@ from segtypes.segment import Segment + class CommonSegment(Segment): pass diff --git a/tools/splat/segtypes/linker_entry.py b/tools/splat/segtypes/linker_entry.py index 4eabc17b30..f6ece746f3 100644 --- a/tools/splat/segtypes/linker_entry.py +++ b/tools/splat/segtypes/linker_entry.py @@ -1,5 +1,6 @@ from typing import Union, List from pathlib import Path +from segtypes.common.linker_section import LinkerSection, dotless_type from util import options from segtypes.segment import Segment import os @@ -24,9 +25,15 @@ def clean_up_path(path: Path) -> Path: # If it wasn't relative to that too, then just return the path as-is return path + def path_to_object_path(path: Path) -> Path: path = clean_up_path(path) - return options.get_build_path() / path.with_suffix(path.suffix + ".o") + if options.use_o_as_suffix(): + full_suffix = ".o" + else: + full_suffix = path.suffix + ".o" + return clean_up_path(options.get_build_path() / path.with_suffix(full_suffix)) + def write_file_if_different(path: Path, new_content: str): if path.exists(): @@ -39,34 +46,42 @@ def write_file_if_different(path: Path, new_content: str): with path.open("w") as f: 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']: + 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: if segment.parent: return to_cname(segment.parent.name + "_" + segment.name) else: return to_cname(segment.name) + class LinkerEntry: - def __init__(self, segment: Segment, src_paths: List[Path], object_path: Path, section: str): + def __init__( + self, segment: Segment, src_paths: List[Path], object_path: Path, section: str + ): self.segment = segment self.src_paths = [clean_up_path(p) for p in src_paths] self.section = section if self.section == "linker" or self.section == "linker_offset": self.object_path = None + elif self.segment.type == "lib": + self.object_path = object_path else: self.object_path = path_to_object_path(object_path) -class LinkerWriter(): + +class LinkerWriter: def __init__(self): - self.shiftable: bool = options.get("shiftable", False) - self.linker_discard_section: bool = options.get("linker_discard_section", True) + self.shiftable: bool = options.get_shiftable() + self.linker_discard_section: bool = options.linker_discard_section() self.entries: List[LinkerEntry] = [] self.buffer: List[str] = [] @@ -77,6 +92,9 @@ class LinkerWriter(): self._writeln("SECTIONS") self._begin_block() + if options.get_gp() is not None: + self._writeln("_gp = " + f"0x{options.get_gp():X};") + def add(self, segment: Segment): entries = segment.get_linker_entries() self.entries.extend(entries) @@ -85,46 +103,42 @@ class LinkerWriter(): seg_name = get_segment_cname(segment) - self._write_symbol(f"{seg_name}_TEXT_START", ".") + section_labels = [ + LinkerSection(l) + for l in options.ld_section_labels() + if l in options.get_section_order() + ] force_new_section = False - text_ended = False - data_started = False - data_ended = False - bss_started = False cur_section = None for i, entry in enumerate(entries): cur_section = entry.section - if cur_section == "linker": # TODO: isinstance is preferable + if cur_section == "linker": # TODO: isinstance is preferable self._end_block() self._begin_segment(entry.segment) continue elif cur_section == "linker_offset": - self._write_symbol(f"{get_segment_cname(entry.segment)}_OFFSET", f". - {get_segment_cname(segment)}_ROM_START") + self._write_symbol( + f"{get_segment_cname(entry.segment)}_OFFSET", + f". - {get_segment_cname(segment)}_ROM_START", + ) continue - # text/data/bss START/END labels - if not data_started and ("data" in cur_section or "rodata" in cur_section): - if not text_ended: - text_ended = True - self._write_symbol(f"{seg_name}_TEXT_END", ".") + for i, section in enumerate(section_labels): + if not section.started and section.name == cur_section: + if i > 0: + if not section_labels[i - 1].ended: + section_labels[i - 1].ended = True + self._write_symbol( + f"{seg_name}{section_labels[i - 1].name.upper()}_END", + ".", + ) + section.started = True + self._write_symbol(f"{seg_name}{section.name.upper()}_START", ".") - data_started = True - self._write_symbol(f"{seg_name}_DATA_START", ".") - elif data_started and not data_ended and "data" not in cur_section and "rodata" not in cur_section: - data_ended = True - self._write_symbol(f"{seg_name}_DATA_END", ".") - - if not bss_started and i < (len(entries) - 1) and "bss" in entries[i + 1].section: - bss_started = True - self._write_symbol(f"{seg_name}_BSS_START", ".") - elif not bss_started and "bss" in cur_section: - bss_started = True - self._write_symbol(f"{seg_name}_BSS_START", ".") - - if options.get("enable_ld_alignment_hack", False): + if options.enable_ld_alignment_hack(): start = entry.segment.rom_start if isinstance(start, int): # Create new sections for non-subalign alignment (hack) @@ -136,21 +150,26 @@ class LinkerWriter(): if start % 0x10 != 0 and i != 0: force_new_section = True - if entry.object_path and cur_section == ".data": - path_cname = re.sub(r"[^0-9a-zA-Z_]", "_", str(entry.segment.dir / entry.segment.name) + ".".join(entry.object_path.suffixes[:-1])) + if ( + entry.object_path + and cur_section == ".data" + and entry.segment.type != "lib" + ): + path_cname = re.sub( + r"[^0-9a-zA-Z_]", + "_", + str(entry.segment.dir / entry.segment.name) + + ".".join(entry.object_path.suffixes[:-1]), + ) self._write_symbol(path_cname, ".") self._writeln(f"{entry.object_path}({cur_section});") - if not text_ended: - self._write_symbol(f"{seg_name}_TEXT_END", ".") - if not data_started: - self._write_symbol(f"{seg_name}_DATA_START", ".") - if not data_ended: - self._write_symbol(f"{seg_name}_DATA_END", ".") - if not bss_started: - self._write_symbol(f"{seg_name}_BSS_START", ".") - self._write_symbol(f"{seg_name}_BSS_END", ".") + for section in section_labels: + if section.started and not section.ended: + self._write_symbol( + f"{seg_name}_{dotless_type(section.name).upper()}_END", "." + ) self._end_segment(segment) @@ -161,25 +180,28 @@ class LinkerWriter(): self._writeln("*(*);") self._end_block() - self._end_block() # SECTIONS + self._end_block() # SECTIONS assert self._indent_level == 0 - write_file_if_different(options.get_ld_script_path(), "\n".join(self.buffer) + "\n") + write_file_if_different( + options.get_ld_script_path(), "\n".join(self.buffer) + "\n" + ) def save_symbol_header(self): path = options.get_linker_symbol_header_path() if path: - write_file_if_different(path, + write_file_if_different( + path, "#ifndef _HEADER_SYMBOLS_H_\n" "#define _HEADER_SYMBOLS_H_\n" "\n" - "#include \"common.h\"\n" + '#include "common.h"\n' "\n" - + "".join(f"extern Addr {symbol};\n" for symbol in self.symbols) + - "\n" - "#endif\n" + + "".join(f"extern Addr {symbol};\n" for symbol in self.symbols) + + "\n" + "#endif\n", ) def _writeln(self, line: str): @@ -228,7 +250,9 @@ class LinkerWriter(): self._write_symbol(f"{name}_ROM_START", "__romPos") self._write_symbol(f"{name}_VRAM", f"ADDR(.{name})") - self._writeln(f".{name} {vram_str}: AT({name}_ROM_START) SUBALIGN({segment.subalign})") + self._writeln( + f".{name} {vram_str}: AT({name}_ROM_START) SUBALIGN({segment.subalign})" + ) self._begin_block() def _end_segment(self, segment: Segment): @@ -237,7 +261,11 @@ class LinkerWriter(): name = get_segment_cname(segment) # force end if not shiftable/auto - if not self.shiftable and isinstance(segment.rom_start, int) and isinstance(segment.rom_end, int): + if ( + not self.shiftable + and isinstance(segment.rom_start, int) + and isinstance(segment.rom_end, int) + ): self._write_symbol(f"{name}_ROM_END", segment.rom_end) self._writeln(f"__romPos = 0x{segment.rom_end:X};") else: diff --git a/tools/splat/segtypes/n64/Yay0.py b/tools/splat/segtypes/n64/Yay0.py index b263813666..f70f7762de 100644 --- a/tools/splat/segtypes/n64/Yay0.py +++ b/tools/splat/segtypes/n64/Yay0.py @@ -3,13 +3,16 @@ from util.n64 import Yay0decompress from util import options from util import log + class N64SegYay0(N64Segment): def split(self, rom_bytes): out_dir = options.get_asset_path() / self.dir out_dir.mkdir(parents=True, exist_ok=True) if self.rom_end == "auto": - log.error(f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it") + log.error( + f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" + ) out_path = out_dir / f"{self.name}.bin" with open(out_path, "wb") as f: @@ -19,13 +22,14 @@ class N64SegYay0(N64Segment): f.write(decompressed_bytes) self.log(f"Wrote {self.name} to {out_path}") - def get_linker_entries(self): from segtypes.linker_entry import LinkerEntry - return [LinkerEntry( - self, - [options.get_asset_path() / self.dir / f"{self.name}.bin"], - options.get_asset_path() / self.dir / f"{self.name}.Yay0", - self.get_linker_section() - )] + return [ + LinkerEntry( + self, + [options.get_asset_path() / self.dir / f"{self.name}.bin"], + options.get_asset_path() / self.dir / f"{self.name}.Yay0", + self.get_linker_section(), + ) + ] diff --git a/tools/splat/segtypes/n64/asm.py b/tools/splat/segtypes/n64/asm.py index d3522c9e0d..6db27bfd32 100644 --- a/tools/splat/segtypes/n64/asm.py +++ b/tools/splat/segtypes/n64/asm.py @@ -1,6 +1,4 @@ from segtypes.common.asm import CommonSegAsm -from typing import Optional -from pathlib import Path from util import options @@ -10,14 +8,18 @@ class N64SegAsm(CommonSegAsm): def get_file_header(): ret = [] - ret.append(".include \"macro.inc\"") + ret.append('.include "macro.inc"') ret.append("") ret.append("# assembler directives") ret.append(".set noat # allow manual use of $at") ret.append(".set noreorder # don't insert nops after branches") ret.append(".set gp=64 # allow use of 64-bit general purpose registers") ret.append("") - ret.append(".section .text, \"ax\"") + preamble = options.get_generated_s_preamble() + if preamble: + ret.append(preamble) + ret.append("") + ret.append('.section .text, "ax"') ret.append("") return ret diff --git a/tools/splat/segtypes/n64/ci4.py b/tools/splat/segtypes/n64/ci4.py index e1345c97fe..aa48c130ee 100644 --- a/tools/splat/segtypes/n64/ci4.py +++ b/tools/splat/segtypes/n64/ci4.py @@ -1,6 +1,7 @@ from segtypes.n64.ci8 import N64SegCi8 from util import iter + class N64SegCi4(N64SegCi8): @staticmethod def parse_image(data, width, height, flip_h=False, flip_v=False): diff --git a/tools/splat/segtypes/n64/ci8.py b/tools/splat/segtypes/n64/ci8.py index b96bfd22ee..9db4dae273 100644 --- a/tools/splat/segtypes/n64/ci8.py +++ b/tools/splat/segtypes/n64/ci8.py @@ -8,30 +8,62 @@ from util import iter if TYPE_CHECKING: from segtypes.n64.palette import N64SegPalette as Palette -class N64SegCi8(N64SegRgba16): - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) - self.palette: 'Optional[Palette]' = None +class N64SegCi8(N64SegRgba16): + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) + + self.palette: "Optional[Palette]" = None self.palette_name = self.name def split(self, rom_bytes): path = options.get_asset_path() / self.dir / (self.name + ".png") path.parent.mkdir(parents=True, exist_ok=True) - data = rom_bytes[self.rom_start:self.rom_end] + data = rom_bytes[self.rom_start : self.rom_end] if self.palette is None: # TODO: output with blank palette - log.error(f"no palette sibling segment exists\n(hint: add a segment with type 'palette' and name '{self.name}')") + log.error( + f"no palette sibling segment exists\n(hint: add a segment with type 'palette' and name '{self.name}')" + ) return - w = png.Writer(self.width, self.height, palette=self.palette.parse_palette(rom_bytes)) - image = self.__class__.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical) + w = png.Writer( + self.width, self.height, palette=self.palette.parse_palette(rom_bytes) + ) + image = self.__class__.parse_image( + data, self.width, self.height, self.flip_horizontal, self.flip_vertical + ) with open(self.out_path(), "wb") as f: w.write_array(f, image) - + self.palette.extract = False @staticmethod @@ -39,7 +71,7 @@ class N64SegCi8(N64SegRgba16): # hot path if not flip_h and not flip_v: return data - + flipped_data = bytearray() for x, y, i in iter.iter_image_indexes(width, height, 1, 1, flip_h, flip_v): diff --git a/tools/splat/segtypes/n64/cpp.py b/tools/splat/segtypes/n64/cpp.py index c88ffd344d..f656b925a8 100644 --- a/tools/splat/segtypes/n64/cpp.py +++ b/tools/splat/segtypes/n64/cpp.py @@ -1,6 +1,7 @@ from segtypes.n64.c import N64SegC from util import options + class N64SegCpp(N64SegC): def out_path(self): return options.get_src_path() / self.dir / f"{self.name}.cpp" diff --git a/tools/splat/segtypes/n64/header.py b/tools/splat/segtypes/n64/header.py index e3b548af6a..b0e91baaea 100644 --- a/tools/splat/segtypes/n64/header.py +++ b/tools/splat/segtypes/n64/header.py @@ -2,15 +2,22 @@ from segtypes.common.header import CommonSegHeader from pathlib import Path from util import options + class N64SegHeader(CommonSegHeader): def parse_header(self, rom_bytes): - encoding = options.get("header_encoding", "ASCII") + encoding = options.get_header_encoding() header_lines = [] header_lines.append(f".section .data\n") - header_lines.append(self.get_line("word", rom_bytes[0x00:0x04], "PI BSB Domain 1 register")) - header_lines.append(self.get_line("word", rom_bytes[0x04:0x08], "Clockrate setting")) - header_lines.append(self.get_line("word", rom_bytes[0x08:0x0C], "Entrypoint address")) + header_lines.append( + self.get_line("word", rom_bytes[0x00:0x04], "PI BSB Domain 1 register") + ) + header_lines.append( + self.get_line("word", rom_bytes[0x04:0x08], "Clockrate setting") + ) + header_lines.append( + self.get_line("word", rom_bytes[0x08:0x0C], "Entrypoint address") + ) header_lines.append(self.get_line("word", rom_bytes[0x0C:0x10], "Revision")) header_lines.append(self.get_line("word", rom_bytes[0x10:0x14], "Checksum 1")) header_lines.append(self.get_line("word", rom_bytes[0x14:0x18], "Checksum 2")) @@ -18,15 +25,25 @@ class N64SegHeader(CommonSegHeader): header_lines.append(self.get_line("word", rom_bytes[0x1C:0x20], "Unknown 2")) if encoding != "word": - header_lines.append(".ascii \"" + rom_bytes[0x20:0x34].decode(encoding).strip().ljust(20) + "\" /* Internal name */") + header_lines.append( + f'.ascii "' + + rom_bytes[0x20:0x34].decode(encoding).strip().ljust(20) + + '" /* Internal name */' + ) else: for i in range(0x20, 0x34, 4): - header_lines.append(self.get_line("word", rom_bytes[i:i+4], "Internal name")) + header_lines.append( + self.get_line("word", rom_bytes[i : i + 4], "Internal name") + ) header_lines.append(self.get_line("word", rom_bytes[0x34:0x38], "Unknown 3")) header_lines.append(self.get_line("word", rom_bytes[0x38:0x3C], "Cartridge")) - header_lines.append(self.get_line("ascii", rom_bytes[0x3C:0x3E], "Cartridge ID")) - header_lines.append(self.get_line("ascii", rom_bytes[0x3E:0x3F], "Country code")) + header_lines.append( + self.get_line("ascii", rom_bytes[0x3C:0x3E], "Cartridge ID") + ) + header_lines.append( + self.get_line("ascii", rom_bytes[0x3E:0x3F], "Country code") + ) header_lines.append(self.get_line("byte", rom_bytes[0x3F:0x40], "Version")) header_lines.append("") diff --git a/tools/splat/segtypes/n64/i4.py b/tools/splat/segtypes/n64/i4.py index 96e866054a..f4ef4a463d 100644 --- a/tools/splat/segtypes/n64/i4.py +++ b/tools/splat/segtypes/n64/i4.py @@ -3,6 +3,7 @@ import png from math import ceil from util import iter + class N64SegI4(N64SegRgba16): @staticmethod def get_writer(width, height): diff --git a/tools/splat/segtypes/n64/i8.py b/tools/splat/segtypes/n64/i8.py index a5e4065cdd..892e615867 100644 --- a/tools/splat/segtypes/n64/i8.py +++ b/tools/splat/segtypes/n64/i8.py @@ -1,5 +1,6 @@ from segtypes.n64.i4 import N64SegI4 + class N64SegI8(N64SegI4): @staticmethod def parse_image(data, width, height, flip_h=False, flip_v=False): diff --git a/tools/splat/segtypes/n64/ia16.py b/tools/splat/segtypes/n64/ia16.py index 08baa8bea7..eb9f6ef4e9 100644 --- a/tools/splat/segtypes/n64/ia16.py +++ b/tools/splat/segtypes/n64/ia16.py @@ -1,5 +1,6 @@ from segtypes.n64.ia4 import N64SegIa4 + class N64SegIa16(N64SegIa4): def parse_image(self, data): return data diff --git a/tools/splat/segtypes/n64/ia4.py b/tools/splat/segtypes/n64/ia4.py index 93aadd82cd..ec807378d1 100644 --- a/tools/splat/segtypes/n64/ia4.py +++ b/tools/splat/segtypes/n64/ia4.py @@ -3,6 +3,7 @@ import png from math import ceil from util import iter + class N64SegIa4(N64SegRgba16): @staticmethod def get_writer(width, height): diff --git a/tools/splat/segtypes/n64/ia8.py b/tools/splat/segtypes/n64/ia8.py index 3506df7265..0c24b3ce46 100644 --- a/tools/splat/segtypes/n64/ia8.py +++ b/tools/splat/segtypes/n64/ia8.py @@ -2,12 +2,15 @@ from segtypes.n64.ia4 import N64SegIa4 from math import ceil from util import iter + class N64SegIa8(N64SegIa4): @staticmethod def parse_image(data, width, height, flip_h=False, flip_v=False): img = bytearray() - for x, y, i in iter.iter_image_indexes(width, height, flip_h=flip_h, flip_v=flip_v): + for x, y, i in iter.iter_image_indexes( + width, height, flip_h=flip_h, flip_v=flip_v + ): b = data[i] i = (b >> 4) & 0xF diff --git a/tools/splat/segtypes/n64/img.py b/tools/splat/segtypes/n64/img.py index a87f84b9b4..b67ee080ed 100644 --- a/tools/splat/segtypes/n64/img.py +++ b/tools/splat/segtypes/n64/img.py @@ -4,9 +4,35 @@ from segtypes.n64.segment import N64Segment from util import options from util import log + class N64SegImg(N64Segment): - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) if isinstance(yaml, dict): if self.extract: @@ -17,15 +43,23 @@ class N64SegImg(N64Segment): self.flip_vertical = bool(yaml.get("flip_y", False)) if yaml.get("flip"): - self.warn(f"'flip' parameter for img segments is deprecated; use flip_x and flip_y instead") + self.warn( + f"'flip' parameter for img segments is deprecated; use flip_x and flip_y instead" + ) flip = yaml.get("flip") - self.flip_vertical = flip == "both" or flip.startswith("v") or flip == "y" - self.flip_horizontal = flip == "both" or flip.startswith("h") or flip == "x" + self.flip_vertical = ( + flip == "both" or flip.startswith("v") or flip == "y" + ) + self.flip_horizontal = ( + flip == "both" or flip.startswith("h") or flip == "x" + ) else: if self.extract: if len(yaml) < 5: - log.error(f"Error: {self.name} is missing width and height parameters") + log.error( + f"Error: {self.name} is missing width and height parameters" + ) self.width = yaml[3] self.height = yaml[4] @@ -36,7 +70,9 @@ class N64SegImg(N64Segment): expected_len = int(self.max_length()) actual_len = self.rom_end - self.rom_start if actual_len > expected_len and actual_len - expected_len > self.subalign: - log.error(f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)") + log.error( + f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)" + ) def out_path(self) -> Optional[Path]: return options.get_asset_path() / self.dir / f"{self.name}.png" diff --git a/tools/splat/segtypes/n64/linker.py b/tools/splat/segtypes/n64/linker.py index d3123be0ae..1253e0771f 100644 --- a/tools/splat/segtypes/n64/linker.py +++ b/tools/splat/segtypes/n64/linker.py @@ -1,8 +1,8 @@ from segtypes.n64.segment import N64Segment + class N64SegLinker(N64Segment): def get_linker_entries(self): from segtypes.linker_entry import LinkerEntry return [LinkerEntry(self, [], self.name, "linker")] - diff --git a/tools/splat/segtypes/n64/linker_offset.py b/tools/splat/segtypes/n64/linker_offset.py index 4aa50b1ef4..fdf3043d6f 100644 --- a/tools/splat/segtypes/n64/linker_offset.py +++ b/tools/splat/segtypes/n64/linker_offset.py @@ -1,8 +1,8 @@ from segtypes.n64.segment import N64Segment + class N64SegLinker_offset(N64Segment): def get_linker_entries(self): from segtypes.linker_entry import LinkerEntry return [LinkerEntry(self, [], self.name, "linker_offset")] - diff --git a/tools/splat/segtypes/n64/palette.py b/tools/splat/segtypes/n64/palette.py index ecd26ccebc..15c2f1ed7c 100644 --- a/tools/splat/segtypes/n64/palette.py +++ b/tools/splat/segtypes/n64/palette.py @@ -10,36 +10,70 @@ import png if TYPE_CHECKING: from segtypes.n64.ci8 import N64SegCi8 as Raster + class N64SegPalette(N64Segment): require_unique_name = False - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) - self.raster: 'Optional[Raster]' = None + self.raster: "Optional[Raster]" = None # palette segments must be named as one of the following: # 1) same as the relevant raster segment name (max. 1 palette) # 2) relevant raster segment name + "." + unique palette name # 3) unique, referencing the relevant raster segment using `raster_name` - self.raster_name = yaml.get( - "raster_name", - self.name.split(".")[0] - ) if isinstance(yaml, dict) else self.name.split(".")[0] + self.raster_name = ( + yaml.get("raster_name", self.name.split(".")[0]) + if isinstance(yaml, dict) + else self.name.split(".")[0] + ) if self.extract: if self.rom_end == "auto": - log.error(f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it") + log.error( + f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" + ) if self.max_length() and isinstance(self.rom_end, int): expected_len = int(self.max_length()) actual_len = self.rom_end - self.rom_start - if actual_len > expected_len and actual_len - expected_len > self.subalign: - log.error(f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)") + if ( + actual_len > expected_len + and actual_len - expected_len > self.subalign + ): + log.error( + f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)" + ) def should_split(self): return self.extract and (super().should_split() or options.mode_active("img")) - + def out_path(self) -> Optional[Path]: return options.get_asset_path() / self.dir / f"{self.name}.png" @@ -49,13 +83,15 @@ class N64SegPalette(N64Segment): log.error(f"orphaned palette segment: {self.name} lacks ci4/ci8 sibling") return - w = png.Writer(self.raster.width, self.raster.height, palette=self.parse_palette(rom_bytes)) + w = png.Writer( + self.raster.width, self.raster.height, palette=self.parse_palette(rom_bytes) + ) image = self.raster.__class__.parse_image( - rom_bytes[self.raster.rom_start:self.raster.rom_end], + rom_bytes[self.raster.rom_start : self.raster.rom_end], self.raster.width, self.raster.height, self.raster.flip_horizontal, - self.raster.flip_vertical + self.raster.flip_vertical, ) with open(self.out_path(), "wb") as f: @@ -64,7 +100,7 @@ class N64SegPalette(N64Segment): self.raster.extract = False def parse_palette(self, rom_bytes): - data = rom_bytes[self.rom_start:self.rom_end] + data = rom_bytes[self.rom_start : self.rom_end] palette = [] for a, b in iter_in_groups(data, 2): @@ -78,9 +114,11 @@ class N64SegPalette(N64Segment): def get_linker_entries(self): from segtypes.linker_entry import LinkerEntry - return [LinkerEntry( - self, - [options.get_asset_path() / self.dir / f"{self.name}.png"], - options.get_asset_path() / self.dir / f"{self.name}.pal", - self.get_linker_section() - )] + return [ + LinkerEntry( + self, + [options.get_asset_path() / self.dir / f"{self.name}.png"], + options.get_asset_path() / self.dir / f"{self.name}.pal", + self.get_linker_section(), + ) + ] diff --git a/tools/splat/segtypes/n64/rgba16.py b/tools/splat/segtypes/n64/rgba16.py index aeec01dcee..366e30c347 100644 --- a/tools/splat/segtypes/n64/rgba16.py +++ b/tools/splat/segtypes/n64/rgba16.py @@ -1,8 +1,6 @@ from segtypes.n64.img import N64SegImg import png from util import iter -from util import log -from util import options from util.color import unpack_color # TODO: move common behaviour to N64ImgSegment and have all image segments extend that instead @@ -11,11 +9,20 @@ class N64SegRgba16(N64SegImg): path = self.out_path() path.parent.mkdir(parents=True, exist_ok=True) - data = rom_bytes[self.rom_start: self.rom_end] + data = rom_bytes[self.rom_start : self.rom_end] w = self.__class__.get_writer(self.width, self.height) with open(path, "wb") as f: - w.write_array(f, self.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical)) + w.write_array( + f, + self.parse_image( + data, + self.width, + self.height, + self.flip_horizontal, + self.flip_vertical, + ), + ) self.log(f"Wrote {self.name} to {path}") diff --git a/tools/splat/segtypes/n64/rgba32.py b/tools/splat/segtypes/n64/rgba32.py index a101a668cb..aa1120e194 100644 --- a/tools/splat/segtypes/n64/rgba32.py +++ b/tools/splat/segtypes/n64/rgba32.py @@ -1,5 +1,6 @@ from segtypes.n64.rgba16 import N64SegRgba16 + class N64SegRgba32(N64SegRgba16): @staticmethod def parse_image(data, width, height, flip_h=False, flip_v=False): diff --git a/tools/splat/segtypes/n64/segment.py b/tools/splat/segtypes/n64/segment.py index a4d859948a..8f9c3cccd3 100644 --- a/tools/splat/segtypes/n64/segment.py +++ b/tools/splat/segtypes/n64/segment.py @@ -1,4 +1,5 @@ from segtypes.segment import Segment + class N64Segment(Segment): pass diff --git a/tools/splat/segtypes/n64/vtx.py b/tools/splat/segtypes/n64/vtx.py index 483fe98481..f18fb19f89 100644 --- a/tools/splat/segtypes/n64/vtx.py +++ b/tools/splat/segtypes/n64/vtx.py @@ -14,15 +14,39 @@ from util.log import error from util import options from segtypes.common.codesubsegment import CommonSegCodeSubsegment + class N64SegVtx(CommonSegCodeSubsegment): - def __init__(self, rom_start, rom_end, type, name, vram_start, extract, - given_subalign, given_is_overlay, given_dir, args = [], yaml = {}): - super().__init__(rom_start, rom_end, type, name, vram_start, extract, - given_subalign, given_is_overlay, given_dir, args, yaml) + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args=[], + yaml={}, + ): + super().__init__( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) self.file_text = None def get_linker_section(self) -> str: - return '.data' + return ".data" def out_path(self) -> Path: return options.get_asset_path() / self.dir / f"{self.name}.vtx.inc.c" @@ -31,10 +55,12 @@ class N64SegVtx(CommonSegCodeSubsegment): self.file_text = self.disassemble_data(rom_bytes) def disassemble_data(self, rom_bytes): - vertex_data = rom_bytes[self.rom_start:self.rom_end] + vertex_data = rom_bytes[self.rom_start : self.rom_end] segment_length = len(vertex_data) if (segment_length) % 16 != 0: - error(f"Error: Vtx segment {self.name} length ({segment_length}) is not a multiple of 16!") + error( + f"Error: Vtx segment {self.name} length ({segment_length}) is not a multiple of 16!" + ) lines = [] preamble = options.get_generated_c_premble() @@ -66,7 +92,11 @@ class N64SegVtx(CommonSegCodeSubsegment): f.write(self.file_text) def should_scan(self) -> bool: - return options.mode_active("vtx") and self.rom_start != "auto" and self.rom_end != "auto" + return ( + options.mode_active("vtx") + and self.rom_start != "auto" + and self.rom_end != "auto" + ) def should_split(self) -> bool: return self.extract and options.mode_active("vtx") diff --git a/tools/splat/segtypes/psx/asm.py b/tools/splat/segtypes/psx/asm.py index b476892ddd..6a8c92eb52 100644 --- a/tools/splat/segtypes/psx/asm.py +++ b/tools/splat/segtypes/psx/asm.py @@ -10,13 +10,17 @@ class PsxSegAsm(CommonSegAsm): def get_file_header(): ret = [] - ret.append(".include \"macro.inc\"") + ret.append('.include "macro.inc"') ret.append("") ret.append("# assembler directives") ret.append(".set noat # allow manual use of $at") ret.append(".set noreorder # don't insert nops after branches") ret.append("") - ret.append(".section .text, \"ax\"") + preamble = options.get_generated_s_preamble() + if preamble: + ret.append(preamble) + ret.append("") + ret.append('.section .text, "ax"') ret.append("") return ret diff --git a/tools/splat/segtypes/psx/header.py b/tools/splat/segtypes/psx/header.py index b3f3e537ff..631b57b86a 100644 --- a/tools/splat/segtypes/psx/header.py +++ b/tools/splat/segtypes/psx/header.py @@ -1,33 +1,59 @@ from segtypes.common.header import CommonSegHeader -from pathlib import Path -from util import options class PsxSegHeader(CommonSegHeader): # little endian so reverse words, TODO: use struct.unpack(" int: return default +def parse_segment_section_order(segment: Union[dict, list]) -> List[str]: + default = options.get_section_order() + if isinstance(segment, dict): + return segment.get("section_order", default) + return default + + class Segment: require_unique_name = True @@ -69,17 +76,25 @@ class Segment: ext_path = options.get_extensions_path() if not ext_path: - log.error(f"could not load presumed extended segment type '{seg_type}' because no extensions path is configured") + log.error( + f"could not load presumed extended segment type '{seg_type}' because no extensions path is configured" + ) try: - ext_spec = importlib.util.spec_from_file_location(f"{platform}.segtypes.{seg_type}", ext_path / f"{seg_type}.py") + ext_spec = importlib.util.spec_from_file_location( + f"{platform}.segtypes.{seg_type}", ext_path / f"{seg_type}.py" + ) ext_mod = importlib.util.module_from_spec(ext_spec) ext_spec.loader.exec_module(ext_mod) except Exception as err: log.write(err, status="error") - log.error(f"could not load segment type '{seg_type}'\n(hint: confirm your extension directory is configured correctly)") + log.error( + f"could not load segment type '{seg_type}'\n(hint: confirm your extension directory is configured correctly)" + ) - return getattr(ext_mod, f"{platform.upper()}Seg{seg_type[0].upper()}{seg_type[1:]}") + return getattr( + ext_mod, f"{platform.upper()}Seg{seg_type[0].upper()}{seg_type[1:]}" + ) @staticmethod def parse_segment_start(segment: Union[dict, list]) -> RomAddr: @@ -111,8 +126,20 @@ class Segment: else: return str(cls.get_default_name(rom_start)) - def __init__(self, rom_start, rom_end, type, name, vram_start, extract = True, - given_subalign = options.get_subalign(), given_is_overlay: Optional[bool] = False, given_dir: Path = Path(), args = [], yaml = {}): + def __init__( + self, + rom_start, + rom_end, + type, + name, + vram_start, + extract=True, + given_subalign=options.get_subalign(), + given_is_overlay: Optional[bool] = False, + given_dir: Path = Path(), + args=[], + yaml={}, + ): self.rom_start = rom_start self.rom_end = rom_end self.type = type @@ -123,13 +150,20 @@ class Segment: self.given_subalign = given_subalign self.given_is_overlay = given_is_overlay self.given_dir = given_dir - self.given_seg_symbols: Dict[int, List[Symbol]] = {} # Symbols known to be in this segment - self.given_ext_symbols: Dict[int, List[Symbol]] = {} # Symbols not in this segment but also not from other overlapping ram address ranges + self.given_seg_symbols: Dict[ + int, List[Symbol] + ] = {} # Symbols known to be in this segment + self.given_ext_symbols: Dict[ + int, List[Symbol] + ] = ( + {} + ) # Symbols not in this segment but also not from other overlapping ram address ranges + self.given_section_order: List[str] = options.get_section_order() - self.parent:Optional[Segment] = None - self.sibling:Optional[Segment] = None + self.parent: Optional[Segment] = None + self.sibling: Optional[Segment] = None - self.args:List[str] = args + self.args: List[str] = args self.yaml = yaml if "skip" in self.args: @@ -146,20 +180,44 @@ class Segment: if isinstance(self.rom_start, int) and isinstance(self.rom_end, int): if self.rom_start > self.rom_end: - log.error(f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})") + log.error( + f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})" + ) @staticmethod - def from_yaml(cls: Type["Segment"], yaml: Union[dict, list], rom_start: RomAddr, rom_end: RomAddr, vram=None): + def from_yaml( + cls: Type["Segment"], + yaml: Union[dict, list], + rom_start: RomAddr, + rom_end: RomAddr, + vram=None, + ): type = Segment.parse_segment_type(yaml) name = Segment.parse_segment_name(cls, rom_start, yaml) - vram_start = vram if vram else parse_segment_vram(yaml) + vram_start = vram if vram is not None else parse_segment_vram(yaml) extract = bool(yaml.get("extract", True)) if isinstance(yaml, dict) else True given_subalign = parse_segment_subalign(yaml) - given_is_overlay:Optional[bool] = yaml.get("overlay", False) if isinstance(yaml, dict) else False + given_is_overlay: Optional[bool] = ( + yaml.get("overlay", False) if isinstance(yaml, dict) else False + ) given_dir = Path(yaml.get("dir", "")) if isinstance(yaml, dict) else Path() - args:List[str] = [] if isinstance(yaml, dict) else yaml[3:] + args: List[str] = [] if isinstance(yaml, dict) else yaml[3:] - return cls(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml) + ret = cls( + rom_start, + rom_end, + type, + name, + vram_start, + extract, + given_subalign, + given_is_overlay, + given_dir, + args, + yaml, + ) + cls.given_section_order = parse_segment_section_order(yaml) + return ret @property def needs_symbols(self) -> bool: @@ -215,6 +273,26 @@ class Segment: else: return None + @property + def section_order(self) -> List[str]: + return self.given_section_order + + @property + def rodata_follows_data(self) -> bool: + if ".rodata" not in self.section_order or ".data" not in self.section_order: + return False + return ( + self.section_order.index(".rodata") - self.section_order.index(".data") == 1 + ) + + @property + def text_follows_rodata(self) -> bool: + if ".text" not in self.section_order or ".rodata" not in self.section_order: + return False + return ( + self.section_order.index(".text") - self.section_order.index(".rodata") == 1 + ) + def contains_vram(self, vram: int) -> bool: if self.vram_start is not None and self.vram_end is not None: return vram >= self.vram_start and vram < self.vram_end @@ -266,6 +344,14 @@ class Segment: def out_path(self) -> Optional[Path]: return None + def get_most_parent(self) -> "Segment": + seg = self + + while seg.parent: + seg = seg.parent + + return seg + def get_linker_entries(self) -> "List[LinkerEntry]": from segtypes.linker_entry import LinkerEntry @@ -277,7 +363,7 @@ class Segment: return [] def log(self, msg): - if options.get("verbose", False): + if options.verbose(): log.write(f"{self.type} {self.name}: {msg}") def warn(self, msg: str): @@ -308,3 +394,105 @@ class Segment: @staticmethod def get_default_name(addr) -> str: return f"{addr:X}" + + def retrieve_symbol(self, d, k, t): + if k not in d: + return None + + if t: + items = [s for s in d[k] if s.type == t or s.type == "unknown"] + else: + items = d[k] + + if len(items) > 1: + pass # print(f"Trying to retrieve {k:X} from symbol dict but there are {len(items)} entries to pick from - picking the first") + if len(items) == 0: + return None + return items[0] + + def get_symbol( + self, + addr, + type=None, + create=False, + define=False, + reference=False, + offsets=False, + local_only=False, + dead=True, + ) -> Optional[Symbol]: + ret = None + rom = None + + in_segment = self.contains_vram(addr) + + if in_segment: + # If the vram address is within this segment, we can calculate the symbol's rom address + rom = self.ram_to_rom(addr) + ret = self.retrieve_symbol(self.seg_symbols, addr, type) + elif not local_only: + ret = self.retrieve_symbol(self.ext_symbols, addr, type) + + # Search for symbol ranges + if not ret and offsets: + ret = symbols.retrieve_from_ranges(addr, rom) + + # Reject dead symbols unless we allow them + if not dead and ret and ret.dead: + ret = None + + # Create the symbol if it doesn't exist + if not ret and create: + ret = Symbol(addr, rom=rom, type=type) + symbols.all_symbols.append(ret) + + if in_segment: + if self.is_overlay: + ret.in_overlay = True + if addr not in self.seg_symbols: + self.seg_symbols[addr] = [] + self.seg_symbols[addr].append(ret) + elif not local_only: + if addr not in self.ext_symbols: + self.ext_symbols[addr] = [] + self.ext_symbols[addr].append(ret) + + if ret: + if define: + ret.defined = True + if reference: + ret.referenced = True + + return ret + + def create_symbol( + self, + addr, + type=None, + define=False, + reference=False, + offsets=False, + local_only=False, + dead=True, + ) -> Symbol: + ret = self.get_symbol( + addr, + type=type, + create=True, + define=define, + reference=reference, + offsets=offsets, + local_only=local_only, + dead=dead, + ) + assert ret is not None + + return ret + + def get_func_for_addr(self, addr) -> Optional[Symbol]: + for syms in self.seg_symbols.values(): + for sym in syms: + if sym.type == "func" and sym.contains_vram(addr): + return sym + + return None diff --git a/tools/splat/split.py b/tools/splat/split.py index a140e79c87..a7a94138b0 100755 --- a/tools/splat/split.py +++ b/tools/splat/split.py @@ -1,4 +1,4 @@ -#! /usr/bin/python3 +#! /usr/bin/env python3 import hashlib from typing import Dict, List, Union, Set, Any @@ -14,19 +14,24 @@ from util import options from util import symbols from util import palettes -VERSION = "0.7.10" +VERSION = "0.8.1.0" -parser = argparse.ArgumentParser(description="Split a rom given a rom, a config, and output directory") -parser.add_argument("config", help="path to a compatible config .yaml file", nargs='+') +parser = argparse.ArgumentParser( + description="Split a rom given a rom, a config, and output directory" +) +parser.add_argument("config", help="path to a compatible config .yaml file", nargs="+") parser.add_argument("--target", help="path to a file to split (.z64 rom)") parser.add_argument("--basedir", help="a directory in which to extract the rom") parser.add_argument("--modes", nargs="+", default="all") parser.add_argument("--verbose", action="store_true", help="Enable debug logging") -parser.add_argument("--use-cache", action="store_true", help="Only split changed segments in config") +parser.add_argument( + "--use-cache", action="store_true", help="Only split changed segments in config" +) linker_writer: LinkerWriter config: Dict[str, Any] + def fmt_size(size): if size > 1000000: return str(size // 1000000) + " MB" @@ -35,6 +40,7 @@ def fmt_size(size): else: return str(size) + " B" + def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: seen_segment_names: Set[str] = set() ret = [] @@ -47,11 +53,13 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: seg_type = Segment.parse_segment_type(seg_yaml) segment_class = Segment.get_class_for_type(seg_type) - + this_start = Segment.parse_segment_start(seg_yaml) next_start = Segment.parse_segment_start(config_segments[i + 1]) - segment: Segment = Segment.from_yaml(segment_class, seg_yaml, this_start, next_start) + segment: Segment = Segment.from_yaml( + segment_class, seg_yaml, this_start, next_start + ) if segment.require_unique_name: if segment.name in seen_segment_names: @@ -63,6 +71,7 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: return ret + def get_segment_symbols(segment, all_segments): seg_syms = {} other_syms = {} @@ -89,6 +98,7 @@ def get_segment_symbols(segment, all_segments): return seg_syms, other_syms + def do_statistics(seg_sizes, rom_bytes, seg_split, seg_cached): unk_size = seg_sizes.get("unk", 0) rest_size = 0 @@ -106,8 +116,13 @@ def do_statistics(seg_sizes, rom_bytes, seg_split, seg_cached): if typ != "unk": tmp_size = seg_sizes[typ] tmp_ratio = tmp_size / total_size - log.write(f"{typ:>20}: {fmt_size(tmp_size):>8} ({tmp_ratio:.2%}) {Fore.GREEN}{seg_split[typ]} split{Style.RESET_ALL}, {Style.DIM}{seg_cached[typ]} cached") - log.write(f"{'unknown':>20}: {fmt_size(unk_size):>8} ({unk_ratio:.2%}) from unknown bin files") + log.write( + f"{typ:>20}: {fmt_size(tmp_size):>8} ({tmp_ratio:.2%}) {Fore.GREEN}{seg_split[typ]} split{Style.RESET_ALL}, {Style.DIM}{seg_cached[typ]} cached" + ) + log.write( + f"{'unknown':>20}: {fmt_size(unk_size):>8} ({unk_ratio:.2%}) from unknown bin files" + ) + def merge_configs(main_config, additional_config): # Merge rules are simple @@ -126,14 +141,17 @@ def merge_configs(main_config, additional_config): if type(main_config[curkey]) == list: main_config[curkey] += additional_config[curkey] elif type(main_config[curkey]) == dict: - #need to merge sub areas - main_config[curkey] = merge_configs(main_config[curkey], additional_config[curkey]) + # need to merge sub areas + main_config[curkey] = merge_configs( + main_config[curkey], additional_config[curkey] + ) else: - #not a list or dictionary, must be a number or string, overwrite + # not a list or dictionary, must be a number or string, overwrite main_config[curkey] = additional_config[curkey] return main_config + def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): global config @@ -157,7 +175,7 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): if "sha1" in config: sha1 = hashlib.sha1(rom_bytes).hexdigest() - e_sha1 = config["sha1"] + e_sha1 = config["sha1"].lower() if e_sha1 != sha1: log.error(f"sha1 mismatch: expected {e_sha1}, was {sha1}") @@ -175,7 +193,7 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): try: with options.get_cache_path().open("rb") as f3: cache = pickle.load(f3) - + if verbose: log.write(f"Loaded cache ({len(cache.keys())} items)") except Exception: @@ -224,7 +242,9 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): continue if segment.needs_symbols: - segment_symbols, other_symbols = get_segment_symbols(segment, all_segments) + segment_symbols, other_symbols = get_segment_symbols( + segment, all_segments + ) segment.given_seg_symbols = segment_symbols segment.given_ext_symbols = other_symbols @@ -264,7 +284,7 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): linker_writer.save_linker_script() linker_writer.save_symbol_header() - # write elf_sections.txt - this only lists the generated sections in the elf, not sub sections + # write elf_sections.txt - this only lists the generated sections in the elf, not subsections # that the elf combines into one section if options.get_create_elf_section_list_auto(): section_list = "" @@ -275,7 +295,11 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): # Write undefined_funcs_auto.txt if options.get_create_undefined_funcs_auto(): - to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and s.type == "func"] + to_write = [ + s + for s in symbols.all_symbols + if s.referenced and not s.defined and not s.dead and s.type == "func" + ] if len(to_write) > 0: with open(options.get_undefined_funcs_auto_path(), "w", newline="\n") as f: for symbol in to_write: @@ -283,7 +307,11 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): # write undefined_syms_auto.txt if options.get_create_undefined_syms_auto(): - to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and not s.type == "func"] + to_write = [ + s + for s in symbols.all_symbols + if s.referenced and not s.defined and not s.dead and not s.type == "func" + ] if len(to_write) > 0: with open(options.get_undefined_syms_auto_path(), "w", newline="\n") as f: for symbol in to_write: @@ -292,12 +320,14 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): # print warnings during split for segment in all_segments: if len(segment.warnings) > 0: - log.write(f"{Style.DIM}0x{segment.rom_start:06X}{Style.RESET_ALL} {segment.type} {Style.BRIGHT}{segment.name}{Style.RESET_ALL}:") + log.write( + f"{Style.DIM}0x{segment.rom_start:06X}{Style.RESET_ALL} {segment.type} {Style.BRIGHT}{segment.name}{Style.RESET_ALL}:" + ) for warn in segment.warnings: log.write("warning: " + warn, status="warn") - log.write("") # empty line + log.write("") # empty line # Statistics do_statistics(seg_sizes, rom_bytes, seg_split, seg_cached) @@ -309,6 +339,9 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True): with open(options.get_cache_path(), "wb") as f4: pickle.dump(cache, f4) + if __name__ == "__main__": args = parser.parse_args() - main(args.config, args.basedir, args.target, args.modes, args.verbose, args.use_cache) + main( + args.config, args.basedir, args.target, args.modes, args.verbose, args.use_cache + ) diff --git a/tools/splat/stubs/png.pyi b/tools/splat/stubs/png.pyi index 46543ef25b..07ad4206d2 100644 --- a/tools/splat/stubs/png.pyi +++ b/tools/splat/stubs/png.pyi @@ -1,7 +1,7 @@ from collections import namedtuple from typing import Any, Optional -Resolution = namedtuple('Resolution', 'x y unit_is_meter') +Resolution = namedtuple("Resolution", "x y unit_is_meter") class Error(Exception): ... class FormatError(Error): ... @@ -30,7 +30,28 @@ class Writer: color_planes: Any = ... planes: Any = ... psize: Any = ... - def __init__(self, width: Optional[Any] = ..., height: Optional[Any] = ..., size: Optional[Any] = ..., greyscale: Any = ..., alpha: bool = ..., bitdepth: int = ..., palette: Optional[Any] = ..., transparent: Optional[Any] = ..., background: Optional[Any] = ..., gamma: Optional[Any] = ..., compression: Optional[Any] = ..., interlace: bool = ..., planes: Optional[Any] = ..., colormap: Optional[Any] = ..., maxval: Optional[Any] = ..., chunk_limit: Any = ..., x_pixels_per_unit: Optional[Any] = ..., y_pixels_per_unit: Optional[Any] = ..., unit_is_meter: bool = ...) -> None: ... + def __init__( + self, + width: Optional[Any] = ..., + height: Optional[Any] = ..., + size: Optional[Any] = ..., + greyscale: Any = ..., + alpha: bool = ..., + bitdepth: int = ..., + palette: Optional[Any] = ..., + transparent: Optional[Any] = ..., + background: Optional[Any] = ..., + gamma: Optional[Any] = ..., + compression: Optional[Any] = ..., + interlace: bool = ..., + planes: Optional[Any] = ..., + colormap: Optional[Any] = ..., + maxval: Optional[Any] = ..., + chunk_limit: Any = ..., + x_pixels_per_unit: Optional[Any] = ..., + y_pixels_per_unit: Optional[Any] = ..., + unit_is_meter: bool = ..., + ) -> None: ... def write(self, outfile: Any, rows: Any): ... def write_passes(self, outfile: Any, rows: Any): ... def write_packed(self, outfile: Any, rows: Any): ... @@ -41,6 +62,7 @@ class Writer: def write_chunks(out: Any, chunks: Any) -> None: ... def from_array(a: Any, mode: Optional[Any] = ..., info: Any = ...): ... + fromarray = from_array class Image: @@ -55,7 +77,13 @@ class Reader: transparent: Any = ... atchunk: Any = ... file: Any = ... - def __init__(self, _guess: Optional[Any] = ..., filename: Optional[Any] = ..., file: Optional[Any] = ..., bytes: Optional[Any] = ...) -> None: ... + def __init__( + self, + _guess: Optional[Any] = ..., + filename: Optional[Any] = ..., + file: Optional[Any] = ..., + bytes: Optional[Any] = ..., + ) -> None: ... def chunk(self, lenient: bool = ...): ... def chunks(self) -> None: ... def undo_filter(self, filter_type: Any, scanline: Any, previous: Any): ... diff --git a/tools/splat/util/color.py b/tools/splat/util/color.py index 93383a197b..2b304a5fb8 100644 --- a/tools/splat/util/color.py +++ b/tools/splat/util/color.py @@ -1,13 +1,15 @@ from math import ceil +from util import options + # RRRRRGGG GGBBBBBA def unpack_color(data): - s = int.from_bytes(data[0:2], byteorder="big") + s = int.from_bytes(data[0:2], byteorder=options.get_endianess()) r = (s >> 11) & 0x1F - g = (s >> 6) & 0x1F - b = (s >> 1) & 0x1F - a = (s & 1) * 0xFF + g = (s >> 6) & 0x1F + b = (s >> 1) & 0x1F + a = (s & 1) * 0xFF r = ceil(0xFF * (r / 31)) g = ceil(0xFF * (g / 31)) diff --git a/tools/splat/util/compiler.py b/tools/splat/util/compiler.py new file mode 100644 index 0000000000..046dee5084 --- /dev/null +++ b/tools/splat/util/compiler.py @@ -0,0 +1,34 @@ +from dataclasses import dataclass + + +@dataclass +class Compiler: + name: str + asm_function_macro: str = "glabel" + asm_data_macro: str = "glabel" + asm_end_label: str = "" + c_newline: str = "\n" + asm_inc_header: str = "" + + +GCC = Compiler( + "GCC", + asm_inc_header=".set noat # allow manual use of $at\n.set noreorder # don't insert nops after branches\n\n", +) + +SN64 = Compiler( + "SN64", + asm_function_macro=".globl", + asm_data_macro=".globl", + asm_end_label=".end", + c_newline="\r\n", +) + +compiler_for_name = {"GCC": GCC, "SN64": SN64} + + +def for_name(name: str) -> Compiler: + name = name.upper() + if name in compiler_for_name: + return compiler_for_name[name] + return Compiler(name) diff --git a/tools/splat/util/floats.py b/tools/splat/util/floats.py index 1d9fd001ad..60d66f1db9 100644 --- a/tools/splat/util/floats.py +++ b/tools/splat/util/floats.py @@ -1,10 +1,9 @@ - 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)) + packed = struct.pack(">I", num & (2**32 - 1)) value = struct.unpack(">f", packed)[0] if not value or value == 4294967296.0: @@ -53,10 +52,11 @@ def format_f32_imm(num: int) -> str: return str(value) ret = fmt(prec) - if "." not in ret: + if "." not in ret and "e" not in ret: ret += ".0" return ret + def format_f64_imm(num: int) -> str: - (value,) = struct.unpack(">d", struct.pack(">Q", num & (2 ** 64 - 1))) - return str(value) \ No newline at end of file + (value,) = struct.unpack(">d", struct.pack(">Q", num & (2**64 - 1))) + return str(value) diff --git a/tools/splat/util/iter.py b/tools/splat/util/iter.py index d84b140111..69e1da8cfb 100644 --- a/tools/splat/util/iter.py +++ b/tools/splat/util/iter.py @@ -1,16 +1,28 @@ from itertools import zip_longest from math import ceil + def iter_in_groups(iterable, n, fillvalue=None): args = [iter(iterable)] * n return zip_longest(*args, fillvalue=fillvalue) -def iter_image_indexes(width, height, bytes_per_x=1, bytes_per_y=1, flip_h=False, flip_v=False): + +def iter_image_indexes( + width, height, bytes_per_x=1, bytes_per_y=1, flip_h=False, flip_v=False +): w = int(width * bytes_per_x) h = int(height * bytes_per_y) - xrange = range(w - ceil(bytes_per_x), -1, -ceil(bytes_per_x)) if flip_h else range(0, w, ceil(bytes_per_x)) - yrange = range(h - ceil(bytes_per_y), -1, -ceil(bytes_per_y)) if flip_v else range(0, h, ceil(bytes_per_y)) + xrange = ( + range(w - ceil(bytes_per_x), -1, -ceil(bytes_per_x)) + if flip_h + else range(0, w, ceil(bytes_per_x)) + ) + yrange = ( + range(h - ceil(bytes_per_y), -1, -ceil(bytes_per_y)) + if flip_v + else range(0, h, ceil(bytes_per_y)) + ) for y in yrange: for x in xrange: diff --git a/tools/splat/util/log.py b/tools/splat/util/log.py index 5e8036173a..63ad240cee 100644 --- a/tools/splat/util/log.py +++ b/tools/splat/util/log.py @@ -8,6 +8,7 @@ newline = True Status = Optional[str] + def write(*args, status=None, **kwargs): global newline @@ -17,16 +18,26 @@ def write(*args, status=None, **kwargs): print(status_to_ansi(status) + str(args[0]), *args[1:], **kwargs) + def error(*args, **kwargs): write(*args, **kwargs, status="error") sys.exit(2) + +# The line_num is expected to be zero-indexed +def parsing_error_preamble(path, line_num, line): + write("") + write(f"error reading {path}, line {line_num + 1}:", status="error") + write(f"\t{line}") + + def dot(status: Status = None): global newline print(status_to_ansi(status) + ".", end="") newline = False + def status_to_ansi(status: Status): if status == "ok": return Fore.GREEN diff --git a/tools/splat/util/n64/Yay0decompress.py b/tools/splat/util/n64/Yay0decompress.py index 309c0686a9..1076435f5c 100644 --- a/tools/splat/util/n64/Yay0decompress.py +++ b/tools/splat/util/n64/Yay0decompress.py @@ -8,6 +8,7 @@ from util import log tried_loading = False lib = None + def setup_lib(): global lib global tried_loading @@ -17,13 +18,16 @@ def setup_lib(): return False try: tried_loading = True - lib = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + "/Yay0decompress") + lib = cdll.LoadLibrary( + os.path.dirname(os.path.realpath(__file__)) + "/Yay0decompress" + ) return True except Exception: print(f"Failed to load C library; falling back to python method") tried_loading = True return False + def decompress_yay0(in_bytes, byte_order="big"): # attempt to load the library only once per execution global lib @@ -62,6 +66,7 @@ def decompress_yay0(in_bytes, byte_order="big"): # other functions want the results back as a non-ctypes type return bytearray(dst) + def decompress_yay0_python(in_bytes, byte_order="big"): if in_bytes[:4] != b"Yay0": sys.exit("Input file is not yay0") @@ -79,24 +84,28 @@ def decompress_yay0_python(in_bytes, byte_order="big"): # preallocate result and index into it idx = 0 - ret = bytearray(decompressed_size); + ret = bytearray(decompressed_size) while idx < decompressed_size: # If we're out of bits, get the next mask if mask_bit_counter == 0: - current_mask = int.from_bytes(in_bytes[other_idx : other_idx + 4], byteorder=byte_order) + current_mask = int.from_bytes( + in_bytes[other_idx : other_idx + 4], byteorder=byte_order + ) other_idx += 4 mask_bit_counter = 32 - if (current_mask & 0x80000000): + if current_mask & 0x80000000: ret[idx] = in_bytes[chunk_idx] idx += 1 chunk_idx += 1 else: - link = int.from_bytes(in_bytes[link_table_idx : link_table_idx + 2], byteorder=byte_order) + link = int.from_bytes( + in_bytes[link_table_idx : link_table_idx + 2], byteorder=byte_order + ) link_table_idx += 2 - offset = idx - (link & 0xfff) + offset = idx - (link & 0xFFF) count = link >> 12 @@ -127,6 +136,7 @@ def main(args): with open(args.outfile, "wb") as f: f.write(decompressed) + if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("infile") diff --git a/tools/splat/util/n64/find_code_length.py b/tools/splat/util/n64/find_code_length.py index 51da09e509..3b8d958200 100755 --- a/tools/splat/util/n64/find_code_length.py +++ b/tools/splat/util/n64/find_code_length.py @@ -1,4 +1,4 @@ -#! /usr/bin/python3 +#! /usr/bin/env python3 from capstone import * @@ -9,11 +9,16 @@ import argparse md = Cs(CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_BIG_ENDIAN) -parser = argparse.ArgumentParser(description="Given a rom and start offset, find where the code ends") +parser = argparse.ArgumentParser( + description="Given a rom and start offset, find where the code ends" +) parser.add_argument("rom", help="path to a .z64 rom") parser.add_argument("start", help="start offset") parser.add_argument("--end", help="end offset", default=None) -parser.add_argument("--vram", help="vram address to start disassembly at", default="0x80000000") +parser.add_argument( + "--vram", help="vram address to start disassembly at", default="0x80000000" +) + def run(rom_bytes, start_offset, vram, end_offset=None): rom_addr = start_offset diff --git a/tools/splat/util/n64/rominfo.py b/tools/splat/util/n64/rominfo.py index 640b397ae6..34a4e89d3b 100755 --- a/tools/splat/util/n64/rominfo.py +++ b/tools/splat/util/n64/rominfo.py @@ -1,14 +1,22 @@ -#! /usr/bin/python3 +#! /usr/bin/env python3 import argparse -from capstone import * -from capstone.mips import * +import itertools +import struct + +from pathlib import Path + import hashlib import zlib -parser = argparse.ArgumentParser(description='Gives information on n64 roms') -parser.add_argument('rom', help='path to a .z64 rom') -parser.add_argument('--encoding', help='Text encoding the game header is using; see docs.python.org/3/library/codecs.html#standard-encodings for valid encodings', default='ASCII') +from capstone import Cs, CS_ARCH_MIPS, CS_MODE_MIPS64, CS_MODE_BIG_ENDIAN + +parser = argparse.ArgumentParser(description="Gives information on N64 roms") +parser.add_argument("rom", help="path to an N64 rom") +parser.add_argument( + "--header-encoding", + help="Text encoding the game header is using; see docs.python.org/3/library/codecs.html#standard-encodings for valid encodings", +) country_codes = { 0x00: "Unknown", @@ -40,13 +48,31 @@ crc_to_cic = { 0x0B050EE0: {"ntsc-name": "6103", "pal-name": "7103", "offset": 0x100000}, 0x98BC2C86: {"ntsc-name": "6105", "pal-name": "7105", "offset": 0x000000}, 0xACC8580A: {"ntsc-name": "6106", "pal-name": "7106", "offset": 0x200000}, - 0x00000000: {"ntsc-name": "unknown", "pal-name": "unknown", "offset": 0x0000000} + 0x00000000: {"ntsc-name": "unknown", "pal-name": "unknown", "offset": 0x0000000}, } -def read_rom(rom): - with open(rom, "rb") as f: - return f.read() +def swap_bytes(data): + return bytes( + itertools.chain.from_iterable( + struct.pack(">H", x) for x, in struct.iter_unpack(" jumps else "GCC" - if (print_result): - print(f"{branches} branches and {jumps} jumps detected in the first code segment. Compiler is most likely {compiler}") + if print_result: + print( + f"{branches} branches and {jumps} jumps detected in the first code segment. Compiler is most likely {compiler}" + ) return compiler + # TODO: support .n64 extension def main(): args = parser.parse_args() - rom_bytes = read_rom(args.rom) - rom = get_info(args.rom, args.encoding, rom_bytes) + rom_bytes = read_rom(Path(args.rom)) + rom = get_info(Path(args.rom), rom_bytes, args.header_encoding) print("Image name: " + rom.name) print("Country code: " + chr(rom.country_code) + " - " + rom.get_country_name()) @@ -145,9 +221,11 @@ def main(): print("CRC2: " + rom.crc2) print("CIC: " + rom.cic["ntsc-name"] + " / " + rom.cic["pal-name"]) print("RAM entry point: " + hex(rom.entry_point)) + print("Header encoding: " + rom.header_encoding) print("") get_compiler_info(rom_bytes, rom.entry_point) + if __name__ == "__main__": main() diff --git a/tools/splat/util/options.py b/tools/splat/util/options.py index 42b378a5eb..ceee838d07 100644 --- a/tools/splat/util/options.py +++ b/tools/splat/util/options.py @@ -1,9 +1,12 @@ -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Union, Literal from pathlib import Path from util import log +from util import compiler +from util.compiler import Compiler opts = {} + def initialize(config: Dict, config_path, base_path=None, target_path=None): global opts opts = dict(config.get("options", {})) @@ -11,97 +14,338 @@ def initialize(config: Dict, config_path, base_path=None, target_path=None): if base_path: opts["base_path"] = Path(base_path) else: - if not "base_path" in opts: - log.error("Error: Base output dir not specified as a command line arg or via the config yaml (base_path)") + if "base_path" not in opts: + log.error( + "Error: Base output dir not specified as a command line arg or via the config yaml (base_path)" + ) opts["base_path"] = Path(config_path[0]).parent / opts["base_path"] if not target_path: if "target_path" not in opts: - log.error("Error: Target binary path not specified as a command line arg or via the config yaml (target_path)") + log.error( + "Error: Target binary path not specified as a command line arg or via the config yaml (target_path)" + ) + def set(opt, val): opts[opt] = val + def get(opt, default=None): return opts.get(opt, default) + +# Returns whether the given mode is currently enabled +def mode_active(mode) -> bool: + return mode in opts["modes"] or "all" in opts["modes"] + + +# TODO standardize names of options for categories & decide whether to stick to get_ or drop it +################################################################################ +# Debug / logging options +################################################################################ + +# Determines whether to log more verbose output +def verbose() -> bool: + return opts.get("verbose", False) + + +################################################################################ +# Global options +# +# These can be set in the config yaml at the top level +################################################################################ + +# Determines the platform of the target binary +# Currently supported: n64, psx def get_platform() -> str: return opts.get("platform", "n64") -def get_endianess() -> str: + +# Determines the compiler used to compile the target binary +def get_compiler() -> Compiler: + return compiler.for_name(opts.get("compiler", "IDO")) + + +# Determines the endianness of the target binary +def get_endianess() -> Union[Literal["little"], Literal["big"]]: return opts.get("endianess", "little" if get_platform().upper() == "PSX" else "big") -def get_compiler() -> str: - return opts.get("compiler", "IDO") -def get_header_encoding() -> str: - return opts.get("header_encoding", "ASCII") +# Determines the default section order of the target binary +# this can be overridden per-segment +def get_section_order() -> List[str]: + return opts.get("section_order", [".text", ".data", ".rodata", ".bss"]) -def get_subalign() -> int: - return opts.get("subalign", 16) +# Determines the code that is inserted by default in generated .c files def get_generated_c_premble() -> str: return opts.get("generated_c_preamble", '#include "common.h"') -def mode_active(mode): - return mode in opts["modes"] or "all" in opts["modes"] +# Determines the code that is inserted by default in generated .s files +def get_generated_s_preamble() -> str: + return opts.get("generated_s_preamble", "") + + +# Determines the base path of the project. Everything is relative to this path def get_base_path() -> Path: return Path(opts["base_path"]) -def get_asset_path() -> Path: - return Path(get_base_path() / opts.get("asset_path", "assets")).relative_to(get_base_path()) +# Determines the asset path of the project. Assets such as raw binary files are stored here +def get_asset_path() -> Path: + return get_base_path() / opts.get("asset_path", "assets") + + +# Determines the path to the target binary def get_target_path() -> Path: return get_base_path() / opts["target_path"] + +# Determines the path to the symbol addresses file(s) +# A symbol_addrs file is to be updated/curated manually and contains addresses of symbols +# as well as optional metadata such as rom address, type, and more +# +# It's possible to use more than one file by supplying a list instead of a string +def get_symbol_addrs_paths() -> List[Path]: + paths: Union[List[str], str] = opts.get("symbol_addrs_path", "symbol_addrs.txt") + + if isinstance(paths, str): + return [get_base_path() / paths] + else: + return [get_base_path() / path for path in paths] + + +# Determines the path to the project build directory +def get_build_path() -> Path: + return get_base_path() / opts.get("build_path", "build") + + +# Determines the path to the source code directory def get_src_path() -> Path: return get_base_path() / opts.get("src_path", "src") + +# Determines the path to the asm code directory def get_asm_path() -> Path: return get_base_path() / opts.get("asm_path", "asm") -def get_cache_path(): + +# Determines the path to the asm data directory +def get_data_path() -> Path: + if "data_path" in opts: + return get_base_path() / opts["data_path"] + return get_asm_path() / "data" + + +# Determines the path to the asm nonmatchings directory +def get_nonmatchings_path() -> Path: + if "nonmatchings_path" in opts: + return get_base_path() / opts["nonmatchings_path"] + return get_asm_path() / "nonmatchings" + + +# Determines the path to the cache file (used when supplied --use-cache via the CLI) +def get_cache_path() -> Path: return get_base_path() / opts.get("cache_path", ".splat_cache") + +# Determines whether to create an automatically-generated undefined functions file +# this file stores all functions that are referenced in the code but are not defined as seen by splat def get_create_undefined_funcs_auto() -> bool: return opts.get("create_undefined_funcs_auto", True) -def get_undefined_funcs_auto_path(): - return get_base_path() / opts.get("undefined_funcs_auto_path", "undefined_funcs_auto.txt") +# Determines the path to the undefined_funcs_auto file +def get_undefined_funcs_auto_path() -> Path: + return get_base_path() / opts.get( + "undefined_funcs_auto_path", "undefined_funcs_auto.txt" + ) + + +# Determines whether to create an automatically-generated undefined symbols file +# this file stores all symbols that are referenced in the code but are not defined as seen by splat def get_create_undefined_syms_auto() -> bool: return opts.get("create_undefined_syms_auto", True) -def get_undefined_syms_auto_path(): - return get_base_path() / opts.get("undefined_syms_auto_path", "undefined_syms_auto.txt") -def get_create_elf_section_list_auto(): +# Determines the path to the undefined_symbols_auto file +def get_undefined_syms_auto_path() -> Path: + return get_base_path() / opts.get( + "undefined_syms_auto_path", "undefined_syms_auto.txt" + ) + + +# TODO document +def get_create_elf_section_list_auto() -> bool: return opts.get("create_elf_section_list_auto", False) -def get_elf_section_list_path(): + +# TODO document +def get_elf_section_list_path() -> Path: return get_base_path() / opts.get("elf_section_list_path", "elf_sections.txt") -def get_symbol_addrs_path(): - return get_base_path() / opts.get("symbol_addrs_path", "symbol_addrs.txt") -def get_build_path(): - # TODO maybe can just return build_path... - return Path(get_base_path() / opts.get("build_path", "build")).relative_to(get_base_path()) +# Determines the path in which to search for custom splat extensions +def get_extensions_path() -> Optional[Path]: + ext_opt = opts.get("extensions_path") + if not ext_opt: + return None -def get_ld_script_path(): + return get_base_path() / ext_opt + + +# Determines the path to library files that are to be linked into the target binary +def get_lib_path() -> Path: + return get_base_path() / opts.get("lib_path", "lib") + + +# Determines whether to use .o as the suffix for all binary files?... TODO document +def use_o_as_suffix() -> bool: + return opts.get("o_as_suffix", False) + + +# the value of the $gp register to correctly calculate offset to %gp_rel relocs +def get_gp() -> Optional[int]: + return opts.get("gp_value", None) + + +################################################################################ +# Linker script options +################################################################################ + +# Determines the desired path to the linker script that splat will generate +def get_ld_script_path() -> Path: return get_base_path() / opts.get("ld_script_path", f"{opts.get('basename')}.ld") + +# Determines the default subalign value to be specified in the generated linker script +def get_subalign() -> int: + return opts.get("subalign", 16) + + +# Determines whether to automatically configure the linker script to link against common sections for all files +# when the yaml doesn't have specific configurations for these sections. See release notes for details +def auto_all_sections() -> bool: + return opts.get("auto_all_sections", False) + + +# Determines the desired path to the linker symbol header, which exposes externed definitions for all segment ram/rom start/end locations def get_linker_symbol_header_path() -> Optional[Path]: if "linker_symbol_header_path" in opts: return get_base_path() / str(opts["linker_symbol_header_path"]) else: return None -def get_extensions_path(): - ext_opt = opts.get("extensions_path") - if not ext_opt: - return None - return get_base_path() / ext_opt +# Determines whether to create a shiftable linker script (EXPERIMENTAL) +def get_shiftable() -> bool: + return opts.get("shiftable", False) + + +# Determines whether to add a discard section to the linker script +def linker_discard_section() -> bool: + return opts.get("linker_discard_section", True) + + +# Determines whether to use a silly hack in the linker script to maybe help enforce alignment (DO NOT USE?) +def enable_ld_alignment_hack() -> bool: + return opts.get("enable_ld_alignment_hack", False) + + +# Determines the list of section labels that are to be added to the linker script +def ld_section_labels() -> List[str]: + return opts.get("ld_section_labels", [".text", ".data", ".bss"]) + + +################################################################################ +# C file options +################################################################################ + +# Determines whether to create new c files if they don't exist +def get_create_c_files() -> bool: + return opts.get("create_c_files", True) + +# Determines whether to "auto-decompile" empty functions +def get_auto_decompile_empty_functions() -> bool: + return opts.get("auto_decompile_empty_functions", True) + +# Determines whether to detect matched/unmatched functions in existing c files +# so we can avoid creating .s files for already-decompiled functions +def do_c_func_detection() -> bool: + return opts.get("do_c_func_detection", True) + + +# Determines the newline char(s) to be used in c files +def c_newline() -> str: + return opts.get("c_newline", get_compiler().c_newline) + + +################################################################################ +# (Dis)assembly-related options +################################################################################ + +# Determines whether to detect and hint to the user about likely file splits when disassembling +def find_file_boundaries() -> bool: + return opts.get("find_file_boundaries", True) + + +# Determines the maximum number of instructions to attempt to match hi/lo pairs for symbols when disassembling +def hi_lo_max_distance() -> int: + return opts.get("hi_lo_max_distance", 6) + + +# Determines whether to attempt to automatically migrate rodata into functions (only works in certain circumstances) +def get_migrate_rodata_to_functions() -> bool: + return opts.get("migrate_rodata_to_functions", True) + + +# Determines the header to be used in every asm file that's included from c files +def asm_inc_header() -> str: + return opts.get("asm_inc_header", get_compiler().asm_inc_header) + + +# Determines the macro used to declare functions in asm files +def get_asm_function_macro() -> str: + return opts.get("asm_function_macro", get_compiler().asm_function_macro) + + +# Determines the macro used to declare data symbols in asm files +def get_asm_data_macro() -> str: + return opts.get("asm_data_macro", get_compiler().asm_data_macro) + + +# Determines the macro used at the end of a function, such as endlabel or .end +def get_asm_end_label() -> str: + return opts.get("asm_endlabels", get_compiler().asm_end_label) + + +# Determines the number of characters to left align before the TODO finish documenting +def mnemonic_ljust() -> int: + return opts.get("mnemonic_ljust", 11) + + +# Determines whether to pad the rom address +def rom_address_padding() -> bool: + return opts.get("rom_address_padding", False) + + +################################################################################ +# N64-specific options +################################################################################ + +# Determines the encoding of the header +def get_header_encoding() -> str: + return opts.get("header_encoding", "ASCII") + + +################################################################################ +# Compiler-specific options +################################################################################ + +# Determines whether to use a legacy INCLUDE_ASM macro format in c files +# only applies to GCC/SN64 +def get_use_legacy_include_asm() -> bool: + return opts.get("use_legacy_include_asm", True) diff --git a/tools/splat/util/palettes.py b/tools/splat/util/palettes.py index 9bb9ab05cb..6e8ca910e2 100644 --- a/tools/splat/util/palettes.py +++ b/tools/splat/util/palettes.py @@ -23,12 +23,12 @@ def initialize(all_segments): for raster_name in raster_map: raster = raster_map[raster_name] - #print(f"{raster_name} -> {raster.palette_name}") + # print(f"{raster_name} -> {raster.palette_name}") raster.palette = palette_map.get(raster.palette_name) for palette_name in palette_map: palette = palette_map[palette_name] - #print(f"{palette_name} -> {palette.raster_name}") + # print(f"{palette_name} -> {palette.raster_name}") palette.raster = raster_map.get(palette.raster_name) process(all_segments) diff --git a/tools/splat/util/range.py b/tools/splat/util/range.py index 32e9444bdb..7716873669 100644 --- a/tools/splat/util/range.py +++ b/tools/splat/util/range.py @@ -1,14 +1,13 @@ class Range: - def __init__(self, start=None, end=None): self.start = start self.end = end - + def has_start(self): return self.start is not None - + def has_end(self): return self.end is not None - + def is_complete(self): return self.has_start() and self.has_end() diff --git a/tools/splat/util/symbols.py b/tools/splat/util/symbols.py index 80bad5f74d..c3697ca0f4 100644 --- a/tools/splat/util/symbols.py +++ b/tools/splat/util/symbols.py @@ -1,11 +1,25 @@ -import os -from typing import Dict, List -from util import options +from dataclasses import dataclass +from typing import Dict, List, Optional + +from capstone import CsInsn +from util import options, log all_symbols: "List[Symbol]" = [] symbol_ranges: "List[Symbol]" = [] sym_isolated_map: "Dict[Symbol, bool]" = {} +TRUEY_VALS = ["true", "on", "yes", "y"] +FALSEY_VALS = ["false", "off", "no", "n"] + + +def is_truey(str: str) -> bool: + return str.lower() in TRUEY_VALS + + +def is_falsey(str: str) -> bool: + return str.lower() in FALSEY_VALS + + def initialize(all_segments): global all_symbols global symbol_ranges @@ -13,49 +27,112 @@ def initialize(all_segments): all_symbols = [] symbol_ranges = [] - symbol_addrs_path = options.get_symbol_addrs_path() - # Manual list of func name / addrs - if os.path.exists(symbol_addrs_path): - with open(symbol_addrs_path) as f: - func_addrs_lines = f.readlines() + for path in options.get_symbol_addrs_paths(): + if path.exists(): + with open(path) as f: + sym_addrs_lines = f.readlines() + for line_num, line in enumerate(sym_addrs_lines): + line = line.strip() + if not line == "" and not line.startswith("//"): + comment_loc = line.find("//") + line_main = line + line_ext = "" - for line in func_addrs_lines: - line = line.strip() - if not line == "" and not line.startswith("//"): - comment_loc = line.find("//") - line_ext = "" + if comment_loc != -1: + line_ext = line[comment_loc + 2 :].strip() + line_main = line[:comment_loc].strip() - if comment_loc != -1: - line_ext = line[comment_loc + 2:].strip() - line = line[:comment_loc].strip() + try: + line_split = line_main.split("=") + name = line_split[0].strip() + addr = int(line_split[1].strip()[:-1], 0) + except: + log.parsing_error_preamble(path, line_num, line) + log.write("Line should be of the form") + log.write( + " =
// attr0:val0 attr1:val1 [...]" + ) + log.write("with
in hex preceded by 0x, or dec") + log.write("") + raise - line_split = line.split("=") - name = line_split[0].strip() - addr = int(line_split[1].strip()[:-1], 0) + sym = Symbol(addr, given_name=name) - sym = Symbol(addr, given_name=name) + if line_ext: + for info in line_ext.split(" "): + if ":" in info: + if info.count(':') > 1: + log.parsing_error_preamble(path, line_num, line) + log.write(f"Too many ':'s in '{info}'") + log.error("") - if line_ext: - for info in line_ext.split(" "): - if info.startswith("type:"): - type = info.split(":")[1] - sym.type = type - if info.startswith("size:"): - size = int(info.split(":")[1], 0) - sym.size = size - if info.startswith("rom:"): - rom_addr = int(info.split(":")[1], 0) - sym.rom = rom_addr - if info.startswith("dead:"): - sym.dead = True - all_symbols.append(sym) + 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 == "type": + type = attr_val + sym.type = type + continue + if attr_name == "size": + size = int(attr_val, 0) + sym.size = size + continue + if attr_name == "rom": + rom_addr = int(attr_val, 0) + sym.rom = rom_addr + 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 + + # Boolean attributes + tf_val = ( + True + if is_truey(attr_val) + else False + if is_falsey(attr_val) + else None + ) + if tf_val is None: + log.parsing_error_preamble(path, line_num, line) + log.write( + f"Invalid Boolean value '{attr_val}' for attribute '{attr_name}', should be one of" + ) + log.write([*TRUEY_VALS, *FALSEY_VALS]) + log.error("") + + if attr_name == "dead": + sym.dead = tf_val + continue + if attr_name == "defined": + sym.defined = tf_val + continue + if attr_name == "extract": + sym.extract = tf_val + continue + all_symbols.append(sym) + + # Symbol ranges + if sym.size > 4: + symbol_ranges.append(sym) + + is_symbol_isolated(sym, all_segments) - # Symbol ranges - if sym.size > 4: - symbol_ranges.append(sym) - - is_symbol_isolated(sym, all_segments) def is_symbol_isolated(symbol, all_segments): if symbol in sym_isolated_map: @@ -72,27 +149,43 @@ def is_symbol_isolated(symbol, all_segments): sym_isolated_map[symbol] = relevant_segs < 2 return sym_isolated_map[symbol] + def retrieve_from_ranges(vram, rom=None): - rom_matches = [] - ram_matches = [] + rom_matches = [] + ram_matches = [] - for symbol in symbol_ranges: - if symbol.contains_vram(vram): - if symbol.rom and rom and symbol.contains_rom(rom): - rom_matches.append(symbol) - else: - ram_matches.append(symbol) + for symbol in symbol_ranges: + if symbol.contains_vram(vram): + if symbol.rom and rom and symbol.contains_rom(rom): + rom_matches.append(symbol) + else: + ram_matches.append(symbol) - ret = rom_matches + ram_matches + ret = rom_matches + ram_matches + + if len(ret) > 0: + return ret[0] + else: + return None + + +@dataclass +class Instruction: + instruction: CsInsn + mnemonic: str + op_str: str + rom_addr: int + is_gp: bool = False + is_hi: bool = False + is_lo: bool = False + hi_lo_sym: Optional["Symbol"] = None + sym_offset_str: str = "" + hi_lo_reg: str = "" - if len(ret) > 0: - return ret[0] - else: - return None class Symbol: @property - def default_name(self): + def default_name(self) -> str: suffix = f"_{self.vram_start:X}" if self.in_overlay: @@ -100,7 +193,7 @@ class Symbol: if self.type == "func": prefix = "func" - elif self.type =="jtbl": + elif self.type == "jtbl": prefix = "jtbl" else: prefix = "D" @@ -115,11 +208,8 @@ class Symbol: def vram_end(self): return self.vram_start + self.size - def set_in_overlay(self): - self.in_overlay = True - @property - def name(self): + def name(self) -> str: return self.given_name if self.given_name else self.default_name def contains_vram(self, offset): @@ -128,7 +218,15 @@ class Symbol: def contains_rom(self, offset): return offset >= self.rom and offset < self.rom_end - def __init__(self, vram, given_name=None, rom=None, type="unknown", in_overlay=False, size=4): + def __init__( + self, + vram, + given_name: str = "", + rom=None, + type="unknown", + in_overlay=False, + size=4, + ): self.defined = False self.referenced = False self.vram_start = vram @@ -136,7 +234,9 @@ class Symbol: self.type = type self.in_overlay = in_overlay self.size = size - self.given_name = given_name + self.given_name: str = given_name + self.insns: List[Instruction] = [] self.access_mnemonic = None self.disasm_str = None self.dead = False + self.extract = True diff --git a/tools/update_symbol_addrs.py b/tools/update_symbol_addrs.py index 3cd327f297..c798382cc4 100755 --- a/tools/update_symbol_addrs.py +++ b/tools/update_symbol_addrs.py @@ -4,6 +4,7 @@ import os import re import subprocess import sys +import tqdm script_dir = os.path.dirname(os.path.realpath(__file__)) root_dir = script_dir + "/../" @@ -157,9 +158,7 @@ def log(s): def reconcile_symbols(): print(f"Processing {str(len(elf_symbols))} elf symbols...") - for i, elf_sym in enumerate(elf_symbols): - if i % 1000 == 0: - print(i) + for i, elf_sym in tqdm.tqdm(enumerate(elf_symbols), total=len(elf_symbols)): name_match = None rom_match = None diff --git a/ver/us/asm/data/4F200.data.s b/ver/us/asm/data/4F200.data.s deleted file mode 100644 index d0f755b53f..0000000000 --- a/ver/us/asm/data/4F200.data.s +++ /dev/null @@ -1,18 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_80073E00 -.word 0x00000000 - -dlabel D_80073E04 -.word 0x00000000 - -dlabel D_80073E08 -.short 0x0000 - -dlabel D_80073E0A -.short 0x0000, 0x0000, 0x0000 - -dlabel D_80073E10 -.word 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x0FFFFFFF, 0x00FFFFFF, 0x000FFFFF, 0x0000FFFF, 0x00000FFF, 0x000000FF, 0x0000000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/542E0.data.s b/ver/us/asm/data/542E0.data.s index ee7d037fa2..9173fea2c4 100644 --- a/ver/us/asm/data/542E0.data.s +++ b/ver/us/asm/data/542E0.data.s @@ -2,14 +2,5 @@ .section .data -dlabel D_80078EE0 -.short 0x59F2, 0x58D0, 0x57AA, 0x5681, 0x5555, 0x5425, 0x52F2, 0x51BC, 0x5082, 0x4F46, 0x4E06, 0x4CC3, 0x4B7D, 0x4A35, 0x48E9, 0x479B, 0x4649, 0x44F5, 0x439E, 0x4245, 0x40E9, 0x3F8A, 0x3E29, 0x3CC6, 0x3B60, 0x39F8, 0x388D, 0x3721, 0x35B2, 0x3441, 0x32CE, 0x3159, 0x2FE2, 0x2E69, 0x2CEF, 0x2B72, 0x29F4, 0x2875, 0x26F3, 0x2570, 0x23EC, 0x2266, 0x20DF, 0x1F57, 0x1DCE, 0x1C43, 0x1AB7, 0x192A, 0x179C, 0x160E, 0x147E, 0x12ED, 0x115C, 0x0FCA, 0x0E38, 0x0CA5, 0x0B11, 0x097D, 0x07E9, 0x0654, 0x04C0, 0x032A, 0x0195, 0x0000, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3681, 0x3045, 0x36CC, 0xC25E, 0x3701, 0x3056, 0x3715, 0xFBD1, 0x3726, 0xF96C, 0x3735, 0x56F8, 0x3741, 0xC897, 0x374C, 0xC288, 0x3756, 0x941E, 0x375F, 0x75EA, 0x3767, 0x91B7, 0x376F, 0x074D, 0x3775, 0xEF48, 0x377C, 0x5D3E, 0x3781, 0x3079, 0x3784, 0x039E, 0x3786, 0xAD71, 0x3789, 0x3260, 0x378B, 0x9637, 0x378D, 0xDC3A, 0x3790, 0x0722, 0x3792, 0x195F, 0x3794, 0x1509, 0x3795, 0xFC00, 0x3797, 0xCFD4, 0x3799, 0x9207, 0x379B, 0x43D7, 0x379C, 0xE668, 0x379E, 0x7AD2, 0x37A0, 0x01F1, 0x37A1, 0x7CA6, 0x37A2, 0xEBB8, 0x37A4, 0x4FD1, 0x37A5, 0xA99A, 0x37A6, 0xF9A4, 0x37A8, 0x4077, 0x37A9, 0x7E93, 0x37AA, 0xB46F, 0x37AB, 0xE26F, 0x37AD, 0x08FC, 0x37AE, 0x286C, 0x37AF, 0x4119, 0x37B0, 0x5355, 0x37B1, 0x5F67, 0x37B2, 0x6597, 0x37B3, 0x6621, 0x37B4, 0x6141, 0x37B5, 0x5735, 0x37B6, 0x4832, 0x37B7, 0x346C, 0x37B8, 0x1C0C, 0x37B8, 0xFF46, 0x37B9, 0xDE3F, 0x37BA, 0xB91E, 0x37BB, 0x900F, 0x37BC, 0x632E, 0x37BD, 0x32A6, 0x37BD, 0xFE8D, 0x37BE, 0xC70A, 0x37BF, 0x8C33, 0x37C0, 0x4E29, 0x37C1, 0x0D07, 0x37C1, 0xC8E4, 0x37C2, 0x81D5, 0x37C3, 0x37F0, 0x37C3, 0xEB51, 0x37C4, 0x9C0E, 0x37C5, 0x4A32, 0x37C5, 0xF5D3, 0x37C6, 0x9F06, 0x37C7, 0x45DC, 0x37C7, 0xEA67, 0x37C8, 0x8CB5, 0x37C9, 0x2CD3, 0x37C9, 0xCAD0, 0x37CA, 0x66BE, 0x37CB, 0x00A7, 0x37CB, 0x98A1, 0x37CC, 0x2EAD, 0x37CC, 0xC2DA, 0x37CD, 0x5539, 0x37CD, 0xE5D0, 0x37CE, 0x74AA, 0x37CF, 0x01D7, 0x37CF, 0x8D57, 0x37D0, 0x1741, 0x37D0, 0x9F93, 0x37D1, 0x265F, 0x37D1, 0xABA5, 0x37D2, 0x2F75, 0x37D2, 0xB1D5, 0x37D3, 0x32CA, 0x37D3, 0xB25F, 0x37D4, 0x3099, 0x37D4, 0xAD7F, 0x37D5, 0x2921, 0x37D5, 0xA378, 0x37D6, 0x1C91, 0x37D6, 0x9476, 0x37D7, 0x0B27, 0x37D7, 0x80A9, 0x37D7, 0xF50E, 0x37D8, 0x684A, 0x37D8, 0xDA73, 0x37D9, 0x4B84, 0x37D9, 0xBB87, 0x37DA, 0x2A7D, 0x37DA, 0x9870, 0x37DB, 0x055C, 0x37DB, 0x7150, 0x37DB, 0xDC4D, 0x37DC, 0x4658, 0x37DC, 0xAF71, 0x37DD, 0x179E, 0x37DD, 0x7EE3, 0x37DD, 0xE548, 0x37DE, 0x4AD0, 0x37DE, 0xAF77, 0x37DF, 0x1348, 0x37DF, 0x7648, 0x37DF, 0xD877, 0x37E0, 0x39D4, 0x37E0, 0x9A6C, 0x37E0, 0xFA3F, 0x37E1, 0x594B, 0x37E1, 0xB797, 0x37E2, 0x1527, 0x37E2, 0x71F8, 0x37E2, 0xCE18, 0x37E3, 0x297E, 0x37E3, 0x8434, 0x37E3, 0xDE3F, 0x37E4, 0x3795, 0x37E4, 0x9046, 0x37E4, 0xE852, 0x37E5, 0x3FB3, 0x37E5, 0x9675, 0x37E5, 0xEC93, 0x37E6, 0x4216, 0x37E6, 0x96FF, 0x37E6, 0xEB49, 0x37E7, 0x3F04, 0x37E7, 0x9220, 0x37E7, 0xE4AC, 0x37E8, 0x36AA, 0x37E8, 0x8819, 0x37E8, 0xD8F8, 0x37E9, 0x2949, 0x37E9, 0x7916, 0x37E9, 0xC85A, 0x37EA, 0x1714, 0x37EA, 0x654F, 0x37EA, 0xB302, 0x37EB, 0x0035, 0x37EB, 0x4CF0, 0x37EB, 0x9927, 0x37EB, 0xE4E5, 0x37EC, 0x3024, 0x37EC, 0x7AF0, 0x37EC, 0xC543, 0x37ED, 0x0F1D, 0x37ED, 0x588A, 0x37ED, 0xA17D, 0x37ED, 0xEA02, 0x37EE, 0x3214, 0x37EE, 0x79B8, 0x37EE, 0xC0EE, 0x37EF, 0x07BB, 0x37EF, 0x4E1B, 0x37EF, 0x9412, 0x37EF, 0xD9A0, 0x37F0, 0x1EC6, 0x37F0, 0x6389, 0x37F0, 0xA7E4, 0x37F0, 0xEBDC, 0x37F1, 0x2F71, 0x37F1, 0x72A3, 0x37F1, 0xB577, 0x37F1, 0xF7EE, 0x37F2, 0x3A02, 0x37F2, 0x7BBE, 0x37F2, 0xBD17, 0x37F2, 0xFE18, 0x37F3, 0x3EC1, 0x37F3, 0x7F13, 0x37F3, 0xBF06, 0x37F3, 0xFEA2, 0x37F4, 0x3DEB, 0x37F4, 0x7CE2, 0x37F4, 0xBB7C, 0x37F4, 0xF9C8, 0x37F5, 0x37C2, 0x37F5, 0x7564, 0x37F5, 0xB2B9, 0x37F5, 0xEFBB, 0x37F6, 0x2C71, 0x37F6, 0x68DA, 0x37F6, 0xA4F0, 0x37F6, 0xE0B9, 0x37F7, 0x1C3B, 0x37F7, 0x5770, 0x37F7, 0x9257, 0x37F7, 0xCCF2, 0x37F8, 0x0746, 0x37F8, 0x4151, 0x37F8, 0x7B16, 0x37F8, 0xB493, 0x37F8, 0xEDC8, 0x37F9, 0x26BC, 0x37F9, 0x5F68, 0x37F9, 0x97CD, 0x37F9, 0xCFEF, 0x37FA, 0x07D0, 0x37FA, 0x3F69, 0x37FA, 0x76C6, 0x37FA, 0xADE0, 0x37FA, 0xE4B9, 0x37FB, 0x1B50, 0x37FB, 0x51A5, 0x37FB, 0x87C3, 0x37FB, 0xBD99, 0x37FB, 0xF338, 0x37FC, 0x2896, 0x37FC, 0x5DB7, 0x37FC, 0x92A1, 0x37FC, 0xC749, 0x37FC, 0xFBBA, 0x37FD, 0x2FEE, 0x37FD, 0x63E6, 0x37FD, 0x97A8, 0x37FD, 0xCB2C, 0x37FD, 0xFE7A, 0x37FE, 0x3191, 0x37FE, 0x6470, 0x37FE, 0x9719, 0x37FE, 0xC985, 0x37FE, 0xFBC0, 0x37FF, 0x2DC4, 0x37FF, 0x5F96, 0x37FF, 0x912C, 0x37FF, 0xC291, 0x37FF, 0xF3C3, 0x3800, 0x1260, 0x3800, 0x2AC5, 0x3800, 0x4311, 0x3800, 0x5B42, 0x3800, 0x735B, 0x3800, 0x8B5D, 0x3800, 0xA344, 0x3800, 0xBB14, 0x3800, 0xD2CA, 0x3800, 0xEA69, 0x3801, 0x01F0, 0x3801, 0x1960, 0x3801, 0x30B8, 0x3801, 0x47F7, 0x3801, 0x5F23, 0x3801, 0x7633, 0x3801, 0x8D31, 0x3801, 0xA415, 0x3801, 0xBAE6, 0x3801, 0xD19F, 0x3801, 0xE841, 0x3801, 0xFECD, 0x3802, 0x1544, 0x3802, 0x2BA4, 0x3802, 0x41F2, 0x3802, 0x5829, 0x3802, 0x6E4A, 0x3802, 0x8455, 0x3802, 0x9A4D, 0x3802, 0xB032, 0x3802, 0xC601, 0x3802, 0xDBBA, 0x3802, 0xF15F, 0x3803, 0x06F1, 0x3803, 0x1C70, 0x3803, 0x31DA, 0x3803, 0x4732, 0x3803, 0x5C75, 0x3803, 0x71A4, 0x3803, 0x86C3, 0x3803, 0x9BCC, 0x3803, 0xB0C1, 0x3803, 0xC5A6, 0x3803, 0xDA78, 0x3803, 0xEF37, 0x3804, 0x03E2, 0x3804, 0x187D, 0x3804, 0x2D05, 0x3804, 0x417C, 0x3804, 0x55E0, 0x3804, 0x6A31, 0x3804, 0x7E74, 0x3804, 0x92A1, 0x3804, 0xA6C0, 0x3804, 0xBACC, 0x3804, 0xCEC7, 0x3804, 0xE2B0, 0x3804, 0xF68A, 0x3805, 0x0A51, 0x3805, 0x1E0B, 0x3805, 0x31B1, 0x3805, 0x4547, 0x3805, 0x58CC, 0x3805, 0x6C41 - -dlabel dead_gGameStatusPtr -.word 0x38057FA8, 0x380592FC, 0x3805A642, 0x3805B977, 0x3805CC9C, 0x3805DFB4, 0x3805F2BB, 0x380605B1, 0x3806189A, 0x38062B72, 0x38063E39, 0x380650F3, 0x3806639F, 0x3806763B, 0x380688C9, 0x38069B46, 0x3806ADB6, 0x3806C018, 0x3806D269, 0x3806E4B0, 0x3806F6E6, 0x3807090E, 0x38071B25, 0x38072D32, 0x38073F31, 0x38075120, 0x38076303, 0x380774D9, 0x3807869E, 0x38079858, 0x3807AA05, 0x3807BBA3, 0x3807CD34, 0x3807DEB8, 0x3807F030, 0x3808019A, 0x380812F7, 0x38082446, 0x3808358A, 0x380846C1, 0x380857E9, 0x38086907, 0x38087A19, 0x38088B1E, 0x38089C15, 0x3808AD01, 0x3808BDE0, 0x3808CEB3, 0x3808DF78, 0x3808F036, 0x380900E3, 0x38091187, 0x3809221E, 0x380932AA, 0x38094328, 0x3809539E, 0x38096406, 0x38097463, 0x380984B3, 0x380994FA, 0x3809A536, 0x3809B564, 0x3809C588, 0x3809D5A0, 0x3809E5B0, 0x3809F5B3, 0x380A05AA, 0x380A1597 - -dlabel D_80079540 -.word 0x380A257B, 0x380A3551, 0x380A451D, 0x380A54E0, 0x380A6498, 0x380A7445, 0x380A83E8, 0x380A937F, 0x380AA30B, 0x380AB28F, 0x380AC208, 0x380AD176, 0x380AE0D9, 0x380AF034, 0x380AFF84, 0x380B0ECB, 0x380B1E08, 0x380B2D39, 0x380B3C60, 0x380B4B7E, 0x380B5A94, 0x380B699F, 0x380B789F, 0x380B8797, 0x380B9686, 0x380BA56B, 0x380BB445, 0x380BC316, 0x380BD1DF, 0x380BE09D, 0x380BEF53, 0x380BFDFE, 0x380C0CA0, 0x380C1B3B, 0x380C29CD, 0x380C3854, 0x380C46D3, 0x380C5547, 0x380C63B5, 0x380C7218, 0x380C8073, 0x380C8EC3, 0x380C9D0E, 0x380CAB4E, 0x380CB985, 0x380CC7B4, 0x380CD5DB, 0x380CE3FA, 0x380CF20D, 0x380D001C, 0x380D0E1F, 0x380D1C1C, 0x380D2A0F, 0x380D37F9, 0x380D45DE, 0x380D53B8, 0x380D618A, 0x380D6F56, 0x380D7D17, 0x380D8AD3, 0x380D9884, 0x380DA62F, 0x380DB3CF, 0x380DC16A, 0x380DCEFC, 0x380DDC87, 0x380DEA08, 0x380DF782, 0x380E04F6, 0x380E1260, 0x380E1FC3, 0x380E2D1F, 0x380E3A75, 0x380E47C0, 0x380E5505, 0x380E6243, 0x380E6F78, 0x380E7CA7, 0x380E89CE, 0x380E96ED, 0x380EA404, 0x380EB115, 0x380EBE1E, 0x380ECB22, 0x380ED81D, 0x380EE510, 0x380EF1FB, 0x380EFEE0, 0x380F0BC0, 0x380F1898, 0x380F2567, 0x380F3231, 0x380F3EF2, 0x380F4BAE, 0x380F5862, 0x380F650E, 0x380F71B4, 0x380F7E54, 0x380F8AED, 0x380F977F, 0x380FA40A, 0x380FB08F, 0x380FBD0C, 0x380FC983, 0x380FD5F2, 0x380FE25C, 0x380FEEC0, 0x380FFB1C, 0x38100772, 0x381013C3, 0x3810200C, 0x38102C4C, 0x3810388A, 0x381044BF, 0x381050EF, 0x38105D16, 0x38106939, 0x38107555, 0x3810816C, 0x38108D7B, 0x38109985, 0x3810A588, 0x3810B184, 0x3810BD7D, 0x3810C96E, 0x3810D559, 0x3810E13C, 0x3810ED1C, 0x3810F8F4, 0x381104C6, 0x38111093, 0x38111C58, 0x3811281A, 0x381133D3, 0x38113F8A, 0x38114B39, 0xBF800000, 0x00000000, 0x36915629, 0x36E65A71, 0x3711563E, 0x3728BB21, 0x373BD86E, 0x374C01A5, 0x375A017E, 0x37665AA2, 0x37716665, 0x377B646F, 0x378241DE, 0x378673FF, 0x378A567A, 0x378DF452, 0x37915666, 0x379483F4, 0x379782FE, 0x379A588A, 0x379D08DF, 0x379F979E, 0x37A207E4, 0x37A45C6C, 0x37A6978B, 0x37A8BB58, 0x37AAC9AC, 0x37ACC422, 0x37AEAC2C, 0x37B08318, 0x37B24A04, 0x37B4020F, 0x37B5AC19, 0x37B74909, 0x37B8D9A6, 0x37BA5EAA, 0x37BBD8B5, 0x37BD4861, 0x37BEAE42, 0x37C00AD6, 0x37C15E97, 0x37C2A9F2, 0x37C3ED56, 0x37C5291A, 0x37C65D9C, 0x37C78B2E, 0x37C8B223, 0x37C9D2BD, 0x37CAED43, 0x37CC01F7, 0x37CD1116, 0x37CE1AD6, 0x37CF1F69, 0x37D01F07, 0x37D119E0, 0x37D2101B, 0x37D301E9, 0x37D3EF6C, 0x37D4D8D0, 0x37D5BE3A, 0x37D69FC1, 0x37D77D97, 0x37D857CC, 0x37D92E81, 0x37DA01D6, 0x37DAD1E8, 0x37DB9ECC, 0x37DC6899, 0x37DD2F69, 0x37DDF34E, 0x37DEB468, 0x37DF72C2, 0x37E02E73, 0x37E0E78A, 0x37E19E24, 0x37E25245, 0x37E30405, 0x37E3B36D, 0x37E46099, 0x37E50B8A, 0x37E5B45A, 0x37E65B10, 0x37E6FFB5, 0x37E7A261, 0x37E84319, 0x37E8E1E7, 0x37E97EDD, 0x37EA19FF, 0x37EAB35F, 0x37EB4B01, 0x37EBE0F1, 0x37EC753A, 0x37ED07E6, 0x37ED98FC, 0x37EE2880, 0x37EEB683, 0x37EF430B, 0x37EFCE18, 0x37F057BF, 0x37F0DFFC, 0x37F166D8, 0x37F1EC60, 0x37F27099, 0x37F2F387, 0x37F3752C, 0x37F3F598, 0x37F474CA, 0x37F4F2CD, 0x37F56FA3, 0x37F5EB54, 0x37F665E3, 0x37F6DF54, 0x37F757AC, 0x37F7CEF7, 0x37F84535, 0x37F8BA6A, 0x37F92E98, 0x37F9A1C9, 0x37FA13FD, 0x37FA853F, 0x37FAF58A, 0x37FB64E8, 0x37FBD35A, 0x37FC40EB, 0x37FCAD94, 0x37FD195C, 0x37FD8449, 0x37FDEE5F, 0x37FE579E, 0x37FEC00D, 0x37FF27B0, 0x37FF8E88, 0x37FFF494, 0x38002CED, 0x38005F30, 0x38009113, 0x3800C299, 0x3800F3C1, 0x3801248E, 0x38015500, 0x38018518, 0x3801B4DB, 0x3801E445, 0x3802135D, 0x3802421E, 0x3802708E, 0x38029EAC, 0x3802CC78, 0x3802F9F6, 0x38032725, 0x38035407, 0x3803809C, 0x3803ACE7, 0x3803D8E7, 0x3804049D, 0x38043009, 0x38045B31, 0x38048611, 0x3804B0AC, 0x3804DAFF, 0x38050511, 0x38052EE1, 0x3805586C, 0x380581B8, 0x3805AAC2, 0x3805D38C, 0x3805FC15, 0x38062464, 0x38064C71, 0x38067444, 0x38069BDB, 0x3806C335, 0x3806EA55, 0x3807113A, 0x380737E7, 0x38075E5A, 0x38078496, 0x3807AA99, 0x3807D068, 0x3807F5FF, 0x38081B60, 0x3808408C, 0x38086584, 0x38088A48, 0x3808AEDA, 0x3808D338, 0x3808F765, 0x38091B5D, 0x38093F27, 0x380962BF, 0x38098629, 0x3809A961, 0x3809CC6D, 0x3809EF47, 0x380A11F3, 0x380A3473, 0x380A56C7, 0x380A78EC, 0x380A9AE5, 0x380ABCB2, 0x380ADE53, 0x380AFFCB, 0x380B2117, 0x380B423A, 0x380B6333, 0x380B8404, 0x380BA4AB, 0x380BC528, 0x380BE580, 0x380C05AE, 0x380C25B5, 0x380C4594, 0x380C654E, 0x380C84E3, 0x380CA450, 0x380CC397, 0x380CE2BB, 0x380D01B8, 0x380D2091, 0x380D3F47, 0x380D5DD8, 0x380D7C46, 0x380D9A91, 0x380DB8BA, 0x380DD6C0, 0x380DF4A2, 0x380E1265, 0x380E3005, 0x380E4D81, 0x380E6ADF, 0x380E881C, 0x380EA538, 0x380EC236, 0x380EDF10, 0x380EFBCE, 0x380F1869, 0x380F34E8, 0x380F5146, 0x380F6D86, 0x380F89AB, 0x380FA5AF, 0x380FC194, 0x380FDD5E, 0x380FF909, 0x38101497, 0x38103009, 0x38104B5C, 0x38106694, 0x381081B1, 0x38109CB2, 0x3810B798, 0x3810D25F, 0x3810ED0E, 0x381107A1, 0x38112219, 0x38113C75, 0x381156B9, 0x381170E4, 0x38118AF0, 0x3811A4E7, 0x3811BEC2, 0x3811D884, 0x3811F22B, 0x38120BBC, 0x38122534, 0x38123E90, 0x381257D7, 0x38127105, 0x38128A1A, 0x3812A317, 0x3812BBFD, 0x3812D4CB, 0x3812ED82, 0x38130621, 0x38131EAA, 0x3813371A, 0x38134F77, 0x381367BC, 0x38137FEA, 0x381397FF, 0x3813B002, 0x3813C7EE, 0x3813DFC4, 0x3813F785, 0x38140F2F, 0x381426C6, 0x38143E47, 0x381455B2, 0x38146D07, 0x38148449, 0x38149B78, 0x3814B290, 0x3814C996, 0x3814E085, 0x3814F764, 0x38150E2A, 0x381524E0, 0x38153B82, 0x3815520F, 0x3815688B, 0x38157EF1, 0x38159546, 0x3815AB85, 0x3815C1B4, 0x3815D7D0, 0x3815EDDB, 0x381603D1, 0x381619B5, 0x38162F87, 0x38164548, 0x38165AF6, 0x38167090, 0x3816861D, 0x38169B94, 0x3816B0FD, 0x3816C653, 0x3816DB95, 0x3816F0CA, 0x381705EC, 0x38171AFD, 0x38172FFE, 0x381744EE, 0x381759CB, 0x38176E9A, 0x38178358, 0x38179804, 0x3817ACA1, 0x3817C12F, 0x3817D5AB, 0x3817EA1A, 0x3817FE76, 0x381812C4, 0x38182701, 0x38183B2E, 0x38184F4D, 0x3818635C, 0x3818775D, 0x38188B4E, 0x38189F30, 0x3818B303, 0x3818C6C4, 0x3818DA7B, 0x3818EE21, 0x381901B7, 0x3819153F, 0x381928B9, 0x38193C26, 0x38194F82, 0x381962D3, 0x38197614, 0x38198946, 0x38199C6B, 0x3819AF83, 0x3819C28A, 0x3819D586, 0x3819E874, 0x3819FB54, 0x381A0E27, 0x381A20EB, 0x381A33A3, 0x381A464C, 0x381A58E8, 0x381A6B78, 0x381A7DFB, 0x381A9070, 0x381AA2DA, 0x381AB534, 0x381AC783, 0x381AD9C6, 0x381AEBFC, 0x381AFE25, 0x381B103F, 0x381B2251, 0x381B3453, 0x381B464A, 0x381B5835, 0x381B6A13, 0x381B7BE6, 0x381B8DAB, 0x381B9F66, 0x381BB115, 0x381BC2B6, 0x381BD44D, 0x381BE5D8, 0x381BF759, 0x381C08CC, 0x381C1A33, 0x381C2B90, 0x381C3CDF, 0x381C4E26, 0x381C5F5F, 0x381C708D, 0x381C81B3, 0x381C92CB, 0x381CA3D8, 0x381CB4DA, 0x381CC5D1, 0x381CD6BD, 0x381CE79E, 0x381CF874, 0x381D0940, 0x381D1A02, 0x381D2AB7, 0x381D3B64, 0x381D4C03, 0x381D5C9A, 0x381D6D26, 0x381D7DAA, 0x381D8E20, 0x381D9E8D, 0x381DAEF0, 0x381DBF48, 0x381DCF97, 0x381DDFDB, 0x381DF015, 0x381E0046, 0x381E106C, 0x381E2087, 0x381E309A, 0x381E40A2, 0x381E50A2, 0x381E6097, 0x381E7080, 0x381E8062, 0x381E903B, 0x381EA009, 0x381EAFCF, 0x381EBF8A, 0x381ECF3D, 0x381EDEE4, 0x381EEE84, 0x381EFE1B, 0x381F0DA7, 0x381F1D2B, 0x381F2CA4, 0x381F3C18, 0x381F4B7E, 0x381F5ADE, 0x381F6A33, 0x381F7983, 0x381F88C5, 0x381F9801, 0x381FA733, 0x381FB65F, 0x381FC580, 0x381FD499, 0x381FE3A6, 0x381FF2AF, 0x382001AC, 0x382010A4, 0x38201F91, 0x38202E75, 0x38203D52, 0x38204C26, 0x38205AF1, 0x382069B5, 0x38207870, 0x38208723, 0x382095CE, 0x3820A471, 0x3820B30B, 0x3820C19D, 0x3820D027, 0x3820DEA9, 0x3820ED22, 0x3820FB93, 0x382109FF, 0x3821185F, 0x382126BB, 0x3821350D, 0x38214358, 0x3821519A, 0x38215FD5, 0x38216E09, 0x38217C36, 0x38218A5A, 0x38219876, 0x3821A689, 0x3821B497, 0x3821C29D, 0x3821D09B, 0x3821DE93, 0x3821EC83, 0x3821FA6B, 0x3822084A, 0x38221624, 0x382223F6, 0x382231C2, 0x38223F86, 0x38224D42, 0x38225AF8, 0x382268A6, 0x3822764B, 0x382283EC, 0x38229184, 0x38229F16, 0x3822ACA0, 0x3822BA25, 0x3822C7A1, 0x3822D516, 0x3822E284, 0x3822EFEE, 0x3822FD4E, 0x38230AAA, 0x382317FD, 0x38232548, 0x38233290, 0x38233FCE, 0x38234D08, 0x38235A3A, 0x38236764, 0x38237489, 0xBF800000, 0x00000000, 0x36A6196A, 0x3703A179, 0x37261985, 0x3740D603, 0x3756AE5C, 0x3769269A, 0x37792674, 0x3783A19B, 0x3789F17B, 0x378FA735, 0x3794DDA7, 0x3799A93E, 0x379E19D1, 0x37A23BED, 0x37A619B9, 0x37A9BB85, 0x37AD281F, 0x37B06554, 0x37B377FF, 0x37B66449, 0x37B92DBF, 0x37BBD77C, 0x37BE6436, 0x37C0D64A, 0x37C32FCD, 0x37C5729C, 0x37C7A05B, 0x37C9BA8F, 0x37CBC27C, 0x37CDB962, 0x37CFA04E, 0x37D1783C, 0x37D34214, 0x37D4FEA6, 0x37D6AEB4, 0x37D852E6, 0x37D9EBE9, 0x37DB7A4A, 0x37DCFE94, 0x37DE7949, 0x37DFEADE, 0x37E153C0, 0x37E2B453, 0x37E40CFF, 0x37E55E11, 0x37E6A7EB, 0x37E7EACB, 0x37E92708, 0x37EA5CDF, 0x37EB8C97, 0x37ECB667, 0x37EDDA86, 0x37EEF937, 0x37F0129F, 0x37F126FB, 0x37F2366C, 0x37F34129, 0x37F44753, 0x37F5491C, 0x37F64699, 0x37F73FFC, 0x37F83561, 0x37F926E8, 0x37FA14B2, 0x37FAFEDC, 0x37FBE57A, 0x37FCC8B4, 0x37FDA899, 0x37FE8546, 0x37FF5ED0, 0x38001AAA, 0x38008470, 0x3800ECC6, 0x380153B4, 0x3801B944, 0x38021D83, 0x38028075, 0x3802E225, 0x3803429C, 0x3803A1E0, 0x3803FFF7, 0x38045CE9, 0x3804B8C2, 0x38051380, 0x38056D30, 0x3805C5D9, 0x38061D7C, 0x38067423, 0x3806C9D2, 0x38071E8D, 0x3807725B, 0x3807C542, 0x38081748, 0x3808686D, 0x3808B8B8, 0x38090830, 0x380956D7, 0x3809A4B2, 0x3809F1C5, 0x380A3E12, 0x380A899E, 0x380AD470, 0x380B1E86, 0x380B67E7, 0x380BB098, 0x380BF89A, 0x380C3FEE, 0x380C869D, 0x380CCCA5, 0x380D120A, 0x380D56D0, 0x380D9AFC, 0x380DDE8B, 0x380E2183, 0x380E63EA, 0x380EA5BC, 0x380EE6FF, 0x380F27B6, 0x380F67E1, 0x380FA785, 0x380FE6A2, 0x3810253B, 0x38106353, 0x3810A0ED, 0x3810DE06, 0x38111AA5, 0x381156C9, 0x38119277, 0x3811CDAF, 0x38120873, 0x381242C3, 0x38127CA3, 0x3812B615, 0x3812EF16, 0x381327AF, 0x38135FDD, 0x381397A2, 0x3813CF01, 0x381405F8, 0x38143C8F, 0x381472C0, 0x3814A891, 0x3814DDFF, 0x38151312, 0x381547C5, 0x38157C1E, 0x3815B01B, 0x3815E3C1, 0x3816170C, 0x381649FF, 0x38167C9C, 0x3816AEE5, 0x3816E0DB, 0x3817127C, 0x381743CD, 0x381774CE, 0x3817A57D, 0x3817D5DF, 0x381805F4, 0x381835BA, 0x38186538, 0x38189469, 0x3818C34F, 0x3818F1EC, 0x38192041, 0x38194E51, 0x38197C1A, 0x3819A99B, 0x3819D6DA, 0x381A03D2, 0x381A308B, 0x381A5CFF, 0x381A8931, 0x381AB524, 0x381AE0D4, 0x381B0C49, 0x381B377B, 0x381B6271, 0x381B8D2A, 0x381BB7A7, 0x381BE1E5, 0x381C0BEC, 0x381C35B6, 0x381C5F46, 0x381C889D, 0x381CB1BA, 0x381CDAA0, 0x381D034F, 0x381D2BC8, 0x381D5409, 0x381D7C13, 0x381DA3E9, 0x381DCB8B, 0x381DF2F8, 0x381E1A32, 0x381E4137, 0x381E680D, 0x381E8EAC, 0x381EB51D, 0x381EDB5C, 0x381F016C, 0x381F2749, 0x381F4CF9, 0x381F7278, 0x381F97CA, 0x381FBCEC, 0x381FE1E1, 0x382006A8, 0x38202B42, 0x38204FB1, 0x382073F3, 0x3820980A, 0x3820BBF5, 0x3820DFB3, 0x38210349, 0x382126B5, 0x382149F8, 0x38216D0F, 0x38219000, 0x3821B2C7, 0x3821D565, 0x3821F7DC, 0x38221A2B, 0x38223C55, 0x38225E57, 0x38228032, 0x3822A1E6, 0x3822C377, 0x3822E4E1, 0x38230625, 0x38232745, 0x38234841, 0x38236917, 0x382389CC, 0x3823AA5A, 0x3823CAC7, 0x3823EB11, 0x38240B39, 0x38242B3E, 0x38244B1F, 0x38246AE2, 0x38248A81, 0x3824AA00, 0x3824C95D, 0x3824E899, 0x382507B4, 0x382526B1, 0x3825458D, 0x38256448, 0x382582E5, 0x3825A163, 0x3825BFC1, 0x3825DE03, 0x3825FC24, 0x38261A27, 0x3826380B, 0x382655D5, 0x3826737F, 0x3826910C, 0x3826AE7B, 0x3826CBCD, 0x3826E905, 0x38270621, 0x3827231F, 0x38274001, 0x38275CC5, 0x38277970, 0x38279600, 0x3827B274, 0x3827CECD, 0x3827EB0D, 0x38280731, 0x3828233A, 0x38283F2B, 0x38285B00, 0x382876BC, 0x3828925F, 0x3828ADE7, 0x3828C956, 0x3828E4AC, 0x3828FFED, 0x38291B12, 0x3829361E, 0x38295111, 0x38296BEF, 0x382986B1, 0x3829A15D, 0x3829BBF3, 0x3829D670, 0x3829F0D4, 0x382A0B23, 0x382A255B, 0x382A3F7B, 0x382A5985, 0x382A7379, 0x382A8D57, 0x382AA71E, 0x382AC0CE, 0x382ADA69, 0x382AF3EC, 0x382B0D5C, 0x382B26B6, 0x382B3FFA, 0x382B592B, 0x382B7245, 0x382B8B4A, 0x382BA439, 0x382BBD14, 0x382BD5DC, 0x382BEE8E, 0x382C072D, 0x382C1FB6, 0x382C382C, 0x382C508F, 0x382C68DE, 0x382C8117, 0x382C993D, 0x382CB153, 0x382CC952, 0x382CE13E, 0x382CF91A, 0x382D10E0, 0x382D2895, 0x382D4037, 0x382D57C6, 0x382D6F42, 0x382D86AD, 0x382D9E05, 0x382DB54C, 0x382DCC80, 0x382DE3A1, 0x382DFAB1, 0x382E11AE, 0x382E289B, 0x382E3F77, 0x382E5643, 0x382E6CFB, 0x382E83A3, 0x382E9A38, 0x382EB0BF, 0x382EC733, 0x382EDD96, 0x382EF3E9, 0x382F0A2B, 0x382F205C, 0x382F3680, 0x382F4C91, 0x382F6291, 0x382F7884, 0x382F8E63, 0x382FA435, 0x382FB9F6, 0x382FCFA6, 0x382FE549, 0x382FFADB, 0x3830105D, 0x383025D1, 0x38303B35, 0x3830508B, 0x383065D0, 0x38307B05, 0x3830902F, 0x3830A545, 0x3830BA51, 0x3830CF4C, 0x3830E437, 0x3830F916, 0x38310DE5, 0x383122A7, 0x38313758, 0x38314BFE, 0x38316093, 0x3831751B, 0x38318995, 0x38319E01, 0x3831B25F, 0x3831C6B0, 0x3831DAF3, 0x3831EF28, 0x3832034F, 0x38321769, 0x38322B75, 0x38323F73, 0x38325364, 0x38326749, 0x38327B21, 0x38328EEB, 0x3832A2A7, 0x3832B659, 0x3832C9FC, 0x3832DD92, 0x3832F11D, 0x3833049A, 0x38331809, 0x38332B6D, 0x38333EC4, 0x3833520F, 0x3833654D, 0x3833787D, 0x38338BA5, 0x38339EBC, 0x3833B1CB, 0x3833C4CD, 0x3833D7C0, 0x3833EAAC, 0x3833FD89, 0x38341059, 0x3834231E, 0x383435D8, 0x38344887, 0x38345B2B, 0x38346DC1, 0x3834804C, 0x383492CC, 0x3834A541, 0x3834B7AB, 0x3834CA0B, 0x3834DC5C, 0x3834EEA5, 0x383500E1, 0x38351311, 0x38352539, 0x38353754, 0x38354966, 0x38355B6A, 0x38356D67, 0x38357F55, 0x3835913B, 0x3835A316, 0x3835B4E7, 0x3835C6AC, 0x3835D866, 0x3835EA18, 0x3835FBBC, 0x38360D58, 0x38361EE9, 0x38363072, 0x383641ED, 0x38365360, 0x383664CA, 0x38367627, 0x3836877C, 0x383698C8, 0x3836AA07, 0x3836BB40, 0x3836CC6B, 0x3836DD8E, 0x3836EEA6, 0x3836FFB6, 0x383710BD, 0x383721B7, 0x383732AB, 0x38374392, 0x38375473, 0x38376549, 0x38377614, 0x383786D7, 0x38379792, 0x3837A841, 0x3837B8E9, 0x3837C988, 0x3837DA1C, 0x3837EAA8, 0x3837FB29, 0x38380BA1, 0x38381C12, 0x38382C7A, 0x38383CD7, 0x38384D2F, 0x38385D7B, 0x38386DBD, 0x38387DF9, 0x38388E2A, 0x38389E53, 0x3838AE74, 0x3838BE8C, 0x3838CE9C, 0x3838DEA2, 0x3838EEA1, 0x3838FE96, 0x38390E82, 0x38391E67, 0x38392E43, 0x38393E19, 0x38394DE4, 0x38395DA8, 0x38396D63, 0x38397D15, 0x38398CC0, 0x38399C62, 0x3839ABFC, 0x3839BB8E, 0x3839CB17, 0x3839DA98, 0x3839EA14, 0x3839F985, 0x383A08F0, 0x383A1850, 0x383A27AB, 0x383A36FE, 0x383A4648, 0x383A558A, 0x383A64C6, 0x383A73F8, 0x383A8324, 0x383A9248, 0x383AA166, 0x383AB079, 0x383ABF87, 0x383ACE8D, 0xBF800000, 0x00000000, 0x36C1C874, 0x371991D6, 0x3741C897, 0x3760F9D6, 0x377A7647, 0x37880153, 0x3791568D, 0x37999207, 0x37A0EF37, 0x37A79893, 0x37ADAD70, 0x37B345A3, 0x37B8739F, 0x37BD461A, 0x37C1C8E4, 0x37C605A1, 0x37CA045E, 0x37CDCBC4, 0x37D1618F, 0x37D4CA8D, 0x37D80AF0, 0x37DB264D, 0x37DE1FD2, 0x37E0FA3F, 0x37E3B805, 0x37E65B4C, 0x37E8E607, 0x37EB59E9, 0x37EDB882, 0x37F00333, 0x37F23B4C, 0x37F461E4, 0x37F67808, 0x37F87EB7, 0x37FA76C6, 0x37FC6105, 0x37FE3E31, 0x3800077C, 0x3800E9FE, 0x3801C6E7, 0x38029E7D, 0x38037102, 0x38043EAF, 0x380507BE, 0x3805CC60, 0x38068CC7, 0x38074922, 0x3808019A, 0x3808B659, 0x38096781, 0x380A153C, 0x380ABFA6, 0x380B66DF, 0x380C0B09, 0x380CAC3D, 0x380D4A98, 0x380DE630, 0x380E7F1F, 0x380F157D, 0x380FA95D, 0x38103AD6, 0x3810C9FD, 0x381156E2, 0x3811E197, 0x38126A2E, 0x3812F0B8, 0x38137543, 0x3813F7DF, 0x38147898, 0x3814F77F, 0x381574A2, 0x3815F007, 0x381669C2, 0x3816E1D8, 0x38175857, 0x3817CD4B, 0x381840BB, 0x3818B2B3, 0x3819233D, 0x38199261, 0x381A0026, 0x381A6C99, 0x381AD7BF, 0x381B419E, 0x381BAA43, 0x381C11B0, 0x381C77F0, 0x381CDD08, 0x381D40FC, 0x381DA3D8, 0x381E059F, 0x381E6658, 0x381EC609, 0x381F24B5, 0x381F8264, 0x381FDF19, 0x38203ADC, 0x382095B0, 0x3820EF9A, 0x382148A0, 0x3821A0C5, 0x3821F80E, 0x38224E7E, 0x3822A41C, 0x3822F8E7, 0x38234CEA, 0x3823A024, 0x3823F298, 0x3824444E, 0x38249544, 0x3824E581, 0x38253507, 0x382583D9, 0x3825D1FC, 0x38261F72, 0x38266C40, 0x3826B864, 0x382703E2, 0x38274EC2, 0x382798FF, 0x3827E2A2, 0x38282BAB, 0x3828741D, 0x3828BBF8, 0x38290341, 0x382949FB, 0x38299026, 0x3829D5C5, 0x382A1ADB, 0x382A5F6A, 0x382AA375, 0x382AE6F9, 0x382B29FD, 0x382B6C81, 0x382BAE87, 0x382BF015, 0x382C3124, 0x382C71BC, 0x382CB1DF, 0x382CF18E, 0x382D30C7, 0x382D6F8F, 0x382DADE9, 0x382DEBD2, 0x382E294E, 0x382E6661, 0x382EA309, 0x382EDF48, 0x382F1B1F, 0x382F5693, 0x382F919F, 0x382FCC4A, 0x38300692, 0x3830407A, 0x38307A02, 0x3830B330, 0x3830EBFD, 0x3831246F, 0x38315C87, 0x38319444, 0x3831CBA9, 0x383202B8, 0x38323970, 0x38326FD3, 0x3832A5E3, 0x3832DB9E, 0x38331106, 0x3833461F, 0x38337AE8, 0x3833AF61, 0x3833E38B, 0x3834176A, 0x38344AFA, 0x38347E3F, 0x3834B13A, 0x3834E3E8, 0x38351652, 0x38354871, 0x38357A46, 0x3835ABD9, 0x3835DD22, 0x38360E29, 0x38363EEB, 0x38366F69, 0x38369FA2, 0x3836CF9B, 0x3836FF53, 0x38372EC8, 0x38375DFF, 0x38378CF6, 0x3837BBAE, 0x3837EA27, 0x38381863, 0x38384663, 0x38387426, 0x3838A1B0, 0x3838CEFA, 0x3838FC0D, 0x383928E7, 0x38395584, 0x383981EA, 0x3839AE19, 0x3839DA0F, 0x383A05D0, 0x383A315B, 0x383A5CAB, 0x383A87CA, 0x383AB2B2, 0x383ADD66, 0x383B07E9, 0x383B3234, 0x383B5C4E, 0x383B8637, 0x383BAFEB, 0x383BD970, 0x383C02C2, 0x383C2BE4, 0x383C54D8, 0x383C7D9A, 0x383CA62B, 0x383CCE90, 0x383CF6C6, 0x383D1ECE, 0x383D46A9, 0x383D6E53, 0x383D95D4, 0x383DBD29, 0x383DE44F, 0x383E0B4C, 0x383E321D, 0x383E58C1, 0x383E7F3D, 0x383EA58D, 0x383ECBB3, 0x383EF1B0, 0x383F1784, 0x383F3D32, 0x383F62B3, 0x383F880E, 0x383FAD43, 0x383FD24E, 0x383FF733, 0x38401BF1, 0x38404089, 0x384064FA, 0x38408945, 0x3840AD6A, 0x3840D16A, 0x3840F547, 0x384118FE, 0x38413C90, 0x38415FFF, 0x3841834A, 0x3841A672, 0x3841C976, 0x3841EC56, 0x38420F15, 0x384231B0, 0x3842542A, 0x38427684, 0x384298B9, 0x3842BACE, 0x3842DCC2, 0x3842FE97, 0x38432049, 0x384341D9, 0x3843634C, 0x384384A0, 0x3843A5D1, 0x3843C6E6, 0x3843E7DA, 0x384408AD, 0x38442964, 0x384449FB, 0x38446A76, 0x38448AD0, 0x3844AB0E, 0x3844CB2C, 0x3844EB2E, 0x38450B15, 0x38452ADD, 0x38454A87, 0x38456A16, 0x38458989, 0x3845A8E1, 0x3845C81A, 0x3845E738, 0x3846063B, 0x38462522, 0x384643F0, 0x384662A0, 0x38468137, 0x38469FB0, 0x3846BE13, 0x3846DC58, 0x3846FA87, 0x38471897, 0x38473692, 0x38475471, 0x38477238, 0x38478FE2, 0x3847AD77, 0x3847CAF1, 0x3847E851, 0x3848059C, 0x384822CB, 0x38483FE4, 0x38485CE5, 0x384879CD, 0x3848969C, 0x3848B355, 0x3848CFF8, 0x3848EC7F, 0x384908F3, 0x3849254F, 0x38494192, 0x38495DC1, 0x384979D8, 0x384995D9, 0x3849B1C1, 0x3849CD96, 0x3849E955, 0x384A04FB, 0x384A208D, 0x384A3C0A, 0x384A5771, 0x384A72C2, 0x384A8DFD, 0x384AA925, 0x384AC436, 0x384ADF35, 0x384AFA1D, 0x384B14F0, 0x384B2FAF, 0x384B4A5B, 0x384B64F1, 0x384B7F71, 0x384B99E0, 0x384BB43A, 0x384BCE80, 0x384BE8B3, 0x384C02D3, 0x384C1CDF, 0x384C36D6, 0x384C50BC, 0x384C6A8F, 0x384C844C, 0x384C9DF8, 0x384CB791, 0x384CD11A, 0x384CEA8C, 0x384D03EE, 0x384D1D3D, 0x384D3679, 0x384D4FA4, 0x384D68BC, 0x384D81C3, 0x384D9AB8, 0x384DB39B, 0x384DCC6C, 0x384DE52C, 0x384DFDDB, 0x384E1677, 0x384E2F03, 0x384E477B, 0x384E5FE6, 0x384E783E, 0x384E9085, 0x384EA8BB, 0x384EC0E1, 0x384ED8F7, 0x384EF0FC, 0x384F08F0, 0x384F20D4, 0x384F38A8, 0x384F506B, 0x384F681D, 0x384F7FBF, 0x384F9754, 0x384FAED8, 0x384FC64B, 0x384FDDAE, 0x384FF503, 0x38500C47, 0x3850237B, 0x38503AA2, 0x385051B8, 0x385068C0, 0x38507FB8, 0x385096A1, 0x3850AD7B, 0x3850C446, 0x3850DB04, 0x3850F1B2, 0x3851084F, 0x38511EE1, 0x38513562, 0x38514BD6, 0x3851623C, 0x38517891, 0x38518ED9, 0x3851A513, 0x3851BB3F, 0x3851D15E, 0x3851E76E, 0x3851FD71, 0x38521367, 0x3852294B, 0x38523F25, 0x385254F1, 0x38526AAF, 0x38528060, 0x38529603, 0x3852AB98, 0x3852C11F, 0x3852D69B, 0x3852EC07, 0x38530168, 0x385316BE, 0x38532C03, 0x3853413E, 0x3853566A, 0x38536B89, 0x3853809D, 0x385395A6, 0x3853AA9E, 0x3853BF8B, 0x3853D46E, 0x3853E942, 0x3853FE09, 0x385412C5, 0x38542776, 0x38543C19, 0x385450AF, 0x3854653C, 0x385479BB, 0x38548E2D, 0x3854A294, 0x3854B6EF, 0x3854CB40, 0x3854DF83, 0x3854F3BB, 0x385507E8, 0x38551C07, 0x3855301B, 0x38554427, 0x38555825, 0x38556C16, 0x38557FFE, 0x385593DB, 0x3855A7AB, 0x3855BB6F, 0x3855CF2C, 0x3855E2DA, 0x3855F67E, 0x38560A16, 0x38561DA6, 0x38563129, 0x385644A1, 0x38565810, 0x38566B71, 0x38567ECB, 0x38569216, 0x3856A55A, 0x3856B892, 0x3856CBBF, 0x3856DEE4, 0x3856F1FC, 0x3857050B, 0x3857180F, 0x38572B08, 0x38573DF6, 0x385750DC, 0x385763B7, 0x38577687, 0x3857894E, 0x38579C0B, 0x3857AEBC, 0x3857C166, 0x3857D404, 0x3857E69A, 0x3857F923, 0x38580BA6, 0x38581E1D, 0x3858308A, 0x385842EC, 0x38585549, 0x38586797, 0x385879DE, 0x38588C1C, 0x38589E4F, 0x3858B07A, 0x3858C29D, 0x3858D4B4, 0x3858E6C1, 0x3858F8C6, 0x38590AC2, 0x38591CB6, 0x38592E9F, 0x3859407F, 0x38595255, 0x38596423, 0x385975E8, 0x385987A5, 0x38599957, 0x3859AB01, 0x3859BCA2, 0x3859CE3B, 0x3859DFCA, 0x3859F150, 0xBF800000, 0x00000000, 0x36E88A61, 0x373848D3, 0x37688A91, 0x3786FC78, 0x37964729, 0x37A334FE, 0x37AE6819, 0x37B8490F, 0x37C11F4E, 0x37C91DC0, 0x37D06A04, 0x37D720AB, 0x37DD57DE, 0x37E3213F, 0x37E88AFF, 0x37EDA0B7, 0x37F26BFB, 0x37F6F4E3, 0x37FB423F, 0x37FF59DA, 0x3801A05B, 0x38037D95, 0x3805467D, 0x3806FCC0, 0x3808A1D1, 0x380A36FE, 0x380BBD6D, 0x380D3629, 0x380EA220, 0x38100227, 0x38115700, 0x3812A15C, 0x3813E1DC, 0x38151910, 0x38164781, 0x38176DA8, 0x38188BF8, 0x3819A2D5, 0x381AB2A6, 0x381BBBBE, 0x381CBE74, 0x381DBB12, 0x381EB1E2, 0x381FA327, 0x38208F1E, 0x38217601, 0x38225807, 0x38233566, 0x38240E49, 0x3824E2E3, 0x3825B35D, 0x38267FDB, 0x3827488A, 0x38280D87, 0x3828CEF9, 0x38298CFE, 0x382A47B8, 0x382AFF3E, 0x382BB3AF, 0x382C6524, 0x382D13B6, 0x382DBF7D, 0x382E688F, 0x382F0F02, 0x382FB2EB, 0x3830545D, 0x3830F36B, 0x38319027, 0x38322AA1, 0x3832C2EB, 0x38335912, 0x3833ED27, 0x38347F39, 0x38350F54, 0x38359D89, 0x383629E0, 0x3836B469, 0x38373D2C, 0x3837C437, 0x38384996, 0x3838CD50, 0x38394F73, 0x3839D008, 0x383A4F13, 0x383ACCA6, 0x383B48C3, 0x383BC376, 0x383C3CC5, 0x383CB4BB, 0x383D2B5B, 0x383DA0B2, 0x383E14C1, 0x383E8795, 0x383EF932, 0x383F699D, 0x383FD8DD, 0x384046FA, 0x3840B3F9, 0x38411FE0, 0x38418AB3, 0x3841F479, 0x38425D38, 0x3842C4F4, 0x38432BB0, 0x38439175, 0x3843F642, 0x38445A21, 0x3844BD16, 0x38451F21, 0x38458048, 0x3845E093, 0x38464002, 0x38469E98, 0x3846FC5D, 0x38475951, 0x3847B577, 0x384810D7, 0x38486B71, 0x3848C548, 0x38491E5F, 0x384976BE, 0x3849CE61, 0x384A254F, 0x384A7B8B, 0x384AD116, 0x384B25F7, 0x384B7A2B, 0x384BCDB7, 0x384C209F, 0x384C72E4, 0x384CC487, 0x384D1590, 0x384D65FA, 0x384DB5CC, 0x384E0507, 0x384E53AE, 0x384EA1C3, 0x384EEF49, 0x384F3C3E, 0x384F88A9, 0x384FD488, 0x38501FE0, 0x38506AAF, 0x3850B4FC, 0x3850FEC6, 0x3851480E, 0x385190D8, 0x3851D924, 0x385220F4, 0x3852684A, 0x3852AF28, 0x3852F58D, 0x38533B7F, 0x385380FD, 0x3853C608, 0x38540AA2, 0x38544ECB, 0x38549286, 0x3854D5D6, 0x385518BB, 0x38555B35, 0x38559D46, 0x3855DEF2, 0x38562035, 0x38566112, 0x3856A18F, 0x3856E1A7, 0x3857215E, 0x385760B5, 0x38579FAC, 0x3857DE48, 0x38581C84, 0x38585A65, 0x385897EC, 0x3858D517, 0x385911EB, 0x38594E67, 0x38598A8E, 0x3859C65C, 0x385A01D9, 0x385A3CFD, 0x385A77D2, 0x385AB254, 0x385AEC86, 0x385B2666, 0x385B5FF6, 0x385B9939, 0x385BD22D, 0x385C0AD3, 0x385C4330, 0x385C7B3F, 0x385CB307, 0x385CEA82, 0x385D21B6, 0x385D589F, 0x385D8F41, 0x385DC59E, 0x385DFBB3, 0x385E3184, 0x385E6710, 0x385E9C58, 0x385ED15D, 0x385F061E, 0x385F3A9F, 0x385F6EDC, 0x385FA2DA, 0x385FD698, 0x38600A15, 0x38603D55, 0x38607055, 0x3860A319, 0x3860D59E, 0x386107E7, 0x386139F6, 0x38616BC5, 0x38619D5E, 0x3861CEBA, 0x3861FFDD, 0x386230C5, 0x38626177, 0x386291EF, 0x3862C230, 0x3862F23A, 0x3863220A, 0x386351A6, 0x3863810E, 0x3863B03F, 0x3863DF3C, 0x38640E01, 0x38643C96, 0x38646AF6, 0x38649924, 0x3864C71E, 0x3864F4E7, 0x3865227F, 0x38654FE4, 0x38657D19, 0x3865AA1C, 0x3865D6F0, 0x38660392, 0x38663006, 0x38665C4E, 0x38668865, 0x3866B44D, 0x3866E008, 0x38670B98, 0x386736F7, 0x3867622C, 0x38678D35, 0x3867B80F, 0x3867E2C0, 0x38680D45, 0x3868379F, 0x386861CF, 0x38688BD3, 0x3868B5AD, 0x3868DF5F, 0x386908E7, 0x38693246, 0x38695B7F, 0x3869848B, 0x3869AD71, 0x3869D631, 0x3869FEC7, 0x386A2737, 0x386A4F81, 0x386A77A4, 0x386A9FA0, 0x386AC776, 0x386AEF25, 0x386B16B1, 0x386B3E19, 0x386B6558, 0x386B8C76, 0x386BB36D, 0x386BDA41, 0x386C00F3, 0x386C277F, 0x386C4DE8, 0x386C742F, 0x386C9A53, 0x386CC053, 0x386CE632, 0x386D0BF0, 0x386D318A, 0x386D5703, 0x386D7C5B, 0x386DA190, 0x386DC6A6, 0x386DEB9C, 0x386E1070, 0x386E3526, 0x386E59B8, 0x386E7E2F, 0x386EA282, 0x386EC6B7, 0x386EEACE, 0x386F0EC6, 0x386F32A0, 0x386F565A, 0x386F79F5, 0x386F9D74, 0x386FC0D2, 0x386FE415, 0x3870073A, 0x38702A41, 0x38704D2C, 0x38706FF9, 0x387092A7, 0x3870B53D, 0x3870D7B2, 0x3870FA0E, 0x38711C4E, 0x38713E71, 0x38716078, 0x38718263, 0x3871A433, 0x3871C5EA, 0x3871E783, 0x38720903, 0x38722A68, 0x38724BB1, 0x38726CE2, 0x38728DF7, 0x3872AEF3, 0x3872CFD6, 0x3872F09E, 0x3873114E, 0x387331E2, 0x3873525D, 0x387372C2, 0x3873930B, 0x3873B33C, 0x3873D354, 0x3873F354, 0x3874133D, 0x3874330B, 0x387452C3, 0x38747262, 0x387491EB, 0x3874B15B, 0x3874D0B3, 0x3874EFF5, 0x38750F1E, 0x38752E31, 0x38754D2E, 0x38756C12, 0x38758AE3, 0x3875A998, 0x3875C83B, 0x3875E6C7, 0x3876053B, 0x3876239B, 0x387641E2, 0x38766017, 0x38767E35, 0x38769C3D, 0x3876BA30, 0x3876D80C, 0x3876F5D2, 0x38771386, 0x38773125, 0x38774EAD, 0x38776C23, 0x38778981, 0x3877A6CC, 0x3877C403, 0x3877E127, 0x3877FE36, 0x38781B2E, 0x38783816, 0x387854E7, 0x387871A6, 0x38788E51, 0x3878AAE9, 0x3878C76B, 0x3878E3DC, 0x3879003B, 0x38791C86, 0x387938BB, 0x387954DF, 0x387970F1, 0x38798CF2, 0x3879A8DC, 0x3879C4B7, 0x3879E07E, 0x3879FC32, 0x387A17D5, 0x387A3365, 0x387A4EE2, 0x387A6A4E, 0x387A85AA, 0x387AA0F3, 0x387ABC28, 0x387AD750, 0x387AF262, 0x387B0D66, 0x387B2856, 0x387B4336, 0x387B5E03, 0x387B78C3, 0x387B936F, 0x387BAE0A, 0x387BC895, 0x387BE310, 0x387BFD77, 0x387C17D0, 0x387C3219, 0x387C4C4F, 0x387C6677, 0x387C808F, 0x387C9A96, 0x387CB48C, 0x387CCE72, 0x387CE84B, 0x387D0210, 0x387D1BC7, 0x387D3571, 0x387D4F07, 0x387D688F, 0x387D8208, 0x387D9B72, 0x387DB4CC, 0x387DCE15, 0x387DE751, 0x387E007C, 0x387E1999, 0x387E32A9, 0x387E4BA8, 0x387E6497, 0x387E7D7A, 0x387E964B, 0x387EAF10, 0x387EC7C5, 0x387EE06C, 0x387EF906, 0x387F118F, 0x387F2A0A, 0x387F4278, 0x387F5AD7, 0x387F7329, 0x387F8B6E, 0x387FA3A1, 0x387FBBCA, 0x387FD3E2, 0x387FEBED, 0x388001F6, 0x38800DEE, 0x388019E0, 0x388025C9, 0x388031AE, 0x38803D8A, 0x38804960, 0x38805530, 0x388060F9, 0x38806CBC, 0x38807877, 0x3880842D, 0x38808FDB, 0x38809B83, 0x3880A725, 0x3880B2C1, 0x3880BE55, 0x3880C9E4, 0x3880D56D, 0x3880E0EE, 0x3880EC6A, 0x3880F7DF, 0x3881034E, 0x38810EB7, 0x38811A18, 0x38812576, 0x388130CB, 0x38813C1B, 0x38814766, 0x388152AA, 0x38815DE8, 0x3881691F, 0x38817452, 0x38817F7D, 0x38818AA4, 0x388195C4, 0x3881A0DE, 0x3881ABF2, 0x3881B702, 0x3881C20A, 0x3881CD0D, 0x3881D80A, 0x3881E301, 0x3881EDF3, 0x3881F8DF, 0x388203C5, 0x38820EA7, 0x38821982, 0x38822456, 0x38822F26, 0x388239F0, 0x388244B5, 0x38824F75, 0x38825A2E, 0x388264E2, 0x38826F91, 0x38827A3B, 0x388284DF, 0x38828F7D, 0x38829A16, 0x3882A4AA, 0x3882AF39, 0x3882B9C2, 0x3882C446, 0xBF800000, 0x00000000, 0x3904CF18, 0x3952814E, 0x3984D142, 0x399A3308, 0x39ABAB9C, 0x39BA713C, 0x39C73D1D, 0x39D286B3, 0x39DC9F96, 0x39E5C1F1, 0x39EE18BA, 0x39F5C48F, 0x39FCDED2, 0x3A01BDCD, 0x3A04D58F, 0x3A07BD4E, 0x3A0A7A8A, 0x3A0D11DA, 0x3A0F8725, 0x3A11DDBA, 0x3A141878, 0x3A1639D6, 0x3A1843FF, 0x3A1A38D8, 0x3A1C1A0A, 0x3A1DE916, 0x3A1FA749, 0x3A2155D6, 0x3A22F5C8, 0x3A24881A, 0x3A260DA4, 0x3A278732, 0x3A28F57B, 0x3A2A5927, 0x3A2BB2CD, 0x3A2D02FC, 0x3A2E4A33, 0x3A2F88EC, 0x3A30BF93, 0x3A31EE8D, 0x3A33163C, 0x3A3436F4, 0x3A35510C, 0x3A3664CA, 0x3A37727B, 0x3A387A60, 0x3A397CB5, 0x3A3A79B7, 0x3A3B719E, 0x3A3C649B, 0x3A3D52E0, 0x3A3E3C9D, 0x3A3F21FB, 0x3A400323, 0x3A40E03D, 0x3A41B96C, 0x3A428ED6, 0x3A43609B, 0x3A442ED8, 0x3A44F9AD, 0x3A45C136, 0x3A46858D, 0x3A4746CC, 0x3A48050D, 0x3A48C067, 0x3A4978EF, 0x3A4A2EBB, 0x3A4AE1E1, 0x3A4B9273, 0x3A4C4084, 0x3A4CEC26, 0x3A4D9569, 0x3A4E3C5E, 0x3A4EE116, 0x3A4F83A0, 0x3A50240B, 0x3A50C263, 0x3A515EB7, 0x3A51F914, 0x3A529186, 0x3A532819, 0x3A53BCD8, 0x3A544FD0, 0x3A54E10B, 0x3A557093, 0x3A55FE73, 0x3A568AB3, 0x3A57155E, 0x3A579E7C, 0x3A582615, 0x3A58AC35, 0x3A5930E0, 0x3A59B420, 0x3A5A35FD, 0x3A5AB67F, 0x3A5B35AB, 0x3A5BB389, 0x3A5C3021, 0x3A5CAB78, 0x3A5D2595, 0x3A5D9E7C, 0x3A5E1638, 0x3A5E8CCA, 0x3A5F023B, 0x3A5F768E, 0x3A5FE9CA, 0x3A605BF2, 0x3A60CD0F, 0x3A613D23, 0x3A61AC32, 0x3A621A45, 0x3A62875A, 0x3A62F37B, 0x3A635EAA, 0x3A63C8EB, 0x3A643244, 0x3A649AB7, 0x3A650247, 0x3A6568FB, 0x3A65CED3, 0x3A6633D6, 0x3A669804, 0x3A66FB64, 0x3A675DF8, 0x3A67BFC2, 0x3A6820C7, 0x3A688108, 0x3A68E08B, 0x3A693F50, 0x3A699D5C, 0x3A69FAB0, 0x3A6A5750, 0x3A6AB33E, 0x3A6B0E7E, 0x3A6B6910, 0x3A6BC2F9, 0x3A6C1C3C, 0x3A6C74D9, 0x3A6CCCD3, 0x3A6D242D, 0x3A6D7AEA, 0x3A6DD109, 0x3A6E2690, 0x3A6E7B7F, 0x3A6ECFD9, 0x3A6F23A0, 0x3A6F76D4, 0x3A6FC97A, 0x3A701B92, 0x3A706D1F, 0x3A70BE21, 0x3A710E9B, 0x3A715E91, 0x3A71AE01, 0x3A71FCEE, 0x3A724B5B, 0x3A729948, 0x3A72E6B6, 0x3A7333A8, 0x3A738021, 0x3A73CC1F, 0x3A7417A7, 0x3A7462B7, 0x3A74AD54, 0x3A74F77B, 0x3A754133, 0x3A758A78, 0x3A75D34F, 0x3A761BB9, 0x3A7663B4, 0x3A76AB44, 0x3A76F26C, 0x3A773929, 0x3A777F7E, 0x3A77C56D, 0x3A780AF7, 0x3A78501D, 0x3A7894DF, 0x3A78D940, 0x3A791D3F, 0x3A7960DD, 0x3A79A41F, 0x3A79E702, 0x3A7A2987, 0x3A7A6BB2, 0x3A7AAD81, 0x3A7AEEF6, 0x3A7B3013, 0x3A7B70D8, 0x3A7BB144, 0x3A7BF15D, 0x3A7C311F, 0x3A7C708C, 0x3A7CAFA8, 0x3A7CEE70, 0x3A7D2CE5, 0x3A7D6B0B, 0x3A7DA8DF, 0x3A7DE666, 0x3A7E239D, 0x3A7E6086, 0x3A7E9D23, 0x3A7ED972, 0x3A7F1578, 0x3A7F5132, 0x3A7F8CA0, 0x3A7FC7C8, 0x3A800153, 0x3A801E9E, 0x3A803BC5, 0x3A8058CA, 0x3A8075AA, 0x3A809269, 0x3A80AF05, 0x3A80CB7F, 0x3A80E7D8, 0x3A81040F, 0x3A812026, 0x3A813C1B, 0x3A8157F1, 0x3A8173A5, 0x3A818F3A, 0x3A81AAAF, 0x3A81C606, 0x3A81E13D, 0x3A81FC55, 0x3A82174F, 0x3A82322A, 0x3A824CE8, 0x3A826787, 0x3A82820A, 0x3A829C70, 0x3A82B6B8, 0x3A82D0E4, 0x3A82EAF3, 0x3A8304E6, 0x3A831EBF, 0x3A83387C, 0x3A835216, 0x3A836B9F, 0x3A838505, 0x3A839E52, 0x3A83B785, 0x3A83D0A7, 0x3A83E9A6, 0x3A84028C, 0x3A841B58, 0x3A84340A, 0x3A844CA3, 0x3A846521, 0x3A847D86, 0x3A8495D1, 0x3A84AE0B, 0x3A84C62B, 0x3A84DE29, 0x3A84F616, 0x3A850DF1, 0x3A8525AA, 0x3A853D52, 0x3A8554E0, 0x3A856C5D, 0x3A8583B8, 0x3A859B0A, 0x3A85B23A, 0x3A85C958, 0x3A85E05D, 0x3A85F750, 0x3A860E2A, 0x3A8624F3, 0x3A863BA1, 0x3A86523F, 0x3A8668C3, 0x3A867F36, 0x3A86958E, 0x3A86ABD6, 0x3A86C204, 0x3A86D821, 0x3A86EE2C, 0x3A870427, 0x3A871A08, 0x3A872FCE, 0x3A87458D, 0x3A875B31, 0x3A8770C5, 0x3A878647, 0x3A879BAF, 0x3A87B106, 0x3A87C64C, 0x3A87DB81, 0x3A87F0A5, 0x3A8805AF, 0x3A881AA7, 0x3A882F97, 0x3A88446E, 0x3A885933, 0x3A886DDE, 0x3A888281, 0x3A889713, 0x3A88AB93, 0x3A88BFFA, 0x3A88D458, 0x3A88E8A5, 0x3A88FCD8, 0x3A891103, 0x3A89251C, 0x3A89391C, 0x3A894D13, 0x3A8960F8, 0x3A8974CD, 0x3A898891, 0x3A899C43, 0x3A89AFED, 0x3A89C37D, 0x3A89D704, 0x3A89EA71, 0x3A89FDD6, 0x3A8A112A, 0x3A8A2475, 0x3A8A37A7, 0x3A8A4AD0, 0x3A8A5DE7, 0x3A8A70EE, 0x3A8A83E3, 0x3A8A96D0, 0x3A8AA9AB, 0x3A8ABC76, 0x3A8ACF38, 0x3A8AE1E8, 0x3A8AF488, 0x3A8B0716, 0x3A8B199B, 0x3A8B2C10, 0x3A8B3E73, 0x3A8B50CE, 0x3A8B6317, 0x3A8B7558, 0x3A8B8788, 0x3A8B99A7, 0x3A8BABBD, 0x3A8BBDC1, 0x3A8BCFBE, 0x3A8BE1A9, 0x3A8BF383, 0x3A8C0554, 0x3A8C171C, 0x3A8C28D4, 0x3A8C3A7A, 0x3A8C4C18, 0x3A8C5DA4, 0x3A8C6F28, 0x3A8C809B, 0x3A8C9205, 0x3A8CA367, 0x3A8CB4B7, 0x3A8CC5F7, 0x3A8CD72D, 0x3A8CE85B, 0x3A8CF978, 0x3A8D0A8C, 0x3A8D1B90, 0x3A8D2C8A, 0x3A8D3D7C, 0x3A8D4E5D, 0x3A8D5F35, 0x3A8D6FFC, 0x3A8D80BA, 0x3A8D9170, 0x3A8DA215, 0x3A8DB2B9, 0x3A8DC344, 0x3A8DD3CF, 0x3A8DE449, 0x3A8DF4B1, 0x3A8E0519, 0x3A8E1571, 0x3A8E25BF, 0x3A8E35FD, 0x3A8E4632, 0x3A8E565E, 0x3A8E6682, 0x3A8E769D, 0x3A8E86A7, 0x3A8E96A9, 0x3A8EA6A1, 0x3A8EB689, 0x3A8EC668, 0x3A8ED63F, 0x3A8EE60C, 0x3A8EF5D2, 0x3A8F0586, 0x3A8F1531, 0x3A8F24D4, 0x3A8F346E, 0x3A8F4400, 0x3A8F5381, 0x3A8F6301, 0x3A8F7271, 0x3A8F81D7, 0x3A8F9136, 0x3A8FA083, 0x3A8FAFD0, 0x3A8FBF14, 0x3A8FCE47, 0x3A8FDD72, 0x3A8FEC94, 0x3A8FFBAE, 0x3A900ABE, 0x3A9019C7, 0x3A9028BE, 0x3A9037B5, 0x3A9046A3, 0x3A905581, 0x3A906456, 0x3A90732A, 0x3A9081EE, 0x3A9090A9, 0x3A909F5B, 0x3A90AE05, 0x3A90BCA6, 0x3A90CB3F, 0x3A90D9CF, 0x3A90E856, 0x3A90F6D5, 0x3A91054B, 0x3A9113B9, 0x3A91221E, 0x3A91307B, 0x3A913ECF, 0x3A914D11, 0x3A915B54, 0x3A91698E, 0x3A9177C0, 0x3A9185E9, 0x3A919409, 0x3A91A221, 0x3A91B030, 0x3A91BE37, 0x3A91CC35, 0x3A91DA33, 0x3A91E81F, 0x3A91F604, 0x3A9203E8, 0x3A9211BB, 0x3A921F8E, 0x3A922D50, 0x3A923B12, 0x3A9248CB, 0x3A925673, 0x3A92641B, 0x3A9271BB, 0x3A927F52, 0x3A928CE9, 0x3A929A6E, 0x3A92A7F4, 0x3A92B569, 0x3A92C2DD, 0x3A92D049, 0x3A92DDAD, 0x3A92EB07, 0x3A92F85A, 0x3A9305A3, 0x3A9312ED, 0x3A932025, 0x3A932D5E, 0x3A933A8D, 0x3A9347B5, 0x3A9354DC, 0x3A9361F2, 0x3A936F08, 0x3A937C0D, 0x3A938912, 0x3A93960E, 0x3A93A30B, 0x3A93AFF6, 0x3A93BCE1, 0x3A93C9C3, 0x3A93D69D, 0x3A93E36F, 0x3A93F040, 0x3A93FD00, 0x3A9409C0, 0x3A941678, 0x3A94232F, 0x3A942FD6, 0x3A943C7C, 0x3A94491A, 0x3A9455AF, 0x3A946245, 0x3A946EC9, 0x3A947B4D, 0x3A9487D1, 0x3A949444, 0x3A94A0B6, 0x3A94AD21, 0x3A94B982, 0x3A94C5DB, 0x3A94D235, 0x3A94DE85, 0x3A94EACD, 0x3A94F70C, 0x3A95034C, 0x3A950F82, 0x3A951BB9, 0x3A9527DF, 0x3A953404, 0x3A954021, 0x3A954C3E, 0x3A95584A, 0x3A956456, 0x3A957062, 0xBF800000, 0x00000000, 0x391AC8FE, 0x397556DD, 0x399ACBEF, 0x39B3B7B1, 0x39C8148F, 0x39D94C26, 0x39E83648, 0x39F55E35, 0x3A00917F, 0x3A05E437, 0x3A0AC050, 0x3A0F38C9, 0x3A135C6E, 0x3A1736F1, 0x3A1AD1C7, 0x3A1E34AA, 0x3A2165FD, 0x3A246B1F, 0x3A27489A, 0x3A2A024B, 0x3A2C9B88, 0x3A2F1731, 0x3A3177CF, 0x3A33BF93, 0x3A35F073, 0x3A380C29, 0x3A3A143F, 0x3A3C0A15, 0x3A3DEEE9, 0x3A3FC3D7, 0x3A4189E1, 0x3A4341F3, 0x3A44ECE4, 0x3A468B73, 0x3A481E56, 0x3A49A62F, 0x3A4B2396, 0x3A4C9714, 0x3A4E012C, 0x3A4F6253, 0x3A50BAF8, 0x3A520B80, 0x3A53544D, 0x3A5495B6, 0x3A55D010, 0x3A5703A6, 0x3A5830C4, 0x3A5957AC, 0x3A5A789F, 0x3A5B93D9, 0x3A5CA994, 0x3A5DBA05, 0x3A5EC55E, 0x3A5FCBCF, 0x3A60CD87, 0x3A61CAAF, 0x3A62C371, 0x3A63B7F1, 0x3A64A856, 0x3A6594C1, 0x3A667D56, 0x3A676230, 0x3A684371, 0x3A692134, 0x3A69FB95, 0x3A6AD2AC, 0x3A6BA695, 0x3A6C7765, 0x3A6D4535, 0x3A6E1019, 0x3A6ED826, 0x3A6F9D73, 0x3A70600F, 0x3A71200E, 0x3A71DD84, 0x3A72987F, 0x3A735111, 0x3A740749, 0x3A74BB36, 0x3A756CE7, 0x3A761C69, 0x3A76C9CB, 0x3A77751A, 0x3A781E63, 0x3A78C5B0, 0x3A796B0F, 0x3A7A0E8B, 0x3A7AB02C, 0x3A7B5000, 0x3A7BEE10, 0x3A7C8A64, 0x3A7D2509, 0x3A7DBE06, 0x3A7E5565, 0x3A7EEB2F, 0x3A7F7F6B, 0x3A800911, 0x3A8051AE, 0x3A809990, 0x3A80E0BB, 0x3A812733, 0x3A816CFA, 0x3A81B215, 0x3A81F687, 0x3A823A53, 0x3A827D7C, 0x3A82C005, 0x3A8301F1, 0x3A834341, 0x3A8383FB, 0x3A83C423, 0x3A8403B9, 0x3A8442BD, 0x3A848137, 0x3A84BF20, 0x3A84FC87, 0x3A853965, 0x3A8575C3, 0x3A85B19F, 0x3A85ECFB, 0x3A8627D5, 0x3A866238, 0x3A869C22, 0x3A86D59D, 0x3A870E96, 0x3A874720, 0x3A877F3B, 0x3A87B6E5, 0x3A87EE21, 0x3A8824F4, 0x3A885B59, 0x3A889156, 0x3A88C6E3, 0x3A88FC13, 0x3A8930DB, 0x3A896544, 0x3A899946, 0x3A89CCF3, 0x3A8A0038, 0x3A8A331F, 0x3A8A65A8, 0x3A8A97DA, 0x3A8AC9B7, 0x3A8AFB35, 0x3A8B2C5D, 0x3A8B5D30, 0x3A8B8DB5, 0x3A8BBDDB, 0x3A8BEDB4, 0x3A8C1D40, 0x3A8C4C76, 0x3A8C7B5F, 0x3A8CA9F2, 0x3A8CD840, 0x3A8D0641, 0x3A8D33F4, 0x3A8D6163, 0x3A8D8E85, 0x3A8DBB59, 0x3A8DE7E8, 0x3A8E1433, 0x3A8E4039, 0x3A8E6BFA, 0x3A8E9777, 0x3A8EC2AF, 0x3A8EEDAA, 0x3A8F1859, 0x3A8F42CB, 0x3A8F6D01, 0x3A8F96F3, 0x3A8FC0A8, 0x3A8FEA21, 0x3A90135E, 0x3A903C5F, 0x3A90651B, 0x3A908DA4, 0x3A90B5F0, 0x3A90DE09, 0x3A9105DD, 0x3A912D7E, 0x3A9154EB, 0x3A917C1C, 0x3A91A31A, 0x3A91C9DB, 0x3A91F069, 0x3A9216CC, 0x3A923CF3, 0x3A9262DD, 0x3A92889D, 0x3A92AE32, 0x3A92D38A, 0x3A92F8AF, 0x3A931DAA, 0x3A934270, 0x3A93670C, 0x3A938B6B, 0x3A93AFA8, 0x3A93D3B2, 0x3A93F791, 0x3A941B3C, 0x3A943EBC, 0x3A946211, 0x3A948533, 0x3A94A832, 0x3A94CAFE, 0x3A94EDA7, 0x3A95101D, 0x3A953268, 0x3A955490, 0x3A95768E, 0x3A959861, 0x3A95BA08, 0x3A95DB8E, 0x3A95FCE8, 0x3A961E18, 0x3A963F25, 0x3A966007, 0x3A9680BE, 0x3A96A15B, 0x3A96C1CE, 0x3A96E215, 0x3A97023B, 0x3A97223D, 0x3A97421E, 0x3A9761D3, 0x3A978166, 0x3A97A0E0, 0x3A97C02E, 0x3A97DF52, 0x3A97FE5B, 0x3A981D43, 0x3A983C08, 0x3A985AAA, 0x3A98792B, 0x3A989791, 0x3A98B5CD, 0x3A98D3EE, 0x3A98F1EE, 0x3A990FCB, 0x3A992D85, 0x3A994B26, 0x3A9968A5, 0x3A99860A, 0x3A99A34C, 0x3A99C06C, 0x3A99DD72, 0x3A99FA5F, 0x3A9A1729, 0x3A9A33D1, 0x3A9A505F, 0x3A9A6CD3, 0x3A9A8925, 0x3A9AA55D, 0x3A9AC17C, 0x3A9ADD78, 0x3A9AF962, 0x3A9B152B, 0x3A9B30D1, 0x3A9B4C66, 0x3A9B67D9, 0x3A9B833A, 0x3A9B9E79, 0x3A9BB99E, 0x3A9BD4AA, 0x3A9BEF9B, 0x3A9C0A73, 0x3A9C2532, 0x3A9C3FD6, 0x3A9C5A61, 0x3A9C74D1, 0x3A9C8F31, 0x3A9CA96E, 0x3A9CC39B, 0x3A9CDDA4, 0x3A9CF79D, 0x3A9D117C, 0x3A9D2B41, 0x3A9D44F5, 0x3A9D5E8F, 0x3A9D780F, 0x3A9D9176, 0x3A9DAACB, 0x3A9DC407, 0x3A9DDD29, 0x3A9DF639, 0x3A9E0F30, 0x3A9E2816, 0x3A9E40E2, 0x3A9E5994, 0x3A9E7235, 0x3A9E8AC5, 0x3A9EA33B, 0x3A9EBB97, 0x3A9ED3E3, 0x3A9EEC1C, 0x3A9F043D, 0x3A9F1C43, 0x3A9F3441, 0x3A9F4C1C, 0x3A9F63EF, 0x3A9F7BA8, 0x3A9F9350, 0x3A9FAADE, 0x3A9FC264, 0x3A9FD9C7, 0x3A9FF122, 0x3AA00862, 0x3AA01F9B, 0x3AA036B1, 0x3AA04DBE, 0x3AA064BA, 0x3AA07B9C, 0x3AA0926D, 0x3AA0A92D, 0x3AA0BFDC, 0x3AA0D671, 0x3AA0ECFE, 0x3AA10370, 0x3AA119D2, 0x3AA1302B, 0x3AA1466A, 0x3AA15C98, 0x3AA172B5, 0x3AA188C0, 0x3AA19EBB, 0x3AA1B4A4, 0x3AA1CA7C, 0x3AA1E043, 0x3AA1F5F8, 0x3AA20B9D, 0x3AA22139, 0x3AA236BB, 0x3AA24C2C, 0x3AA26194, 0x3AA276E3, 0x3AA28C29, 0x3AA2A155, 0x3AA2B679, 0x3AA2CB8B, 0x3AA2E08D, 0x3AA2F585, 0x3AA30A64, 0x3AA31F3B, 0x3AA33400, 0x3AA348B4, 0x3AA35D57, 0x3AA371F1, 0x3AA3867A, 0x3AA39AF2, 0x3AA3AF58, 0x3AA3C3B6, 0x3AA3D803, 0x3AA3EC3F, 0x3AA4006A, 0x3AA4148C, 0x3AA4289C, 0x3AA43C9C, 0x3AA45093, 0x3AA46479, 0x3AA47856, 0x3AA48C1A, 0x3AA49FDD, 0x3AA4B387, 0x3AA4C728, 0x3AA4DAB8, 0x3AA4EE3F, 0x3AA501B5, 0x3AA51523, 0x3AA5287F, 0x3AA53BD3, 0x3AA54F0D, 0x3AA56247, 0x3AA57570, 0x3AA58888, 0x3AA59B97, 0x3AA5AE95, 0x3AA5C18A, 0x3AA5D46E, 0x3AA5E74A, 0x3AA5FA1D, 0x3AA60CD6, 0x3AA61F8F, 0x3AA63237, 0x3AA644CE, 0x3AA6575C, 0x3AA669E2, 0x3AA67C56, 0x3AA68EC2, 0x3AA6A125, 0x3AA6B377, 0x3AA6C5B8, 0x3AA6D7F1, 0x3AA6EA20, 0x3AA6FC47, 0x3AA70E5D, 0x3AA7206B, 0x3AA73267, 0x3AA7445B, 0x3AA75646, 0x3AA76820, 0x3AA779F1, 0x3AA78BB9, 0x3AA79D71, 0x3AA7AF28, 0x3AA7C0C6, 0x3AA7D264, 0x3AA7E3F0, 0x3AA7F574, 0x3AA806F0, 0x3AA8185A, 0x3AA829BB, 0x3AA83B14, 0x3AA84C65, 0x3AA85DA4, 0x3AA86EDB, 0x3AA88009, 0x3AA8912E, 0x3AA8A24B, 0x3AA8B357, 0x3AA8C45A, 0x3AA8D554, 0x3AA8E63E, 0x3AA8F727, 0x3AA907FF, 0x3AA918CF, 0x3AA92996, 0x3AA93A54, 0x3AA94B0A, 0x3AA95BAE, 0x3AA96C4B, 0x3AA97CDE, 0x3AA98D69, 0x3AA99DEB, 0x3AA9AE65, 0x3AA9BED6, 0x3AA9CF36, 0x3AA9DF96, 0x3AA9EFE4, 0x3AAA002A, 0x3AAA1068, 0x3AAA209D, 0x3AAA30C9, 0x3AAA40ED, 0x3AAA50FF, 0x3AAA6112, 0x3AAA7113, 0x3AAA8115, 0x3AAA9105, 0x3AAAA0F5, 0x3AAAB0D4, 0x3AAAC0AB, 0x3AAAD079, 0x3AAAE047, 0x3AAAF003, 0x3AAAFFB7, 0x3AAB0F63, 0x3AAB1F06, 0x3AAB2EA0, 0x3AAB3E32, 0x3AAB4DBB, 0x3AAB5D3B, 0x3AAB6CB3, 0x3AAB7C23, 0x3AAB8B8A, 0x3AAB9AE8, 0x3AABAA3D, 0x3AABB993, 0x3AABC8D7, 0x3AABD813, 0x3AABE746, 0x3AABF671, 0x3AAC059C, 0x3AAC14B5, 0x3AAC23C6, 0x3AAC32D7, 0x3AAC41D7, 0x3AAC50D6, 0x3AAC5FC5, 0x3AAC6EB3, 0x3AAC7D99, 0x3AAC8C77, 0x3AAC9B4B, 0x3AACAA18, 0x3AACB8DB, 0x3AACC796, 0x3AACD649, 0x3AACE4F2, 0x3AACF39C, 0x3AAD023D, 0x3AAD10CD, 0x3AAD1F5D, 0x3AAD2DE5, 0x3AAD3C64, 0x3AAD4ADA, 0x3AAD5950, 0x3AAD67B5, 0x3AAD761A, 0x3AAD846E, 0x3AAD92C2, 0x3AADA10E, 0x3AADAF59, 0x3AADBD93, 0x3AADCBC4, 0x3AADD9F6, 0x3AADE81F, 0x3AADF63F, 0x3AAE0457, 0x3AAE1266, 0x3AAE2075, 0x3AAE2E7C - -dlabel dead_gCurrentCameraID -.word 0xBF800000, 0x00000000, 0x39396DD5, 0x3992F4E5, 0x39B97208, 0x39D74D35, 0x39EFB277, 0x3A02297E, 0x3A0B18AB, 0x3A12FA2B, 0x3A1A06EF, 0x3A206796, 0x3A263A1D, 0x3A2B954B, 0x3A308AD7, 0x3A3528C6, 0x3A397A6C, 0x3A3D890A, 0x3A415C47, 0x3A44FA95, 0x3A48695D, 0x3A4BAD47, 0x3A4ECA4E, 0x3A51C3E9, 0x3A549D18, 0x3A575886, 0x3A59F886, 0x3A5C7F2A, 0x3A5EEE4A, 0x3A61478D, 0x3A638C6F, 0x3A65BE47, 0x3A67DE46, 0x3A69ED8B, 0x3A6BED12, 0x3A6DDDC7, 0x3A6FC07E, 0x3A7195FB, 0x3A735EF3, 0x3A751C0E, 0x3A76CDE5, 0x3A787506, 0x3A7A11F5, 0x3A7BA52D, 0x3A7D2F20, 0x3A7EB039, 0x3A80146E, 0x3A80CCB3, 0x3A818117, 0x3A8231C3, 0x3A82DEDE, 0x3A83888B, 0x3A842EF1, 0x3A84D226, 0x3A85724E, 0x3A860F8A, 0x3A86A9ED, 0x3A874197, 0x3A87D69B, 0x3A886912, 0x3A88F916, 0x3A8986B8, 0x3A8A1212, 0x3A8A9B2D, 0x3A8B2221, 0x3A8BA6F9, 0x3A8C29CD, 0x3A8CAAA6, 0x3A8D299F, 0x3A8DA6B6, 0x3A8E21FD, 0x3A8E9B8F, 0x3A8F136A, 0x3A8F8998, 0x3A8FFE32, 0x3A907138, 0x3A90E2B3, 0x3A9152BD, 0x3A91C14D, 0x3A922E7C, 0x3A929A43, 0x3A9304BB, 0x3A936DDB, 0x3A93D5BE, 0x3A943C5A, 0x3A94A1C9, 0x3A950603, 0x3A956911, 0x3A95CB03, 0x3A962BDA, 0x3A968B9D, 0x3A96EA4E, 0x3A9747F4, 0x3A97A499, 0x3A980045, 0x3A985AEF, 0x3A98B4B1, 0x3A990D7A, 0x3A996564, 0x3A99BC65, 0x3A9A1288, 0x3A9A67CB, 0x3A9ABC37, 0x3A9B0FD5, 0x3A9B62A5, 0x3A9BB4A7, 0x3A9C05E3, 0x3A9C565A, 0x3A9CA613, 0x3A9CF510, 0x3A9D4350, 0x3A9D90E4, 0x3A9DDDBB, 0x3A9E29EF, 0x3A9E756E, 0x3A9EC04A, 0x3A9F0A7A, 0x3A9F5410, 0x3A9F9CFA, 0x3A9FE552, 0x3AA02D07, 0x3AA07429, 0x3AA0BAB1, 0x3AA100A7, 0x3AA1460B, 0x3AA18AE6, 0x3AA1CF2E, 0x3AA212ED, 0x3AA25623, 0x3AA298D8, 0x3AA2DB03, 0x3AA31CAE, 0x3AA35DE0, 0x3AA39E91, 0x3AA3DEC2, 0x3AA41E7A, 0x3AA45DBA, 0x3AA49C82, 0x3AA4DADA, 0x3AA518BA, 0x3AA5562A, 0x3AA5932B, 0x3AA5CFBB, 0x3AA60BE5, 0x3AA6479F, 0x3AA682EA, 0x3AA6BDD6, 0x3AA6F852, 0x3AA73270, 0x3AA76C26, 0x3AA7A57F, 0x3AA7DE70, 0x3AA81702, 0x3AA84F36, 0x3AA8870C, 0x3AA8BE83, 0x3AA8F5A4, 0x3AA92C67, 0x3AA962D4, 0x3AA998E3, 0x3AA9CEA4, 0x3AAA0406, 0x3AAA391B, 0x3AAA6DDB, 0x3AAAA244, 0x3AAAD660, 0x3AAB0A27, 0x3AAB3DA0, 0x3AAB70CB, 0x3AABA3AA, 0x3AABD63B, 0x3AAC087E, 0x3AAC3A7D, 0x3AAC6C2F, 0x3AAC9D94, 0x3AACCEB3, 0x3AACFF86, 0x3AAD301C, 0x3AAD6065, 0x3AAD9069, 0x3AADC028, 0x3AADEFA3, 0x3AAE1ED9, 0x3AAE4DD3, 0x3AAE7C88, 0x3AAEAB01, 0x3AAED936, 0x3AAF0725, 0x3AAF34E1, 0x3AAF6259, 0x3AAF8F94, 0x3AAFBC93, 0x3AAFE956, 0x3AB015DD, 0x3AB04228, 0x3AB06E36, 0x3AB09A11, 0x3AB0C5B0, 0x3AB0F113, 0x3AB11C42, 0x3AB14735, 0x3AB171F5, 0x3AB19C81, 0x3AB1C6D9, 0x3AB1F0F6, 0x3AB21ADF, 0x3AB24494, 0x3AB26E16, 0x3AB29764, 0x3AB2C07F, 0x3AB2E96E, 0x3AB31222, 0x3AB33AAA, 0x3AB36300, 0x3AB38B2A, 0x3AB3B320, 0x3AB3DAE3, 0x3AB4027C, 0x3AB429E0, 0x3AB45122, 0x3AB47828, 0x3AB49F0C, 0x3AB4C5BC, 0x3AB4EC42, 0x3AB5129C, 0x3AB538CB, 0x3AB55ED0, 0x3AB584A9, 0x3AB5AA58, 0x3AB5CFDB, 0x3AB5F534, 0x3AB61A61, 0x3AB63F6D, 0x3AB66444, 0x3AB688FA, 0x3AB6AD8D, 0x3AB6D1EC, 0x3AB6F632, 0x3AB71A44, 0x3AB73E34, 0x3AB76201, 0x3AB785A4, 0x3AB7A924, 0x3AB7CC79, 0x3AB7EFB5, 0x3AB812BD, 0x3AB835AB, 0x3AB8586E, 0x3AB87B0F, 0x3AB89D96, 0x3AB8BFE9, 0x3AB8E223, 0x3AB9043A, 0x3AB9262F, 0x3AB947FA, 0x3AB969AA, 0x3AB98B38, 0x3AB9ACA3, 0x3AB9CDED, 0x3AB9EF13, 0x3ABA1020, 0x3ABA310B, 0x3ABA51CB, 0x3ABA727A, 0x3ABA92FD, 0x3ABAB367, 0x3ABAD3AF, 0x3ABAF3DC, 0x3ABB13E8, 0x3ABB33D1, 0x3ABB53A0, 0x3ABB7356, 0x3ABB92E9, 0x3ABBB259, 0x3ABBD1B0, 0x3ABBF0EE, 0x3ABC1009, 0x3ABC2F0A, 0x3ABC4DF1, 0x3ABC6CB6, 0x3ABC8B61, 0x3ABCA9F3, 0x3ABCC862, 0x3ABCE6C0, 0x3ABD04FB, 0x3ABD231D, 0x3ABD411C, 0x3ABD5F0A, 0x3ABD7CDF, 0x3ABD9A91, 0x3ABDB832, 0x3ABDD5B0, 0x3ABDF31E, 0x3ABE1069, 0x3ABE2D9A, 0x3ABE4ABA, 0x3ABE67B8, 0x3ABE84A4, 0x3ABEA177, 0x3ABEBE30, 0x3ABEDACF, 0x3ABEF755, 0x3ABF13C0, 0x3ABF301B, 0x3ABF4C53, 0x3ABF687A, 0x3ABF8490, 0x3ABFA083, 0x3ABFBC65, 0x3ABFD82E, 0x3ABFF3E5, 0x3AC00F7A, 0x3AC02B06, 0x3AC04670, 0x3AC061C9, 0x3AC07D08, 0x3AC09836, 0x3AC0B34A, 0x3AC0CE4D, 0x3AC0E936, 0x3AC1040E, 0x3AC11ECC, 0x3AC13971, 0x3AC1540D, 0x3AC16E86, 0x3AC188F7, 0x3AC1A34E, 0x3AC1BD8B, 0x3AC1D7B7, 0x3AC1F1D2, 0x3AC20BD4, 0x3AC225C4, 0x3AC23FA2, 0x3AC25968, 0x3AC2731B, 0x3AC28CBE, 0x3AC2A650, 0x3AC2BFC7, 0x3AC2D92E, 0x3AC2F27B, 0x3AC30BBF, 0x3AC324E9, 0x3AC33E03, 0x3AC3570B, 0x3AC37002, 0x3AC388E8, 0x3AC3A1B3, 0x3AC3BA77, 0x3AC3D320, 0x3AC3EBB9, 0x3AC40440, 0x3AC41CB6, 0x3AC4351B, 0x3AC44D66, 0x3AC465A9, 0x3AC47DDA, 0x3AC495F2, 0x3AC4AE01, 0x3AC4C5FE, 0x3AC4DDE2, 0x3AC4F5BE, 0x3AC50D88, 0x3AC52539, 0x3AC53CE1, 0x3AC55477, 0x3AC56BFD, 0x3AC58371, 0x3AC59AD4, 0x3AC5B226, 0x3AC5C970, 0x3AC5E09F, 0x3AC5F7C6, 0x3AC60ED4, 0x3AC625D8, 0x3AC63CCC, 0x3AC653B7, 0x3AC66A88, 0x3AC68151, 0x3AC697FF, 0x3AC6AEA6, 0x3AC6C543, 0x3AC6DBC7, 0x3AC6F242, 0x3AC708AC, 0x3AC71F05, 0x3AC7354D, 0x3AC74B8C, 0x3AC761BA, 0x3AC777D7, 0x3AC78DEB, 0x3AC7A3EE, 0x3AC7B9E0, 0x3AC7CFC9, 0x3AC7E5A1, 0x3AC7FB68, 0x3AC81126, 0x3AC826D3, 0x3AC83C6F, 0x3AC85203, 0x3AC86785, 0x3AC87CF6, 0x3AC8925E, 0x3AC8A7BE, 0x3AC8BD0C, 0x3AC8D24A, 0x3AC8E776, 0x3AC8FC9A, 0x3AC911B5, 0x3AC926BF, 0x3AC93BB7, 0x3AC950A8, 0x3AC9658F, 0x3AC97A65, 0x3AC98F2B, 0x3AC9A3E7, 0x3AC9B893, 0x3AC9CD35, 0x3AC9E1D0, 0x3AC9F659, 0x3ACA0AD1, 0x3ACA1F40, 0x3ACA33A7, 0x3ACA47FC, 0x3ACA5C49, 0x3ACA7085, 0x3ACA84B8, 0x3ACA98DA, 0x3ACAACF3, 0x3ACAC104, 0x3ACAD504, 0x3ACAE8FB, 0x3ACAFCE9, 0x3ACB10C6, 0x3ACB2492, 0x3ACB385E, 0x3ACB4C19, 0x3ACB5FC3, 0x3ACB736D, 0x3ACB8705, 0x3ACB9A8C, 0x3ACBAE14, 0x3ACBC18A, 0x3ACBD4F8, 0x3ACBE854, 0x3ACBFBA8, 0x3ACC0EF3, 0x3ACC222D, 0x3ACC3567, 0x3ACC4890, 0x3ACC5BA8, 0x3ACC6EBF, 0x3ACC81C6, 0x3ACC94C4, 0x3ACCA7B0, 0x3ACCBA9D, 0x3ACCCD79, 0x3ACCE04C, 0x3ACCF30D, 0x3ACD05CF, 0x3ACD1880, 0x3ACD2B28, 0x3ACD3DC7, 0x3ACD505E, 0x3ACD62E4, 0x3ACD7561, 0x3ACD87D5, 0x3ACD9A41, 0x3ACDACA4, 0x3ACDBEFF, 0x3ACDD148, 0x3ACDE389, 0x3ACDF5C2, 0x3ACE07F1, 0x3ACE1A19, 0x3ACE2C2F, 0x3ACE3E45, 0x3ACE5049, 0x3ACE6246, 0x3ACE7439, 0x3ACE8624, 0x3ACE9807, 0x3ACEA9E0, 0x3ACEBBB2, 0x3ACECD72, 0x3ACEDF32, 0x3ACEF0E1, 0x3ACF0287, 0x3ACF142D, 0x3ACF25C3, 0x3ACF374F, 0x3ACF48D3, 0x3ACF5A4E, 0x3ACF6BB9, 0x3ACF7D23, 0x3ACF8E84, 0x3ACF9FDD, 0x3ACFB125, 0x3ACFC26D, 0x3ACFD3A4, 0x3ACFE4DA, 0x3ACFF608, 0x3AD00725, 0x3AD01842, 0x3AD0294E, 0x3AD03A51, 0x3AD04B54, 0x3AD05C46, 0x3AD06D38, 0x3AD07E18, 0x3AD08EF9, 0x3AD09FC9, 0x3AD0B098, 0xBF800000, 0x00000000, 0x3967339A, 0x39B73C13, 0x39E73A1D, 0x3A063A58, 0x3A15701D, 0x3A224C6B, 0x3A2D707C, 0x3A374447, 0x3A400ED0, 0x3A4802BE, 0x3A4F4571, 0x3A55F356, 0x3A5C227B, 0x3A61E465, 0x3A67472C, 0x3A6C565C, 0x3A711B86, 0x3A759EAA, 0x3A79E68F, 0x3A7DF8FD, 0x3A80ED77, 0x3A82C859, 0x3A848F02, 0x3A864326, 0x3A87E624, 0x3A89795D, 0x3A8AFDE4, 0x3A8C74D4, 0x3A8DDF04, 0x3A8F3D5B, 0x3A90908F, 0x3A91D953, 0x3A93184B, 0x3A944E09, 0x3A957B05, 0x3A969FC8, 0x3A97BCB9, 0x3A98D241, 0x3A99E0C5, 0x3A9AE89C, 0x3A9BEA1B, 0x3A9CE587, 0x3A9DDB2E, 0x3A9ECB54, 0x3A9FB62D, 0x3AA09BFE, 0x3AA17CF0, 0x3AA2594B, 0x3AA3312E, 0x3AA404C6, 0x3AA4D446, 0x3AA59FD1, 0x3AA66791, 0x3AA72BA8, 0x3AA7EC32, 0x3AA8A957, 0x3AA96333, 0x3AAA19DE, 0x3AAACD7C, 0x3AAB7E1E, 0x3AAC2BE5, 0x3AACD6E3, 0x3AAD7F2A, 0x3AAE24DB, 0x3AAEC808, 0x3AAF68B9, 0x3AB00711, 0x3AB0A30F, 0x3AB13CD7, 0x3AB1D470, 0x3AB269E4, 0x3AB2FD54, 0x3AB38EB8, 0x3AB41E2A, 0x3AB4ABBB, 0x3AB5376B, 0x3AB5C154, 0x3AB6497E, 0x3AB6CFE9, 0x3AB754AF, 0x3AB7D7D1, 0x3AB8595E, 0x3AB8D958, 0x3AB957D9, 0x3AB9D4D6, 0x3ABA506B, 0x3ABACA8E, 0x3ABB4351, 0x3ABBBABD, 0x3ABC30D9, 0x3ABCA5A7, 0x3ABD192E, 0x3ABD8B80, 0x3ABDFC9D, 0x3ABE6C84, 0x3ABEDB48, 0x3ABF48E7, 0x3ABFB56B, 0x3AC020D3, 0x3AC08B31, 0x3AC0F47C, 0x3AC15CC6, 0x3AC1C405, 0x3AC22A4B, 0x3AC28FA1, 0x3AC2F3FD, 0x3AC35769, 0x3AC3B9ED, 0x3AC41B8A, 0x3AC47C46, 0x3AC4DC24, 0x3AC53B22, 0x3AC59952, 0x3AC5F6AB, 0x3AC65336, 0x3AC6AEF3, 0x3AC709EA, 0x3AC7641C, 0x3AC7BD91, 0x3AC81649, 0x3AC86E3B, 0x3AC8C581, 0x3AC91C0B, 0x3AC971E8, 0x3AC9C711, 0x3ACA1B98, 0x3ACA6F69, 0x3ACAC298, 0x3ACB1523, 0x3ACB670B, 0x3ACBB858, 0x3ACC0903, 0x3ACC5912, 0x3ACCA890, 0x3ACCF773, 0x3ACD45BB, 0x3ACD937A, 0x3ACDE0A7, 0x3ACE2D4A, 0x3ACE795B, 0x3ACEC4EC, 0x3ACF0FEA, 0x3ACF5A68, 0x3ACFA465, 0x3ACFEDE1, 0x3AD036D3, 0x3AD07F4E, 0x3AD0C747, 0x3AD10EC8, 0x3AD155D1, 0x3AD19C62, 0x3AD1E27A, 0x3AD2281A, 0x3AD26D4B, 0x3AD2B20B, 0x3AD2F65D, 0x3AD33A35, 0x3AD37DA7, 0x3AD3C0B2, 0x3AD4034D, 0x3AD44578, 0x3AD48745, 0x3AD4C8A2, 0x3AD509A1, 0x3AD54A39, 0x3AD58A69, 0x3AD5CA3B, 0x3AD609AF, 0x3AD648C4, 0x3AD68772, 0x3AD6C5CA, 0x3AD703C4, 0x3AD7415F, 0x3AD77EA4, 0x3AD7BB8B, 0x3AD7F81B, 0x3AD83456, 0x3AD8703B, 0x3AD8ABCB, 0x3AD8E704, 0x3AD921E7, 0x3AD95C7D, 0x3AD996BD, 0x3AD9D0B0, 0x3ADA0A4D, 0x3ADA43A5, 0x3ADA7CA8, 0x3ADAB55D, 0x3ADAEDC4, 0x3ADB25E7, 0x3ADB5DB4, 0x3ADB953D, 0x3ADBCC80, 0x3ADC0377, 0x3ADC3A28, 0x3ADC708C, 0x3ADCA6AC, 0x3ADCDC87, 0x3ADD121D, 0x3ADD476E, 0x3ADD7C7B, 0x3ADDB14C, 0x3ADDE5CF, 0x3ADE1A16, 0x3ADE4E21, 0x3ADE81E7, 0x3ADEB569, 0x3ADEE8AE, 0x3ADF1BB7, 0x3ADF4E85, 0x3ADF810D, 0x3ADFB359, 0x3ADFE572, 0x3AE01746, 0x3AE048E7, 0x3AE07A43, 0x3AE0AB6B, 0x3AE0DC57, 0x3AE10D0F, 0x3AE13D8C, 0x3AE16DCC, 0x3AE19DD9, 0x3AE1CDB2, 0x3AE1FD4F, 0x3AE22CB9, 0x3AE25BEF, 0x3AE28AE9, 0x3AE2B9AF, 0x3AE2E84B, 0x3AE316AA, 0x3AE344D6, 0x3AE372D7, 0x3AE3A09B, 0x3AE3CE35, 0x3AE3FB9B, 0x3AE428CE, 0x3AE455D5, 0x3AE482AA, 0x3AE4AF4A, 0x3AE4DBC0, 0x3AE50802, 0x3AE53419, 0x3AE56005, 0x3AE58BBE, 0x3AE5B74C, 0x3AE5E2A6, 0x3AE60DDE, 0x3AE638E2, 0x3AE663BC, 0x3AE68E6A, 0x3AE6B8ED, 0x3AE6E346, 0x3AE70D73, 0x3AE73776, 0x3AE7614E, 0x3AE78AFA, 0x3AE7B47C, 0x3AE7DDDB, 0x3AE80710, 0x3AE83019, 0x3AE858F8, 0x3AE881B4, 0x3AE8AA45, 0x3AE8D2B4, 0x3AE8FAF8, 0x3AE9231A, 0x3AE94B10, 0x3AE972E5, 0x3AE99A8E, 0x3AE9C215, 0x3AE9E971, 0x3AEA10B3, 0x3AEA37CA, 0x3AEA5EBF, 0x3AEA8589, 0x3AEAAC39, 0x3AEAD2BF, 0x3AEAF922, 0x3AEB1F62, 0x3AEB4580, 0x3AEB6B7C, 0x3AEB9155, 0x3AEBB70D, 0x3AEBDCA1, 0x3AEC0214, 0x3AEC2764, 0x3AEC4C91, 0x3AEC71A5, 0x3AEC968E, 0x3AECBB5D, 0x3AECE00A, 0x3AED049D, 0x3AED2905, 0x3AED4D53, 0x3AED7188, 0x3AED9592, 0x3AEDB981, 0x3AEDDD57, 0x3AEE010B, 0x3AEE249C, 0x3AEE4814, 0x3AEE6B69, 0x3AEE8EA5, 0x3AEEB1C6, 0x3AEED4C6, 0x3AEEF7A3, 0x3AEF1A6E, 0x3AEF3D18, 0x3AEF5F9F, 0x3AEF820C, 0x3AEFA460, 0x3AEFC699, 0x3AEFE8B1, 0x3AF00AB7, 0x3AF02C9B, 0x3AF04E5C, 0x3AF0700C, 0x3AF0919A, 0x3AF0B317, 0x3AF0D472, 0x3AF0F5B2, 0x3AF116D9, 0x3AF137E6, 0x3AF158D9, 0x3AF179B3, 0x3AF19A73, 0x3AF1BB19, 0x3AF1DBA5, 0x3AF1FC17, 0x3AF21C70, 0x3AF23CB8, 0x3AF25CDD, 0x3AF27CE8, 0x3AF29CE2, 0x3AF2BCC3, 0x3AF2DC8A, 0x3AF2FC36, 0x3AF31BCA, 0x3AF33B4C, 0x3AF35AB4, 0x3AF37A02, 0x3AF39937, 0x3AF3B85A, 0x3AF3D764, 0x3AF3F654, 0x3AF41533, 0x3AF433F8, 0x3AF452A3, 0x3AF4713D, 0x3AF48FBD, 0x3AF4AE2C, 0x3AF4CC81, 0x3AF4EABD, 0x3AF508E7, 0x3AF52700, 0x3AF544F7, 0x3AF562E5, 0x3AF580BA, 0x3AF59E75, 0x3AF5BC1E, 0x3AF5D9B6, 0x3AF5F735, 0x3AF6149A, 0x3AF631F6, 0x3AF64F30, 0x3AF66C61, 0x3AF68978, 0x3AF6A67F, 0x3AF6C36B, 0x3AF6E047, 0x3AF6FD11, 0x3AF719CA, 0x3AF73669, 0x3AF752F7, 0x3AF76F6B, 0x3AF78BD7, 0x3AF7A829, 0x3AF7C46A, 0x3AF7E091, 0x3AF7FCAF, 0x3AF818B4, 0x3AF834A7, 0x3AF85089, 0x3AF86C5A, 0x3AF8881A, 0x3AF8A3C0, 0x3AF8BF5E, 0x3AF8DAE1, 0x3AF8F654, 0x3AF911B5, 0x3AF92D06, 0x3AF94845, 0x3AF96373, 0x3AF97E8F, 0x3AF99992, 0x3AF9B48C, 0x3AF9CF76, 0x3AF9EA45, 0x3AFA050C, 0x3AFA1FC1, 0x3AFA3A5D, 0x3AFA54F0, 0x3AFA6F72, 0x3AFA89E3, 0x3AFAA443, 0x3AFABE91, 0x3AFAD8CF, 0x3AFAF2FB, 0x3AFB0D16, 0x3AFB2720, 0x3AFB4121, 0x3AFB5B08, 0x3AFB74E7, 0x3AFB8EB5, 0x3AFBA871, 0x3AFBC21D, 0x3AFBDBB7, 0x3AFBF548, 0x3AFC0EC0, 0x3AFC282F, 0x3AFC418D, 0x3AFC5ADA, 0x3AFC741E, 0x3AFC8D51, 0x3AFCA673, 0x3AFCBF84, 0x3AFCD883, 0x3AFCF17A, 0x3AFD0A60, 0x3AFD2334, 0x3AFD3C00, 0x3AFD54BB, 0x3AFD6D65, 0x3AFD85FD, 0x3AFD9E8D, 0x3AFDB70C, 0x3AFDCF79, 0x3AFDE7DE, 0x3AFE0032, 0x3AFE187D, 0x3AFE30B7, 0x3AFE48E0, 0x3AFE60F7, 0x3AFE7906, 0x3AFE910C, 0x3AFEA8F9, 0x3AFEC0E6, 0x3AFED8B9, 0x3AFEF083, 0x3AFF083C, 0x3AFF1FEC, 0x3AFF3794, 0x3AFF4F22, 0x3AFF66A8, 0x3AFF7E25, 0x3AFF9591, 0x3AFFACF4, 0x3AFFC446, 0x3AFFDB87, 0x3AFFF2BF, 0x3B0004F7, 0x3B001087, 0x3B001C11, 0x3B002794, 0x3B00330E, 0x3B003E83, 0x3B0049F4, 0x3B00555D, 0x3B0060C1, 0x3B006C21, 0x3B007774, 0x3B0082C7, 0x3B008E12, 0x3B009958, 0x3B00A496, 0x3B00AFCF, 0x3B00BB00, 0x3B00C62C, 0x3B00D154, 0x3B00DC74, 0x3B00E78F, 0x3B00F2A2, 0x3B00FDB0, 0x3B0108BA, 0x3B0113C0, 0x3B011EBD, 0x3B0129B2, 0x3B0134A7, 0x3B013F93, 0x3B014A7A, 0x3B015559, 0x3B016034, 0x3B016B0B, 0x3B0175D9, 0x3B0180A7, 0x3B018B68, 0x3B019629, 0x3B01A0E1, 0x3B01AB96, 0x3B01B645, 0x3B01C0F1, 0x3B01CB94, 0x3B01D633, 0x3B01E0CD, 0x3B01EB5F, 0x3B01F5ED, 0x3B020076, 0x3B020AFB, 0x3B021577, 0x3B021FF3, 0xBF800000, 0x00000000, 0x3B8E43B4, 0x3BE1C520, 0x3C0E92C4, 0x3C25A35D, 0x3C3881DC, 0x3C487A58, 0x3C565313, 0x3C628C3C, 0x3C6D7D51, 0x3C7764C6, 0x3C803864, 0x3C84623A, 0x3C883D81, 0x3C8BD50B, 0x3C8F3191, 0x3C925A3B, 0x3C9554F1, 0x3C9826A8, 0x3C9AD391, 0x3C9D5F41, 0x3C9FCCCF, 0x3CA21EE4, 0x3CA457D9, 0x3CA679B2, 0x3CA8864C, 0x3CAA7F30, 0x3CAC65DA, 0x3CAE3B87, 0x3CB00160, 0x3CB1B86F, 0x3CB361A7, 0x3CB4FDD9, 0x3CB68DD1, 0x3CB81245, 0x3CB98BD8, 0x3CBAFB23, 0x3CBC60AE, 0x3CBDBCFF, 0x3CBF1091, 0x3CC05BCB, 0x3CC19F17, 0x3CC2DAD1, 0x3CC40F54, 0x3CC53CF6, 0x3CC663FD, 0x3CC784B9, 0x3CC89F6C, 0x3CC9B454, 0x3CCAC3A8, 0x3CCBCDA9, 0x3CCCD286, 0x3CCDD271, 0x3CCECD9E, 0x3CCFC433, 0x3CD0B661, 0x3CD1A44D, 0x3CD28E1D, 0x3CD373F0, 0x3CD455EE, 0x3CD53435, 0x3CD60EE5, 0x3CD6E61B, 0x3CD7B9F0, 0x3CD88A86, 0x3CD957F0, 0x3CDA224B, 0x3CDAE9A6, 0x3CDBAE1C, 0x3CDC6FC8, 0x3CDD2EB5, 0x3CDDEAFD, 0x3CDEA4B1, 0x3CDF5BE0, 0x3CE0109C, 0x3CE0C2F9, 0x3CE17307, 0x3CE220D2, 0x3CE2CC68, 0x3CE375DC, 0x3CE41D36, 0x3CE4C282, 0x3CE565D6, 0x3CE60736, 0x3CE6A6AD, 0x3CE74452, 0x3CE7E01E, 0x3CE87A2D, 0x3CE9127E, 0x3CE9A91C, 0x3CEA3E12, 0x3CEAD16A, 0x3CEB6330, 0x3CEBF369, 0x3CEC821F, 0x3CED0F52, 0x3CED9B19, 0x3CEE256D, 0x3CEEAE5E, 0x3CEF35F3, 0x3CEFBC2B, 0x3CF0411B, 0x3CF0C4B9, 0x3CF1471A, 0x3CF1C83A, 0x3CF24821, 0x3CF2C6D7, 0x3CF34466, 0x3CF3C0C7, 0x3CF43C0D, 0x3CF4B635, 0x3CF52F47, 0x3CF5A747, 0x3CF61E3A, 0x3CF69426, 0x3CF7090B, 0x3CF77CF4, 0x3CF7EFE1, 0x3CF861D6, 0x3CF8D2DA, 0x3CF942ED, 0x3CF9B218, 0x3CFA205D, 0x3CFA8DBB, 0x3CFAFA3C, 0x3CFB65E2, 0x3CFBD0AB, 0x3CFC3AA4, 0x3CFCA3CA, 0x3CFD0C20, 0x3CFD73A9, 0x3CFDDA6C, 0x3CFE406D, 0x3CFEA5A8, 0x3CFF0A21, 0x3CFF6DE4, 0x3CFFD0E6, 0x3D00199B, 0x3D004A68, 0x3D007ADA, 0x3D00AAF6, 0x3D00DABC, 0x3D010A2C, 0x3D013948, 0x3D016812, 0x3D019688, 0x3D01C4AE, 0x3D01F286, 0x3D022010, 0x3D024D4A, 0x3D027A39, 0x3D02A6DC, 0x3D02D334, 0x3D02FF44, 0x3D032B0B, 0x3D035689, 0x3D0381C2, 0x3D03ACB3, 0x3D03D760, 0x3D0401CA, 0x3D042BF1, 0x3D0455D5, 0x3D047F76, 0x3D04A8D9, 0x3D04D1FA, 0x3D04FADC, 0x3D052380, 0x3D054BE7, 0x3D057410, 0x3D059BFC, 0x3D05C3AC, 0x3D05EB24, 0x3D061261, 0x3D063962, 0x3D06602C, 0x3D0686BD, 0x3D06AD18, 0x3D06D33B, 0x3D06F926, 0x3D071EDE, 0x3D074460, 0x3D0769AC, 0x3D078EC5, 0x3D07B3AB, 0x3D07D85E, 0x3D07FCDF, 0x3D08212C, 0x3D08454C, 0x3D086938, 0x3D088CF4, 0x3D08B080, 0x3D08D3DF, 0x3D08F70D, 0x3D091A0D, 0x3D093CE0, 0x3D095F85, 0x3D0981FC, 0x3D09A449, 0x3D09C66B, 0x3D09E85E, 0x3D0A0A27, 0x3D0A2BC8, 0x3D0A4D3B, 0x3D0A6E86, 0x3D0A8FA9, 0x3D0AB0A0, 0x3D0AD170, 0x3D0AF217, 0x3D0B1298, 0x3D0B32EF, 0x3D0B5320, 0x3D0B732B, 0x3D0B930E, 0x3D0BB2CE, 0x3D0BD266, 0x3D0BF1D9, 0x3D0C1128, 0x3D0C3052, 0x3D0C4F56, 0x3D0C6E38, 0x3D0C8CF6, 0x3D0CAB8F, 0x3D0CCA08, 0x3D0CE85B, 0x3D0D068E, 0x3D0D249E, 0x3D0D428E, 0x3D0D605B, 0x3D0D7E05, 0x3D0D9B92, 0x3D0DB8FB, 0x3D0DD645, 0x3D0DF370, 0x3D0E1079, 0x3D0E2D65, 0x3D0E4A30, 0x3D0E66DB, 0x3D0E8369, 0x3D0E9FD9, 0x3D0EBC2B, 0x3D0ED85D, 0x3D0EF472, 0x3D0F106C, 0x3D0F2C46, 0x3D0F4804, 0x3D0F63A6, 0x3D0F7F29, 0x3D0F9A92, 0x3D0FB5DE, 0x3D0FD10E, 0x3D0FEC24, 0x3D10071C, 0x3D1021F9, 0x3D103CBE, 0x3D105766, 0x3D1071F3, 0x3D108C68, 0x3D10A6C1, 0x3D10C100, 0x3D10DB27, 0x3D10F533, 0x3D110F24, 0x3D112900, 0x3D1142C0, 0x3D115C69, 0x3D1175F7, 0x3D118F6F, 0x3D11A8CD, 0x3D11C215, 0x3D11DB42, 0x3D11F459, 0x3D120D59, 0x3D122643, 0x3D123F15, 0x3D1257CE, 0x3D127070, 0x3D1288FF, 0x3D12A175, 0x3D12B9D4, 0x3D12D21D, 0x3D12EA50, 0x3D13026E, 0x3D131A77, 0x3D13326A, 0x3D134A47, 0x3D136210, 0x3D1379C2, 0x3D13915F, 0x3D13A8E7, 0x3D13C05C, 0x3D13D7BB, 0x3D13EF08, 0x3D14063F, 0x3D141D61, 0x3D143470, 0x3D144B6C, 0x3D146253, 0x3D147926, 0x3D148FE7, 0x3D14A693, 0x3D14BD2E, 0x3D14D3B4, 0x3D14EA28, 0x3D150088, 0x3D1516D6, 0x3D152D13, 0x3D15433B, 0x3D155953, 0x3D156F58, 0x3D15854B, 0x3D159B2A, 0x3D15B0FA, 0x3D15C6B6, 0x3D15DC60, 0x3D15F1FA, 0x3D160784, 0x3D161CFB, 0x3D163261, 0x3D1647B5, 0x3D165CF9, 0x3D16722D, 0x3D16874E, 0x3D169C5F, 0x3D16B160, 0x3D16C650, 0x3D16DB31, 0x3D16F001, 0x3D1704C2, 0x3D17196F, 0x3D172E0F, 0x3D17429F, 0x3D17571F, 0x3D176B8F, 0x3D177FF1, 0x3D179441, 0x3D17A883, 0x3D17BCB5, 0x3D17D0DA, 0x3D17E4EE, 0x3D17F8F3, 0x3D180CE7, 0x3D1820D1, 0x3D1834A7, 0x3D184871, 0x3D185C2D, 0x3D186FD9, 0x3D188377, 0x3D189708, 0x3D18AA89, 0x3D18BDFC, 0x3D18D163, 0x3D18E4B8, 0x3D18F801, 0x3D190B3C, 0x3D191E6A, 0x3D19318A, 0x3D19449D, 0x3D1957A2, 0x3D196A98, 0x3D197D82, 0x3D19905F, 0x3D19A32C, 0x3D19B5EF, 0x3D19C8A4, 0x3D19DB4B, 0x3D19EDE5, 0x3D1A0074, 0x3D1A12F4, 0x3D1A2568, 0x3D1A37CF, 0x3D1A4A2B, 0x3D1A5C7A, 0x3D1A6EBC, 0x3D1A80F0, 0x3D1A9319, 0x3D1AA535, 0x3D1AB746, 0x3D1AC94A, 0x3D1ADB43, 0x3D1AED2E, 0x3D1AFF0F, 0x3D1B10E3, 0x3D1B22AB, 0x3D1B3467, 0x3D1B461A, 0x3D1B57BD, 0x3D1B6958, 0x3D1B7AE5, 0x3D1B8C68, 0x3D1B9DDE, 0x3D1BAF4B, 0x3D1BC0AB, 0x3D1BD200, 0x3D1BE348, 0x3D1BF488, 0x3D1C05BA, 0x3D1C16E5, 0x3D1C2801, 0x3D1C3914, 0x3D1C4A1B, 0x3D1C5B18, 0x3D1C6C0C, 0x3D1C7CF3, 0x3D1C8DD0, 0x3D1C9EA2, 0x3D1CAF69, 0x3D1CC027, 0x3D1CD0D9, 0x3D1CE182, 0x3D1CF21E, 0x3D1D02B2, 0x3D1D133C, 0x3D1D23BD, 0x3D1D3431, 0x3D1D449C, 0x3D1D54FD, 0x3D1D6553, 0x3D1D75A2, 0x3D1D85E2, 0x3D1D961E, 0x3D1DA64C, 0x3D1DB672, 0x3D1DC68D, 0x3D1DD6A0, 0x3D1DE6A8, 0x3D1DF6A6, 0x3D1E069B, 0x3D1E1689, 0x3D1E266C, 0x3D1E3644, 0x3D1E4614, 0x3D1E55D9, 0x3D1E6596, 0x3D1E754C, 0x3D1E84F6, 0x3D1E9498, 0x3D1EA430, 0x3D1EB3C0, 0x3D1EC344, 0x3D1ED2C4, 0x3D1EE236, 0x3D1EF1A3, 0x3D1F0105, 0x3D1F105E, 0x3D1F1FB0, 0x3D1F2EF7, 0x3D1F3E39, 0x3D1F4D6D, 0x3D1F5C9C, 0x3D1F6BC3, 0x3D1F7ADF, 0x3D1F89F4, 0x3D1F9900, 0x3D1FA804, 0x3D1FB700, 0x3D1FC5F3, 0x3D1FD4DD, 0x3D1FE3C0, 0x3D1FF299, 0x3D20016A, 0x3D201033, 0x3D201EF7, 0x3D202DB0, 0x3D203C61, 0x3D204B09, 0x3D2059AA, 0x3D206845, 0x3D2076D6, 0x3D20855E, 0x3D2093E1, 0x3D20A25A, 0x3D20B0CD, 0x3D20BF35, 0x3D20CD98, 0x3D20DBF3, 0x3D20EA46, 0x3D20F891, 0x3D2106D3, 0x3D211511, 0x3D212346, 0x3D213173, 0x3D213F98, 0x3D214DB6, 0x3D215BCD, 0x3D2169DA, 0x3D2177E5, 0x3D2185E4, 0x3D2193DF, 0x3D21A1CE, 0x3D21AFBB, 0x3D21BD9D, 0x3D21CB7A, 0x3D21D94E, 0x3D21E71E, 0x3D21F4E5, 0x3D2202A4, 0x3D22105B, 0x3D221E0D, 0x3D222BB9, 0x3D22395E, 0x3D2246FA, 0x3D22548E, 0x3D226220, 0x3D226FA7, 0x3D227D28, 0x3D228AA2, 0x3D229816, 0x3D22A584, 0x3D22B2EB, 0x3D22C049, 0x3D22CDA3, 0xBF800000, 0x00000000, 0x3BB1ED50, 0x3C0D3A42, 0x3C3268FE, 0x3C4F4F08, 0x3C66F537, 0x3C7AFABD, 0x3C862BCE, 0x3C8DD617, 0x3C94B2EA, 0x3C9AE96B, 0x3CA09678, 0x3CA5D003, 0x3CAAA723, 0x3CAF295E, 0x3CB361A7, 0x3CB758E7, 0x3CBB1692, 0x3CBEA0D5, 0x3CC1FCF0, 0x3CC52F6A, 0x3CC83C14, 0x3CCB264F, 0x3CCDF104, 0x3CD09EC4, 0x3CD331D6, 0x3CD5AC34, 0x3CD80FAC, 0x3CDA5DDA, 0x3CDC982C, 0x3CDEBFF4, 0x3CE0D654, 0x3CE2DC63, 0x3CE4D319, 0x3CE6BB5B, 0x3CE895F6, 0x3CEA63A6, 0x3CEC2522, 0x3CEDDB0A, 0x3CEF85EF, 0x3CF1265E, 0x3CF2BCD6, 0x3CF449D4, 0x3CF5CDBD, 0x3CF74907, 0x3CF8BC09, 0x3CFA271E, 0x3CFB8AA0, 0x3CFCE6D6, 0x3CFE3C16, 0x3CFF8A9F, 0x3D00695C, 0x3D010A4F, 0x3D01A846, 0x3D02435C, 0x3D02DBAA, 0x3D03714F, 0x3D04045C, 0x3D0494ED, 0x3D052312, 0x3D05AEE4, 0x3D063874, 0x3D06BFD5, 0x3D074519, 0x3D07C84E, 0x3D084988, 0x3D08C8D4, 0x3D094642, 0x3D09C1DE, 0x3D0A3BB6, 0x3D0AB3D6, 0x3D0B2A4E, 0x3D0B9F23, 0x3D0C1268, 0x3D0C8422, 0x3D0CF45D, 0x3D0D6322, 0x3D0DD080, 0x3D0E3C79, 0x3D0EA71A, 0x3D0F106C, 0x3D0F7873, 0x3D0FDF3B, 0x3D1044C9, 0x3D10A928, 0x3D110C5D, 0x3D116E6D, 0x3D11CF60, 0x3D122F3F, 0x3D128E0D, 0x3D12EBD0, 0x3D13488F, 0x3D13A44F, 0x3D13FF16, 0x3D1458E8, 0x3D14B1CE, 0x3D1509C8, 0x3D1560DD, 0x3D15B711, 0x3D160C69, 0x3D1660EA, 0x3D16B498, 0x3D170773, 0x3D175986, 0x3D17AAD2, 0x3D17FB59, 0x3D184B20, 0x3D189A2B, 0x3D18E87C, 0x3D193617, 0x3D198301, 0x3D19CF3C, 0x3D1A1AC9, 0x3D1A65AF, 0x3D1AAFEF, 0x3D1AF989, 0x3D1B4284, 0x3D1B8AE3, 0x3D1BD2A4, 0x3D1C19CF, 0x3D1C6061, 0x3D1CA661, 0x3D1CEBD1, 0x3D1D30B0, 0x3D1D7506, 0x3D1DB8CE, 0x3D1DFC0F, 0x3D1E3ECA, 0x3D1E8102, 0x3D1EC2B9, 0x3D1F03EC, 0x3D1F44A4, 0x3D1F84E0, 0x3D1FC4A1, 0x3D2003EC, 0x3D2042BE, 0x3D20811A, 0x3D20BF05, 0x3D20FC7D, 0x3D213986, 0x3D21761F, 0x3D21B24D, 0x3D21EE11, 0x3D222968, 0x3D226459, 0x3D229EE1, 0x3D22D906, 0x3D2312C4, 0x3D234C23, 0x3D23851D, 0x3D23BDBA, 0x3D23F5F6, 0x3D242DD5, 0x3D246558, 0x3D249C7D, 0x3D24D34C, 0x3D2509C0, 0x3D253FDB, 0x3D2575A0, 0x3D25AB10, 0x3D25E02C, 0x3D2614F2, 0x3D264968, 0x3D267D8B, 0x3D26B160, 0x3D26E4E4, 0x3D271817, 0x3D274B00, 0x3D277D9B, 0x3D27AFE8, 0x3D27E1EC, 0x3D2813A5, 0x3D284516, 0x3D28763E, 0x3D28A721, 0x3D28D7BB, 0x3D29080F, 0x3D29381D, 0x3D2967E6, 0x3D29976E, 0x3D29C6B3, 0x3D29F5B2, 0x3D2A2474, 0x3D2A52F2, 0x3D2A8133, 0x3D2AAF33, 0x3D2ADCF6, 0x3D2B0A78, 0x3D2B37BF, 0x3D2B64C8, 0x3D2B9196, 0x3D2BBE2A, 0x3D2BEA7F, 0x3D2C169C, 0x3D2C4281, 0x3D2C6E2B, 0x3D2C999C, 0x3D2CC4D7, 0x3D2CEFDB, 0x3D2D1AA5, 0x3D2D453D, 0x3D2D6F9D, 0x3D2D99C7, 0x3D2DC3BD, 0x3D2DED81, 0x3D2E170F, 0x3D2E406A, 0x3D2E6992, 0x3D2E928A, 0x3D2EBB4F, 0x3D2EE3E3, 0x3D2F0C48, 0x3D2F3479, 0x3D2F5C7C, 0x3D2F844F, 0x3D2FABF5, 0x3D2FD36A, 0x3D2FFAB4, 0x3D3021CE, 0x3D3048BB, 0x3D306F7C, 0x3D309610, 0x3D30BC79, 0x3D30E2B4, 0x3D3108C4, 0x3D312EAC, 0x3D315466, 0x3D3179F8, 0x3D319F5F, 0x3D31C49E, 0x3D31E9B2, 0x3D320EA0, 0x3D323364, 0x3D325801, 0x3D327C74, 0x3D32A0C2, 0x3D32C4E9, 0x3D32E8E9, 0x3D330CC2, 0x3D333074, 0x3D335403, 0x3D33776C, 0x3D339AAF, 0x3D33BDCD, 0x3D33E0C5, 0x3D34039B, 0x3D34264D, 0x3D3448DD, 0x3D346B47, 0x3D348D8E, 0x3D34AFB2, 0x3D34D1B6, 0x3D34F398, 0x3D351556, 0x3D3536F1, 0x3D35586C, 0x3D3579C7, 0x3D359AFF, 0x3D35BC1A, 0x3D35DD11, 0x3D35FDE9, 0x3D361EA3, 0x3D363F3A, 0x3D365FB3, 0x3D36800C, 0x3D36A048, 0x3D36C064, 0x3D36E061, 0x3D370042, 0x3D372002, 0x3D373FA8, 0x3D375F2D, 0x3D377E94, 0x3D379DE1, 0x3D37BD0E, 0x3D37DC1F, 0x3D37FB16, 0x3D3819F0, 0x3D3838AC, 0x3D38574D, 0x3D3875D3, 0x3D38943B, 0x3D38B289, 0x3D38D0BC, 0x3D38EED4, 0x3D390CD1, 0x3D392AB4, 0x3D39487B, 0x3D39662B, 0x3D3983BF, 0x3D39A139, 0x3D39BE9B, 0x3D39DBE1, 0x3D39F90D, 0x3D3A1624, 0x3D3A331F, 0x3D3A5000, 0x3D3A6CCB, 0x3D3A897C, 0x3D3AA616, 0x3D3AC297, 0x3D3ADEFE, 0x3D3AFB51, 0x3D3B178B, 0x3D3B33AB, 0x3D3B4FB7, 0x3D3B6BA9, 0x3D3B8785, 0x3D3BA34C, 0x3D3BBEF8, 0x3D3BDA92, 0x3D3BF613, 0x3D3C117E, 0x3D3C2CD2, 0x3D3C4810, 0x3D3C633B, 0x3D3C7E4E, 0x3D3C9949, 0x3D3CB431, 0x3D3CCF03, 0x3D3CE9C0, 0x3D3D0468, 0x3D3D1EFD, 0x3D3D3979, 0x3D3D53E3, 0x3D3D6E38, 0x3D3D8879, 0x3D3DA2A3, 0x3D3DBCBC, 0x3D3DD6C0, 0x3D3DF0AE, 0x3D3E0A8A, 0x3D3E2453, 0x3D3E3E06, 0x3D3E57A7, 0x3D3E7135, 0x3D3E8AB0, 0x3D3EA415, 0x3D3EBD6B, 0x3D3ED6AA, 0x3D3EEFDA, 0x3D3F08F5, 0x3D3F21FC, 0x3D3F3AF4, 0x3D3F53D8, 0x3D3F6CA7, 0x3D3F8569, 0x3D3F9E15, 0x3D3FB6B2, 0x3D3FCF38, 0x3D3FE7B2, 0x3D400018, 0x3D40186C, 0x3D4030AF, 0x3D4048E0, 0x3D406101, 0x3D40790F, 0x3D40910D, 0x3D40A8FA, 0x3D40C0D5, 0x3D40D8A0, 0x3D40F05B, 0x3D410805, 0x3D411F9D, 0x3D413728, 0x3D414E9F, 0x3D416609, 0x3D417D61, 0x3D4194A8, 0x3D41ABDF, 0x3D41C309, 0x3D41DA20, 0x3D41F129, 0x3D420823, 0x3D421F09, 0x3D4235E5, 0x3D424CAE, 0x3D42636A, 0x3D427A16, 0x3D4290B1, 0x3D42A73F, 0x3D42BDBD, 0x3D42D42E, 0x3D42EA8E, 0x3D4300E1, 0x3D431724, 0x3D432D57, 0x3D43437C, 0x3D435994, 0x3D436F9E, 0x3D438599, 0x3D439B86, 0x3D43B163, 0x3D43C732, 0x3D43DCF4, 0x3D43F2A9, 0x3D440850, 0x3D441DE7, 0x3D443373, 0x3D4448F0, 0x3D445E5F, 0x3D4473C0, 0x3D448917, 0x3D449E5D, 0x3D44B396, 0x3D44C8C2, 0x3D44DDE0, 0x3D44F2F4, 0x3D4507F7, 0x3D451CF0, 0x3D4531D9, 0x3D4546B6, 0x3D455B8A, 0x3D45704D, 0x3D458505, 0x3D4599B0, 0x3D45AE4D, 0x3D45C2DD, 0x3D45D762, 0x3D45EBDD, 0x3D460047, 0x3D4614A7, 0x3D4628FC, 0x3D463D44, 0x3D465180, 0x3D4665B0, 0x3D4679D2, 0x3D468DE9, 0x3D46A1F6, 0x3D46B5F5, 0x3D46C9E9, 0x3D46DDD0, 0x3D46F1AC, 0x3D47057D, 0x3D471941, 0x3D472CFD, 0x3D4740A9, 0x3D47544D, 0x3D4767E3, 0x3D477B6F, 0x3D478EF0, 0x3D47A266, 0x3D47B5D2, 0x3D47C930, 0x3D47DC85, 0x3D47EFCE, 0x3D48030C, 0x3D48163F, 0x3D482967, 0x3D483C85, 0x3D484F98, 0x3D4862A0, 0x3D48759D, 0x3D488890, 0x3D489B78, 0x3D48AE55, 0x3D48C12A, 0x3D48D3F2, 0x3D48E6AE, 0x3D48F963, 0x3D490C0D, 0x3D491EAD, 0x3D493142, 0x3D4943CC, 0x3D49564D, 0x3D4968C5, 0x3D497B31, 0x3D498D93, 0x3D499FEC, 0x3D49B23B, 0x3D49C47F, 0x3D49D6B9, 0x3D49E8EA, 0x3D49FB13, 0x3D4A0D2F, 0x3D4A1F43, 0x3D4A314F, 0x3D4A4350, 0x3D4A5546, 0x3D4A6734, 0x3D4A7918, 0x3D4A8AF3, 0x3D4A9CC4, 0x3D4AAE8D, 0x3D4AC04B, 0x3D4AD201, 0x3D4AE3AE, 0x3D4AF54F, 0x3D4B06EA, 0x3D4B187A, 0x3D4B2A02, 0x3D4B3B80, 0x3D4B4CF5, 0x3D4B5E63, 0x3D4B6FC5, 0x3D4B8120, 0x3D4B9273, 0x3D4BA3BA, 0x3D4BB4FD, 0x3D4BC632, 0x3D4BD761, 0x3D4BE886, 0x3D4BF9A6, 0x3D4C0AB8, 0x3D4C1BC5, 0x3D4C2CCA, 0x3D4C3DC4, 0x3D4C4EB5, 0x3D4C5F9F, 0x3D4C7081, 0x3D4C815B, 0xBF800000, 0x00000000, 0x3BED734F, 0x3C3C92CE, 0x3C6E4F89, 0x3C8A7F15, 0x3C9A5526, 0x3CA7BED1, 0x3CB361A7, 0x3CBDA89D, 0x3CC6DCD4, 0x3CCF3283, 0x3CD6D046, 0x3CDDD36A, 0x3CE452D0, 0x3CEA608C, 0x3CF00B40, 0x3CF55ED7, 0x3CFA6547, 0x3CFF26D7, 0x3D01D548, 0x3D03FB3D, 0x3D0607DA, 0x3D07FD65, 0x3D09DDCD, 0x3D0BAAC9, 0x3D0D65E2, 0x3D0F106C, 0x3D10AB99, 0x3D123882, 0x3D13B816, 0x3D152B38, 0x3D1692AE, 0x3D17EF35, 0x3D19416D, 0x3D1A89F2, 0x3D1BC94C, 0x3D1D0001, 0x3D1E2E7F, 0x3D1F5538, 0x3D20748D, 0x3D218CDB, 0x3D229E7B, 0x3D23A9BB, 0x3D24AEE9, 0x3D25AE45, 0x3D26A813, 0x3D279C92, 0x3D288BF5, 0x3D297679, 0x3D2A5C4A, 0x3D2B3D9B, 0x3D2C1A98, 0x3D2CF36B, 0x3D2DC83A, 0x3D2E992D, 0x3D2F6665, 0x3D303004, 0x3D30F62A, 0x3D31B8F8, 0x3D327888, 0x3D3334F6, 0x3D33EE5A, 0x3D34A4D0, 0x3D35586C, 0x3D360949, 0x3D36B77A, 0x3D376311, 0x3D380C26, 0x3D38B2C7, 0x3D39570C, 0x3D39F900, 0x3D3A98B8, 0x3D3B363F, 0x3D3BD1AB, 0x3D3C6B03, 0x3D3D025A, 0x3D3D97BB, 0x3D3E2B34, 0x3D3EBCD2, 0x3D3F4C9F, 0x3D3FDAA6, 0x3D4066F6, 0x3D40F195, 0x3D417A91, 0x3D4201F3, 0x3D4287C2, 0x3D430C09, 0x3D438ED3, 0x3D441025, 0x3D449008, 0x3D450E88, 0x3D458BA8, 0x3D460771, 0x3D4681EA, 0x3D46FB1C, 0x3D47730C, 0x3D47E9C1, 0x3D485F42, 0x3D48D394, 0x3D4946BE, 0x3D49B8C6, 0x3D4A29B2, 0x3D4A9984, 0x3D4B0847, 0x3D4B75FD, 0x3D4BE2AD, 0x3D4C4E57, 0x3D4CB906, 0x3D4D22BB, 0x3D4D8B7C, 0x3D4DF34B, 0x3D4E5A30, 0x3D4EC02D, 0x3D4F2544, 0x3D4F8980, 0x3D4FECDD, 0x3D504F61, 0x3D50B113, 0x3D5111F3, 0x3D517206, 0x3D51D14E, 0x3D522FD0, 0x3D528D8E, 0x3D52EA8E, 0x3D5346CF, 0x3D53A257, 0x3D53FD25, 0x3D545740, 0x3D54B0A9, 0x3D550964, 0x3D556174, 0x3D55B8D7, 0x3D560F94, 0x3D5665AD, 0x3D56BB25, 0x3D570FFA, 0x3D576435, 0x3D57B7D2, 0x3D580AD9, 0x3D585D47, 0x3D58AF21, 0x3D590067, 0x3D59511F, 0x3D59A147, 0x3D59F0E2, 0x3D5A3FF5, 0x3D5A8E7C, 0x3D5ADC80, 0x3D5B29FA, 0x3D5B76F4, 0x3D5BC36D, 0x3D5C0F63, 0x3D5C5ADD, 0x3D5CA5DB, 0x3D5CF05B, 0x3D5D3A66, 0x3D5D83F7, 0x3D5DCD10, 0x3D5E15B5, 0x3D5E5DE9, 0x3D5EA5A8, 0x3D5EECF8, 0x3D5F33DA, 0x3D5F7A4C, 0x3D5FC052, 0x3D6005ED, 0x3D604B1F, 0x3D608FE5, 0x3D60D449, 0x3D611843, 0x3D615BD8, 0x3D619F09, 0x3D61E1DA, 0x3D622448, 0x3D626654, 0x3D62A803, 0x3D62E951, 0x3D632A44, 0x3D636ADC, 0x3D63AB15, 0x3D63EAF7, 0x3D642A7F, 0x3D6469AF, 0x3D64A886, 0x3D64E70A, 0x3D652536, 0x3D65630E, 0x3D65A093, 0x3D65DDC5, 0x3D661AA7, 0x3D665735, 0x3D669375, 0x3D66CF65, 0x3D670B04, 0x3D674658, 0x3D678161, 0x3D67BC19, 0x3D67F689, 0x3D6830AE, 0x3D686A8A, 0x3D68A41B, 0x3D68DD64, 0x3D691667, 0x3D694F21, 0x3D698796, 0x3D69BFC5, 0x3D69F7B0, 0x3D6A2F56, 0x3D6A66B9, 0x3D6A9DD6, 0x3D6AD4B2, 0x3D6B0B4F, 0x3D6B41AA, 0x3D6B77C3, 0x3D6BAD9B, 0x3D6BE335, 0x3D6C1892, 0x3D6C4DAE, 0x3D6C8290, 0x3D6CB733, 0x3D6CEB99, 0x3D6D1FC3, 0x3D6D53B3, 0x3D6D8768, 0x3D6DBAE1, 0x3D6DEE20, 0x3D6E2128, 0x3D6E53F6, 0x3D6E868B, 0x3D6EB8E8, 0x3D6EEB10, 0x3D6F1CFE, 0x3D6F4EB8, 0x3D6F803B, 0x3D6FB189, 0x3D6FE2A1, 0x3D701384, 0x3D704436, 0x3D7074AF, 0x3D70A4F9, 0x3D70D50F, 0x3D7104F3, 0x3D7134A3, 0x3D716423, 0x3D719373, 0x3D71C290, 0x3D71F17F, 0x3D72203B, 0x3D724ECA, 0x3D727D28, 0x3D72AB59, 0x3D72D959, 0x3D73072C, 0x3D7334D1, 0x3D736248, 0x3D738F92, 0x3D73BCB0, 0x3D73E9A2, 0x3D741668, 0x3D744300, 0x3D746F71, 0x3D749BB3, 0x3D74C7CB, 0x3D74F3BA, 0x3D751F7F, 0x3D754B19, 0x3D75768A, 0x3D75A1D0, 0x3D75CCF1, 0x3D75F7E7, 0x3D7622B4, 0x3D764D59, 0x3D7677D9, 0x3D76A231, 0x3D76CC60, 0x3D76F669, 0x3D77204D, 0x3D774A09, 0x3D77739F, 0x3D779D10, 0x3D77C65B, 0x3D77EF83, 0x3D781883, 0x3D784160, 0x3D786A1A, 0x3D7892AE, 0x3D78BB1D, 0x3D78E369, 0x3D790B95, 0x3D79339B, 0x3D795B7E, 0x3D79833F, 0x3D79AADC, 0x3D79D257, 0x3D79F9B1, 0x3D7A20EB, 0x3D7A4800, 0x3D7A6EF7, 0x3D7A95CB, 0x3D7ABC7F, 0x3D7AE313, 0x3D7B0984, 0x3D7B2FD7, 0x3D7B560A, 0x3D7B7C1A, 0x3D7BA210, 0x3D7BC7E2, 0x3D7BED97, 0x3D7C132C, 0x3D7C38A3, 0x3D7C5DFA, 0x3D7C8333, 0x3D7CA84F, 0x3D7CCD4E, 0x3D7CF22F, 0x3D7D16EF, 0x3D7D3B95, 0x3D7D601D, 0x3D7D8488, 0x3D7DA8D5, 0x3D7DCD05, 0x3D7DF11A, 0x3D7E1511, 0x3D7E38EE, 0x3D7E5CAD, 0x3D7E8051, 0x3D7EA3DA, 0x3D7EC748, 0x3D7EEA99, 0x3D7F0DCF, 0x3D7F30EB, 0x3D7F53EB, 0x3D7F76D1, 0x3D7F999E, 0x3D7FBC4E, 0x3D7FDEE5, 0x3D8000B1, 0x3D8011E2, 0x3D802307, 0x3D80341F, 0x3D80452A, 0x3D805629, 0x3D80671B, 0x3D807800, 0x3D8088DA, 0x3D8099A6, 0x3D80AA66, 0x3D80BB1A, 0x3D80CBC2, 0x3D80DC5E, 0x3D80ECEE, 0x3D80FD72, 0x3D810DEA, 0x3D811E57, 0x3D812EB7, 0x3D813F0C, 0x3D814F56, 0x3D815F92, 0x3D816FC6, 0x3D817FEC, 0x3D819008, 0x3D81A019, 0x3D81B01D, 0x3D81C017, 0x3D81D005, 0x3D81DFEA, 0x3D81EFC2, 0x3D81FF90, 0x3D820F53, 0x3D821F0B, 0x3D822EB8, 0x3D823E5A, 0x3D824DF3, 0x3D825D80, 0x3D826D04, 0x3D827C7C, 0x3D828BEA, 0x3D829B4E, 0x3D82AAA8, 0x3D82B9F7, 0x3D82C93B, 0x3D82D876, 0x3D82E7A6, 0x3D82F6CD, 0x3D8305E9, 0x3D8314FC, 0x3D832406, 0x3D833306, 0x3D8341FB, 0x3D8350E5, 0x3D835FC8, 0x3D836E9F, 0x3D837D6F, 0x3D838C34, 0x3D839AF0, 0x3D83A9A2, 0x3D83B84A, 0x3D83C6EA, 0x3D83D580, 0x3D83E40E, 0x3D83F291, 0x3D84010C, 0x3D840F7D, 0x3D841DE6, 0x3D842C45, 0x3D843A9C, 0x3D8448E9, 0x3D84572D, 0x3D846569, 0x3D84739C, 0x3D8481C6, 0x3D848FE7, 0x3D849E01, 0x3D84AC10, 0x3D84BA18, 0x3D84C818, 0x3D84D60E, 0x3D84E3FC, 0x3D84F1E1, 0x3D84FFBF, 0x3D850D93, 0x3D851B60, 0x3D852923, 0x3D8536E0, 0x3D854494, 0x3D85523F, 0x3D855FE2, 0x3D856D7F, 0x3D857B11, 0x3D85889E, 0x3D859620, 0x3D85A39C, 0x3D85B10F, 0x3D85BE7B, 0x3D85CBDF, 0x3D85D93B, 0x3D85E690, 0x3D85F3DC, 0x3D860121, 0x3D860E5E, 0x3D861B94, 0x3D8628C2, 0x3D8635E9, 0x3D864308, 0x3D86501F, 0x3D865D30, 0x3D866A39, 0x3D867739, 0x3D868433, 0x3D869127, 0x3D869E12, 0x3D86AAF6, 0x3D86B7D2, 0x3D86C4A8, 0x3D86D177, 0x3D86DE3F, 0x3D86EAFF, 0x3D86F7B9, 0x3D87046A, 0x3D871116, 0x3D871DBA, 0x3D872A58, 0x3D8736EE, 0x3D87437E, 0x3D875006, 0x3D875C88, 0x3D876904, 0x3D877578, 0x3D8781E6, 0x3D878E4C, 0x3D879AAD, 0x3D87A706, 0x3D87B359, 0x3D87BFA6, 0x3D87CBEB, 0x3D87D82A, 0x3D87E463, 0x3D87F096, 0x3D87FCC1, 0x3D8808E7, 0x3D881506, 0x3D88211F, 0x3D882D30, 0x3D88393D, 0x3D884542, 0x3D885141, 0x3D885D3B, 0x3D88692D, 0x3D88751B, 0x3D888100, 0x3D888CE2, 0x3D8898BB, 0x3D88A490, 0x3D88B05E, 0x3D88BC25, 0x3D88C7E8, 0x3D88D3A4, 0x3D88DF5A, 0x3D88EB0A, 0x3D88F6B4, 0x3D890258, 0x3D890DF6, 0x3D89198F, 0x3D892522, 0x3D8930AF, 0x3D893C35, 0x3D8947B7, 0x3D895333, 0x3D895EA9, 0x3D896A18, 0x3D897583, 0x00010203, 0x04000102, 0x03040001, 0x02030400, 0x01020304, 0x00010203, 0x04050607, 0x08050607, 0x08050607, 0x08050607, 0x08050607, 0x08090A0B, 0x090A0B09, 0x0A0B090A, 0x0B090A0B, 0x00000000, 0x00010101, 0x01010202, 0x02020203, 0x03030303, 0x04040404, 0x04000000, 0x00010101, 0x01020202, 0x02030303, 0x03040404, 0x04000000, 0x01010102, 0x02020303, 0x03040404, 0x00000000, 0x00000000 +glabel D_80078EE0 +.short 0x59F2, 0x58D0, 0x57AA, 0x5681, 0x5555, 0x5425, 0x52F2, 0x51BC, 0x5082, 0x4F46, 0x4E06, 0x4CC3, 0x4B7D, 0x4A35, 0x48E9, 0x479B, 0x4649, 0x44F5, 0x439E, 0x4245, 0x40E9, 0x3F8A, 0x3E29, 0x3CC6, 0x3B60, 0x39F8, 0x388D, 0x3721, 0x35B2, 0x3441, 0x32CE, 0x3159, 0x2FE2, 0x2E69, 0x2CEF, 0x2B72, 0x29F4, 0x2875, 0x26F3, 0x2570, 0x23EC, 0x2266, 0x20DF, 0x1F57, 0x1DCE, 0x1C43, 0x1AB7, 0x192A, 0x179C, 0x160E, 0x147E, 0x12ED, 0x115C, 0x0FCA, 0x0E38, 0x0CA5, 0x0B11, 0x097D, 0x07E9, 0x0654, 0x04C0, 0x032A, 0x0195, 0x0000, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3681, 0x3045, 0x36CC, 0xC25E, 0x3701, 0x3056, 0x3715, 0xFBD1, 0x3726, 0xF96C, 0x3735, 0x56F8, 0x3741, 0xC897, 0x374C, 0xC288, 0x3756, 0x941E, 0x375F, 0x75EA, 0x3767, 0x91B7, 0x376F, 0x074D, 0x3775, 0xEF48, 0x377C, 0x5D3E, 0x3781, 0x3079, 0x3784, 0x039E, 0x3786, 0xAD71, 0x3789, 0x3260, 0x378B, 0x9637, 0x378D, 0xDC3A, 0x3790, 0x0722, 0x3792, 0x195F, 0x3794, 0x1509, 0x3795, 0xFC00, 0x3797, 0xCFD4, 0x3799, 0x9207, 0x379B, 0x43D7, 0x379C, 0xE668, 0x379E, 0x7AD2, 0x37A0, 0x01F1, 0x37A1, 0x7CA6, 0x37A2, 0xEBB8, 0x37A4, 0x4FD1, 0x37A5, 0xA99A, 0x37A6, 0xF9A4, 0x37A8, 0x4077, 0x37A9, 0x7E93, 0x37AA, 0xB46F, 0x37AB, 0xE26F, 0x37AD, 0x08FC, 0x37AE, 0x286C, 0x37AF, 0x4119, 0x37B0, 0x5355, 0x37B1, 0x5F67, 0x37B2, 0x6597, 0x37B3, 0x6621, 0x37B4, 0x6141, 0x37B5, 0x5735, 0x37B6, 0x4832, 0x37B7, 0x346C, 0x37B8, 0x1C0C, 0x37B8, 0xFF46, 0x37B9, 0xDE3F, 0x37BA, 0xB91E, 0x37BB, 0x900F, 0x37BC, 0x632E, 0x37BD, 0x32A6, 0x37BD, 0xFE8D, 0x37BE, 0xC70A, 0x37BF, 0x8C33, 0x37C0, 0x4E29, 0x37C1, 0x0D07, 0x37C1, 0xC8E4, 0x37C2, 0x81D5, 0x37C3, 0x37F0, 0x37C3, 0xEB51, 0x37C4, 0x9C0E, 0x37C5, 0x4A32, 0x37C5, 0xF5D3, 0x37C6, 0x9F06, 0x37C7, 0x45DC, 0x37C7, 0xEA67, 0x37C8, 0x8CB5, 0x37C9, 0x2CD3, 0x37C9, 0xCAD0, 0x37CA, 0x66BE, 0x37CB, 0x00A7, 0x37CB, 0x98A1, 0x37CC, 0x2EAD, 0x37CC, 0xC2DA, 0x37CD, 0x5539, 0x37CD, 0xE5D0, 0x37CE, 0x74AA, 0x37CF, 0x01D7, 0x37CF, 0x8D57, 0x37D0, 0x1741, 0x37D0, 0x9F93, 0x37D1, 0x265F, 0x37D1, 0xABA5, 0x37D2, 0x2F75, 0x37D2, 0xB1D5, 0x37D3, 0x32CA, 0x37D3, 0xB25F, 0x37D4, 0x3099, 0x37D4, 0xAD7F, 0x37D5, 0x2921, 0x37D5, 0xA378, 0x37D6, 0x1C91, 0x37D6, 0x9476, 0x37D7, 0x0B27, 0x37D7, 0x80A9, 0x37D7, 0xF50E, 0x37D8, 0x684A, 0x37D8, 0xDA73, 0x37D9, 0x4B84, 0x37D9, 0xBB87, 0x37DA, 0x2A7D, 0x37DA, 0x9870, 0x37DB, 0x055C, 0x37DB, 0x7150, 0x37DB, 0xDC4D, 0x37DC, 0x4658, 0x37DC, 0xAF71, 0x37DD, 0x179E, 0x37DD, 0x7EE3, 0x37DD, 0xE548, 0x37DE, 0x4AD0, 0x37DE, 0xAF77, 0x37DF, 0x1348, 0x37DF, 0x7648, 0x37DF, 0xD877, 0x37E0, 0x39D4, 0x37E0, 0x9A6C, 0x37E0, 0xFA3F, 0x37E1, 0x594B, 0x37E1, 0xB797, 0x37E2, 0x1527, 0x37E2, 0x71F8, 0x37E2, 0xCE18, 0x37E3, 0x297E, 0x37E3, 0x8434, 0x37E3, 0xDE3F, 0x37E4, 0x3795, 0x37E4, 0x9046, 0x37E4, 0xE852, 0x37E5, 0x3FB3, 0x37E5, 0x9675, 0x37E5, 0xEC93, 0x37E6, 0x4216, 0x37E6, 0x96FF, 0x37E6, 0xEB49, 0x37E7, 0x3F04, 0x37E7, 0x9220, 0x37E7, 0xE4AC, 0x37E8, 0x36AA, 0x37E8, 0x8819, 0x37E8, 0xD8F8, 0x37E9, 0x2949, 0x37E9, 0x7916, 0x37E9, 0xC85A, 0x37EA, 0x1714, 0x37EA, 0x654F, 0x37EA, 0xB302, 0x37EB, 0x0035, 0x37EB, 0x4CF0, 0x37EB, 0x9927, 0x37EB, 0xE4E5, 0x37EC, 0x3024, 0x37EC, 0x7AF0, 0x37EC, 0xC543, 0x37ED, 0x0F1D, 0x37ED, 0x588A, 0x37ED, 0xA17D, 0x37ED, 0xEA02, 0x37EE, 0x3214, 0x37EE, 0x79B8, 0x37EE, 0xC0EE, 0x37EF, 0x07BB, 0x37EF, 0x4E1B, 0x37EF, 0x9412, 0x37EF, 0xD9A0, 0x37F0, 0x1EC6, 0x37F0, 0x6389, 0x37F0, 0xA7E4, 0x37F0, 0xEBDC, 0x37F1, 0x2F71, 0x37F1, 0x72A3, 0x37F1, 0xB577, 0x37F1, 0xF7EE, 0x37F2, 0x3A02, 0x37F2, 0x7BBE, 0x37F2, 0xBD17, 0x37F2, 0xFE18, 0x37F3, 0x3EC1, 0x37F3, 0x7F13, 0x37F3, 0xBF06, 0x37F3, 0xFEA2, 0x37F4, 0x3DEB, 0x37F4, 0x7CE2, 0x37F4, 0xBB7C, 0x37F4, 0xF9C8, 0x37F5, 0x37C2, 0x37F5, 0x7564, 0x37F5, 0xB2B9, 0x37F5, 0xEFBB, 0x37F6, 0x2C71, 0x37F6, 0x68DA, 0x37F6, 0xA4F0, 0x37F6, 0xE0B9, 0x37F7, 0x1C3B, 0x37F7, 0x5770, 0x37F7, 0x9257, 0x37F7, 0xCCF2, 0x37F8, 0x0746, 0x37F8, 0x4151, 0x37F8, 0x7B16, 0x37F8, 0xB493, 0x37F8, 0xEDC8, 0x37F9, 0x26BC, 0x37F9, 0x5F68, 0x37F9, 0x97CD, 0x37F9, 0xCFEF, 0x37FA, 0x07D0, 0x37FA, 0x3F69, 0x37FA, 0x76C6, 0x37FA, 0xADE0, 0x37FA, 0xE4B9, 0x37FB, 0x1B50, 0x37FB, 0x51A5, 0x37FB, 0x87C3, 0x37FB, 0xBD99, 0x37FB, 0xF338, 0x37FC, 0x2896, 0x37FC, 0x5DB7, 0x37FC, 0x92A1, 0x37FC, 0xC749, 0x37FC, 0xFBBA, 0x37FD, 0x2FEE, 0x37FD, 0x63E6, 0x37FD, 0x97A8, 0x37FD, 0xCB2C, 0x37FD, 0xFE7A, 0x37FE, 0x3191, 0x37FE, 0x6470, 0x37FE, 0x9719, 0x37FE, 0xC985, 0x37FE, 0xFBC0, 0x37FF, 0x2DC4, 0x37FF, 0x5F96, 0x37FF, 0x912C, 0x37FF, 0xC291, 0x37FF, 0xF3C3, 0x3800, 0x1260, 0x3800, 0x2AC5, 0x3800, 0x4311, 0x3800, 0x5B42, 0x3800, 0x735B, 0x3800, 0x8B5D, 0x3800, 0xA344, 0x3800, 0xBB14, 0x3800, 0xD2CA, 0x3800, 0xEA69, 0x3801, 0x01F0, 0x3801, 0x1960, 0x3801, 0x30B8, 0x3801, 0x47F7, 0x3801, 0x5F23, 0x3801, 0x7633, 0x3801, 0x8D31, 0x3801, 0xA415, 0x3801, 0xBAE6, 0x3801, 0xD19F, 0x3801, 0xE841, 0x3801, 0xFECD, 0x3802, 0x1544, 0x3802, 0x2BA4, 0x3802, 0x41F2, 0x3802, 0x5829, 0x3802, 0x6E4A, 0x3802, 0x8455, 0x3802, 0x9A4D, 0x3802, 0xB032, 0x3802, 0xC601, 0x3802, 0xDBBA, 0x3802, 0xF15F, 0x3803, 0x06F1, 0x3803, 0x1C70, 0x3803, 0x31DA, 0x3803, 0x4732, 0x3803, 0x5C75, 0x3803, 0x71A4, 0x3803, 0x86C3, 0x3803, 0x9BCC, 0x3803, 0xB0C1, 0x3803, 0xC5A6, 0x3803, 0xDA78, 0x3803, 0xEF37, 0x3804, 0x03E2, 0x3804, 0x187D, 0x3804, 0x2D05, 0x3804, 0x417C, 0x3804, 0x55E0, 0x3804, 0x6A31, 0x3804, 0x7E74, 0x3804, 0x92A1, 0x3804, 0xA6C0, 0x3804, 0xBACC, 0x3804, 0xCEC7, 0x3804, 0xE2B0, 0x3804, 0xF68A, 0x3805, 0x0A51, 0x3805, 0x1E0B, 0x3805, 0x31B1, 0x3805, 0x4547, 0x3805, 0x58CC, 0x3805, 0x6C41, 0x3805, 0x7FA8, 0x3805, 0x92FC, 0x3805, 0xA642, 0x3805, 0xB977, 0x3805, 0xCC9C, 0x3805, 0xDFB4, 0x3805, 0xF2BB, 0x3806, 0x05B1, 0x3806, 0x189A, 0x3806, 0x2B72, 0x3806, 0x3E39, 0x3806, 0x50F3, 0x3806, 0x639F, 0x3806, 0x763B, 0x3806, 0x88C9, 0x3806, 0x9B46, 0x3806, 0xADB6, 0x3806, 0xC018, 0x3806, 0xD269, 0x3806, 0xE4B0, 0x3806, 0xF6E6, 0x3807, 0x090E, 0x3807, 0x1B25, 0x3807, 0x2D32, 0x3807, 0x3F31, 0x3807, 0x5120, 0x3807, 0x6303, 0x3807, 0x74D9, 0x3807, 0x869E, 0x3807, 0x9858, 0x3807, 0xAA05, 0x3807, 0xBBA3, 0x3807, 0xCD34, 0x3807, 0xDEB8, 0x3807, 0xF030, 0x3808, 0x019A, 0x3808, 0x12F7, 0x3808, 0x2446, 0x3808, 0x358A, 0x3808, 0x46C1, 0x3808, 0x57E9, 0x3808, 0x6907, 0x3808, 0x7A19, 0x3808, 0x8B1E, 0x3808, 0x9C15, 0x3808, 0xAD01, 0x3808, 0xBDE0, 0x3808, 0xCEB3, 0x3808, 0xDF78, 0x3808, 0xF036, 0x3809, 0x00E3, 0x3809, 0x1187, 0x3809, 0x221E, 0x3809, 0x32AA, 0x3809, 0x4328, 0x3809, 0x539E, 0x3809, 0x6406, 0x3809, 0x7463, 0x3809, 0x84B3, 0x3809, 0x94FA, 0x3809, 0xA536, 0x3809, 0xB564, 0x3809, 0xC588, 0x3809, 0xD5A0, 0x3809, 0xE5B0, 0x3809, 0xF5B3, 0x380A, 0x05AA, 0x380A, 0x1597, 0x380A, 0x257B, 0x380A, 0x3551, 0x380A, 0x451D, 0x380A, 0x54E0, 0x380A, 0x6498, 0x380A, 0x7445, 0x380A, 0x83E8, 0x380A, 0x937F, 0x380A, 0xA30B, 0x380A, 0xB28F, 0x380A, 0xC208, 0x380A, 0xD176, 0x380A, 0xE0D9, 0x380A, 0xF034, 0x380A, 0xFF84, 0x380B, 0x0ECB, 0x380B, 0x1E08, 0x380B, 0x2D39, 0x380B, 0x3C60, 0x380B, 0x4B7E, 0x380B, 0x5A94, 0x380B, 0x699F, 0x380B, 0x789F, 0x380B, 0x8797, 0x380B, 0x9686, 0x380B, 0xA56B, 0x380B, 0xB445, 0x380B, 0xC316, 0x380B, 0xD1DF, 0x380B, 0xE09D, 0x380B, 0xEF53, 0x380B, 0xFDFE, 0x380C, 0x0CA0, 0x380C, 0x1B3B, 0x380C, 0x29CD, 0x380C, 0x3854, 0x380C, 0x46D3, 0x380C, 0x5547, 0x380C, 0x63B5, 0x380C, 0x7218, 0x380C, 0x8073, 0x380C, 0x8EC3, 0x380C, 0x9D0E, 0x380C, 0xAB4E, 0x380C, 0xB985, 0x380C, 0xC7B4, 0x380C, 0xD5DB, 0x380C, 0xE3FA, 0x380C, 0xF20D, 0x380D, 0x001C, 0x380D, 0x0E1F, 0x380D, 0x1C1C, 0x380D, 0x2A0F, 0x380D, 0x37F9, 0x380D, 0x45DE, 0x380D, 0x53B8, 0x380D, 0x618A, 0x380D, 0x6F56, 0x380D, 0x7D17, 0x380D, 0x8AD3, 0x380D, 0x9884, 0x380D, 0xA62F, 0x380D, 0xB3CF, 0x380D, 0xC16A, 0x380D, 0xCEFC, 0x380D, 0xDC87, 0x380D, 0xEA08, 0x380D, 0xF782, 0x380E, 0x04F6, 0x380E, 0x1260, 0x380E, 0x1FC3, 0x380E, 0x2D1F, 0x380E, 0x3A75, 0x380E, 0x47C0, 0x380E, 0x5505, 0x380E, 0x6243, 0x380E, 0x6F78, 0x380E, 0x7CA7, 0x380E, 0x89CE, 0x380E, 0x96ED, 0x380E, 0xA404, 0x380E, 0xB115, 0x380E, 0xBE1E, 0x380E, 0xCB22, 0x380E, 0xD81D, 0x380E, 0xE510, 0x380E, 0xF1FB, 0x380E, 0xFEE0, 0x380F, 0x0BC0, 0x380F, 0x1898, 0x380F, 0x2567, 0x380F, 0x3231, 0x380F, 0x3EF2, 0x380F, 0x4BAE, 0x380F, 0x5862, 0x380F, 0x650E, 0x380F, 0x71B4, 0x380F, 0x7E54, 0x380F, 0x8AED, 0x380F, 0x977F, 0x380F, 0xA40A, 0x380F, 0xB08F, 0x380F, 0xBD0C, 0x380F, 0xC983, 0x380F, 0xD5F2, 0x380F, 0xE25C, 0x380F, 0xEEC0, 0x380F, 0xFB1C, 0x3810, 0x0772, 0x3810, 0x13C3, 0x3810, 0x200C, 0x3810, 0x2C4C, 0x3810, 0x388A, 0x3810, 0x44BF, 0x3810, 0x50EF, 0x3810, 0x5D16, 0x3810, 0x6939, 0x3810, 0x7555, 0x3810, 0x816C, 0x3810, 0x8D7B, 0x3810, 0x9985, 0x3810, 0xA588, 0x3810, 0xB184, 0x3810, 0xBD7D, 0x3810, 0xC96E, 0x3810, 0xD559, 0x3810, 0xE13C, 0x3810, 0xED1C, 0x3810, 0xF8F4, 0x3811, 0x04C6, 0x3811, 0x1093, 0x3811, 0x1C58, 0x3811, 0x281A, 0x3811, 0x33D3, 0x3811, 0x3F8A, 0x3811, 0x4B39, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3691, 0x5629, 0x36E6, 0x5A71, 0x3711, 0x563E, 0x3728, 0xBB21, 0x373B, 0xD86E, 0x374C, 0x01A5, 0x375A, 0x017E, 0x3766, 0x5AA2, 0x3771, 0x6665, 0x377B, 0x646F, 0x3782, 0x41DE, 0x3786, 0x73FF, 0x378A, 0x567A, 0x378D, 0xF452, 0x3791, 0x5666, 0x3794, 0x83F4, 0x3797, 0x82FE, 0x379A, 0x588A, 0x379D, 0x08DF, 0x379F, 0x979E, 0x37A2, 0x07E4, 0x37A4, 0x5C6C, 0x37A6, 0x978B, 0x37A8, 0xBB58, 0x37AA, 0xC9AC, 0x37AC, 0xC422, 0x37AE, 0xAC2C, 0x37B0, 0x8318, 0x37B2, 0x4A04, 0x37B4, 0x020F, 0x37B5, 0xAC19, 0x37B7, 0x4909, 0x37B8, 0xD9A6, 0x37BA, 0x5EAA, 0x37BB, 0xD8B5, 0x37BD, 0x4861, 0x37BE, 0xAE42, 0x37C0, 0x0AD6, 0x37C1, 0x5E97, 0x37C2, 0xA9F2, 0x37C3, 0xED56, 0x37C5, 0x291A, 0x37C6, 0x5D9C, 0x37C7, 0x8B2E, 0x37C8, 0xB223, 0x37C9, 0xD2BD, 0x37CA, 0xED43, 0x37CC, 0x01F7, 0x37CD, 0x1116, 0x37CE, 0x1AD6, 0x37CF, 0x1F69, 0x37D0, 0x1F07, 0x37D1, 0x19E0, 0x37D2, 0x101B, 0x37D3, 0x01E9, 0x37D3, 0xEF6C, 0x37D4, 0xD8D0, 0x37D5, 0xBE3A, 0x37D6, 0x9FC1, 0x37D7, 0x7D97, 0x37D8, 0x57CC, 0x37D9, 0x2E81, 0x37DA, 0x01D6, 0x37DA, 0xD1E8, 0x37DB, 0x9ECC, 0x37DC, 0x6899, 0x37DD, 0x2F69, 0x37DD, 0xF34E, 0x37DE, 0xB468, 0x37DF, 0x72C2, 0x37E0, 0x2E73, 0x37E0, 0xE78A, 0x37E1, 0x9E24, 0x37E2, 0x5245, 0x37E3, 0x0405, 0x37E3, 0xB36D, 0x37E4, 0x6099, 0x37E5, 0x0B8A, 0x37E5, 0xB45A, 0x37E6, 0x5B10, 0x37E6, 0xFFB5, 0x37E7, 0xA261, 0x37E8, 0x4319, 0x37E8, 0xE1E7, 0x37E9, 0x7EDD, 0x37EA, 0x19FF, 0x37EA, 0xB35F, 0x37EB, 0x4B01, 0x37EB, 0xE0F1, 0x37EC, 0x753A, 0x37ED, 0x07E6, 0x37ED, 0x98FC, 0x37EE, 0x2880, 0x37EE, 0xB683, 0x37EF, 0x430B, 0x37EF, 0xCE18, 0x37F0, 0x57BF, 0x37F0, 0xDFFC, 0x37F1, 0x66D8, 0x37F1, 0xEC60, 0x37F2, 0x7099, 0x37F2, 0xF387, 0x37F3, 0x752C, 0x37F3, 0xF598, 0x37F4, 0x74CA, 0x37F4, 0xF2CD, 0x37F5, 0x6FA3, 0x37F5, 0xEB54, 0x37F6, 0x65E3, 0x37F6, 0xDF54, 0x37F7, 0x57AC, 0x37F7, 0xCEF7, 0x37F8, 0x4535, 0x37F8, 0xBA6A, 0x37F9, 0x2E98, 0x37F9, 0xA1C9, 0x37FA, 0x13FD, 0x37FA, 0x853F, 0x37FA, 0xF58A, 0x37FB, 0x64E8, 0x37FB, 0xD35A, 0x37FC, 0x40EB, 0x37FC, 0xAD94, 0x37FD, 0x195C, 0x37FD, 0x8449, 0x37FD, 0xEE5F, 0x37FE, 0x579E, 0x37FE, 0xC00D, 0x37FF, 0x27B0, 0x37FF, 0x8E88, 0x37FF, 0xF494, 0x3800, 0x2CED, 0x3800, 0x5F30, 0x3800, 0x9113, 0x3800, 0xC299, 0x3800, 0xF3C1, 0x3801, 0x248E, 0x3801, 0x5500, 0x3801, 0x8518, 0x3801, 0xB4DB, 0x3801, 0xE445, 0x3802, 0x135D, 0x3802, 0x421E, 0x3802, 0x708E, 0x3802, 0x9EAC, 0x3802, 0xCC78, 0x3802, 0xF9F6, 0x3803, 0x2725, 0x3803, 0x5407, 0x3803, 0x809C, 0x3803, 0xACE7, 0x3803, 0xD8E7, 0x3804, 0x049D, 0x3804, 0x3009, 0x3804, 0x5B31, 0x3804, 0x8611, 0x3804, 0xB0AC, 0x3804, 0xDAFF, 0x3805, 0x0511, 0x3805, 0x2EE1, 0x3805, 0x586C, 0x3805, 0x81B8, 0x3805, 0xAAC2, 0x3805, 0xD38C, 0x3805, 0xFC15, 0x3806, 0x2464, 0x3806, 0x4C71, 0x3806, 0x7444, 0x3806, 0x9BDB, 0x3806, 0xC335, 0x3806, 0xEA55, 0x3807, 0x113A, 0x3807, 0x37E7, 0x3807, 0x5E5A, 0x3807, 0x8496, 0x3807, 0xAA99, 0x3807, 0xD068, 0x3807, 0xF5FF, 0x3808, 0x1B60, 0x3808, 0x408C, 0x3808, 0x6584, 0x3808, 0x8A48, 0x3808, 0xAEDA, 0x3808, 0xD338, 0x3808, 0xF765, 0x3809, 0x1B5D, 0x3809, 0x3F27, 0x3809, 0x62BF, 0x3809, 0x8629, 0x3809, 0xA961, 0x3809, 0xCC6D, 0x3809, 0xEF47, 0x380A, 0x11F3, 0x380A, 0x3473, 0x380A, 0x56C7, 0x380A, 0x78EC, 0x380A, 0x9AE5, 0x380A, 0xBCB2, 0x380A, 0xDE53, 0x380A, 0xFFCB, 0x380B, 0x2117, 0x380B, 0x423A, 0x380B, 0x6333, 0x380B, 0x8404, 0x380B, 0xA4AB, 0x380B, 0xC528, 0x380B, 0xE580, 0x380C, 0x05AE, 0x380C, 0x25B5, 0x380C, 0x4594, 0x380C, 0x654E, 0x380C, 0x84E3, 0x380C, 0xA450, 0x380C, 0xC397, 0x380C, 0xE2BB, 0x380D, 0x01B8, 0x380D, 0x2091, 0x380D, 0x3F47, 0x380D, 0x5DD8, 0x380D, 0x7C46, 0x380D, 0x9A91, 0x380D, 0xB8BA, 0x380D, 0xD6C0, 0x380D, 0xF4A2, 0x380E, 0x1265, 0x380E, 0x3005, 0x380E, 0x4D81, 0x380E, 0x6ADF, 0x380E, 0x881C, 0x380E, 0xA538, 0x380E, 0xC236, 0x380E, 0xDF10, 0x380E, 0xFBCE, 0x380F, 0x1869, 0x380F, 0x34E8, 0x380F, 0x5146, 0x380F, 0x6D86, 0x380F, 0x89AB, 0x380F, 0xA5AF, 0x380F, 0xC194, 0x380F, 0xDD5E, 0x380F, 0xF909, 0x3810, 0x1497, 0x3810, 0x3009, 0x3810, 0x4B5C, 0x3810, 0x6694, 0x3810, 0x81B1, 0x3810, 0x9CB2, 0x3810, 0xB798, 0x3810, 0xD25F, 0x3810, 0xED0E, 0x3811, 0x07A1, 0x3811, 0x2219, 0x3811, 0x3C75, 0x3811, 0x56B9, 0x3811, 0x70E4, 0x3811, 0x8AF0, 0x3811, 0xA4E7, 0x3811, 0xBEC2, 0x3811, 0xD884, 0x3811, 0xF22B, 0x3812, 0x0BBC, 0x3812, 0x2534, 0x3812, 0x3E90, 0x3812, 0x57D7, 0x3812, 0x7105, 0x3812, 0x8A1A, 0x3812, 0xA317, 0x3812, 0xBBFD, 0x3812, 0xD4CB, 0x3812, 0xED82, 0x3813, 0x0621, 0x3813, 0x1EAA, 0x3813, 0x371A, 0x3813, 0x4F77, 0x3813, 0x67BC, 0x3813, 0x7FEA, 0x3813, 0x97FF, 0x3813, 0xB002, 0x3813, 0xC7EE, 0x3813, 0xDFC4, 0x3813, 0xF785, 0x3814, 0x0F2F, 0x3814, 0x26C6, 0x3814, 0x3E47, 0x3814, 0x55B2, 0x3814, 0x6D07, 0x3814, 0x8449, 0x3814, 0x9B78, 0x3814, 0xB290, 0x3814, 0xC996, 0x3814, 0xE085, 0x3814, 0xF764, 0x3815, 0x0E2A, 0x3815, 0x24E0, 0x3815, 0x3B82, 0x3815, 0x520F, 0x3815, 0x688B, 0x3815, 0x7EF1, 0x3815, 0x9546, 0x3815, 0xAB85, 0x3815, 0xC1B4, 0x3815, 0xD7D0, 0x3815, 0xEDDB, 0x3816, 0x03D1, 0x3816, 0x19B5, 0x3816, 0x2F87, 0x3816, 0x4548, 0x3816, 0x5AF6, 0x3816, 0x7090, 0x3816, 0x861D, 0x3816, 0x9B94, 0x3816, 0xB0FD, 0x3816, 0xC653, 0x3816, 0xDB95, 0x3816, 0xF0CA, 0x3817, 0x05EC, 0x3817, 0x1AFD, 0x3817, 0x2FFE, 0x3817, 0x44EE, 0x3817, 0x59CB, 0x3817, 0x6E9A, 0x3817, 0x8358, 0x3817, 0x9804, 0x3817, 0xACA1, 0x3817, 0xC12F, 0x3817, 0xD5AB, 0x3817, 0xEA1A, 0x3817, 0xFE76, 0x3818, 0x12C4, 0x3818, 0x2701, 0x3818, 0x3B2E, 0x3818, 0x4F4D, 0x3818, 0x635C, 0x3818, 0x775D, 0x3818, 0x8B4E, 0x3818, 0x9F30, 0x3818, 0xB303, 0x3818, 0xC6C4, 0x3818, 0xDA7B, 0x3818, 0xEE21, 0x3819, 0x01B7, 0x3819, 0x153F, 0x3819, 0x28B9, 0x3819, 0x3C26, 0x3819, 0x4F82, 0x3819, 0x62D3, 0x3819, 0x7614, 0x3819, 0x8946, 0x3819, 0x9C6B, 0x3819, 0xAF83, 0x3819, 0xC28A, 0x3819, 0xD586, 0x3819, 0xE874, 0x3819, 0xFB54, 0x381A, 0x0E27, 0x381A, 0x20EB, 0x381A, 0x33A3, 0x381A, 0x464C, 0x381A, 0x58E8, 0x381A, 0x6B78, 0x381A, 0x7DFB, 0x381A, 0x9070, 0x381A, 0xA2DA, 0x381A, 0xB534, 0x381A, 0xC783, 0x381A, 0xD9C6, 0x381A, 0xEBFC, 0x381A, 0xFE25, 0x381B, 0x103F, 0x381B, 0x2251, 0x381B, 0x3453, 0x381B, 0x464A, 0x381B, 0x5835, 0x381B, 0x6A13, 0x381B, 0x7BE6, 0x381B, 0x8DAB, 0x381B, 0x9F66, 0x381B, 0xB115, 0x381B, 0xC2B6, 0x381B, 0xD44D, 0x381B, 0xE5D8, 0x381B, 0xF759, 0x381C, 0x08CC, 0x381C, 0x1A33, 0x381C, 0x2B90, 0x381C, 0x3CDF, 0x381C, 0x4E26, 0x381C, 0x5F5F, 0x381C, 0x708D, 0x381C, 0x81B3, 0x381C, 0x92CB, 0x381C, 0xA3D8, 0x381C, 0xB4DA, 0x381C, 0xC5D1, 0x381C, 0xD6BD, 0x381C, 0xE79E, 0x381C, 0xF874, 0x381D, 0x0940, 0x381D, 0x1A02, 0x381D, 0x2AB7, 0x381D, 0x3B64, 0x381D, 0x4C03, 0x381D, 0x5C9A, 0x381D, 0x6D26, 0x381D, 0x7DAA, 0x381D, 0x8E20, 0x381D, 0x9E8D, 0x381D, 0xAEF0, 0x381D, 0xBF48, 0x381D, 0xCF97, 0x381D, 0xDFDB, 0x381D, 0xF015, 0x381E, 0x0046, 0x381E, 0x106C, 0x381E, 0x2087, 0x381E, 0x309A, 0x381E, 0x40A2, 0x381E, 0x50A2, 0x381E, 0x6097, 0x381E, 0x7080, 0x381E, 0x8062, 0x381E, 0x903B, 0x381E, 0xA009, 0x381E, 0xAFCF, 0x381E, 0xBF8A, 0x381E, 0xCF3D, 0x381E, 0xDEE4, 0x381E, 0xEE84, 0x381E, 0xFE1B, 0x381F, 0x0DA7, 0x381F, 0x1D2B, 0x381F, 0x2CA4, 0x381F, 0x3C18, 0x381F, 0x4B7E, 0x381F, 0x5ADE, 0x381F, 0x6A33, 0x381F, 0x7983, 0x381F, 0x88C5, 0x381F, 0x9801, 0x381F, 0xA733, 0x381F, 0xB65F, 0x381F, 0xC580, 0x381F, 0xD499, 0x381F, 0xE3A6, 0x381F, 0xF2AF, 0x3820, 0x01AC, 0x3820, 0x10A4, 0x3820, 0x1F91, 0x3820, 0x2E75, 0x3820, 0x3D52, 0x3820, 0x4C26, 0x3820, 0x5AF1, 0x3820, 0x69B5, 0x3820, 0x7870, 0x3820, 0x8723, 0x3820, 0x95CE, 0x3820, 0xA471, 0x3820, 0xB30B, 0x3820, 0xC19D, 0x3820, 0xD027, 0x3820, 0xDEA9, 0x3820, 0xED22, 0x3820, 0xFB93, 0x3821, 0x09FF, 0x3821, 0x185F, 0x3821, 0x26BB, 0x3821, 0x350D, 0x3821, 0x4358, 0x3821, 0x519A, 0x3821, 0x5FD5, 0x3821, 0x6E09, 0x3821, 0x7C36, 0x3821, 0x8A5A, 0x3821, 0x9876, 0x3821, 0xA689, 0x3821, 0xB497, 0x3821, 0xC29D, 0x3821, 0xD09B, 0x3821, 0xDE93, 0x3821, 0xEC83, 0x3821, 0xFA6B, 0x3822, 0x084A, 0x3822, 0x1624, 0x3822, 0x23F6, 0x3822, 0x31C2, 0x3822, 0x3F86, 0x3822, 0x4D42, 0x3822, 0x5AF8, 0x3822, 0x68A6, 0x3822, 0x764B, 0x3822, 0x83EC, 0x3822, 0x9184, 0x3822, 0x9F16, 0x3822, 0xACA0, 0x3822, 0xBA25, 0x3822, 0xC7A1, 0x3822, 0xD516, 0x3822, 0xE284, 0x3822, 0xEFEE, 0x3822, 0xFD4E, 0x3823, 0x0AAA, 0x3823, 0x17FD, 0x3823, 0x2548, 0x3823, 0x3290, 0x3823, 0x3FCE, 0x3823, 0x4D08, 0x3823, 0x5A3A, 0x3823, 0x6764, 0x3823, 0x7489, 0xBF80, 0x0000, 0x0000, 0x0000, 0x36A6, 0x196A, 0x3703, 0xA179, 0x3726, 0x1985, 0x3740, 0xD603, 0x3756, 0xAE5C, 0x3769, 0x269A, 0x3779, 0x2674, 0x3783, 0xA19B, 0x3789, 0xF17B, 0x378F, 0xA735, 0x3794, 0xDDA7, 0x3799, 0xA93E, 0x379E, 0x19D1, 0x37A2, 0x3BED, 0x37A6, 0x19B9, 0x37A9, 0xBB85, 0x37AD, 0x281F, 0x37B0, 0x6554, 0x37B3, 0x77FF, 0x37B6, 0x6449, 0x37B9, 0x2DBF, 0x37BB, 0xD77C, 0x37BE, 0x6436, 0x37C0, 0xD64A, 0x37C3, 0x2FCD, 0x37C5, 0x729C, 0x37C7, 0xA05B, 0x37C9, 0xBA8F, 0x37CB, 0xC27C, 0x37CD, 0xB962, 0x37CF, 0xA04E, 0x37D1, 0x783C, 0x37D3, 0x4214, 0x37D4, 0xFEA6, 0x37D6, 0xAEB4, 0x37D8, 0x52E6, 0x37D9, 0xEBE9, 0x37DB, 0x7A4A, 0x37DC, 0xFE94, 0x37DE, 0x7949, 0x37DF, 0xEADE, 0x37E1, 0x53C0, 0x37E2, 0xB453, 0x37E4, 0x0CFF, 0x37E5, 0x5E11, 0x37E6, 0xA7EB, 0x37E7, 0xEACB, 0x37E9, 0x2708, 0x37EA, 0x5CDF, 0x37EB, 0x8C97, 0x37EC, 0xB667, 0x37ED, 0xDA86, 0x37EE, 0xF937, 0x37F0, 0x129F, 0x37F1, 0x26FB, 0x37F2, 0x366C, 0x37F3, 0x4129, 0x37F4, 0x4753, 0x37F5, 0x491C, 0x37F6, 0x4699, 0x37F7, 0x3FFC, 0x37F8, 0x3561, 0x37F9, 0x26E8, 0x37FA, 0x14B2, 0x37FA, 0xFEDC, 0x37FB, 0xE57A, 0x37FC, 0xC8B4, 0x37FD, 0xA899, 0x37FE, 0x8546, 0x37FF, 0x5ED0, 0x3800, 0x1AAA, 0x3800, 0x8470, 0x3800, 0xECC6, 0x3801, 0x53B4, 0x3801, 0xB944, 0x3802, 0x1D83, 0x3802, 0x8075, 0x3802, 0xE225, 0x3803, 0x429C, 0x3803, 0xA1E0, 0x3803, 0xFFF7, 0x3804, 0x5CE9, 0x3804, 0xB8C2, 0x3805, 0x1380, 0x3805, 0x6D30, 0x3805, 0xC5D9, 0x3806, 0x1D7C, 0x3806, 0x7423, 0x3806, 0xC9D2, 0x3807, 0x1E8D, 0x3807, 0x725B, 0x3807, 0xC542, 0x3808, 0x1748, 0x3808, 0x686D, 0x3808, 0xB8B8, 0x3809, 0x0830, 0x3809, 0x56D7, 0x3809, 0xA4B2, 0x3809, 0xF1C5, 0x380A, 0x3E12, 0x380A, 0x899E, 0x380A, 0xD470, 0x380B, 0x1E86, 0x380B, 0x67E7, 0x380B, 0xB098, 0x380B, 0xF89A, 0x380C, 0x3FEE, 0x380C, 0x869D, 0x380C, 0xCCA5, 0x380D, 0x120A, 0x380D, 0x56D0, 0x380D, 0x9AFC, 0x380D, 0xDE8B, 0x380E, 0x2183, 0x380E, 0x63EA, 0x380E, 0xA5BC, 0x380E, 0xE6FF, 0x380F, 0x27B6, 0x380F, 0x67E1, 0x380F, 0xA785, 0x380F, 0xE6A2, 0x3810, 0x253B, 0x3810, 0x6353, 0x3810, 0xA0ED, 0x3810, 0xDE06, 0x3811, 0x1AA5, 0x3811, 0x56C9, 0x3811, 0x9277, 0x3811, 0xCDAF, 0x3812, 0x0873, 0x3812, 0x42C3, 0x3812, 0x7CA3, 0x3812, 0xB615, 0x3812, 0xEF16, 0x3813, 0x27AF, 0x3813, 0x5FDD, 0x3813, 0x97A2, 0x3813, 0xCF01, 0x3814, 0x05F8, 0x3814, 0x3C8F, 0x3814, 0x72C0, 0x3814, 0xA891, 0x3814, 0xDDFF, 0x3815, 0x1312, 0x3815, 0x47C5, 0x3815, 0x7C1E, 0x3815, 0xB01B, 0x3815, 0xE3C1, 0x3816, 0x170C, 0x3816, 0x49FF, 0x3816, 0x7C9C, 0x3816, 0xAEE5, 0x3816, 0xE0DB, 0x3817, 0x127C, 0x3817, 0x43CD, 0x3817, 0x74CE, 0x3817, 0xA57D, 0x3817, 0xD5DF, 0x3818, 0x05F4, 0x3818, 0x35BA, 0x3818, 0x6538, 0x3818, 0x9469, 0x3818, 0xC34F, 0x3818, 0xF1EC, 0x3819, 0x2041, 0x3819, 0x4E51, 0x3819, 0x7C1A, 0x3819, 0xA99B, 0x3819, 0xD6DA, 0x381A, 0x03D2, 0x381A, 0x308B, 0x381A, 0x5CFF, 0x381A, 0x8931, 0x381A, 0xB524, 0x381A, 0xE0D4, 0x381B, 0x0C49, 0x381B, 0x377B, 0x381B, 0x6271, 0x381B, 0x8D2A, 0x381B, 0xB7A7, 0x381B, 0xE1E5, 0x381C, 0x0BEC, 0x381C, 0x35B6, 0x381C, 0x5F46, 0x381C, 0x889D, 0x381C, 0xB1BA, 0x381C, 0xDAA0, 0x381D, 0x034F, 0x381D, 0x2BC8, 0x381D, 0x5409, 0x381D, 0x7C13, 0x381D, 0xA3E9, 0x381D, 0xCB8B, 0x381D, 0xF2F8, 0x381E, 0x1A32, 0x381E, 0x4137, 0x381E, 0x680D, 0x381E, 0x8EAC, 0x381E, 0xB51D, 0x381E, 0xDB5C, 0x381F, 0x016C, 0x381F, 0x2749, 0x381F, 0x4CF9, 0x381F, 0x7278, 0x381F, 0x97CA, 0x381F, 0xBCEC, 0x381F, 0xE1E1, 0x3820, 0x06A8, 0x3820, 0x2B42, 0x3820, 0x4FB1, 0x3820, 0x73F3, 0x3820, 0x980A, 0x3820, 0xBBF5, 0x3820, 0xDFB3, 0x3821, 0x0349, 0x3821, 0x26B5, 0x3821, 0x49F8, 0x3821, 0x6D0F, 0x3821, 0x9000, 0x3821, 0xB2C7, 0x3821, 0xD565, 0x3821, 0xF7DC, 0x3822, 0x1A2B, 0x3822, 0x3C55, 0x3822, 0x5E57, 0x3822, 0x8032, 0x3822, 0xA1E6, 0x3822, 0xC377, 0x3822, 0xE4E1, 0x3823, 0x0625, 0x3823, 0x2745, 0x3823, 0x4841, 0x3823, 0x6917, 0x3823, 0x89CC, 0x3823, 0xAA5A, 0x3823, 0xCAC7, 0x3823, 0xEB11, 0x3824, 0x0B39, 0x3824, 0x2B3E, 0x3824, 0x4B1F, 0x3824, 0x6AE2, 0x3824, 0x8A81, 0x3824, 0xAA00, 0x3824, 0xC95D, 0x3824, 0xE899, 0x3825, 0x07B4, 0x3825, 0x26B1, 0x3825, 0x458D, 0x3825, 0x6448, 0x3825, 0x82E5, 0x3825, 0xA163, 0x3825, 0xBFC1, 0x3825, 0xDE03, 0x3825, 0xFC24, 0x3826, 0x1A27, 0x3826, 0x380B, 0x3826, 0x55D5, 0x3826, 0x737F, 0x3826, 0x910C, 0x3826, 0xAE7B, 0x3826, 0xCBCD, 0x3826, 0xE905, 0x3827, 0x0621, 0x3827, 0x231F, 0x3827, 0x4001, 0x3827, 0x5CC5, 0x3827, 0x7970, 0x3827, 0x9600, 0x3827, 0xB274, 0x3827, 0xCECD, 0x3827, 0xEB0D, 0x3828, 0x0731, 0x3828, 0x233A, 0x3828, 0x3F2B, 0x3828, 0x5B00, 0x3828, 0x76BC, 0x3828, 0x925F, 0x3828, 0xADE7, 0x3828, 0xC956, 0x3828, 0xE4AC, 0x3828, 0xFFED, 0x3829, 0x1B12, 0x3829, 0x361E, 0x3829, 0x5111, 0x3829, 0x6BEF, 0x3829, 0x86B1, 0x3829, 0xA15D, 0x3829, 0xBBF3, 0x3829, 0xD670, 0x3829, 0xF0D4, 0x382A, 0x0B23, 0x382A, 0x255B, 0x382A, 0x3F7B, 0x382A, 0x5985, 0x382A, 0x7379, 0x382A, 0x8D57, 0x382A, 0xA71E, 0x382A, 0xC0CE, 0x382A, 0xDA69, 0x382A, 0xF3EC, 0x382B, 0x0D5C, 0x382B, 0x26B6, 0x382B, 0x3FFA, 0x382B, 0x592B, 0x382B, 0x7245, 0x382B, 0x8B4A, 0x382B, 0xA439, 0x382B, 0xBD14, 0x382B, 0xD5DC, 0x382B, 0xEE8E, 0x382C, 0x072D, 0x382C, 0x1FB6, 0x382C, 0x382C, 0x382C, 0x508F, 0x382C, 0x68DE, 0x382C, 0x8117, 0x382C, 0x993D, 0x382C, 0xB153, 0x382C, 0xC952, 0x382C, 0xE13E, 0x382C, 0xF91A, 0x382D, 0x10E0, 0x382D, 0x2895, 0x382D, 0x4037, 0x382D, 0x57C6, 0x382D, 0x6F42, 0x382D, 0x86AD, 0x382D, 0x9E05, 0x382D, 0xB54C, 0x382D, 0xCC80, 0x382D, 0xE3A1, 0x382D, 0xFAB1, 0x382E, 0x11AE, 0x382E, 0x289B, 0x382E, 0x3F77, 0x382E, 0x5643, 0x382E, 0x6CFB, 0x382E, 0x83A3, 0x382E, 0x9A38, 0x382E, 0xB0BF, 0x382E, 0xC733, 0x382E, 0xDD96, 0x382E, 0xF3E9, 0x382F, 0x0A2B, 0x382F, 0x205C, 0x382F, 0x3680, 0x382F, 0x4C91, 0x382F, 0x6291, 0x382F, 0x7884, 0x382F, 0x8E63, 0x382F, 0xA435, 0x382F, 0xB9F6, 0x382F, 0xCFA6, 0x382F, 0xE549, 0x382F, 0xFADB, 0x3830, 0x105D, 0x3830, 0x25D1, 0x3830, 0x3B35, 0x3830, 0x508B, 0x3830, 0x65D0, 0x3830, 0x7B05, 0x3830, 0x902F, 0x3830, 0xA545, 0x3830, 0xBA51, 0x3830, 0xCF4C, 0x3830, 0xE437, 0x3830, 0xF916, 0x3831, 0x0DE5, 0x3831, 0x22A7, 0x3831, 0x3758, 0x3831, 0x4BFE, 0x3831, 0x6093, 0x3831, 0x751B, 0x3831, 0x8995, 0x3831, 0x9E01, 0x3831, 0xB25F, 0x3831, 0xC6B0, 0x3831, 0xDAF3, 0x3831, 0xEF28, 0x3832, 0x034F, 0x3832, 0x1769, 0x3832, 0x2B75, 0x3832, 0x3F73, 0x3832, 0x5364, 0x3832, 0x6749, 0x3832, 0x7B21, 0x3832, 0x8EEB, 0x3832, 0xA2A7, 0x3832, 0xB659, 0x3832, 0xC9FC, 0x3832, 0xDD92, 0x3832, 0xF11D, 0x3833, 0x049A, 0x3833, 0x1809, 0x3833, 0x2B6D, 0x3833, 0x3EC4, 0x3833, 0x520F, 0x3833, 0x654D, 0x3833, 0x787D, 0x3833, 0x8BA5, 0x3833, 0x9EBC, 0x3833, 0xB1CB, 0x3833, 0xC4CD, 0x3833, 0xD7C0, 0x3833, 0xEAAC, 0x3833, 0xFD89, 0x3834, 0x1059, 0x3834, 0x231E, 0x3834, 0x35D8, 0x3834, 0x4887, 0x3834, 0x5B2B, 0x3834, 0x6DC1, 0x3834, 0x804C, 0x3834, 0x92CC, 0x3834, 0xA541, 0x3834, 0xB7AB, 0x3834, 0xCA0B, 0x3834, 0xDC5C, 0x3834, 0xEEA5, 0x3835, 0x00E1, 0x3835, 0x1311, 0x3835, 0x2539, 0x3835, 0x3754, 0x3835, 0x4966, 0x3835, 0x5B6A, 0x3835, 0x6D67, 0x3835, 0x7F55, 0x3835, 0x913B, 0x3835, 0xA316, 0x3835, 0xB4E7, 0x3835, 0xC6AC, 0x3835, 0xD866, 0x3835, 0xEA18, 0x3835, 0xFBBC, 0x3836, 0x0D58, 0x3836, 0x1EE9, 0x3836, 0x3072, 0x3836, 0x41ED, 0x3836, 0x5360, 0x3836, 0x64CA, 0x3836, 0x7627, 0x3836, 0x877C, 0x3836, 0x98C8, 0x3836, 0xAA07, 0x3836, 0xBB40, 0x3836, 0xCC6B, 0x3836, 0xDD8E, 0x3836, 0xEEA6, 0x3836, 0xFFB6, 0x3837, 0x10BD, 0x3837, 0x21B7, 0x3837, 0x32AB, 0x3837, 0x4392, 0x3837, 0x5473, 0x3837, 0x6549, 0x3837, 0x7614, 0x3837, 0x86D7, 0x3837, 0x9792, 0x3837, 0xA841, 0x3837, 0xB8E9, 0x3837, 0xC988, 0x3837, 0xDA1C, 0x3837, 0xEAA8, 0x3837, 0xFB29, 0x3838, 0x0BA1, 0x3838, 0x1C12, 0x3838, 0x2C7A, 0x3838, 0x3CD7, 0x3838, 0x4D2F, 0x3838, 0x5D7B, 0x3838, 0x6DBD, 0x3838, 0x7DF9, 0x3838, 0x8E2A, 0x3838, 0x9E53, 0x3838, 0xAE74, 0x3838, 0xBE8C, 0x3838, 0xCE9C, 0x3838, 0xDEA2, 0x3838, 0xEEA1, 0x3838, 0xFE96, 0x3839, 0x0E82, 0x3839, 0x1E67, 0x3839, 0x2E43, 0x3839, 0x3E19, 0x3839, 0x4DE4, 0x3839, 0x5DA8, 0x3839, 0x6D63, 0x3839, 0x7D15, 0x3839, 0x8CC0, 0x3839, 0x9C62, 0x3839, 0xABFC, 0x3839, 0xBB8E, 0x3839, 0xCB17, 0x3839, 0xDA98, 0x3839, 0xEA14, 0x3839, 0xF985, 0x383A, 0x08F0, 0x383A, 0x1850, 0x383A, 0x27AB, 0x383A, 0x36FE, 0x383A, 0x4648, 0x383A, 0x558A, 0x383A, 0x64C6, 0x383A, 0x73F8, 0x383A, 0x8324, 0x383A, 0x9248, 0x383A, 0xA166, 0x383A, 0xB079, 0x383A, 0xBF87, 0x383A, 0xCE8D, 0xBF80, 0x0000, 0x0000, 0x0000, 0x36C1, 0xC874, 0x3719, 0x91D6, 0x3741, 0xC897, 0x3760, 0xF9D6, 0x377A, 0x7647, 0x3788, 0x0153, 0x3791, 0x568D, 0x3799, 0x9207, 0x37A0, 0xEF37, 0x37A7, 0x9893, 0x37AD, 0xAD70, 0x37B3, 0x45A3, 0x37B8, 0x739F, 0x37BD, 0x461A, 0x37C1, 0xC8E4, 0x37C6, 0x05A1, 0x37CA, 0x045E, 0x37CD, 0xCBC4, 0x37D1, 0x618F, 0x37D4, 0xCA8D, 0x37D8, 0x0AF0, 0x37DB, 0x264D, 0x37DE, 0x1FD2, 0x37E0, 0xFA3F, 0x37E3, 0xB805, 0x37E6, 0x5B4C, 0x37E8, 0xE607, 0x37EB, 0x59E9, 0x37ED, 0xB882, 0x37F0, 0x0333, 0x37F2, 0x3B4C, 0x37F4, 0x61E4, 0x37F6, 0x7808, 0x37F8, 0x7EB7, 0x37FA, 0x76C6, 0x37FC, 0x6105, 0x37FE, 0x3E31, 0x3800, 0x077C, 0x3800, 0xE9FE, 0x3801, 0xC6E7, 0x3802, 0x9E7D, 0x3803, 0x7102, 0x3804, 0x3EAF, 0x3805, 0x07BE, 0x3805, 0xCC60, 0x3806, 0x8CC7, 0x3807, 0x4922, 0x3808, 0x019A, 0x3808, 0xB659, 0x3809, 0x6781, 0x380A, 0x153C, 0x380A, 0xBFA6, 0x380B, 0x66DF, 0x380C, 0x0B09, 0x380C, 0xAC3D, 0x380D, 0x4A98, 0x380D, 0xE630, 0x380E, 0x7F1F, 0x380F, 0x157D, 0x380F, 0xA95D, 0x3810, 0x3AD6, 0x3810, 0xC9FD, 0x3811, 0x56E2, 0x3811, 0xE197, 0x3812, 0x6A2E, 0x3812, 0xF0B8, 0x3813, 0x7543, 0x3813, 0xF7DF, 0x3814, 0x7898, 0x3814, 0xF77F, 0x3815, 0x74A2, 0x3815, 0xF007, 0x3816, 0x69C2, 0x3816, 0xE1D8, 0x3817, 0x5857, 0x3817, 0xCD4B, 0x3818, 0x40BB, 0x3818, 0xB2B3, 0x3819, 0x233D, 0x3819, 0x9261, 0x381A, 0x0026, 0x381A, 0x6C99, 0x381A, 0xD7BF, 0x381B, 0x419E, 0x381B, 0xAA43, 0x381C, 0x11B0, 0x381C, 0x77F0, 0x381C, 0xDD08, 0x381D, 0x40FC, 0x381D, 0xA3D8, 0x381E, 0x059F, 0x381E, 0x6658, 0x381E, 0xC609, 0x381F, 0x24B5, 0x381F, 0x8264, 0x381F, 0xDF19, 0x3820, 0x3ADC, 0x3820, 0x95B0, 0x3820, 0xEF9A, 0x3821, 0x48A0, 0x3821, 0xA0C5, 0x3821, 0xF80E, 0x3822, 0x4E7E, 0x3822, 0xA41C, 0x3822, 0xF8E7, 0x3823, 0x4CEA, 0x3823, 0xA024, 0x3823, 0xF298, 0x3824, 0x444E, 0x3824, 0x9544, 0x3824, 0xE581, 0x3825, 0x3507, 0x3825, 0x83D9, 0x3825, 0xD1FC, 0x3826, 0x1F72, 0x3826, 0x6C40, 0x3826, 0xB864, 0x3827, 0x03E2, 0x3827, 0x4EC2, 0x3827, 0x98FF, 0x3827, 0xE2A2, 0x3828, 0x2BAB, 0x3828, 0x741D, 0x3828, 0xBBF8, 0x3829, 0x0341, 0x3829, 0x49FB, 0x3829, 0x9026, 0x3829, 0xD5C5, 0x382A, 0x1ADB, 0x382A, 0x5F6A, 0x382A, 0xA375, 0x382A, 0xE6F9, 0x382B, 0x29FD, 0x382B, 0x6C81, 0x382B, 0xAE87, 0x382B, 0xF015, 0x382C, 0x3124, 0x382C, 0x71BC, 0x382C, 0xB1DF, 0x382C, 0xF18E, 0x382D, 0x30C7, 0x382D, 0x6F8F, 0x382D, 0xADE9, 0x382D, 0xEBD2, 0x382E, 0x294E, 0x382E, 0x6661, 0x382E, 0xA309, 0x382E, 0xDF48, 0x382F, 0x1B1F, 0x382F, 0x5693, 0x382F, 0x919F, 0x382F, 0xCC4A, 0x3830, 0x0692, 0x3830, 0x407A, 0x3830, 0x7A02, 0x3830, 0xB330, 0x3830, 0xEBFD, 0x3831, 0x246F, 0x3831, 0x5C87, 0x3831, 0x9444, 0x3831, 0xCBA9, 0x3832, 0x02B8, 0x3832, 0x3970, 0x3832, 0x6FD3, 0x3832, 0xA5E3, 0x3832, 0xDB9E, 0x3833, 0x1106, 0x3833, 0x461F, 0x3833, 0x7AE8, 0x3833, 0xAF61, 0x3833, 0xE38B, 0x3834, 0x176A, 0x3834, 0x4AFA, 0x3834, 0x7E3F, 0x3834, 0xB13A, 0x3834, 0xE3E8, 0x3835, 0x1652, 0x3835, 0x4871, 0x3835, 0x7A46, 0x3835, 0xABD9, 0x3835, 0xDD22, 0x3836, 0x0E29, 0x3836, 0x3EEB, 0x3836, 0x6F69, 0x3836, 0x9FA2, 0x3836, 0xCF9B, 0x3836, 0xFF53, 0x3837, 0x2EC8, 0x3837, 0x5DFF, 0x3837, 0x8CF6, 0x3837, 0xBBAE, 0x3837, 0xEA27, 0x3838, 0x1863, 0x3838, 0x4663, 0x3838, 0x7426, 0x3838, 0xA1B0, 0x3838, 0xCEFA, 0x3838, 0xFC0D, 0x3839, 0x28E7, 0x3839, 0x5584, 0x3839, 0x81EA, 0x3839, 0xAE19, 0x3839, 0xDA0F, 0x383A, 0x05D0, 0x383A, 0x315B, 0x383A, 0x5CAB, 0x383A, 0x87CA, 0x383A, 0xB2B2, 0x383A, 0xDD66, 0x383B, 0x07E9, 0x383B, 0x3234, 0x383B, 0x5C4E, 0x383B, 0x8637, 0x383B, 0xAFEB, 0x383B, 0xD970, 0x383C, 0x02C2, 0x383C, 0x2BE4, 0x383C, 0x54D8, 0x383C, 0x7D9A, 0x383C, 0xA62B, 0x383C, 0xCE90, 0x383C, 0xF6C6, 0x383D, 0x1ECE, 0x383D, 0x46A9, 0x383D, 0x6E53, 0x383D, 0x95D4, 0x383D, 0xBD29, 0x383D, 0xE44F, 0x383E, 0x0B4C, 0x383E, 0x321D, 0x383E, 0x58C1, 0x383E, 0x7F3D, 0x383E, 0xA58D, 0x383E, 0xCBB3, 0x383E, 0xF1B0, 0x383F, 0x1784, 0x383F, 0x3D32, 0x383F, 0x62B3, 0x383F, 0x880E, 0x383F, 0xAD43, 0x383F, 0xD24E, 0x383F, 0xF733, 0x3840, 0x1BF1, 0x3840, 0x4089, 0x3840, 0x64FA, 0x3840, 0x8945, 0x3840, 0xAD6A, 0x3840, 0xD16A, 0x3840, 0xF547, 0x3841, 0x18FE, 0x3841, 0x3C90, 0x3841, 0x5FFF, 0x3841, 0x834A, 0x3841, 0xA672, 0x3841, 0xC976, 0x3841, 0xEC56, 0x3842, 0x0F15, 0x3842, 0x31B0, 0x3842, 0x542A, 0x3842, 0x7684, 0x3842, 0x98B9, 0x3842, 0xBACE, 0x3842, 0xDCC2, 0x3842, 0xFE97, 0x3843, 0x2049, 0x3843, 0x41D9, 0x3843, 0x634C, 0x3843, 0x84A0, 0x3843, 0xA5D1, 0x3843, 0xC6E6, 0x3843, 0xE7DA, 0x3844, 0x08AD, 0x3844, 0x2964, 0x3844, 0x49FB, 0x3844, 0x6A76, 0x3844, 0x8AD0, 0x3844, 0xAB0E, 0x3844, 0xCB2C, 0x3844, 0xEB2E, 0x3845, 0x0B15, 0x3845, 0x2ADD, 0x3845, 0x4A87, 0x3845, 0x6A16, 0x3845, 0x8989, 0x3845, 0xA8E1, 0x3845, 0xC81A, 0x3845, 0xE738, 0x3846, 0x063B, 0x3846, 0x2522, 0x3846, 0x43F0, 0x3846, 0x62A0, 0x3846, 0x8137, 0x3846, 0x9FB0, 0x3846, 0xBE13, 0x3846, 0xDC58, 0x3846, 0xFA87, 0x3847, 0x1897, 0x3847, 0x3692, 0x3847, 0x5471, 0x3847, 0x7238, 0x3847, 0x8FE2, 0x3847, 0xAD77, 0x3847, 0xCAF1, 0x3847, 0xE851, 0x3848, 0x059C, 0x3848, 0x22CB, 0x3848, 0x3FE4, 0x3848, 0x5CE5, 0x3848, 0x79CD, 0x3848, 0x969C, 0x3848, 0xB355, 0x3848, 0xCFF8, 0x3848, 0xEC7F, 0x3849, 0x08F3, 0x3849, 0x254F, 0x3849, 0x4192, 0x3849, 0x5DC1, 0x3849, 0x79D8, 0x3849, 0x95D9, 0x3849, 0xB1C1, 0x3849, 0xCD96, 0x3849, 0xE955, 0x384A, 0x04FB, 0x384A, 0x208D, 0x384A, 0x3C0A, 0x384A, 0x5771, 0x384A, 0x72C2, 0x384A, 0x8DFD, 0x384A, 0xA925, 0x384A, 0xC436, 0x384A, 0xDF35, 0x384A, 0xFA1D, 0x384B, 0x14F0, 0x384B, 0x2FAF, 0x384B, 0x4A5B, 0x384B, 0x64F1, 0x384B, 0x7F71, 0x384B, 0x99E0, 0x384B, 0xB43A, 0x384B, 0xCE80, 0x384B, 0xE8B3, 0x384C, 0x02D3, 0x384C, 0x1CDF, 0x384C, 0x36D6, 0x384C, 0x50BC, 0x384C, 0x6A8F, 0x384C, 0x844C, 0x384C, 0x9DF8, 0x384C, 0xB791, 0x384C, 0xD11A, 0x384C, 0xEA8C, 0x384D, 0x03EE, 0x384D, 0x1D3D, 0x384D, 0x3679, 0x384D, 0x4FA4, 0x384D, 0x68BC, 0x384D, 0x81C3, 0x384D, 0x9AB8, 0x384D, 0xB39B, 0x384D, 0xCC6C, 0x384D, 0xE52C, 0x384D, 0xFDDB, 0x384E, 0x1677, 0x384E, 0x2F03, 0x384E, 0x477B, 0x384E, 0x5FE6, 0x384E, 0x783E, 0x384E, 0x9085, 0x384E, 0xA8BB, 0x384E, 0xC0E1, 0x384E, 0xD8F7, 0x384E, 0xF0FC, 0x384F, 0x08F0, 0x384F, 0x20D4, 0x384F, 0x38A8, 0x384F, 0x506B, 0x384F, 0x681D, 0x384F, 0x7FBF, 0x384F, 0x9754, 0x384F, 0xAED8, 0x384F, 0xC64B, 0x384F, 0xDDAE, 0x384F, 0xF503, 0x3850, 0x0C47, 0x3850, 0x237B, 0x3850, 0x3AA2, 0x3850, 0x51B8, 0x3850, 0x68C0, 0x3850, 0x7FB8, 0x3850, 0x96A1, 0x3850, 0xAD7B, 0x3850, 0xC446, 0x3850, 0xDB04, 0x3850, 0xF1B2, 0x3851, 0x084F, 0x3851, 0x1EE1, 0x3851, 0x3562, 0x3851, 0x4BD6, 0x3851, 0x623C, 0x3851, 0x7891, 0x3851, 0x8ED9, 0x3851, 0xA513, 0x3851, 0xBB3F, 0x3851, 0xD15E, 0x3851, 0xE76E, 0x3851, 0xFD71, 0x3852, 0x1367, 0x3852, 0x294B, 0x3852, 0x3F25, 0x3852, 0x54F1, 0x3852, 0x6AAF, 0x3852, 0x8060, 0x3852, 0x9603, 0x3852, 0xAB98, 0x3852, 0xC11F, 0x3852, 0xD69B, 0x3852, 0xEC07, 0x3853, 0x0168, 0x3853, 0x16BE, 0x3853, 0x2C03, 0x3853, 0x413E, 0x3853, 0x566A, 0x3853, 0x6B89, 0x3853, 0x809D, 0x3853, 0x95A6, 0x3853, 0xAA9E, 0x3853, 0xBF8B, 0x3853, 0xD46E, 0x3853, 0xE942, 0x3853, 0xFE09, 0x3854, 0x12C5, 0x3854, 0x2776, 0x3854, 0x3C19, 0x3854, 0x50AF, 0x3854, 0x653C, 0x3854, 0x79BB, 0x3854, 0x8E2D, 0x3854, 0xA294, 0x3854, 0xB6EF, 0x3854, 0xCB40, 0x3854, 0xDF83, 0x3854, 0xF3BB, 0x3855, 0x07E8, 0x3855, 0x1C07, 0x3855, 0x301B, 0x3855, 0x4427, 0x3855, 0x5825, 0x3855, 0x6C16, 0x3855, 0x7FFE, 0x3855, 0x93DB, 0x3855, 0xA7AB, 0x3855, 0xBB6F, 0x3855, 0xCF2C, 0x3855, 0xE2DA, 0x3855, 0xF67E, 0x3856, 0x0A16, 0x3856, 0x1DA6, 0x3856, 0x3129, 0x3856, 0x44A1, 0x3856, 0x5810, 0x3856, 0x6B71, 0x3856, 0x7ECB, 0x3856, 0x9216, 0x3856, 0xA55A, 0x3856, 0xB892, 0x3856, 0xCBBF, 0x3856, 0xDEE4, 0x3856, 0xF1FC, 0x3857, 0x050B, 0x3857, 0x180F, 0x3857, 0x2B08, 0x3857, 0x3DF6, 0x3857, 0x50DC, 0x3857, 0x63B7, 0x3857, 0x7687, 0x3857, 0x894E, 0x3857, 0x9C0B, 0x3857, 0xAEBC, 0x3857, 0xC166, 0x3857, 0xD404, 0x3857, 0xE69A, 0x3857, 0xF923, 0x3858, 0x0BA6, 0x3858, 0x1E1D, 0x3858, 0x308A, 0x3858, 0x42EC, 0x3858, 0x5549, 0x3858, 0x6797, 0x3858, 0x79DE, 0x3858, 0x8C1C, 0x3858, 0x9E4F, 0x3858, 0xB07A, 0x3858, 0xC29D, 0x3858, 0xD4B4, 0x3858, 0xE6C1, 0x3858, 0xF8C6, 0x3859, 0x0AC2, 0x3859, 0x1CB6, 0x3859, 0x2E9F, 0x3859, 0x407F, 0x3859, 0x5255, 0x3859, 0x6423, 0x3859, 0x75E8, 0x3859, 0x87A5, 0x3859, 0x9957, 0x3859, 0xAB01, 0x3859, 0xBCA2, 0x3859, 0xCE3B, 0x3859, 0xDFCA, 0x3859, 0xF150, 0xBF80, 0x0000, 0x0000, 0x0000, 0x36E8, 0x8A61, 0x3738, 0x48D3, 0x3768, 0x8A91, 0x3786, 0xFC78, 0x3796, 0x4729, 0x37A3, 0x34FE, 0x37AE, 0x6819, 0x37B8, 0x490F, 0x37C1, 0x1F4E, 0x37C9, 0x1DC0, 0x37D0, 0x6A04, 0x37D7, 0x20AB, 0x37DD, 0x57DE, 0x37E3, 0x213F, 0x37E8, 0x8AFF, 0x37ED, 0xA0B7, 0x37F2, 0x6BFB, 0x37F6, 0xF4E3, 0x37FB, 0x423F, 0x37FF, 0x59DA, 0x3801, 0xA05B, 0x3803, 0x7D95, 0x3805, 0x467D, 0x3806, 0xFCC0, 0x3808, 0xA1D1, 0x380A, 0x36FE, 0x380B, 0xBD6D, 0x380D, 0x3629, 0x380E, 0xA220, 0x3810, 0x0227, 0x3811, 0x5700, 0x3812, 0xA15C, 0x3813, 0xE1DC, 0x3815, 0x1910, 0x3816, 0x4781, 0x3817, 0x6DA8, 0x3818, 0x8BF8, 0x3819, 0xA2D5, 0x381A, 0xB2A6, 0x381B, 0xBBBE, 0x381C, 0xBE74, 0x381D, 0xBB12, 0x381E, 0xB1E2, 0x381F, 0xA327, 0x3820, 0x8F1E, 0x3821, 0x7601, 0x3822, 0x5807, 0x3823, 0x3566, 0x3824, 0x0E49, 0x3824, 0xE2E3, 0x3825, 0xB35D, 0x3826, 0x7FDB, 0x3827, 0x488A, 0x3828, 0x0D87, 0x3828, 0xCEF9, 0x3829, 0x8CFE, 0x382A, 0x47B8, 0x382A, 0xFF3E, 0x382B, 0xB3AF, 0x382C, 0x6524, 0x382D, 0x13B6, 0x382D, 0xBF7D, 0x382E, 0x688F, 0x382F, 0x0F02, 0x382F, 0xB2EB, 0x3830, 0x545D, 0x3830, 0xF36B, 0x3831, 0x9027, 0x3832, 0x2AA1, 0x3832, 0xC2EB, 0x3833, 0x5912, 0x3833, 0xED27, 0x3834, 0x7F39, 0x3835, 0x0F54, 0x3835, 0x9D89, 0x3836, 0x29E0, 0x3836, 0xB469, 0x3837, 0x3D2C, 0x3837, 0xC437, 0x3838, 0x4996, 0x3838, 0xCD50, 0x3839, 0x4F73, 0x3839, 0xD008, 0x383A, 0x4F13, 0x383A, 0xCCA6, 0x383B, 0x48C3, 0x383B, 0xC376, 0x383C, 0x3CC5, 0x383C, 0xB4BB, 0x383D, 0x2B5B, 0x383D, 0xA0B2, 0x383E, 0x14C1, 0x383E, 0x8795, 0x383E, 0xF932, 0x383F, 0x699D, 0x383F, 0xD8DD, 0x3840, 0x46FA, 0x3840, 0xB3F9, 0x3841, 0x1FE0, 0x3841, 0x8AB3, 0x3841, 0xF479, 0x3842, 0x5D38, 0x3842, 0xC4F4, 0x3843, 0x2BB0, 0x3843, 0x9175, 0x3843, 0xF642, 0x3844, 0x5A21, 0x3844, 0xBD16, 0x3845, 0x1F21, 0x3845, 0x8048, 0x3845, 0xE093, 0x3846, 0x4002, 0x3846, 0x9E98, 0x3846, 0xFC5D, 0x3847, 0x5951, 0x3847, 0xB577, 0x3848, 0x10D7, 0x3848, 0x6B71, 0x3848, 0xC548, 0x3849, 0x1E5F, 0x3849, 0x76BE, 0x3849, 0xCE61, 0x384A, 0x254F, 0x384A, 0x7B8B, 0x384A, 0xD116, 0x384B, 0x25F7, 0x384B, 0x7A2B, 0x384B, 0xCDB7, 0x384C, 0x209F, 0x384C, 0x72E4, 0x384C, 0xC487, 0x384D, 0x1590, 0x384D, 0x65FA, 0x384D, 0xB5CC, 0x384E, 0x0507, 0x384E, 0x53AE, 0x384E, 0xA1C3, 0x384E, 0xEF49, 0x384F, 0x3C3E, 0x384F, 0x88A9, 0x384F, 0xD488, 0x3850, 0x1FE0, 0x3850, 0x6AAF, 0x3850, 0xB4FC, 0x3850, 0xFEC6, 0x3851, 0x480E, 0x3851, 0x90D8, 0x3851, 0xD924, 0x3852, 0x20F4, 0x3852, 0x684A, 0x3852, 0xAF28, 0x3852, 0xF58D, 0x3853, 0x3B7F, 0x3853, 0x80FD, 0x3853, 0xC608, 0x3854, 0x0AA2, 0x3854, 0x4ECB, 0x3854, 0x9286, 0x3854, 0xD5D6, 0x3855, 0x18BB, 0x3855, 0x5B35, 0x3855, 0x9D46, 0x3855, 0xDEF2, 0x3856, 0x2035, 0x3856, 0x6112, 0x3856, 0xA18F, 0x3856, 0xE1A7, 0x3857, 0x215E, 0x3857, 0x60B5, 0x3857, 0x9FAC, 0x3857, 0xDE48, 0x3858, 0x1C84, 0x3858, 0x5A65, 0x3858, 0x97EC, 0x3858, 0xD517, 0x3859, 0x11EB, 0x3859, 0x4E67, 0x3859, 0x8A8E, 0x3859, 0xC65C, 0x385A, 0x01D9, 0x385A, 0x3CFD, 0x385A, 0x77D2, 0x385A, 0xB254, 0x385A, 0xEC86, 0x385B, 0x2666, 0x385B, 0x5FF6, 0x385B, 0x9939, 0x385B, 0xD22D, 0x385C, 0x0AD3, 0x385C, 0x4330, 0x385C, 0x7B3F, 0x385C, 0xB307, 0x385C, 0xEA82, 0x385D, 0x21B6, 0x385D, 0x589F, 0x385D, 0x8F41, 0x385D, 0xC59E, 0x385D, 0xFBB3, 0x385E, 0x3184, 0x385E, 0x6710, 0x385E, 0x9C58, 0x385E, 0xD15D, 0x385F, 0x061E, 0x385F, 0x3A9F, 0x385F, 0x6EDC, 0x385F, 0xA2DA, 0x385F, 0xD698, 0x3860, 0x0A15, 0x3860, 0x3D55, 0x3860, 0x7055, 0x3860, 0xA319, 0x3860, 0xD59E, 0x3861, 0x07E7, 0x3861, 0x39F6, 0x3861, 0x6BC5, 0x3861, 0x9D5E, 0x3861, 0xCEBA, 0x3861, 0xFFDD, 0x3862, 0x30C5, 0x3862, 0x6177, 0x3862, 0x91EF, 0x3862, 0xC230, 0x3862, 0xF23A, 0x3863, 0x220A, 0x3863, 0x51A6, 0x3863, 0x810E, 0x3863, 0xB03F, 0x3863, 0xDF3C, 0x3864, 0x0E01, 0x3864, 0x3C96, 0x3864, 0x6AF6, 0x3864, 0x9924, 0x3864, 0xC71E, 0x3864, 0xF4E7, 0x3865, 0x227F, 0x3865, 0x4FE4, 0x3865, 0x7D19, 0x3865, 0xAA1C, 0x3865, 0xD6F0, 0x3866, 0x0392, 0x3866, 0x3006, 0x3866, 0x5C4E, 0x3866, 0x8865, 0x3866, 0xB44D, 0x3866, 0xE008, 0x3867, 0x0B98, 0x3867, 0x36F7, 0x3867, 0x622C, 0x3867, 0x8D35, 0x3867, 0xB80F, 0x3867, 0xE2C0, 0x3868, 0x0D45, 0x3868, 0x379F, 0x3868, 0x61CF, 0x3868, 0x8BD3, 0x3868, 0xB5AD, 0x3868, 0xDF5F, 0x3869, 0x08E7, 0x3869, 0x3246, 0x3869, 0x5B7F, 0x3869, 0x848B, 0x3869, 0xAD71, 0x3869, 0xD631, 0x3869, 0xFEC7, 0x386A, 0x2737, 0x386A, 0x4F81, 0x386A, 0x77A4, 0x386A, 0x9FA0, 0x386A, 0xC776, 0x386A, 0xEF25, 0x386B, 0x16B1, 0x386B, 0x3E19, 0x386B, 0x6558, 0x386B, 0x8C76, 0x386B, 0xB36D, 0x386B, 0xDA41, 0x386C, 0x00F3, 0x386C, 0x277F, 0x386C, 0x4DE8, 0x386C, 0x742F, 0x386C, 0x9A53, 0x386C, 0xC053, 0x386C, 0xE632, 0x386D, 0x0BF0, 0x386D, 0x318A, 0x386D, 0x5703, 0x386D, 0x7C5B, 0x386D, 0xA190, 0x386D, 0xC6A6, 0x386D, 0xEB9C, 0x386E, 0x1070, 0x386E, 0x3526, 0x386E, 0x59B8, 0x386E, 0x7E2F, 0x386E, 0xA282, 0x386E, 0xC6B7, 0x386E, 0xEACE, 0x386F, 0x0EC6, 0x386F, 0x32A0, 0x386F, 0x565A, 0x386F, 0x79F5, 0x386F, 0x9D74, 0x386F, 0xC0D2, 0x386F, 0xE415, 0x3870, 0x073A, 0x3870, 0x2A41, 0x3870, 0x4D2C, 0x3870, 0x6FF9, 0x3870, 0x92A7, 0x3870, 0xB53D, 0x3870, 0xD7B2, 0x3870, 0xFA0E, 0x3871, 0x1C4E, 0x3871, 0x3E71, 0x3871, 0x6078, 0x3871, 0x8263, 0x3871, 0xA433, 0x3871, 0xC5EA, 0x3871, 0xE783, 0x3872, 0x0903, 0x3872, 0x2A68, 0x3872, 0x4BB1, 0x3872, 0x6CE2, 0x3872, 0x8DF7, 0x3872, 0xAEF3, 0x3872, 0xCFD6, 0x3872, 0xF09E, 0x3873, 0x114E, 0x3873, 0x31E2, 0x3873, 0x525D, 0x3873, 0x72C2, 0x3873, 0x930B, 0x3873, 0xB33C, 0x3873, 0xD354, 0x3873, 0xF354, 0x3874, 0x133D, 0x3874, 0x330B, 0x3874, 0x52C3, 0x3874, 0x7262, 0x3874, 0x91EB, 0x3874, 0xB15B, 0x3874, 0xD0B3, 0x3874, 0xEFF5, 0x3875, 0x0F1E, 0x3875, 0x2E31, 0x3875, 0x4D2E, 0x3875, 0x6C12, 0x3875, 0x8AE3, 0x3875, 0xA998, 0x3875, 0xC83B, 0x3875, 0xE6C7, 0x3876, 0x053B, 0x3876, 0x239B, 0x3876, 0x41E2, 0x3876, 0x6017, 0x3876, 0x7E35, 0x3876, 0x9C3D, 0x3876, 0xBA30, 0x3876, 0xD80C, 0x3876, 0xF5D2, 0x3877, 0x1386, 0x3877, 0x3125, 0x3877, 0x4EAD, 0x3877, 0x6C23, 0x3877, 0x8981, 0x3877, 0xA6CC, 0x3877, 0xC403, 0x3877, 0xE127, 0x3877, 0xFE36, 0x3878, 0x1B2E, 0x3878, 0x3816, 0x3878, 0x54E7, 0x3878, 0x71A6, 0x3878, 0x8E51, 0x3878, 0xAAE9, 0x3878, 0xC76B, 0x3878, 0xE3DC, 0x3879, 0x003B, 0x3879, 0x1C86, 0x3879, 0x38BB, 0x3879, 0x54DF, 0x3879, 0x70F1, 0x3879, 0x8CF2, 0x3879, 0xA8DC, 0x3879, 0xC4B7, 0x3879, 0xE07E, 0x3879, 0xFC32, 0x387A, 0x17D5, 0x387A, 0x3365, 0x387A, 0x4EE2, 0x387A, 0x6A4E, 0x387A, 0x85AA, 0x387A, 0xA0F3, 0x387A, 0xBC28, 0x387A, 0xD750, 0x387A, 0xF262, 0x387B, 0x0D66, 0x387B, 0x2856, 0x387B, 0x4336, 0x387B, 0x5E03, 0x387B, 0x78C3, 0x387B, 0x936F, 0x387B, 0xAE0A, 0x387B, 0xC895, 0x387B, 0xE310, 0x387B, 0xFD77, 0x387C, 0x17D0, 0x387C, 0x3219, 0x387C, 0x4C4F, 0x387C, 0x6677, 0x387C, 0x808F, 0x387C, 0x9A96, 0x387C, 0xB48C, 0x387C, 0xCE72, 0x387C, 0xE84B, 0x387D, 0x0210, 0x387D, 0x1BC7, 0x387D, 0x3571, 0x387D, 0x4F07, 0x387D, 0x688F, 0x387D, 0x8208, 0x387D, 0x9B72, 0x387D, 0xB4CC, 0x387D, 0xCE15, 0x387D, 0xE751, 0x387E, 0x007C, 0x387E, 0x1999, 0x387E, 0x32A9, 0x387E, 0x4BA8, 0x387E, 0x6497, 0x387E, 0x7D7A, 0x387E, 0x964B, 0x387E, 0xAF10, 0x387E, 0xC7C5, 0x387E, 0xE06C, 0x387E, 0xF906, 0x387F, 0x118F, 0x387F, 0x2A0A, 0x387F, 0x4278, 0x387F, 0x5AD7, 0x387F, 0x7329, 0x387F, 0x8B6E, 0x387F, 0xA3A1, 0x387F, 0xBBCA, 0x387F, 0xD3E2, 0x387F, 0xEBED, 0x3880, 0x01F6, 0x3880, 0x0DEE, 0x3880, 0x19E0, 0x3880, 0x25C9, 0x3880, 0x31AE, 0x3880, 0x3D8A, 0x3880, 0x4960, 0x3880, 0x5530, 0x3880, 0x60F9, 0x3880, 0x6CBC, 0x3880, 0x7877, 0x3880, 0x842D, 0x3880, 0x8FDB, 0x3880, 0x9B83, 0x3880, 0xA725, 0x3880, 0xB2C1, 0x3880, 0xBE55, 0x3880, 0xC9E4, 0x3880, 0xD56D, 0x3880, 0xE0EE, 0x3880, 0xEC6A, 0x3880, 0xF7DF, 0x3881, 0x034E, 0x3881, 0x0EB7, 0x3881, 0x1A18, 0x3881, 0x2576, 0x3881, 0x30CB, 0x3881, 0x3C1B, 0x3881, 0x4766, 0x3881, 0x52AA, 0x3881, 0x5DE8, 0x3881, 0x691F, 0x3881, 0x7452, 0x3881, 0x7F7D, 0x3881, 0x8AA4, 0x3881, 0x95C4, 0x3881, 0xA0DE, 0x3881, 0xABF2, 0x3881, 0xB702, 0x3881, 0xC20A, 0x3881, 0xCD0D, 0x3881, 0xD80A, 0x3881, 0xE301, 0x3881, 0xEDF3, 0x3881, 0xF8DF, 0x3882, 0x03C5, 0x3882, 0x0EA7, 0x3882, 0x1982, 0x3882, 0x2456, 0x3882, 0x2F26, 0x3882, 0x39F0, 0x3882, 0x44B5, 0x3882, 0x4F75, 0x3882, 0x5A2E, 0x3882, 0x64E2, 0x3882, 0x6F91, 0x3882, 0x7A3B, 0x3882, 0x84DF, 0x3882, 0x8F7D, 0x3882, 0x9A16, 0x3882, 0xA4AA, 0x3882, 0xAF39, 0x3882, 0xB9C2, 0x3882, 0xC446, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3904, 0xCF18, 0x3952, 0x814E, 0x3984, 0xD142, 0x399A, 0x3308, 0x39AB, 0xAB9C, 0x39BA, 0x713C, 0x39C7, 0x3D1D, 0x39D2, 0x86B3, 0x39DC, 0x9F96, 0x39E5, 0xC1F1, 0x39EE, 0x18BA, 0x39F5, 0xC48F, 0x39FC, 0xDED2, 0x3A01, 0xBDCD, 0x3A04, 0xD58F, 0x3A07, 0xBD4E, 0x3A0A, 0x7A8A, 0x3A0D, 0x11DA, 0x3A0F, 0x8725, 0x3A11, 0xDDBA, 0x3A14, 0x1878, 0x3A16, 0x39D6, 0x3A18, 0x43FF, 0x3A1A, 0x38D8, 0x3A1C, 0x1A0A, 0x3A1D, 0xE916, 0x3A1F, 0xA749, 0x3A21, 0x55D6, 0x3A22, 0xF5C8, 0x3A24, 0x881A, 0x3A26, 0x0DA4, 0x3A27, 0x8732, 0x3A28, 0xF57B, 0x3A2A, 0x5927, 0x3A2B, 0xB2CD, 0x3A2D, 0x02FC, 0x3A2E, 0x4A33, 0x3A2F, 0x88EC, 0x3A30, 0xBF93, 0x3A31, 0xEE8D, 0x3A33, 0x163C, 0x3A34, 0x36F4, 0x3A35, 0x510C, 0x3A36, 0x64CA, 0x3A37, 0x727B, 0x3A38, 0x7A60, 0x3A39, 0x7CB5, 0x3A3A, 0x79B7, 0x3A3B, 0x719E, 0x3A3C, 0x649B, 0x3A3D, 0x52E0, 0x3A3E, 0x3C9D, 0x3A3F, 0x21FB, 0x3A40, 0x0323, 0x3A40, 0xE03D, 0x3A41, 0xB96C, 0x3A42, 0x8ED6, 0x3A43, 0x609B, 0x3A44, 0x2ED8, 0x3A44, 0xF9AD, 0x3A45, 0xC136, 0x3A46, 0x858D, 0x3A47, 0x46CC, 0x3A48, 0x050D, 0x3A48, 0xC067, 0x3A49, 0x78EF, 0x3A4A, 0x2EBB, 0x3A4A, 0xE1E1, 0x3A4B, 0x9273, 0x3A4C, 0x4084, 0x3A4C, 0xEC26, 0x3A4D, 0x9569, 0x3A4E, 0x3C5E, 0x3A4E, 0xE116, 0x3A4F, 0x83A0, 0x3A50, 0x240B, 0x3A50, 0xC263, 0x3A51, 0x5EB7, 0x3A51, 0xF914, 0x3A52, 0x9186, 0x3A53, 0x2819, 0x3A53, 0xBCD8, 0x3A54, 0x4FD0, 0x3A54, 0xE10B, 0x3A55, 0x7093, 0x3A55, 0xFE73, 0x3A56, 0x8AB3, 0x3A57, 0x155E, 0x3A57, 0x9E7C, 0x3A58, 0x2615, 0x3A58, 0xAC35, 0x3A59, 0x30E0, 0x3A59, 0xB420, 0x3A5A, 0x35FD, 0x3A5A, 0xB67F, 0x3A5B, 0x35AB, 0x3A5B, 0xB389, 0x3A5C, 0x3021, 0x3A5C, 0xAB78, 0x3A5D, 0x2595, 0x3A5D, 0x9E7C, 0x3A5E, 0x1638, 0x3A5E, 0x8CCA, 0x3A5F, 0x023B, 0x3A5F, 0x768E, 0x3A5F, 0xE9CA, 0x3A60, 0x5BF2, 0x3A60, 0xCD0F, 0x3A61, 0x3D23, 0x3A61, 0xAC32, 0x3A62, 0x1A45, 0x3A62, 0x875A, 0x3A62, 0xF37B, 0x3A63, 0x5EAA, 0x3A63, 0xC8EB, 0x3A64, 0x3244, 0x3A64, 0x9AB7, 0x3A65, 0x0247, 0x3A65, 0x68FB, 0x3A65, 0xCED3, 0x3A66, 0x33D6, 0x3A66, 0x9804, 0x3A66, 0xFB64, 0x3A67, 0x5DF8, 0x3A67, 0xBFC2, 0x3A68, 0x20C7, 0x3A68, 0x8108, 0x3A68, 0xE08B, 0x3A69, 0x3F50, 0x3A69, 0x9D5C, 0x3A69, 0xFAB0, 0x3A6A, 0x5750, 0x3A6A, 0xB33E, 0x3A6B, 0x0E7E, 0x3A6B, 0x6910, 0x3A6B, 0xC2F9, 0x3A6C, 0x1C3C, 0x3A6C, 0x74D9, 0x3A6C, 0xCCD3, 0x3A6D, 0x242D, 0x3A6D, 0x7AEA, 0x3A6D, 0xD109, 0x3A6E, 0x2690, 0x3A6E, 0x7B7F, 0x3A6E, 0xCFD9, 0x3A6F, 0x23A0, 0x3A6F, 0x76D4, 0x3A6F, 0xC97A, 0x3A70, 0x1B92, 0x3A70, 0x6D1F, 0x3A70, 0xBE21, 0x3A71, 0x0E9B, 0x3A71, 0x5E91, 0x3A71, 0xAE01, 0x3A71, 0xFCEE, 0x3A72, 0x4B5B, 0x3A72, 0x9948, 0x3A72, 0xE6B6, 0x3A73, 0x33A8, 0x3A73, 0x8021, 0x3A73, 0xCC1F, 0x3A74, 0x17A7, 0x3A74, 0x62B7, 0x3A74, 0xAD54, 0x3A74, 0xF77B, 0x3A75, 0x4133, 0x3A75, 0x8A78, 0x3A75, 0xD34F, 0x3A76, 0x1BB9, 0x3A76, 0x63B4, 0x3A76, 0xAB44, 0x3A76, 0xF26C, 0x3A77, 0x3929, 0x3A77, 0x7F7E, 0x3A77, 0xC56D, 0x3A78, 0x0AF7, 0x3A78, 0x501D, 0x3A78, 0x94DF, 0x3A78, 0xD940, 0x3A79, 0x1D3F, 0x3A79, 0x60DD, 0x3A79, 0xA41F, 0x3A79, 0xE702, 0x3A7A, 0x2987, 0x3A7A, 0x6BB2, 0x3A7A, 0xAD81, 0x3A7A, 0xEEF6, 0x3A7B, 0x3013, 0x3A7B, 0x70D8, 0x3A7B, 0xB144, 0x3A7B, 0xF15D, 0x3A7C, 0x311F, 0x3A7C, 0x708C, 0x3A7C, 0xAFA8, 0x3A7C, 0xEE70, 0x3A7D, 0x2CE5, 0x3A7D, 0x6B0B, 0x3A7D, 0xA8DF, 0x3A7D, 0xE666, 0x3A7E, 0x239D, 0x3A7E, 0x6086, 0x3A7E, 0x9D23, 0x3A7E, 0xD972, 0x3A7F, 0x1578, 0x3A7F, 0x5132, 0x3A7F, 0x8CA0, 0x3A7F, 0xC7C8, 0x3A80, 0x0153, 0x3A80, 0x1E9E, 0x3A80, 0x3BC5, 0x3A80, 0x58CA, 0x3A80, 0x75AA, 0x3A80, 0x9269, 0x3A80, 0xAF05, 0x3A80, 0xCB7F, 0x3A80, 0xE7D8, 0x3A81, 0x040F, 0x3A81, 0x2026, 0x3A81, 0x3C1B, 0x3A81, 0x57F1, 0x3A81, 0x73A5, 0x3A81, 0x8F3A, 0x3A81, 0xAAAF, 0x3A81, 0xC606, 0x3A81, 0xE13D, 0x3A81, 0xFC55, 0x3A82, 0x174F, 0x3A82, 0x322A, 0x3A82, 0x4CE8, 0x3A82, 0x6787, 0x3A82, 0x820A, 0x3A82, 0x9C70, 0x3A82, 0xB6B8, 0x3A82, 0xD0E4, 0x3A82, 0xEAF3, 0x3A83, 0x04E6, 0x3A83, 0x1EBF, 0x3A83, 0x387C, 0x3A83, 0x5216, 0x3A83, 0x6B9F, 0x3A83, 0x8505, 0x3A83, 0x9E52, 0x3A83, 0xB785, 0x3A83, 0xD0A7, 0x3A83, 0xE9A6, 0x3A84, 0x028C, 0x3A84, 0x1B58, 0x3A84, 0x340A, 0x3A84, 0x4CA3, 0x3A84, 0x6521, 0x3A84, 0x7D86, 0x3A84, 0x95D1, 0x3A84, 0xAE0B, 0x3A84, 0xC62B, 0x3A84, 0xDE29, 0x3A84, 0xF616, 0x3A85, 0x0DF1, 0x3A85, 0x25AA, 0x3A85, 0x3D52, 0x3A85, 0x54E0, 0x3A85, 0x6C5D, 0x3A85, 0x83B8, 0x3A85, 0x9B0A, 0x3A85, 0xB23A, 0x3A85, 0xC958, 0x3A85, 0xE05D, 0x3A85, 0xF750, 0x3A86, 0x0E2A, 0x3A86, 0x24F3, 0x3A86, 0x3BA1, 0x3A86, 0x523F, 0x3A86, 0x68C3, 0x3A86, 0x7F36, 0x3A86, 0x958E, 0x3A86, 0xABD6, 0x3A86, 0xC204, 0x3A86, 0xD821, 0x3A86, 0xEE2C, 0x3A87, 0x0427, 0x3A87, 0x1A08, 0x3A87, 0x2FCE, 0x3A87, 0x458D, 0x3A87, 0x5B31, 0x3A87, 0x70C5, 0x3A87, 0x8647, 0x3A87, 0x9BAF, 0x3A87, 0xB106, 0x3A87, 0xC64C, 0x3A87, 0xDB81, 0x3A87, 0xF0A5, 0x3A88, 0x05AF, 0x3A88, 0x1AA7, 0x3A88, 0x2F97, 0x3A88, 0x446E, 0x3A88, 0x5933, 0x3A88, 0x6DDE, 0x3A88, 0x8281, 0x3A88, 0x9713, 0x3A88, 0xAB93, 0x3A88, 0xBFFA, 0x3A88, 0xD458, 0x3A88, 0xE8A5, 0x3A88, 0xFCD8, 0x3A89, 0x1103, 0x3A89, 0x251C, 0x3A89, 0x391C, 0x3A89, 0x4D13, 0x3A89, 0x60F8, 0x3A89, 0x74CD, 0x3A89, 0x8891, 0x3A89, 0x9C43, 0x3A89, 0xAFED, 0x3A89, 0xC37D, 0x3A89, 0xD704, 0x3A89, 0xEA71, 0x3A89, 0xFDD6, 0x3A8A, 0x112A, 0x3A8A, 0x2475, 0x3A8A, 0x37A7, 0x3A8A, 0x4AD0, 0x3A8A, 0x5DE7, 0x3A8A, 0x70EE, 0x3A8A, 0x83E3, 0x3A8A, 0x96D0, 0x3A8A, 0xA9AB, 0x3A8A, 0xBC76, 0x3A8A, 0xCF38, 0x3A8A, 0xE1E8, 0x3A8A, 0xF488, 0x3A8B, 0x0716, 0x3A8B, 0x199B, 0x3A8B, 0x2C10, 0x3A8B, 0x3E73, 0x3A8B, 0x50CE, 0x3A8B, 0x6317, 0x3A8B, 0x7558, 0x3A8B, 0x8788, 0x3A8B, 0x99A7, 0x3A8B, 0xABBD, 0x3A8B, 0xBDC1, 0x3A8B, 0xCFBE, 0x3A8B, 0xE1A9, 0x3A8B, 0xF383, 0x3A8C, 0x0554, 0x3A8C, 0x171C, 0x3A8C, 0x28D4, 0x3A8C, 0x3A7A, 0x3A8C, 0x4C18, 0x3A8C, 0x5DA4, 0x3A8C, 0x6F28, 0x3A8C, 0x809B, 0x3A8C, 0x9205, 0x3A8C, 0xA367, 0x3A8C, 0xB4B7, 0x3A8C, 0xC5F7, 0x3A8C, 0xD72D, 0x3A8C, 0xE85B, 0x3A8C, 0xF978, 0x3A8D, 0x0A8C, 0x3A8D, 0x1B90, 0x3A8D, 0x2C8A, 0x3A8D, 0x3D7C, 0x3A8D, 0x4E5D, 0x3A8D, 0x5F35, 0x3A8D, 0x6FFC, 0x3A8D, 0x80BA, 0x3A8D, 0x9170, 0x3A8D, 0xA215, 0x3A8D, 0xB2B9, 0x3A8D, 0xC344, 0x3A8D, 0xD3CF, 0x3A8D, 0xE449, 0x3A8D, 0xF4B1, 0x3A8E, 0x0519, 0x3A8E, 0x1571, 0x3A8E, 0x25BF, 0x3A8E, 0x35FD, 0x3A8E, 0x4632, 0x3A8E, 0x565E, 0x3A8E, 0x6682, 0x3A8E, 0x769D, 0x3A8E, 0x86A7, 0x3A8E, 0x96A9, 0x3A8E, 0xA6A1, 0x3A8E, 0xB689, 0x3A8E, 0xC668, 0x3A8E, 0xD63F, 0x3A8E, 0xE60C, 0x3A8E, 0xF5D2, 0x3A8F, 0x0586, 0x3A8F, 0x1531, 0x3A8F, 0x24D4, 0x3A8F, 0x346E, 0x3A8F, 0x4400, 0x3A8F, 0x5381, 0x3A8F, 0x6301, 0x3A8F, 0x7271, 0x3A8F, 0x81D7, 0x3A8F, 0x9136, 0x3A8F, 0xA083, 0x3A8F, 0xAFD0, 0x3A8F, 0xBF14, 0x3A8F, 0xCE47, 0x3A8F, 0xDD72, 0x3A8F, 0xEC94, 0x3A8F, 0xFBAE, 0x3A90, 0x0ABE, 0x3A90, 0x19C7, 0x3A90, 0x28BE, 0x3A90, 0x37B5, 0x3A90, 0x46A3, 0x3A90, 0x5581, 0x3A90, 0x6456, 0x3A90, 0x732A, 0x3A90, 0x81EE, 0x3A90, 0x90A9, 0x3A90, 0x9F5B, 0x3A90, 0xAE05, 0x3A90, 0xBCA6, 0x3A90, 0xCB3F, 0x3A90, 0xD9CF, 0x3A90, 0xE856, 0x3A90, 0xF6D5, 0x3A91, 0x054B, 0x3A91, 0x13B9, 0x3A91, 0x221E, 0x3A91, 0x307B, 0x3A91, 0x3ECF, 0x3A91, 0x4D11, 0x3A91, 0x5B54, 0x3A91, 0x698E, 0x3A91, 0x77C0, 0x3A91, 0x85E9, 0x3A91, 0x9409, 0x3A91, 0xA221, 0x3A91, 0xB030, 0x3A91, 0xBE37, 0x3A91, 0xCC35, 0x3A91, 0xDA33, 0x3A91, 0xE81F, 0x3A91, 0xF604, 0x3A92, 0x03E8, 0x3A92, 0x11BB, 0x3A92, 0x1F8E, 0x3A92, 0x2D50, 0x3A92, 0x3B12, 0x3A92, 0x48CB, 0x3A92, 0x5673, 0x3A92, 0x641B, 0x3A92, 0x71BB, 0x3A92, 0x7F52, 0x3A92, 0x8CE9, 0x3A92, 0x9A6E, 0x3A92, 0xA7F4, 0x3A92, 0xB569, 0x3A92, 0xC2DD, 0x3A92, 0xD049, 0x3A92, 0xDDAD, 0x3A92, 0xEB07, 0x3A92, 0xF85A, 0x3A93, 0x05A3, 0x3A93, 0x12ED, 0x3A93, 0x2025, 0x3A93, 0x2D5E, 0x3A93, 0x3A8D, 0x3A93, 0x47B5, 0x3A93, 0x54DC, 0x3A93, 0x61F2, 0x3A93, 0x6F08, 0x3A93, 0x7C0D, 0x3A93, 0x8912, 0x3A93, 0x960E, 0x3A93, 0xA30B, 0x3A93, 0xAFF6, 0x3A93, 0xBCE1, 0x3A93, 0xC9C3, 0x3A93, 0xD69D, 0x3A93, 0xE36F, 0x3A93, 0xF040, 0x3A93, 0xFD00, 0x3A94, 0x09C0, 0x3A94, 0x1678, 0x3A94, 0x232F, 0x3A94, 0x2FD6, 0x3A94, 0x3C7C, 0x3A94, 0x491A, 0x3A94, 0x55AF, 0x3A94, 0x6245, 0x3A94, 0x6EC9, 0x3A94, 0x7B4D, 0x3A94, 0x87D1, 0x3A94, 0x9444, 0x3A94, 0xA0B6, 0x3A94, 0xAD21, 0x3A94, 0xB982, 0x3A94, 0xC5DB, 0x3A94, 0xD235, 0x3A94, 0xDE85, 0x3A94, 0xEACD, 0x3A94, 0xF70C, 0x3A95, 0x034C, 0x3A95, 0x0F82, 0x3A95, 0x1BB9, 0x3A95, 0x27DF, 0x3A95, 0x3404, 0x3A95, 0x4021, 0x3A95, 0x4C3E, 0x3A95, 0x584A, 0x3A95, 0x6456, 0x3A95, 0x7062, 0xBF80, 0x0000, 0x0000, 0x0000, 0x391A, 0xC8FE, 0x3975, 0x56DD, 0x399A, 0xCBEF, 0x39B3, 0xB7B1, 0x39C8, 0x148F, 0x39D9, 0x4C26, 0x39E8, 0x3648, 0x39F5, 0x5E35, 0x3A00, 0x917F, 0x3A05, 0xE437, 0x3A0A, 0xC050, 0x3A0F, 0x38C9, 0x3A13, 0x5C6E, 0x3A17, 0x36F1, 0x3A1A, 0xD1C7, 0x3A1E, 0x34AA, 0x3A21, 0x65FD, 0x3A24, 0x6B1F, 0x3A27, 0x489A, 0x3A2A, 0x024B, 0x3A2C, 0x9B88, 0x3A2F, 0x1731, 0x3A31, 0x77CF, 0x3A33, 0xBF93, 0x3A35, 0xF073, 0x3A38, 0x0C29, 0x3A3A, 0x143F, 0x3A3C, 0x0A15, 0x3A3D, 0xEEE9, 0x3A3F, 0xC3D7, 0x3A41, 0x89E1, 0x3A43, 0x41F3, 0x3A44, 0xECE4, 0x3A46, 0x8B73, 0x3A48, 0x1E56, 0x3A49, 0xA62F, 0x3A4B, 0x2396, 0x3A4C, 0x9714, 0x3A4E, 0x012C, 0x3A4F, 0x6253, 0x3A50, 0xBAF8, 0x3A52, 0x0B80, 0x3A53, 0x544D, 0x3A54, 0x95B6, 0x3A55, 0xD010, 0x3A57, 0x03A6, 0x3A58, 0x30C4, 0x3A59, 0x57AC, 0x3A5A, 0x789F, 0x3A5B, 0x93D9, 0x3A5C, 0xA994, 0x3A5D, 0xBA05, 0x3A5E, 0xC55E, 0x3A5F, 0xCBCF, 0x3A60, 0xCD87, 0x3A61, 0xCAAF, 0x3A62, 0xC371, 0x3A63, 0xB7F1, 0x3A64, 0xA856, 0x3A65, 0x94C1, 0x3A66, 0x7D56, 0x3A67, 0x6230, 0x3A68, 0x4371, 0x3A69, 0x2134, 0x3A69, 0xFB95, 0x3A6A, 0xD2AC, 0x3A6B, 0xA695, 0x3A6C, 0x7765, 0x3A6D, 0x4535, 0x3A6E, 0x1019, 0x3A6E, 0xD826, 0x3A6F, 0x9D73, 0x3A70, 0x600F, 0x3A71, 0x200E, 0x3A71, 0xDD84, 0x3A72, 0x987F, 0x3A73, 0x5111, 0x3A74, 0x0749, 0x3A74, 0xBB36, 0x3A75, 0x6CE7, 0x3A76, 0x1C69, 0x3A76, 0xC9CB, 0x3A77, 0x751A, 0x3A78, 0x1E63, 0x3A78, 0xC5B0, 0x3A79, 0x6B0F, 0x3A7A, 0x0E8B, 0x3A7A, 0xB02C, 0x3A7B, 0x5000, 0x3A7B, 0xEE10, 0x3A7C, 0x8A64, 0x3A7D, 0x2509, 0x3A7D, 0xBE06, 0x3A7E, 0x5565, 0x3A7E, 0xEB2F, 0x3A7F, 0x7F6B, 0x3A80, 0x0911, 0x3A80, 0x51AE, 0x3A80, 0x9990, 0x3A80, 0xE0BB, 0x3A81, 0x2733, 0x3A81, 0x6CFA, 0x3A81, 0xB215, 0x3A81, 0xF687, 0x3A82, 0x3A53, 0x3A82, 0x7D7C, 0x3A82, 0xC005, 0x3A83, 0x01F1, 0x3A83, 0x4341, 0x3A83, 0x83FB, 0x3A83, 0xC423, 0x3A84, 0x03B9, 0x3A84, 0x42BD, 0x3A84, 0x8137, 0x3A84, 0xBF20, 0x3A84, 0xFC87, 0x3A85, 0x3965, 0x3A85, 0x75C3, 0x3A85, 0xB19F, 0x3A85, 0xECFB, 0x3A86, 0x27D5, 0x3A86, 0x6238, 0x3A86, 0x9C22, 0x3A86, 0xD59D, 0x3A87, 0x0E96, 0x3A87, 0x4720, 0x3A87, 0x7F3B, 0x3A87, 0xB6E5, 0x3A87, 0xEE21, 0x3A88, 0x24F4, 0x3A88, 0x5B59, 0x3A88, 0x9156, 0x3A88, 0xC6E3, 0x3A88, 0xFC13, 0x3A89, 0x30DB, 0x3A89, 0x6544, 0x3A89, 0x9946, 0x3A89, 0xCCF3, 0x3A8A, 0x0038, 0x3A8A, 0x331F, 0x3A8A, 0x65A8, 0x3A8A, 0x97DA, 0x3A8A, 0xC9B7, 0x3A8A, 0xFB35, 0x3A8B, 0x2C5D, 0x3A8B, 0x5D30, 0x3A8B, 0x8DB5, 0x3A8B, 0xBDDB, 0x3A8B, 0xEDB4, 0x3A8C, 0x1D40, 0x3A8C, 0x4C76, 0x3A8C, 0x7B5F, 0x3A8C, 0xA9F2, 0x3A8C, 0xD840, 0x3A8D, 0x0641, 0x3A8D, 0x33F4, 0x3A8D, 0x6163, 0x3A8D, 0x8E85, 0x3A8D, 0xBB59, 0x3A8D, 0xE7E8, 0x3A8E, 0x1433, 0x3A8E, 0x4039, 0x3A8E, 0x6BFA, 0x3A8E, 0x9777, 0x3A8E, 0xC2AF, 0x3A8E, 0xEDAA, 0x3A8F, 0x1859, 0x3A8F, 0x42CB, 0x3A8F, 0x6D01, 0x3A8F, 0x96F3, 0x3A8F, 0xC0A8, 0x3A8F, 0xEA21, 0x3A90, 0x135E, 0x3A90, 0x3C5F, 0x3A90, 0x651B, 0x3A90, 0x8DA4, 0x3A90, 0xB5F0, 0x3A90, 0xDE09, 0x3A91, 0x05DD, 0x3A91, 0x2D7E, 0x3A91, 0x54EB, 0x3A91, 0x7C1C, 0x3A91, 0xA31A, 0x3A91, 0xC9DB, 0x3A91, 0xF069, 0x3A92, 0x16CC, 0x3A92, 0x3CF3, 0x3A92, 0x62DD, 0x3A92, 0x889D, 0x3A92, 0xAE32, 0x3A92, 0xD38A, 0x3A92, 0xF8AF, 0x3A93, 0x1DAA, 0x3A93, 0x4270, 0x3A93, 0x670C, 0x3A93, 0x8B6B, 0x3A93, 0xAFA8, 0x3A93, 0xD3B2, 0x3A93, 0xF791, 0x3A94, 0x1B3C, 0x3A94, 0x3EBC, 0x3A94, 0x6211, 0x3A94, 0x8533, 0x3A94, 0xA832, 0x3A94, 0xCAFE, 0x3A94, 0xEDA7, 0x3A95, 0x101D, 0x3A95, 0x3268, 0x3A95, 0x5490, 0x3A95, 0x768E, 0x3A95, 0x9861, 0x3A95, 0xBA08, 0x3A95, 0xDB8E, 0x3A95, 0xFCE8, 0x3A96, 0x1E18, 0x3A96, 0x3F25, 0x3A96, 0x6007, 0x3A96, 0x80BE, 0x3A96, 0xA15B, 0x3A96, 0xC1CE, 0x3A96, 0xE215, 0x3A97, 0x023B, 0x3A97, 0x223D, 0x3A97, 0x421E, 0x3A97, 0x61D3, 0x3A97, 0x8166, 0x3A97, 0xA0E0, 0x3A97, 0xC02E, 0x3A97, 0xDF52, 0x3A97, 0xFE5B, 0x3A98, 0x1D43, 0x3A98, 0x3C08, 0x3A98, 0x5AAA, 0x3A98, 0x792B, 0x3A98, 0x9791, 0x3A98, 0xB5CD, 0x3A98, 0xD3EE, 0x3A98, 0xF1EE, 0x3A99, 0x0FCB, 0x3A99, 0x2D85, 0x3A99, 0x4B26, 0x3A99, 0x68A5, 0x3A99, 0x860A, 0x3A99, 0xA34C, 0x3A99, 0xC06C, 0x3A99, 0xDD72, 0x3A99, 0xFA5F, 0x3A9A, 0x1729, 0x3A9A, 0x33D1, 0x3A9A, 0x505F, 0x3A9A, 0x6CD3, 0x3A9A, 0x8925, 0x3A9A, 0xA55D, 0x3A9A, 0xC17C, 0x3A9A, 0xDD78, 0x3A9A, 0xF962, 0x3A9B, 0x152B, 0x3A9B, 0x30D1, 0x3A9B, 0x4C66, 0x3A9B, 0x67D9, 0x3A9B, 0x833A, 0x3A9B, 0x9E79, 0x3A9B, 0xB99E, 0x3A9B, 0xD4AA, 0x3A9B, 0xEF9B, 0x3A9C, 0x0A73, 0x3A9C, 0x2532, 0x3A9C, 0x3FD6, 0x3A9C, 0x5A61, 0x3A9C, 0x74D1, 0x3A9C, 0x8F31, 0x3A9C, 0xA96E, 0x3A9C, 0xC39B, 0x3A9C, 0xDDA4, 0x3A9C, 0xF79D, 0x3A9D, 0x117C, 0x3A9D, 0x2B41, 0x3A9D, 0x44F5, 0x3A9D, 0x5E8F, 0x3A9D, 0x780F, 0x3A9D, 0x9176, 0x3A9D, 0xAACB, 0x3A9D, 0xC407, 0x3A9D, 0xDD29, 0x3A9D, 0xF639, 0x3A9E, 0x0F30, 0x3A9E, 0x2816, 0x3A9E, 0x40E2, 0x3A9E, 0x5994, 0x3A9E, 0x7235, 0x3A9E, 0x8AC5, 0x3A9E, 0xA33B, 0x3A9E, 0xBB97, 0x3A9E, 0xD3E3, 0x3A9E, 0xEC1C, 0x3A9F, 0x043D, 0x3A9F, 0x1C43, 0x3A9F, 0x3441, 0x3A9F, 0x4C1C, 0x3A9F, 0x63EF, 0x3A9F, 0x7BA8, 0x3A9F, 0x9350, 0x3A9F, 0xAADE, 0x3A9F, 0xC264, 0x3A9F, 0xD9C7, 0x3A9F, 0xF122, 0x3AA0, 0x0862, 0x3AA0, 0x1F9B, 0x3AA0, 0x36B1, 0x3AA0, 0x4DBE, 0x3AA0, 0x64BA, 0x3AA0, 0x7B9C, 0x3AA0, 0x926D, 0x3AA0, 0xA92D, 0x3AA0, 0xBFDC, 0x3AA0, 0xD671, 0x3AA0, 0xECFE, 0x3AA1, 0x0370, 0x3AA1, 0x19D2, 0x3AA1, 0x302B, 0x3AA1, 0x466A, 0x3AA1, 0x5C98, 0x3AA1, 0x72B5, 0x3AA1, 0x88C0, 0x3AA1, 0x9EBB, 0x3AA1, 0xB4A4, 0x3AA1, 0xCA7C, 0x3AA1, 0xE043, 0x3AA1, 0xF5F8, 0x3AA2, 0x0B9D, 0x3AA2, 0x2139, 0x3AA2, 0x36BB, 0x3AA2, 0x4C2C, 0x3AA2, 0x6194, 0x3AA2, 0x76E3, 0x3AA2, 0x8C29, 0x3AA2, 0xA155, 0x3AA2, 0xB679, 0x3AA2, 0xCB8B, 0x3AA2, 0xE08D, 0x3AA2, 0xF585, 0x3AA3, 0x0A64, 0x3AA3, 0x1F3B, 0x3AA3, 0x3400, 0x3AA3, 0x48B4, 0x3AA3, 0x5D57, 0x3AA3, 0x71F1, 0x3AA3, 0x867A, 0x3AA3, 0x9AF2, 0x3AA3, 0xAF58, 0x3AA3, 0xC3B6, 0x3AA3, 0xD803, 0x3AA3, 0xEC3F, 0x3AA4, 0x006A, 0x3AA4, 0x148C, 0x3AA4, 0x289C, 0x3AA4, 0x3C9C, 0x3AA4, 0x5093, 0x3AA4, 0x6479, 0x3AA4, 0x7856, 0x3AA4, 0x8C1A, 0x3AA4, 0x9FDD, 0x3AA4, 0xB387, 0x3AA4, 0xC728, 0x3AA4, 0xDAB8, 0x3AA4, 0xEE3F, 0x3AA5, 0x01B5, 0x3AA5, 0x1523, 0x3AA5, 0x287F, 0x3AA5, 0x3BD3, 0x3AA5, 0x4F0D, 0x3AA5, 0x6247, 0x3AA5, 0x7570, 0x3AA5, 0x8888, 0x3AA5, 0x9B97, 0x3AA5, 0xAE95, 0x3AA5, 0xC18A, 0x3AA5, 0xD46E, 0x3AA5, 0xE74A, 0x3AA5, 0xFA1D, 0x3AA6, 0x0CD6, 0x3AA6, 0x1F8F, 0x3AA6, 0x3237, 0x3AA6, 0x44CE, 0x3AA6, 0x575C, 0x3AA6, 0x69E2, 0x3AA6, 0x7C56, 0x3AA6, 0x8EC2, 0x3AA6, 0xA125, 0x3AA6, 0xB377, 0x3AA6, 0xC5B8, 0x3AA6, 0xD7F1, 0x3AA6, 0xEA20, 0x3AA6, 0xFC47, 0x3AA7, 0x0E5D, 0x3AA7, 0x206B, 0x3AA7, 0x3267, 0x3AA7, 0x445B, 0x3AA7, 0x5646, 0x3AA7, 0x6820, 0x3AA7, 0x79F1, 0x3AA7, 0x8BB9, 0x3AA7, 0x9D71, 0x3AA7, 0xAF28, 0x3AA7, 0xC0C6, 0x3AA7, 0xD264, 0x3AA7, 0xE3F0, 0x3AA7, 0xF574, 0x3AA8, 0x06F0, 0x3AA8, 0x185A, 0x3AA8, 0x29BB, 0x3AA8, 0x3B14, 0x3AA8, 0x4C65, 0x3AA8, 0x5DA4, 0x3AA8, 0x6EDB, 0x3AA8, 0x8009, 0x3AA8, 0x912E, 0x3AA8, 0xA24B, 0x3AA8, 0xB357, 0x3AA8, 0xC45A, 0x3AA8, 0xD554, 0x3AA8, 0xE63E, 0x3AA8, 0xF727, 0x3AA9, 0x07FF, 0x3AA9, 0x18CF, 0x3AA9, 0x2996, 0x3AA9, 0x3A54, 0x3AA9, 0x4B0A, 0x3AA9, 0x5BAE, 0x3AA9, 0x6C4B, 0x3AA9, 0x7CDE, 0x3AA9, 0x8D69, 0x3AA9, 0x9DEB, 0x3AA9, 0xAE65, 0x3AA9, 0xBED6, 0x3AA9, 0xCF36, 0x3AA9, 0xDF96, 0x3AA9, 0xEFE4, 0x3AAA, 0x002A, 0x3AAA, 0x1068, 0x3AAA, 0x209D, 0x3AAA, 0x30C9, 0x3AAA, 0x40ED, 0x3AAA, 0x50FF, 0x3AAA, 0x6112, 0x3AAA, 0x7113, 0x3AAA, 0x8115, 0x3AAA, 0x9105, 0x3AAA, 0xA0F5, 0x3AAA, 0xB0D4, 0x3AAA, 0xC0AB, 0x3AAA, 0xD079, 0x3AAA, 0xE047, 0x3AAA, 0xF003, 0x3AAA, 0xFFB7, 0x3AAB, 0x0F63, 0x3AAB, 0x1F06, 0x3AAB, 0x2EA0, 0x3AAB, 0x3E32, 0x3AAB, 0x4DBB, 0x3AAB, 0x5D3B, 0x3AAB, 0x6CB3, 0x3AAB, 0x7C23, 0x3AAB, 0x8B8A, 0x3AAB, 0x9AE8, 0x3AAB, 0xAA3D, 0x3AAB, 0xB993, 0x3AAB, 0xC8D7, 0x3AAB, 0xD813, 0x3AAB, 0xE746, 0x3AAB, 0xF671, 0x3AAC, 0x059C, 0x3AAC, 0x14B5, 0x3AAC, 0x23C6, 0x3AAC, 0x32D7, 0x3AAC, 0x41D7, 0x3AAC, 0x50D6, 0x3AAC, 0x5FC5, 0x3AAC, 0x6EB3, 0x3AAC, 0x7D99, 0x3AAC, 0x8C77, 0x3AAC, 0x9B4B, 0x3AAC, 0xAA18, 0x3AAC, 0xB8DB, 0x3AAC, 0xC796, 0x3AAC, 0xD649, 0x3AAC, 0xE4F2, 0x3AAC, 0xF39C, 0x3AAD, 0x023D, 0x3AAD, 0x10CD, 0x3AAD, 0x1F5D, 0x3AAD, 0x2DE5, 0x3AAD, 0x3C64, 0x3AAD, 0x4ADA, 0x3AAD, 0x5950, 0x3AAD, 0x67B5, 0x3AAD, 0x761A, 0x3AAD, 0x846E, 0x3AAD, 0x92C2, 0x3AAD, 0xA10E, 0x3AAD, 0xAF59, 0x3AAD, 0xBD93, 0x3AAD, 0xCBC4, 0x3AAD, 0xD9F6, 0x3AAD, 0xE81F, 0x3AAD, 0xF63F, 0x3AAE, 0x0457, 0x3AAE, 0x1266, 0x3AAE, 0x2075, 0x3AAE, 0x2E7C, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3939, 0x6DD5, 0x3992, 0xF4E5, 0x39B9, 0x7208, 0x39D7, 0x4D35, 0x39EF, 0xB277, 0x3A02, 0x297E, 0x3A0B, 0x18AB, 0x3A12, 0xFA2B, 0x3A1A, 0x06EF, 0x3A20, 0x6796, 0x3A26, 0x3A1D, 0x3A2B, 0x954B, 0x3A30, 0x8AD7, 0x3A35, 0x28C6, 0x3A39, 0x7A6C, 0x3A3D, 0x890A, 0x3A41, 0x5C47, 0x3A44, 0xFA95, 0x3A48, 0x695D, 0x3A4B, 0xAD47, 0x3A4E, 0xCA4E, 0x3A51, 0xC3E9, 0x3A54, 0x9D18, 0x3A57, 0x5886, 0x3A59, 0xF886, 0x3A5C, 0x7F2A, 0x3A5E, 0xEE4A, 0x3A61, 0x478D, 0x3A63, 0x8C6F, 0x3A65, 0xBE47, 0x3A67, 0xDE46, 0x3A69, 0xED8B, 0x3A6B, 0xED12, 0x3A6D, 0xDDC7, 0x3A6F, 0xC07E, 0x3A71, 0x95FB, 0x3A73, 0x5EF3, 0x3A75, 0x1C0E, 0x3A76, 0xCDE5, 0x3A78, 0x7506, 0x3A7A, 0x11F5, 0x3A7B, 0xA52D, 0x3A7D, 0x2F20, 0x3A7E, 0xB039, 0x3A80, 0x146E, 0x3A80, 0xCCB3, 0x3A81, 0x8117, 0x3A82, 0x31C3, 0x3A82, 0xDEDE, 0x3A83, 0x888B, 0x3A84, 0x2EF1, 0x3A84, 0xD226, 0x3A85, 0x724E, 0x3A86, 0x0F8A, 0x3A86, 0xA9ED, 0x3A87, 0x4197, 0x3A87, 0xD69B, 0x3A88, 0x6912, 0x3A88, 0xF916, 0x3A89, 0x86B8, 0x3A8A, 0x1212, 0x3A8A, 0x9B2D, 0x3A8B, 0x2221, 0x3A8B, 0xA6F9, 0x3A8C, 0x29CD, 0x3A8C, 0xAAA6, 0x3A8D, 0x299F, 0x3A8D, 0xA6B6, 0x3A8E, 0x21FD, 0x3A8E, 0x9B8F, 0x3A8F, 0x136A, 0x3A8F, 0x8998, 0x3A8F, 0xFE32, 0x3A90, 0x7138, 0x3A90, 0xE2B3, 0x3A91, 0x52BD, 0x3A91, 0xC14D, 0x3A92, 0x2E7C, 0x3A92, 0x9A43, 0x3A93, 0x04BB, 0x3A93, 0x6DDB, 0x3A93, 0xD5BE, 0x3A94, 0x3C5A, 0x3A94, 0xA1C9, 0x3A95, 0x0603, 0x3A95, 0x6911, 0x3A95, 0xCB03, 0x3A96, 0x2BDA, 0x3A96, 0x8B9D, 0x3A96, 0xEA4E, 0x3A97, 0x47F4, 0x3A97, 0xA499, 0x3A98, 0x0045, 0x3A98, 0x5AEF, 0x3A98, 0xB4B1, 0x3A99, 0x0D7A, 0x3A99, 0x6564, 0x3A99, 0xBC65, 0x3A9A, 0x1288, 0x3A9A, 0x67CB, 0x3A9A, 0xBC37, 0x3A9B, 0x0FD5, 0x3A9B, 0x62A5, 0x3A9B, 0xB4A7, 0x3A9C, 0x05E3, 0x3A9C, 0x565A, 0x3A9C, 0xA613, 0x3A9C, 0xF510, 0x3A9D, 0x4350, 0x3A9D, 0x90E4, 0x3A9D, 0xDDBB, 0x3A9E, 0x29EF, 0x3A9E, 0x756E, 0x3A9E, 0xC04A, 0x3A9F, 0x0A7A, 0x3A9F, 0x5410, 0x3A9F, 0x9CFA, 0x3A9F, 0xE552, 0x3AA0, 0x2D07, 0x3AA0, 0x7429, 0x3AA0, 0xBAB1, 0x3AA1, 0x00A7, 0x3AA1, 0x460B, 0x3AA1, 0x8AE6, 0x3AA1, 0xCF2E, 0x3AA2, 0x12ED, 0x3AA2, 0x5623, 0x3AA2, 0x98D8, 0x3AA2, 0xDB03, 0x3AA3, 0x1CAE, 0x3AA3, 0x5DE0, 0x3AA3, 0x9E91, 0x3AA3, 0xDEC2, 0x3AA4, 0x1E7A, 0x3AA4, 0x5DBA, 0x3AA4, 0x9C82, 0x3AA4, 0xDADA, 0x3AA5, 0x18BA, 0x3AA5, 0x562A, 0x3AA5, 0x932B, 0x3AA5, 0xCFBB, 0x3AA6, 0x0BE5, 0x3AA6, 0x479F, 0x3AA6, 0x82EA, 0x3AA6, 0xBDD6, 0x3AA6, 0xF852, 0x3AA7, 0x3270, 0x3AA7, 0x6C26, 0x3AA7, 0xA57F, 0x3AA7, 0xDE70, 0x3AA8, 0x1702, 0x3AA8, 0x4F36, 0x3AA8, 0x870C, 0x3AA8, 0xBE83, 0x3AA8, 0xF5A4, 0x3AA9, 0x2C67, 0x3AA9, 0x62D4, 0x3AA9, 0x98E3, 0x3AA9, 0xCEA4, 0x3AAA, 0x0406, 0x3AAA, 0x391B, 0x3AAA, 0x6DDB, 0x3AAA, 0xA244, 0x3AAA, 0xD660, 0x3AAB, 0x0A27, 0x3AAB, 0x3DA0, 0x3AAB, 0x70CB, 0x3AAB, 0xA3AA, 0x3AAB, 0xD63B, 0x3AAC, 0x087E, 0x3AAC, 0x3A7D, 0x3AAC, 0x6C2F, 0x3AAC, 0x9D94, 0x3AAC, 0xCEB3, 0x3AAC, 0xFF86, 0x3AAD, 0x301C, 0x3AAD, 0x6065, 0x3AAD, 0x9069, 0x3AAD, 0xC028, 0x3AAD, 0xEFA3, 0x3AAE, 0x1ED9, 0x3AAE, 0x4DD3, 0x3AAE, 0x7C88, 0x3AAE, 0xAB01, 0x3AAE, 0xD936, 0x3AAF, 0x0725, 0x3AAF, 0x34E1, 0x3AAF, 0x6259, 0x3AAF, 0x8F94, 0x3AAF, 0xBC93, 0x3AAF, 0xE956, 0x3AB0, 0x15DD, 0x3AB0, 0x4228, 0x3AB0, 0x6E36, 0x3AB0, 0x9A11, 0x3AB0, 0xC5B0, 0x3AB0, 0xF113, 0x3AB1, 0x1C42, 0x3AB1, 0x4735, 0x3AB1, 0x71F5, 0x3AB1, 0x9C81, 0x3AB1, 0xC6D9, 0x3AB1, 0xF0F6, 0x3AB2, 0x1ADF, 0x3AB2, 0x4494, 0x3AB2, 0x6E16, 0x3AB2, 0x9764, 0x3AB2, 0xC07F, 0x3AB2, 0xE96E, 0x3AB3, 0x1222, 0x3AB3, 0x3AAA, 0x3AB3, 0x6300, 0x3AB3, 0x8B2A, 0x3AB3, 0xB320, 0x3AB3, 0xDAE3, 0x3AB4, 0x027C, 0x3AB4, 0x29E0, 0x3AB4, 0x5122, 0x3AB4, 0x7828, 0x3AB4, 0x9F0C, 0x3AB4, 0xC5BC, 0x3AB4, 0xEC42, 0x3AB5, 0x129C, 0x3AB5, 0x38CB, 0x3AB5, 0x5ED0, 0x3AB5, 0x84A9, 0x3AB5, 0xAA58, 0x3AB5, 0xCFDB, 0x3AB5, 0xF534, 0x3AB6, 0x1A61, 0x3AB6, 0x3F6D, 0x3AB6, 0x6444, 0x3AB6, 0x88FA, 0x3AB6, 0xAD8D, 0x3AB6, 0xD1EC, 0x3AB6, 0xF632, 0x3AB7, 0x1A44, 0x3AB7, 0x3E34, 0x3AB7, 0x6201, 0x3AB7, 0x85A4, 0x3AB7, 0xA924, 0x3AB7, 0xCC79, 0x3AB7, 0xEFB5, 0x3AB8, 0x12BD, 0x3AB8, 0x35AB, 0x3AB8, 0x586E, 0x3AB8, 0x7B0F, 0x3AB8, 0x9D96, 0x3AB8, 0xBFE9, 0x3AB8, 0xE223, 0x3AB9, 0x043A, 0x3AB9, 0x262F, 0x3AB9, 0x47FA, 0x3AB9, 0x69AA, 0x3AB9, 0x8B38, 0x3AB9, 0xACA3, 0x3AB9, 0xCDED, 0x3AB9, 0xEF13, 0x3ABA, 0x1020, 0x3ABA, 0x310B, 0x3ABA, 0x51CB, 0x3ABA, 0x727A, 0x3ABA, 0x92FD, 0x3ABA, 0xB367, 0x3ABA, 0xD3AF, 0x3ABA, 0xF3DC, 0x3ABB, 0x13E8, 0x3ABB, 0x33D1, 0x3ABB, 0x53A0, 0x3ABB, 0x7356, 0x3ABB, 0x92E9, 0x3ABB, 0xB259, 0x3ABB, 0xD1B0, 0x3ABB, 0xF0EE, 0x3ABC, 0x1009, 0x3ABC, 0x2F0A, 0x3ABC, 0x4DF1, 0x3ABC, 0x6CB6, 0x3ABC, 0x8B61, 0x3ABC, 0xA9F3, 0x3ABC, 0xC862, 0x3ABC, 0xE6C0, 0x3ABD, 0x04FB, 0x3ABD, 0x231D, 0x3ABD, 0x411C, 0x3ABD, 0x5F0A, 0x3ABD, 0x7CDF, 0x3ABD, 0x9A91, 0x3ABD, 0xB832, 0x3ABD, 0xD5B0, 0x3ABD, 0xF31E, 0x3ABE, 0x1069, 0x3ABE, 0x2D9A, 0x3ABE, 0x4ABA, 0x3ABE, 0x67B8, 0x3ABE, 0x84A4, 0x3ABE, 0xA177, 0x3ABE, 0xBE30, 0x3ABE, 0xDACF, 0x3ABE, 0xF755, 0x3ABF, 0x13C0, 0x3ABF, 0x301B, 0x3ABF, 0x4C53, 0x3ABF, 0x687A, 0x3ABF, 0x8490, 0x3ABF, 0xA083, 0x3ABF, 0xBC65, 0x3ABF, 0xD82E, 0x3ABF, 0xF3E5, 0x3AC0, 0x0F7A, 0x3AC0, 0x2B06, 0x3AC0, 0x4670, 0x3AC0, 0x61C9, 0x3AC0, 0x7D08, 0x3AC0, 0x9836, 0x3AC0, 0xB34A, 0x3AC0, 0xCE4D, 0x3AC0, 0xE936, 0x3AC1, 0x040E, 0x3AC1, 0x1ECC, 0x3AC1, 0x3971, 0x3AC1, 0x540D, 0x3AC1, 0x6E86, 0x3AC1, 0x88F7, 0x3AC1, 0xA34E, 0x3AC1, 0xBD8B, 0x3AC1, 0xD7B7, 0x3AC1, 0xF1D2, 0x3AC2, 0x0BD4, 0x3AC2, 0x25C4, 0x3AC2, 0x3FA2, 0x3AC2, 0x5968, 0x3AC2, 0x731B, 0x3AC2, 0x8CBE, 0x3AC2, 0xA650, 0x3AC2, 0xBFC7, 0x3AC2, 0xD92E, 0x3AC2, 0xF27B, 0x3AC3, 0x0BBF, 0x3AC3, 0x24E9, 0x3AC3, 0x3E03, 0x3AC3, 0x570B, 0x3AC3, 0x7002, 0x3AC3, 0x88E8, 0x3AC3, 0xA1B3, 0x3AC3, 0xBA77, 0x3AC3, 0xD320, 0x3AC3, 0xEBB9, 0x3AC4, 0x0440, 0x3AC4, 0x1CB6, 0x3AC4, 0x351B, 0x3AC4, 0x4D66, 0x3AC4, 0x65A9, 0x3AC4, 0x7DDA, 0x3AC4, 0x95F2, 0x3AC4, 0xAE01, 0x3AC4, 0xC5FE, 0x3AC4, 0xDDE2, 0x3AC4, 0xF5BE, 0x3AC5, 0x0D88, 0x3AC5, 0x2539, 0x3AC5, 0x3CE1, 0x3AC5, 0x5477, 0x3AC5, 0x6BFD, 0x3AC5, 0x8371, 0x3AC5, 0x9AD4, 0x3AC5, 0xB226, 0x3AC5, 0xC970, 0x3AC5, 0xE09F, 0x3AC5, 0xF7C6, 0x3AC6, 0x0ED4, 0x3AC6, 0x25D8, 0x3AC6, 0x3CCC, 0x3AC6, 0x53B7, 0x3AC6, 0x6A88, 0x3AC6, 0x8151, 0x3AC6, 0x97FF, 0x3AC6, 0xAEA6, 0x3AC6, 0xC543, 0x3AC6, 0xDBC7, 0x3AC6, 0xF242, 0x3AC7, 0x08AC, 0x3AC7, 0x1F05, 0x3AC7, 0x354D, 0x3AC7, 0x4B8C, 0x3AC7, 0x61BA, 0x3AC7, 0x77D7, 0x3AC7, 0x8DEB, 0x3AC7, 0xA3EE, 0x3AC7, 0xB9E0, 0x3AC7, 0xCFC9, 0x3AC7, 0xE5A1, 0x3AC7, 0xFB68, 0x3AC8, 0x1126, 0x3AC8, 0x26D3, 0x3AC8, 0x3C6F, 0x3AC8, 0x5203, 0x3AC8, 0x6785, 0x3AC8, 0x7CF6, 0x3AC8, 0x925E, 0x3AC8, 0xA7BE, 0x3AC8, 0xBD0C, 0x3AC8, 0xD24A, 0x3AC8, 0xE776, 0x3AC8, 0xFC9A, 0x3AC9, 0x11B5, 0x3AC9, 0x26BF, 0x3AC9, 0x3BB7, 0x3AC9, 0x50A8, 0x3AC9, 0x658F, 0x3AC9, 0x7A65, 0x3AC9, 0x8F2B, 0x3AC9, 0xA3E7, 0x3AC9, 0xB893, 0x3AC9, 0xCD35, 0x3AC9, 0xE1D0, 0x3AC9, 0xF659, 0x3ACA, 0x0AD1, 0x3ACA, 0x1F40, 0x3ACA, 0x33A7, 0x3ACA, 0x47FC, 0x3ACA, 0x5C49, 0x3ACA, 0x7085, 0x3ACA, 0x84B8, 0x3ACA, 0x98DA, 0x3ACA, 0xACF3, 0x3ACA, 0xC104, 0x3ACA, 0xD504, 0x3ACA, 0xE8FB, 0x3ACA, 0xFCE9, 0x3ACB, 0x10C6, 0x3ACB, 0x2492, 0x3ACB, 0x385E, 0x3ACB, 0x4C19, 0x3ACB, 0x5FC3, 0x3ACB, 0x736D, 0x3ACB, 0x8705, 0x3ACB, 0x9A8C, 0x3ACB, 0xAE14, 0x3ACB, 0xC18A, 0x3ACB, 0xD4F8, 0x3ACB, 0xE854, 0x3ACB, 0xFBA8, 0x3ACC, 0x0EF3, 0x3ACC, 0x222D, 0x3ACC, 0x3567, 0x3ACC, 0x4890, 0x3ACC, 0x5BA8, 0x3ACC, 0x6EBF, 0x3ACC, 0x81C6, 0x3ACC, 0x94C4, 0x3ACC, 0xA7B0, 0x3ACC, 0xBA9D, 0x3ACC, 0xCD79, 0x3ACC, 0xE04C, 0x3ACC, 0xF30D, 0x3ACD, 0x05CF, 0x3ACD, 0x1880, 0x3ACD, 0x2B28, 0x3ACD, 0x3DC7, 0x3ACD, 0x505E, 0x3ACD, 0x62E4, 0x3ACD, 0x7561, 0x3ACD, 0x87D5, 0x3ACD, 0x9A41, 0x3ACD, 0xACA4, 0x3ACD, 0xBEFF, 0x3ACD, 0xD148, 0x3ACD, 0xE389, 0x3ACD, 0xF5C2, 0x3ACE, 0x07F1, 0x3ACE, 0x1A19, 0x3ACE, 0x2C2F, 0x3ACE, 0x3E45, 0x3ACE, 0x5049, 0x3ACE, 0x6246, 0x3ACE, 0x7439, 0x3ACE, 0x8624, 0x3ACE, 0x9807, 0x3ACE, 0xA9E0, 0x3ACE, 0xBBB2, 0x3ACE, 0xCD72, 0x3ACE, 0xDF32, 0x3ACE, 0xF0E1, 0x3ACF, 0x0287, 0x3ACF, 0x142D, 0x3ACF, 0x25C3, 0x3ACF, 0x374F, 0x3ACF, 0x48D3, 0x3ACF, 0x5A4E, 0x3ACF, 0x6BB9, 0x3ACF, 0x7D23, 0x3ACF, 0x8E84, 0x3ACF, 0x9FDD, 0x3ACF, 0xB125, 0x3ACF, 0xC26D, 0x3ACF, 0xD3A4, 0x3ACF, 0xE4DA, 0x3ACF, 0xF608, 0x3AD0, 0x0725, 0x3AD0, 0x1842, 0x3AD0, 0x294E, 0x3AD0, 0x3A51, 0x3AD0, 0x4B54, 0x3AD0, 0x5C46, 0x3AD0, 0x6D38, 0x3AD0, 0x7E18, 0x3AD0, 0x8EF9, 0x3AD0, 0x9FC9, 0x3AD0, 0xB098, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3967, 0x339A, 0x39B7, 0x3C13, 0x39E7, 0x3A1D, 0x3A06, 0x3A58, 0x3A15, 0x701D, 0x3A22, 0x4C6B, 0x3A2D, 0x707C, 0x3A37, 0x4447, 0x3A40, 0x0ED0, 0x3A48, 0x02BE, 0x3A4F, 0x4571, 0x3A55, 0xF356, 0x3A5C, 0x227B, 0x3A61, 0xE465, 0x3A67, 0x472C, 0x3A6C, 0x565C, 0x3A71, 0x1B86, 0x3A75, 0x9EAA, 0x3A79, 0xE68F, 0x3A7D, 0xF8FD, 0x3A80, 0xED77, 0x3A82, 0xC859, 0x3A84, 0x8F02, 0x3A86, 0x4326, 0x3A87, 0xE624, 0x3A89, 0x795D, 0x3A8A, 0xFDE4, 0x3A8C, 0x74D4, 0x3A8D, 0xDF04, 0x3A8F, 0x3D5B, 0x3A90, 0x908F, 0x3A91, 0xD953, 0x3A93, 0x184B, 0x3A94, 0x4E09, 0x3A95, 0x7B05, 0x3A96, 0x9FC8, 0x3A97, 0xBCB9, 0x3A98, 0xD241, 0x3A99, 0xE0C5, 0x3A9A, 0xE89C, 0x3A9B, 0xEA1B, 0x3A9C, 0xE587, 0x3A9D, 0xDB2E, 0x3A9E, 0xCB54, 0x3A9F, 0xB62D, 0x3AA0, 0x9BFE, 0x3AA1, 0x7CF0, 0x3AA2, 0x594B, 0x3AA3, 0x312E, 0x3AA4, 0x04C6, 0x3AA4, 0xD446, 0x3AA5, 0x9FD1, 0x3AA6, 0x6791, 0x3AA7, 0x2BA8, 0x3AA7, 0xEC32, 0x3AA8, 0xA957, 0x3AA9, 0x6333, 0x3AAA, 0x19DE, 0x3AAA, 0xCD7C, 0x3AAB, 0x7E1E, 0x3AAC, 0x2BE5, 0x3AAC, 0xD6E3, 0x3AAD, 0x7F2A, 0x3AAE, 0x24DB, 0x3AAE, 0xC808, 0x3AAF, 0x68B9, 0x3AB0, 0x0711, 0x3AB0, 0xA30F, 0x3AB1, 0x3CD7, 0x3AB1, 0xD470, 0x3AB2, 0x69E4, 0x3AB2, 0xFD54, 0x3AB3, 0x8EB8, 0x3AB4, 0x1E2A, 0x3AB4, 0xABBB, 0x3AB5, 0x376B, 0x3AB5, 0xC154, 0x3AB6, 0x497E, 0x3AB6, 0xCFE9, 0x3AB7, 0x54AF, 0x3AB7, 0xD7D1, 0x3AB8, 0x595E, 0x3AB8, 0xD958, 0x3AB9, 0x57D9, 0x3AB9, 0xD4D6, 0x3ABA, 0x506B, 0x3ABA, 0xCA8E, 0x3ABB, 0x4351, 0x3ABB, 0xBABD, 0x3ABC, 0x30D9, 0x3ABC, 0xA5A7, 0x3ABD, 0x192E, 0x3ABD, 0x8B80, 0x3ABD, 0xFC9D, 0x3ABE, 0x6C84, 0x3ABE, 0xDB48, 0x3ABF, 0x48E7, 0x3ABF, 0xB56B, 0x3AC0, 0x20D3, 0x3AC0, 0x8B31, 0x3AC0, 0xF47C, 0x3AC1, 0x5CC6, 0x3AC1, 0xC405, 0x3AC2, 0x2A4B, 0x3AC2, 0x8FA1, 0x3AC2, 0xF3FD, 0x3AC3, 0x5769, 0x3AC3, 0xB9ED, 0x3AC4, 0x1B8A, 0x3AC4, 0x7C46, 0x3AC4, 0xDC24, 0x3AC5, 0x3B22, 0x3AC5, 0x9952, 0x3AC5, 0xF6AB, 0x3AC6, 0x5336, 0x3AC6, 0xAEF3, 0x3AC7, 0x09EA, 0x3AC7, 0x641C, 0x3AC7, 0xBD91, 0x3AC8, 0x1649, 0x3AC8, 0x6E3B, 0x3AC8, 0xC581, 0x3AC9, 0x1C0B, 0x3AC9, 0x71E8, 0x3AC9, 0xC711, 0x3ACA, 0x1B98, 0x3ACA, 0x6F69, 0x3ACA, 0xC298, 0x3ACB, 0x1523, 0x3ACB, 0x670B, 0x3ACB, 0xB858, 0x3ACC, 0x0903, 0x3ACC, 0x5912, 0x3ACC, 0xA890, 0x3ACC, 0xF773, 0x3ACD, 0x45BB, 0x3ACD, 0x937A, 0x3ACD, 0xE0A7, 0x3ACE, 0x2D4A, 0x3ACE, 0x795B, 0x3ACE, 0xC4EC, 0x3ACF, 0x0FEA, 0x3ACF, 0x5A68, 0x3ACF, 0xA465, 0x3ACF, 0xEDE1, 0x3AD0, 0x36D3, 0x3AD0, 0x7F4E, 0x3AD0, 0xC747, 0x3AD1, 0x0EC8, 0x3AD1, 0x55D1, 0x3AD1, 0x9C62, 0x3AD1, 0xE27A, 0x3AD2, 0x281A, 0x3AD2, 0x6D4B, 0x3AD2, 0xB20B, 0x3AD2, 0xF65D, 0x3AD3, 0x3A35, 0x3AD3, 0x7DA7, 0x3AD3, 0xC0B2, 0x3AD4, 0x034D, 0x3AD4, 0x4578, 0x3AD4, 0x8745, 0x3AD4, 0xC8A2, 0x3AD5, 0x09A1, 0x3AD5, 0x4A39, 0x3AD5, 0x8A69, 0x3AD5, 0xCA3B, 0x3AD6, 0x09AF, 0x3AD6, 0x48C4, 0x3AD6, 0x8772, 0x3AD6, 0xC5CA, 0x3AD7, 0x03C4, 0x3AD7, 0x415F, 0x3AD7, 0x7EA4, 0x3AD7, 0xBB8B, 0x3AD7, 0xF81B, 0x3AD8, 0x3456, 0x3AD8, 0x703B, 0x3AD8, 0xABCB, 0x3AD8, 0xE704, 0x3AD9, 0x21E7, 0x3AD9, 0x5C7D, 0x3AD9, 0x96BD, 0x3AD9, 0xD0B0, 0x3ADA, 0x0A4D, 0x3ADA, 0x43A5, 0x3ADA, 0x7CA8, 0x3ADA, 0xB55D, 0x3ADA, 0xEDC4, 0x3ADB, 0x25E7, 0x3ADB, 0x5DB4, 0x3ADB, 0x953D, 0x3ADB, 0xCC80, 0x3ADC, 0x0377, 0x3ADC, 0x3A28, 0x3ADC, 0x708C, 0x3ADC, 0xA6AC, 0x3ADC, 0xDC87, 0x3ADD, 0x121D, 0x3ADD, 0x476E, 0x3ADD, 0x7C7B, 0x3ADD, 0xB14C, 0x3ADD, 0xE5CF, 0x3ADE, 0x1A16, 0x3ADE, 0x4E21, 0x3ADE, 0x81E7, 0x3ADE, 0xB569, 0x3ADE, 0xE8AE, 0x3ADF, 0x1BB7, 0x3ADF, 0x4E85, 0x3ADF, 0x810D, 0x3ADF, 0xB359, 0x3ADF, 0xE572, 0x3AE0, 0x1746, 0x3AE0, 0x48E7, 0x3AE0, 0x7A43, 0x3AE0, 0xAB6B, 0x3AE0, 0xDC57, 0x3AE1, 0x0D0F, 0x3AE1, 0x3D8C, 0x3AE1, 0x6DCC, 0x3AE1, 0x9DD9, 0x3AE1, 0xCDB2, 0x3AE1, 0xFD4F, 0x3AE2, 0x2CB9, 0x3AE2, 0x5BEF, 0x3AE2, 0x8AE9, 0x3AE2, 0xB9AF, 0x3AE2, 0xE84B, 0x3AE3, 0x16AA, 0x3AE3, 0x44D6, 0x3AE3, 0x72D7, 0x3AE3, 0xA09B, 0x3AE3, 0xCE35, 0x3AE3, 0xFB9B, 0x3AE4, 0x28CE, 0x3AE4, 0x55D5, 0x3AE4, 0x82AA, 0x3AE4, 0xAF4A, 0x3AE4, 0xDBC0, 0x3AE5, 0x0802, 0x3AE5, 0x3419, 0x3AE5, 0x6005, 0x3AE5, 0x8BBE, 0x3AE5, 0xB74C, 0x3AE5, 0xE2A6, 0x3AE6, 0x0DDE, 0x3AE6, 0x38E2, 0x3AE6, 0x63BC, 0x3AE6, 0x8E6A, 0x3AE6, 0xB8ED, 0x3AE6, 0xE346, 0x3AE7, 0x0D73, 0x3AE7, 0x3776, 0x3AE7, 0x614E, 0x3AE7, 0x8AFA, 0x3AE7, 0xB47C, 0x3AE7, 0xDDDB, 0x3AE8, 0x0710, 0x3AE8, 0x3019, 0x3AE8, 0x58F8, 0x3AE8, 0x81B4, 0x3AE8, 0xAA45, 0x3AE8, 0xD2B4, 0x3AE8, 0xFAF8, 0x3AE9, 0x231A, 0x3AE9, 0x4B10, 0x3AE9, 0x72E5, 0x3AE9, 0x9A8E, 0x3AE9, 0xC215, 0x3AE9, 0xE971, 0x3AEA, 0x10B3, 0x3AEA, 0x37CA, 0x3AEA, 0x5EBF, 0x3AEA, 0x8589, 0x3AEA, 0xAC39, 0x3AEA, 0xD2BF, 0x3AEA, 0xF922, 0x3AEB, 0x1F62, 0x3AEB, 0x4580, 0x3AEB, 0x6B7C, 0x3AEB, 0x9155, 0x3AEB, 0xB70D, 0x3AEB, 0xDCA1, 0x3AEC, 0x0214, 0x3AEC, 0x2764, 0x3AEC, 0x4C91, 0x3AEC, 0x71A5, 0x3AEC, 0x968E, 0x3AEC, 0xBB5D, 0x3AEC, 0xE00A, 0x3AED, 0x049D, 0x3AED, 0x2905, 0x3AED, 0x4D53, 0x3AED, 0x7188, 0x3AED, 0x9592, 0x3AED, 0xB981, 0x3AED, 0xDD57, 0x3AEE, 0x010B, 0x3AEE, 0x249C, 0x3AEE, 0x4814, 0x3AEE, 0x6B69, 0x3AEE, 0x8EA5, 0x3AEE, 0xB1C6, 0x3AEE, 0xD4C6, 0x3AEE, 0xF7A3, 0x3AEF, 0x1A6E, 0x3AEF, 0x3D18, 0x3AEF, 0x5F9F, 0x3AEF, 0x820C, 0x3AEF, 0xA460, 0x3AEF, 0xC699, 0x3AEF, 0xE8B1, 0x3AF0, 0x0AB7, 0x3AF0, 0x2C9B, 0x3AF0, 0x4E5C, 0x3AF0, 0x700C, 0x3AF0, 0x919A, 0x3AF0, 0xB317, 0x3AF0, 0xD472, 0x3AF0, 0xF5B2, 0x3AF1, 0x16D9, 0x3AF1, 0x37E6, 0x3AF1, 0x58D9, 0x3AF1, 0x79B3, 0x3AF1, 0x9A73, 0x3AF1, 0xBB19, 0x3AF1, 0xDBA5, 0x3AF1, 0xFC17, 0x3AF2, 0x1C70, 0x3AF2, 0x3CB8, 0x3AF2, 0x5CDD, 0x3AF2, 0x7CE8, 0x3AF2, 0x9CE2, 0x3AF2, 0xBCC3, 0x3AF2, 0xDC8A, 0x3AF2, 0xFC36, 0x3AF3, 0x1BCA, 0x3AF3, 0x3B4C, 0x3AF3, 0x5AB4, 0x3AF3, 0x7A02, 0x3AF3, 0x9937, 0x3AF3, 0xB85A, 0x3AF3, 0xD764, 0x3AF3, 0xF654, 0x3AF4, 0x1533, 0x3AF4, 0x33F8, 0x3AF4, 0x52A3, 0x3AF4, 0x713D, 0x3AF4, 0x8FBD, 0x3AF4, 0xAE2C, 0x3AF4, 0xCC81, 0x3AF4, 0xEABD, 0x3AF5, 0x08E7, 0x3AF5, 0x2700, 0x3AF5, 0x44F7, 0x3AF5, 0x62E5, 0x3AF5, 0x80BA, 0x3AF5, 0x9E75, 0x3AF5, 0xBC1E, 0x3AF5, 0xD9B6, 0x3AF5, 0xF735, 0x3AF6, 0x149A, 0x3AF6, 0x31F6, 0x3AF6, 0x4F30, 0x3AF6, 0x6C61, 0x3AF6, 0x8978, 0x3AF6, 0xA67F, 0x3AF6, 0xC36B, 0x3AF6, 0xE047, 0x3AF6, 0xFD11, 0x3AF7, 0x19CA, 0x3AF7, 0x3669, 0x3AF7, 0x52F7, 0x3AF7, 0x6F6B, 0x3AF7, 0x8BD7, 0x3AF7, 0xA829, 0x3AF7, 0xC46A, 0x3AF7, 0xE091, 0x3AF7, 0xFCAF, 0x3AF8, 0x18B4, 0x3AF8, 0x34A7, 0x3AF8, 0x5089, 0x3AF8, 0x6C5A, 0x3AF8, 0x881A, 0x3AF8, 0xA3C0, 0x3AF8, 0xBF5E, 0x3AF8, 0xDAE1, 0x3AF8, 0xF654, 0x3AF9, 0x11B5, 0x3AF9, 0x2D06, 0x3AF9, 0x4845, 0x3AF9, 0x6373, 0x3AF9, 0x7E8F, 0x3AF9, 0x9992, 0x3AF9, 0xB48C, 0x3AF9, 0xCF76, 0x3AF9, 0xEA45, 0x3AFA, 0x050C, 0x3AFA, 0x1FC1, 0x3AFA, 0x3A5D, 0x3AFA, 0x54F0, 0x3AFA, 0x6F72, 0x3AFA, 0x89E3, 0x3AFA, 0xA443, 0x3AFA, 0xBE91, 0x3AFA, 0xD8CF, 0x3AFA, 0xF2FB, 0x3AFB, 0x0D16, 0x3AFB, 0x2720, 0x3AFB, 0x4121, 0x3AFB, 0x5B08, 0x3AFB, 0x74E7, 0x3AFB, 0x8EB5, 0x3AFB, 0xA871, 0x3AFB, 0xC21D, 0x3AFB, 0xDBB7, 0x3AFB, 0xF548, 0x3AFC, 0x0EC0, 0x3AFC, 0x282F, 0x3AFC, 0x418D, 0x3AFC, 0x5ADA, 0x3AFC, 0x741E, 0x3AFC, 0x8D51, 0x3AFC, 0xA673, 0x3AFC, 0xBF84, 0x3AFC, 0xD883, 0x3AFC, 0xF17A, 0x3AFD, 0x0A60, 0x3AFD, 0x2334, 0x3AFD, 0x3C00, 0x3AFD, 0x54BB, 0x3AFD, 0x6D65, 0x3AFD, 0x85FD, 0x3AFD, 0x9E8D, 0x3AFD, 0xB70C, 0x3AFD, 0xCF79, 0x3AFD, 0xE7DE, 0x3AFE, 0x0032, 0x3AFE, 0x187D, 0x3AFE, 0x30B7, 0x3AFE, 0x48E0, 0x3AFE, 0x60F7, 0x3AFE, 0x7906, 0x3AFE, 0x910C, 0x3AFE, 0xA8F9, 0x3AFE, 0xC0E6, 0x3AFE, 0xD8B9, 0x3AFE, 0xF083, 0x3AFF, 0x083C, 0x3AFF, 0x1FEC, 0x3AFF, 0x3794, 0x3AFF, 0x4F22, 0x3AFF, 0x66A8, 0x3AFF, 0x7E25, 0x3AFF, 0x9591, 0x3AFF, 0xACF4, 0x3AFF, 0xC446, 0x3AFF, 0xDB87, 0x3AFF, 0xF2BF, 0x3B00, 0x04F7, 0x3B00, 0x1087, 0x3B00, 0x1C11, 0x3B00, 0x2794, 0x3B00, 0x330E, 0x3B00, 0x3E83, 0x3B00, 0x49F4, 0x3B00, 0x555D, 0x3B00, 0x60C1, 0x3B00, 0x6C21, 0x3B00, 0x7774, 0x3B00, 0x82C7, 0x3B00, 0x8E12, 0x3B00, 0x9958, 0x3B00, 0xA496, 0x3B00, 0xAFCF, 0x3B00, 0xBB00, 0x3B00, 0xC62C, 0x3B00, 0xD154, 0x3B00, 0xDC74, 0x3B00, 0xE78F, 0x3B00, 0xF2A2, 0x3B00, 0xFDB0, 0x3B01, 0x08BA, 0x3B01, 0x13C0, 0x3B01, 0x1EBD, 0x3B01, 0x29B2, 0x3B01, 0x34A7, 0x3B01, 0x3F93, 0x3B01, 0x4A7A, 0x3B01, 0x5559, 0x3B01, 0x6034, 0x3B01, 0x6B0B, 0x3B01, 0x75D9, 0x3B01, 0x80A7, 0x3B01, 0x8B68, 0x3B01, 0x9629, 0x3B01, 0xA0E1, 0x3B01, 0xAB96, 0x3B01, 0xB645, 0x3B01, 0xC0F1, 0x3B01, 0xCB94, 0x3B01, 0xD633, 0x3B01, 0xE0CD, 0x3B01, 0xEB5F, 0x3B01, 0xF5ED, 0x3B02, 0x0076, 0x3B02, 0x0AFB, 0x3B02, 0x1577, 0x3B02, 0x1FF3, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3B8E, 0x43B4, 0x3BE1, 0xC520, 0x3C0E, 0x92C4, 0x3C25, 0xA35D, 0x3C38, 0x81DC, 0x3C48, 0x7A58, 0x3C56, 0x5313, 0x3C62, 0x8C3C, 0x3C6D, 0x7D51, 0x3C77, 0x64C6, 0x3C80, 0x3864, 0x3C84, 0x623A, 0x3C88, 0x3D81, 0x3C8B, 0xD50B, 0x3C8F, 0x3191, 0x3C92, 0x5A3B, 0x3C95, 0x54F1, 0x3C98, 0x26A8, 0x3C9A, 0xD391, 0x3C9D, 0x5F41, 0x3C9F, 0xCCCF, 0x3CA2, 0x1EE4, 0x3CA4, 0x57D9, 0x3CA6, 0x79B2, 0x3CA8, 0x864C, 0x3CAA, 0x7F30, 0x3CAC, 0x65DA, 0x3CAE, 0x3B87, 0x3CB0, 0x0160, 0x3CB1, 0xB86F, 0x3CB3, 0x61A7, 0x3CB4, 0xFDD9, 0x3CB6, 0x8DD1, 0x3CB8, 0x1245, 0x3CB9, 0x8BD8, 0x3CBA, 0xFB23, 0x3CBC, 0x60AE, 0x3CBD, 0xBCFF, 0x3CBF, 0x1091, 0x3CC0, 0x5BCB, 0x3CC1, 0x9F17, 0x3CC2, 0xDAD1, 0x3CC4, 0x0F54, 0x3CC5, 0x3CF6, 0x3CC6, 0x63FD, 0x3CC7, 0x84B9, 0x3CC8, 0x9F6C, 0x3CC9, 0xB454, 0x3CCA, 0xC3A8, 0x3CCB, 0xCDA9, 0x3CCC, 0xD286, 0x3CCD, 0xD271, 0x3CCE, 0xCD9E, 0x3CCF, 0xC433, 0x3CD0, 0xB661, 0x3CD1, 0xA44D, 0x3CD2, 0x8E1D, 0x3CD3, 0x73F0, 0x3CD4, 0x55EE, 0x3CD5, 0x3435, 0x3CD6, 0x0EE5, 0x3CD6, 0xE61B, 0x3CD7, 0xB9F0, 0x3CD8, 0x8A86, 0x3CD9, 0x57F0, 0x3CDA, 0x224B, 0x3CDA, 0xE9A6, 0x3CDB, 0xAE1C, 0x3CDC, 0x6FC8, 0x3CDD, 0x2EB5, 0x3CDD, 0xEAFD, 0x3CDE, 0xA4B1, 0x3CDF, 0x5BE0, 0x3CE0, 0x109C, 0x3CE0, 0xC2F9, 0x3CE1, 0x7307, 0x3CE2, 0x20D2, 0x3CE2, 0xCC68, 0x3CE3, 0x75DC, 0x3CE4, 0x1D36, 0x3CE4, 0xC282, 0x3CE5, 0x65D6, 0x3CE6, 0x0736, 0x3CE6, 0xA6AD, 0x3CE7, 0x4452, 0x3CE7, 0xE01E, 0x3CE8, 0x7A2D, 0x3CE9, 0x127E, 0x3CE9, 0xA91C, 0x3CEA, 0x3E12, 0x3CEA, 0xD16A, 0x3CEB, 0x6330, 0x3CEB, 0xF369, 0x3CEC, 0x821F, 0x3CED, 0x0F52, 0x3CED, 0x9B19, 0x3CEE, 0x256D, 0x3CEE, 0xAE5E, 0x3CEF, 0x35F3, 0x3CEF, 0xBC2B, 0x3CF0, 0x411B, 0x3CF0, 0xC4B9, 0x3CF1, 0x471A, 0x3CF1, 0xC83A, 0x3CF2, 0x4821, 0x3CF2, 0xC6D7, 0x3CF3, 0x4466, 0x3CF3, 0xC0C7, 0x3CF4, 0x3C0D, 0x3CF4, 0xB635, 0x3CF5, 0x2F47, 0x3CF5, 0xA747, 0x3CF6, 0x1E3A, 0x3CF6, 0x9426, 0x3CF7, 0x090B, 0x3CF7, 0x7CF4, 0x3CF7, 0xEFE1, 0x3CF8, 0x61D6, 0x3CF8, 0xD2DA, 0x3CF9, 0x42ED, 0x3CF9, 0xB218, 0x3CFA, 0x205D, 0x3CFA, 0x8DBB, 0x3CFA, 0xFA3C, 0x3CFB, 0x65E2, 0x3CFB, 0xD0AB, 0x3CFC, 0x3AA4, 0x3CFC, 0xA3CA, 0x3CFD, 0x0C20, 0x3CFD, 0x73A9, 0x3CFD, 0xDA6C, 0x3CFE, 0x406D, 0x3CFE, 0xA5A8, 0x3CFF, 0x0A21, 0x3CFF, 0x6DE4, 0x3CFF, 0xD0E6, 0x3D00, 0x199B, 0x3D00, 0x4A68, 0x3D00, 0x7ADA, 0x3D00, 0xAAF6, 0x3D00, 0xDABC, 0x3D01, 0x0A2C, 0x3D01, 0x3948, 0x3D01, 0x6812, 0x3D01, 0x9688, 0x3D01, 0xC4AE, 0x3D01, 0xF286, 0x3D02, 0x2010, 0x3D02, 0x4D4A, 0x3D02, 0x7A39, 0x3D02, 0xA6DC, 0x3D02, 0xD334, 0x3D02, 0xFF44, 0x3D03, 0x2B0B, 0x3D03, 0x5689, 0x3D03, 0x81C2, 0x3D03, 0xACB3, 0x3D03, 0xD760, 0x3D04, 0x01CA, 0x3D04, 0x2BF1, 0x3D04, 0x55D5, 0x3D04, 0x7F76, 0x3D04, 0xA8D9, 0x3D04, 0xD1FA, 0x3D04, 0xFADC, 0x3D05, 0x2380, 0x3D05, 0x4BE7, 0x3D05, 0x7410, 0x3D05, 0x9BFC, 0x3D05, 0xC3AC, 0x3D05, 0xEB24, 0x3D06, 0x1261, 0x3D06, 0x3962, 0x3D06, 0x602C, 0x3D06, 0x86BD, 0x3D06, 0xAD18, 0x3D06, 0xD33B, 0x3D06, 0xF926, 0x3D07, 0x1EDE, 0x3D07, 0x4460, 0x3D07, 0x69AC, 0x3D07, 0x8EC5, 0x3D07, 0xB3AB, 0x3D07, 0xD85E, 0x3D07, 0xFCDF, 0x3D08, 0x212C, 0x3D08, 0x454C, 0x3D08, 0x6938, 0x3D08, 0x8CF4, 0x3D08, 0xB080, 0x3D08, 0xD3DF, 0x3D08, 0xF70D, 0x3D09, 0x1A0D, 0x3D09, 0x3CE0, 0x3D09, 0x5F85, 0x3D09, 0x81FC, 0x3D09, 0xA449, 0x3D09, 0xC66B, 0x3D09, 0xE85E, 0x3D0A, 0x0A27, 0x3D0A, 0x2BC8, 0x3D0A, 0x4D3B, 0x3D0A, 0x6E86, 0x3D0A, 0x8FA9, 0x3D0A, 0xB0A0, 0x3D0A, 0xD170, 0x3D0A, 0xF217, 0x3D0B, 0x1298, 0x3D0B, 0x32EF, 0x3D0B, 0x5320, 0x3D0B, 0x732B, 0x3D0B, 0x930E, 0x3D0B, 0xB2CE, 0x3D0B, 0xD266, 0x3D0B, 0xF1D9, 0x3D0C, 0x1128, 0x3D0C, 0x3052, 0x3D0C, 0x4F56, 0x3D0C, 0x6E38, 0x3D0C, 0x8CF6, 0x3D0C, 0xAB8F, 0x3D0C, 0xCA08, 0x3D0C, 0xE85B, 0x3D0D, 0x068E, 0x3D0D, 0x249E, 0x3D0D, 0x428E, 0x3D0D, 0x605B, 0x3D0D, 0x7E05, 0x3D0D, 0x9B92, 0x3D0D, 0xB8FB, 0x3D0D, 0xD645, 0x3D0D, 0xF370, 0x3D0E, 0x1079, 0x3D0E, 0x2D65, 0x3D0E, 0x4A30, 0x3D0E, 0x66DB, 0x3D0E, 0x8369, 0x3D0E, 0x9FD9, 0x3D0E, 0xBC2B, 0x3D0E, 0xD85D, 0x3D0E, 0xF472, 0x3D0F, 0x106C, 0x3D0F, 0x2C46, 0x3D0F, 0x4804, 0x3D0F, 0x63A6, 0x3D0F, 0x7F29, 0x3D0F, 0x9A92, 0x3D0F, 0xB5DE, 0x3D0F, 0xD10E, 0x3D0F, 0xEC24, 0x3D10, 0x071C, 0x3D10, 0x21F9, 0x3D10, 0x3CBE, 0x3D10, 0x5766, 0x3D10, 0x71F3, 0x3D10, 0x8C68, 0x3D10, 0xA6C1, 0x3D10, 0xC100, 0x3D10, 0xDB27, 0x3D10, 0xF533, 0x3D11, 0x0F24, 0x3D11, 0x2900, 0x3D11, 0x42C0, 0x3D11, 0x5C69, 0x3D11, 0x75F7, 0x3D11, 0x8F6F, 0x3D11, 0xA8CD, 0x3D11, 0xC215, 0x3D11, 0xDB42, 0x3D11, 0xF459, 0x3D12, 0x0D59, 0x3D12, 0x2643, 0x3D12, 0x3F15, 0x3D12, 0x57CE, 0x3D12, 0x7070, 0x3D12, 0x88FF, 0x3D12, 0xA175, 0x3D12, 0xB9D4, 0x3D12, 0xD21D, 0x3D12, 0xEA50, 0x3D13, 0x026E, 0x3D13, 0x1A77, 0x3D13, 0x326A, 0x3D13, 0x4A47, 0x3D13, 0x6210, 0x3D13, 0x79C2, 0x3D13, 0x915F, 0x3D13, 0xA8E7, 0x3D13, 0xC05C, 0x3D13, 0xD7BB, 0x3D13, 0xEF08, 0x3D14, 0x063F, 0x3D14, 0x1D61, 0x3D14, 0x3470, 0x3D14, 0x4B6C, 0x3D14, 0x6253, 0x3D14, 0x7926, 0x3D14, 0x8FE7, 0x3D14, 0xA693, 0x3D14, 0xBD2E, 0x3D14, 0xD3B4, 0x3D14, 0xEA28, 0x3D15, 0x0088, 0x3D15, 0x16D6, 0x3D15, 0x2D13, 0x3D15, 0x433B, 0x3D15, 0x5953, 0x3D15, 0x6F58, 0x3D15, 0x854B, 0x3D15, 0x9B2A, 0x3D15, 0xB0FA, 0x3D15, 0xC6B6, 0x3D15, 0xDC60, 0x3D15, 0xF1FA, 0x3D16, 0x0784, 0x3D16, 0x1CFB, 0x3D16, 0x3261, 0x3D16, 0x47B5, 0x3D16, 0x5CF9, 0x3D16, 0x722D, 0x3D16, 0x874E, 0x3D16, 0x9C5F, 0x3D16, 0xB160, 0x3D16, 0xC650, 0x3D16, 0xDB31, 0x3D16, 0xF001, 0x3D17, 0x04C2, 0x3D17, 0x196F, 0x3D17, 0x2E0F, 0x3D17, 0x429F, 0x3D17, 0x571F, 0x3D17, 0x6B8F, 0x3D17, 0x7FF1, 0x3D17, 0x9441, 0x3D17, 0xA883, 0x3D17, 0xBCB5, 0x3D17, 0xD0DA, 0x3D17, 0xE4EE, 0x3D17, 0xF8F3, 0x3D18, 0x0CE7, 0x3D18, 0x20D1, 0x3D18, 0x34A7, 0x3D18, 0x4871, 0x3D18, 0x5C2D, 0x3D18, 0x6FD9, 0x3D18, 0x8377, 0x3D18, 0x9708, 0x3D18, 0xAA89, 0x3D18, 0xBDFC, 0x3D18, 0xD163, 0x3D18, 0xE4B8, 0x3D18, 0xF801, 0x3D19, 0x0B3C, 0x3D19, 0x1E6A, 0x3D19, 0x318A, 0x3D19, 0x449D, 0x3D19, 0x57A2, 0x3D19, 0x6A98, 0x3D19, 0x7D82, 0x3D19, 0x905F, 0x3D19, 0xA32C, 0x3D19, 0xB5EF, 0x3D19, 0xC8A4, 0x3D19, 0xDB4B, 0x3D19, 0xEDE5, 0x3D1A, 0x0074, 0x3D1A, 0x12F4, 0x3D1A, 0x2568, 0x3D1A, 0x37CF, 0x3D1A, 0x4A2B, 0x3D1A, 0x5C7A, 0x3D1A, 0x6EBC, 0x3D1A, 0x80F0, 0x3D1A, 0x9319, 0x3D1A, 0xA535, 0x3D1A, 0xB746, 0x3D1A, 0xC94A, 0x3D1A, 0xDB43, 0x3D1A, 0xED2E, 0x3D1A, 0xFF0F, 0x3D1B, 0x10E3, 0x3D1B, 0x22AB, 0x3D1B, 0x3467, 0x3D1B, 0x461A, 0x3D1B, 0x57BD, 0x3D1B, 0x6958, 0x3D1B, 0x7AE5, 0x3D1B, 0x8C68, 0x3D1B, 0x9DDE, 0x3D1B, 0xAF4B, 0x3D1B, 0xC0AB, 0x3D1B, 0xD200, 0x3D1B, 0xE348, 0x3D1B, 0xF488, 0x3D1C, 0x05BA, 0x3D1C, 0x16E5, 0x3D1C, 0x2801, 0x3D1C, 0x3914, 0x3D1C, 0x4A1B, 0x3D1C, 0x5B18, 0x3D1C, 0x6C0C, 0x3D1C, 0x7CF3, 0x3D1C, 0x8DD0, 0x3D1C, 0x9EA2, 0x3D1C, 0xAF69, 0x3D1C, 0xC027, 0x3D1C, 0xD0D9, 0x3D1C, 0xE182, 0x3D1C, 0xF21E, 0x3D1D, 0x02B2, 0x3D1D, 0x133C, 0x3D1D, 0x23BD, 0x3D1D, 0x3431, 0x3D1D, 0x449C, 0x3D1D, 0x54FD, 0x3D1D, 0x6553, 0x3D1D, 0x75A2, 0x3D1D, 0x85E2, 0x3D1D, 0x961E, 0x3D1D, 0xA64C, 0x3D1D, 0xB672, 0x3D1D, 0xC68D, 0x3D1D, 0xD6A0, 0x3D1D, 0xE6A8, 0x3D1D, 0xF6A6, 0x3D1E, 0x069B, 0x3D1E, 0x1689, 0x3D1E, 0x266C, 0x3D1E, 0x3644, 0x3D1E, 0x4614, 0x3D1E, 0x55D9, 0x3D1E, 0x6596, 0x3D1E, 0x754C, 0x3D1E, 0x84F6, 0x3D1E, 0x9498, 0x3D1E, 0xA430, 0x3D1E, 0xB3C0, 0x3D1E, 0xC344, 0x3D1E, 0xD2C4, 0x3D1E, 0xE236, 0x3D1E, 0xF1A3, 0x3D1F, 0x0105, 0x3D1F, 0x105E, 0x3D1F, 0x1FB0, 0x3D1F, 0x2EF7, 0x3D1F, 0x3E39, 0x3D1F, 0x4D6D, 0x3D1F, 0x5C9C, 0x3D1F, 0x6BC3, 0x3D1F, 0x7ADF, 0x3D1F, 0x89F4, 0x3D1F, 0x9900, 0x3D1F, 0xA804, 0x3D1F, 0xB700, 0x3D1F, 0xC5F3, 0x3D1F, 0xD4DD, 0x3D1F, 0xE3C0, 0x3D1F, 0xF299, 0x3D20, 0x016A, 0x3D20, 0x1033, 0x3D20, 0x1EF7, 0x3D20, 0x2DB0, 0x3D20, 0x3C61, 0x3D20, 0x4B09, 0x3D20, 0x59AA, 0x3D20, 0x6845, 0x3D20, 0x76D6, 0x3D20, 0x855E, 0x3D20, 0x93E1, 0x3D20, 0xA25A, 0x3D20, 0xB0CD, 0x3D20, 0xBF35, 0x3D20, 0xCD98, 0x3D20, 0xDBF3, 0x3D20, 0xEA46, 0x3D20, 0xF891, 0x3D21, 0x06D3, 0x3D21, 0x1511, 0x3D21, 0x2346, 0x3D21, 0x3173, 0x3D21, 0x3F98, 0x3D21, 0x4DB6, 0x3D21, 0x5BCD, 0x3D21, 0x69DA, 0x3D21, 0x77E5, 0x3D21, 0x85E4, 0x3D21, 0x93DF, 0x3D21, 0xA1CE, 0x3D21, 0xAFBB, 0x3D21, 0xBD9D, 0x3D21, 0xCB7A, 0x3D21, 0xD94E, 0x3D21, 0xE71E, 0x3D21, 0xF4E5, 0x3D22, 0x02A4, 0x3D22, 0x105B, 0x3D22, 0x1E0D, 0x3D22, 0x2BB9, 0x3D22, 0x395E, 0x3D22, 0x46FA, 0x3D22, 0x548E, 0x3D22, 0x6220, 0x3D22, 0x6FA7, 0x3D22, 0x7D28, 0x3D22, 0x8AA2, 0x3D22, 0x9816, 0x3D22, 0xA584, 0x3D22, 0xB2EB, 0x3D22, 0xC049, 0x3D22, 0xCDA3, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3BB1, 0xED50, 0x3C0D, 0x3A42, 0x3C32, 0x68FE, 0x3C4F, 0x4F08, 0x3C66, 0xF537, 0x3C7A, 0xFABD, 0x3C86, 0x2BCE, 0x3C8D, 0xD617, 0x3C94, 0xB2EA, 0x3C9A, 0xE96B, 0x3CA0, 0x9678, 0x3CA5, 0xD003, 0x3CAA, 0xA723, 0x3CAF, 0x295E, 0x3CB3, 0x61A7, 0x3CB7, 0x58E7, 0x3CBB, 0x1692, 0x3CBE, 0xA0D5, 0x3CC1, 0xFCF0, 0x3CC5, 0x2F6A, 0x3CC8, 0x3C14, 0x3CCB, 0x264F, 0x3CCD, 0xF104, 0x3CD0, 0x9EC4, 0x3CD3, 0x31D6, 0x3CD5, 0xAC34, 0x3CD8, 0x0FAC, 0x3CDA, 0x5DDA, 0x3CDC, 0x982C, 0x3CDE, 0xBFF4, 0x3CE0, 0xD654, 0x3CE2, 0xDC63, 0x3CE4, 0xD319, 0x3CE6, 0xBB5B, 0x3CE8, 0x95F6, 0x3CEA, 0x63A6, 0x3CEC, 0x2522, 0x3CED, 0xDB0A, 0x3CEF, 0x85EF, 0x3CF1, 0x265E, 0x3CF2, 0xBCD6, 0x3CF4, 0x49D4, 0x3CF5, 0xCDBD, 0x3CF7, 0x4907, 0x3CF8, 0xBC09, 0x3CFA, 0x271E, 0x3CFB, 0x8AA0, 0x3CFC, 0xE6D6, 0x3CFE, 0x3C16, 0x3CFF, 0x8A9F, 0x3D00, 0x695C, 0x3D01, 0x0A4F, 0x3D01, 0xA846, 0x3D02, 0x435C, 0x3D02, 0xDBAA, 0x3D03, 0x714F, 0x3D04, 0x045C, 0x3D04, 0x94ED, 0x3D05, 0x2312, 0x3D05, 0xAEE4, 0x3D06, 0x3874, 0x3D06, 0xBFD5, 0x3D07, 0x4519, 0x3D07, 0xC84E, 0x3D08, 0x4988, 0x3D08, 0xC8D4, 0x3D09, 0x4642, 0x3D09, 0xC1DE, 0x3D0A, 0x3BB6, 0x3D0A, 0xB3D6, 0x3D0B, 0x2A4E, 0x3D0B, 0x9F23, 0x3D0C, 0x1268, 0x3D0C, 0x8422, 0x3D0C, 0xF45D, 0x3D0D, 0x6322, 0x3D0D, 0xD080, 0x3D0E, 0x3C79, 0x3D0E, 0xA71A, 0x3D0F, 0x106C, 0x3D0F, 0x7873, 0x3D0F, 0xDF3B, 0x3D10, 0x44C9, 0x3D10, 0xA928, 0x3D11, 0x0C5D, 0x3D11, 0x6E6D, 0x3D11, 0xCF60, 0x3D12, 0x2F3F, 0x3D12, 0x8E0D, 0x3D12, 0xEBD0, 0x3D13, 0x488F, 0x3D13, 0xA44F, 0x3D13, 0xFF16, 0x3D14, 0x58E8, 0x3D14, 0xB1CE, 0x3D15, 0x09C8, 0x3D15, 0x60DD, 0x3D15, 0xB711, 0x3D16, 0x0C69, 0x3D16, 0x60EA, 0x3D16, 0xB498, 0x3D17, 0x0773, 0x3D17, 0x5986, 0x3D17, 0xAAD2, 0x3D17, 0xFB59, 0x3D18, 0x4B20, 0x3D18, 0x9A2B, 0x3D18, 0xE87C, 0x3D19, 0x3617, 0x3D19, 0x8301, 0x3D19, 0xCF3C, 0x3D1A, 0x1AC9, 0x3D1A, 0x65AF, 0x3D1A, 0xAFEF, 0x3D1A, 0xF989, 0x3D1B, 0x4284, 0x3D1B, 0x8AE3, 0x3D1B, 0xD2A4, 0x3D1C, 0x19CF, 0x3D1C, 0x6061, 0x3D1C, 0xA661, 0x3D1C, 0xEBD1, 0x3D1D, 0x30B0, 0x3D1D, 0x7506, 0x3D1D, 0xB8CE, 0x3D1D, 0xFC0F, 0x3D1E, 0x3ECA, 0x3D1E, 0x8102, 0x3D1E, 0xC2B9, 0x3D1F, 0x03EC, 0x3D1F, 0x44A4, 0x3D1F, 0x84E0, 0x3D1F, 0xC4A1, 0x3D20, 0x03EC, 0x3D20, 0x42BE, 0x3D20, 0x811A, 0x3D20, 0xBF05, 0x3D20, 0xFC7D, 0x3D21, 0x3986, 0x3D21, 0x761F, 0x3D21, 0xB24D, 0x3D21, 0xEE11, 0x3D22, 0x2968, 0x3D22, 0x6459, 0x3D22, 0x9EE1, 0x3D22, 0xD906, 0x3D23, 0x12C4, 0x3D23, 0x4C23, 0x3D23, 0x851D, 0x3D23, 0xBDBA, 0x3D23, 0xF5F6, 0x3D24, 0x2DD5, 0x3D24, 0x6558, 0x3D24, 0x9C7D, 0x3D24, 0xD34C, 0x3D25, 0x09C0, 0x3D25, 0x3FDB, 0x3D25, 0x75A0, 0x3D25, 0xAB10, 0x3D25, 0xE02C, 0x3D26, 0x14F2, 0x3D26, 0x4968, 0x3D26, 0x7D8B, 0x3D26, 0xB160, 0x3D26, 0xE4E4, 0x3D27, 0x1817, 0x3D27, 0x4B00, 0x3D27, 0x7D9B, 0x3D27, 0xAFE8, 0x3D27, 0xE1EC, 0x3D28, 0x13A5, 0x3D28, 0x4516, 0x3D28, 0x763E, 0x3D28, 0xA721, 0x3D28, 0xD7BB, 0x3D29, 0x080F, 0x3D29, 0x381D, 0x3D29, 0x67E6, 0x3D29, 0x976E, 0x3D29, 0xC6B3, 0x3D29, 0xF5B2, 0x3D2A, 0x2474, 0x3D2A, 0x52F2, 0x3D2A, 0x8133, 0x3D2A, 0xAF33, 0x3D2A, 0xDCF6, 0x3D2B, 0x0A78, 0x3D2B, 0x37BF, 0x3D2B, 0x64C8, 0x3D2B, 0x9196, 0x3D2B, 0xBE2A, 0x3D2B, 0xEA7F, 0x3D2C, 0x169C, 0x3D2C, 0x4281, 0x3D2C, 0x6E2B, 0x3D2C, 0x999C, 0x3D2C, 0xC4D7, 0x3D2C, 0xEFDB, 0x3D2D, 0x1AA5, 0x3D2D, 0x453D, 0x3D2D, 0x6F9D, 0x3D2D, 0x99C7, 0x3D2D, 0xC3BD, 0x3D2D, 0xED81, 0x3D2E, 0x170F, 0x3D2E, 0x406A, 0x3D2E, 0x6992, 0x3D2E, 0x928A, 0x3D2E, 0xBB4F, 0x3D2E, 0xE3E3, 0x3D2F, 0x0C48, 0x3D2F, 0x3479, 0x3D2F, 0x5C7C, 0x3D2F, 0x844F, 0x3D2F, 0xABF5, 0x3D2F, 0xD36A, 0x3D2F, 0xFAB4, 0x3D30, 0x21CE, 0x3D30, 0x48BB, 0x3D30, 0x6F7C, 0x3D30, 0x9610, 0x3D30, 0xBC79, 0x3D30, 0xE2B4, 0x3D31, 0x08C4, 0x3D31, 0x2EAC, 0x3D31, 0x5466, 0x3D31, 0x79F8, 0x3D31, 0x9F5F, 0x3D31, 0xC49E, 0x3D31, 0xE9B2, 0x3D32, 0x0EA0, 0x3D32, 0x3364, 0x3D32, 0x5801, 0x3D32, 0x7C74, 0x3D32, 0xA0C2, 0x3D32, 0xC4E9, 0x3D32, 0xE8E9, 0x3D33, 0x0CC2, 0x3D33, 0x3074, 0x3D33, 0x5403, 0x3D33, 0x776C, 0x3D33, 0x9AAF, 0x3D33, 0xBDCD, 0x3D33, 0xE0C5, 0x3D34, 0x039B, 0x3D34, 0x264D, 0x3D34, 0x48DD, 0x3D34, 0x6B47, 0x3D34, 0x8D8E, 0x3D34, 0xAFB2, 0x3D34, 0xD1B6, 0x3D34, 0xF398, 0x3D35, 0x1556, 0x3D35, 0x36F1, 0x3D35, 0x586C, 0x3D35, 0x79C7, 0x3D35, 0x9AFF, 0x3D35, 0xBC1A, 0x3D35, 0xDD11, 0x3D35, 0xFDE9, 0x3D36, 0x1EA3, 0x3D36, 0x3F3A, 0x3D36, 0x5FB3, 0x3D36, 0x800C, 0x3D36, 0xA048, 0x3D36, 0xC064, 0x3D36, 0xE061, 0x3D37, 0x0042, 0x3D37, 0x2002, 0x3D37, 0x3FA8, 0x3D37, 0x5F2D, 0x3D37, 0x7E94, 0x3D37, 0x9DE1, 0x3D37, 0xBD0E, 0x3D37, 0xDC1F, 0x3D37, 0xFB16, 0x3D38, 0x19F0, 0x3D38, 0x38AC, 0x3D38, 0x574D, 0x3D38, 0x75D3, 0x3D38, 0x943B, 0x3D38, 0xB289, 0x3D38, 0xD0BC, 0x3D38, 0xEED4, 0x3D39, 0x0CD1, 0x3D39, 0x2AB4, 0x3D39, 0x487B, 0x3D39, 0x662B, 0x3D39, 0x83BF, 0x3D39, 0xA139, 0x3D39, 0xBE9B, 0x3D39, 0xDBE1, 0x3D39, 0xF90D, 0x3D3A, 0x1624, 0x3D3A, 0x331F, 0x3D3A, 0x5000, 0x3D3A, 0x6CCB, 0x3D3A, 0x897C, 0x3D3A, 0xA616, 0x3D3A, 0xC297, 0x3D3A, 0xDEFE, 0x3D3A, 0xFB51, 0x3D3B, 0x178B, 0x3D3B, 0x33AB, 0x3D3B, 0x4FB7, 0x3D3B, 0x6BA9, 0x3D3B, 0x8785, 0x3D3B, 0xA34C, 0x3D3B, 0xBEF8, 0x3D3B, 0xDA92, 0x3D3B, 0xF613, 0x3D3C, 0x117E, 0x3D3C, 0x2CD2, 0x3D3C, 0x4810, 0x3D3C, 0x633B, 0x3D3C, 0x7E4E, 0x3D3C, 0x9949, 0x3D3C, 0xB431, 0x3D3C, 0xCF03, 0x3D3C, 0xE9C0, 0x3D3D, 0x0468, 0x3D3D, 0x1EFD, 0x3D3D, 0x3979, 0x3D3D, 0x53E3, 0x3D3D, 0x6E38, 0x3D3D, 0x8879, 0x3D3D, 0xA2A3, 0x3D3D, 0xBCBC, 0x3D3D, 0xD6C0, 0x3D3D, 0xF0AE, 0x3D3E, 0x0A8A, 0x3D3E, 0x2453, 0x3D3E, 0x3E06, 0x3D3E, 0x57A7, 0x3D3E, 0x7135, 0x3D3E, 0x8AB0, 0x3D3E, 0xA415, 0x3D3E, 0xBD6B, 0x3D3E, 0xD6AA, 0x3D3E, 0xEFDA, 0x3D3F, 0x08F5, 0x3D3F, 0x21FC, 0x3D3F, 0x3AF4, 0x3D3F, 0x53D8, 0x3D3F, 0x6CA7, 0x3D3F, 0x8569, 0x3D3F, 0x9E15, 0x3D3F, 0xB6B2, 0x3D3F, 0xCF38, 0x3D3F, 0xE7B2, 0x3D40, 0x0018, 0x3D40, 0x186C, 0x3D40, 0x30AF, 0x3D40, 0x48E0, 0x3D40, 0x6101, 0x3D40, 0x790F, 0x3D40, 0x910D, 0x3D40, 0xA8FA, 0x3D40, 0xC0D5, 0x3D40, 0xD8A0, 0x3D40, 0xF05B, 0x3D41, 0x0805, 0x3D41, 0x1F9D, 0x3D41, 0x3728, 0x3D41, 0x4E9F, 0x3D41, 0x6609, 0x3D41, 0x7D61, 0x3D41, 0x94A8, 0x3D41, 0xABDF, 0x3D41, 0xC309, 0x3D41, 0xDA20, 0x3D41, 0xF129, 0x3D42, 0x0823, 0x3D42, 0x1F09, 0x3D42, 0x35E5, 0x3D42, 0x4CAE, 0x3D42, 0x636A, 0x3D42, 0x7A16, 0x3D42, 0x90B1, 0x3D42, 0xA73F, 0x3D42, 0xBDBD, 0x3D42, 0xD42E, 0x3D42, 0xEA8E, 0x3D43, 0x00E1, 0x3D43, 0x1724, 0x3D43, 0x2D57, 0x3D43, 0x437C, 0x3D43, 0x5994, 0x3D43, 0x6F9E, 0x3D43, 0x8599, 0x3D43, 0x9B86, 0x3D43, 0xB163, 0x3D43, 0xC732, 0x3D43, 0xDCF4, 0x3D43, 0xF2A9, 0x3D44, 0x0850, 0x3D44, 0x1DE7, 0x3D44, 0x3373, 0x3D44, 0x48F0, 0x3D44, 0x5E5F, 0x3D44, 0x73C0, 0x3D44, 0x8917, 0x3D44, 0x9E5D, 0x3D44, 0xB396, 0x3D44, 0xC8C2, 0x3D44, 0xDDE0, 0x3D44, 0xF2F4, 0x3D45, 0x07F7, 0x3D45, 0x1CF0, 0x3D45, 0x31D9, 0x3D45, 0x46B6, 0x3D45, 0x5B8A, 0x3D45, 0x704D, 0x3D45, 0x8505, 0x3D45, 0x99B0, 0x3D45, 0xAE4D, 0x3D45, 0xC2DD, 0x3D45, 0xD762, 0x3D45, 0xEBDD, 0x3D46, 0x0047, 0x3D46, 0x14A7, 0x3D46, 0x28FC, 0x3D46, 0x3D44, 0x3D46, 0x5180, 0x3D46, 0x65B0, 0x3D46, 0x79D2, 0x3D46, 0x8DE9, 0x3D46, 0xA1F6, 0x3D46, 0xB5F5, 0x3D46, 0xC9E9, 0x3D46, 0xDDD0, 0x3D46, 0xF1AC, 0x3D47, 0x057D, 0x3D47, 0x1941, 0x3D47, 0x2CFD, 0x3D47, 0x40A9, 0x3D47, 0x544D, 0x3D47, 0x67E3, 0x3D47, 0x7B6F, 0x3D47, 0x8EF0, 0x3D47, 0xA266, 0x3D47, 0xB5D2, 0x3D47, 0xC930, 0x3D47, 0xDC85, 0x3D47, 0xEFCE, 0x3D48, 0x030C, 0x3D48, 0x163F, 0x3D48, 0x2967, 0x3D48, 0x3C85, 0x3D48, 0x4F98, 0x3D48, 0x62A0, 0x3D48, 0x759D, 0x3D48, 0x8890, 0x3D48, 0x9B78, 0x3D48, 0xAE55, 0x3D48, 0xC12A, 0x3D48, 0xD3F2, 0x3D48, 0xE6AE, 0x3D48, 0xF963, 0x3D49, 0x0C0D, 0x3D49, 0x1EAD, 0x3D49, 0x3142, 0x3D49, 0x43CC, 0x3D49, 0x564D, 0x3D49, 0x68C5, 0x3D49, 0x7B31, 0x3D49, 0x8D93, 0x3D49, 0x9FEC, 0x3D49, 0xB23B, 0x3D49, 0xC47F, 0x3D49, 0xD6B9, 0x3D49, 0xE8EA, 0x3D49, 0xFB13, 0x3D4A, 0x0D2F, 0x3D4A, 0x1F43, 0x3D4A, 0x314F, 0x3D4A, 0x4350, 0x3D4A, 0x5546, 0x3D4A, 0x6734, 0x3D4A, 0x7918, 0x3D4A, 0x8AF3, 0x3D4A, 0x9CC4, 0x3D4A, 0xAE8D, 0x3D4A, 0xC04B, 0x3D4A, 0xD201, 0x3D4A, 0xE3AE, 0x3D4A, 0xF54F, 0x3D4B, 0x06EA, 0x3D4B, 0x187A, 0x3D4B, 0x2A02, 0x3D4B, 0x3B80, 0x3D4B, 0x4CF5, 0x3D4B, 0x5E63, 0x3D4B, 0x6FC5, 0x3D4B, 0x8120, 0x3D4B, 0x9273, 0x3D4B, 0xA3BA, 0x3D4B, 0xB4FD, 0x3D4B, 0xC632, 0x3D4B, 0xD761, 0x3D4B, 0xE886, 0x3D4B, 0xF9A6, 0x3D4C, 0x0AB8, 0x3D4C, 0x1BC5, 0x3D4C, 0x2CCA, 0x3D4C, 0x3DC4, 0x3D4C, 0x4EB5, 0x3D4C, 0x5F9F, 0x3D4C, 0x7081, 0x3D4C, 0x815B, 0xBF80, 0x0000, 0x0000, 0x0000, 0x3BED, 0x734F, 0x3C3C, 0x92CE, 0x3C6E, 0x4F89, 0x3C8A, 0x7F15, 0x3C9A, 0x5526, 0x3CA7, 0xBED1, 0x3CB3, 0x61A7, 0x3CBD, 0xA89D, 0x3CC6, 0xDCD4, 0x3CCF, 0x3283, 0x3CD6, 0xD046, 0x3CDD, 0xD36A, 0x3CE4, 0x52D0, 0x3CEA, 0x608C, 0x3CF0, 0x0B40, 0x3CF5, 0x5ED7, 0x3CFA, 0x6547, 0x3CFF, 0x26D7, 0x3D01, 0xD548, 0x3D03, 0xFB3D, 0x3D06, 0x07DA, 0x3D07, 0xFD65, 0x3D09, 0xDDCD, 0x3D0B, 0xAAC9, 0x3D0D, 0x65E2, 0x3D0F, 0x106C, 0x3D10, 0xAB99, 0x3D12, 0x3882, 0x3D13, 0xB816, 0x3D15, 0x2B38, 0x3D16, 0x92AE, 0x3D17, 0xEF35, 0x3D19, 0x416D, 0x3D1A, 0x89F2, 0x3D1B, 0xC94C, 0x3D1D, 0x0001, 0x3D1E, 0x2E7F, 0x3D1F, 0x5538, 0x3D20, 0x748D, 0x3D21, 0x8CDB, 0x3D22, 0x9E7B, 0x3D23, 0xA9BB, 0x3D24, 0xAEE9, 0x3D25, 0xAE45, 0x3D26, 0xA813, 0x3D27, 0x9C92, 0x3D28, 0x8BF5, 0x3D29, 0x7679, 0x3D2A, 0x5C4A, 0x3D2B, 0x3D9B, 0x3D2C, 0x1A98, 0x3D2C, 0xF36B, 0x3D2D, 0xC83A, 0x3D2E, 0x992D, 0x3D2F, 0x6665, 0x3D30, 0x3004, 0x3D30, 0xF62A, 0x3D31, 0xB8F8, 0x3D32, 0x7888, 0x3D33, 0x34F6, 0x3D33, 0xEE5A, 0x3D34, 0xA4D0, 0x3D35, 0x586C, 0x3D36, 0x0949, 0x3D36, 0xB77A, 0x3D37, 0x6311, 0x3D38, 0x0C26, 0x3D38, 0xB2C7, 0x3D39, 0x570C, 0x3D39, 0xF900, 0x3D3A, 0x98B8, 0x3D3B, 0x363F, 0x3D3B, 0xD1AB, 0x3D3C, 0x6B03, 0x3D3D, 0x025A, 0x3D3D, 0x97BB, 0x3D3E, 0x2B34, 0x3D3E, 0xBCD2, 0x3D3F, 0x4C9F, 0x3D3F, 0xDAA6, 0x3D40, 0x66F6, 0x3D40, 0xF195, 0x3D41, 0x7A91, 0x3D42, 0x01F3, 0x3D42, 0x87C2, 0x3D43, 0x0C09, 0x3D43, 0x8ED3, 0x3D44, 0x1025, 0x3D44, 0x9008, 0x3D45, 0x0E88, 0x3D45, 0x8BA8, 0x3D46, 0x0771, 0x3D46, 0x81EA, 0x3D46, 0xFB1C, 0x3D47, 0x730C, 0x3D47, 0xE9C1, 0x3D48, 0x5F42, 0x3D48, 0xD394, 0x3D49, 0x46BE, 0x3D49, 0xB8C6, 0x3D4A, 0x29B2, 0x3D4A, 0x9984, 0x3D4B, 0x0847, 0x3D4B, 0x75FD, 0x3D4B, 0xE2AD, 0x3D4C, 0x4E57, 0x3D4C, 0xB906, 0x3D4D, 0x22BB, 0x3D4D, 0x8B7C, 0x3D4D, 0xF34B, 0x3D4E, 0x5A30, 0x3D4E, 0xC02D, 0x3D4F, 0x2544, 0x3D4F, 0x8980, 0x3D4F, 0xECDD, 0x3D50, 0x4F61, 0x3D50, 0xB113, 0x3D51, 0x11F3, 0x3D51, 0x7206, 0x3D51, 0xD14E, 0x3D52, 0x2FD0, 0x3D52, 0x8D8E, 0x3D52, 0xEA8E, 0x3D53, 0x46CF, 0x3D53, 0xA257, 0x3D53, 0xFD25, 0x3D54, 0x5740, 0x3D54, 0xB0A9, 0x3D55, 0x0964, 0x3D55, 0x6174, 0x3D55, 0xB8D7, 0x3D56, 0x0F94, 0x3D56, 0x65AD, 0x3D56, 0xBB25, 0x3D57, 0x0FFA, 0x3D57, 0x6435, 0x3D57, 0xB7D2, 0x3D58, 0x0AD9, 0x3D58, 0x5D47, 0x3D58, 0xAF21, 0x3D59, 0x0067, 0x3D59, 0x511F, 0x3D59, 0xA147, 0x3D59, 0xF0E2, 0x3D5A, 0x3FF5, 0x3D5A, 0x8E7C, 0x3D5A, 0xDC80, 0x3D5B, 0x29FA, 0x3D5B, 0x76F4, 0x3D5B, 0xC36D, 0x3D5C, 0x0F63, 0x3D5C, 0x5ADD, 0x3D5C, 0xA5DB, 0x3D5C, 0xF05B, 0x3D5D, 0x3A66, 0x3D5D, 0x83F7, 0x3D5D, 0xCD10, 0x3D5E, 0x15B5, 0x3D5E, 0x5DE9, 0x3D5E, 0xA5A8, 0x3D5E, 0xECF8, 0x3D5F, 0x33DA, 0x3D5F, 0x7A4C, 0x3D5F, 0xC052, 0x3D60, 0x05ED, 0x3D60, 0x4B1F, 0x3D60, 0x8FE5, 0x3D60, 0xD449, 0x3D61, 0x1843, 0x3D61, 0x5BD8, 0x3D61, 0x9F09, 0x3D61, 0xE1DA, 0x3D62, 0x2448, 0x3D62, 0x6654, 0x3D62, 0xA803, 0x3D62, 0xE951, 0x3D63, 0x2A44, 0x3D63, 0x6ADC, 0x3D63, 0xAB15, 0x3D63, 0xEAF7, 0x3D64, 0x2A7F, 0x3D64, 0x69AF, 0x3D64, 0xA886, 0x3D64, 0xE70A, 0x3D65, 0x2536, 0x3D65, 0x630E, 0x3D65, 0xA093, 0x3D65, 0xDDC5, 0x3D66, 0x1AA7, 0x3D66, 0x5735, 0x3D66, 0x9375, 0x3D66, 0xCF65, 0x3D67, 0x0B04, 0x3D67, 0x4658, 0x3D67, 0x8161, 0x3D67, 0xBC19, 0x3D67, 0xF689, 0x3D68, 0x30AE, 0x3D68, 0x6A8A, 0x3D68, 0xA41B, 0x3D68, 0xDD64, 0x3D69, 0x1667, 0x3D69, 0x4F21, 0x3D69, 0x8796, 0x3D69, 0xBFC5, 0x3D69, 0xF7B0, 0x3D6A, 0x2F56, 0x3D6A, 0x66B9, 0x3D6A, 0x9DD6, 0x3D6A, 0xD4B2, 0x3D6B, 0x0B4F, 0x3D6B, 0x41AA, 0x3D6B, 0x77C3, 0x3D6B, 0xAD9B, 0x3D6B, 0xE335, 0x3D6C, 0x1892, 0x3D6C, 0x4DAE, 0x3D6C, 0x8290, 0x3D6C, 0xB733, 0x3D6C, 0xEB99, 0x3D6D, 0x1FC3, 0x3D6D, 0x53B3, 0x3D6D, 0x8768, 0x3D6D, 0xBAE1, 0x3D6D, 0xEE20, 0x3D6E, 0x2128, 0x3D6E, 0x53F6, 0x3D6E, 0x868B, 0x3D6E, 0xB8E8, 0x3D6E, 0xEB10, 0x3D6F, 0x1CFE, 0x3D6F, 0x4EB8, 0x3D6F, 0x803B, 0x3D6F, 0xB189, 0x3D6F, 0xE2A1, 0x3D70, 0x1384, 0x3D70, 0x4436, 0x3D70, 0x74AF, 0x3D70, 0xA4F9, 0x3D70, 0xD50F, 0x3D71, 0x04F3, 0x3D71, 0x34A3, 0x3D71, 0x6423, 0x3D71, 0x9373, 0x3D71, 0xC290, 0x3D71, 0xF17F, 0x3D72, 0x203B, 0x3D72, 0x4ECA, 0x3D72, 0x7D28, 0x3D72, 0xAB59, 0x3D72, 0xD959, 0x3D73, 0x072C, 0x3D73, 0x34D1, 0x3D73, 0x6248, 0x3D73, 0x8F92, 0x3D73, 0xBCB0, 0x3D73, 0xE9A2, 0x3D74, 0x1668, 0x3D74, 0x4300, 0x3D74, 0x6F71, 0x3D74, 0x9BB3, 0x3D74, 0xC7CB, 0x3D74, 0xF3BA, 0x3D75, 0x1F7F, 0x3D75, 0x4B19, 0x3D75, 0x768A, 0x3D75, 0xA1D0, 0x3D75, 0xCCF1, 0x3D75, 0xF7E7, 0x3D76, 0x22B4, 0x3D76, 0x4D59, 0x3D76, 0x77D9, 0x3D76, 0xA231, 0x3D76, 0xCC60, 0x3D76, 0xF669, 0x3D77, 0x204D, 0x3D77, 0x4A09, 0x3D77, 0x739F, 0x3D77, 0x9D10, 0x3D77, 0xC65B, 0x3D77, 0xEF83, 0x3D78, 0x1883, 0x3D78, 0x4160, 0x3D78, 0x6A1A, 0x3D78, 0x92AE, 0x3D78, 0xBB1D, 0x3D78, 0xE369, 0x3D79, 0x0B95, 0x3D79, 0x339B, 0x3D79, 0x5B7E, 0x3D79, 0x833F, 0x3D79, 0xAADC, 0x3D79, 0xD257, 0x3D79, 0xF9B1, 0x3D7A, 0x20EB, 0x3D7A, 0x4800, 0x3D7A, 0x6EF7, 0x3D7A, 0x95CB, 0x3D7A, 0xBC7F, 0x3D7A, 0xE313, 0x3D7B, 0x0984, 0x3D7B, 0x2FD7, 0x3D7B, 0x560A, 0x3D7B, 0x7C1A, 0x3D7B, 0xA210, 0x3D7B, 0xC7E2, 0x3D7B, 0xED97, 0x3D7C, 0x132C, 0x3D7C, 0x38A3, 0x3D7C, 0x5DFA, 0x3D7C, 0x8333, 0x3D7C, 0xA84F, 0x3D7C, 0xCD4E, 0x3D7C, 0xF22F, 0x3D7D, 0x16EF, 0x3D7D, 0x3B95, 0x3D7D, 0x601D, 0x3D7D, 0x8488, 0x3D7D, 0xA8D5, 0x3D7D, 0xCD05, 0x3D7D, 0xF11A, 0x3D7E, 0x1511, 0x3D7E, 0x38EE, 0x3D7E, 0x5CAD, 0x3D7E, 0x8051, 0x3D7E, 0xA3DA, 0x3D7E, 0xC748, 0x3D7E, 0xEA99, 0x3D7F, 0x0DCF, 0x3D7F, 0x30EB, 0x3D7F, 0x53EB, 0x3D7F, 0x76D1, 0x3D7F, 0x999E, 0x3D7F, 0xBC4E, 0x3D7F, 0xDEE5, 0x3D80, 0x00B1, 0x3D80, 0x11E2, 0x3D80, 0x2307, 0x3D80, 0x341F, 0x3D80, 0x452A, 0x3D80, 0x5629, 0x3D80, 0x671B, 0x3D80, 0x7800, 0x3D80, 0x88DA, 0x3D80, 0x99A6, 0x3D80, 0xAA66, 0x3D80, 0xBB1A, 0x3D80, 0xCBC2, 0x3D80, 0xDC5E, 0x3D80, 0xECEE, 0x3D80, 0xFD72, 0x3D81, 0x0DEA, 0x3D81, 0x1E57, 0x3D81, 0x2EB7, 0x3D81, 0x3F0C, 0x3D81, 0x4F56, 0x3D81, 0x5F92, 0x3D81, 0x6FC6, 0x3D81, 0x7FEC, 0x3D81, 0x9008, 0x3D81, 0xA019, 0x3D81, 0xB01D, 0x3D81, 0xC017, 0x3D81, 0xD005, 0x3D81, 0xDFEA, 0x3D81, 0xEFC2, 0x3D81, 0xFF90, 0x3D82, 0x0F53, 0x3D82, 0x1F0B, 0x3D82, 0x2EB8, 0x3D82, 0x3E5A, 0x3D82, 0x4DF3, 0x3D82, 0x5D80, 0x3D82, 0x6D04, 0x3D82, 0x7C7C, 0x3D82, 0x8BEA, 0x3D82, 0x9B4E, 0x3D82, 0xAAA8, 0x3D82, 0xB9F7, 0x3D82, 0xC93B, 0x3D82, 0xD876, 0x3D82, 0xE7A6, 0x3D82, 0xF6CD, 0x3D83, 0x05E9, 0x3D83, 0x14FC, 0x3D83, 0x2406, 0x3D83, 0x3306, 0x3D83, 0x41FB, 0x3D83, 0x50E5, 0x3D83, 0x5FC8, 0x3D83, 0x6E9F, 0x3D83, 0x7D6F, 0x3D83, 0x8C34, 0x3D83, 0x9AF0, 0x3D83, 0xA9A2, 0x3D83, 0xB84A, 0x3D83, 0xC6EA, 0x3D83, 0xD580, 0x3D83, 0xE40E, 0x3D83, 0xF291, 0x3D84, 0x010C, 0x3D84, 0x0F7D, 0x3D84, 0x1DE6, 0x3D84, 0x2C45, 0x3D84, 0x3A9C, 0x3D84, 0x48E9, 0x3D84, 0x572D, 0x3D84, 0x6569, 0x3D84, 0x739C, 0x3D84, 0x81C6, 0x3D84, 0x8FE7, 0x3D84, 0x9E01, 0x3D84, 0xAC10, 0x3D84, 0xBA18, 0x3D84, 0xC818, 0x3D84, 0xD60E, 0x3D84, 0xE3FC, 0x3D84, 0xF1E1, 0x3D84, 0xFFBF, 0x3D85, 0x0D93, 0x3D85, 0x1B60, 0x3D85, 0x2923, 0x3D85, 0x36E0, 0x3D85, 0x4494, 0x3D85, 0x523F, 0x3D85, 0x5FE2, 0x3D85, 0x6D7F, 0x3D85, 0x7B11, 0x3D85, 0x889E, 0x3D85, 0x9620, 0x3D85, 0xA39C, 0x3D85, 0xB10F, 0x3D85, 0xBE7B, 0x3D85, 0xCBDF, 0x3D85, 0xD93B, 0x3D85, 0xE690, 0x3D85, 0xF3DC, 0x3D86, 0x0121, 0x3D86, 0x0E5E, 0x3D86, 0x1B94, 0x3D86, 0x28C2, 0x3D86, 0x35E9, 0x3D86, 0x4308, 0x3D86, 0x501F, 0x3D86, 0x5D30, 0x3D86, 0x6A39, 0x3D86, 0x7739, 0x3D86, 0x8433, 0x3D86, 0x9127, 0x3D86, 0x9E12, 0x3D86, 0xAAF6, 0x3D86, 0xB7D2, 0x3D86, 0xC4A8, 0x3D86, 0xD177, 0x3D86, 0xDE3F, 0x3D86, 0xEAFF, 0x3D86, 0xF7B9, 0x3D87, 0x046A, 0x3D87, 0x1116, 0x3D87, 0x1DBA, 0x3D87, 0x2A58, 0x3D87, 0x36EE, 0x3D87, 0x437E, 0x3D87, 0x5006, 0x3D87, 0x5C88, 0x3D87, 0x6904, 0x3D87, 0x7578, 0x3D87, 0x81E6, 0x3D87, 0x8E4C, 0x3D87, 0x9AAD, 0x3D87, 0xA706, 0x3D87, 0xB359, 0x3D87, 0xBFA6, 0x3D87, 0xCBEB, 0x3D87, 0xD82A, 0x3D87, 0xE463, 0x3D87, 0xF096, 0x3D87, 0xFCC1, 0x3D88, 0x08E7, 0x3D88, 0x1506, 0x3D88, 0x211F, 0x3D88, 0x2D30, 0x3D88, 0x393D, 0x3D88, 0x4542, 0x3D88, 0x5141, 0x3D88, 0x5D3B, 0x3D88, 0x692D, 0x3D88, 0x751B, 0x3D88, 0x8100, 0x3D88, 0x8CE2, 0x3D88, 0x98BB, 0x3D88, 0xA490, 0x3D88, 0xB05E, 0x3D88, 0xBC25, 0x3D88, 0xC7E8, 0x3D88, 0xD3A4, 0x3D88, 0xDF5A, 0x3D88, 0xEB0A, 0x3D88, 0xF6B4, 0x3D89, 0x0258, 0x3D89, 0x0DF6, 0x3D89, 0x198F, 0x3D89, 0x2522, 0x3D89, 0x30AF, 0x3D89, 0x3C35, 0x3D89, 0x47B7, 0x3D89, 0x5333, 0x3D89, 0x5EA9, 0x3D89, 0x6A18, 0x3D89, 0x7583, 0x0001, 0x0203, 0x0400, 0x0102, 0x0304, 0x0001, 0x0203, 0x0400, 0x0102, 0x0304, 0x0001, 0x0203, 0x0405, 0x0607, 0x0805, 0x0607, 0x0805, 0x0607, 0x0805, 0x0607, 0x0805, 0x0607, 0x0809, 0x0A0B, 0x090A, 0x0B09, 0x0A0B, 0x090A, 0x0B09, 0x0A0B, 0x0000, 0x0000, 0x0001, 0x0101, 0x0101, 0x0202, 0x0202, 0x0203, 0x0303, 0x0303, 0x0404, 0x0404, 0x0400, 0x0000, 0x0001, 0x0101, 0x0102, 0x0202, 0x0203, 0x0303, 0x0304, 0x0404, 0x0400, 0x0000, 0x0101, 0x0102, 0x0202, 0x0303, 0x0304, 0x0404, 0x0000, 0x0000, 0x0000, 0x0000 diff --git a/ver/us/asm/data/95130.data.s b/ver/us/asm/data/95130.data.s deleted file mode 100644 index 85da101c05..0000000000 --- a/ver/us/asm/data/95130.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_800FBC80 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00222000, 0x00000000, 0x00000000, 0x00000000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x42111240, 0x00040000, 0x00000000, 0x00000000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00020000, 0x00010000, 0x00414000, 0x02111200, 0x00414000, 0x00010000, 0x00020000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00040000, 0x00030000, 0x00323000, 0x00030000, 0x00040000, 0x00000000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00020000, 0x00040000, 0x00000000, 0x00000000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x6318FFFF, 0xFF29F653, 0xDD410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6318E739, 0xEED5E64F, 0xE5CDDD49, 0xBC49AB87, 0x92C76A09, 0xC4CB8289, 0x382F2827, 0x2023181F, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E2E2E2, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E2, 0xE4E4E4E4, 0xE4E4E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E4E4, 0xEAEAE8E4, 0xE4E4E4E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E2E4EA, 0xEEEEEAE4, 0xE4E4E4E2, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E4E4EA, 0xEEEEEAE4, 0xE4E2E2E2, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE2E4E4E8, 0xEAEAE4E0, 0xE0E0E0E2, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE2E4E4E4, 0xE4E4E2E0, 0xE0E0E0E2, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE2E4E4E4, 0xE4E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE2E4E4E4, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E4E4E4, 0xE2E0E0E0, 0xE0E0E0E0, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E4E4, 0xE2E2E0E0, 0xE0E0E0E2, 0xE2E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E2, 0xE2E2E0E0, 0xE0E0E2E4, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE2E2E0E0, 0xE0E2E4E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0xE0E0E0E0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07777800, 0x00000007, 0x76222800, 0x00000775, 0x22124800, 0x00007511, 0x12448800, 0x00007211, 0x14448000, 0x00075111, 0x24478000, 0x00072124, 0x42480000, 0x00762144, 0x43580000, 0x00751244, 0x57800000, 0x00722457, 0x88000000, 0x00723888, 0x00000000, 0x00888800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000FFFF, 0xEFADEE81, 0xC781BEC1, 0xAE039583, 0x84C56407, 0x4349124B, 0xDF97C541, 0xBD61CE25, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08888900, 0x00000008, 0x8D322900, 0x00000883, 0x33265900, 0x00008333, 0x22658900, 0x00007322, 0x26659000, 0x00083323, 0x36579000, 0x00083236, 0x63790000, 0x007D3266, 0x65690000, 0x00832365, 0x57900000, 0x00832657, 0x99000000, 0x0082D899, 0x00000000, 0x00999900, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000FFFF, 0xEFADEE81, 0xC781BEC1, 0xAE039583, 0x84C56407, 0x4349124B, 0xDF97C541, 0xBD61CE25, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08888900, 0x00000008, 0x882D2900, 0x00000885, 0xD2268900, 0x0000835D, 0x23778900, 0x00008523, 0x57779000, 0x0008D223, 0x56789000, 0x00085226, 0x65790000, 0x00882267, 0x76690000, 0x008D2377, 0x76900000, 0x00853778, 0x99000000, 0x00838899, 0x00000000, 0x00999900, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000FFFF, 0xDFA7F6C1, 0xC781BEC1, 0xBDC3A543, 0x8C856B87, 0x43498C45, 0xDF97D5C1, 0xBD61CE25, 0x11100110, 0x16211610, 0x14414410, 0x01546100, 0x01462100, 0x12525210, 0x15212510, 0x11101110, 0x0000D6B5, 0xAD6B739D, 0x631939CF, 0x318D0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01110116, 0x00000000, 0x01000101, 0x00000000, 0x01140101, 0x00000000, 0x01000116, 0x00000000, 0x01000100, 0x00000000, 0xFFFE2949, 0x6B598C61, 0xA527BDED, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE03E7, 0x34695D2D, 0x8DAFAE31, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE113F, 0x427B7BF7, 0x9CF7BDF3, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE7BDD, 0x94A3AD69, 0xC62FCE71, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x11606160, 0x10100000, 0x10101010, 0x10100000, 0x10101010, 0x11100000, 0x11601010, 0x12100000, 0x10006160, 0x10100000, 0xFFFE2949, 0x6B598C61, 0xA527BDED, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE03E7, 0x34695D2D, 0x8DAFAE31, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE113F, 0x427B7BF7, 0x9CF7BDF3, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFE7BDD, 0x94A3AD69, 0xC62FCE71, 0xD6B30001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x22222222, 0x22220000, 0x22111111, 0x11220000, 0x22111111, 0x11220000, 0x02211111, 0x12200000, 0x00221111, 0x22000000, 0x00022112, 0x20000000, 0x00002222, 0x00000000, 0x00000000, 0x00000000, 0x294A9F49, 0x25010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00002222, 0x00000000, 0x00022112, 0x20000000, 0x00221111, 0x22000000, 0x02211111, 0x12200000, 0x22111111, 0x11220000, 0x22111111, 0x11220000, 0x22222222, 0x22220000, 0x00000000, 0x00000000, 0x294A9F49, 0x25010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001 diff --git a/ver/us/asm/data/95E30.data.s b/ver/us/asm/data/95E30.data.s deleted file mode 100644 index bc819c62d7..0000000000 --- a/ver/us/asm/data/95E30.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_800FC980 -.word 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11120000, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11120000, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22220000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x318CD35D, 0xDEF70001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11120000, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22220000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x318CA4FB, 0xDEBD0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11200000, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11111111, 0x11200000, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22222222, 0x22200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x318CD35D, 0xDEF70001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001 diff --git a/ver/us/asm/data/99390.data.s b/ver/us/asm/data/99390.data.s deleted file mode 100644 index a09e4909e9..0000000000 --- a/ver/us/asm/data/99390.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_800FFEE0 -.word 0xCD00BD00, 0xCFC0EE00, 0x0EFEEB00, 0x00FEC000, 0x0BEFD000, 0xAEECFC00, 0xDE90DC00, 0xBA000000, 0xB5128B4B, 0x938D93CD, 0x9C4FA4D1, 0xB801BCD3, 0xBCD5BCD9, 0xC51BCDA3, 0xDE6DE6F5, 0xEF7BF7FF, 0x00000000, 0x00000BB4, 0x0000BDA4, 0x000BED44, 0x00ADE845, 0x00CEA450, 0x0CEC4400, 0xBEE74500, 0xCEA44000, 0xBA440000, 0x54400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xB5128B4B, 0x938D93CD, 0x9C4FA4D1, 0xB801BCD3, 0xBCD5BCD9, 0xC51BCDA3, 0xDE6DE6F5, 0xEF7BF7FF diff --git a/ver/us/asm/data/9DE60.data.s b/ver/us/asm/data/9DE60.data.s index 70977cfb59..da55ce7e37 100644 --- a/ver/us/asm/data/9DE60.data.s +++ b/ver/us/asm/data/9DE60.data.s @@ -21,7 +21,19 @@ dlabel HudScript_EmptyCircle .word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, 0x800FBC40, 0x800FBC60, 0x00000003, 0x00000000 dlabel SparkleScript_Coin -.word 0x00000004, 0x0000000D, 0x00000007, 0x00000001, D_800FBC80, 0x800FBCA0, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBCC0, 0x800FBCE0, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBD00, 0x800FBD20, 0x00000008, 0x00000008, 0x00000007, 0x00000002, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBD00, 0x800FBD20, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBD40, 0x800FBD60, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBD80, 0x800FBDA0, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000007, 0x00000001, 0x800FBDC0, 0x800FBDE0, 0x00000008, 0x00000008, 0x00000007, 0x0000007F, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000007, 0x0000007F, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000000 +.word 0x00000004, 0x0000000D +.word 0x00000007, 0x00000001, 0x800FBC80, 0x800FBCA0, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBCC0, 0x800FBCE0, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBD00, 0x800FBD20, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000002, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBD00, 0x800FBD20, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBD40, 0x800FBD60, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBD80, 0x800FBDA0, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008 +.word 0x00000007, 0x00000001, 0x800FBDC0, 0x800FBDE0, 0x00000008, 0x00000008 +.word 0x00000007, 0x0000007F, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008 +.word 0x00000007, 0x0000007F, 0x800FBE00, 0x800FBE20, 0x00000008, 0x00000008, 0x00000000 dlabel HudScript_StatusSPShine .word 0x00000012, 0x00000005, 0x00000002, 0x00000004, 0x00000001, 0x0000003C, 0x800FBE40, 0x00000003, 0x00000000 @@ -186,7 +198,7 @@ dlabel HudScript_UnusedDigit3 .word 0x00000008, 0x00000013, 0x00000010, 0x00000010, 0x00000004, 0x00000002, 0x0000003C, 0x800FC8E0, 0x800FC960, 0x00000003, 0x00000000 dlabel HudScript_RedBar1 -.word 0x00000008, 0x00000013, 0x00000070, 0x00000008, 0x00000004, 0x00000002, 0x0000003C, D_800FC980, 0x800FCB40, 0x00000003, 0x00000000 +.word 0x00000008, 0x00000013, 0x00000070, 0x00000008, 0x00000004, 0x00000002, 0x0000003C, 0x800FC980, 0x800FCB40, 0x00000003, 0x00000000 dlabel HudScript_EmptyBar .word 0x00000008, 0x00000013, 0x00000070, 0x00000008, 0x00000004, 0x00000002, 0x0000003C, 0x800FCB60, 0x800FCD20, 0x00000003, 0x00000000 @@ -324,7 +336,7 @@ dlabel HudScript_PartnerBDisabled .word 0x00000008, 0x00000005, 0x00000003, 0x00000004, 0x00000002, 0x0000003C, 0x800FFCA0, 0x800FFEC0, 0x00000003, 0x00000000 dlabel HudScript_StatusTimes -.word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, D_800FFEE0, 0x800FFF00, 0x00000003, 0x00000000 +.word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, 0x800FFEE0, 0x800FFF00, 0x00000003, 0x00000000 dlabel HudScript_StatusSlash .word 0x00000008, 0x00000005, 0x00000006, 0x00000004, 0x00000002, 0x0000003C, 0x800FFF20, 0x800FFF60, 0x00000003, 0x00000000 @@ -366,7 +378,7 @@ dlabel HudScript_StatusFP .word 0x00000008, 0x00000005, 0x00000001, 0x00000004, 0x00000002, 0x0000003C, 0x80100660, 0x801006E0, 0x00000003, 0x00000000 dlabel HudScript_StatusSPIncrement1 -.word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, D_80100700, 0x80100720, 0x00000003, 0x00000000 +.word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, 0x80100700, 0x80100720, 0x00000003, 0x00000000 dlabel HudScript_StatusSPIncrement2 .word 0x00000008, 0x00000005, 0x00000000, 0x00000004, 0x00000002, 0x0000003C, 0x80100740, 0x80100760, 0x00000003, 0x00000000 diff --git a/ver/us/asm/data/battle/action_cmd/426130.data.s b/ver/us/asm/data/battle/action_cmd/426130.data.s deleted file mode 100644 index b1e32c2781..0000000000 --- a/ver/us/asm/data/battle/action_cmd/426130.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel jtbl_802A95E0_426130 -.word L802A926C_425DBC, L802A92EC_425E3C, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A94C4_426014, L802A935C_425EAC, L802A93B4_425F04, L802A94A4_425FF4, 0, 0, 0 diff --git a/ver/us/asm/data/battle/action_cmd/428A30.data.s b/ver/us/asm/data/battle/action_cmd/428A30.data.s deleted file mode 100644 index 974eb04c1b..0000000000 --- a/ver/us/asm/data/battle/action_cmd/428A30.data.s +++ /dev/null @@ -1,6 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel jtbl_802A9750_428A30 -.word L802A9318_4285F8, L802A93BC_42869C, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9650_428930, L802A9444_428724, L802A94A8_428788, L802A9630_428910, 0, 0, 0 diff --git a/ver/us/asm/data/battle/action_cmd/4292C0.data.s b/ver/us/asm/data/battle/action_cmd/4292C0.data.s index 061928b9d8..ffb716964b 100644 --- a/ver/us/asm/data/battle/action_cmd/4292C0.data.s +++ b/ver/us/asm/data/battle/action_cmd/4292C0.data.s @@ -7,6 +7,3 @@ dlabel D_802A9850_4292C0 dlabel D_802A9852_4292C2 .short 0x0000, 0x0000, 0x0019, 0x0000, 0x0032, 0x0000, 0x004B, 0x0000, 0x004B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 - -dlabel jtbl_802A9870_4292E0 -.word L802A92C0_428D30, L802A931C_428D8C, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A96D4_429144, L802A938C_428DFC, L802A93F4_428E64, L802A9690_429100, 0, 0, 0 diff --git a/ver/us/asm/data/battle/action_cmd/429C90.data.s b/ver/us/asm/data/battle/action_cmd/429C90.data.s deleted file mode 100644 index cf8990ba1d..0000000000 --- a/ver/us/asm/data/battle/action_cmd/429C90.data.s +++ /dev/null @@ -1,21 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_802A9970_429C90 -.short 0x0000 - -dlabel D_802A9972_429C92 -.short 0x0000, 0x0000, 0x0019, 0x0000, 0x0032, 0x0000, 0x004B, 0x0000, 0x004B - -dlabel D_802A9984_429CA4 -.word 0x00000028, 0x00000046, 0x00000063, 0x000000C8 - -dlabel D_802A9994_429CB4 -.word 0x00000023, 0x0000003C, 0x00000050, 0x00000063, 0x000000C8 - -dlabel D_802A99A8_429CC8 -.word 0x00000023, 0x00000023, 0x0000003C, 0x00000050, 0x00000063, 0x000000C8 - -dlabel jtbl_802A99C0_429CE0 -.word L802A92E4_429604, L802A9340_429660, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A9830_429B50, L802A93B0_4296D0, L802A9418_429738, L802A9810_429B30, 0, 0, 0 diff --git a/ver/us/asm/data/effects/386340.data.s b/ver/us/asm/data/effects/386340.data.s deleted file mode 100644 index 95c7ccb030..0000000000 --- a/ver/us/asm/data/effects/386340.data.s +++ /dev/null @@ -1,12 +0,0 @@ -.include "macro.inc" - -.section .data - -dlabel D_E0082D00 -.word 0x09002320, 0x09002360, 0x090023A0, 0x090023E0, 0x09002420, 0x09002460, 0x090024A0, 0x090024E0, 0x09002520, 0x09002560, 0x090025A0, 0x090025E0 - -dlabel D_E0082D30 -.word 0x40A00000, 0x40800000, 0x40800000, 0x40400000, 0x40000000, 0x3F800000, 0x3F333333, 0x3F99999A, 0x3F800000, 0x00000000, 0x00000000, 0x00000000 - -dlabel D_E0082D60 -.double 0.05, 0.0 diff --git a/ver/us/asm/data/world/area_pra/pra_04/D55840.data.s b/ver/us/asm/data/world/area_pra/pra_04/D55840.data.s index 98240084d3..9da3e749d0 100644 --- a/ver/us/asm/data/world/area_pra/pra_04/D55840.data.s +++ b/ver/us/asm/data/world/area_pra/pra_04/D55840.data.s @@ -6,13 +6,13 @@ dlabel D_802411B0_D55840 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_802411E0_D55870 -.word 0x00000043, 0x00000002, func_802401B0_D54840, D_802411B0_D55840, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, pra_04_UnkFunc001, D_802411B0_D55840, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241200_D55890 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241230_D558C0 -.word 0x00000043, 0x00000002, func_802401B0_D54840, D_80241200_D55890, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_802411E0_D55870, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 +.word 0x00000043, 0x00000002, pra_04_UnkFunc001, D_80241200_D55890, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_802411E0_D55870, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 dlabel D_8024127C_D5590C .word 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241230_D558C0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x00160000 diff --git a/ver/us/asm/data/world/area_pra/pra_10/D60A00.data.s b/ver/us/asm/data/world/area_pra/pra_10/D60A00.data.s index 6c418ee1b9..fe1aa064ce 100644 --- a/ver/us/asm/data/world/area_pra/pra_10/D60A00.data.s +++ b/ver/us/asm/data/world/area_pra/pra_10/D60A00.data.s @@ -24,13 +24,13 @@ dlabel D_80241CC0_D60F70 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241CF0_D60FA0 -.word 0x00000043, 0x00000002, func_80240F20_D601D0, D_80241CC0_D60F70, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, pra_10_UnkFunc001, D_80241CC0_D60F70, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241D10_D60FC0 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241D40_D60FF0 -.word 0x00000043, 0x00000002, func_80240F20_D601D0, D_80241D10_D60FC0, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241CF0_D60FA0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 +.word 0x00000043, 0x00000002, pra_10_UnkFunc001, D_80241D10_D60FC0, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241CF0_D60FA0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 dlabel D_80241D8C_D6103C .word 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D40_D60FF0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x00160000 diff --git a/ver/us/asm/data/world/area_pra/pra_38/D96D70.data.s b/ver/us/asm/data/world/area_pra/pra_38/D96D70.data.s index 44b51489cc..5f6844b7a8 100644 --- a/ver/us/asm/data/world/area_pra/pra_38/D96D70.data.s +++ b/ver/us/asm/data/world/area_pra/pra_38/D96D70.data.s @@ -24,13 +24,13 @@ dlabel D_80241CF0_D972E0 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241D20_D97310 -.word 0x00000043, 0x00000002, func_80240F50_D96540, D_80241CF0_D972E0, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, pra_38_UnkFunc001, D_80241CF0_D972E0, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241D40_D97330 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241D70_D97360 -.word 0x00000043, 0x00000002, func_80240F50_D96540, D_80241D40_D97330, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D20_D97310, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 +.word 0x00000043, 0x00000002, pra_38_UnkFunc001, D_80241D40_D97330, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D20_D97310, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000 dlabel D_80241DBC_D973AC .word 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D70_D97360, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x00160000 diff --git a/ver/us/asm/data/world/area_pra/pra_39/D99010.data.s b/ver/us/asm/data/world/area_pra/pra_39/D99010.data.s index 327fbc12d6..cf25439591 100644 --- a/ver/us/asm/data/world/area_pra/pra_39/D99010.data.s +++ b/ver/us/asm/data/world/area_pra/pra_39/D99010.data.s @@ -24,13 +24,13 @@ dlabel D_80241CF0_D99580 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241D20_D995B0 -.word 0x00000043, 0x00000002, func_80240F50_D987E0, D_80241CF0_D99580, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, pra_39_UnkFunc001, D_80241CF0_D99580, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241D40_D995D0 .word 0x3FCCCCCD, 0x0000003C, 0x0000001E, 0x42A00000, 0x00000000, 0x00000005, 0x400CCCCD, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000001 dlabel D_80241D70_D99600 -.word 0x00000043, 0x00000002, func_80240F50_D987E0, D_80241D40_D995D0, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D20_D995B0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D70_D99600, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x00160000 +.word 0x00000043, 0x00000002, pra_39_UnkFunc001, D_80241D40_D995D0, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D20_D995B0, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x000A0000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, D_80241D70_D99600, EnemyNpcHit, 0x00000000, EnemyNpcDefeat, 0x00000800, 0x00000000, 0x00160000 dlabel D_80241DE8_D99678 .word 0x40000000, 0x0000003C, 0x0000000F, 0x42C80000, 0x00000000, 0x00000004, 0x40600000, 0x0000001E, 0x00000003, 0x43160000, 0x00000000, 0x00000001 diff --git a/ver/us/asm/nonmatchings/16F740/btl_state_draw_end_battle.s b/ver/us/asm/nonmatchings/16F740/btl_state_draw_end_battle.s deleted file mode 100644 index 3d6be46456..0000000000 --- a/ver/us/asm/nonmatchings/16F740/btl_state_draw_end_battle.s +++ /dev/null @@ -1,48 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel btl_state_draw_end_battle -/* 173670 80244D90 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 173674 80244D94 3C038007 */ lui $v1, %hi(gCurrentCameraID) -/* 173678 80244D98 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1) -/* 17367C 80244D9C 3C04800B */ lui $a0, %hi(gCameras) -/* 173680 80244DA0 24841D80 */ addiu $a0, $a0, %lo(gCameras) -/* 173684 80244DA4 AFBF0010 */ sw $ra, 0x10($sp) -/* 173688 80244DA8 00031080 */ sll $v0, $v1, 2 -/* 17368C 80244DAC 00431021 */ addu $v0, $v0, $v1 -/* 173690 80244DB0 00021080 */ sll $v0, $v0, 2 -/* 173694 80244DB4 00431023 */ subu $v0, $v0, $v1 -/* 173698 80244DB8 000218C0 */ sll $v1, $v0, 3 -/* 17369C 80244DBC 00431021 */ addu $v0, $v0, $v1 -/* 1736A0 80244DC0 000210C0 */ sll $v0, $v0, 3 -/* 1736A4 80244DC4 00443021 */ addu $a2, $v0, $a0 -/* 1736A8 80244DC8 3C03800B */ lui $v1, %hi(gCurrentEncounter+0x9) -/* 1736AC 80244DCC 80630F19 */ lb $v1, %lo(gCurrentEncounter+0x9)($v1) -/* 1736B0 80244DD0 24020001 */ addiu $v0, $zero, 1 -/* 1736B4 80244DD4 1462000E */ bne $v1, $v0, .L80244E10 -/* 1736B8 80244DD8 3C030080 */ lui $v1, 0x80 -/* 1736BC 80244DDC 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1736C0 80244DE0 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1736C4 80244DE4 00431024 */ and $v0, $v0, $v1 -/* 1736C8 80244DE8 14400009 */ bnez $v0, .L80244E10 -/* 1736CC 80244DEC 24040007 */ addiu $a0, $zero, 7 -/* 1736D0 80244DF0 3C018028 */ lui $at, %hi(D_80280A30) -/* 1736D4 80244DF4 C4200A30 */ lwc1 $f0, %lo(D_80280A30)($at) -/* 1736D8 80244DF8 46800020 */ cvt.s.w $f0, $f0 -/* 1736DC 80244DFC 94C20026 */ lhu $v0, 0x26($a2) -/* 1736E0 80244E00 44050000 */ mfc1 $a1, $f0 -/* 1736E4 80244E04 24420100 */ addiu $v0, $v0, 0x100 -/* 1736E8 80244E08 08091389 */ j .L80244E24 -/* 1736EC 80244E0C A4C20026 */ sh $v0, 0x26($a2) -.L80244E10: -/* 1736F0 80244E10 3C018028 */ lui $at, %hi(D_80280A30) -/* 1736F4 80244E14 C4200A30 */ lwc1 $f0, %lo(D_80280A30)($at) -/* 1736F8 80244E18 46800020 */ cvt.s.w $f0, $f0 -/* 1736FC 80244E1C 44050000 */ mfc1 $a1, $f0 -/* 173700 80244E20 0000202D */ daddu $a0, $zero, $zero -.L80244E24: -/* 173704 80244E24 0C04DF62 */ jal set_screen_overlay_params_front -/* 173708 80244E28 00000000 */ nop -/* 17370C 80244E2C 8FBF0010 */ lw $ra, 0x10($sp) -/* 173710 80244E30 03E00008 */ jr $ra -/* 173714 80244E34 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/16F740/btl_state_update_end_demo_battle.s b/ver/us/asm/nonmatchings/16F740/btl_state_update_end_demo_battle.s deleted file mode 100644 index 6ac1fd08a8..0000000000 --- a/ver/us/asm/nonmatchings/16F740/btl_state_update_end_demo_battle.s +++ /dev/null @@ -1,186 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_8029CBE0 -.word .L80248B54_177434, .L80248BA4_177484, .L80248C0C_1774EC, .L80248C90_177570, .L80248CAC_17758C, 0, 0, 0 - -.section .text - -glabel btl_state_update_end_demo_battle -/* 1773E8 80248B08 3C03800E */ lui $v1, %hi(gBattleState2) -/* 1773EC 80248B0C 8C63C4DC */ lw $v1, %lo(gBattleState2)($v1) -/* 1773F0 80248B10 3C06800E */ lui $a2, %hi(D_800DC4FC) -/* 1773F4 80248B14 8CC6C4FC */ lw $a2, %lo(D_800DC4FC)($a2) -/* 1773F8 80248B18 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 1773FC 80248B1C AFB20018 */ sw $s2, 0x18($sp) -/* 177400 80248B20 3C12800E */ lui $s2, %hi(gBattleStatus) -/* 177404 80248B24 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus) -/* 177408 80248B28 AFBF001C */ sw $ra, 0x1c($sp) -/* 17740C 80248B2C AFB10014 */ sw $s1, 0x14($sp) -/* 177410 80248B30 2C620005 */ sltiu $v0, $v1, 5 -/* 177414 80248B34 1040008A */ beqz $v0, .L80248D60 -/* 177418 80248B38 AFB00010 */ sw $s0, 0x10($sp) -/* 17741C 80248B3C 00031080 */ sll $v0, $v1, 2 -/* 177420 80248B40 3C01802A */ lui $at, %hi(jtbl_8029CBE0) -/* 177424 80248B44 00220821 */ addu $at, $at, $v0 -/* 177428 80248B48 8C22CBE0 */ lw $v0, %lo(jtbl_8029CBE0)($at) -/* 17742C 80248B4C 00400008 */ jr $v0 -/* 177430 80248B50 00000000 */ nop -.L80248B54_177434: -/* 177434 80248B54 3C038028 */ lui $v1, %hi(D_802809F6) -/* 177438 80248B58 846309F6 */ lh $v1, %lo(D_802809F6)($v1) -/* 17743C 80248B5C 2402FFFF */ addiu $v0, $zero, -1 -/* 177440 80248B60 3C018028 */ lui $at, %hi(D_80280A30) -/* 177444 80248B64 AC200A30 */ sw $zero, %lo(D_80280A30)($at) -/* 177448 80248B68 1462000A */ bne $v1, $v0, .L80248B94 -/* 17744C 80248B6C 24020001 */ addiu $v0, $zero, 1 -/* 177450 80248B70 3C048028 */ lui $a0, %hi(D_802809F8) -/* 177454 80248B74 248409F8 */ addiu $a0, $a0, %lo(D_802809F8) -/* 177458 80248B78 84820000 */ lh $v0, ($a0) -/* 17745C 80248B7C 94830000 */ lhu $v1, ($a0) -/* 177460 80248B80 10400003 */ beqz $v0, .L80248B90 -/* 177464 80248B84 2462FFFF */ addiu $v0, $v1, -1 -/* 177468 80248B88 08092358 */ j .L80248D60 -/* 17746C 80248B8C A4820000 */ sh $v0, ($a0) -.L80248B90: -/* 177470 80248B90 24020001 */ addiu $v0, $zero, 1 -.L80248B94: -/* 177474 80248B94 3C01800E */ lui $at, %hi(gBattleState2) -/* 177478 80248B98 AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -/* 17747C 80248B9C 08092358 */ j .L80248D60 -/* 177480 80248BA0 00000000 */ nop -.L80248BA4_177484: -/* 177484 80248BA4 3C038028 */ lui $v1, %hi(D_802809F6) -/* 177488 80248BA8 846309F6 */ lh $v1, %lo(D_802809F6)($v1) -/* 17748C 80248BAC 2402FFFF */ addiu $v0, $zero, -1 -/* 177490 80248BB0 10620005 */ beq $v1, $v0, .L80248BC8 -/* 177494 80248BB4 240200FF */ addiu $v0, $zero, 0xff -/* 177498 80248BB8 14620069 */ bne $v1, $v0, .L80248D60 -/* 17749C 80248BBC 24020002 */ addiu $v0, $zero, 2 -/* 1774A0 80248BC0 080922F9 */ j .L80248BE4 -/* 1774A4 80248BC4 00000000 */ nop -.L80248BC8: -/* 1774A8 80248BC8 3C038028 */ lui $v1, %hi(D_80280A30) -/* 1774AC 80248BCC 24630A30 */ addiu $v1, $v1, %lo(D_80280A30) -/* 1774B0 80248BD0 8C620000 */ lw $v0, ($v1) -/* 1774B4 80248BD4 240400FF */ addiu $a0, $zero, 0xff -/* 1774B8 80248BD8 14440006 */ bne $v0, $a0, .L80248BF4 -/* 1774BC 80248BDC 24420032 */ addiu $v0, $v0, 0x32 -/* 1774C0 80248BE0 24020002 */ addiu $v0, $zero, 2 -.L80248BE4: -/* 1774C4 80248BE4 3C01800E */ lui $at, %hi(gBattleState2) -/* 1774C8 80248BE8 AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -/* 1774CC 80248BEC 08092358 */ j .L80248D60 -/* 1774D0 80248BF0 00000000 */ nop -.L80248BF4: -/* 1774D4 80248BF4 AC620000 */ sw $v0, ($v1) -/* 1774D8 80248BF8 28420100 */ slti $v0, $v0, 0x100 -/* 1774DC 80248BFC 50400058 */ beql $v0, $zero, .L80248D60 -/* 1774E0 80248C00 AC640000 */ sw $a0, ($v1) -/* 1774E4 80248C04 08092358 */ j .L80248D60 -/* 1774E8 80248C08 00000000 */ nop -.L80248C0C_1774EC: -/* 1774EC 80248C0C 240200FF */ addiu $v0, $zero, 0xff -/* 1774F0 80248C10 3C04800E */ lui $a0, %hi(gBattleStatus) -/* 1774F4 80248C14 2484C070 */ addiu $a0, $a0, %lo(gBattleStatus) -/* 1774F8 80248C18 2403FFFE */ addiu $v1, $zero, -2 -/* 1774FC 80248C1C 3C018028 */ lui $at, %hi(D_80280A30) -/* 177500 80248C20 AC220A30 */ sw $v0, %lo(D_80280A30)($at) -/* 177504 80248C24 8C820000 */ lw $v0, ($a0) -/* 177508 80248C28 3C05800E */ lui $a1, %hi(D_800DC064) -/* 17750C 80248C2C 8CA5C064 */ lw $a1, %lo(D_800DC064)($a1) -/* 177510 80248C30 00431024 */ and $v0, $v0, $v1 -/* 177514 80248C34 14A00004 */ bnez $a1, .L80248C48 -/* 177518 80248C38 AC820000 */ sw $v0, ($a0) -/* 17751C 80248C3C 8CC4000C */ lw $a0, 0xc($a2) -/* 177520 80248C40 08092313 */ j .L80248C4C -/* 177524 80248C44 00000000 */ nop -.L80248C48: -/* 177528 80248C48 8CA40004 */ lw $a0, 4($a1) -.L80248C4C: -/* 17752C 80248C4C 8C840010 */ lw $a0, 0x10($a0) -/* 177530 80248C50 14800006 */ bnez $a0, .L80248C6C -/* 177534 80248C54 2405000A */ addiu $a1, $zero, 0xa -/* 177538 80248C58 24020004 */ addiu $v0, $zero, 4 -/* 17753C 80248C5C 3C01800E */ lui $at, %hi(gBattleState2) -/* 177540 80248C60 AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -/* 177544 80248C64 08092358 */ j .L80248D60 -/* 177548 80248C68 00000000 */ nop -.L80248C6C: -/* 17754C 80248C6C 0C0B0CF8 */ jal start_script -/* 177550 80248C70 0000302D */ daddu $a2, $zero, $zero -/* 177554 80248C74 AE4200BC */ sw $v0, 0xbc($s2) -/* 177558 80248C78 8C430144 */ lw $v1, 0x144($v0) -/* 17755C 80248C7C 24020003 */ addiu $v0, $zero, 3 -/* 177560 80248C80 3C01800E */ lui $at, %hi(gBattleState2) -/* 177564 80248C84 AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -/* 177568 80248C88 08092358 */ j .L80248D60 -/* 17756C 80248C8C AE4300C0 */ sw $v1, 0xc0($s2) -.L80248C90_177570: -/* 177570 80248C90 8E4400C0 */ lw $a0, 0xc0($s2) -/* 177574 80248C94 0C0B1059 */ jal does_script_exist -/* 177578 80248C98 00000000 */ nop -/* 17757C 80248C9C 14400030 */ bnez $v0, .L80248D60 -/* 177580 80248CA0 24020004 */ addiu $v0, $zero, 4 -/* 177584 80248CA4 3C01800E */ lui $at, %hi(gBattleState2) -/* 177588 80248CA8 AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -.L80248CAC_17758C: -/* 17758C 80248CAC 0C0B1045 */ jal kill_all_scripts -/* 177590 80248CB0 0000882D */ daddu $s1, $zero, $zero -/* 177594 80248CB4 0240802D */ daddu $s0, $s2, $zero -.L80248CB8: -/* 177598 80248CB8 8E0400E0 */ lw $a0, 0xe0($s0) -/* 17759C 80248CBC 10800003 */ beqz $a0, .L80248CCC -/* 1775A0 80248CC0 26310001 */ addiu $s1, $s1, 1 -/* 1775A4 80248CC4 0C0902EF */ jal btl_delete_actor -/* 1775A8 80248CC8 00000000 */ nop -.L80248CCC: -/* 1775AC 80248CCC 2A220018 */ slti $v0, $s1, 0x18 -/* 1775B0 80248CD0 1440FFF9 */ bnez $v0, .L80248CB8 -/* 1775B4 80248CD4 26100004 */ addiu $s0, $s0, 4 -/* 1775B8 80248CD8 8E4400DC */ lw $a0, 0xdc($s2) -/* 1775BC 80248CDC 10800003 */ beqz $a0, .L80248CEC -/* 1775C0 80248CE0 00000000 */ nop -/* 1775C4 80248CE4 0C0902EF */ jal btl_delete_actor -/* 1775C8 80248CE8 00000000 */ nop -.L80248CEC: -/* 1775CC 80248CEC 0C09035A */ jal btl_delete_player_actor -/* 1775D0 80248CF0 8E4400D8 */ lw $a0, 0xd8($s2) -/* 1775D4 80248CF4 0C016938 */ jal remove_all_effects -/* 1775D8 80248CF8 00000000 */ nop -/* 1775DC 80248CFC 0C051FB1 */ jal set_windows_visible -/* 1775E0 80248D00 0000202D */ daddu $a0, $zero, $zero -/* 1775E4 80248D04 3C02800E */ lui $v0, %hi(gBattleStatus+0x4) -/* 1775E8 80248D08 8C42C074 */ lw $v0, %lo(gBattleStatus+0x4)($v0) -/* 1775EC 80248D0C 30420040 */ andi $v0, $v0, 0x40 -/* 1775F0 80248D10 10400003 */ beqz $v0, .L80248D20 -/* 1775F4 80248D14 00000000 */ nop -/* 1775F8 80248D18 0C03A6CC */ jal decrement_status_menu_disabled -/* 1775FC 80248D1C 00000000 */ nop -.L80248D20: -/* 177600 80248D20 3C038028 */ lui $v1, %hi(D_802809F6) -/* 177604 80248D24 846309F6 */ lh $v1, %lo(D_802809F6)($v1) -/* 177608 80248D28 2402FFFF */ addiu $v0, $zero, -1 -/* 17760C 80248D2C 10620004 */ beq $v1, $v0, .L80248D40 -/* 177610 80248D30 24020012 */ addiu $v0, $zero, 0x12 -/* 177614 80248D34 3C038007 */ lui $v1, %hi(gGameStatusPtr) -/* 177618 80248D38 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1) -/* 17761C 80248D3C A0620072 */ sb $v0, 0x72($v1) -.L80248D40: -/* 177620 80248D40 0C090464 */ jal btl_set_state -/* 177624 80248D44 0000202D */ daddu $a0, $zero, $zero -/* 177628 80248D48 3C02800E */ lui $v0, %hi(gBattleState) -/* 17762C 80248D4C 8C42C068 */ lw $v0, %lo(gBattleState)($v0) -/* 177630 80248D50 3C01800E */ lui $at, %hi(D_800DC4D0) -/* 177634 80248D54 AC22C4D0 */ sw $v0, %lo(D_800DC4D0)($at) -/* 177638 80248D58 0C00CD3C */ jal set_game_mode -/* 17763C 80248D5C 24040009 */ addiu $a0, $zero, 9 -.L80248D60: -/* 177640 80248D60 8FBF001C */ lw $ra, 0x1c($sp) -/* 177644 80248D64 8FB20018 */ lw $s2, 0x18($sp) -/* 177648 80248D68 8FB10014 */ lw $s1, 0x14($sp) -/* 17764C 80248D6C 8FB00010 */ lw $s0, 0x10($sp) -/* 177650 80248D70 03E00008 */ jr $ra -/* 177654 80248D74 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/16F740/btl_state_update_end_training_battle.s b/ver/us/asm/nonmatchings/16F740/btl_state_update_end_training_battle.s deleted file mode 100644 index e45de87693..0000000000 --- a/ver/us/asm/nonmatchings/16F740/btl_state_update_end_training_battle.s +++ /dev/null @@ -1,228 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel btl_state_update_end_training_battle -/* 172FF0 80244710 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 172FF4 80244714 AFB30024 */ sw $s3, 0x24($sp) -/* 172FF8 80244718 3C13800E */ lui $s3, %hi(gBattleStatus) -/* 172FFC 8024471C 2673C070 */ addiu $s3, $s3, %lo(gBattleStatus) -/* 173000 80244720 AFB5002C */ sw $s5, 0x2c($sp) -/* 173004 80244724 3C158011 */ lui $s5, %hi(gPlayerData) -/* 173008 80244728 26B5F290 */ addiu $s5, $s5, %lo(gPlayerData) -/* 17300C 8024472C AFB20020 */ sw $s2, 0x20($sp) -/* 173010 80244730 3C12800E */ lui $s2, %hi(gBattleState2) -/* 173014 80244734 2652C4DC */ addiu $s2, $s2, %lo(gBattleState2) -/* 173018 80244738 AFBF0030 */ sw $ra, 0x30($sp) -/* 17301C 8024473C AFB40028 */ sw $s4, 0x28($sp) -/* 173020 80244740 AFB1001C */ sw $s1, 0x1c($sp) -/* 173024 80244744 AFB00018 */ sw $s0, 0x18($sp) -/* 173028 80244748 8E7000D8 */ lw $s0, 0xd8($s3) -/* 17302C 8024474C 8E430000 */ lw $v1, ($s2) -/* 173030 80244750 8E7100DC */ lw $s1, 0xdc($s3) -/* 173034 80244754 10600005 */ beqz $v1, .L8024476C -/* 173038 80244758 2402000A */ addiu $v0, $zero, 0xa -/* 17303C 8024475C 1062003B */ beq $v1, $v0, .L8024484C -/* 173040 80244760 00000000 */ nop -/* 173044 80244764 08091228 */ j .L802448A0 -/* 173048 80244768 00000000 */ nop -.L8024476C: -/* 17304C 8024476C 3C03F3FF */ lui $v1, 0xf3ff -/* 173050 80244770 8E020000 */ lw $v0, ($s0) -/* 173054 80244774 3463FFFF */ ori $v1, $v1, 0xffff -/* 173058 80244778 00431024 */ and $v0, $v0, $v1 -/* 17305C 8024477C 12200004 */ beqz $s1, .L80244790 -/* 173060 80244780 AE020000 */ sw $v0, ($s0) -/* 173064 80244784 8E220000 */ lw $v0, ($s1) -/* 173068 80244788 00431024 */ and $v0, $v0, $v1 -/* 17306C 8024478C AE220000 */ sw $v0, ($s1) -.L80244790: -/* 173070 80244790 2402000B */ addiu $v0, $zero, 0xb -/* 173074 80244794 AE420000 */ sw $v0, ($s2) -/* 173078 80244798 8E620004 */ lw $v0, 4($s3) -/* 17307C 8024479C 2403FFFD */ addiu $v1, $zero, -3 -/* 173080 802447A0 00431024 */ and $v0, $v0, $v1 -/* 173084 802447A4 2403FFFB */ addiu $v1, $zero, -5 -/* 173088 802447A8 00431024 */ and $v0, $v0, $v1 -/* 17308C 802447AC 2403FFF7 */ addiu $v1, $zero, -9 -/* 173090 802447B0 00431024 */ and $v0, $v0, $v1 -/* 173094 802447B4 2403FFEF */ addiu $v1, $zero, -0x11 -/* 173098 802447B8 00431024 */ and $v0, $v0, $v1 -/* 17309C 802447BC AE620004 */ sw $v0, 4($s3) -/* 1730A0 802447C0 82020216 */ lb $v0, 0x216($s0) -/* 1730A4 802447C4 2414000D */ addiu $s4, $zero, 0xd -/* 1730A8 802447C8 14540005 */ bne $v0, $s4, .L802447E0 -/* 1730AC 802447CC 00000000 */ nop -/* 1730B0 802447D0 0C09C596 */ jal dispatch_event_player -/* 1730B4 802447D4 24040034 */ addiu $a0, $zero, 0x34 -/* 1730B8 802447D8 2402000A */ addiu $v0, $zero, 0xa -/* 1730BC 802447DC AE420000 */ sw $v0, ($s2) -.L802447E0: -/* 1730C0 802447E0 8E020440 */ lw $v0, 0x440($s0) -/* 1730C4 802447E4 A2000210 */ sb $zero, 0x210($s0) -/* 1730C8 802447E8 A2000212 */ sb $zero, 0x212($s0) -/* 1730CC 802447EC A2000214 */ sb $zero, 0x214($s0) -/* 1730D0 802447F0 A2000218 */ sb $zero, 0x218($s0) -/* 1730D4 802447F4 A2000216 */ sb $zero, 0x216($s0) -/* 1730D8 802447F8 A2000217 */ sb $zero, 0x217($s0) -/* 1730DC 802447FC 8C42000C */ lw $v0, 0xc($v0) -/* 1730E0 80244800 12200027 */ beqz $s1, .L802448A0 -/* 1730E4 80244804 AC40003C */ sw $zero, 0x3c($v0) -/* 1730E8 80244808 82220216 */ lb $v0, 0x216($s1) -/* 1730EC 8024480C 14540005 */ bne $v0, $s4, .L80244824 -/* 1730F0 80244810 00000000 */ nop -/* 1730F4 80244814 0C09F7A0 */ jal dispatch_event_partner -/* 1730F8 80244818 24040034 */ addiu $a0, $zero, 0x34 -/* 1730FC 8024481C 2402000A */ addiu $v0, $zero, 0xa -/* 173100 80244820 AE420000 */ sw $v0, ($s2) -.L80244824: -/* 173104 80244824 8E220440 */ lw $v0, 0x440($s1) -/* 173108 80244828 A2200210 */ sb $zero, 0x210($s1) -/* 17310C 8024482C A2200212 */ sb $zero, 0x212($s1) -/* 173110 80244830 A2200214 */ sb $zero, 0x214($s1) -/* 173114 80244834 A2200218 */ sb $zero, 0x218($s1) -/* 173118 80244838 A2200216 */ sb $zero, 0x216($s1) -/* 17311C 8024483C A2200217 */ sb $zero, 0x217($s1) -/* 173120 80244840 8C42000C */ lw $v0, 0xc($v0) -/* 173124 80244844 08091228 */ j .L802448A0 -/* 173128 80244848 AC40003C */ sw $zero, 0x3c($v0) -.L8024484C: -/* 17312C 8024484C 8E0201D8 */ lw $v0, 0x1d8($s0) -/* 173130 80244850 10400005 */ beqz $v0, .L80244868 -/* 173134 80244854 00000000 */ nop -/* 173138 80244858 0C0B1059 */ jal does_script_exist -/* 17313C 8024485C 8E0401E8 */ lw $a0, 0x1e8($s0) -/* 173140 80244860 1440000F */ bnez $v0, .L802448A0 -/* 173144 80244864 00000000 */ nop -.L80244868: -/* 173148 80244868 1220000A */ beqz $s1, .L80244894 -/* 17314C 8024486C AE0001D8 */ sw $zero, 0x1d8($s0) -/* 173150 80244870 8E2201D8 */ lw $v0, 0x1d8($s1) -/* 173154 80244874 50400007 */ beql $v0, $zero, .L80244894 -/* 173158 80244878 AE2001D8 */ sw $zero, 0x1d8($s1) -/* 17315C 8024487C 8E2401E8 */ lw $a0, 0x1e8($s1) -/* 173160 80244880 0C0B1059 */ jal does_script_exist -/* 173164 80244884 00000000 */ nop -/* 173168 80244888 14400005 */ bnez $v0, .L802448A0 -/* 17316C 8024488C 00000000 */ nop -/* 173170 80244890 AE2001D8 */ sw $zero, 0x1d8($s1) -.L80244894: -/* 173174 80244894 2402000B */ addiu $v0, $zero, 0xb -/* 173178 80244898 3C01800E */ lui $at, %hi(gBattleState2) -/* 17317C 8024489C AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -.L802448A0: -/* 173180 802448A0 3C12800E */ lui $s2, %hi(gBattleState2) -/* 173184 802448A4 2652C4DC */ addiu $s2, $s2, %lo(gBattleState2) -/* 173188 802448A8 8E500000 */ lw $s0, ($s2) -/* 17318C 802448AC 2402000B */ addiu $v0, $zero, 0xb -/* 173190 802448B0 12020005 */ beq $s0, $v0, .L802448C8 -/* 173194 802448B4 2402000D */ addiu $v0, $zero, 0xd -/* 173198 802448B8 12020023 */ beq $s0, $v0, .L80244948 -/* 17319C 802448BC 00000000 */ nop -/* 1731A0 802448C0 08091259 */ j .L80244964 -/* 1731A4 802448C4 00000000 */ nop -.L802448C8: -/* 1731A8 802448C8 3C05800E */ lui $a1, %hi(gBattleStatus) -/* 1731AC 802448CC 24A5C070 */ addiu $a1, $a1, %lo(gBattleStatus) -/* 1731B0 802448D0 2403FFFD */ addiu $v1, $zero, -3 -/* 1731B4 802448D4 A260008C */ sb $zero, 0x8c($s3) -/* 1731B8 802448D8 8CA20004 */ lw $v0, 4($a1) -/* 1731BC 802448DC 8264009A */ lb $a0, 0x9a($s3) -/* 1731C0 802448E0 00431024 */ and $v0, $v0, $v1 -/* 1731C4 802448E4 2403FFFB */ addiu $v1, $zero, -5 -/* 1731C8 802448E8 00431024 */ and $v0, $v0, $v1 -/* 1731CC 802448EC 2403FFF7 */ addiu $v1, $zero, -9 -/* 1731D0 802448F0 00431024 */ and $v0, $v0, $v1 -/* 1731D4 802448F4 2403FFEF */ addiu $v1, $zero, -0x11 -/* 1731D8 802448F8 00431024 */ and $v0, $v0, $v1 -/* 1731DC 802448FC 14800004 */ bnez $a0, .L80244910 -/* 1731E0 80244900 ACA20004 */ sw $v0, 4($a1) -/* 1731E4 80244904 2402000D */ addiu $v0, $zero, 0xd -/* 1731E8 80244908 08091259 */ j .L80244964 -/* 1731EC 8024490C AE420000 */ sw $v0, ($s2) -.L80244910: -/* 1731F0 80244910 2405000A */ addiu $a1, $zero, 0xa -/* 1731F4 80244914 2402000C */ addiu $v0, $zero, 0xc -/* 1731F8 80244918 A26201A7 */ sb $v0, 0x1a7($s3) -/* 1731FC 8024491C 8E2401CC */ lw $a0, 0x1cc($s1) -/* 173200 80244920 0C0B0CF8 */ jal start_script -/* 173204 80244924 0000302D */ daddu $a2, $zero, $zero -/* 173208 80244928 AE2201DC */ sw $v0, 0x1dc($s1) -/* 17320C 8024492C 8C440144 */ lw $a0, 0x144($v0) -/* 173210 80244930 2403000C */ addiu $v1, $zero, 0xc -/* 173214 80244934 AE430000 */ sw $v1, ($s2) -/* 173218 80244938 24030100 */ addiu $v1, $zero, 0x100 -/* 17321C 8024493C AE2401EC */ sw $a0, 0x1ec($s1) -/* 173220 80244940 08091259 */ j .L80244964 -/* 173224 80244944 AC430148 */ sw $v1, 0x148($v0) -.L80244948: -/* 173228 80244948 8E2401EC */ lw $a0, 0x1ec($s1) -/* 17322C 8024494C 0C0B1059 */ jal does_script_exist -/* 173230 80244950 00000000 */ nop -/* 173234 80244954 14400003 */ bnez $v0, .L80244964 -/* 173238 80244958 00000000 */ nop -/* 17323C 8024495C A260009A */ sb $zero, 0x9a($s3) -/* 173240 80244960 AE500000 */ sw $s0, ($s2) -.L80244964: -/* 173244 80244964 3C10800E */ lui $s0, %hi(gBattleState2) -/* 173248 80244968 2610C4DC */ addiu $s0, $s0, %lo(gBattleState2) -/* 17324C 8024496C 8E030000 */ lw $v1, ($s0) -/* 173250 80244970 2402000D */ addiu $v0, $zero, 0xd -/* 173254 80244974 10620005 */ beq $v1, $v0, .L8024498C -/* 173258 80244978 2402000E */ addiu $v0, $zero, 0xe -/* 17325C 8024497C 1062000B */ beq $v1, $v0, .L802449AC -/* 173260 80244980 00000000 */ nop -/* 173264 80244984 08091289 */ j .L80244A24 -/* 173268 80244988 00000000 */ nop -.L8024498C: -/* 17326C 8024498C 0C093903 */ jal func_8024E40C -/* 173270 80244990 24040002 */ addiu $a0, $zero, 2 -/* 173274 80244994 2402001E */ addiu $v0, $zero, 0x1e -/* 173278 80244998 3C01802A */ lui $at, %hi(D_8029F248) -/* 17327C 8024499C AC22F248 */ sw $v0, %lo(D_8029F248)($at) -/* 173280 802449A0 2402000E */ addiu $v0, $zero, 0xe -/* 173284 802449A4 08091289 */ j .L80244A24 -/* 173288 802449A8 AE020000 */ sw $v0, ($s0) -.L802449AC: -/* 17328C 802449AC 3C03802A */ lui $v1, %hi(D_8029F248) -/* 173290 802449B0 2463F248 */ addiu $v1, $v1, %lo(D_8029F248) -/* 173294 802449B4 8C620000 */ lw $v0, ($v1) -/* 173298 802449B8 10400003 */ beqz $v0, .L802449C8 -/* 17329C 802449BC 2442FFFF */ addiu $v0, $v0, -1 -/* 1732A0 802449C0 08091289 */ j .L80244A24 -/* 1732A4 802449C4 AC620000 */ sw $v0, ($v1) -.L802449C8: -/* 1732A8 802449C8 96A302AA */ lhu $v1, 0x2aa($s5) -/* 1732AC 802449CC 2C62270F */ sltiu $v0, $v1, 0x270f -/* 1732B0 802449D0 10400002 */ beqz $v0, .L802449DC -/* 1732B4 802449D4 24620001 */ addiu $v0, $v1, 1 -/* 1732B8 802449D8 A6A202AA */ sh $v0, 0x2aa($s5) -.L802449DC: -/* 1732BC 802449DC 24030003 */ addiu $v1, $zero, 3 -/* 1732C0 802449E0 3C02800B */ lui $v0, %hi(gCurrentEncounter) -/* 1732C4 802449E4 24420F10 */ addiu $v0, $v0, %lo(gCurrentEncounter) -/* 1732C8 802449E8 A0430009 */ sb $v1, 9($v0) -/* 1732CC 802449EC 3C02800E */ lui $v0, %hi(gBattleStatus+0x4) -/* 1732D0 802449F0 8C42C074 */ lw $v0, %lo(gBattleStatus+0x4)($v0) -/* 1732D4 802449F4 3C030200 */ lui $v1, 0x200 -/* 1732D8 802449F8 00431024 */ and $v0, $v0, $v1 -/* 1732DC 802449FC 14400007 */ bnez $v0, .L80244A1C -/* 1732E0 80244A00 24020008 */ addiu $v0, $zero, 8 -/* 1732E4 80244A04 AFA20010 */ sw $v0, 0x10($sp) -/* 1732E8 80244A08 0000202D */ daddu $a0, $zero, $zero -/* 1732EC 80244A0C 2405FFFF */ addiu $a1, $zero, -1 -/* 1732F0 80244A10 0080302D */ daddu $a2, $a0, $zero -/* 1732F4 80244A14 0C052A46 */ jal bgm_set_song -/* 1732F8 80244A18 240705DC */ addiu $a3, $zero, 0x5dc -.L80244A1C: -/* 1732FC 80244A1C 0C090464 */ jal btl_set_state -/* 173300 80244A20 24040020 */ addiu $a0, $zero, 0x20 -.L80244A24: -/* 173304 80244A24 8FBF0030 */ lw $ra, 0x30($sp) -/* 173308 80244A28 8FB5002C */ lw $s5, 0x2c($sp) -/* 17330C 80244A2C 8FB40028 */ lw $s4, 0x28($sp) -/* 173310 80244A30 8FB30024 */ lw $s3, 0x24($sp) -/* 173314 80244A34 8FB20020 */ lw $s2, 0x20($sp) -/* 173318 80244A38 8FB1001C */ lw $s1, 0x1c($sp) -/* 17331C 80244A3C 8FB00018 */ lw $s0, 0x18($sp) -/* 173320 80244A40 03E00008 */ jr $ra -/* 173324 80244A44 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/ver/us/asm/nonmatchings/16F740/btl_state_update_next_enemy.s b/ver/us/asm/nonmatchings/16F740/btl_state_update_next_enemy.s deleted file mode 100644 index 449002c920..0000000000 --- a/ver/us/asm/nonmatchings/16F740/btl_state_update_next_enemy.s +++ /dev/null @@ -1,199 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel btl_state_update_next_enemy -/* 175B8C 802472AC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 175B90 802472B0 AFB10014 */ sw $s1, 0x14($sp) -/* 175B94 802472B4 3C11800E */ lui $s1, %hi(gBattleStatus) -/* 175B98 802472B8 2631C070 */ addiu $s1, $s1, %lo(gBattleStatus) -/* 175B9C 802472BC AFBF0018 */ sw $ra, 0x18($sp) -/* 175BA0 802472C0 AFB00010 */ sw $s0, 0x10($sp) -/* 175BA4 802472C4 8E2A00D8 */ lw $t2, 0xd8($s1) -/* 175BA8 802472C8 3C03800E */ lui $v1, %hi(gBattleState2) -/* 175BAC 802472CC 8C63C4DC */ lw $v1, %lo(gBattleState2)($v1) -/* 175BB0 802472D0 8E2700DC */ lw $a3, 0xdc($s1) -/* 175BB4 802472D4 0460009F */ bltz $v1, .L80247554 -/* 175BB8 802472D8 28620002 */ slti $v0, $v1, 2 -/* 175BBC 802472DC 14400005 */ bnez $v0, .L802472F4 -/* 175BC0 802472E0 24020002 */ addiu $v0, $zero, 2 -/* 175BC4 802472E4 10620080 */ beq $v1, $v0, .L802474E8 -/* 175BC8 802472E8 00000000 */ nop -/* 175BCC 802472EC 08091D55 */ j .L80247554 -/* 175BD0 802472F0 00000000 */ nop -.L802472F4: -/* 175BD4 802472F4 82240170 */ lb $a0, 0x170($s1) -/* 175BD8 802472F8 82220171 */ lb $v0, 0x171($s1) -/* 175BDC 802472FC 0082102A */ slt $v0, $a0, $v0 -/* 175BE0 80247300 14400004 */ bnez $v0, .L80247314 -/* 175BE4 80247304 3C050020 */ lui $a1, 0x20 -/* 175BE8 80247308 A2200170 */ sb $zero, 0x170($s1) -/* 175BEC 8024730C 08091D53 */ j .L8024754C -/* 175BF0 80247310 24040006 */ addiu $a0, $zero, 6 -.L80247314: -/* 175BF4 80247314 34A54000 */ ori $a1, $a1, 0x4000 -/* 175BF8 80247318 00041040 */ sll $v0, $a0, 1 -.L8024731C: -/* 175BFC 8024731C 02221021 */ addu $v0, $s1, $v0 -/* 175C00 80247320 84430140 */ lh $v1, 0x140($v0) -/* 175C04 80247324 94420140 */ lhu $v0, 0x140($v0) -/* 175C08 80247328 0460000A */ bltz $v1, .L80247354 -/* 175C0C 8024732C 304200FF */ andi $v0, $v0, 0xff -/* 175C10 80247330 00021080 */ sll $v0, $v0, 2 -/* 175C14 80247334 02221021 */ addu $v0, $s1, $v0 -/* 175C18 80247338 8C5000E0 */ lw $s0, 0xe0($v0) -/* 175C1C 8024733C 12000005 */ beqz $s0, .L80247354 -/* 175C20 80247340 00000000 */ nop -/* 175C24 80247344 8E020000 */ lw $v0, ($s0) -/* 175C28 80247348 00451024 */ and $v0, $v0, $a1 -/* 175C2C 8024734C 1040000B */ beqz $v0, .L8024737C -/* 175C30 80247350 00041040 */ sll $v0, $a0, 1 -.L80247354: -/* 175C34 80247354 82220171 */ lb $v0, 0x171($s1) -/* 175C38 80247358 24840001 */ addiu $a0, $a0, 1 -/* 175C3C 8024735C 0082102A */ slt $v0, $a0, $v0 -/* 175C40 80247360 50400001 */ beql $v0, $zero, .L80247368 -/* 175C44 80247364 0000202D */ daddu $a0, $zero, $zero -.L80247368: -/* 175C48 80247368 1480FFEC */ bnez $a0, .L8024731C -/* 175C4C 8024736C 00041040 */ sll $v0, $a0, 1 -/* 175C50 80247370 A2200170 */ sb $zero, 0x170($s1) -/* 175C54 80247374 08091D53 */ j .L8024754C -/* 175C58 80247378 24040006 */ addiu $a0, $zero, 6 -.L8024737C: -/* 175C5C 8024737C 02221021 */ addu $v0, $s1, $v0 -/* 175C60 80247380 94420140 */ lhu $v0, 0x140($v0) -/* 175C64 80247384 24840001 */ addiu $a0, $a0, 1 -/* 175C68 80247388 AE300174 */ sw $s0, 0x174($s1) -/* 175C6C 8024738C A2240170 */ sb $a0, 0x170($s1) -/* 175C70 80247390 A6220172 */ sh $v0, 0x172($s1) -/* 175C74 80247394 82040210 */ lb $a0, 0x210($s0) -/* 175C78 80247398 38820006 */ xori $v0, $a0, 6 -/* 175C7C 8024739C 2C430001 */ sltiu $v1, $v0, 1 -/* 175C80 802473A0 24020003 */ addiu $v0, $zero, 3 -/* 175C84 802473A4 50820001 */ beql $a0, $v0, .L802473AC -/* 175C88 802473A8 24030001 */ addiu $v1, $zero, 1 -.L802473AC: -/* 175C8C 802473AC 24020004 */ addiu $v0, $zero, 4 -/* 175C90 802473B0 50820001 */ beql $a0, $v0, .L802473B8 -/* 175C94 802473B4 24030001 */ addiu $v1, $zero, 1 -.L802473B8: -/* 175C98 802473B8 24020005 */ addiu $v0, $zero, 5 -/* 175C9C 802473BC 50820001 */ beql $a0, $v0, .L802473C4 -/* 175CA0 802473C0 24030001 */ addiu $v1, $zero, 1 -.L802473C4: -/* 175CA4 802473C4 24020007 */ addiu $v0, $zero, 7 -/* 175CA8 802473C8 50820001 */ beql $a0, $v0, .L802473D0 -/* 175CAC 802473CC 24030001 */ addiu $v1, $zero, 1 -.L802473D0: -/* 175CB0 802473D0 24020008 */ addiu $v0, $zero, 8 -/* 175CB4 802473D4 50820001 */ beql $a0, $v0, .L802473DC -/* 175CB8 802473D8 24030001 */ addiu $v1, $zero, 1 -.L802473DC: -/* 175CBC 802473DC 82020214 */ lb $v0, 0x214($s0) -/* 175CC0 802473E0 240B000C */ addiu $t3, $zero, 0xc -/* 175CC4 802473E4 504B0001 */ beql $v0, $t3, .L802473EC -/* 175CC8 802473E8 24030001 */ addiu $v1, $zero, 1 -.L802473EC: -/* 175CCC 802473EC 8E020000 */ lw $v0, ($s0) -/* 175CD0 802473F0 3C090001 */ lui $t1, 1 -/* 175CD4 802473F4 00491024 */ and $v0, $v0, $t1 -/* 175CD8 802473F8 54400001 */ bnel $v0, $zero, .L80247400 -/* 175CDC 802473FC 24030001 */ addiu $v1, $zero, 1 -.L80247400: -/* 175CE0 80247400 10600005 */ beqz $v1, .L80247418 -/* 175CE4 80247404 3C03FFFB */ lui $v1, 0xfffb -/* 175CE8 80247408 3C01800E */ lui $at, %hi(gBattleState2) -/* 175CEC 8024740C AC20C4DC */ sw $zero, %lo(gBattleState2)($at) -/* 175CF0 80247410 08091D55 */ j .L80247554 -/* 175CF4 80247414 00000000 */ nop -.L80247418: -/* 175CF8 80247418 3463FFFF */ ori $v1, $v1, 0xffff -/* 175CFC 8024741C 3C04FFF7 */ lui $a0, 0xfff7 -/* 175D00 80247420 3484FFFF */ ori $a0, $a0, 0xffff -/* 175D04 80247424 3C06F7FF */ lui $a2, 0xf7ff -/* 175D08 80247428 3C05800E */ lui $a1, %hi(gBattleStatus) -/* 175D0C 8024742C 24A5C070 */ addiu $a1, $a1, %lo(gBattleStatus) -/* 175D10 80247430 2408FFFD */ addiu $t0, $zero, -3 -/* 175D14 80247434 A220008C */ sb $zero, 0x8c($s1) -/* 175D18 80247438 8CA20000 */ lw $v0, ($a1) -/* 175D1C 8024743C 34C6FFFF */ ori $a2, $a2, 0xffff -/* 175D20 80247440 00481024 */ and $v0, $v0, $t0 -/* 175D24 80247444 00431024 */ and $v0, $v0, $v1 -/* 175D28 80247448 2403EFFF */ addiu $v1, $zero, -0x1001 -/* 175D2C 8024744C 00431024 */ and $v0, $v0, $v1 -/* 175D30 80247450 00441024 */ and $v0, $v0, $a0 -/* 175D34 80247454 ACA20000 */ sw $v0, ($a1) -/* 175D38 80247458 8D420000 */ lw $v0, ($t2) -/* 175D3C 8024745C 3C030400 */ lui $v1, 0x400 -/* 175D40 80247460 00461024 */ and $v0, $v0, $a2 -/* 175D44 80247464 00431025 */ or $v0, $v0, $v1 -/* 175D48 80247468 10E00005 */ beqz $a3, .L80247480 -/* 175D4C 8024746C AD420000 */ sw $v0, ($t2) -/* 175D50 80247470 8CE20000 */ lw $v0, ($a3) -/* 175D54 80247474 00461024 */ and $v0, $v0, $a2 -/* 175D58 80247478 00431025 */ or $v0, $v0, $v1 -/* 175D5C 8024747C ACE20000 */ sw $v0, ($a3) -.L80247480: -/* 175D60 80247480 8CA20004 */ lw $v0, 4($a1) -/* 175D64 80247484 2403FFFB */ addiu $v1, $zero, -5 -/* 175D68 80247488 00481024 */ and $v0, $v0, $t0 -/* 175D6C 8024748C 00431024 */ and $v0, $v0, $v1 -/* 175D70 80247490 00491025 */ or $v0, $v0, $t1 -/* 175D74 80247494 ACA20004 */ sw $v0, 4($a1) -/* 175D78 80247498 92020134 */ lbu $v0, 0x134($s0) -/* 175D7C 8024749C 8E0301CC */ lw $v1, 0x1cc($s0) -/* 175D80 802474A0 3C01802A */ lui $at, %hi(D_8029F244) -/* 175D84 802474A4 A022F244 */ sb $v0, %lo(D_8029F244)($at) -/* 175D88 802474A8 1060000A */ beqz $v1, .L802474D4 -/* 175D8C 802474AC 2405000A */ addiu $a1, $zero, 0xa -/* 175D90 802474B0 A22B01A7 */ sb $t3, 0x1a7($s1) -/* 175D94 802474B4 8E0401CC */ lw $a0, 0x1cc($s0) -/* 175D98 802474B8 0C0B0CF8 */ jal start_script -/* 175D9C 802474BC 0000302D */ daddu $a2, $zero, $zero -/* 175DA0 802474C0 AE0201DC */ sw $v0, 0x1dc($s0) -/* 175DA4 802474C4 8C430144 */ lw $v1, 0x144($v0) -/* 175DA8 802474C8 AE0301EC */ sw $v1, 0x1ec($s0) -/* 175DAC 802474CC 86230172 */ lh $v1, 0x172($s1) -/* 175DB0 802474D0 AC430148 */ sw $v1, 0x148($v0) -.L802474D4: -/* 175DB4 802474D4 24020002 */ addiu $v0, $zero, 2 -/* 175DB8 802474D8 3C01800E */ lui $at, %hi(gBattleState2) -/* 175DBC 802474DC AC22C4DC */ sw $v0, %lo(gBattleState2)($at) -/* 175DC0 802474E0 08091D55 */ j .L80247554 -/* 175DC4 802474E4 00000000 */ nop -.L802474E8: -/* 175DC8 802474E8 8222008C */ lb $v0, 0x8c($s1) -/* 175DCC 802474EC 14400019 */ bnez $v0, .L80247554 -/* 175DD0 802474F0 00000000 */ nop -/* 175DD4 802474F4 0C09A75B */ jal get_actor -/* 175DD8 802474F8 86240172 */ lh $a0, 0x172($s1) -/* 175DDC 802474FC 0040802D */ daddu $s0, $v0, $zero -/* 175DE0 80247500 12000012 */ beqz $s0, .L8024754C -/* 175DE4 80247504 24040014 */ addiu $a0, $zero, 0x14 -/* 175DE8 80247508 92030134 */ lbu $v1, 0x134($s0) -/* 175DEC 8024750C 3C02802A */ lui $v0, %hi(D_8029F244) -/* 175DF0 80247510 9042F244 */ lbu $v0, %lo(D_8029F244)($v0) -/* 175DF4 80247514 1462000D */ bne $v1, $v0, .L8024754C -/* 175DF8 80247518 00000000 */ nop -/* 175DFC 8024751C 8E0201CC */ lw $v0, 0x1cc($s0) -/* 175E00 80247520 10400005 */ beqz $v0, .L80247538 -/* 175E04 80247524 00000000 */ nop -/* 175E08 80247528 0C0B1059 */ jal does_script_exist -/* 175E0C 8024752C 8E0401EC */ lw $a0, 0x1ec($s0) -/* 175E10 80247530 14400008 */ bnez $v0, .L80247554 -/* 175E14 80247534 00000000 */ nop -.L80247538: -/* 175E18 80247538 82220094 */ lb $v0, 0x94($s1) -/* 175E1C 8024753C 04410003 */ bgez $v0, .L8024754C -/* 175E20 80247540 24040015 */ addiu $a0, $zero, 0x15 -/* 175E24 80247544 A2200094 */ sb $zero, 0x94($s1) -/* 175E28 80247548 24040006 */ addiu $a0, $zero, 6 -.L8024754C: -/* 175E2C 8024754C 0C090464 */ jal btl_set_state -/* 175E30 80247550 00000000 */ nop -.L80247554: -/* 175E34 80247554 8FBF0018 */ lw $ra, 0x18($sp) -/* 175E38 80247558 8FB10014 */ lw $s1, 0x14($sp) -/* 175E3C 8024755C 8FB00010 */ lw $s0, 0x10($sp) -/* 175E40 80247560 03E00008 */ jr $ra -/* 175E44 80247564 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/415D90/btl_state_draw_peach_menu.s b/ver/us/asm/nonmatchings/415D90/btl_state_draw_peach_menu.s deleted file mode 100644 index ca6d61d269..0000000000 --- a/ver/us/asm/nonmatchings/415D90/btl_state_draw_peach_menu.s +++ /dev/null @@ -1,30 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_802ACBE0 -.word 0x802AA090, 0x802AA090, 0x802AA090, 0x802AA090, 0x802AA090, 0x802AA098, 0x802AA098, 0x802AA098, 0x802AA098, 0x00000000 - -.section .text - -glabel btl_state_draw_peach_menu -/* 41EDEC 802AA05C 3C02800E */ lui $v0, %hi(gBattleState2) -/* 41EDF0 802AA060 8C42C4DC */ lw $v0, %lo(gBattleState2)($v0) -/* 41EDF4 802AA064 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 41EDF8 802AA068 2443FFFF */ addiu $v1, $v0, -1 -/* 41EDFC 802AA06C 2C620009 */ sltiu $v0, $v1, 9 -/* 41EE00 802AA070 10400009 */ beqz $v0, .L802AA098 -/* 41EE04 802AA074 AFBF0010 */ sw $ra, 0x10($sp) -/* 41EE08 802AA078 00031080 */ sll $v0, $v1, 2 -/* 41EE0C 802AA07C 3C01802B */ lui $at, %hi(D_802ACBE0) -/* 41EE10 802AA080 00220821 */ addu $at, $at, $v0 -/* 41EE14 802AA084 8C22CBE0 */ lw $v0, %lo(D_802ACBE0)($at) -/* 41EE18 802AA088 00400008 */ jr $v0 -/* 41EE1C 802AA08C 00000000 */ nop -/* 41EE20 802AA090 0C0A8715 */ jal btl_draw_menu_wheel -/* 41EE24 802AA094 00000000 */ nop -.L802AA098: -/* 41EE28 802AA098 8FBF0010 */ lw $ra, 0x10($sp) -/* 41EE2C 802AA09C 03E00008 */ jr $ra -/* 41EE30 802AA0A0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/415D90/btl_state_draw_player_menu.s b/ver/us/asm/nonmatchings/415D90/btl_state_draw_player_menu.s deleted file mode 100644 index 766209fd71..0000000000 --- a/ver/us/asm/nonmatchings/415D90/btl_state_draw_player_menu.s +++ /dev/null @@ -1,30 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_802AC090 -.word 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81BC, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x802A81B4, 0x00000000 - -.section .text - -glabel btl_state_draw_player_menu -/* 41CF10 802A8180 3C02800E */ lui $v0, %hi(gBattleState2) -/* 41CF14 802A8184 8C42C4DC */ lw $v0, %lo(gBattleState2)($v0) -/* 41CF18 802A8188 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 41CF1C 802A818C 2443FFFF */ addiu $v1, $v0, -1 -/* 41CF20 802A8190 2C6200CD */ sltiu $v0, $v1, 0xcd -/* 41CF24 802A8194 10400009 */ beqz $v0, .L802A81BC -/* 41CF28 802A8198 AFBF0010 */ sw $ra, 0x10($sp) -/* 41CF2C 802A819C 00031080 */ sll $v0, $v1, 2 -/* 41CF30 802A81A0 3C01802B */ lui $at, %hi(D_802AC090) -/* 41CF34 802A81A4 00220821 */ addu $at, $at, $v0 -/* 41CF38 802A81A8 8C22C090 */ lw $v0, %lo(D_802AC090)($at) -/* 41CF3C 802A81AC 00400008 */ jr $v0 -/* 41CF40 802A81B0 00000000 */ nop -/* 41CF44 802A81B4 0C0A8715 */ jal btl_draw_menu_wheel -/* 41CF48 802A81B8 00000000 */ nop -.L802A81BC: -/* 41CF4C 802A81BC 8FBF0010 */ lw $ra, 0x10($sp) -/* 41CF50 802A81C0 03E00008 */ jr $ra -/* 41CF54 802A81C4 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/battle/action_cmd/07/func_802A9228_425D78.s b/ver/us/asm/nonmatchings/battle/action_cmd/07/func_802A9228_425D78.s deleted file mode 100644 index 4f22bcae92..0000000000 --- a/ver/us/asm/nonmatchings/battle/action_cmd/07/func_802A9228_425D78.s +++ /dev/null @@ -1,193 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802A9228_425D78 -/* 425D78 802A9228 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 425D7C 802A922C AFB10014 */ sw $s1, 0x14($sp) -/* 425D80 802A9230 3C11802A */ lui $s1, %hi(gActionCommandStatus) -/* 425D84 802A9234 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus) -/* 425D88 802A9238 AFBF0018 */ sw $ra, 0x18($sp) -/* 425D8C 802A923C AFB00010 */ sw $s0, 0x10($sp) -/* 425D90 802A9240 8623004C */ lh $v1, 0x4c($s1) -/* 425D94 802A9244 3C10800E */ lui $s0, %hi(gBattleStatus) -/* 425D98 802A9248 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus) -/* 425D9C 802A924C 2C62000D */ sltiu $v0, $v1, 0xd -/* 425DA0 802A9250 1040009C */ beqz $v0, L802A94C4_426014 -/* 425DA4 802A9254 00031080 */ sll $v0, $v1, 2 -/* 425DA8 802A9258 3C01802B */ lui $at, %hi(jtbl_802A95E0_426130) -/* 425DAC 802A925C 00220821 */ addu $at, $at, $v0 -/* 425DB0 802A9260 8C2295E0 */ lw $v0, %lo(jtbl_802A95E0_426130)($at) -/* 425DB4 802A9264 00400008 */ jr $v0 -/* 425DB8 802A9268 00000000 */ nop -dlabel L802A926C_425DBC -/* 425DBC 802A926C 0C093EB1 */ jal btl_set_popup_duration -/* 425DC0 802A9270 24040063 */ addiu $a0, $zero, 0x63 -/* 425DC4 802A9274 82220061 */ lb $v0, 0x61($s1) -/* 425DC8 802A9278 8E300004 */ lw $s0, 4($s1) -/* 425DCC 802A927C 10400004 */ beqz $v0, .L802A9290 -/* 425DD0 802A9280 0200202D */ daddu $a0, $s0, $zero -/* 425DD4 802A9284 0C05128B */ jal hud_element_clear_flags -/* 425DD8 802A9288 24050002 */ addiu $a1, $zero, 2 -/* 425DDC 802A928C 0200202D */ daddu $a0, $s0, $zero -.L802A9290: -/* 425DE0 802A9290 0C0513AC */ jal hud_element_set_alpha -/* 425DE4 802A9294 240500FF */ addiu $a1, $zero, 0xff -/* 425DE8 802A9298 8E300008 */ lw $s0, 8($s1) -/* 425DEC 802A929C 240500FF */ addiu $a1, $zero, 0xff -/* 425DF0 802A92A0 0C0513AC */ jal hud_element_set_alpha -/* 425DF4 802A92A4 0200202D */ daddu $a0, $s0, $zero -/* 425DF8 802A92A8 82220061 */ lb $v0, 0x61($s1) -/* 425DFC 802A92AC 10400003 */ beqz $v0, .L802A92BC -/* 425E00 802A92B0 0200202D */ daddu $a0, $s0, $zero -/* 425E04 802A92B4 0C05128B */ jal hud_element_clear_flags -/* 425E08 802A92B8 24050002 */ addiu $a1, $zero, 2 -.L802A92BC: -/* 425E0C 802A92BC 8E30000C */ lw $s0, 0xc($s1) -/* 425E10 802A92C0 240500FF */ addiu $a1, $zero, 0xff -/* 425E14 802A92C4 0C0513AC */ jal hud_element_set_alpha -/* 425E18 802A92C8 0200202D */ daddu $a0, $s0, $zero -/* 425E1C 802A92CC 82220061 */ lb $v0, 0x61($s1) -/* 425E20 802A92D0 10400003 */ beqz $v0, .L802A92E0 -/* 425E24 802A92D4 0200202D */ daddu $a0, $s0, $zero -/* 425E28 802A92D8 0C05128B */ jal hud_element_clear_flags -/* 425E2C 802A92DC 24050002 */ addiu $a1, $zero, 2 -.L802A92E0: -/* 425E30 802A92E0 24020001 */ addiu $v0, $zero, 1 -/* 425E34 802A92E4 080AA531 */ j L802A94C4_426014 -/* 425E38 802A92E8 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A92EC_425E3C -/* 425E3C 802A92EC 0C093EB1 */ jal btl_set_popup_duration -/* 425E40 802A92F0 24040063 */ addiu $a0, $zero, 0x63 -/* 425E44 802A92F4 96220056 */ lhu $v0, 0x56($s1) -/* 425E48 802A92F8 24420014 */ addiu $v0, $v0, 0x14 -/* 425E4C 802A92FC A6220056 */ sh $v0, 0x56($s1) -/* 425E50 802A9300 00021400 */ sll $v0, $v0, 0x10 -/* 425E54 802A9304 00021403 */ sra $v0, $v0, 0x10 -/* 425E58 802A9308 28420033 */ slti $v0, $v0, 0x33 -/* 425E5C 802A930C 14400002 */ bnez $v0, .L802A9318 -/* 425E60 802A9310 24020032 */ addiu $v0, $zero, 0x32 -/* 425E64 802A9314 A6220056 */ sh $v0, 0x56($s1) -.L802A9318: -/* 425E68 802A9318 8E240004 */ lw $a0, 4($s1) -/* 425E6C 802A931C 86250056 */ lh $a1, 0x56($s1) -/* 425E70 802A9320 0C051261 */ jal hud_element_set_render_pos -/* 425E74 802A9324 86260058 */ lh $a2, 0x58($s1) -/* 425E78 802A9328 8E240008 */ lw $a0, 8($s1) -/* 425E7C 802A932C 86260058 */ lh $a2, 0x58($s1) -/* 425E80 802A9330 86250056 */ lh $a1, 0x56($s1) -/* 425E84 802A9334 0C051261 */ jal hud_element_set_render_pos -/* 425E88 802A9338 24C6001C */ addiu $a2, $a2, 0x1c -/* 425E8C 802A933C 8E24000C */ lw $a0, 0xc($s1) -/* 425E90 802A9340 86250056 */ lh $a1, 0x56($s1) -/* 425E94 802A9344 86260058 */ lh $a2, 0x58($s1) -/* 425E98 802A9348 24A5001F */ addiu $a1, $a1, 0x1f -/* 425E9C 802A934C 0C051261 */ jal hud_element_set_render_pos -/* 425EA0 802A9350 24C6000E */ addiu $a2, $a2, 0xe -/* 425EA4 802A9354 080AA531 */ j L802A94C4_426014 -/* 425EA8 802A9358 00000000 */ nop -dlabel L802A935C_425EAC -/* 425EAC 802A935C 0C093EB1 */ jal btl_set_popup_duration -/* 425EB0 802A9360 24040063 */ addiu $a0, $zero, 0x63 -/* 425EB4 802A9364 8622004E */ lh $v0, 0x4e($s1) -/* 425EB8 802A9368 9623004E */ lhu $v1, 0x4e($s1) -/* 425EBC 802A936C 10400003 */ beqz $v0, .L802A937C -/* 425EC0 802A9370 2462FFFF */ addiu $v0, $v1, -1 -/* 425EC4 802A9374 080AA531 */ j L802A94C4_426014 -/* 425EC8 802A9378 A622004E */ sh $v0, 0x4e($s1) -.L802A937C: -/* 425ECC 802A937C 8E240004 */ lw $a0, 4($s1) -/* 425ED0 802A9380 3C058011 */ lui $a1, %hi(HudScript_MashAButton) -/* 425ED4 802A9384 24A58B80 */ addiu $a1, $a1, %lo(HudScript_MashAButton) -/* 425ED8 802A9388 0C0511FF */ jal hud_element_set_script -/* 425EDC 802A938C 00000000 */ nop -/* 425EE0 802A9390 A2000081 */ sb $zero, 0x81($s0) -/* 425EE4 802A9394 96230052 */ lhu $v1, 0x52($s1) -/* 425EE8 802A9398 24020001 */ addiu $v0, $zero, 1 -/* 425EEC 802A939C 3C01802B */ lui $at, %hi(D_802A9620) -/* 425EF0 802A93A0 AC229620 */ sw $v0, %lo(D_802A9620)($at) -/* 425EF4 802A93A4 2402000B */ addiu $v0, $zero, 0xb -/* 425EF8 802A93A8 A220005D */ sb $zero, 0x5d($s1) -/* 425EFC 802A93AC A622004C */ sh $v0, 0x4c($s1) -/* 425F00 802A93B0 A6230054 */ sh $v1, 0x54($s1) -dlabel L802A93B4_425F04 -/* 425F04 802A93B4 0C093EB1 */ jal btl_set_popup_duration -/* 425F08 802A93B8 24040063 */ addiu $a0, $zero, 0x63 -/* 425F0C 802A93BC 8E020214 */ lw $v0, 0x214($s0) -/* 425F10 802A93C0 30428000 */ andi $v0, $v0, 0x8000 -/* 425F14 802A93C4 1040000E */ beqz $v0, .L802A9400 -/* 425F18 802A93C8 00000000 */ nop -/* 425F1C 802A93CC 86220050 */ lh $v0, 0x50($s1) -/* 425F20 802A93D0 8E030434 */ lw $v1, 0x434($s0) -/* 425F24 802A93D4 00021080 */ sll $v0, $v0, 2 -/* 425F28 802A93D8 00431021 */ addu $v0, $v0, $v1 -/* 425F2C 802A93DC 8C430000 */ lw $v1, ($v0) -/* 425F30 802A93E0 00031040 */ sll $v0, $v1, 1 -/* 425F34 802A93E4 00431021 */ addu $v0, $v0, $v1 -/* 425F38 802A93E8 8223005D */ lb $v1, 0x5d($s1) -/* 425F3C 802A93EC 14600004 */ bnez $v1, .L802A9400 -/* 425F40 802A93F0 00022040 */ sll $a0, $v0, 1 -/* 425F44 802A93F4 96220044 */ lhu $v0, 0x44($s1) -/* 425F48 802A93F8 00441021 */ addu $v0, $v0, $a0 -/* 425F4C 802A93FC A6220044 */ sh $v0, 0x44($s1) -.L802A9400: -/* 425F50 802A9400 86220044 */ lh $v0, 0x44($s1) -/* 425F54 802A9404 28422711 */ slti $v0, $v0, 0x2711 -/* 425F58 802A9408 14400004 */ bnez $v0, .L802A941C -/* 425F5C 802A940C 24022710 */ addiu $v0, $zero, 0x2710 -/* 425F60 802A9410 A6220044 */ sh $v0, 0x44($s1) -/* 425F64 802A9414 24020003 */ addiu $v0, $zero, 3 -/* 425F68 802A9418 A222005D */ sb $v0, 0x5d($s1) -.L802A941C: -/* 425F6C 802A941C 8222005D */ lb $v0, 0x5d($s1) -/* 425F70 802A9420 9223005D */ lbu $v1, 0x5d($s1) -/* 425F74 802A9424 10400009 */ beqz $v0, .L802A944C -/* 425F78 802A9428 2462FFFF */ addiu $v0, $v1, -1 -/* 425F7C 802A942C A222005D */ sb $v0, 0x5d($s1) -/* 425F80 802A9430 00021600 */ sll $v0, $v0, 0x18 -/* 425F84 802A9434 14400006 */ bnez $v0, .L802A9450 -/* 425F88 802A9438 3C0451EB */ lui $a0, 0x51eb -/* 425F8C 802A943C 92020081 */ lbu $v0, 0x81($s0) -/* 425F90 802A9440 A6200044 */ sh $zero, 0x44($s1) -/* 425F94 802A9444 24420001 */ addiu $v0, $v0, 1 -/* 425F98 802A9448 A2020081 */ sb $v0, 0x81($s0) -.L802A944C: -/* 425F9C 802A944C 3C0451EB */ lui $a0, 0x51eb -.L802A9450: -/* 425FA0 802A9450 96230044 */ lhu $v1, 0x44($s1) -/* 425FA4 802A9454 3484851F */ ori $a0, $a0, 0x851f -/* 425FA8 802A9458 00031C00 */ sll $v1, $v1, 0x10 -/* 425FAC 802A945C 00031403 */ sra $v0, $v1, 0x10 -/* 425FB0 802A9460 00440018 */ mult $v0, $a0 -/* 425FB4 802A9464 00031FC3 */ sra $v1, $v1, 0x1f -/* 425FB8 802A9468 00003810 */ mfhi $a3 -/* 425FBC 802A946C 00071143 */ sra $v0, $a3, 5 -/* 425FC0 802A9470 00431023 */ subu $v0, $v0, $v1 -/* 425FC4 802A9474 A2020084 */ sb $v0, 0x84($s0) -/* 425FC8 802A9478 86220054 */ lh $v0, 0x54($s1) -/* 425FCC 802A947C 96230054 */ lhu $v1, 0x54($s1) -/* 425FD0 802A9480 1440000C */ bnez $v0, .L802A94B4 -/* 425FD4 802A9484 2462FFFF */ addiu $v0, $v1, -1 -/* 425FD8 802A9488 0C093EB1 */ jal btl_set_popup_duration -/* 425FDC 802A948C 0000202D */ daddu $a0, $zero, $zero -/* 425FE0 802A9490 24020005 */ addiu $v0, $zero, 5 -/* 425FE4 802A9494 A6220054 */ sh $v0, 0x54($s1) -/* 425FE8 802A9498 2402000C */ addiu $v0, $zero, 0xc -/* 425FEC 802A949C 080AA531 */ j L802A94C4_426014 -/* 425FF0 802A94A0 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A94A4_425FF4 -/* 425FF4 802A94A4 86220054 */ lh $v0, 0x54($s1) -/* 425FF8 802A94A8 96230054 */ lhu $v1, 0x54($s1) -/* 425FFC 802A94AC 10400003 */ beqz $v0, .L802A94BC -/* 426000 802A94B0 2462FFFF */ addiu $v0, $v1, -1 -.L802A94B4: -/* 426004 802A94B4 080AA531 */ j L802A94C4_426014 -/* 426008 802A94B8 A6220054 */ sh $v0, 0x54($s1) -.L802A94BC: -/* 42600C 802A94BC 0C09A327 */ jal func_80268C9C -/* 426010 802A94C0 00000000 */ nop -dlabel L802A94C4_426014 -/* 426014 802A94C4 8FBF0018 */ lw $ra, 0x18($sp) -/* 426018 802A94C8 8FB10014 */ lw $s1, 0x14($sp) -/* 42601C 802A94CC 8FB00010 */ lw $s0, 0x10($sp) -/* 426020 802A94D0 03E00008 */ jr $ra -/* 426024 802A94D4 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/battle/action_cmd/0A/func_802A928C_42763C.s b/ver/us/asm/nonmatchings/battle/action_cmd/0A/func_802A928C_42763C.s deleted file mode 100644 index 6621e08bf2..0000000000 --- a/ver/us/asm/nonmatchings/battle/action_cmd/0A/func_802A928C_42763C.s +++ /dev/null @@ -1,208 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_802A9680_427A30 -.word .L802A92D4_427684, .L802A9330_4276E0, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9544_4278F4, .L802A9388_427738, .L802A93D0_427780, .L802A9524_4278D4, 0, 0, 0 - -.section .text -glabel func_802A928C_42763C -/* 42763C 802A928C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 427640 802A9290 AFB10014 */ sw $s1, 0x14($sp) -/* 427644 802A9294 3C11802A */ lui $s1, %hi(gActionCommandStatus) -/* 427648 802A9298 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus) -/* 42764C 802A929C AFBF001C */ sw $ra, 0x1c($sp) -/* 427650 802A92A0 AFB20018 */ sw $s2, 0x18($sp) -/* 427654 802A92A4 AFB00010 */ sw $s0, 0x10($sp) -/* 427658 802A92A8 8623004C */ lh $v1, 0x4c($s1) -/* 42765C 802A92AC 3C12800E */ lui $s2, %hi(gBattleStatus) -/* 427660 802A92B0 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus) -/* 427664 802A92B4 2C62000D */ sltiu $v0, $v1, 0xd -/* 427668 802A92B8 104000A2 */ beqz $v0, .L802A9544_4278F4 -/* 42766C 802A92BC 00031080 */ sll $v0, $v1, 2 -/* 427670 802A92C0 3C01802B */ lui $at, %hi(jtbl_802A9680_427A30) -/* 427674 802A92C4 00220821 */ addu $at, $at, $v0 -/* 427678 802A92C8 8C229680 */ lw $v0, %lo(jtbl_802A9680_427A30)($at) -/* 42767C 802A92CC 00400008 */ jr $v0 -/* 427680 802A92D0 00000000 */ nop -.L802A92D4_427684: -/* 427684 802A92D4 0C093EB1 */ jal btl_set_popup_duration -/* 427688 802A92D8 24040063 */ addiu $a0, $zero, 0x63 -/* 42768C 802A92DC 8E300004 */ lw $s0, 4($s1) -/* 427690 802A92E0 240500FF */ addiu $a1, $zero, 0xff -/* 427694 802A92E4 0C0513AC */ jal hud_element_set_alpha -/* 427698 802A92E8 0200202D */ daddu $a0, $s0, $zero -/* 42769C 802A92EC 82220061 */ lb $v0, 0x61($s1) -/* 4276A0 802A92F0 10400003 */ beqz $v0, .L802A9300 -/* 4276A4 802A92F4 0200202D */ daddu $a0, $s0, $zero -/* 4276A8 802A92F8 0C05128B */ jal hud_element_clear_flags -/* 4276AC 802A92FC 24050002 */ addiu $a1, $zero, 2 -.L802A9300: -/* 4276B0 802A9300 8E300008 */ lw $s0, 8($s1) -/* 4276B4 802A9304 240500FF */ addiu $a1, $zero, 0xff -/* 4276B8 802A9308 0C0513AC */ jal hud_element_set_alpha -/* 4276BC 802A930C 0200202D */ daddu $a0, $s0, $zero -/* 4276C0 802A9310 82220061 */ lb $v0, 0x61($s1) -/* 4276C4 802A9314 10400003 */ beqz $v0, .L802A9324 -/* 4276C8 802A9318 0200202D */ daddu $a0, $s0, $zero -/* 4276CC 802A931C 0C05128B */ jal hud_element_clear_flags -/* 4276D0 802A9320 24050002 */ addiu $a1, $zero, 2 -.L802A9324: -/* 4276D4 802A9324 24020001 */ addiu $v0, $zero, 1 -/* 4276D8 802A9328 080AA551 */ j .L802A9544_4278F4 -/* 4276DC 802A932C A622004C */ sh $v0, 0x4c($s1) -.L802A9330_4276E0: -/* 4276E0 802A9330 0C093EB1 */ jal btl_set_popup_duration -/* 4276E4 802A9334 24040063 */ addiu $a0, $zero, 0x63 -/* 4276E8 802A9338 96220056 */ lhu $v0, 0x56($s1) -/* 4276EC 802A933C 24420014 */ addiu $v0, $v0, 0x14 -/* 4276F0 802A9340 A6220056 */ sh $v0, 0x56($s1) -/* 4276F4 802A9344 00021400 */ sll $v0, $v0, 0x10 -/* 4276F8 802A9348 00021403 */ sra $v0, $v0, 0x10 -/* 4276FC 802A934C 28420033 */ slti $v0, $v0, 0x33 -/* 427700 802A9350 14400002 */ bnez $v0, .L802A935C -/* 427704 802A9354 24020032 */ addiu $v0, $zero, 0x32 -/* 427708 802A9358 A6220056 */ sh $v0, 0x56($s1) -.L802A935C: -/* 42770C 802A935C 8E240004 */ lw $a0, 4($s1) -/* 427710 802A9360 86250056 */ lh $a1, 0x56($s1) -/* 427714 802A9364 0C051261 */ jal hud_element_set_render_pos -/* 427718 802A9368 86260058 */ lh $a2, 0x58($s1) -/* 42771C 802A936C 8E240008 */ lw $a0, 8($s1) -/* 427720 802A9370 86260058 */ lh $a2, 0x58($s1) -/* 427724 802A9374 86250056 */ lh $a1, 0x56($s1) -/* 427728 802A9378 0C051261 */ jal hud_element_set_render_pos -/* 42772C 802A937C 24C6001C */ addiu $a2, $a2, 0x1c -/* 427730 802A9380 080AA551 */ j .L802A9544_4278F4 -/* 427734 802A9384 00000000 */ nop -.L802A9388_427738: -/* 427738 802A9388 0C093EB1 */ jal btl_set_popup_duration -/* 42773C 802A938C 24040063 */ addiu $a0, $zero, 0x63 -/* 427740 802A9390 8622004E */ lh $v0, 0x4e($s1) -/* 427744 802A9394 9623004E */ lhu $v1, 0x4e($s1) -/* 427748 802A9398 10400003 */ beqz $v0, .L802A93A8 -/* 42774C 802A939C 2462FFFF */ addiu $v0, $v1, -1 -/* 427750 802A93A0 080AA551 */ j .L802A9544_4278F4 -/* 427754 802A93A4 A622004E */ sh $v0, 0x4e($s1) -.L802A93A8: -/* 427758 802A93A8 8E240004 */ lw $a0, 4($s1) -/* 42775C 802A93AC 3C058011 */ lui $a1, %hi(HudScript_MashAButton) -/* 427760 802A93B0 24A58B80 */ addiu $a1, $a1, %lo(HudScript_MashAButton) -/* 427764 802A93B4 0C0511FF */ jal hud_element_set_script -/* 427768 802A93B8 00000000 */ nop -/* 42776C 802A93BC 96230052 */ lhu $v1, 0x52($s1) -/* 427770 802A93C0 2402000B */ addiu $v0, $zero, 0xb -/* 427774 802A93C4 A6200044 */ sh $zero, 0x44($s1) -/* 427778 802A93C8 A622004C */ sh $v0, 0x4c($s1) -/* 42777C 802A93CC A6230054 */ sh $v1, 0x54($s1) -.L802A93D0_427780: -/* 427780 802A93D0 0C093EB1 */ jal btl_set_popup_duration -/* 427784 802A93D4 24040063 */ addiu $a0, $zero, 0x63 -/* 427788 802A93D8 8E420214 */ lw $v0, 0x214($s2) -/* 42778C 802A93DC 30428000 */ andi $v0, $v0, 0x8000 -/* 427790 802A93E0 1040000B */ beqz $v0, .L802A9410 -/* 427794 802A93E4 00000000 */ nop -/* 427798 802A93E8 86220050 */ lh $v0, 0x50($s1) -/* 42779C 802A93EC 8E430434 */ lw $v1, 0x434($s2) -/* 4277A0 802A93F0 00021080 */ sll $v0, $v0, 2 -/* 4277A4 802A93F4 00431021 */ addu $v0, $v0, $v1 -/* 4277A8 802A93F8 8C440000 */ lw $a0, ($v0) -/* 4277AC 802A93FC 96230044 */ lhu $v1, 0x44($s1) -/* 4277B0 802A9400 00041100 */ sll $v0, $a0, 4 -/* 4277B4 802A9404 00441023 */ subu $v0, $v0, $a0 -/* 4277B8 802A9408 00621821 */ addu $v1, $v1, $v0 -/* 4277BC 802A940C A6230044 */ sh $v1, 0x44($s1) -.L802A9410: -/* 4277C0 802A9410 86220044 */ lh $v0, 0x44($s1) -/* 4277C4 802A9414 28422710 */ slti $v0, $v0, 0x2710 -/* 4277C8 802A9418 14400010 */ bnez $v0, .L802A945C -/* 4277CC 802A941C 3C0451EB */ lui $a0, 0x51eb -/* 4277D0 802A9420 8E30000C */ lw $s0, 0xc($s1) -/* 4277D4 802A9424 86250056 */ lh $a1, 0x56($s1) -/* 4277D8 802A9428 86260058 */ lh $a2, 0x58($s1) -/* 4277DC 802A942C 24022710 */ addiu $v0, $zero, 0x2710 -/* 4277E0 802A9430 A6220044 */ sh $v0, 0x44($s1) -/* 4277E4 802A9434 24020001 */ addiu $v0, $zero, 1 -/* 4277E8 802A9438 A6220068 */ sh $v0, 0x68($s1) -/* 4277EC 802A943C 0200202D */ daddu $a0, $s0, $zero -/* 4277F0 802A9440 24A50032 */ addiu $a1, $a1, 0x32 -/* 4277F4 802A9444 0C051261 */ jal hud_element_set_render_pos -/* 4277F8 802A9448 24C6001C */ addiu $a2, $a2, 0x1c -/* 4277FC 802A944C 0200202D */ daddu $a0, $s0, $zero -/* 427800 802A9450 0C05128B */ jal hud_element_clear_flags -/* 427804 802A9454 24050002 */ addiu $a1, $zero, 2 -/* 427808 802A9458 3C0451EB */ lui $a0, 0x51eb -.L802A945C: -/* 42780C 802A945C 96230044 */ lhu $v1, 0x44($s1) -/* 427810 802A9460 3484851F */ ori $a0, $a0, 0x851f -/* 427814 802A9464 00031C00 */ sll $v1, $v1, 0x10 -/* 427818 802A9468 00031403 */ sra $v0, $v1, 0x10 -/* 42781C 802A946C 00440018 */ mult $v0, $a0 -/* 427820 802A9470 00031FC3 */ sra $v1, $v1, 0x1f -/* 427824 802A9474 00003810 */ mfhi $a3 -/* 427828 802A9478 00071143 */ sra $v0, $a3, 5 -/* 42782C 802A947C 00431023 */ subu $v0, $v0, $v1 -/* 427830 802A9480 A2420084 */ sb $v0, 0x84($s2) -/* 427834 802A9484 86220054 */ lh $v0, 0x54($s1) -/* 427838 802A9488 96230054 */ lhu $v1, 0x54($s1) -/* 42783C 802A948C 14400029 */ bnez $v0, .L802A9534 -/* 427840 802A9490 2462FFFF */ addiu $v0, $v1, -1 -/* 427844 802A9494 96220044 */ lhu $v0, 0x44($s1) -/* 427848 802A9498 00021C00 */ sll $v1, $v0, 0x10 -/* 42784C 802A949C 00031403 */ sra $v0, $v1, 0x10 -/* 427850 802A94A0 14400003 */ bnez $v0, .L802A94B0 -/* 427854 802A94A4 00440018 */ mult $v0, $a0 -/* 427858 802A94A8 080AA530 */ j .L802A94C0 -/* 42785C 802A94AC 2402FFFF */ addiu $v0, $zero, -1 -.L802A94B0: -/* 427860 802A94B0 00031FC3 */ sra $v1, $v1, 0x1f -/* 427864 802A94B4 00003810 */ mfhi $a3 -/* 427868 802A94B8 00071143 */ sra $v0, $a3, 5 -/* 42786C 802A94BC 00431023 */ subu $v0, $v0, $v1 -.L802A94C0: -/* 427870 802A94C0 A2420081 */ sb $v0, 0x81($s2) -/* 427874 802A94C4 82220080 */ lb $v0, 0x80($s1) -/* 427878 802A94C8 2442FFFF */ addiu $v0, $v0, -1 -/* 42787C 802A94CC 00021040 */ sll $v0, $v0, 1 -/* 427880 802A94D0 02221021 */ addu $v0, $s1, $v0 -/* 427884 802A94D4 84430074 */ lh $v1, 0x74($v0) -/* 427888 802A94D8 82420081 */ lb $v0, 0x81($s2) -/* 42788C 802A94DC 0043102A */ slt $v0, $v0, $v1 -/* 427890 802A94E0 14400002 */ bnez $v0, .L802A94EC -/* 427894 802A94E4 2402FFFE */ addiu $v0, $zero, -2 -/* 427898 802A94E8 24020001 */ addiu $v0, $zero, 1 -.L802A94EC: -/* 42789C 802A94EC A2420086 */ sb $v0, 0x86($s2) -/* 4278A0 802A94F0 82430081 */ lb $v1, 0x81($s2) -/* 4278A4 802A94F4 24020064 */ addiu $v0, $zero, 0x64 -/* 4278A8 802A94F8 14620003 */ bne $v1, $v0, .L802A9508 -/* 4278AC 802A94FC 00000000 */ nop -/* 4278B0 802A9500 0C09A458 */ jal func_80269160 -/* 4278B4 802A9504 00000000 */ nop -.L802A9508: -/* 4278B8 802A9508 0C093EB1 */ jal btl_set_popup_duration -/* 4278BC 802A950C 0000202D */ daddu $a0, $zero, $zero -/* 4278C0 802A9510 24020005 */ addiu $v0, $zero, 5 -/* 4278C4 802A9514 A6220054 */ sh $v0, 0x54($s1) -/* 4278C8 802A9518 2402000C */ addiu $v0, $zero, 0xc -/* 4278CC 802A951C 080AA551 */ j .L802A9544_4278F4 -/* 4278D0 802A9520 A622004C */ sh $v0, 0x4c($s1) -.L802A9524_4278D4: -/* 4278D4 802A9524 86220054 */ lh $v0, 0x54($s1) -/* 4278D8 802A9528 96230054 */ lhu $v1, 0x54($s1) -/* 4278DC 802A952C 10400003 */ beqz $v0, .L802A953C -/* 4278E0 802A9530 2462FFFF */ addiu $v0, $v1, -1 -.L802A9534: -/* 4278E4 802A9534 080AA551 */ j .L802A9544_4278F4 -/* 4278E8 802A9538 A6220054 */ sh $v0, 0x54($s1) -.L802A953C: -/* 4278EC 802A953C 0C09A327 */ jal func_80268C9C -/* 4278F0 802A9540 00000000 */ nop -.L802A9544_4278F4: -/* 4278F4 802A9544 8FBF001C */ lw $ra, 0x1c($sp) -/* 4278F8 802A9548 8FB20018 */ lw $s2, 0x18($sp) -/* 4278FC 802A954C 8FB10014 */ lw $s1, 0x14($sp) -/* 427900 802A9550 8FB00010 */ lw $s0, 0x10($sp) -/* 427904 802A9554 03E00008 */ jr $ra -/* 427908 802A9558 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/battle/action_cmd/air_lift/func_802A9278_428CE8.s b/ver/us/asm/nonmatchings/battle/action_cmd/air_lift/func_802A9278_428CE8.s deleted file mode 100644 index 3f3db79d85..0000000000 --- a/ver/us/asm/nonmatchings/battle/action_cmd/air_lift/func_802A9278_428CE8.s +++ /dev/null @@ -1,317 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802A9278_428CE8 -/* 428CE8 802A9278 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 428CEC 802A927C AFB10014 */ sw $s1, 0x14($sp) -/* 428CF0 802A9280 3C11802A */ lui $s1, %hi(gActionCommandStatus) -/* 428CF4 802A9284 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus) -/* 428CF8 802A9288 AFBF001C */ sw $ra, 0x1c($sp) -/* 428CFC 802A928C AFB20018 */ sw $s2, 0x18($sp) -/* 428D00 802A9290 AFB00010 */ sw $s0, 0x10($sp) -/* 428D04 802A9294 8623004C */ lh $v1, 0x4c($s1) -/* 428D08 802A9298 3C12800E */ lui $s2, %hi(gBattleStatus) -/* 428D0C 802A929C 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus) -/* 428D10 802A92A0 2C62000D */ sltiu $v0, $v1, 0xd -/* 428D14 802A92A4 1040010B */ beqz $v0, L802A96D4_429144 -/* 428D18 802A92A8 00031080 */ sll $v0, $v1, 2 -/* 428D1C 802A92AC 3C01802B */ lui $at, %hi(jtbl_802A9870_4292E0) -/* 428D20 802A92B0 00220821 */ addu $at, $at, $v0 -/* 428D24 802A92B4 8C229870 */ lw $v0, %lo(jtbl_802A9870_4292E0)($at) -/* 428D28 802A92B8 00400008 */ jr $v0 -/* 428D2C 802A92BC 00000000 */ nop -dlabel L802A92C0_428D30 -/* 428D30 802A92C0 0C093EB1 */ jal btl_set_popup_duration -/* 428D34 802A92C4 24040063 */ addiu $a0, $zero, 0x63 -/* 428D38 802A92C8 8E300004 */ lw $s0, 4($s1) -/* 428D3C 802A92CC 240500FF */ addiu $a1, $zero, 0xff -/* 428D40 802A92D0 0C0513AC */ jal hud_element_set_alpha -/* 428D44 802A92D4 0200202D */ daddu $a0, $s0, $zero -/* 428D48 802A92D8 82220061 */ lb $v0, 0x61($s1) -/* 428D4C 802A92DC 10400003 */ beqz $v0, .L802A92EC -/* 428D50 802A92E0 0200202D */ daddu $a0, $s0, $zero -/* 428D54 802A92E4 0C05128B */ jal hud_element_clear_flags -/* 428D58 802A92E8 24050002 */ addiu $a1, $zero, 2 -.L802A92EC: -/* 428D5C 802A92EC 8E300008 */ lw $s0, 8($s1) -/* 428D60 802A92F0 240500FF */ addiu $a1, $zero, 0xff -/* 428D64 802A92F4 0C0513AC */ jal hud_element_set_alpha -/* 428D68 802A92F8 0200202D */ daddu $a0, $s0, $zero -/* 428D6C 802A92FC 82220061 */ lb $v0, 0x61($s1) -/* 428D70 802A9300 10400003 */ beqz $v0, .L802A9310 -/* 428D74 802A9304 0200202D */ daddu $a0, $s0, $zero -/* 428D78 802A9308 0C05128B */ jal hud_element_clear_flags -/* 428D7C 802A930C 24050002 */ addiu $a1, $zero, 2 -.L802A9310: -/* 428D80 802A9310 24020001 */ addiu $v0, $zero, 1 -/* 428D84 802A9314 080AA5B5 */ j L802A96D4_429144 -/* 428D88 802A9318 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A931C_428D8C -/* 428D8C 802A931C 0C093EB1 */ jal btl_set_popup_duration -/* 428D90 802A9320 24040063 */ addiu $a0, $zero, 0x63 -/* 428D94 802A9324 8622006C */ lh $v0, 0x6c($s1) -/* 428D98 802A9328 9623006C */ lhu $v1, 0x6c($s1) -/* 428D9C 802A932C 10400003 */ beqz $v0, .L802A933C -/* 428DA0 802A9330 2462FFFF */ addiu $v0, $v1, -1 -/* 428DA4 802A9334 080AA5B5 */ j L802A96D4_429144 -/* 428DA8 802A9338 A622006C */ sh $v0, 0x6c($s1) -.L802A933C: -/* 428DAC 802A933C 96220056 */ lhu $v0, 0x56($s1) -/* 428DB0 802A9340 24420014 */ addiu $v0, $v0, 0x14 -/* 428DB4 802A9344 A6220056 */ sh $v0, 0x56($s1) -/* 428DB8 802A9348 00021400 */ sll $v0, $v0, 0x10 -/* 428DBC 802A934C 00021403 */ sra $v0, $v0, 0x10 -/* 428DC0 802A9350 28420033 */ slti $v0, $v0, 0x33 -/* 428DC4 802A9354 14400002 */ bnez $v0, .L802A9360 -/* 428DC8 802A9358 24020032 */ addiu $v0, $zero, 0x32 -/* 428DCC 802A935C A6220056 */ sh $v0, 0x56($s1) -.L802A9360: -/* 428DD0 802A9360 8E240004 */ lw $a0, 4($s1) -/* 428DD4 802A9364 86250056 */ lh $a1, 0x56($s1) -/* 428DD8 802A9368 0C051261 */ jal hud_element_set_render_pos -/* 428DDC 802A936C 86260058 */ lh $a2, 0x58($s1) -/* 428DE0 802A9370 8E240008 */ lw $a0, 8($s1) -/* 428DE4 802A9374 86260058 */ lh $a2, 0x58($s1) -/* 428DE8 802A9378 86250056 */ lh $a1, 0x56($s1) -/* 428DEC 802A937C 0C051261 */ jal hud_element_set_render_pos -/* 428DF0 802A9380 24C6001C */ addiu $a2, $a2, 0x1c -/* 428DF4 802A9384 080AA5B5 */ j L802A96D4_429144 -/* 428DF8 802A9388 00000000 */ nop -dlabel L802A938C_428DFC -/* 428DFC 802A938C 0C093EB1 */ jal btl_set_popup_duration -/* 428E00 802A9390 24040063 */ addiu $a0, $zero, 0x63 -/* 428E04 802A9394 8622004E */ lh $v0, 0x4e($s1) -/* 428E08 802A9398 9623004E */ lhu $v1, 0x4e($s1) -/* 428E0C 802A939C 10400003 */ beqz $v0, .L802A93AC -/* 428E10 802A93A0 2462FFFF */ addiu $v0, $v1, -1 -/* 428E14 802A93A4 080AA5B5 */ j L802A96D4_429144 -/* 428E18 802A93A8 A622004E */ sh $v0, 0x4e($s1) -.L802A93AC: -/* 428E1C 802A93AC 8E240004 */ lw $a0, 4($s1) -/* 428E20 802A93B0 3C058011 */ lui $a1, %hi(HudScript_MashAButton) -/* 428E24 802A93B4 24A58B80 */ addiu $a1, $a1, %lo(HudScript_MashAButton) -/* 428E28 802A93B8 0C0511FF */ jal hud_element_set_script -/* 428E2C 802A93BC 00000000 */ nop -/* 428E30 802A93C0 3C048000 */ lui $a0, 0x8000 -/* 428E34 802A93C4 34840041 */ ori $a0, $a0, 0x41 -/* 428E38 802A93C8 0000282D */ daddu $a1, $zero, $zero -/* 428E3C 802A93CC 00A0302D */ daddu $a2, $a1, $zero -/* 428E40 802A93D0 00A0382D */ daddu $a3, $a1, $zero -/* 428E44 802A93D4 96220052 */ lhu $v0, 0x52($s1) -/* 428E48 802A93D8 24030001 */ addiu $v1, $zero, 1 -/* 428E4C 802A93DC 3C01802B */ lui $at, %hi(action_command_smack_UnkActionCommandFunc1) -/* 428E50 802A93E0 AC2398B0 */ sw $v1, %lo(action_command_smack_UnkActionCommandFunc1)($at) -/* 428E54 802A93E4 0C0526AE */ jal sfx_play_sound_with_params -/* 428E58 802A93E8 A6220054 */ sh $v0, 0x54($s1) -/* 428E5C 802A93EC 2402000B */ addiu $v0, $zero, 0xb -/* 428E60 802A93F0 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A93F4_428E64 -/* 428E64 802A93F4 0C093EB1 */ jal btl_set_popup_duration -/* 428E68 802A93F8 24040063 */ addiu $a0, $zero, 0x63 -/* 428E6C 802A93FC 86220068 */ lh $v0, 0x68($s1) -/* 428E70 802A9400 14400027 */ bnez $v0, .L802A94A0 -/* 428E74 802A9404 00000000 */ nop -/* 428E78 802A9408 8622005A */ lh $v0, 0x5a($s1) -/* 428E7C 802A940C 1040001E */ beqz $v0, .L802A9488 -/* 428E80 802A9410 00000000 */ nop -/* 428E84 802A9414 82220080 */ lb $v0, 0x80($s1) -/* 428E88 802A9418 00021040 */ sll $v0, $v0, 1 -/* 428E8C 802A941C 02221021 */ addu $v0, $s1, $v0 -/* 428E90 802A9420 84430074 */ lh $v1, 0x74($v0) -/* 428E94 802A9424 86220044 */ lh $v0, 0x44($s1) -/* 428E98 802A9428 14600002 */ bnez $v1, .L802A9434 -/* 428E9C 802A942C 0043001A */ div $zero, $v0, $v1 -/* 428EA0 802A9430 0007000D */ break 7 -.L802A9434: -/* 428EA4 802A9434 2401FFFF */ addiu $at, $zero, -1 -/* 428EA8 802A9438 14610004 */ bne $v1, $at, .L802A944C -/* 428EAC 802A943C 3C018000 */ lui $at, 0x8000 -/* 428EB0 802A9440 14410002 */ bne $v0, $at, .L802A944C -/* 428EB4 802A9444 00000000 */ nop -/* 428EB8 802A9448 0006000D */ break 6 -.L802A944C: -/* 428EBC 802A944C 00001012 */ mflo $v0 -/* 428EC0 802A9450 3C036666 */ lui $v1, 0x6666 -/* 428EC4 802A9454 34636667 */ ori $v1, $v1, 0x6667 -/* 428EC8 802A9458 00430018 */ mult $v0, $v1 -/* 428ECC 802A945C 000217C3 */ sra $v0, $v0, 0x1f -/* 428ED0 802A9460 00001810 */ mfhi $v1 -/* 428ED4 802A9464 000318C3 */ sra $v1, $v1, 3 -/* 428ED8 802A9468 00621823 */ subu $v1, $v1, $v0 -/* 428EDC 802A946C 00031880 */ sll $v1, $v1, 2 -/* 428EE0 802A9470 96220044 */ lhu $v0, 0x44($s1) -/* 428EE4 802A9474 3C01802B */ lui $at, %hi(D_802A9852_4292C2) -/* 428EE8 802A9478 00230821 */ addu $at, $at, $v1 -/* 428EEC 802A947C 94239852 */ lhu $v1, %lo(D_802A9852_4292C2)($at) -/* 428EF0 802A9480 080AA524 */ j .L802A9490 -/* 428EF4 802A9484 00431023 */ subu $v0, $v0, $v1 -.L802A9488: -/* 428EF8 802A9488 96220044 */ lhu $v0, 0x44($s1) -/* 428EFC 802A948C 2442FFF6 */ addiu $v0, $v0, -0xa -.L802A9490: -/* 428F00 802A9490 A6220044 */ sh $v0, 0x44($s1) -/* 428F04 802A9494 00021400 */ sll $v0, $v0, 0x10 -/* 428F08 802A9498 04420001 */ bltzl $v0, .L802A94A0 -/* 428F0C 802A949C A6200044 */ sh $zero, 0x44($s1) -.L802A94A0: -/* 428F10 802A94A0 82420083 */ lb $v0, 0x83($s2) -/* 428F14 802A94A4 10400029 */ beqz $v0, .L802A954C -/* 428F18 802A94A8 00000000 */ nop -/* 428F1C 802A94AC 8E420214 */ lw $v0, 0x214($s2) -/* 428F20 802A94B0 30428000 */ andi $v0, $v0, 0x8000 -/* 428F24 802A94B4 10400025 */ beqz $v0, .L802A954C -/* 428F28 802A94B8 00000000 */ nop -/* 428F2C 802A94BC 8625005A */ lh $a1, 0x5a($s1) -/* 428F30 802A94C0 10A00019 */ beqz $a1, .L802A9528 -/* 428F34 802A94C4 00000000 */ nop -/* 428F38 802A94C8 86240050 */ lh $a0, 0x50($s1) -/* 428F3C 802A94CC 8E420434 */ lw $v0, 0x434($s2) -/* 428F40 802A94D0 00042080 */ sll $a0, $a0, 2 -/* 428F44 802A94D4 00822021 */ addu $a0, $a0, $v0 -/* 428F48 802A94D8 00051040 */ sll $v0, $a1, 1 -/* 428F4C 802A94DC 00451021 */ addu $v0, $v0, $a1 -/* 428F50 802A94E0 00021900 */ sll $v1, $v0, 4 -/* 428F54 802A94E4 00431021 */ addu $v0, $v0, $v1 -/* 428F58 802A94E8 00021080 */ sll $v0, $v0, 2 -/* 428F5C 802A94EC 00451021 */ addu $v0, $v0, $a1 -/* 428F60 802A94F0 8C840000 */ lw $a0, ($a0) -/* 428F64 802A94F4 00021080 */ sll $v0, $v0, 2 -/* 428F68 802A94F8 00820018 */ mult $a0, $v0 -/* 428F6C 802A94FC 00002012 */ mflo $a0 -/* 428F70 802A9500 3C0268DB */ lui $v0, 0x68db -/* 428F74 802A9504 34428BAD */ ori $v0, $v0, 0x8bad -/* 428F78 802A9508 00820018 */ mult $a0, $v0 -/* 428F7C 802A950C 000427C3 */ sra $a0, $a0, 0x1f -/* 428F80 802A9510 96220044 */ lhu $v0, 0x44($s1) -/* 428F84 802A9514 00001810 */ mfhi $v1 -/* 428F88 802A9518 00031B03 */ sra $v1, $v1, 0xc -/* 428F8C 802A951C 00641823 */ subu $v1, $v1, $a0 -/* 428F90 802A9520 080AA552 */ j .L802A9548 -/* 428F94 802A9524 00431021 */ addu $v0, $v0, $v1 -.L802A9528: -/* 428F98 802A9528 96220044 */ lhu $v0, 0x44($s1) -/* 428F9C 802A952C 24420064 */ addiu $v0, $v0, 0x64 -/* 428FA0 802A9530 A6220044 */ sh $v0, 0x44($s1) -/* 428FA4 802A9534 00021400 */ sll $v0, $v0, 0x10 -/* 428FA8 802A9538 00021403 */ sra $v0, $v0, 0x10 -/* 428FAC 802A953C 284201F4 */ slti $v0, $v0, 0x1f4 -/* 428FB0 802A9540 14400002 */ bnez $v0, .L802A954C -/* 428FB4 802A9544 240201F4 */ addiu $v0, $zero, 0x1f4 -.L802A9548: -/* 428FB8 802A9548 A6220044 */ sh $v0, 0x44($s1) -.L802A954C: -/* 428FBC 802A954C 86220044 */ lh $v0, 0x44($s1) -/* 428FC0 802A9550 28422711 */ slti $v0, $v0, 0x2711 -/* 428FC4 802A9554 14400010 */ bnez $v0, .L802A9598 -/* 428FC8 802A9558 3C0451EB */ lui $a0, 0x51eb -/* 428FCC 802A955C 8E30000C */ lw $s0, 0xc($s1) -/* 428FD0 802A9560 86250056 */ lh $a1, 0x56($s1) -/* 428FD4 802A9564 86260058 */ lh $a2, 0x58($s1) -/* 428FD8 802A9568 24022710 */ addiu $v0, $zero, 0x2710 -/* 428FDC 802A956C A6220044 */ sh $v0, 0x44($s1) -/* 428FE0 802A9570 24020001 */ addiu $v0, $zero, 1 -/* 428FE4 802A9574 A6220068 */ sh $v0, 0x68($s1) -/* 428FE8 802A9578 0200202D */ daddu $a0, $s0, $zero -/* 428FEC 802A957C 24A50032 */ addiu $a1, $a1, 0x32 -/* 428FF0 802A9580 0C051261 */ jal hud_element_set_render_pos -/* 428FF4 802A9584 24C6001C */ addiu $a2, $a2, 0x1c -/* 428FF8 802A9588 0200202D */ daddu $a0, $s0, $zero -/* 428FFC 802A958C 0C05128B */ jal hud_element_clear_flags -/* 429000 802A9590 24050002 */ addiu $a1, $zero, 2 -/* 429004 802A9594 3C0451EB */ lui $a0, 0x51eb -.L802A9598: -/* 429008 802A9598 96220044 */ lhu $v0, 0x44($s1) -/* 42900C 802A959C 3484851F */ ori $a0, $a0, 0x851f -/* 429010 802A95A0 00021400 */ sll $v0, $v0, 0x10 -/* 429014 802A95A4 00021C03 */ sra $v1, $v0, 0x10 -/* 429018 802A95A8 00640018 */ mult $v1, $a0 -/* 42901C 802A95AC 000217C3 */ sra $v0, $v0, 0x1f -/* 429020 802A95B0 00004010 */ mfhi $t0 -/* 429024 802A95B4 00081943 */ sra $v1, $t0, 5 -/* 429028 802A95B8 00622023 */ subu $a0, $v1, $v0 -/* 42902C 802A95BC 00041600 */ sll $v0, $a0, 0x18 -/* 429030 802A95C0 82430084 */ lb $v1, 0x84($s2) -/* 429034 802A95C4 00021603 */ sra $v0, $v0, 0x18 -/* 429038 802A95C8 0062182A */ slt $v1, $v1, $v0 -/* 42903C 802A95CC 10600002 */ beqz $v1, .L802A95D8 -/* 429040 802A95D0 A2440081 */ sb $a0, 0x81($s2) -/* 429044 802A95D4 A2440084 */ sb $a0, 0x84($s2) -.L802A95D8: -/* 429048 802A95D8 3C048000 */ lui $a0, 0x8000 -/* 42904C 802A95DC 34840041 */ ori $a0, $a0, 0x41 -/* 429050 802A95E0 0000282D */ daddu $a1, $zero, $zero -/* 429054 802A95E4 82420081 */ lb $v0, 0x81($s2) -/* 429058 802A95E8 00A0302D */ daddu $a2, $a1, $zero -/* 42905C 802A95EC 00023840 */ sll $a3, $v0, 1 -/* 429060 802A95F0 00E23821 */ addu $a3, $a3, $v0 -/* 429064 802A95F4 0C0526F9 */ jal sfx_adjust_env_sound_params -/* 429068 802A95F8 00073880 */ sll $a3, $a3, 2 -/* 42906C 802A95FC 86220054 */ lh $v0, 0x54($s1) -/* 429070 802A9600 96230054 */ lhu $v1, 0x54($s1) -/* 429074 802A9604 1440002F */ bnez $v0, .L802A96C4 -/* 429078 802A9608 2462FFFF */ addiu $v0, $v1, -1 -/* 42907C 802A960C 8622005A */ lh $v0, 0x5a($s1) -/* 429080 802A9610 50400001 */ beql $v0, $zero, .L802A9618 -/* 429084 802A9614 A2400084 */ sb $zero, 0x84($s2) -.L802A9618: -/* 429088 802A9618 92420084 */ lbu $v0, 0x84($s2) -/* 42908C 802A961C 24040063 */ addiu $a0, $zero, 0x63 -/* 429090 802A9620 0C00A67F */ jal rand_int -/* 429094 802A9624 A2420081 */ sb $v0, 0x81($s2) -/* 429098 802A9628 82430081 */ lb $v1, 0x81($s2) -/* 42909C 802A962C 0043102A */ slt $v0, $v0, $v1 -/* 4290A0 802A9630 10400003 */ beqz $v0, .L802A9640 -/* 4290A4 802A9634 24020001 */ addiu $v0, $zero, 1 -/* 4290A8 802A9638 080AA593 */ j .L802A964C -/* 4290AC 802A963C A2420086 */ sb $v0, 0x86($s2) -.L802A9640: -/* 4290B0 802A9640 2402FFFE */ addiu $v0, $zero, -2 -/* 4290B4 802A9644 A2420086 */ sb $v0, 0x86($s2) -/* 4290B8 802A9648 2402FFFF */ addiu $v0, $zero, -1 -.L802A964C: -/* 4290BC 802A964C A2420081 */ sb $v0, 0x81($s2) -/* 4290C0 802A9650 82430081 */ lb $v1, 0x81($s2) -/* 4290C4 802A9654 24020001 */ addiu $v0, $zero, 1 -/* 4290C8 802A9658 14620003 */ bne $v1, $v0, .L802A9668 -/* 4290CC 802A965C 00000000 */ nop -/* 4290D0 802A9660 0C09A458 */ jal func_80269160 -/* 4290D4 802A9664 00000000 */ nop -.L802A9668: -/* 4290D8 802A9668 0C093EB1 */ jal btl_set_popup_duration -/* 4290DC 802A966C 0000202D */ daddu $a0, $zero, $zero -/* 4290E0 802A9670 3C048000 */ lui $a0, 0x8000 -/* 4290E4 802A9674 0C05271B */ jal sfx_stop_sound -/* 4290E8 802A9678 34840041 */ ori $a0, $a0, 0x41 -/* 4290EC 802A967C 24020014 */ addiu $v0, $zero, 0x14 -/* 4290F0 802A9680 A6220054 */ sh $v0, 0x54($s1) -/* 4290F4 802A9684 2402000C */ addiu $v0, $zero, 0xc -/* 4290F8 802A9688 080AA5B5 */ j L802A96D4_429144 -/* 4290FC 802A968C A622004C */ sh $v0, 0x4c($s1) -dlabel L802A9690_429100 -/* 429100 802A9690 8622005A */ lh $v0, 0x5a($s1) -/* 429104 802A9694 14400007 */ bnez $v0, .L802A96B4 -/* 429108 802A9698 00000000 */ nop -/* 42910C 802A969C 96220044 */ lhu $v0, 0x44($s1) -/* 429110 802A96A0 2442FF9C */ addiu $v0, $v0, -0x64 -/* 429114 802A96A4 A6220044 */ sh $v0, 0x44($s1) -/* 429118 802A96A8 00021400 */ sll $v0, $v0, 0x10 -/* 42911C 802A96AC 04420001 */ bltzl $v0, .L802A96B4 -/* 429120 802A96B0 A6200044 */ sh $zero, 0x44($s1) -.L802A96B4: -/* 429124 802A96B4 86220054 */ lh $v0, 0x54($s1) -/* 429128 802A96B8 96230054 */ lhu $v1, 0x54($s1) -/* 42912C 802A96BC 10400003 */ beqz $v0, .L802A96CC -/* 429130 802A96C0 2462FFFF */ addiu $v0, $v1, -1 -.L802A96C4: -/* 429134 802A96C4 080AA5B5 */ j L802A96D4_429144 -/* 429138 802A96C8 A6220054 */ sh $v0, 0x54($s1) -.L802A96CC: -/* 42913C 802A96CC 0C09A327 */ jal func_80268C9C -/* 429140 802A96D0 00000000 */ nop -dlabel L802A96D4_429144 -/* 429144 802A96D4 8FBF001C */ lw $ra, 0x1c($sp) -/* 429148 802A96D8 8FB20018 */ lw $s2, 0x18($sp) -/* 42914C 802A96DC 8FB10014 */ lw $s1, 0x14($sp) -/* 429150 802A96E0 8FB00010 */ lw $s0, 0x10($sp) -/* 429154 802A96E4 03E00008 */ jr $ra -/* 429158 802A96E8 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/battle/action_cmd/air_raid/func_802A9294_4295B4.s b/ver/us/asm/nonmatchings/battle/action_cmd/air_raid/func_802A9294_4295B4.s deleted file mode 100644 index 588b4f2d47..0000000000 --- a/ver/us/asm/nonmatchings/battle/action_cmd/air_raid/func_802A9294_4295B4.s +++ /dev/null @@ -1,401 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802A9294_4295B4 -/* 4295B4 802A9294 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 4295B8 802A9298 AFB10014 */ sw $s1, 0x14($sp) -/* 4295BC 802A929C 3C11802A */ lui $s1, %hi(gActionCommandStatus) -/* 4295C0 802A92A0 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus) -/* 4295C4 802A92A4 AFB20018 */ sw $s2, 0x18($sp) -/* 4295C8 802A92A8 3C12800E */ lui $s2, %hi(gBattleStatus) -/* 4295CC 802A92AC 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus) -/* 4295D0 802A92B0 AFBF0020 */ sw $ra, 0x20($sp) -/* 4295D4 802A92B4 AFB3001C */ sw $s3, 0x1c($sp) -/* 4295D8 802A92B8 AFB00010 */ sw $s0, 0x10($sp) -/* 4295DC 802A92BC 8623004C */ lh $v1, 0x4c($s1) -/* 4295E0 802A92C0 8E5300DC */ lw $s3, 0xdc($s2) -/* 4295E4 802A92C4 2C62000D */ sltiu $v0, $v1, 0xd -/* 4295E8 802A92C8 10400159 */ beqz $v0, L802A9830_429B50 -/* 4295EC 802A92CC 00031080 */ sll $v0, $v1, 2 -/* 4295F0 802A92D0 3C01802B */ lui $at, %hi(jtbl_802A99C0_429CE0) -/* 4295F4 802A92D4 00220821 */ addu $at, $at, $v0 -/* 4295F8 802A92D8 8C2299C0 */ lw $v0, %lo(jtbl_802A99C0_429CE0)($at) -/* 4295FC 802A92DC 00400008 */ jr $v0 -/* 429600 802A92E0 00000000 */ nop -dlabel L802A92E4_429604 -/* 429604 802A92E4 0C093EB1 */ jal btl_set_popup_duration -/* 429608 802A92E8 24040063 */ addiu $a0, $zero, 0x63 -/* 42960C 802A92EC 8E300004 */ lw $s0, 4($s1) -/* 429610 802A92F0 240500FF */ addiu $a1, $zero, 0xff -/* 429614 802A92F4 0C0513AC */ jal hud_element_set_alpha -/* 429618 802A92F8 0200202D */ daddu $a0, $s0, $zero -/* 42961C 802A92FC 82220061 */ lb $v0, 0x61($s1) -/* 429620 802A9300 10400003 */ beqz $v0, .L802A9310 -/* 429624 802A9304 0200202D */ daddu $a0, $s0, $zero -/* 429628 802A9308 0C05128B */ jal hud_element_clear_flags -/* 42962C 802A930C 24050002 */ addiu $a1, $zero, 2 -.L802A9310: -/* 429630 802A9310 8E300008 */ lw $s0, 8($s1) -/* 429634 802A9314 240500FF */ addiu $a1, $zero, 0xff -/* 429638 802A9318 0C0513AC */ jal hud_element_set_alpha -/* 42963C 802A931C 0200202D */ daddu $a0, $s0, $zero -/* 429640 802A9320 82220061 */ lb $v0, 0x61($s1) -/* 429644 802A9324 10400003 */ beqz $v0, .L802A9334 -/* 429648 802A9328 0200202D */ daddu $a0, $s0, $zero -/* 42964C 802A932C 0C05128B */ jal hud_element_clear_flags -/* 429650 802A9330 24050002 */ addiu $a1, $zero, 2 -.L802A9334: -/* 429654 802A9334 24020001 */ addiu $v0, $zero, 1 -/* 429658 802A9338 080AA60C */ j L802A9830_429B50 -/* 42965C 802A933C A622004C */ sh $v0, 0x4c($s1) -dlabel L802A9340_429660 -/* 429660 802A9340 0C093EB1 */ jal btl_set_popup_duration -/* 429664 802A9344 24040063 */ addiu $a0, $zero, 0x63 -/* 429668 802A9348 8622006C */ lh $v0, 0x6c($s1) -/* 42966C 802A934C 9623006C */ lhu $v1, 0x6c($s1) -/* 429670 802A9350 10400003 */ beqz $v0, .L802A9360 -/* 429674 802A9354 2462FFFF */ addiu $v0, $v1, -1 -/* 429678 802A9358 080AA60C */ j L802A9830_429B50 -/* 42967C 802A935C A622006C */ sh $v0, 0x6c($s1) -.L802A9360: -/* 429680 802A9360 96220056 */ lhu $v0, 0x56($s1) -/* 429684 802A9364 24420014 */ addiu $v0, $v0, 0x14 -/* 429688 802A9368 A6220056 */ sh $v0, 0x56($s1) -/* 42968C 802A936C 00021400 */ sll $v0, $v0, 0x10 -/* 429690 802A9370 00021403 */ sra $v0, $v0, 0x10 -/* 429694 802A9374 28420033 */ slti $v0, $v0, 0x33 -/* 429698 802A9378 14400002 */ bnez $v0, .L802A9384 -/* 42969C 802A937C 24020032 */ addiu $v0, $zero, 0x32 -/* 4296A0 802A9380 A6220056 */ sh $v0, 0x56($s1) -.L802A9384: -/* 4296A4 802A9384 8E240004 */ lw $a0, 4($s1) -/* 4296A8 802A9388 86250056 */ lh $a1, 0x56($s1) -/* 4296AC 802A938C 0C051261 */ jal hud_element_set_render_pos -/* 4296B0 802A9390 86260058 */ lh $a2, 0x58($s1) -/* 4296B4 802A9394 8E240008 */ lw $a0, 8($s1) -/* 4296B8 802A9398 86260058 */ lh $a2, 0x58($s1) -/* 4296BC 802A939C 86250056 */ lh $a1, 0x56($s1) -/* 4296C0 802A93A0 0C051261 */ jal hud_element_set_render_pos -/* 4296C4 802A93A4 24C6001C */ addiu $a2, $a2, 0x1c -/* 4296C8 802A93A8 080AA60C */ j L802A9830_429B50 -/* 4296CC 802A93AC 00000000 */ nop -dlabel L802A93B0_4296D0 -/* 4296D0 802A93B0 0C093EB1 */ jal btl_set_popup_duration -/* 4296D4 802A93B4 24040063 */ addiu $a0, $zero, 0x63 -/* 4296D8 802A93B8 8622004E */ lh $v0, 0x4e($s1) -/* 4296DC 802A93BC 9623004E */ lhu $v1, 0x4e($s1) -/* 4296E0 802A93C0 10400003 */ beqz $v0, .L802A93D0 -/* 4296E4 802A93C4 2462FFFF */ addiu $v0, $v1, -1 -/* 4296E8 802A93C8 080AA60C */ j L802A9830_429B50 -/* 4296EC 802A93CC A622004E */ sh $v0, 0x4e($s1) -.L802A93D0: -/* 4296F0 802A93D0 8E240004 */ lw $a0, 4($s1) -/* 4296F4 802A93D4 3C058011 */ lui $a1, %hi(HudScript_StickMashLeft) -/* 4296F8 802A93D8 24A58F30 */ addiu $a1, $a1, %lo(HudScript_StickMashLeft) -/* 4296FC 802A93DC 0C0511FF */ jal hud_element_set_script -/* 429700 802A93E0 00000000 */ nop -/* 429704 802A93E4 3C048000 */ lui $a0, 0x8000 -/* 429708 802A93E8 34840041 */ ori $a0, $a0, 0x41 -/* 42970C 802A93EC 0000282D */ daddu $a1, $zero, $zero -/* 429710 802A93F0 00A0302D */ daddu $a2, $a1, $zero -/* 429714 802A93F4 96220052 */ lhu $v0, 0x52($s1) -/* 429718 802A93F8 00A0382D */ daddu $a3, $a1, $zero -/* 42971C 802A93FC A6200044 */ sh $zero, 0x44($s1) -/* 429720 802A9400 A2400085 */ sb $zero, 0x85($s2) -/* 429724 802A9404 A220005C */ sb $zero, 0x5c($s1) -/* 429728 802A9408 0C0526AE */ jal sfx_play_sound_with_params -/* 42972C 802A940C A6220054 */ sh $v0, 0x54($s1) -/* 429730 802A9410 2402000B */ addiu $v0, $zero, 0xb -/* 429734 802A9414 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A9418_429738 -/* 429738 802A9418 0C093EB1 */ jal btl_set_popup_duration -/* 42973C 802A941C 24040063 */ addiu $a0, $zero, 0x63 -/* 429740 802A9420 86220068 */ lh $v0, 0x68($s1) -/* 429744 802A9424 1440005F */ bnez $v0, .L802A95A4 -/* 429748 802A9428 00000000 */ nop -/* 42974C 802A942C 82220080 */ lb $v0, 0x80($s1) -/* 429750 802A9430 00021040 */ sll $v0, $v0, 1 -/* 429754 802A9434 02221021 */ addu $v0, $s1, $v0 -/* 429758 802A9438 84430074 */ lh $v1, 0x74($v0) -/* 42975C 802A943C 86220044 */ lh $v0, 0x44($s1) -/* 429760 802A9440 14600002 */ bnez $v1, .L802A944C -/* 429764 802A9444 0043001A */ div $zero, $v0, $v1 -/* 429768 802A9448 0007000D */ break 7 -.L802A944C: -/* 42976C 802A944C 2401FFFF */ addiu $at, $zero, -1 -/* 429770 802A9450 14610004 */ bne $v1, $at, .L802A9464 -/* 429774 802A9454 3C018000 */ lui $at, 0x8000 -/* 429778 802A9458 14410002 */ bne $v0, $at, .L802A9464 -/* 42977C 802A945C 00000000 */ nop -/* 429780 802A9460 0006000D */ break 6 -.L802A9464: -/* 429784 802A9464 00001012 */ mflo $v0 -/* 429788 802A9468 3C036666 */ lui $v1, 0x6666 -/* 42978C 802A946C 34636667 */ ori $v1, $v1, 0x6667 -/* 429790 802A9470 00430018 */ mult $v0, $v1 -/* 429794 802A9474 000217C3 */ sra $v0, $v0, 0x1f -/* 429798 802A9478 00001810 */ mfhi $v1 -/* 42979C 802A947C 000318C3 */ sra $v1, $v1, 3 -/* 4297A0 802A9480 00621823 */ subu $v1, $v1, $v0 -/* 4297A4 802A9484 00031880 */ sll $v1, $v1, 2 -/* 4297A8 802A9488 96220044 */ lhu $v0, 0x44($s1) -/* 4297AC 802A948C 3C01802B */ lui $at, %hi(D_802A9972_429C92) -/* 4297B0 802A9490 00230821 */ addu $at, $at, $v1 -/* 4297B4 802A9494 94239972 */ lhu $v1, %lo(D_802A9972_429C92)($at) -/* 4297B8 802A9498 00431023 */ subu $v0, $v0, $v1 -/* 4297BC 802A949C A6220044 */ sh $v0, 0x44($s1) -/* 4297C0 802A94A0 00021400 */ sll $v0, $v0, 0x10 -/* 4297C4 802A94A4 04420001 */ bltzl $v0, .L802A94AC -/* 4297C8 802A94A8 A6200044 */ sh $zero, 0x44($s1) -.L802A94AC: -/* 4297CC 802A94AC 86220068 */ lh $v0, 0x68($s1) -/* 4297D0 802A94B0 1440003C */ bnez $v0, .L802A95A4 -/* 4297D4 802A94B4 3C040004 */ lui $a0, 4 -/* 4297D8 802A94B8 8E420210 */ lw $v0, 0x210($s2) -/* 4297DC 802A94BC 00441024 */ and $v0, $v0, $a0 -/* 4297E0 802A94C0 10400005 */ beqz $v0, .L802A94D8 -/* 4297E4 802A94C4 24030001 */ addiu $v1, $zero, 1 -/* 4297E8 802A94C8 8E420210 */ lw $v0, 0x210($s2) -/* 4297EC 802A94CC 00441024 */ and $v0, $v0, $a0 -/* 4297F0 802A94D0 1440001A */ bnez $v0, .L802A953C -/* 4297F4 802A94D4 A223005C */ sb $v1, 0x5c($s1) -.L802A94D8: -/* 4297F8 802A94D8 8222005C */ lb $v0, 0x5c($s1) -/* 4297FC 802A94DC 10400017 */ beqz $v0, .L802A953C -/* 429800 802A94E0 3C0451EB */ lui $a0, 0x51eb -/* 429804 802A94E4 86220050 */ lh $v0, 0x50($s1) -/* 429808 802A94E8 8E430434 */ lw $v1, 0x434($s2) -/* 42980C 802A94EC 00021080 */ sll $v0, $v0, 2 -/* 429810 802A94F0 00431021 */ addu $v0, $v0, $v1 -/* 429814 802A94F4 8C430000 */ lw $v1, ($v0) -/* 429818 802A94F8 3484851F */ ori $a0, $a0, 0x851f -/* 42981C 802A94FC 00031040 */ sll $v0, $v1, 1 -/* 429820 802A9500 00431021 */ addu $v0, $v0, $v1 -/* 429824 802A9504 000210C0 */ sll $v0, $v0, 3 -/* 429828 802A9508 00431021 */ addu $v0, $v0, $v1 -/* 42982C 802A950C 00021900 */ sll $v1, $v0, 4 -/* 429830 802A9510 00431021 */ addu $v0, $v0, $v1 -/* 429834 802A9514 00021040 */ sll $v0, $v0, 1 -/* 429838 802A9518 00440018 */ mult $v0, $a0 -/* 42983C 802A951C A220005C */ sb $zero, 0x5c($s1) -/* 429840 802A9520 000217C3 */ sra $v0, $v0, 0x1f -/* 429844 802A9524 96230044 */ lhu $v1, 0x44($s1) -/* 429848 802A9528 00004810 */ mfhi $t1 -/* 42984C 802A952C 00092143 */ sra $a0, $t1, 5 -/* 429850 802A9530 00822023 */ subu $a0, $a0, $v0 -/* 429854 802A9534 00641821 */ addu $v1, $v1, $a0 -/* 429858 802A9538 A6230044 */ sh $v1, 0x44($s1) -.L802A953C: -/* 42985C 802A953C 8E420214 */ lw $v0, 0x214($s2) -/* 429860 802A9540 3C030008 */ lui $v1, 8 -/* 429864 802A9544 00431024 */ and $v0, $v0, $v1 -/* 429868 802A9548 10400016 */ beqz $v0, .L802A95A4 -/* 42986C 802A954C 3C0451EB */ lui $a0, 0x51eb -/* 429870 802A9550 86220050 */ lh $v0, 0x50($s1) -/* 429874 802A9554 8E430434 */ lw $v1, 0x434($s2) -/* 429878 802A9558 00021080 */ sll $v0, $v0, 2 -/* 42987C 802A955C 00431021 */ addu $v0, $v0, $v1 -/* 429880 802A9560 8C430000 */ lw $v1, ($v0) -/* 429884 802A9564 3484851F */ ori $a0, $a0, 0x851f -/* 429888 802A9568 00031040 */ sll $v0, $v1, 1 -/* 42988C 802A956C 00431021 */ addu $v0, $v0, $v1 -/* 429890 802A9570 000210C0 */ sll $v0, $v0, 3 -/* 429894 802A9574 00431021 */ addu $v0, $v0, $v1 -/* 429898 802A9578 00021900 */ sll $v1, $v0, 4 -/* 42989C 802A957C 00431021 */ addu $v0, $v0, $v1 -/* 4298A0 802A9580 00021040 */ sll $v0, $v0, 1 -/* 4298A4 802A9584 00440018 */ mult $v0, $a0 -/* 4298A8 802A9588 000217C3 */ sra $v0, $v0, 0x1f -/* 4298AC 802A958C 96230044 */ lhu $v1, 0x44($s1) -/* 4298B0 802A9590 00004810 */ mfhi $t1 -/* 4298B4 802A9594 00092143 */ sra $a0, $t1, 5 -/* 4298B8 802A9598 00822023 */ subu $a0, $a0, $v0 -/* 4298BC 802A959C 00641823 */ subu $v1, $v1, $a0 -/* 4298C0 802A95A0 A6230044 */ sh $v1, 0x44($s1) -.L802A95A4: -/* 4298C4 802A95A4 86220044 */ lh $v0, 0x44($s1) -/* 4298C8 802A95A8 04420001 */ bltzl $v0, .L802A95B0 -/* 4298CC 802A95AC A6200044 */ sh $zero, 0x44($s1) -.L802A95B0: -/* 4298D0 802A95B0 86220044 */ lh $v0, 0x44($s1) -/* 4298D4 802A95B4 28422711 */ slti $v0, $v0, 0x2711 -/* 4298D8 802A95B8 14400010 */ bnez $v0, .L802A95FC -/* 4298DC 802A95BC 3C0451EB */ lui $a0, 0x51eb -/* 4298E0 802A95C0 8E30000C */ lw $s0, 0xc($s1) -/* 4298E4 802A95C4 86250056 */ lh $a1, 0x56($s1) -/* 4298E8 802A95C8 86260058 */ lh $a2, 0x58($s1) -/* 4298EC 802A95CC 24022710 */ addiu $v0, $zero, 0x2710 -/* 4298F0 802A95D0 A6220044 */ sh $v0, 0x44($s1) -/* 4298F4 802A95D4 24020001 */ addiu $v0, $zero, 1 -/* 4298F8 802A95D8 A6220068 */ sh $v0, 0x68($s1) -/* 4298FC 802A95DC 0200202D */ daddu $a0, $s0, $zero -/* 429900 802A95E0 24A50032 */ addiu $a1, $a1, 0x32 -/* 429904 802A95E4 0C051261 */ jal hud_element_set_render_pos -/* 429908 802A95E8 24C6001C */ addiu $a2, $a2, 0x1c -/* 42990C 802A95EC 0200202D */ daddu $a0, $s0, $zero -/* 429910 802A95F0 0C05128B */ jal hud_element_clear_flags -/* 429914 802A95F4 24050002 */ addiu $a1, $zero, 2 -/* 429918 802A95F8 3C0451EB */ lui $a0, 0x51eb -.L802A95FC: -/* 42991C 802A95FC 3484851F */ ori $a0, $a0, 0x851f -/* 429920 802A9600 96230044 */ lhu $v1, 0x44($s1) -/* 429924 802A9604 0000282D */ daddu $a1, $zero, $zero -/* 429928 802A9608 00031C00 */ sll $v1, $v1, 0x10 -/* 42992C 802A960C 00031403 */ sra $v0, $v1, 0x10 -/* 429930 802A9610 00440018 */ mult $v0, $a0 -/* 429934 802A9614 00A0302D */ daddu $a2, $a1, $zero -/* 429938 802A9618 3C048000 */ lui $a0, 0x8000 -/* 42993C 802A961C 34840041 */ ori $a0, $a0, 0x41 -/* 429940 802A9620 00031FC3 */ sra $v1, $v1, 0x1f -/* 429944 802A9624 00004810 */ mfhi $t1 -/* 429948 802A9628 00094143 */ sra $t0, $t1, 5 -/* 42994C 802A962C 01034023 */ subu $t0, $t0, $v1 -/* 429950 802A9630 00081600 */ sll $v0, $t0, 0x18 -/* 429954 802A9634 00021603 */ sra $v0, $v0, 0x18 -/* 429958 802A9638 00023840 */ sll $a3, $v0, 1 -/* 42995C 802A963C 00E23821 */ addu $a3, $a3, $v0 -/* 429960 802A9640 00073880 */ sll $a3, $a3, 2 -/* 429964 802A9644 0C0526F9 */ jal sfx_adjust_env_sound_params -/* 429968 802A9648 A2480084 */ sb $t0, 0x84($s2) -/* 42996C 802A964C 8E620008 */ lw $v0, 8($s3) -/* 429970 802A9650 90430006 */ lbu $v1, 6($v0) -/* 429974 802A9654 24020001 */ addiu $v0, $zero, 1 -/* 429978 802A9658 10620019 */ beq $v1, $v0, .L802A96C0 -/* 42997C 802A965C 28620002 */ slti $v0, $v1, 2 -/* 429980 802A9660 10400005 */ beqz $v0, .L802A9678 -/* 429984 802A9664 24020002 */ addiu $v0, $zero, 2 -/* 429988 802A9668 10600007 */ beqz $v1, .L802A9688 -/* 42998C 802A966C 00000000 */ nop -/* 429990 802A9670 080AA5D7 */ j .L802A975C -/* 429994 802A9674 00000000 */ nop -.L802A9678: -/* 429998 802A9678 1062001F */ beq $v1, $v0, .L802A96F8 -/* 42999C 802A967C 00000000 */ nop -/* 4299A0 802A9680 080AA5D7 */ j .L802A975C -/* 4299A4 802A9684 00000000 */ nop -.L802A9688: -/* 4299A8 802A9688 82420085 */ lb $v0, 0x85($s2) -/* 4299AC 802A968C 82430084 */ lb $v1, 0x84($s2) -/* 4299B0 802A9690 00021080 */ sll $v0, $v0, 2 -/* 4299B4 802A9694 3C01802B */ lui $at, %hi(D_802A9984_429CA4) -/* 4299B8 802A9698 00220821 */ addu $at, $at, $v0 -/* 4299BC 802A969C 8C229984 */ lw $v0, %lo(D_802A9984_429CA4)($at) -/* 4299C0 802A96A0 3C05802B */ lui $a1, %hi(D_802A9984_429CA4) -/* 4299C4 802A96A4 24A59984 */ addiu $a1, $a1, %lo(D_802A9984_429CA4) -/* 4299C8 802A96A8 0062182A */ slt $v1, $v1, $v0 -/* 4299CC 802A96AC 92420085 */ lbu $v0, 0x85($s2) -/* 4299D0 802A96B0 1460001E */ bnez $v1, .L802A972C -/* 4299D4 802A96B4 24420001 */ addiu $v0, $v0, 1 -/* 4299D8 802A96B8 080AA5CB */ j .L802A972C -/* 4299DC 802A96BC A2420085 */ sb $v0, 0x85($s2) -.L802A96C0: -/* 4299E0 802A96C0 82420085 */ lb $v0, 0x85($s2) -/* 4299E4 802A96C4 82430084 */ lb $v1, 0x84($s2) -/* 4299E8 802A96C8 00021080 */ sll $v0, $v0, 2 -/* 4299EC 802A96CC 3C01802B */ lui $at, %hi(D_802A9994_429CB4) -/* 4299F0 802A96D0 00220821 */ addu $at, $at, $v0 -/* 4299F4 802A96D4 8C229994 */ lw $v0, %lo(D_802A9994_429CB4)($at) -/* 4299F8 802A96D8 3C05802B */ lui $a1, %hi(D_802A9994_429CB4) -/* 4299FC 802A96DC 24A59994 */ addiu $a1, $a1, %lo(D_802A9994_429CB4) -/* 429A00 802A96E0 0062182A */ slt $v1, $v1, $v0 -/* 429A04 802A96E4 92420085 */ lbu $v0, 0x85($s2) -/* 429A08 802A96E8 14600010 */ bnez $v1, .L802A972C -/* 429A0C 802A96EC 24420001 */ addiu $v0, $v0, 1 -/* 429A10 802A96F0 080AA5CB */ j .L802A972C -/* 429A14 802A96F4 A2420085 */ sb $v0, 0x85($s2) -.L802A96F8: -/* 429A18 802A96F8 82420085 */ lb $v0, 0x85($s2) -/* 429A1C 802A96FC 82430084 */ lb $v1, 0x84($s2) -/* 429A20 802A9700 00021080 */ sll $v0, $v0, 2 -/* 429A24 802A9704 3C01802B */ lui $at, %hi(D_802A99A8_429CC8) -/* 429A28 802A9708 00220821 */ addu $at, $at, $v0 -/* 429A2C 802A970C 8C2299A8 */ lw $v0, %lo(D_802A99A8_429CC8)($at) -/* 429A30 802A9710 3C05802B */ lui $a1, %hi(D_802A99A8_429CC8) -/* 429A34 802A9714 24A599A8 */ addiu $a1, $a1, %lo(D_802A99A8_429CC8) -/* 429A38 802A9718 0062182A */ slt $v1, $v1, $v0 -/* 429A3C 802A971C 92420085 */ lbu $v0, 0x85($s2) -/* 429A40 802A9720 14600002 */ bnez $v1, .L802A972C -/* 429A44 802A9724 24420001 */ addiu $v0, $v0, 1 -/* 429A48 802A9728 A2420085 */ sb $v0, 0x85($s2) -.L802A972C: -/* 429A4C 802A972C 82420085 */ lb $v0, 0x85($s2) -/* 429A50 802A9730 92440085 */ lbu $a0, 0x85($s2) -/* 429A54 802A9734 18400009 */ blez $v0, .L802A975C -/* 429A58 802A9738 2442FFFF */ addiu $v0, $v0, -1 -/* 429A5C 802A973C 00021080 */ sll $v0, $v0, 2 -/* 429A60 802A9740 00451021 */ addu $v0, $v0, $a1 -/* 429A64 802A9744 82430084 */ lb $v1, 0x84($s2) -/* 429A68 802A9748 8C420000 */ lw $v0, ($v0) -/* 429A6C 802A974C 0062182A */ slt $v1, $v1, $v0 -/* 429A70 802A9750 10600002 */ beqz $v1, .L802A975C -/* 429A74 802A9754 2482FFFF */ addiu $v0, $a0, -1 -/* 429A78 802A9758 A2420085 */ sb $v0, 0x85($s2) -.L802A975C: -/* 429A7C 802A975C 86220054 */ lh $v0, 0x54($s1) -/* 429A80 802A9760 96230054 */ lhu $v1, 0x54($s1) -/* 429A84 802A9764 1440002E */ bnez $v0, .L802A9820 -/* 429A88 802A9768 2462FFFF */ addiu $v0, $v1, -1 -/* 429A8C 802A976C 96220044 */ lhu $v0, 0x44($s1) -/* 429A90 802A9770 00021C00 */ sll $v1, $v0, 0x10 -/* 429A94 802A9774 00032403 */ sra $a0, $v1, 0x10 -/* 429A98 802A9778 14800003 */ bnez $a0, .L802A9788 -/* 429A9C 802A977C 3C0251EB */ lui $v0, 0x51eb -/* 429AA0 802A9780 080AA5E8 */ j .L802A97A0 -/* 429AA4 802A9784 2402FFFF */ addiu $v0, $zero, -1 -.L802A9788: -/* 429AA8 802A9788 3442851F */ ori $v0, $v0, 0x851f -/* 429AAC 802A978C 00820018 */ mult $a0, $v0 -/* 429AB0 802A9790 00031FC3 */ sra $v1, $v1, 0x1f -/* 429AB4 802A9794 00004810 */ mfhi $t1 -/* 429AB8 802A9798 00091143 */ sra $v0, $t1, 5 -/* 429ABC 802A979C 00431023 */ subu $v0, $v0, $v1 -.L802A97A0: -/* 429AC0 802A97A0 A2420081 */ sb $v0, 0x81($s2) -/* 429AC4 802A97A4 82220080 */ lb $v0, 0x80($s1) -/* 429AC8 802A97A8 2442FFFF */ addiu $v0, $v0, -1 -/* 429ACC 802A97AC 00021040 */ sll $v0, $v0, 1 -/* 429AD0 802A97B0 02221021 */ addu $v0, $s1, $v0 -/* 429AD4 802A97B4 84430074 */ lh $v1, 0x74($v0) -/* 429AD8 802A97B8 82420081 */ lb $v0, 0x81($s2) -/* 429ADC 802A97BC 0062102A */ slt $v0, $v1, $v0 -/* 429AE0 802A97C0 14400002 */ bnez $v0, .L802A97CC -/* 429AE4 802A97C4 24020001 */ addiu $v0, $zero, 1 -/* 429AE8 802A97C8 2402FFFE */ addiu $v0, $zero, -2 -.L802A97CC: -/* 429AEC 802A97CC A2420086 */ sb $v0, 0x86($s2) -/* 429AF0 802A97D0 82430081 */ lb $v1, 0x81($s2) -/* 429AF4 802A97D4 24020064 */ addiu $v0, $zero, 0x64 -/* 429AF8 802A97D8 14620003 */ bne $v1, $v0, .L802A97E8 -/* 429AFC 802A97DC 00000000 */ nop -/* 429B00 802A97E0 0C09A458 */ jal func_80269160 -/* 429B04 802A97E4 00000000 */ nop -.L802A97E8: -/* 429B08 802A97E8 0C093EB1 */ jal btl_set_popup_duration -/* 429B0C 802A97EC 0000202D */ daddu $a0, $zero, $zero -/* 429B10 802A97F0 3C048000 */ lui $a0, 0x8000 -/* 429B14 802A97F4 0C05271B */ jal sfx_stop_sound -/* 429B18 802A97F8 34840041 */ ori $a0, $a0, 0x41 -/* 429B1C 802A97FC 24020005 */ addiu $v0, $zero, 5 -/* 429B20 802A9800 A6220054 */ sh $v0, 0x54($s1) -/* 429B24 802A9804 2402000C */ addiu $v0, $zero, 0xc -/* 429B28 802A9808 080AA60C */ j L802A9830_429B50 -/* 429B2C 802A980C A622004C */ sh $v0, 0x4c($s1) -dlabel L802A9810_429B30 -/* 429B30 802A9810 86220054 */ lh $v0, 0x54($s1) -/* 429B34 802A9814 96230054 */ lhu $v1, 0x54($s1) -/* 429B38 802A9818 10400003 */ beqz $v0, .L802A9828 -/* 429B3C 802A981C 2462FFFF */ addiu $v0, $v1, -1 -.L802A9820: -/* 429B40 802A9820 080AA60C */ j L802A9830_429B50 -/* 429B44 802A9824 A6220054 */ sh $v0, 0x54($s1) -.L802A9828: -/* 429B48 802A9828 0C09A327 */ jal func_80268C9C -/* 429B4C 802A982C 00000000 */ nop -dlabel L802A9830_429B50 -/* 429B50 802A9830 8FBF0020 */ lw $ra, 0x20($sp) -/* 429B54 802A9834 8FB3001C */ lw $s3, 0x1c($sp) -/* 429B58 802A9838 8FB20018 */ lw $s2, 0x18($sp) -/* 429B5C 802A983C 8FB10014 */ lw $s1, 0x14($sp) -/* 429B60 802A9840 8FB00010 */ lw $s0, 0x10($sp) -/* 429B64 802A9844 03E00008 */ jr $ra -/* 429B68 802A9848 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/ver/us/asm/nonmatchings/battle/action_cmd/body_slam/func_802A92D4_4285B4.s b/ver/us/asm/nonmatchings/battle/action_cmd/body_slam/func_802A92D4_4285B4.s index f7e6f503cc..352d784584 100644 --- a/ver/us/asm/nonmatchings/battle/action_cmd/body_slam/func_802A92D4_4285B4.s +++ b/ver/us/asm/nonmatchings/battle/action_cmd/body_slam/func_802A92D4_4285B4.s @@ -1,6 +1,13 @@ .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.section .rodata + +dlabel jtbl_802A9750_428A30 +.word .L802A9318_4285F8, .L802A93BC_42869C, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9650_428930, .L802A9444_428724, .L802A94A8_428788, .L802A9630_428910, 0, 0, 0 + +.section .text + glabel func_802A92D4_4285B4 /* 4285B4 802A92D4 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 4285B8 802A92D8 AFB10014 */ sw $s1, 0x14($sp) @@ -12,14 +19,14 @@ glabel func_802A92D4_4285B4 /* 4285D0 802A92F0 3C10800E */ lui $s0, %hi(gBattleStatus) /* 4285D4 802A92F4 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus) /* 4285D8 802A92F8 2C62000D */ sltiu $v0, $v1, 0xd -/* 4285DC 802A92FC 104000D4 */ beqz $v0, L802A9650_428930 +/* 4285DC 802A92FC 104000D4 */ beqz $v0, .L802A9650_428930 /* 4285E0 802A9300 00031080 */ sll $v0, $v1, 2 /* 4285E4 802A9304 3C01802B */ lui $at, %hi(jtbl_802A9750_428A30) /* 4285E8 802A9308 00220821 */ addu $at, $at, $v0 /* 4285EC 802A930C 8C229750 */ lw $v0, %lo(jtbl_802A9750_428A30)($at) /* 4285F0 802A9310 00400008 */ jr $v0 /* 4285F4 802A9314 00000000 */ nop -dlabel L802A9318_4285F8 +.L802A9318_4285F8: /* 4285F8 802A9318 0C093EB1 */ jal btl_set_popup_duration /* 4285FC 802A931C 24040063 */ addiu $a0, $zero, 0x63 /* 428600 802A9320 8E300004 */ lw $s0, 4($s1) @@ -63,9 +70,9 @@ dlabel L802A9318_4285F8 /* 42868C 802A93AC 24050002 */ addiu $a1, $zero, 2 .L802A93B0: /* 428690 802A93B0 24020001 */ addiu $v0, $zero, 1 -/* 428694 802A93B4 080AA594 */ j L802A9650_428930 +/* 428694 802A93B4 080AA594 */ j .L802A9650_428930 /* 428698 802A93B8 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A93BC_42869C +.L802A93BC_42869C: /* 42869C 802A93BC 0C093EB1 */ jal btl_set_popup_duration /* 4286A0 802A93C0 24040063 */ addiu $a0, $zero, 0x63 /* 4286A4 802A93C4 96220056 */ lhu $v0, 0x56($s1) @@ -99,16 +106,16 @@ dlabel L802A93BC_42869C /* 428710 802A9430 24A5002A */ addiu $a1, $a1, 0x2a /* 428714 802A9434 0C051261 */ jal hud_element_set_render_pos /* 428718 802A9438 24C60018 */ addiu $a2, $a2, 0x18 -/* 42871C 802A943C 080AA594 */ j L802A9650_428930 +/* 42871C 802A943C 080AA594 */ j .L802A9650_428930 /* 428720 802A9440 00000000 */ nop -dlabel L802A9444_428724 +.L802A9444_428724: /* 428724 802A9444 0C093EB1 */ jal btl_set_popup_duration /* 428728 802A9448 24040063 */ addiu $a0, $zero, 0x63 /* 42872C 802A944C 8622004E */ lh $v0, 0x4e($s1) /* 428730 802A9450 9623004E */ lhu $v1, 0x4e($s1) /* 428734 802A9454 10400003 */ beqz $v0, .L802A9464 /* 428738 802A9458 2462FFFF */ addiu $v0, $v1, -1 -/* 42873C 802A945C 080AA594 */ j L802A9650_428930 +/* 42873C 802A945C 080AA594 */ j .L802A9650_428930 /* 428740 802A9460 A622004E */ sh $v0, 0x4e($s1) .L802A9464: /* 428744 802A9464 8E240004 */ lw $a0, 4($s1) @@ -128,7 +135,7 @@ dlabel L802A9444_428724 /* 42877C 802A949C A6220054 */ sh $v0, 0x54($s1) /* 428780 802A94A0 2402000B */ addiu $v0, $zero, 0xb /* 428784 802A94A4 A622004C */ sh $v0, 0x4c($s1) -dlabel L802A94A8_428788 +.L802A94A8_428788: /* 428788 802A94A8 0C093EB1 */ jal btl_set_popup_duration /* 42878C 802A94AC 24040063 */ addiu $a0, $zero, 0x63 /* 428790 802A94B0 8E020210 */ lw $v0, 0x210($s0) @@ -190,7 +197,7 @@ dlabel L802A94A8_428788 /* 428868 802A9588 96230054 */ lhu $v1, 0x54($s1) /* 42886C 802A958C 10400005 */ beqz $v0, .L802A95A4 /* 428870 802A9590 2462FFFF */ addiu $v0, $v1, -1 -/* 428874 802A9594 080AA594 */ j L802A9650_428930 +/* 428874 802A9594 080AA594 */ j .L802A9650_428930 /* 428878 802A9598 A6220054 */ sh $v0, 0x54($s1) .L802A959C: /* 42887C 802A959C 080AA57B */ j .L802A95EC @@ -231,19 +238,19 @@ dlabel L802A94A8_428788 /* 4288FC 802A961C 24020005 */ addiu $v0, $zero, 5 /* 428900 802A9620 A6220054 */ sh $v0, 0x54($s1) /* 428904 802A9624 2402000C */ addiu $v0, $zero, 0xc -/* 428908 802A9628 080AA594 */ j L802A9650_428930 +/* 428908 802A9628 080AA594 */ j .L802A9650_428930 /* 42890C 802A962C A622004C */ sh $v0, 0x4c($s1) -dlabel L802A9630_428910 +.L802A9630_428910: /* 428910 802A9630 86220054 */ lh $v0, 0x54($s1) /* 428914 802A9634 96230054 */ lhu $v1, 0x54($s1) /* 428918 802A9638 10400003 */ beqz $v0, .L802A9648 /* 42891C 802A963C 2462FFFF */ addiu $v0, $v1, -1 -/* 428920 802A9640 080AA594 */ j L802A9650_428930 +/* 428920 802A9640 080AA594 */ j .L802A9650_428930 /* 428924 802A9644 A6220054 */ sh $v0, 0x54($s1) .L802A9648: /* 428928 802A9648 0C09A327 */ jal func_80268C9C /* 42892C 802A964C 00000000 */ nop -dlabel L802A9650_428930 +.L802A9650_428930: /* 428930 802A9650 8FBF0018 */ lw $ra, 0x18($sp) /* 428934 802A9654 8FB10014 */ lw $s1, 0x14($sp) /* 428938 802A9658 8FB00010 */ lw $s0, 0x10($sp) diff --git a/ver/us/asm/nonmatchings/effects/disable_x/disable_x_main.s b/ver/us/asm/nonmatchings/effects/disable_x/disable_x_main.s deleted file mode 100644 index b24de8a85b..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/disable_x_main.s +++ /dev/null @@ -1,124 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel disable_x_main -/* 385640 E0082000 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 385644 E0082004 F7B40038 */ sdc1 $f20, 0x38($sp) -/* 385648 E0082008 4485A000 */ mtc1 $a1, $f20 -/* 38564C E008200C AFB00028 */ sw $s0, 0x28($sp) -/* 385650 E0082010 0080802D */ daddu $s0, $a0, $zero -/* 385654 E0082014 F7B60040 */ sdc1 $f22, 0x40($sp) -/* 385658 E0082018 4486B000 */ mtc1 $a2, $f22 -/* 38565C E008201C 27A40010 */ addiu $a0, $sp, 0x10 -/* 385660 E0082020 F7B80048 */ sdc1 $f24, 0x48($sp) -/* 385664 E0082024 4487C000 */ mtc1 $a3, $f24 -/* 385668 E0082028 3C02E008 */ lui $v0, %hi(disable_x_init) -/* 38566C E008202C 244221B0 */ addiu $v0, $v0, %lo(disable_x_init) -/* 385670 E0082030 AFA20018 */ sw $v0, 0x18($sp) -/* 385674 E0082034 3C02E008 */ lui $v0, %hi(disable_x_update) -/* 385678 E0082038 244221B8 */ addiu $v0, $v0, %lo(disable_x_update) -/* 38567C E008203C AFA2001C */ sw $v0, 0x1c($sp) -/* 385680 E0082040 3C02E008 */ lui $v0, %hi(disable_x_render) -/* 385684 E0082044 24422520 */ addiu $v0, $v0, %lo(disable_x_render) -/* 385688 E0082048 AFA20020 */ sw $v0, 0x20($sp) -/* 38568C E008204C 3C02E008 */ lui $v0, %hi(func_E0082528) -/* 385690 E0082050 24422528 */ addiu $v0, $v0, %lo(func_E0082528) -/* 385694 E0082054 AFA20024 */ sw $v0, 0x24($sp) -/* 385698 E0082058 24020041 */ addiu $v0, $zero, 0x41 -/* 38569C E008205C AFBF0034 */ sw $ra, 0x34($sp) -/* 3856A0 E0082060 AFB20030 */ sw $s2, 0x30($sp) -/* 3856A4 E0082064 AFB1002C */ sw $s1, 0x2c($sp) -/* 3856A8 E0082068 AFA00010 */ sw $zero, 0x10($sp) -/* 3856AC E008206C 0C080124 */ jal shim_create_effect_instance -/* 3856B0 E0082070 AFA20014 */ sw $v0, 0x14($sp) -/* 3856B4 E0082074 24040090 */ addiu $a0, $zero, 0x90 -/* 3856B8 E0082078 24120002 */ addiu $s2, $zero, 2 -/* 3856BC E008207C 0040882D */ daddu $s1, $v0, $zero -/* 3856C0 E0082080 0C08012C */ jal shim_general_heap_malloc -/* 3856C4 E0082084 AE320008 */ sw $s2, 8($s1) -/* 3856C8 E0082088 0040182D */ daddu $v1, $v0, $zero -/* 3856CC E008208C 14600003 */ bnez $v1, .LE008209C -/* 3856D0 E0082090 AE23000C */ sw $v1, 0xc($s1) -.LE0082094: -/* 3856D4 E0082094 08020825 */ j .LE0082094 -/* 3856D8 E0082098 00000000 */ nop -.LE008209C: -/* 3856DC E008209C 3C013F80 */ lui $at, 0x3f80 -/* 3856E0 E00820A0 44810000 */ mtc1 $at, $f0 -/* 3856E4 E00820A4 24020001 */ addiu $v0, $zero, 1 -/* 3856E8 E00820A8 AC700000 */ sw $s0, ($v1) -/* 3856EC E00820AC 16020004 */ bne $s0, $v0, .LE00820C0 -/* 3856F0 E00820B0 E4600034 */ swc1 $f0, 0x34($v1) -/* 3856F4 E00820B4 AC700038 */ sw $s0, 0x38($v1) -/* 3856F8 E00820B8 08020834 */ j .LE00820D0 -/* 3856FC E00820BC AC60003C */ sw $zero, 0x3c($v1) -.LE00820C0: -/* 385700 E00820C0 AC600038 */ sw $zero, 0x38($v1) -/* 385704 E00820C4 8FA20060 */ lw $v0, 0x60($sp) -/* 385708 E00820C8 AC62003C */ sw $v0, 0x3c($v1) -/* 38570C E00820CC 24020001 */ addiu $v0, $zero, 1 -.LE00820D0: -/* 385710 E00820D0 E4740008 */ swc1 $f20, 8($v1) -/* 385714 E00820D4 E476000C */ swc1 $f22, 0xc($v1) -/* 385718 E00820D8 1202000E */ beq $s0, $v0, .LE0082114 -/* 38571C E00820DC E4780010 */ swc1 $f24, 0x10($v1) -/* 385720 E00820E0 2A020002 */ slti $v0, $s0, 2 -/* 385724 E00820E4 10400005 */ beqz $v0, .LE00820FC -/* 385728 E00820E8 2402000A */ addiu $v0, $zero, 0xa -/* 38572C E00820EC 12000007 */ beqz $s0, .LE008210C -/* 385730 E00820F0 24020001 */ addiu $v0, $zero, 1 -/* 385734 E00820F4 0802084B */ j .LE008212C -/* 385738 E00820F8 AC60002C */ sw $zero, 0x2c($v1) -.LE00820FC: -/* 38573C E00820FC 12020007 */ beq $s0, $v0, .LE008211C -/* 385740 E0082100 24020001 */ addiu $v0, $zero, 1 -/* 385744 E0082104 0802084B */ j .LE008212C -/* 385748 E0082108 AC60002C */ sw $zero, 0x2c($v1) -.LE008210C: -/* 38574C E008210C 08020848 */ j .LE0082120 -/* 385750 E0082110 24020064 */ addiu $v0, $zero, 0x64 -.LE0082114: -/* 385754 E0082114 08020848 */ j .LE0082120 -/* 385758 E0082118 24020064 */ addiu $v0, $zero, 0x64 -.LE008211C: -/* 38575C E008211C 24020015 */ addiu $v0, $zero, 0x15 -.LE0082120: -/* 385760 E0082120 AC620028 */ sw $v0, 0x28($v1) -/* 385764 E0082124 24020001 */ addiu $v0, $zero, 1 -/* 385768 E0082128 AC60002C */ sw $zero, 0x2c($v1) -.LE008212C: -/* 38576C E008212C AC600044 */ sw $zero, 0x44($v1) -/* 385770 E0082130 AC620004 */ sw $v0, 4($v1) -/* 385774 E0082134 0040202D */ daddu $a0, $v0, $zero -/* 385778 E0082138 0092102A */ slt $v0, $a0, $s2 -/* 38577C E008213C 10400012 */ beqz $v0, .LE0082188 -/* 385780 E0082140 24630048 */ addiu $v1, $v1, 0x48 -/* 385784 E0082144 44800000 */ mtc1 $zero, $f0 -/* 385788 E0082148 240500FF */ addiu $a1, $zero, 0xff -/* 38578C E008214C 24630024 */ addiu $v1, $v1, 0x24 -.LE0082150: -/* 385790 E0082150 24840001 */ addiu $a0, $a0, 1 -/* 385794 E0082154 E460FFEC */ swc1 $f0, -0x14($v1) -/* 385798 E0082158 E460FFE8 */ swc1 $f0, -0x18($v1) -/* 38579C E008215C E460FFE4 */ swc1 $f0, -0x1c($v1) -/* 3857A0 E0082160 E460FFFC */ swc1 $f0, -4($v1) -/* 3857A4 E0082164 E460FFF8 */ swc1 $f0, -8($v1) -/* 3857A8 E0082168 E460FFF4 */ swc1 $f0, -0xc($v1) -/* 3857AC E008216C E460FFF0 */ swc1 $f0, -0x10($v1) -/* 3857B0 E0082170 E460001C */ swc1 $f0, 0x1c($v1) -/* 3857B4 E0082174 AC600004 */ sw $zero, 4($v1) -/* 3857B8 E0082178 AC650000 */ sw $a1, ($v1) -/* 3857BC E008217C 0092102A */ slt $v0, $a0, $s2 -/* 3857C0 E0082180 1440FFF3 */ bnez $v0, .LE0082150 -/* 3857C4 E0082184 24630048 */ addiu $v1, $v1, 0x48 -.LE0082188: -/* 3857C8 E0082188 0220102D */ daddu $v0, $s1, $zero -/* 3857CC E008218C 8FBF0034 */ lw $ra, 0x34($sp) -/* 3857D0 E0082190 8FB20030 */ lw $s2, 0x30($sp) -/* 3857D4 E0082194 8FB1002C */ lw $s1, 0x2c($sp) -/* 3857D8 E0082198 8FB00028 */ lw $s0, 0x28($sp) -/* 3857DC E008219C D7B80048 */ ldc1 $f24, 0x48($sp) -/* 3857E0 E00821A0 D7B60040 */ ldc1 $f22, 0x40($sp) -/* 3857E4 E00821A4 D7B40038 */ ldc1 $f20, 0x38($sp) -/* 3857E8 E00821A8 03E00008 */ jr $ra -/* 3857EC E00821AC 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/disable_x_update.s b/ver/us/asm/nonmatchings/effects/disable_x/disable_x_update.s deleted file mode 100644 index f921b05e91..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/disable_x_update.s +++ /dev/null @@ -1,240 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel disable_x_update -/* 3857F8 E00821B8 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 3857FC E00821BC AFB40028 */ sw $s4, 0x28($sp) -/* 385800 E00821C0 0080A02D */ daddu $s4, $a0, $zero -/* 385804 E00821C4 AFBF0038 */ sw $ra, 0x38($sp) -/* 385808 E00821C8 AFB70034 */ sw $s7, 0x34($sp) -/* 38580C E00821CC AFB60030 */ sw $s6, 0x30($sp) -/* 385810 E00821D0 AFB5002C */ sw $s5, 0x2c($sp) -/* 385814 E00821D4 AFB30024 */ sw $s3, 0x24($sp) -/* 385818 E00821D8 AFB20020 */ sw $s2, 0x20($sp) -/* 38581C E00821DC AFB1001C */ sw $s1, 0x1c($sp) -/* 385820 E00821E0 AFB00018 */ sw $s0, 0x18($sp) -/* 385824 E00821E4 F7B60048 */ sdc1 $f22, 0x48($sp) -/* 385828 E00821E8 F7B40040 */ sdc1 $f20, 0x40($sp) -/* 38582C E00821EC 8E830000 */ lw $v1, ($s4) -/* 385830 E00821F0 8E90000C */ lw $s0, 0xc($s4) -/* 385834 E00821F4 30620010 */ andi $v0, $v1, 0x10 -/* 385838 E00821F8 10400005 */ beqz $v0, .LE0082210 -/* 38583C E00821FC 2402FFEF */ addiu $v0, $zero, -0x11 -/* 385840 E0082200 00621024 */ and $v0, $v1, $v0 -/* 385844 E0082204 AE820000 */ sw $v0, ($s4) -/* 385848 E0082208 24020015 */ addiu $v0, $zero, 0x15 -/* 38584C E008220C AE020028 */ sw $v0, 0x28($s0) -.LE0082210: -/* 385850 E0082210 8E030028 */ lw $v1, 0x28($s0) -/* 385854 E0082214 28620064 */ slti $v0, $v1, 0x64 -/* 385858 E0082218 10400002 */ beqz $v0, .LE0082224 -/* 38585C E008221C 2462FFFF */ addiu $v0, $v1, -1 -/* 385860 E0082220 AE020028 */ sw $v0, 0x28($s0) -.LE0082224: -/* 385864 E0082224 8E020028 */ lw $v0, 0x28($s0) -/* 385868 E0082228 04410005 */ bgez $v0, .LE0082240 -/* 38586C E008222C 3C030004 */ lui $v1, 4 -/* 385870 E0082230 0C080128 */ jal shim_remove_effect -/* 385874 E0082234 0280202D */ daddu $a0, $s4, $zero -/* 385878 E0082238 0802093B */ j .LE00824EC -/* 38587C E008223C 00000000 */ nop -.LE0082240: -/* 385880 E0082240 8E02002C */ lw $v0, 0x2c($s0) -/* 385884 E0082244 3463F1A0 */ ori $v1, $v1, 0xf1a0 -/* 385888 E0082248 24420001 */ addiu $v0, $v0, 1 -/* 38588C E008224C 0062182A */ slt $v1, $v1, $v0 -/* 385890 E0082250 10600003 */ beqz $v1, .LE0082260 -/* 385894 E0082254 AE02002C */ sw $v0, 0x2c($s0) -/* 385898 E0082258 24020100 */ addiu $v0, $zero, 0x100 -/* 38589C E008225C AE02002C */ sw $v0, 0x2c($s0) -.LE0082260: -/* 3858A0 E0082260 8E03003C */ lw $v1, 0x3c($s0) -/* 3858A4 E0082264 8E130000 */ lw $s3, ($s0) -/* 3858A8 E0082268 8E120028 */ lw $s2, 0x28($s0) -/* 3858AC E008226C 8E15002C */ lw $s5, 0x2c($s0) -/* 3858B0 E0082270 8E040038 */ lw $a0, 0x38($s0) -/* 3858B4 E0082274 16600034 */ bnez $s3, .LE0082348 -/* 3858B8 E0082278 C6160034 */ lwc1 $f22, 0x34($s0) -/* 3858BC E008227C 8E020044 */ lw $v0, 0x44($s0) -/* 3858C0 E0082280 1C400030 */ bgtz $v0, .LE0082344 -/* 3858C4 E0082284 2442FFFF */ addiu $v0, $v0, -1 -/* 3858C8 E0082288 1064002F */ beq $v1, $a0, .LE0082348 -/* 3858CC E008228C 00000000 */ nop -/* 3858D0 E0082290 04620001 */ bltzl $v1, .LE0082298 -/* 3858D4 E0082294 0000182D */ daddu $v1, $zero, $zero -.LE0082298: -/* 3858D8 E0082298 0083102A */ slt $v0, $a0, $v1 -/* 3858DC E008229C 10400017 */ beqz $v0, .LE00822FC -/* 3858E0 E00822A0 24020064 */ addiu $v0, $zero, 0x64 -/* 3858E4 E00822A4 AE020028 */ sw $v0, 0x28($s0) -/* 3858E8 E00822A8 24020001 */ addiu $v0, $zero, 1 -/* 3858EC E00822AC AE02002C */ sw $v0, 0x2c($s0) -/* 3858F0 E00822B0 8E020038 */ lw $v0, 0x38($s0) -/* 3858F4 E00822B4 C602000C */ lwc1 $f2, 0xc($s0) -/* 3858F8 E00822B8 3C01C3FA */ lui $at, 0xc3fa -/* 3858FC E00822BC 44810000 */ mtc1 $at, $f0 -/* 385900 E00822C0 AE000070 */ sw $zero, 0x70($s0) -/* 385904 E00822C4 24420001 */ addiu $v0, $v0, 1 -/* 385908 E00822C8 4602003C */ c.lt.s $f0, $f2 -/* 38590C E00822CC 00000000 */ nop -/* 385910 E00822D0 4500001B */ bc1f .LE0082340 -/* 385914 E00822D4 AE020038 */ sw $v0, 0x38($s0) -/* 385918 E00822D8 C6000010 */ lwc1 $f0, 0x10($s0) -/* 38591C E00822DC 24042107 */ addiu $a0, $zero, 0x2107 -/* 385920 E00822E0 E7A00010 */ swc1 $f0, 0x10($sp) -/* 385924 E00822E4 8E060008 */ lw $a2, 8($s0) -/* 385928 E00822E8 8E07000C */ lw $a3, 0xc($s0) -/* 38592C E00822EC 0C0801A0 */ jal shim_sfx_play_sound_at_position -/* 385930 E00822F0 0000282D */ daddu $a1, $zero, $zero -/* 385934 E00822F4 080208D1 */ j .LE0082344 -/* 385938 E00822F8 24020008 */ addiu $v0, $zero, 8 -.LE00822FC: -/* 38593C E00822FC 0064102A */ slt $v0, $v1, $a0 -/* 385940 E0082300 10400010 */ beqz $v0, .LE0082344 -/* 385944 E0082304 24020008 */ addiu $v0, $zero, 8 -/* 385948 E0082308 0C080150 */ jal shim_load_effect -/* 38594C E008230C 24040041 */ addiu $a0, $zero, 0x41 -/* 385950 E0082310 C602000C */ lwc1 $f2, 0xc($s0) -/* 385954 E0082314 C6000068 */ lwc1 $f0, 0x68($s0) -/* 385958 E0082318 AFA00010 */ sw $zero, 0x10($sp) -/* 38595C E008231C 46001080 */ add.s $f2, $f2, $f0 -/* 385960 E0082320 8E050008 */ lw $a1, 8($s0) -/* 385964 E0082324 8E070010 */ lw $a3, 0x10($s0) -/* 385968 E0082328 44061000 */ mfc1 $a2, $f2 -/* 38596C E008232C 0C020800 */ jal disable_x_main -/* 385970 E0082330 2404000A */ addiu $a0, $zero, 0xa -/* 385974 E0082334 8E020038 */ lw $v0, 0x38($s0) -/* 385978 E0082338 2442FFFF */ addiu $v0, $v0, -1 -/* 38597C E008233C AE020038 */ sw $v0, 0x38($s0) -.LE0082340: -/* 385980 E0082340 24020008 */ addiu $v0, $zero, 8 -.LE0082344: -/* 385984 E0082344 AE020044 */ sw $v0, 0x44($s0) -.LE0082348: -/* 385988 E0082348 8E820008 */ lw $v0, 8($s4) -/* 38598C E008234C 24110001 */ addiu $s1, $zero, 1 -/* 385990 E0082350 0222102A */ slt $v0, $s1, $v0 -/* 385994 E0082354 10400065 */ beqz $v0, .LE00824EC -/* 385998 E0082358 26100048 */ addiu $s0, $s0, 0x48 -/* 38599C E008235C 3C17E008 */ lui $s7, %hi(D_E0082D30) -/* 3859A0 E0082360 26F72D30 */ addiu $s7, $s7, %lo(D_E0082D30) -/* 3859A4 E0082364 02351004 */ sllv $v0, $s5, $s1 -/* 3859A8 E0082368 00551021 */ addu $v0, $v0, $s5 -/* 3859AC E008236C 0002B080 */ sll $s6, $v0, 2 -/* 3859B0 E0082370 3C014080 */ lui $at, 0x4080 -/* 3859B4 E0082374 4481A000 */ mtc1 $at, $f20 -/* 3859B8 E0082378 02321004 */ sllv $v0, $s2, $s1 -/* 3859BC E008237C 00521021 */ addu $v0, $v0, $s2 -/* 3859C0 E0082380 000210C0 */ sll $v0, $v0, 3 -/* 3859C4 E0082384 0052A821 */ addu $s5, $v0, $s2 -/* 3859C8 E0082388 26100028 */ addiu $s0, $s0, 0x28 -.LE008238C: -/* 3859CC E008238C 8E030000 */ lw $v1, ($s0) -/* 3859D0 E0082390 28620009 */ slti $v0, $v1, 9 -/* 3859D4 E0082394 10400007 */ beqz $v0, .LE00823B4 -/* 3859D8 E0082398 2402000A */ addiu $v0, $zero, 0xa -/* 3859DC E008239C 12620005 */ beq $s3, $v0, .LE00823B4 -/* 3859E0 E00823A0 00031080 */ sll $v0, $v1, 2 -/* 3859E4 E00823A4 00571021 */ addu $v0, $v0, $s7 -/* 3859E8 E00823A8 C4400000 */ lwc1 $f0, ($v0) -/* 3859EC E00823AC 080208F1 */ j .LE00823C4 -/* 3859F0 E00823B0 E6000008 */ swc1 $f0, 8($s0) -.LE00823B4: -/* 3859F4 E00823B4 3C013F80 */ lui $at, 0x3f80 -/* 3859F8 E00823B8 44810000 */ mtc1 $at, $f0 -/* 3859FC E00823BC 00000000 */ nop -/* 385A00 E00823C0 E6000008 */ swc1 $f0, 8($s0) -.LE00823C4: -/* 385A04 E00823C4 C6000008 */ lwc1 $f0, 8($s0) -/* 385A08 E00823C8 46160002 */ mul.s $f0, $f0, $f22 -/* 385A0C E00823CC 00000000 */ nop -/* 385A10 E00823D0 2E620002 */ sltiu $v0, $s3, 2 -/* 385A14 E00823D4 10400009 */ beqz $v0, .LE00823FC -/* 385A18 E00823D8 E6000008 */ swc1 $f0, 8($s0) -/* 385A1C E00823DC 44966000 */ mtc1 $s6, $f12 -/* 385A20 E00823E0 00000000 */ nop -/* 385A24 E00823E4 0C080144 */ jal shim_cos_deg -/* 385A28 E00823E8 46806320 */ cvt.s.w $f12, $f12 -/* 385A2C E00823EC 46140002 */ mul.s $f0, $f0, $f20 -/* 385A30 E00823F0 00000000 */ nop -/* 385A34 E00823F4 08020900 */ j .LE0082400 -/* 385A38 E00823F8 E600FFF8 */ swc1 $f0, -8($s0) -.LE00823FC: -/* 385A3C E00823FC AE00FFF8 */ sw $zero, -8($s0) -.LE0082400: -/* 385A40 E0082400 C606FFE0 */ lwc1 $f6, -0x20($s0) -/* 385A44 E0082404 C600FFEC */ lwc1 $f0, -0x14($s0) -/* 385A48 E0082408 C604FFE4 */ lwc1 $f4, -0x1c($s0) -/* 385A4C E008240C 46003180 */ add.s $f6, $f6, $f0 -/* 385A50 E0082410 C600FFF0 */ lwc1 $f0, -0x10($s0) -/* 385A54 E0082414 C602FFE8 */ lwc1 $f2, -0x18($s0) -/* 385A58 E0082418 46002100 */ add.s $f4, $f4, $f0 -/* 385A5C E008241C C600FFF4 */ lwc1 $f0, -0xc($s0) -/* 385A60 E0082420 24020014 */ addiu $v0, $zero, 0x14 -/* 385A64 E0082424 46001080 */ add.s $f2, $f2, $f0 -/* 385A68 E0082428 E606FFE0 */ swc1 $f6, -0x20($s0) -/* 385A6C E008242C E604FFE4 */ swc1 $f4, -0x1c($s0) -/* 385A70 E0082430 16420005 */ bne $s2, $v0, .LE0082448 -/* 385A74 E0082434 E602FFE8 */ swc1 $f2, -0x18($s0) -/* 385A78 E0082438 3C01C000 */ lui $at, 0xc000 -/* 385A7C E008243C 44810000 */ mtc1 $at, $f0 -/* 385A80 E0082440 E614FFF0 */ swc1 $f20, -0x10($s0) -/* 385A84 E0082444 E600FFEC */ swc1 $f0, -0x14($s0) -.LE0082448: -/* 385A88 E0082448 2A420014 */ slti $v0, $s2, 0x14 -/* 385A8C E008244C 1040001D */ beqz $v0, .LE00824C4 -/* 385A90 E0082450 2A42000A */ slti $v0, $s2, 0xa -/* 385A94 E0082454 44920000 */ mtc1 $s2, $f0 -/* 385A98 E0082458 00000000 */ nop -/* 385A9C E008245C 46800020 */ cvt.s.w $f0, $f0 -/* 385AA0 E0082460 3C01E008 */ lui $at, %hi(D_E0082D60) -/* 385AA4 E0082464 D4222D60 */ ldc1 $f2, %lo(D_E0082D60)($at) -/* 385AA8 E0082468 46000021 */ cvt.d.s $f0, $f0 -/* 385AAC E008246C 46220002 */ mul.d $f0, $f0, $f2 -/* 385AB0 E0082470 00000000 */ nop -/* 385AB4 E0082474 C602FFF8 */ lwc1 $f2, -8($s0) -/* 385AB8 E0082478 460010A1 */ cvt.d.s $f2, $f2 -/* 385ABC E008247C 46201082 */ mul.d $f2, $f2, $f0 -/* 385AC0 E0082480 00000000 */ nop -/* 385AC4 E0082484 3C01BFE0 */ lui $at, 0xbfe0 -/* 385AC8 E0082488 44812800 */ mtc1 $at, $f5 -/* 385ACC E008248C 44802000 */ mtc1 $zero, $f4 -/* 385AD0 E0082490 C600FFF0 */ lwc1 $f0, -0x10($s0) -/* 385AD4 E0082494 C6060018 */ lwc1 $f6, 0x18($s0) -/* 385AD8 E0082498 46000021 */ cvt.d.s $f0, $f0 -/* 385ADC E008249C 46240000 */ add.d $f0, $f0, $f4 -/* 385AE0 E00824A0 3C014120 */ lui $at, 0x4120 -/* 385AE4 E00824A4 44812000 */ mtc1 $at, $f4 -/* 385AE8 E00824A8 00000000 */ nop -/* 385AEC E00824AC 46043180 */ add.s $f6, $f6, $f4 -/* 385AF0 E00824B0 46200020 */ cvt.s.d $f0, $f0 -/* 385AF4 E00824B4 E600FFF0 */ swc1 $f0, -0x10($s0) -/* 385AF8 E00824B8 E6060018 */ swc1 $f6, 0x18($s0) -/* 385AFC E00824BC 462010A0 */ cvt.s.d $f2, $f2 -/* 385B00 E00824C0 E602FFF8 */ swc1 $f2, -8($s0) -.LE00824C4: -/* 385B04 E00824C4 54400001 */ bnel $v0, $zero, .LE00824CC -/* 385B08 E00824C8 AE15FFFC */ sw $s5, -4($s0) -.LE00824CC: -/* 385B0C E00824CC 8E020000 */ lw $v0, ($s0) -/* 385B10 E00824D0 26310001 */ addiu $s1, $s1, 1 -/* 385B14 E00824D4 24420001 */ addiu $v0, $v0, 1 -/* 385B18 E00824D8 AE020000 */ sw $v0, ($s0) -/* 385B1C E00824DC 8E820008 */ lw $v0, 8($s4) -/* 385B20 E00824E0 0222102A */ slt $v0, $s1, $v0 -/* 385B24 E00824E4 1440FFA9 */ bnez $v0, .LE008238C -/* 385B28 E00824E8 26100048 */ addiu $s0, $s0, 0x48 -.LE00824EC: -/* 385B2C E00824EC 8FBF0038 */ lw $ra, 0x38($sp) -/* 385B30 E00824F0 8FB70034 */ lw $s7, 0x34($sp) -/* 385B34 E00824F4 8FB60030 */ lw $s6, 0x30($sp) -/* 385B38 E00824F8 8FB5002C */ lw $s5, 0x2c($sp) -/* 385B3C E00824FC 8FB40028 */ lw $s4, 0x28($sp) -/* 385B40 E0082500 8FB30024 */ lw $s3, 0x24($sp) -/* 385B44 E0082504 8FB20020 */ lw $s2, 0x20($sp) -/* 385B48 E0082508 8FB1001C */ lw $s1, 0x1c($sp) -/* 385B4C E008250C 8FB00018 */ lw $s0, 0x18($sp) -/* 385B50 E0082510 D7B60048 */ ldc1 $f22, 0x48($sp) -/* 385B54 E0082514 D7B40040 */ ldc1 $f20, 0x40($sp) -/* 385B58 E0082518 03E00008 */ jr $ra -/* 385B5C E008251C 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082528.s b/ver/us/asm/nonmatchings/effects/disable_x/func_E0082528.s deleted file mode 100644 index 59e719390d..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082528.s +++ /dev/null @@ -1,27 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_E0082528 -/* 385B68 E0082528 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 385B6C E008252C AFB10014 */ sw $s1, 0x14($sp) -/* 385B70 E0082530 0080882D */ daddu $s1, $a0, $zero -/* 385B74 E0082534 AFBF0018 */ sw $ra, 0x18($sp) -/* 385B78 E0082538 AFB00010 */ sw $s0, 0x10($sp) -/* 385B7C E008253C 8E30000C */ lw $s0, 0xc($s1) -/* 385B80 E0082540 8E020004 */ lw $v0, 4($s0) -/* 385B84 E0082544 10400009 */ beqz $v0, .LE008256C -/* 385B88 E0082548 00000000 */ nop -/* 385B8C E008254C 0C020A2D */ jal func_E00828B4 -/* 385B90 E0082550 00000000 */ nop -/* 385B94 E0082554 8E030000 */ lw $v1, ($s0) -/* 385B98 E0082558 24020001 */ addiu $v0, $zero, 1 -/* 385B9C E008255C 10620003 */ beq $v1, $v0, .LE008256C -/* 385BA0 E0082560 00000000 */ nop -/* 385BA4 E0082564 0C020AA1 */ jal func_E0082A84 -/* 385BA8 E0082568 0220202D */ daddu $a0, $s1, $zero -.LE008256C: -/* 385BAC E008256C 8FBF0018 */ lw $ra, 0x18($sp) -/* 385BB0 E0082570 8FB10014 */ lw $s1, 0x14($sp) -/* 385BB4 E0082574 8FB00010 */ lw $s0, 0x10($sp) -/* 385BB8 E0082578 03E00008 */ jr $ra -/* 385BBC E008257C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082580.s b/ver/us/asm/nonmatchings/effects/disable_x/func_E0082580.s deleted file mode 100644 index 4a3bb9ab0e..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082580.s +++ /dev/null @@ -1,85 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_E0082580 -/* 385BC0 E0082580 27BDFF50 */ addiu $sp, $sp, -0xb0 -/* 385BC4 E0082584 AFB00098 */ sw $s0, 0x98($sp) -/* 385BC8 E0082588 0080802D */ daddu $s0, $a0, $zero -/* 385BCC E008258C 27A40018 */ addiu $a0, $sp, 0x18 -/* 385BD0 E0082590 AFB200A0 */ sw $s2, 0xa0($sp) -/* 385BD4 E0082594 3C120001 */ lui $s2, 1 -/* 385BD8 E0082598 AFBF00A4 */ sw $ra, 0xa4($sp) -/* 385BDC E008259C AFB1009C */ sw $s1, 0x9c($sp) -/* 385BE0 E00825A0 F7B400A8 */ sdc1 $f20, 0xa8($sp) -/* 385BE4 E00825A4 8E050008 */ lw $a1, 8($s0) -/* 385BE8 E00825A8 8E06000C */ lw $a2, 0xc($s0) -/* 385BEC E00825AC 8E070010 */ lw $a3, 0x10($s0) -/* 385BF0 E00825B0 0C080108 */ jal shim_guTranslateF -/* 385BF4 E00825B4 36521630 */ ori $s2, $s2, 0x1630 -/* 385BF8 E00825B8 27B10058 */ addiu $s1, $sp, 0x58 -/* 385BFC E00825BC 0220202D */ daddu $a0, $s1, $zero -/* 385C00 E00825C0 3C013F80 */ lui $at, 0x3f80 -/* 385C04 E00825C4 4481A000 */ mtc1 $at, $f20 -/* 385C08 E00825C8 8E050034 */ lw $a1, 0x34($s0) -/* 385C0C E00825CC 4407A000 */ mfc1 $a3, $f20 -/* 385C10 E00825D0 0C080110 */ jal shim_guScaleF -/* 385C14 E00825D4 00A0302D */ daddu $a2, $a1, $zero -/* 385C18 E00825D8 3C038007 */ lui $v1, %hi(gCurrentCameraID) -/* 385C1C E00825DC 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1) -/* 385C20 E00825E0 44800000 */ mtc1 $zero, $f0 -/* 385C24 E00825E4 00031080 */ sll $v0, $v1, 2 -/* 385C28 E00825E8 00431021 */ addu $v0, $v0, $v1 -/* 385C2C E00825EC 00021080 */ sll $v0, $v0, 2 -/* 385C30 E00825F0 00431023 */ subu $v0, $v0, $v1 -/* 385C34 E00825F4 000218C0 */ sll $v1, $v0, 3 -/* 385C38 E00825F8 00431021 */ addu $v0, $v0, $v1 -/* 385C3C E00825FC 000210C0 */ sll $v0, $v0, 3 -/* 385C40 E0082600 44060000 */ mfc1 $a2, $f0 -/* 385C44 E0082604 3C01800B */ lui $at, %hi(gCameras+0x6C) -/* 385C48 E0082608 00220821 */ addu $at, $at, $v0 -/* 385C4C E008260C C4201DEC */ lwc1 $f0, %lo(gCameras+0x6C)($at) -/* 385C50 E0082610 4407A000 */ mfc1 $a3, $f20 -/* 385C54 E0082614 46000007 */ neg.s $f0, $f0 -/* 385C58 E0082618 44050000 */ mfc1 $a1, $f0 -/* 385C5C E008261C 0220202D */ daddu $a0, $s1, $zero -/* 385C60 E0082620 0C080104 */ jal shim_guRotateF -/* 385C64 E0082624 AFA60010 */ sw $a2, 0x10($sp) -/* 385C68 E0082628 0220202D */ daddu $a0, $s1, $zero -/* 385C6C E008262C 27A50018 */ addiu $a1, $sp, 0x18 -/* 385C70 E0082630 0C080114 */ jal shim_guMtxCatF -/* 385C74 E0082634 00A0302D */ daddu $a2, $a1, $zero -/* 385C78 E0082638 27A40018 */ addiu $a0, $sp, 0x18 -/* 385C7C E008263C 3C108007 */ lui $s0, %hi(gMatrixListPos) -/* 385C80 E0082640 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos) -/* 385C84 E0082644 3C11800A */ lui $s1, %hi(gDisplayContext) -/* 385C88 E0082648 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext) -/* 385C8C E008264C 96050000 */ lhu $a1, ($s0) -/* 385C90 E0082650 8E220000 */ lw $v0, ($s1) -/* 385C94 E0082654 00052980 */ sll $a1, $a1, 6 -/* 385C98 E0082658 00B22821 */ addu $a1, $a1, $s2 -/* 385C9C E008265C 0C080118 */ jal shim_guMtxF2L -/* 385CA0 E0082660 00452821 */ addu $a1, $v0, $a1 -/* 385CA4 E0082664 3C03800A */ lui $v1, %hi(gMasterGfxPos) -/* 385CA8 E0082668 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos) -/* 385CAC E008266C 8C620000 */ lw $v0, ($v1) -/* 385CB0 E0082670 0040202D */ daddu $a0, $v0, $zero -/* 385CB4 E0082674 24420008 */ addiu $v0, $v0, 8 -/* 385CB8 E0082678 AC620000 */ sw $v0, ($v1) -/* 385CBC E008267C 96020000 */ lhu $v0, ($s0) -/* 385CC0 E0082680 3C03DA38 */ lui $v1, 0xda38 -/* 385CC4 E0082684 AC830000 */ sw $v1, ($a0) -/* 385CC8 E0082688 24430001 */ addiu $v1, $v0, 1 -/* 385CCC E008268C 3042FFFF */ andi $v0, $v0, 0xffff -/* 385CD0 E0082690 00021180 */ sll $v0, $v0, 6 -/* 385CD4 E0082694 A6030000 */ sh $v1, ($s0) -/* 385CD8 E0082698 8E230000 */ lw $v1, ($s1) -/* 385CDC E008269C 00521021 */ addu $v0, $v0, $s2 -/* 385CE0 E00826A0 00621821 */ addu $v1, $v1, $v0 -/* 385CE4 E00826A4 AC830004 */ sw $v1, 4($a0) -/* 385CE8 E00826A8 8FBF00A4 */ lw $ra, 0xa4($sp) -/* 385CEC E00826AC 8FB200A0 */ lw $s2, 0xa0($sp) -/* 385CF0 E00826B0 8FB1009C */ lw $s1, 0x9c($sp) -/* 385CF4 E00826B4 8FB00098 */ lw $s0, 0x98($sp) -/* 385CF8 E00826B8 D7B400A8 */ ldc1 $f20, 0xa8($sp) -/* 385CFC E00826BC 03E00008 */ jr $ra -/* 385D00 E00826C0 27BD00B0 */ addiu $sp, $sp, 0xb0 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/func_E00826C4.s b/ver/us/asm/nonmatchings/effects/disable_x/func_E00826C4.s deleted file mode 100644 index 4ab6d7bf21..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/func_E00826C4.s +++ /dev/null @@ -1,130 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_E00826C4 -/* 385D04 E00826C4 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 385D08 E00826C8 AFB1009C */ sw $s1, 0x9c($sp) -/* 385D0C E00826CC 0080882D */ daddu $s1, $a0, $zero -/* 385D10 E00826D0 27A40018 */ addiu $a0, $sp, 0x18 -/* 385D14 E00826D4 AFB300A4 */ sw $s3, 0xa4($sp) -/* 385D18 E00826D8 3C130001 */ lui $s3, 1 -/* 385D1C E00826DC AFBF00A8 */ sw $ra, 0xa8($sp) -/* 385D20 E00826E0 AFB200A0 */ sw $s2, 0xa0($sp) -/* 385D24 E00826E4 AFB00098 */ sw $s0, 0x98($sp) -/* 385D28 E00826E8 F7B400B0 */ sdc1 $f20, 0xb0($sp) -/* 385D2C E00826EC 8E250008 */ lw $a1, 8($s1) -/* 385D30 E00826F0 8E26000C */ lw $a2, 0xc($s1) -/* 385D34 E00826F4 8E270010 */ lw $a3, 0x10($s1) -/* 385D38 E00826F8 0C080108 */ jal shim_guTranslateF -/* 385D3C E00826FC 36731630 */ ori $s3, $s3, 0x1630 -/* 385D40 E0082700 27B00058 */ addiu $s0, $sp, 0x58 -/* 385D44 E0082704 0200202D */ daddu $a0, $s0, $zero -/* 385D48 E0082708 3C013F80 */ lui $at, 0x3f80 -/* 385D4C E008270C 4481A000 */ mtc1 $at, $f20 -/* 385D50 E0082710 8E250030 */ lw $a1, 0x30($s1) -/* 385D54 E0082714 4407A000 */ mfc1 $a3, $f20 -/* 385D58 E0082718 0C080110 */ jal shim_guScaleF -/* 385D5C E008271C 00A0302D */ daddu $a2, $a1, $zero -/* 385D60 E0082720 0200202D */ daddu $a0, $s0, $zero -/* 385D64 E0082724 27A50018 */ addiu $a1, $sp, 0x18 -/* 385D68 E0082728 0C080114 */ jal shim_guMtxCatF -/* 385D6C E008272C 00A0302D */ daddu $a2, $a1, $zero -/* 385D70 E0082730 E7B40010 */ swc1 $f20, 0x10($sp) -/* 385D74 E0082734 4480A000 */ mtc1 $zero, $f20 -/* 385D78 E0082738 8E250040 */ lw $a1, 0x40($s1) -/* 385D7C E008273C 4406A000 */ mfc1 $a2, $f20 -/* 385D80 E0082740 4407A000 */ mfc1 $a3, $f20 -/* 385D84 E0082744 0C080104 */ jal shim_guRotateF -/* 385D88 E0082748 0200202D */ daddu $a0, $s0, $zero -/* 385D8C E008274C 0200202D */ daddu $a0, $s0, $zero -/* 385D90 E0082750 27A50018 */ addiu $a1, $sp, 0x18 -/* 385D94 E0082754 0C080114 */ jal shim_guMtxCatF -/* 385D98 E0082758 00A0302D */ daddu $a2, $a1, $zero -/* 385D9C E008275C 0200202D */ daddu $a0, $s0, $zero -/* 385DA0 E0082760 4405A000 */ mfc1 $a1, $f20 -/* 385DA4 E0082764 8E260020 */ lw $a2, 0x20($s1) -/* 385DA8 E0082768 0C080108 */ jal shim_guTranslateF -/* 385DAC E008276C 00A0382D */ daddu $a3, $a1, $zero -/* 385DB0 E0082770 0200202D */ daddu $a0, $s0, $zero -/* 385DB4 E0082774 27A50018 */ addiu $a1, $sp, 0x18 -/* 385DB8 E0082778 0C080114 */ jal shim_guMtxCatF -/* 385DBC E008277C 00A0302D */ daddu $a2, $a1, $zero -/* 385DC0 E0082780 27A40018 */ addiu $a0, $sp, 0x18 -/* 385DC4 E0082784 3C108007 */ lui $s0, %hi(gMatrixListPos) -/* 385DC8 E0082788 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos) -/* 385DCC E008278C 3C12800A */ lui $s2, %hi(gDisplayContext) -/* 385DD0 E0082790 2652A674 */ addiu $s2, $s2, %lo(gDisplayContext) -/* 385DD4 E0082794 96050000 */ lhu $a1, ($s0) -/* 385DD8 E0082798 8E420000 */ lw $v0, ($s2) -/* 385DDC E008279C 00052980 */ sll $a1, $a1, 6 -/* 385DE0 E00827A0 00B32821 */ addu $a1, $a1, $s3 -/* 385DE4 E00827A4 0C080118 */ jal shim_guMtxF2L -/* 385DE8 E00827A8 00452821 */ addu $a1, $v0, $a1 -/* 385DEC E00827AC 3C08800A */ lui $t0, %hi(gMasterGfxPos) -/* 385DF0 E00827B0 2508A66C */ addiu $t0, $t0, %lo(gMasterGfxPos) -/* 385DF4 E00827B4 8D070000 */ lw $a3, ($t0) -/* 385DF8 E00827B8 00E0202D */ daddu $a0, $a3, $zero -/* 385DFC E00827BC 24E70008 */ addiu $a3, $a3, 8 -/* 385E00 E00827C0 AD070000 */ sw $a3, ($t0) -/* 385E04 E00827C4 96020000 */ lhu $v0, ($s0) -/* 385E08 E00827C8 3C03DA38 */ lui $v1, 0xda38 -/* 385E0C E00827CC AC830000 */ sw $v1, ($a0) -/* 385E10 E00827D0 24430001 */ addiu $v1, $v0, 1 -/* 385E14 E00827D4 3042FFFF */ andi $v0, $v0, 0xffff -/* 385E18 E00827D8 00021180 */ sll $v0, $v0, 6 -/* 385E1C E00827DC A6030000 */ sh $v1, ($s0) -/* 385E20 E00827E0 8E430000 */ lw $v1, ($s2) -/* 385E24 E00827E4 00531021 */ addu $v0, $v0, $s3 -/* 385E28 E00827E8 00621821 */ addu $v1, $v1, $v0 -/* 385E2C E00827EC 24E20008 */ addiu $v0, $a3, 8 -/* 385E30 E00827F0 AC830004 */ sw $v1, 4($a0) -/* 385E34 E00827F4 AD020000 */ sw $v0, ($t0) -/* 385E38 E00827F8 3C02FA00 */ lui $v0, 0xfa00 -/* 385E3C E00827FC ACE20000 */ sw $v0, ($a3) -/* 385E40 E0082800 92220027 */ lbu $v0, 0x27($s1) -/* 385E44 E0082804 ACE20004 */ sw $v0, 4($a3) -/* 385E48 E0082808 8E230024 */ lw $v1, 0x24($s1) -/* 385E4C E008280C 240200FF */ addiu $v0, $zero, 0xff -/* 385E50 E0082810 14620011 */ bne $v1, $v0, .LE0082858 -/* 385E54 E0082814 3C05E200 */ lui $a1, 0xe200 -/* 385E58 E0082818 3C04E200 */ lui $a0, 0xe200 -/* 385E5C E008281C 3484001C */ ori $a0, $a0, 0x1c -/* 385E60 E0082820 3C030055 */ lui $v1, 0x55 -/* 385E64 E0082824 34631208 */ ori $v1, $v1, 0x1208 -/* 385E68 E0082828 3C05FC12 */ lui $a1, 0xfc12 -/* 385E6C E008282C 34A57E24 */ ori $a1, $a1, 0x7e24 -/* 385E70 E0082830 24E20010 */ addiu $v0, $a3, 0x10 -/* 385E74 E0082834 AD020000 */ sw $v0, ($t0) -/* 385E78 E0082838 24E20018 */ addiu $v0, $a3, 0x18 -/* 385E7C E008283C ACE40008 */ sw $a0, 8($a3) -/* 385E80 E0082840 ACE3000C */ sw $v1, 0xc($a3) -/* 385E84 E0082844 AD020000 */ sw $v0, ($t0) -/* 385E88 E0082848 2402F3F9 */ addiu $v0, $zero, -0xc07 -/* 385E8C E008284C ACE50010 */ sw $a1, 0x10($a3) -/* 385E90 E0082850 08020A25 */ j .LE0082894 -/* 385E94 E0082854 ACE20014 */ sw $v0, 0x14($a3) -.LE0082858: -/* 385E98 E0082858 34A5001C */ ori $a1, $a1, 0x1c -/* 385E9C E008285C 3C030050 */ lui $v1, 0x50 -/* 385EA0 E0082860 34634340 */ ori $v1, $v1, 0x4340 -/* 385EA4 E0082864 3C06FC12 */ lui $a2, 0xfc12 -/* 385EA8 E0082868 34C63224 */ ori $a2, $a2, 0x3224 -/* 385EAC E008286C 3C04FF67 */ lui $a0, 0xff67 -/* 385EB0 E0082870 3484FFFF */ ori $a0, $a0, 0xffff -/* 385EB4 E0082874 24E20010 */ addiu $v0, $a3, 0x10 -/* 385EB8 E0082878 AD020000 */ sw $v0, ($t0) -/* 385EBC E008287C 24E20018 */ addiu $v0, $a3, 0x18 -/* 385EC0 E0082880 ACE50008 */ sw $a1, 8($a3) -/* 385EC4 E0082884 ACE3000C */ sw $v1, 0xc($a3) -/* 385EC8 E0082888 AD020000 */ sw $v0, ($t0) -/* 385ECC E008288C ACE60010 */ sw $a2, 0x10($a3) -/* 385ED0 E0082890 ACE40014 */ sw $a0, 0x14($a3) -.LE0082894: -/* 385ED4 E0082894 8FBF00A8 */ lw $ra, 0xa8($sp) -/* 385ED8 E0082898 8FB300A4 */ lw $s3, 0xa4($sp) -/* 385EDC E008289C 8FB200A0 */ lw $s2, 0xa0($sp) -/* 385EE0 E00828A0 8FB1009C */ lw $s1, 0x9c($sp) -/* 385EE4 E00828A4 8FB00098 */ lw $s0, 0x98($sp) -/* 385EE8 E00828A8 D7B400B0 */ ldc1 $f20, 0xb0($sp) -/* 385EEC E00828AC 03E00008 */ jr $ra -/* 385EF0 E00828B0 27BD00B8 */ addiu $sp, $sp, 0xb8 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/func_E00828B4.s b/ver/us/asm/nonmatchings/effects/disable_x/func_E00828B4.s deleted file mode 100644 index 08c0686ba4..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/func_E00828B4.s +++ /dev/null @@ -1,126 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_E00828B4 -/* 385EF4 E00828B4 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 385EF8 E00828B8 AFB50024 */ sw $s5, 0x24($sp) -/* 385EFC E00828BC 0080A82D */ daddu $s5, $a0, $zero -/* 385F00 E00828C0 3C06DB06 */ lui $a2, 0xdb06 -/* 385F04 E00828C4 34C60024 */ ori $a2, $a2, 0x24 -/* 385F08 E00828C8 AFB20018 */ sw $s2, 0x18($sp) -/* 385F0C E00828CC 24120001 */ addiu $s2, $zero, 1 -/* 385F10 E00828D0 AFB00010 */ sw $s0, 0x10($sp) -/* 385F14 E00828D4 3C10800A */ lui $s0, %hi(gMasterGfxPos) -/* 385F18 E00828D8 2610A66C */ addiu $s0, $s0, %lo(gMasterGfxPos) -/* 385F1C E00828DC 3C02E700 */ lui $v0, 0xe700 -/* 385F20 E00828E0 AFBF0034 */ sw $ra, 0x34($sp) -/* 385F24 E00828E4 AFBE0030 */ sw $fp, 0x30($sp) -/* 385F28 E00828E8 AFB7002C */ sw $s7, 0x2c($sp) -/* 385F2C E00828EC AFB60028 */ sw $s6, 0x28($sp) -/* 385F30 E00828F0 AFB40020 */ sw $s4, 0x20($sp) -/* 385F34 E00828F4 AFB3001C */ sw $s3, 0x1c($sp) -/* 385F38 E00828F8 AFB10014 */ sw $s1, 0x14($sp) -/* 385F3C E00828FC 8E050000 */ lw $a1, ($s0) -/* 385F40 E0082900 8EB1000C */ lw $s1, 0xc($s5) -/* 385F44 E0082904 00A0182D */ daddu $v1, $a1, $zero -/* 385F48 E0082908 24A50008 */ addiu $a1, $a1, 8 -/* 385F4C E008290C 0220202D */ daddu $a0, $s1, $zero -/* 385F50 E0082910 AE050000 */ sw $a1, ($s0) -/* 385F54 E0082914 AC620000 */ sw $v0, ($v1) -/* 385F58 E0082918 AC600004 */ sw $zero, 4($v1) -/* 385F5C E008291C ACA60000 */ sw $a2, ($a1) -/* 385F60 E0082920 8EA30010 */ lw $v1, 0x10($s5) -/* 385F64 E0082924 24A20008 */ addiu $v0, $a1, 8 -/* 385F68 E0082928 AE020000 */ sw $v0, ($s0) -/* 385F6C E008292C 8C62001C */ lw $v0, 0x1c($v1) -/* 385F70 E0082930 3C038000 */ lui $v1, 0x8000 -/* 385F74 E0082934 00431021 */ addu $v0, $v0, $v1 -/* 385F78 E0082938 0C020960 */ jal func_E0082580 -/* 385F7C E008293C ACA20004 */ sw $v0, 4($a1) -/* 385F80 E0082940 8E360038 */ lw $s6, 0x38($s1) -/* 385F84 E0082944 8E330000 */ lw $s3, ($s1) -/* 385F88 E0082948 8EA20008 */ lw $v0, 8($s5) -/* 385F8C E008294C 0242102A */ slt $v0, $s2, $v0 -/* 385F90 E0082950 10400030 */ beqz $v0, .LE0082A14 -/* 385F94 E0082954 26310048 */ addiu $s1, $s1, 0x48 -/* 385F98 E0082958 0240F02D */ daddu $fp, $s2, $zero -/* 385F9C E008295C 3C14DE00 */ lui $s4, 0xde00 -/* 385FA0 E0082960 3C170900 */ lui $s7, 0x900 -/* 385FA4 E0082964 26F72198 */ addiu $s7, $s7, 0x2198 -.LE0082968: -/* 385FA8 E0082968 1EC00003 */ bgtz $s6, .LE0082978 -/* 385FAC E008296C 2407000A */ addiu $a3, $zero, 0xa -/* 385FB0 E0082970 56670024 */ bnel $s3, $a3, .LE0082A04 -/* 385FB4 E0082974 26520001 */ addiu $s2, $s2, 1 -.LE0082978: -/* 385FB8 E0082978 167E0008 */ bne $s3, $fp, .LE008299C -/* 385FBC E008297C 00000000 */ nop -/* 385FC0 E0082980 8E020000 */ lw $v0, ($s0) -/* 385FC4 E0082984 0040182D */ daddu $v1, $v0, $zero -/* 385FC8 E0082988 24420008 */ addiu $v0, $v0, 8 -/* 385FCC E008298C AE020000 */ sw $v0, ($s0) -/* 385FD0 E0082990 AC740000 */ sw $s4, ($v1) -/* 385FD4 E0082994 08020A6F */ j .LE00829BC -/* 385FD8 E0082998 AC770004 */ sw $s7, 4($v1) -.LE008299C: -/* 385FDC E008299C 8E020000 */ lw $v0, ($s0) -/* 385FE0 E00829A0 0040182D */ daddu $v1, $v0, $zero -/* 385FE4 E00829A4 24420008 */ addiu $v0, $v0, 8 -/* 385FE8 E00829A8 AE020000 */ sw $v0, ($s0) -/* 385FEC E00829AC 3C020900 */ lui $v0, 0x900 -/* 385FF0 E00829B0 24422100 */ addiu $v0, $v0, 0x2100 -/* 385FF4 E00829B4 AC740000 */ sw $s4, ($v1) -/* 385FF8 E00829B8 AC620004 */ sw $v0, 4($v1) -.LE00829BC: -/* 385FFC E00829BC 0C0209B1 */ jal func_E00826C4 -/* 386000 E00829C0 0220202D */ daddu $a0, $s1, $zero -/* 386004 E00829C4 3C05D838 */ lui $a1, 0xd838 -/* 386008 E00829C8 34A50002 */ ori $a1, $a1, 2 -/* 38600C E00829CC 8E030000 */ lw $v1, ($s0) -/* 386010 E00829D0 3C020900 */ lui $v0, 0x900 -/* 386014 E00829D4 24422230 */ addiu $v0, $v0, 0x2230 -/* 386018 E00829D8 0060202D */ daddu $a0, $v1, $zero -/* 38601C E00829DC 24630008 */ addiu $v1, $v1, 8 -/* 386020 E00829E0 AE030000 */ sw $v1, ($s0) -/* 386024 E00829E4 AC820004 */ sw $v0, 4($a0) -/* 386028 E00829E8 24620008 */ addiu $v0, $v1, 8 -/* 38602C E00829EC AC940000 */ sw $s4, ($a0) -/* 386030 E00829F0 AE020000 */ sw $v0, ($s0) -/* 386034 E00829F4 24020040 */ addiu $v0, $zero, 0x40 -/* 386038 E00829F8 AC650000 */ sw $a1, ($v1) -/* 38603C E00829FC AC620004 */ sw $v0, 4($v1) -/* 386040 E0082A00 26520001 */ addiu $s2, $s2, 1 -.LE0082A04: -/* 386044 E0082A04 8EA20008 */ lw $v0, 8($s5) -/* 386048 E0082A08 0242102A */ slt $v0, $s2, $v0 -/* 38604C E0082A0C 1440FFD6 */ bnez $v0, .LE0082968 -/* 386050 E0082A10 26310048 */ addiu $s1, $s1, 0x48 -.LE0082A14: -/* 386054 E0082A14 3C03D838 */ lui $v1, 0xd838 -/* 386058 E0082A18 3C04800A */ lui $a0, %hi(gMasterGfxPos) -/* 38605C E0082A1C 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos) -/* 386060 E0082A20 8C820000 */ lw $v0, ($a0) -/* 386064 E0082A24 34630002 */ ori $v1, $v1, 2 -/* 386068 E0082A28 0040282D */ daddu $a1, $v0, $zero -/* 38606C E0082A2C 24420008 */ addiu $v0, $v0, 8 -/* 386070 E0082A30 AC820000 */ sw $v0, ($a0) -/* 386074 E0082A34 ACA30000 */ sw $v1, ($a1) -/* 386078 E0082A38 24030040 */ addiu $v1, $zero, 0x40 -/* 38607C E0082A3C ACA30004 */ sw $v1, 4($a1) -/* 386080 E0082A40 24430008 */ addiu $v1, $v0, 8 -/* 386084 E0082A44 AC830000 */ sw $v1, ($a0) -/* 386088 E0082A48 3C03E700 */ lui $v1, 0xe700 -/* 38608C E0082A4C AC430000 */ sw $v1, ($v0) -/* 386090 E0082A50 AC400004 */ sw $zero, 4($v0) -/* 386094 E0082A54 8FBF0034 */ lw $ra, 0x34($sp) -/* 386098 E0082A58 8FBE0030 */ lw $fp, 0x30($sp) -/* 38609C E0082A5C 8FB7002C */ lw $s7, 0x2c($sp) -/* 3860A0 E0082A60 8FB60028 */ lw $s6, 0x28($sp) -/* 3860A4 E0082A64 8FB50024 */ lw $s5, 0x24($sp) -/* 3860A8 E0082A68 8FB40020 */ lw $s4, 0x20($sp) -/* 3860AC E0082A6C 8FB3001C */ lw $s3, 0x1c($sp) -/* 3860B0 E0082A70 8FB20018 */ lw $s2, 0x18($sp) -/* 3860B4 E0082A74 8FB10014 */ lw $s1, 0x14($sp) -/* 3860B8 E0082A78 8FB00010 */ lw $s0, 0x10($sp) -/* 3860BC E0082A7C 03E00008 */ jr $ra -/* 3860C0 E0082A80 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082A84.s b/ver/us/asm/nonmatchings/effects/disable_x/func_E0082A84.s deleted file mode 100644 index a6d7629c40..0000000000 --- a/ver/us/asm/nonmatchings/effects/disable_x/func_E0082A84.s +++ /dev/null @@ -1,168 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_E0082A84 -/* 3860C4 E0082A84 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 3860C8 E0082A88 AFB60028 */ sw $s6, 0x28($sp) -/* 3860CC E0082A8C 0080B02D */ daddu $s6, $a0, $zero -/* 3860D0 E0082A90 3C06DB06 */ lui $a2, 0xdb06 -/* 3860D4 E0082A94 34C60024 */ ori $a2, $a2, 0x24 -/* 3860D8 E0082A98 AFB40020 */ sw $s4, 0x20($sp) -/* 3860DC E0082A9C 24140001 */ addiu $s4, $zero, 1 -/* 3860E0 E0082AA0 AFB00010 */ sw $s0, 0x10($sp) -/* 3860E4 E0082AA4 3C10800A */ lui $s0, %hi(gMasterGfxPos) -/* 3860E8 E0082AA8 2610A66C */ addiu $s0, $s0, %lo(gMasterGfxPos) -/* 3860EC E0082AAC 3C02E700 */ lui $v0, 0xe700 -/* 3860F0 E0082AB0 AFBF0034 */ sw $ra, 0x34($sp) -/* 3860F4 E0082AB4 AFBE0030 */ sw $fp, 0x30($sp) -/* 3860F8 E0082AB8 AFB7002C */ sw $s7, 0x2c($sp) -/* 3860FC E0082ABC AFB50024 */ sw $s5, 0x24($sp) -/* 386100 E0082AC0 AFB3001C */ sw $s3, 0x1c($sp) -/* 386104 E0082AC4 AFB20018 */ sw $s2, 0x18($sp) -/* 386108 E0082AC8 AFB10014 */ sw $s1, 0x14($sp) -/* 38610C E0082ACC 8E050000 */ lw $a1, ($s0) -/* 386110 E0082AD0 8ED3000C */ lw $s3, 0xc($s6) -/* 386114 E0082AD4 00A0182D */ daddu $v1, $a1, $zero -/* 386118 E0082AD8 24A50008 */ addiu $a1, $a1, 8 -/* 38611C E0082ADC 0260202D */ daddu $a0, $s3, $zero -/* 386120 E0082AE0 AE050000 */ sw $a1, ($s0) -/* 386124 E0082AE4 AC620000 */ sw $v0, ($v1) -/* 386128 E0082AE8 AC600004 */ sw $zero, 4($v1) -/* 38612C E0082AEC ACA60000 */ sw $a2, ($a1) -/* 386130 E0082AF0 8EC30010 */ lw $v1, 0x10($s6) -/* 386134 E0082AF4 24A20008 */ addiu $v0, $a1, 8 -/* 386138 E0082AF8 AE020000 */ sw $v0, ($s0) -/* 38613C E0082AFC 8C62001C */ lw $v0, 0x1c($v1) -/* 386140 E0082B00 3C038000 */ lui $v1, 0x8000 -/* 386144 E0082B04 00431021 */ addu $v0, $v0, $v1 -/* 386148 E0082B08 0C020960 */ jal func_E0082580 -/* 38614C E0082B0C ACA20004 */ sw $v0, 4($a1) -/* 386150 E0082B10 8E720038 */ lw $s2, 0x38($s3) -/* 386154 E0082B14 8EC20008 */ lw $v0, 8($s6) -/* 386158 E0082B18 0282102A */ slt $v0, $s4, $v0 -/* 38615C E0082B1C 10400059 */ beqz $v0, .LE0082C84 -/* 386160 E0082B20 26730048 */ addiu $s3, $s3, 0x48 -/* 386164 E0082B24 3C026666 */ lui $v0, 0x6666 -/* 386168 E0082B28 34426667 */ ori $v0, $v0, 0x6667 -/* 38616C E0082B2C 02420018 */ mult $s2, $v0 -/* 386170 E0082B30 3C11DE00 */ lui $s1, 0xde00 -/* 386174 E0082B34 3C15E008 */ lui $s5, %hi(D_E0082D00) -/* 386178 E0082B38 26B52D00 */ addiu $s5, $s5, %lo(D_E0082D00) -/* 38617C E0082B3C 00121080 */ sll $v0, $s2, 2 -/* 386180 E0082B40 0055F021 */ addu $fp, $v0, $s5 -/* 386184 E0082B44 00003810 */ mfhi $a3 -/* 386188 E0082B48 0007B883 */ sra $s7, $a3, 2 -.LE0082B4C: -/* 38618C E0082B4C 0C0209B1 */ jal func_E00826C4 -/* 386190 E0082B50 0260202D */ daddu $a0, $s3, $zero -/* 386194 E0082B54 1A40003E */ blez $s2, .LE0082C50 -/* 386198 E0082B58 3C02D838 */ lui $v0, 0xd838 -/* 38619C E0082B5C 8E050000 */ lw $a1, ($s0) -/* 3861A0 E0082B60 3C030900 */ lui $v1, 0x900 -/* 3861A4 E0082B64 246322B0 */ addiu $v1, $v1, 0x22b0 -/* 3861A8 E0082B68 00A0102D */ daddu $v0, $a1, $zero -/* 3861AC E0082B6C 24A50008 */ addiu $a1, $a1, 8 -/* 3861B0 E0082B70 AE050000 */ sw $a1, ($s0) -/* 3861B4 E0082B74 AC510000 */ sw $s1, ($v0) -/* 3861B8 E0082B78 AC430004 */ sw $v1, 4($v0) -/* 3861BC E0082B7C 2A42000A */ slti $v0, $s2, 0xa -/* 3861C0 E0082B80 1040000C */ beqz $v0, .LE0082BB4 -/* 3861C4 E0082B84 24A20008 */ addiu $v0, $a1, 8 -/* 3861C8 E0082B88 AE020000 */ sw $v0, ($s0) -/* 3861CC E0082B8C ACB10000 */ sw $s1, ($a1) -/* 3861D0 E0082B90 8FC30000 */ lw $v1, ($fp) -/* 3861D4 E0082B94 24A20010 */ addiu $v0, $a1, 0x10 -/* 3861D8 E0082B98 AE020000 */ sw $v0, ($s0) -/* 3861DC E0082B9C 3C020900 */ lui $v0, 0x900 -/* 3861E0 E0082BA0 24422250 */ addiu $v0, $v0, 0x2250 -/* 3861E4 E0082BA4 ACB10008 */ sw $s1, 8($a1) -/* 3861E8 E0082BA8 ACA2000C */ sw $v0, 0xc($a1) -/* 3861EC E0082BAC 08020B13 */ j .LE0082C4C -/* 3861F0 E0082BB0 ACA30004 */ sw $v1, 4($a1) -.LE0082BB4: -/* 3861F4 E0082BB4 001217C3 */ sra $v0, $s2, 0x1f -/* 3861F8 E0082BB8 02E22023 */ subu $a0, $s7, $v0 -/* 3861FC E0082BBC 0080182D */ daddu $v1, $a0, $zero -/* 386200 E0082BC0 00031080 */ sll $v0, $v1, 2 -/* 386204 E0082BC4 00431021 */ addu $v0, $v0, $v1 -/* 386208 E0082BC8 00021040 */ sll $v0, $v0, 1 -/* 38620C E0082BCC 02422023 */ subu $a0, $s2, $v0 -/* 386210 E0082BD0 24A20008 */ addiu $v0, $a1, 8 -/* 386214 E0082BD4 AE020000 */ sw $v0, ($s0) -/* 386218 E0082BD8 00041080 */ sll $v0, $a0, 2 -/* 38621C E0082BDC 00551021 */ addu $v0, $v0, $s5 -/* 386220 E0082BE0 ACB10000 */ sw $s1, ($a1) -/* 386224 E0082BE4 8C440000 */ lw $a0, ($v0) -/* 386228 E0082BE8 24A20010 */ addiu $v0, $a1, 0x10 -/* 38622C E0082BEC AE020000 */ sw $v0, ($s0) -/* 386230 E0082BF0 24A20018 */ addiu $v0, $a1, 0x18 -/* 386234 E0082BF4 00031880 */ sll $v1, $v1, 2 -/* 386238 E0082BF8 00751821 */ addu $v1, $v1, $s5 -/* 38623C E0082BFC ACB10008 */ sw $s1, 8($a1) -/* 386240 E0082C00 AE020000 */ sw $v0, ($s0) -/* 386244 E0082C04 ACA40004 */ sw $a0, 4($a1) -/* 386248 E0082C08 8C640000 */ lw $a0, ($v1) -/* 38624C E0082C0C 24A20020 */ addiu $v0, $a1, 0x20 -/* 386250 E0082C10 AE020000 */ sw $v0, ($s0) -/* 386254 E0082C14 3C020900 */ lui $v0, 0x900 -/* 386258 E0082C18 24422290 */ addiu $v0, $v0, 0x2290 -/* 38625C E0082C1C ACB10010 */ sw $s1, 0x10($a1) -/* 386260 E0082C20 ACA20014 */ sw $v0, 0x14($a1) -/* 386264 E0082C24 ACB10018 */ sw $s1, 0x18($a1) -/* 386268 E0082C28 ACA4000C */ sw $a0, 0xc($a1) -/* 38626C E0082C2C 8C630000 */ lw $v1, ($v1) -/* 386270 E0082C30 24A20028 */ addiu $v0, $a1, 0x28 -/* 386274 E0082C34 AE020000 */ sw $v0, ($s0) -/* 386278 E0082C38 3C020900 */ lui $v0, 0x900 -/* 38627C E0082C3C 24422270 */ addiu $v0, $v0, 0x2270 -/* 386280 E0082C40 ACB10020 */ sw $s1, 0x20($a1) -/* 386284 E0082C44 ACA20024 */ sw $v0, 0x24($a1) -/* 386288 E0082C48 ACA3001C */ sw $v1, 0x1c($a1) -.LE0082C4C: -/* 38628C E0082C4C 3C02D838 */ lui $v0, 0xd838 -.LE0082C50: -/* 386290 E0082C50 34420002 */ ori $v0, $v0, 2 -/* 386294 E0082C54 26940001 */ addiu $s4, $s4, 1 -/* 386298 E0082C58 8E040000 */ lw $a0, ($s0) -/* 38629C E0082C5C 26730048 */ addiu $s3, $s3, 0x48 -/* 3862A0 E0082C60 0080182D */ daddu $v1, $a0, $zero -/* 3862A4 E0082C64 AC620000 */ sw $v0, ($v1) -/* 3862A8 E0082C68 24020040 */ addiu $v0, $zero, 0x40 -/* 3862AC E0082C6C AC620004 */ sw $v0, 4($v1) -/* 3862B0 E0082C70 8EC20008 */ lw $v0, 8($s6) -/* 3862B4 E0082C74 24840008 */ addiu $a0, $a0, 8 -/* 3862B8 E0082C78 0282102A */ slt $v0, $s4, $v0 -/* 3862BC E0082C7C 1440FFB3 */ bnez $v0, .LE0082B4C -/* 3862C0 E0082C80 AE040000 */ sw $a0, ($s0) -.LE0082C84: -/* 3862C4 E0082C84 3C03D838 */ lui $v1, 0xd838 -/* 3862C8 E0082C88 3C04800A */ lui $a0, %hi(gMasterGfxPos) -/* 3862CC E0082C8C 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos) -/* 3862D0 E0082C90 8C820000 */ lw $v0, ($a0) -/* 3862D4 E0082C94 34630002 */ ori $v1, $v1, 2 -/* 3862D8 E0082C98 0040282D */ daddu $a1, $v0, $zero -/* 3862DC E0082C9C 24420008 */ addiu $v0, $v0, 8 -/* 3862E0 E0082CA0 AC820000 */ sw $v0, ($a0) -/* 3862E4 E0082CA4 ACA30000 */ sw $v1, ($a1) -/* 3862E8 E0082CA8 24030040 */ addiu $v1, $zero, 0x40 -/* 3862EC E0082CAC ACA30004 */ sw $v1, 4($a1) -/* 3862F0 E0082CB0 24430008 */ addiu $v1, $v0, 8 -/* 3862F4 E0082CB4 AC830000 */ sw $v1, ($a0) -/* 3862F8 E0082CB8 3C03E700 */ lui $v1, 0xe700 -/* 3862FC E0082CBC AC430000 */ sw $v1, ($v0) -/* 386300 E0082CC0 AC400004 */ sw $zero, 4($v0) -/* 386304 E0082CC4 8FBF0034 */ lw $ra, 0x34($sp) -/* 386308 E0082CC8 8FBE0030 */ lw $fp, 0x30($sp) -/* 38630C E0082CCC 8FB7002C */ lw $s7, 0x2c($sp) -/* 386310 E0082CD0 8FB60028 */ lw $s6, 0x28($sp) -/* 386314 E0082CD4 8FB50024 */ lw $s5, 0x24($sp) -/* 386318 E0082CD8 8FB40020 */ lw $s4, 0x20($sp) -/* 38631C E0082CDC 8FB3001C */ lw $s3, 0x1c($sp) -/* 386320 E0082CE0 8FB20018 */ lw $s2, 0x18($sp) -/* 386324 E0082CE4 8FB10014 */ lw $s1, 0x14($sp) -/* 386328 E0082CE8 8FB00010 */ lw $s0, 0x10($sp) -/* 38632C E0082CEC 03E00008 */ jr $ra -/* 386330 E0082CF0 27BD0038 */ addiu $sp, $sp, 0x38 -/* 386334 E0082CF4 00000000 */ nop -/* 386338 E0082CF8 00000000 */ nop -/* 38633C E0082CFC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/evt/f8f60_len_1560/GetNextPathPos.s b/ver/us/asm/nonmatchings/evt/f8f60_len_1560/GetNextPathPos.s deleted file mode 100644 index 56aea63f25..0000000000 --- a/ver/us/asm/nonmatchings/evt/f8f60_len_1560/GetNextPathPos.s +++ /dev/null @@ -1,160 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetNextPathPos -/* F9ED4 802D5524 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* F9ED8 802D5528 AFB1002C */ sw $s1, 0x2c($sp) -/* F9EDC 802D552C 0080882D */ daddu $s1, $a0, $zero -/* F9EE0 802D5530 AFBF0030 */ sw $ra, 0x30($sp) -/* F9EE4 802D5534 AFB00028 */ sw $s0, 0x28($sp) -/* F9EE8 802D5538 8E3000C0 */ lw $s0, 0xc0($s1) -/* F9EEC 802D553C 8E030018 */ lw $v1, 0x18($s0) -/* F9EF0 802D5540 24020001 */ addiu $v0, $zero, 1 -/* F9EF4 802D5544 10620017 */ beq $v1, $v0, .L802D55A4 -/* F9EF8 802D5548 28620002 */ slti $v0, $v1, 2 -/* F9EFC 802D554C 10400005 */ beqz $v0, .L802D5564 -/* F9F00 802D5550 24020004 */ addiu $v0, $zero, 4 -/* F9F04 802D5554 10600009 */ beqz $v1, .L802D557C -/* F9F08 802D5558 00000000 */ nop -/* F9F0C 802D555C 080B55A3 */ j .L802D568C -/* F9F10 802D5560 00000000 */ nop -.L802D5564: -/* F9F14 802D5564 10620022 */ beq $v1, $v0, .L802D55F0 -/* F9F18 802D5568 2402000A */ addiu $v0, $zero, 0xa -/* F9F1C 802D556C 10620032 */ beq $v1, $v0, .L802D5638 -/* F9F20 802D5570 00000000 */ nop -/* F9F24 802D5574 080B55A3 */ j .L802D568C -/* F9F28 802D5578 00000000 */ nop -.L802D557C: -/* F9F2C 802D557C 3C013F80 */ lui $at, 0x3f80 -/* F9F30 802D5580 44810000 */ mtc1 $at, $f0 -/* F9F34 802D5584 C6020014 */ lwc1 $f2, 0x14($s0) -/* F9F38 802D5588 468010A0 */ cvt.s.w $f2, $f2 -/* F9F3C 802D558C 46020003 */ div.s $f0, $f0, $f2 -/* F9F40 802D5590 C6020010 */ lwc1 $f2, 0x10($s0) -/* F9F44 802D5594 468010A0 */ cvt.s.w $f2, $f2 -/* F9F48 802D5598 46020302 */ mul.s $f12, $f0, $f2 -/* F9F4C 802D559C 080B55A4 */ j .L802D5690 -/* F9F50 802D55A0 00000000 */ nop -.L802D55A4: -/* F9F54 802D55A4 8E020014 */ lw $v0, 0x14($s0) -/* F9F58 802D55A8 00420018 */ mult $v0, $v0 -/* F9F5C 802D55AC 00001812 */ mflo $v1 -/* F9F60 802D55B0 8E020010 */ lw $v0, 0x10($s0) -/* F9F64 802D55B4 00000000 */ nop -/* F9F68 802D55B8 00420018 */ mult $v0, $v0 -/* F9F6C 802D55BC 3C013F80 */ lui $at, 0x3f80 -/* F9F70 802D55C0 44810000 */ mtc1 $at, $f0 -/* F9F74 802D55C4 44831000 */ mtc1 $v1, $f2 -/* F9F78 802D55C8 00000000 */ nop -/* F9F7C 802D55CC 468010A0 */ cvt.s.w $f2, $f2 -/* F9F80 802D55D0 00001012 */ mflo $v0 -/* F9F84 802D55D4 46020003 */ div.s $f0, $f0, $f2 -/* F9F88 802D55D8 44821000 */ mtc1 $v0, $f2 -/* F9F8C 802D55DC 00000000 */ nop -/* F9F90 802D55E0 468010A0 */ cvt.s.w $f2, $f2 -/* F9F94 802D55E4 46020302 */ mul.s $f12, $f0, $f2 -/* F9F98 802D55E8 080B55A4 */ j .L802D5690 -/* F9F9C 802D55EC 00000000 */ nop -.L802D55F0: -/* F9FA0 802D55F0 8E020014 */ lw $v0, 0x14($s0) -/* F9FA4 802D55F4 00420018 */ mult $v0, $v0 -/* F9FA8 802D55F8 8E030010 */ lw $v1, 0x10($s0) -/* F9FAC 802D55FC 00431023 */ subu $v0, $v0, $v1 -/* F9FB0 802D5600 44820000 */ mtc1 $v0, $f0 -/* F9FB4 802D5604 00000000 */ nop -/* F9FB8 802D5608 46800020 */ cvt.s.w $f0, $f0 -/* F9FBC 802D560C 46000002 */ mul.s $f0, $f0, $f0 -/* F9FC0 802D5610 00000000 */ nop -/* F9FC4 802D5614 3C013F80 */ lui $at, 0x3f80 -/* F9FC8 802D5618 44812000 */ mtc1 $at, $f4 -/* F9FCC 802D561C 00004012 */ mflo $t0 -/* F9FD0 802D5620 44881000 */ mtc1 $t0, $f2 -/* F9FD4 802D5624 00000000 */ nop -/* F9FD8 802D5628 468010A0 */ cvt.s.w $f2, $f2 -/* F9FDC 802D562C 46020003 */ div.s $f0, $f0, $f2 -/* F9FE0 802D5630 080B55A4 */ j .L802D5690 -/* F9FE4 802D5634 46002301 */ sub.s $f12, $f4, $f0 -.L802D5638: -/* F9FE8 802D5638 3C014049 */ lui $at, 0x4049 -/* F9FEC 802D563C 34210FD8 */ ori $at, $at, 0xfd8 -/* F9FF0 802D5640 44816000 */ mtc1 $at, $f12 -/* F9FF4 802D5644 C6000014 */ lwc1 $f0, 0x14($s0) -/* F9FF8 802D5648 46800020 */ cvt.s.w $f0, $f0 -/* F9FFC 802D564C 46006303 */ div.s $f12, $f12, $f0 -/* FA000 802D5650 C6000010 */ lwc1 $f0, 0x10($s0) -/* FA004 802D5654 46800020 */ cvt.s.w $f0, $f0 -/* FA008 802D5658 46006302 */ mul.s $f12, $f12, $f0 -/* FA00C 802D565C 0C00A874 */ jal cos_rad -/* FA010 802D5660 00000000 */ nop -/* FA014 802D5664 3C013F80 */ lui $at, 0x3f80 -/* FA018 802D5668 44811000 */ mtc1 $at, $f2 -/* FA01C 802D566C 00000000 */ nop -/* FA020 802D5670 46001081 */ sub.s $f2, $f2, $f0 -/* FA024 802D5674 3C013F00 */ lui $at, 0x3f00 -/* FA028 802D5678 44810000 */ mtc1 $at, $f0 -/* FA02C 802D567C 00000000 */ nop -/* FA030 802D5680 46001302 */ mul.s $f12, $f2, $f0 -/* FA034 802D5684 080B55A4 */ j .L802D5690 -/* FA038 802D5688 00000000 */ nop -.L802D568C: -/* FA03C 802D568C 44806000 */ mtc1 $zero, $f12 -.L802D5690: -/* FA040 802D5690 8E020008 */ lw $v0, 8($s0) -/* FA044 802D5694 AFA20010 */ sw $v0, 0x10($sp) -/* FA048 802D5698 8E02000C */ lw $v0, 0xc($s0) -/* FA04C 802D569C AFA20014 */ sw $v0, 0x14($sp) -/* FA050 802D56A0 8E060000 */ lw $a2, ($s0) -/* FA054 802D56A4 8E070004 */ lw $a3, 4($s0) -/* FA058 802D56A8 0C0B549C */ jal get_path_position -/* FA05C 802D56AC 27A50018 */ addiu $a1, $sp, 0x18 -/* FA060 802D56B0 C7A00018 */ lwc1 $f0, 0x18($sp) -/* FA064 802D56B4 3C014480 */ lui $at, 0x4480 -/* FA068 802D56B8 44812000 */ mtc1 $at, $f4 -/* FA06C 802D56BC 00000000 */ nop -/* FA070 802D56C0 46040002 */ mul.s $f0, $f0, $f4 -/* FA074 802D56C4 00000000 */ nop -/* FA078 802D56C8 3C01CD5B */ lui $at, 0xcd5b -/* FA07C 802D56CC 34215858 */ ori $at, $at, 0x5858 -/* FA080 802D56D0 44811000 */ mtc1 $at, $f2 -/* FA084 802D56D4 00000000 */ nop -/* FA088 802D56D8 46020000 */ add.s $f0, $f0, $f2 -/* FA08C 802D56DC 4600018D */ trunc.w.s $f6, $f0 -/* FA090 802D56E0 E6260088 */ swc1 $f6, 0x88($s1) -/* FA094 802D56E4 C7A0001C */ lwc1 $f0, 0x1c($sp) -/* FA098 802D56E8 46040002 */ mul.s $f0, $f0, $f4 -/* FA09C 802D56EC 00000000 */ nop -/* FA0A0 802D56F0 46020000 */ add.s $f0, $f0, $f2 -/* FA0A4 802D56F4 4600018D */ trunc.w.s $f6, $f0 -/* FA0A8 802D56F8 E626008C */ swc1 $f6, 0x8c($s1) -/* FA0AC 802D56FC C7A00020 */ lwc1 $f0, 0x20($sp) -/* FA0B0 802D5700 46040002 */ mul.s $f0, $f0, $f4 -/* FA0B4 802D5704 00000000 */ nop -/* FA0B8 802D5708 46020000 */ add.s $f0, $f0, $f2 -/* FA0BC 802D570C 4600018D */ trunc.w.s $f6, $f0 -/* FA0C0 802D5710 E6260090 */ swc1 $f6, 0x90($s1) -/* FA0C4 802D5714 8E030010 */ lw $v1, 0x10($s0) -/* FA0C8 802D5718 8E020014 */ lw $v0, 0x14($s0) -/* FA0CC 802D571C 0062102A */ slt $v0, $v1, $v0 -/* FA0D0 802D5720 10400005 */ beqz $v0, .L802D5738 -/* FA0D4 802D5724 24620001 */ addiu $v0, $v1, 1 -/* FA0D8 802D5728 AE020010 */ sw $v0, 0x10($s0) -/* FA0DC 802D572C 24020001 */ addiu $v0, $zero, 1 -/* FA0E0 802D5730 080B55D6 */ j .L802D5758 -/* FA0E4 802D5734 AE220084 */ sw $v0, 0x84($s1) -.L802D5738: -/* FA0E8 802D5738 8E040004 */ lw $a0, 4($s0) -/* FA0EC 802D573C 0C00AB4B */ jal heap_free -/* FA0F0 802D5740 00000000 */ nop -/* FA0F4 802D5744 0C00AB4B */ jal heap_free -/* FA0F8 802D5748 8E04000C */ lw $a0, 0xc($s0) -/* FA0FC 802D574C 0C00AB4B */ jal heap_free -/* FA100 802D5750 8E2400C0 */ lw $a0, 0xc0($s1) -/* FA104 802D5754 AE200084 */ sw $zero, 0x84($s1) -.L802D5758: -/* FA108 802D5758 8FBF0030 */ lw $ra, 0x30($sp) -/* FA10C 802D575C 8FB1002C */ lw $s1, 0x2c($sp) -/* FA110 802D5760 8FB00028 */ lw $s0, 0x28($sp) -/* FA114 802D5764 24020002 */ addiu $v0, $zero, 2 -/* FA118 802D5768 03E00008 */ jr $ra -/* FA11C 802D576C 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/ver/us/asm/nonmatchings/evt/f8f60_len_1560/get_path_position.s b/ver/us/asm/nonmatchings/evt/f8f60_len_1560/get_path_position.s deleted file mode 100644 index a5ccb8a290..0000000000 --- a/ver/us/asm/nonmatchings/evt/f8f60_len_1560/get_path_position.s +++ /dev/null @@ -1,120 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel get_path_position -/* F9C20 802D5270 24C6FFFF */ addiu $a2, $a2, -1 -/* F9C24 802D5274 18C00010 */ blez $a2, .L802D52B8 -/* F9C28 802D5278 0000202D */ daddu $a0, $zero, $zero -/* F9C2C 802D527C 00861021 */ addu $v0, $a0, $a2 -.L802D5280: -/* F9C30 802D5280 00021FC2 */ srl $v1, $v0, 0x1f -/* F9C34 802D5284 00431021 */ addu $v0, $v0, $v1 -/* F9C38 802D5288 00021843 */ sra $v1, $v0, 1 -/* F9C3C 802D528C 00031080 */ sll $v0, $v1, 2 -/* F9C40 802D5290 00471021 */ addu $v0, $v0, $a3 -/* F9C44 802D5294 C4400000 */ lwc1 $f0, ($v0) -/* F9C48 802D5298 460C003C */ c.lt.s $f0, $f12 -/* F9C4C 802D529C 00000000 */ nop -/* F9C50 802D52A0 45020002 */ bc1fl .L802D52AC -/* F9C54 802D52A4 0060302D */ daddu $a2, $v1, $zero -/* F9C58 802D52A8 24640001 */ addiu $a0, $v1, 1 -.L802D52AC: -/* F9C5C 802D52AC 0086102A */ slt $v0, $a0, $a2 -/* F9C60 802D52B0 1440FFF3 */ bnez $v0, .L802D5280 -/* F9C64 802D52B4 00861021 */ addu $v0, $a0, $a2 -.L802D52B8: -/* F9C68 802D52B8 5C800001 */ bgtzl $a0, .L802D52C0 -/* F9C6C 802D52BC 2484FFFF */ addiu $a0, $a0, -1 -.L802D52C0: -/* F9C70 802D52C0 00041080 */ sll $v0, $a0, 2 -/* F9C74 802D52C4 00471021 */ addu $v0, $v0, $a3 -/* F9C78 802D52C8 00041840 */ sll $v1, $a0, 1 -/* F9C7C 802D52CC 00641821 */ addu $v1, $v1, $a0 -/* F9C80 802D52D0 00031880 */ sll $v1, $v1, 2 -/* F9C84 802D52D4 8FA40014 */ lw $a0, 0x14($sp) -/* F9C88 802D52D8 C4480000 */ lwc1 $f8, ($v0) -/* F9C8C 802D52DC 00642021 */ addu $a0, $v1, $a0 -/* F9C90 802D52E0 C4840000 */ lwc1 $f4, ($a0) -/* F9C94 802D52E4 46086281 */ sub.s $f10, $f12, $f8 -/* F9C98 802D52E8 3C014040 */ lui $at, 0x4040 -/* F9C9C 802D52EC 44816000 */ mtc1 $at, $f12 -/* F9CA0 802D52F0 00000000 */ nop -/* F9CA4 802D52F4 460C2002 */ mul.s $f0, $f4, $f12 -/* F9CA8 802D52F8 00000000 */ nop -/* F9CAC 802D52FC C48E000C */ lwc1 $f14, 0xc($a0) -/* F9CB0 802D5300 46047081 */ sub.s $f2, $f14, $f4 -/* F9CB4 802D5304 460A1082 */ mul.s $f2, $f2, $f10 -/* F9CB8 802D5308 00000000 */ nop -/* F9CBC 802D530C C4460004 */ lwc1 $f6, 4($v0) -/* F9CC0 802D5310 46083181 */ sub.s $f6, $f6, $f8 -/* F9CC4 802D5314 46042100 */ add.s $f4, $f4, $f4 -/* F9CC8 802D5318 460E2100 */ add.s $f4, $f4, $f14 -/* F9CCC 802D531C 46062102 */ mul.s $f4, $f4, $f6 -/* F9CD0 802D5320 00000000 */ nop -/* F9CD4 802D5324 46061083 */ div.s $f2, $f2, $f6 -/* F9CD8 802D5328 46001080 */ add.s $f2, $f2, $f0 -/* F9CDC 802D532C 8FA20010 */ lw $v0, 0x10($sp) -/* F9CE0 802D5330 460A1082 */ mul.s $f2, $f2, $f10 -/* F9CE4 802D5334 00000000 */ nop -/* F9CE8 802D5338 00621821 */ addu $v1, $v1, $v0 -/* F9CEC 802D533C C4680000 */ lwc1 $f8, ($v1) -/* F9CF0 802D5340 C460000C */ lwc1 $f0, 0xc($v1) -/* F9CF4 802D5344 46080001 */ sub.s $f0, $f0, $f8 -/* F9CF8 802D5348 46060003 */ div.s $f0, $f0, $f6 -/* F9CFC 802D534C 46040001 */ sub.s $f0, $f0, $f4 -/* F9D00 802D5350 46001080 */ add.s $f2, $f2, $f0 -/* F9D04 802D5354 460A1082 */ mul.s $f2, $f2, $f10 -/* F9D08 802D5358 00000000 */ nop -/* F9D0C 802D535C 46081080 */ add.s $f2, $f2, $f8 -/* F9D10 802D5360 E4A20000 */ swc1 $f2, ($a1) -/* F9D14 802D5364 C4840004 */ lwc1 $f4, 4($a0) -/* F9D18 802D5368 460C2002 */ mul.s $f0, $f4, $f12 -/* F9D1C 802D536C 00000000 */ nop -/* F9D20 802D5370 C4880010 */ lwc1 $f8, 0x10($a0) -/* F9D24 802D5374 46044081 */ sub.s $f2, $f8, $f4 -/* F9D28 802D5378 460A1082 */ mul.s $f2, $f2, $f10 -/* F9D2C 802D537C 00000000 */ nop -/* F9D30 802D5380 46042100 */ add.s $f4, $f4, $f4 -/* F9D34 802D5384 46082100 */ add.s $f4, $f4, $f8 -/* F9D38 802D5388 46062102 */ mul.s $f4, $f4, $f6 -/* F9D3C 802D538C 00000000 */ nop -/* F9D40 802D5390 46061083 */ div.s $f2, $f2, $f6 -/* F9D44 802D5394 46001080 */ add.s $f2, $f2, $f0 -/* F9D48 802D5398 460A1082 */ mul.s $f2, $f2, $f10 -/* F9D4C 802D539C 00000000 */ nop -/* F9D50 802D53A0 C4680004 */ lwc1 $f8, 4($v1) -/* F9D54 802D53A4 C4600010 */ lwc1 $f0, 0x10($v1) -/* F9D58 802D53A8 46080001 */ sub.s $f0, $f0, $f8 -/* F9D5C 802D53AC 46060003 */ div.s $f0, $f0, $f6 -/* F9D60 802D53B0 46040001 */ sub.s $f0, $f0, $f4 -/* F9D64 802D53B4 46001080 */ add.s $f2, $f2, $f0 -/* F9D68 802D53B8 460A1082 */ mul.s $f2, $f2, $f10 -/* F9D6C 802D53BC 00000000 */ nop -/* F9D70 802D53C0 46081080 */ add.s $f2, $f2, $f8 -/* F9D74 802D53C4 E4A20004 */ swc1 $f2, 4($a1) -/* F9D78 802D53C8 C4840008 */ lwc1 $f4, 8($a0) -/* F9D7C 802D53CC 460C2302 */ mul.s $f12, $f4, $f12 -/* F9D80 802D53D0 00000000 */ nop -/* F9D84 802D53D4 C4800014 */ lwc1 $f0, 0x14($a0) -/* F9D88 802D53D8 46040081 */ sub.s $f2, $f0, $f4 -/* F9D8C 802D53DC 460A1082 */ mul.s $f2, $f2, $f10 -/* F9D90 802D53E0 00000000 */ nop -/* F9D94 802D53E4 46042100 */ add.s $f4, $f4, $f4 -/* F9D98 802D53E8 46002100 */ add.s $f4, $f4, $f0 -/* F9D9C 802D53EC 46062102 */ mul.s $f4, $f4, $f6 -/* F9DA0 802D53F0 00000000 */ nop -/* F9DA4 802D53F4 46061083 */ div.s $f2, $f2, $f6 -/* F9DA8 802D53F8 460C1080 */ add.s $f2, $f2, $f12 -/* F9DAC 802D53FC 460A1082 */ mul.s $f2, $f2, $f10 -/* F9DB0 802D5400 00000000 */ nop -/* F9DB4 802D5404 C4680008 */ lwc1 $f8, 8($v1) -/* F9DB8 802D5408 C4600014 */ lwc1 $f0, 0x14($v1) -/* F9DBC 802D540C 46080001 */ sub.s $f0, $f0, $f8 -/* F9DC0 802D5410 46060003 */ div.s $f0, $f0, $f6 -/* F9DC4 802D5414 46040001 */ sub.s $f0, $f0, $f4 -/* F9DC8 802D5418 46001080 */ add.s $f2, $f2, $f0 -/* F9DCC 802D541C 460A1082 */ mul.s $f2, $f2, $f10 -/* F9DD0 802D5420 00000000 */ nop -/* F9DD4 802D5424 46081080 */ add.s $f2, $f2, $f8 -/* F9DD8 802D5428 03E00008 */ jr $ra -/* F9DDC 802D542C E4A20008 */ swc1 $f2, 8($a1) diff --git a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodePosition.s b/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodePosition.s deleted file mode 100644 index bee4c56c7e..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodePosition.s +++ /dev/null @@ -1,76 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetAnimatedNodePosition -/* F1F70 802CD5C0 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* F1F74 802CD5C4 AFB20038 */ sw $s2, 0x38($sp) -/* F1F78 802CD5C8 0080902D */ daddu $s2, $a0, $zero -/* F1F7C 802CD5CC AFBF0048 */ sw $ra, 0x48($sp) -/* F1F80 802CD5D0 AFB50044 */ sw $s5, 0x44($sp) -/* F1F84 802CD5D4 AFB40040 */ sw $s4, 0x40($sp) -/* F1F88 802CD5D8 AFB3003C */ sw $s3, 0x3c($sp) -/* F1F8C 802CD5DC AFB10034 */ sw $s1, 0x34($sp) -/* F1F90 802CD5E0 AFB00030 */ sw $s0, 0x30($sp) -/* F1F94 802CD5E4 8E50000C */ lw $s0, 0xc($s2) -/* F1F98 802CD5E8 8E050000 */ lw $a1, ($s0) -/* F1F9C 802CD5EC 0C0B1EAF */ jal evt_get_variable -/* F1FA0 802CD5F0 26100004 */ addiu $s0, $s0, 4 -/* F1FA4 802CD5F4 8E050000 */ lw $a1, ($s0) -/* F1FA8 802CD5F8 26100004 */ addiu $s0, $s0, 4 -/* F1FAC 802CD5FC 0240202D */ daddu $a0, $s2, $zero -/* F1FB0 802CD600 0C0B1EAF */ jal evt_get_variable -/* F1FB4 802CD604 0040882D */ daddu $s1, $v0, $zero -/* F1FB8 802CD608 00118880 */ sll $s1, $s1, 2 -/* F1FBC 802CD60C 8E140000 */ lw $s4, ($s0) -/* F1FC0 802CD610 26100004 */ addiu $s0, $s0, 4 -/* F1FC4 802CD614 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F1FC8 802CD618 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F1FCC 802CD61C 8E150000 */ lw $s5, ($s0) -/* F1FD0 802CD620 02238821 */ addu $s1, $s1, $v1 -/* F1FD4 802CD624 8E330000 */ lw $s3, ($s1) -/* F1FD8 802CD628 8E100004 */ lw $s0, 4($s0) -/* F1FDC 802CD62C 8E640000 */ lw $a0, ($s3) -/* F1FE0 802CD630 0C047FF8 */ jal get_animator_by_index -/* F1FE4 802CD634 0040882D */ daddu $s1, $v0, $zero -/* F1FE8 802CD638 0040202D */ daddu $a0, $v0, $zero -/* F1FEC 802CD63C 0C047FE6 */ jal get_animator_node_with_id -/* F1FF0 802CD640 0220282D */ daddu $a1, $s1, $zero -/* F1FF4 802CD644 27A30020 */ addiu $v1, $sp, 0x20 -/* F1FF8 802CD648 AFA30010 */ sw $v1, 0x10($sp) -/* F1FFC 802CD64C 27A30024 */ addiu $v1, $sp, 0x24 -/* F2000 802CD650 AFA30014 */ sw $v1, 0x14($sp) -/* F2004 802CD654 27A30028 */ addiu $v1, $sp, 0x28 -/* F2008 802CD658 AFA30018 */ sw $v1, 0x18($sp) -/* F200C 802CD65C 8C450090 */ lw $a1, 0x90($v0) -/* F2010 802CD660 8C460094 */ lw $a2, 0x94($v0) -/* F2014 802CD664 8C470098 */ lw $a3, 0x98($v0) -/* F2018 802CD668 0C019E78 */ jal guMtxXFML -/* F201C 802CD66C 26640028 */ addiu $a0, $s3, 0x28 -/* F2020 802CD670 0240202D */ daddu $a0, $s2, $zero -/* F2024 802CD674 C7A00020 */ lwc1 $f0, 0x20($sp) -/* F2028 802CD678 4600008D */ trunc.w.s $f2, $f0 -/* F202C 802CD67C 44061000 */ mfc1 $a2, $f2 -/* F2030 802CD680 0C0B2026 */ jal evt_set_variable -/* F2034 802CD684 0280282D */ daddu $a1, $s4, $zero -/* F2038 802CD688 0240202D */ daddu $a0, $s2, $zero -/* F203C 802CD68C C7A00024 */ lwc1 $f0, 0x24($sp) -/* F2040 802CD690 4600008D */ trunc.w.s $f2, $f0 -/* F2044 802CD694 44061000 */ mfc1 $a2, $f2 -/* F2048 802CD698 0C0B2026 */ jal evt_set_variable -/* F204C 802CD69C 02A0282D */ daddu $a1, $s5, $zero -/* F2050 802CD6A0 0240202D */ daddu $a0, $s2, $zero -/* F2054 802CD6A4 C7A00028 */ lwc1 $f0, 0x28($sp) -/* F2058 802CD6A8 4600008D */ trunc.w.s $f2, $f0 -/* F205C 802CD6AC 44061000 */ mfc1 $a2, $f2 -/* F2060 802CD6B0 0C0B2026 */ jal evt_set_variable -/* F2064 802CD6B4 0200282D */ daddu $a1, $s0, $zero -/* F2068 802CD6B8 8FBF0048 */ lw $ra, 0x48($sp) -/* F206C 802CD6BC 8FB50044 */ lw $s5, 0x44($sp) -/* F2070 802CD6C0 8FB40040 */ lw $s4, 0x40($sp) -/* F2074 802CD6C4 8FB3003C */ lw $s3, 0x3c($sp) -/* F2078 802CD6C8 8FB20038 */ lw $s2, 0x38($sp) -/* F207C 802CD6CC 8FB10034 */ lw $s1, 0x34($sp) -/* F2080 802CD6D0 8FB00030 */ lw $s0, 0x30($sp) -/* F2084 802CD6D4 24020002 */ addiu $v0, $zero, 2 -/* F2088 802CD6D8 03E00008 */ jr $ra -/* F208C 802CD6DC 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodeRotation.s b/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodeRotation.s deleted file mode 100644 index d7c9b29355..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedNodeRotation.s +++ /dev/null @@ -1,66 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetAnimatedNodeRotation -/* F2090 802CD6E0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* F2094 802CD6E4 AFB20018 */ sw $s2, 0x18($sp) -/* F2098 802CD6E8 0080902D */ daddu $s2, $a0, $zero -/* F209C 802CD6EC AFBF0028 */ sw $ra, 0x28($sp) -/* F20A0 802CD6F0 AFB50024 */ sw $s5, 0x24($sp) -/* F20A4 802CD6F4 AFB40020 */ sw $s4, 0x20($sp) -/* F20A8 802CD6F8 AFB3001C */ sw $s3, 0x1c($sp) -/* F20AC 802CD6FC AFB10014 */ sw $s1, 0x14($sp) -/* F20B0 802CD700 AFB00010 */ sw $s0, 0x10($sp) -/* F20B4 802CD704 8E50000C */ lw $s0, 0xc($s2) -/* F20B8 802CD708 8E050000 */ lw $a1, ($s0) -/* F20BC 802CD70C 0C0B1EAF */ jal evt_get_variable -/* F20C0 802CD710 26100004 */ addiu $s0, $s0, 4 -/* F20C4 802CD714 8E050000 */ lw $a1, ($s0) -/* F20C8 802CD718 26100004 */ addiu $s0, $s0, 4 -/* F20CC 802CD71C 0240202D */ daddu $a0, $s2, $zero -/* F20D0 802CD720 0C0B1EAF */ jal evt_get_variable -/* F20D4 802CD724 0040882D */ daddu $s1, $v0, $zero -/* F20D8 802CD728 00118880 */ sll $s1, $s1, 2 -/* F20DC 802CD72C 8E130000 */ lw $s3, ($s0) -/* F20E0 802CD730 26100004 */ addiu $s0, $s0, 4 -/* F20E4 802CD734 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F20E8 802CD738 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F20EC 802CD73C 8E140000 */ lw $s4, ($s0) -/* F20F0 802CD740 02238821 */ addu $s1, $s1, $v1 -/* F20F4 802CD744 8E230000 */ lw $v1, ($s1) -/* F20F8 802CD748 8E150004 */ lw $s5, 4($s0) -/* F20FC 802CD74C 8C640000 */ lw $a0, ($v1) -/* F2100 802CD750 0C047FF8 */ jal get_animator_by_index -/* F2104 802CD754 0040882D */ daddu $s1, $v0, $zero -/* F2108 802CD758 0040202D */ daddu $a0, $v0, $zero -/* F210C 802CD75C 0C047FE6 */ jal get_animator_node_with_id -/* F2110 802CD760 0220282D */ daddu $a1, $s1, $zero -/* F2114 802CD764 0240202D */ daddu $a0, $s2, $zero -/* F2118 802CD768 0040802D */ daddu $s0, $v0, $zero -/* F211C 802CD76C C600009C */ lwc1 $f0, 0x9c($s0) -/* F2120 802CD770 4600008D */ trunc.w.s $f2, $f0 -/* F2124 802CD774 44061000 */ mfc1 $a2, $f2 -/* F2128 802CD778 0C0B2026 */ jal evt_set_variable -/* F212C 802CD77C 0260282D */ daddu $a1, $s3, $zero -/* F2130 802CD780 0240202D */ daddu $a0, $s2, $zero -/* F2134 802CD784 C60000A0 */ lwc1 $f0, 0xa0($s0) -/* F2138 802CD788 4600008D */ trunc.w.s $f2, $f0 -/* F213C 802CD78C 44061000 */ mfc1 $a2, $f2 -/* F2140 802CD790 0C0B2026 */ jal evt_set_variable -/* F2144 802CD794 0280282D */ daddu $a1, $s4, $zero -/* F2148 802CD798 0240202D */ daddu $a0, $s2, $zero -/* F214C 802CD79C C60000A4 */ lwc1 $f0, 0xa4($s0) -/* F2150 802CD7A0 4600008D */ trunc.w.s $f2, $f0 -/* F2154 802CD7A4 44061000 */ mfc1 $a2, $f2 -/* F2158 802CD7A8 0C0B2026 */ jal evt_set_variable -/* F215C 802CD7AC 02A0282D */ daddu $a1, $s5, $zero -/* F2160 802CD7B0 8FBF0028 */ lw $ra, 0x28($sp) -/* F2164 802CD7B4 8FB50024 */ lw $s5, 0x24($sp) -/* F2168 802CD7B8 8FB40020 */ lw $s4, 0x20($sp) -/* F216C 802CD7BC 8FB3001C */ lw $s3, 0x1c($sp) -/* F2170 802CD7C0 8FB20018 */ lw $s2, 0x18($sp) -/* F2174 802CD7C4 8FB10014 */ lw $s1, 0x14($sp) -/* F2178 802CD7C8 8FB00010 */ lw $s0, 0x10($sp) -/* F217C 802CD7CC 24020002 */ addiu $v0, $zero, 2 -/* F2180 802CD7D0 03E00008 */ jr $ra -/* F2184 802CD7D4 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedPositionByTreeIndex.s b/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedPositionByTreeIndex.s deleted file mode 100644 index d41ff47841..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedPositionByTreeIndex.s +++ /dev/null @@ -1,76 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetAnimatedPositionByTreeIndex -/* F2188 802CD7D8 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* F218C 802CD7DC AFB20038 */ sw $s2, 0x38($sp) -/* F2190 802CD7E0 0080902D */ daddu $s2, $a0, $zero -/* F2194 802CD7E4 AFBF0048 */ sw $ra, 0x48($sp) -/* F2198 802CD7E8 AFB50044 */ sw $s5, 0x44($sp) -/* F219C 802CD7EC AFB40040 */ sw $s4, 0x40($sp) -/* F21A0 802CD7F0 AFB3003C */ sw $s3, 0x3c($sp) -/* F21A4 802CD7F4 AFB10034 */ sw $s1, 0x34($sp) -/* F21A8 802CD7F8 AFB00030 */ sw $s0, 0x30($sp) -/* F21AC 802CD7FC 8E50000C */ lw $s0, 0xc($s2) -/* F21B0 802CD800 8E050000 */ lw $a1, ($s0) -/* F21B4 802CD804 0C0B1EAF */ jal evt_get_variable -/* F21B8 802CD808 26100004 */ addiu $s0, $s0, 4 -/* F21BC 802CD80C 8E050000 */ lw $a1, ($s0) -/* F21C0 802CD810 26100004 */ addiu $s0, $s0, 4 -/* F21C4 802CD814 0240202D */ daddu $a0, $s2, $zero -/* F21C8 802CD818 0C0B1EAF */ jal evt_get_variable -/* F21CC 802CD81C 0040882D */ daddu $s1, $v0, $zero -/* F21D0 802CD820 00118880 */ sll $s1, $s1, 2 -/* F21D4 802CD824 8E140000 */ lw $s4, ($s0) -/* F21D8 802CD828 26100004 */ addiu $s0, $s0, 4 -/* F21DC 802CD82C 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F21E0 802CD830 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F21E4 802CD834 8E150000 */ lw $s5, ($s0) -/* F21E8 802CD838 02238821 */ addu $s1, $s1, $v1 -/* F21EC 802CD83C 8E330000 */ lw $s3, ($s1) -/* F21F0 802CD840 8E100004 */ lw $s0, 4($s0) -/* F21F4 802CD844 8E640000 */ lw $a0, ($s3) -/* F21F8 802CD848 0C047FF8 */ jal get_animator_by_index -/* F21FC 802CD84C 0040882D */ daddu $s1, $v0, $zero -/* F2200 802CD850 0040202D */ daddu $a0, $v0, $zero -/* F2204 802CD854 0C047FDD */ jal get_animator_node_for_tree_index -/* F2208 802CD858 0220282D */ daddu $a1, $s1, $zero -/* F220C 802CD85C 27A30020 */ addiu $v1, $sp, 0x20 -/* F2210 802CD860 AFA30010 */ sw $v1, 0x10($sp) -/* F2214 802CD864 27A30024 */ addiu $v1, $sp, 0x24 -/* F2218 802CD868 AFA30014 */ sw $v1, 0x14($sp) -/* F221C 802CD86C 27A30028 */ addiu $v1, $sp, 0x28 -/* F2220 802CD870 AFA30018 */ sw $v1, 0x18($sp) -/* F2224 802CD874 8C450090 */ lw $a1, 0x90($v0) -/* F2228 802CD878 8C460094 */ lw $a2, 0x94($v0) -/* F222C 802CD87C 8C470098 */ lw $a3, 0x98($v0) -/* F2230 802CD880 0C019E78 */ jal guMtxXFML -/* F2234 802CD884 26640028 */ addiu $a0, $s3, 0x28 -/* F2238 802CD888 0240202D */ daddu $a0, $s2, $zero -/* F223C 802CD88C C7A00020 */ lwc1 $f0, 0x20($sp) -/* F2240 802CD890 4600008D */ trunc.w.s $f2, $f0 -/* F2244 802CD894 44061000 */ mfc1 $a2, $f2 -/* F2248 802CD898 0C0B2026 */ jal evt_set_variable -/* F224C 802CD89C 0280282D */ daddu $a1, $s4, $zero -/* F2250 802CD8A0 0240202D */ daddu $a0, $s2, $zero -/* F2254 802CD8A4 C7A00024 */ lwc1 $f0, 0x24($sp) -/* F2258 802CD8A8 4600008D */ trunc.w.s $f2, $f0 -/* F225C 802CD8AC 44061000 */ mfc1 $a2, $f2 -/* F2260 802CD8B0 0C0B2026 */ jal evt_set_variable -/* F2264 802CD8B4 02A0282D */ daddu $a1, $s5, $zero -/* F2268 802CD8B8 0240202D */ daddu $a0, $s2, $zero -/* F226C 802CD8BC C7A00028 */ lwc1 $f0, 0x28($sp) -/* F2270 802CD8C0 4600008D */ trunc.w.s $f2, $f0 -/* F2274 802CD8C4 44061000 */ mfc1 $a2, $f2 -/* F2278 802CD8C8 0C0B2026 */ jal evt_set_variable -/* F227C 802CD8CC 0200282D */ daddu $a1, $s0, $zero -/* F2280 802CD8D0 8FBF0048 */ lw $ra, 0x48($sp) -/* F2284 802CD8D4 8FB50044 */ lw $s5, 0x44($sp) -/* F2288 802CD8D8 8FB40040 */ lw $s4, 0x40($sp) -/* F228C 802CD8DC 8FB3003C */ lw $s3, 0x3c($sp) -/* F2290 802CD8E0 8FB20038 */ lw $s2, 0x38($sp) -/* F2294 802CD8E4 8FB10034 */ lw $s1, 0x34($sp) -/* F2298 802CD8E8 8FB00030 */ lw $s0, 0x30($sp) -/* F229C 802CD8EC 24020002 */ addiu $v0, $zero, 2 -/* F22A0 802CD8F0 03E00008 */ jr $ra -/* F22A4 802CD8F4 27BD0050 */ addiu $sp, $sp, 0x50 diff --git a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedRotationByTreeIndex.s b/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedRotationByTreeIndex.s deleted file mode 100644 index d97f1fa0ce..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/GetAnimatedRotationByTreeIndex.s +++ /dev/null @@ -1,66 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel GetAnimatedRotationByTreeIndex -/* F22A8 802CD8F8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* F22AC 802CD8FC AFB20018 */ sw $s2, 0x18($sp) -/* F22B0 802CD900 0080902D */ daddu $s2, $a0, $zero -/* F22B4 802CD904 AFBF0028 */ sw $ra, 0x28($sp) -/* F22B8 802CD908 AFB50024 */ sw $s5, 0x24($sp) -/* F22BC 802CD90C AFB40020 */ sw $s4, 0x20($sp) -/* F22C0 802CD910 AFB3001C */ sw $s3, 0x1c($sp) -/* F22C4 802CD914 AFB10014 */ sw $s1, 0x14($sp) -/* F22C8 802CD918 AFB00010 */ sw $s0, 0x10($sp) -/* F22CC 802CD91C 8E50000C */ lw $s0, 0xc($s2) -/* F22D0 802CD920 8E050000 */ lw $a1, ($s0) -/* F22D4 802CD924 0C0B1EAF */ jal evt_get_variable -/* F22D8 802CD928 26100004 */ addiu $s0, $s0, 4 -/* F22DC 802CD92C 8E050000 */ lw $a1, ($s0) -/* F22E0 802CD930 26100004 */ addiu $s0, $s0, 4 -/* F22E4 802CD934 0240202D */ daddu $a0, $s2, $zero -/* F22E8 802CD938 0C0B1EAF */ jal evt_get_variable -/* F22EC 802CD93C 0040882D */ daddu $s1, $v0, $zero -/* F22F0 802CD940 00118880 */ sll $s1, $s1, 2 -/* F22F4 802CD944 8E130000 */ lw $s3, ($s0) -/* F22F8 802CD948 26100004 */ addiu $s0, $s0, 4 -/* F22FC 802CD94C 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F2300 802CD950 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F2304 802CD954 8E140000 */ lw $s4, ($s0) -/* F2308 802CD958 02238821 */ addu $s1, $s1, $v1 -/* F230C 802CD95C 8E230000 */ lw $v1, ($s1) -/* F2310 802CD960 8E150004 */ lw $s5, 4($s0) -/* F2314 802CD964 8C640000 */ lw $a0, ($v1) -/* F2318 802CD968 0C047FF8 */ jal get_animator_by_index -/* F231C 802CD96C 0040882D */ daddu $s1, $v0, $zero -/* F2320 802CD970 0040202D */ daddu $a0, $v0, $zero -/* F2324 802CD974 0C047FDD */ jal get_animator_node_for_tree_index -/* F2328 802CD978 0220282D */ daddu $a1, $s1, $zero -/* F232C 802CD97C 0240202D */ daddu $a0, $s2, $zero -/* F2330 802CD980 0040802D */ daddu $s0, $v0, $zero -/* F2334 802CD984 C600009C */ lwc1 $f0, 0x9c($s0) -/* F2338 802CD988 4600008D */ trunc.w.s $f2, $f0 -/* F233C 802CD98C 44061000 */ mfc1 $a2, $f2 -/* F2340 802CD990 0C0B2026 */ jal evt_set_variable -/* F2344 802CD994 0260282D */ daddu $a1, $s3, $zero -/* F2348 802CD998 0240202D */ daddu $a0, $s2, $zero -/* F234C 802CD99C C60000A0 */ lwc1 $f0, 0xa0($s0) -/* F2350 802CD9A0 4600008D */ trunc.w.s $f2, $f0 -/* F2354 802CD9A4 44061000 */ mfc1 $a2, $f2 -/* F2358 802CD9A8 0C0B2026 */ jal evt_set_variable -/* F235C 802CD9AC 0280282D */ daddu $a1, $s4, $zero -/* F2360 802CD9B0 0240202D */ daddu $a0, $s2, $zero -/* F2364 802CD9B4 C60000A4 */ lwc1 $f0, 0xa4($s0) -/* F2368 802CD9B8 4600008D */ trunc.w.s $f2, $f0 -/* F236C 802CD9BC 44061000 */ mfc1 $a2, $f2 -/* F2370 802CD9C0 0C0B2026 */ jal evt_set_variable -/* F2374 802CD9C4 02A0282D */ daddu $a1, $s5, $zero -/* F2378 802CD9C8 8FBF0028 */ lw $ra, 0x28($sp) -/* F237C 802CD9CC 8FB50024 */ lw $s5, 0x24($sp) -/* F2380 802CD9D0 8FB40020 */ lw $s4, 0x20($sp) -/* F2384 802CD9D4 8FB3001C */ lw $s3, 0x1c($sp) -/* F2388 802CD9D8 8FB20018 */ lw $s2, 0x18($sp) -/* F238C 802CD9DC 8FB10014 */ lw $s1, 0x14($sp) -/* F2390 802CD9E0 8FB00010 */ lw $s0, 0x10($sp) -/* F2394 802CD9E4 24020002 */ addiu $v0, $zero, 2 -/* F2398 802CD9E8 03E00008 */ jr $ra -/* F239C 802CD9EC 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/ver/us/asm/nonmatchings/evt/model_api/SetAnimatedNodeFlags.s b/ver/us/asm/nonmatchings/evt/model_api/SetAnimatedNodeFlags.s deleted file mode 100644 index 28f3bd43d7..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/SetAnimatedNodeFlags.s +++ /dev/null @@ -1,58 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel SetAnimatedNodeFlags -/* F23A0 802CD9F0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* F23A4 802CD9F4 AFB20018 */ sw $s2, 0x18($sp) -/* F23A8 802CD9F8 0080902D */ daddu $s2, $a0, $zero -/* F23AC 802CD9FC AFBF0020 */ sw $ra, 0x20($sp) -/* F23B0 802CDA00 AFB3001C */ sw $s3, 0x1c($sp) -/* F23B4 802CDA04 AFB10014 */ sw $s1, 0x14($sp) -/* F23B8 802CDA08 AFB00010 */ sw $s0, 0x10($sp) -/* F23BC 802CDA0C 8E50000C */ lw $s0, 0xc($s2) -/* F23C0 802CDA10 8E050000 */ lw $a1, ($s0) -/* F23C4 802CDA14 0C0B1EAF */ jal evt_get_variable -/* F23C8 802CDA18 26100004 */ addiu $s0, $s0, 4 -/* F23CC 802CDA1C 8E050000 */ lw $a1, ($s0) -/* F23D0 802CDA20 26100004 */ addiu $s0, $s0, 4 -/* F23D4 802CDA24 0240202D */ daddu $a0, $s2, $zero -/* F23D8 802CDA28 0C0B1EAF */ jal evt_get_variable -/* F23DC 802CDA2C 0040882D */ daddu $s1, $v0, $zero -/* F23E0 802CDA30 0240202D */ daddu $a0, $s2, $zero -/* F23E4 802CDA34 8E050004 */ lw $a1, 4($s0) -/* F23E8 802CDA38 8E130000 */ lw $s3, ($s0) -/* F23EC 802CDA3C 0C0B1EAF */ jal evt_get_variable -/* F23F0 802CDA40 0040902D */ daddu $s2, $v0, $zero -/* F23F4 802CDA44 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F23F8 802CDA48 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F23FC 802CDA4C 00118880 */ sll $s1, $s1, 2 -/* F2400 802CDA50 02238821 */ addu $s1, $s1, $v1 -/* F2404 802CDA54 8E230000 */ lw $v1, ($s1) -/* F2408 802CDA58 8C640000 */ lw $a0, ($v1) -/* F240C 802CDA5C 0C047FF8 */ jal get_animator_by_index -/* F2410 802CDA60 0040802D */ daddu $s0, $v0, $zero -/* F2414 802CDA64 0040202D */ daddu $a0, $v0, $zero -/* F2418 802CDA68 0C047FE6 */ jal get_animator_node_with_id -/* F241C 802CDA6C 0240282D */ daddu $a1, $s2, $zero -/* F2420 802CDA70 12000004 */ beqz $s0, .L802CDA84 -/* F2424 802CDA74 0040202D */ daddu $a0, $v0, $zero -/* F2428 802CDA78 948200F4 */ lhu $v0, 0xf4($a0) -/* F242C 802CDA7C 080B36A4 */ j .L802CDA90 -/* F2430 802CDA80 00531025 */ or $v0, $v0, $s3 -.L802CDA84: -/* F2434 802CDA84 948200F4 */ lhu $v0, 0xf4($a0) -/* F2438 802CDA88 00131827 */ nor $v1, $zero, $s3 -/* F243C 802CDA8C 00431024 */ and $v0, $v0, $v1 -.L802CDA90: -/* F2440 802CDA90 A48200F4 */ sh $v0, 0xf4($a0) -/* F2444 802CDA94 8FBF0020 */ lw $ra, 0x20($sp) -/* F2448 802CDA98 8FB3001C */ lw $s3, 0x1c($sp) -/* F244C 802CDA9C 8FB20018 */ lw $s2, 0x18($sp) -/* F2450 802CDAA0 8FB10014 */ lw $s1, 0x14($sp) -/* F2454 802CDAA4 8FB00010 */ lw $s0, 0x10($sp) -/* F2458 802CDAA8 24020002 */ addiu $v0, $zero, 2 -/* F245C 802CDAAC 03E00008 */ jr $ra -/* F2460 802CDAB0 27BD0028 */ addiu $sp, $sp, 0x28 -/* F2464 802CDAB4 00000000 */ nop -/* F2468 802CDAB8 00000000 */ nop -/* F246C 802CDABC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/evt/model_api/render_animated_models.s b/ver/us/asm/nonmatchings/evt/model_api/render_animated_models.s deleted file mode 100644 index 9d185a9d83..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/render_animated_models.s +++ /dev/null @@ -1,108 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel render_animated_models -/* F14C8 802CCB18 27BDFDA8 */ addiu $sp, $sp, -0x258 -/* F14CC 802CCB1C F7B60250 */ sdc1 $f22, 0x250($sp) -/* F14D0 802CCB20 3C013F80 */ lui $at, 0x3f80 -/* F14D4 802CCB24 4481B000 */ mtc1 $at, $f22 -/* F14D8 802CCB28 AFB3022C */ sw $s3, 0x22c($sp) -/* F14DC 802CCB2C 0000982D */ daddu $s3, $zero, $zero -/* F14E0 802CCB30 F7B40248 */ sdc1 $f20, 0x248($sp) -/* F14E4 802CCB34 4480A000 */ mtc1 $zero, $f20 -/* F14E8 802CCB38 27A80058 */ addiu $t0, $sp, 0x58 -/* F14EC 802CCB3C AFBE0240 */ sw $fp, 0x240($sp) -/* F14F0 802CCB40 27BE0098 */ addiu $fp, $sp, 0x98 -/* F14F4 802CCB44 AFB7023C */ sw $s7, 0x23c($sp) -/* F14F8 802CCB48 27B700D8 */ addiu $s7, $sp, 0xd8 -/* F14FC 802CCB4C AFB60238 */ sw $s6, 0x238($sp) -/* F1500 802CCB50 27B601D8 */ addiu $s6, $sp, 0x1d8 -/* F1504 802CCB54 AFB20228 */ sw $s2, 0x228($sp) -/* F1508 802CCB58 27B20158 */ addiu $s2, $sp, 0x158 -/* F150C 802CCB5C AFB50234 */ sw $s5, 0x234($sp) -/* F1510 802CCB60 27B50118 */ addiu $s5, $sp, 0x118 -/* F1514 802CCB64 AFB40230 */ sw $s4, 0x230($sp) -/* F1518 802CCB68 27B40198 */ addiu $s4, $sp, 0x198 -/* F151C 802CCB6C AFBF0244 */ sw $ra, 0x244($sp) -/* F1520 802CCB70 AFB10224 */ sw $s1, 0x224($sp) -/* F1524 802CCB74 AFB00220 */ sw $s0, 0x220($sp) -/* F1528 802CCB78 AFA80218 */ sw $t0, 0x218($sp) -.L802CCB7C: -/* F152C 802CCB7C 3C02802E */ lui $v0, %hi(gCurrentMeshAnimationListPtr) -/* F1530 802CCB80 8C42AE30 */ lw $v0, %lo(gCurrentMeshAnimationListPtr)($v0) -/* F1534 802CCB84 00131880 */ sll $v1, $s3, 2 -/* F1538 802CCB88 00621821 */ addu $v1, $v1, $v0 -/* F153C 802CCB8C 8C710000 */ lw $s1, ($v1) -/* F1540 802CCB90 8E220000 */ lw $v0, ($s1) -/* F1544 802CCB94 04420035 */ bltzl $v0, .L802CCC6C -/* F1548 802CCB98 26730001 */ addiu $s3, $s3, 1 -/* F154C 802CCB9C 8E250004 */ lw $a1, 4($s1) -/* F1550 802CCBA0 8E260008 */ lw $a2, 8($s1) -/* F1554 802CCBA4 8E27000C */ lw $a3, 0xc($s1) -/* F1558 802CCBA8 0C019E40 */ jal guTranslateF -/* F155C 802CCBAC 27A40018 */ addiu $a0, $sp, 0x18 -/* F1560 802CCBB0 E7B40010 */ swc1 $f20, 0x10($sp) -/* F1564 802CCBB4 8E250010 */ lw $a1, 0x10($s1) -/* F1568 802CCBB8 4406B000 */ mfc1 $a2, $f22 -/* F156C 802CCBBC 4407A000 */ mfc1 $a3, $f20 -/* F1570 802CCBC0 8FA40218 */ lw $a0, 0x218($sp) -/* F1574 802CCBC4 0C019EC8 */ jal guRotateF -/* F1578 802CCBC8 26300028 */ addiu $s0, $s1, 0x28 -/* F157C 802CCBCC E7B40010 */ swc1 $f20, 0x10($sp) -/* F1580 802CCBD0 8E250014 */ lw $a1, 0x14($s1) -/* F1584 802CCBD4 4406A000 */ mfc1 $a2, $f20 -/* F1588 802CCBD8 4407B000 */ mfc1 $a3, $f22 -/* F158C 802CCBDC 0C019EC8 */ jal guRotateF -/* F1590 802CCBE0 03C0202D */ daddu $a0, $fp, $zero -/* F1594 802CCBE4 E7B60010 */ swc1 $f22, 0x10($sp) -/* F1598 802CCBE8 8E250018 */ lw $a1, 0x18($s1) -/* F159C 802CCBEC 4406A000 */ mfc1 $a2, $f20 -/* F15A0 802CCBF0 4407A000 */ mfc1 $a3, $f20 -/* F15A4 802CCBF4 0C019EC8 */ jal guRotateF -/* F15A8 802CCBF8 02E0202D */ daddu $a0, $s7, $zero -/* F15AC 802CCBFC 8E25001C */ lw $a1, 0x1c($s1) -/* F15B0 802CCC00 8E260020 */ lw $a2, 0x20($s1) -/* F15B4 802CCC04 8E270024 */ lw $a3, 0x24($s1) -/* F15B8 802CCC08 0C019DF0 */ jal guScaleF -/* F15BC 802CCC0C 02C0202D */ daddu $a0, $s6, $zero -/* F15C0 802CCC10 02E0202D */ daddu $a0, $s7, $zero -/* F15C4 802CCC14 8FA50218 */ lw $a1, 0x218($sp) -/* F15C8 802CCC18 0C019D80 */ jal guMtxCatF -/* F15CC 802CCC1C 0240302D */ daddu $a2, $s2, $zero -/* F15D0 802CCC20 0240202D */ daddu $a0, $s2, $zero -/* F15D4 802CCC24 03C0282D */ daddu $a1, $fp, $zero -/* F15D8 802CCC28 0C019D80 */ jal guMtxCatF -/* F15DC 802CCC2C 02A0302D */ daddu $a2, $s5, $zero -/* F15E0 802CCC30 02C0202D */ daddu $a0, $s6, $zero -/* F15E4 802CCC34 02A0282D */ daddu $a1, $s5, $zero -/* F15E8 802CCC38 0C019D80 */ jal guMtxCatF -/* F15EC 802CCC3C 0240302D */ daddu $a2, $s2, $zero -/* F15F0 802CCC40 0240202D */ daddu $a0, $s2, $zero -/* F15F4 802CCC44 27A50018 */ addiu $a1, $sp, 0x18 -/* F15F8 802CCC48 0C019D80 */ jal guMtxCatF -/* F15FC 802CCC4C 0280302D */ daddu $a2, $s4, $zero -/* F1600 802CCC50 0280202D */ daddu $a0, $s4, $zero -/* F1604 802CCC54 0C019D40 */ jal guMtxF2L -/* F1608 802CCC58 0200282D */ daddu $a1, $s0, $zero -/* F160C 802CCC5C 8E240000 */ lw $a0, ($s1) -/* F1610 802CCC60 0C047CC1 */ jal render_animated_model -/* F1614 802CCC64 0200282D */ daddu $a1, $s0, $zero -/* F1618 802CCC68 26730001 */ addiu $s3, $s3, 1 -.L802CCC6C: -/* F161C 802CCC6C 2A620010 */ slti $v0, $s3, 0x10 -/* F1620 802CCC70 1440FFC2 */ bnez $v0, .L802CCB7C -/* F1624 802CCC74 00000000 */ nop -/* F1628 802CCC78 8FBF0244 */ lw $ra, 0x244($sp) -/* F162C 802CCC7C 8FBE0240 */ lw $fp, 0x240($sp) -/* F1630 802CCC80 8FB7023C */ lw $s7, 0x23c($sp) -/* F1634 802CCC84 8FB60238 */ lw $s6, 0x238($sp) -/* F1638 802CCC88 8FB50234 */ lw $s5, 0x234($sp) -/* F163C 802CCC8C 8FB40230 */ lw $s4, 0x230($sp) -/* F1640 802CCC90 8FB3022C */ lw $s3, 0x22c($sp) -/* F1644 802CCC94 8FB20228 */ lw $s2, 0x228($sp) -/* F1648 802CCC98 8FB10224 */ lw $s1, 0x224($sp) -/* F164C 802CCC9C 8FB00220 */ lw $s0, 0x220($sp) -/* F1650 802CCCA0 D7B60250 */ ldc1 $f22, 0x250($sp) -/* F1654 802CCCA4 D7B40248 */ ldc1 $f20, 0x248($sp) -/* F1658 802CCCA8 03E00008 */ jr $ra -/* F165C 802CCCAC 27BD0258 */ addiu $sp, $sp, 0x258 diff --git a/ver/us/asm/nonmatchings/evt/model_api/reset_model_animators.s b/ver/us/asm/nonmatchings/evt/model_api/reset_model_animators.s deleted file mode 100644 index 11c8548c1b..0000000000 --- a/ver/us/asm/nonmatchings/evt/model_api/reset_model_animators.s +++ /dev/null @@ -1,59 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel reset_model_animators -/* F1E64 802CD4B4 3C028007 */ lui $v0, %hi(gGameStatusPtr) -/* F1E68 802CD4B8 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) -/* F1E6C 802CD4BC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* F1E70 802CD4C0 AFBF001C */ sw $ra, 0x1c($sp) -/* F1E74 802CD4C4 AFB20018 */ sw $s2, 0x18($sp) -/* F1E78 802CD4C8 AFB10014 */ sw $s1, 0x14($sp) -/* F1E7C 802CD4CC AFB00010 */ sw $s0, 0x10($sp) -/* F1E80 802CD4D0 80420070 */ lb $v0, 0x70($v0) -/* F1E84 802CD4D4 14400005 */ bnez $v0, .L802CD4EC -/* F1E88 802CD4D8 00000000 */ nop -/* F1E8C 802CD4DC 3C02802E */ lui $v0, %hi(gWorldMeshAnimationList) -/* F1E90 802CD4E0 2442ADF0 */ addiu $v0, $v0, %lo(gWorldMeshAnimationList) -/* F1E94 802CD4E4 080B353D */ j .L802CD4F4 -/* F1E98 802CD4E8 00000000 */ nop -.L802CD4EC: -/* F1E9C 802CD4EC 3C02802E */ lui $v0, %hi(gBattleMeshAnimationList) -/* F1EA0 802CD4F0 2442ADB0 */ addiu $v0, $v0, %lo(gBattleMeshAnimationList) -.L802CD4F4: -/* F1EA4 802CD4F4 3C01802E */ lui $at, %hi(gCurrentMeshAnimationListPtr) -/* F1EA8 802CD4F8 AC22AE30 */ sw $v0, %lo(gCurrentMeshAnimationListPtr)($at) -/* F1EAC 802CD4FC 0000882D */ daddu $s1, $zero, $zero -/* F1EB0 802CD500 2412FFFF */ addiu $s2, $zero, -1 -/* F1EB4 802CD504 0220802D */ daddu $s0, $s1, $zero -.L802CD508: -/* F1EB8 802CD508 0C00AB39 */ jal heap_malloc -/* F1EBC 802CD50C 24040070 */ addiu $a0, $zero, 0x70 -/* F1EC0 802CD510 3C03802E */ lui $v1, %hi(gCurrentMeshAnimationListPtr) -/* F1EC4 802CD514 8C63AE30 */ lw $v1, %lo(gCurrentMeshAnimationListPtr)($v1) -/* F1EC8 802CD518 02031821 */ addu $v1, $s0, $v1 -/* F1ECC 802CD51C 14400003 */ bnez $v0, .L802CD52C -/* F1ED0 802CD520 AC620000 */ sw $v0, ($v1) -.L802CD524: -/* F1ED4 802CD524 080B3549 */ j .L802CD524 -/* F1ED8 802CD528 00000000 */ nop -.L802CD52C: -/* F1EDC 802CD52C 3C02802E */ lui $v0, %hi(gCurrentMeshAnimationListPtr) -/* F1EE0 802CD530 8C42AE30 */ lw $v0, %lo(gCurrentMeshAnimationListPtr)($v0) -/* F1EE4 802CD534 26310001 */ addiu $s1, $s1, 1 -/* F1EE8 802CD538 02021021 */ addu $v0, $s0, $v0 -/* F1EEC 802CD53C 8C420000 */ lw $v0, ($v0) -/* F1EF0 802CD540 AC520000 */ sw $s2, ($v0) -/* F1EF4 802CD544 2A220010 */ slti $v0, $s1, 0x10 -/* F1EF8 802CD548 1440FFEF */ bnez $v0, .L802CD508 -/* F1EFC 802CD54C 26100004 */ addiu $s0, $s0, 4 -/* F1F00 802CD550 3C04802D */ lui $a0, %hi(update_animated_models) -/* F1F04 802CD554 2484CAC0 */ addiu $a0, $a0, %lo(update_animated_models) -/* F1F08 802CD558 3C05802D */ lui $a1, %hi(render_animated_models) -/* F1F0C 802CD55C 0C048C56 */ jal create_generic_entity_world -/* F1F10 802CD560 24A5CB18 */ addiu $a1, $a1, %lo(render_animated_models) -/* F1F14 802CD564 8FBF001C */ lw $ra, 0x1c($sp) -/* F1F18 802CD568 8FB20018 */ lw $s2, 0x18($sp) -/* F1F1C 802CD56C 8FB10014 */ lw $s1, 0x14($sp) -/* F1F20 802CD570 8FB00010 */ lw $s0, 0x10($sp) -/* F1F24 802CD574 03E00008 */ jr $ra -/* F1F28 802CD578 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/msg/msg_draw_speech_arrow.s b/ver/us/asm/nonmatchings/msg/msg_draw_speech_arrow.s index 68beca788f..0c46914d69 100644 --- a/ver/us/asm/nonmatchings/msg/msg_draw_speech_arrow.s +++ b/ver/us/asm/nonmatchings/msg/msg_draw_speech_arrow.s @@ -296,12 +296,12 @@ glabel msg_draw_speech_arrow .L8012D7D8: /* C3ED8 8012D7D8 3C028007 */ lui $v0, %hi(gCurrentDisplayContextIndex) /* C3EDC 8012D7DC 8C4241F4 */ lw $v0, %lo(gCurrentDisplayContextIndex)($v0) -/* C3EE0 8012D7E0 3C1E8015 */ lui $fp, %hi(D_8014C4C0) -/* C3EE4 8012D7E4 27DEC4C0 */ addiu $fp, $fp, %lo(D_8014C4C0) +/* C3EE0 8012D7E0 3C1E8015 */ lui $fp, %hi(gMsgUnkQuad) +/* C3EE4 8012D7E4 27DEC4C0 */ addiu $fp, $fp, %lo(gMsgUnkQuad) /* C3EE8 8012D7E8 10400003 */ beqz $v0, .L8012D7F8 /* C3EEC 8012D7EC 4600C306 */ mov.s $f12, $f24 -/* C3EF0 8012D7F0 3C1E8015 */ lui $fp, %hi(D_8014C480) -/* C3EF4 8012D7F4 27DEC480 */ addiu $fp, $fp, %lo(D_8014C480) +/* C3EF0 8012D7F0 3C1E8015 */ lui $fp, %hi(gMsgUnkArrowQuad) +/* C3EF4 8012D7F4 27DEC480 */ addiu $fp, $fp, %lo(gMsgUnkArrowQuad) .L8012D7F8: /* C3EF8 8012D7F8 8622050A */ lh $v0, 0x50a($s1) /* C3EFC 8012D7FC 8623050C */ lh $v1, 0x50c($s1) diff --git a/ver/us/asm/nonmatchings/msg/msg_draw_speech_bubble.s b/ver/us/asm/nonmatchings/msg/msg_draw_speech_bubble.s deleted file mode 100644 index aeb055dc43..0000000000 --- a/ver/us/asm/nonmatchings/msg/msg_draw_speech_bubble.s +++ /dev/null @@ -1,513 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel msg_draw_speech_bubble -/* C3308 8012CC08 27BDFF28 */ addiu $sp, $sp, -0xd8 -/* C330C 8012CC0C AFB600B8 */ sw $s6, 0xb8($sp) -/* C3310 8012CC10 0080B02D */ daddu $s6, $a0, $zero -/* C3314 8012CC14 8FA300E8 */ lw $v1, 0xe8($sp) -/* C3318 8012CC18 8FAB00EC */ lw $t3, 0xec($sp) -/* C331C 8012CC1C 00A0402D */ daddu $t0, $a1, $zero -/* C3320 8012CC20 F7B600D0 */ sdc1 $f22, 0xd0($sp) -/* C3324 8012CC24 C7B600F0 */ lwc1 $f22, 0xf0($sp) -/* C3328 8012CC28 00C0482D */ daddu $t1, $a2, $zero -/* C332C 8012CC2C AFB500B4 */ sw $s5, 0xb4($sp) -/* C3330 8012CC30 93B500FB */ lbu $s5, 0xfb($sp) -/* C3334 8012CC34 00E0502D */ daddu $t2, $a3, $zero -/* C3338 8012CC38 AFB100A4 */ sw $s1, 0xa4($sp) -/* C333C 8012CC3C 0100882D */ daddu $s1, $t0, $zero -/* C3340 8012CC40 AFB200A8 */ sw $s2, 0xa8($sp) -/* C3344 8012CC44 0120902D */ daddu $s2, $t1, $zero -/* C3348 8012CC48 AFB400B0 */ sw $s4, 0xb0($sp) -/* C334C 8012CC4C 0140A02D */ daddu $s4, $t2, $zero -/* C3350 8012CC50 F7B400C8 */ sdc1 $f20, 0xc8($sp) -/* C3354 8012CC54 C7B400F4 */ lwc1 $f20, 0xf4($sp) -/* C3358 8012CC58 240200FF */ addiu $v0, $zero, 0xff -/* C335C 8012CC5C AFBF00C0 */ sw $ra, 0xc0($sp) -/* C3360 8012CC60 AFB700BC */ sw $s7, 0xbc($sp) -/* C3364 8012CC64 AFB300AC */ sw $s3, 0xac($sp) -/* C3368 8012CC68 AFB000A0 */ sw $s0, 0xa0($sp) -/* C336C 8012CC6C 0060802D */ daddu $s0, $v1, $zero -/* C3370 8012CC70 16A20020 */ bne $s5, $v0, .L8012CCF4 -/* C3374 8012CC74 0160982D */ daddu $s3, $t3, $zero -/* C3378 8012CC78 3C013FF0 */ lui $at, 0x3ff0 -/* C337C 8012CC7C 44811800 */ mtc1 $at, $f3 -/* C3380 8012CC80 44801000 */ mtc1 $zero, $f2 -/* C3384 8012CC84 4600B021 */ cvt.d.s $f0, $f22 -/* C3388 8012CC88 46220032 */ c.eq.d $f0, $f2 -/* C338C 8012CC8C 00000000 */ nop -/* C3390 8012CC90 45000019 */ bc1f .L8012CCF8 -/* C3394 8012CC94 27A40020 */ addiu $a0, $sp, 0x20 -/* C3398 8012CC98 4600A021 */ cvt.d.s $f0, $f20 -/* C339C 8012CC9C 46220032 */ c.eq.d $f0, $f2 -/* C33A0 8012CCA0 00000000 */ nop -/* C33A4 8012CCA4 45000013 */ bc1f .L8012CCF4 -/* C33A8 8012CCA8 24040020 */ addiu $a0, $zero, 0x20 -/* C33AC 8012CCAC 24050080 */ addiu $a1, $zero, 0x80 -/* C33B0 8012CCB0 240600F0 */ addiu $a2, $zero, 0xf0 -/* C33B4 8012CCB4 0000382D */ daddu $a3, $zero, $zero -/* C33B8 8012CCB8 2502FFFF */ addiu $v0, $t0, -1 -/* C33BC 8012CCBC 3042FFFF */ andi $v0, $v0, 0xffff -/* C33C0 8012CCC0 AFA20010 */ sw $v0, 0x10($sp) -/* C33C4 8012CCC4 25220001 */ addiu $v0, $t1, 1 -/* C33C8 8012CCC8 3042FFFF */ andi $v0, $v0, 0xffff -/* C33CC 8012CCCC AFA20014 */ sw $v0, 0x14($sp) -/* C33D0 8012CCD0 01431021 */ addu $v0, $t2, $v1 -/* C33D4 8012CCD4 00621021 */ addu $v0, $v1, $v0 -/* C33D8 8012CCD8 24420002 */ addiu $v0, $v0, 2 -/* C33DC 8012CCDC 3042FFFF */ andi $v0, $v0, 0xffff -/* C33E0 8012CCE0 AFA20018 */ sw $v0, 0x18($sp) -/* C33E4 8012CCE4 2562FFFE */ addiu $v0, $t3, -2 -/* C33E8 8012CCE8 3042FFFF */ andi $v0, $v0, 0xffff -/* C33EC 8012CCEC 0C04B26A */ jal msg_draw_prim_rect -/* C33F0 8012CCF0 AFA2001C */ sw $v0, 0x1c($sp) -.L8012CCF4: -/* C33F4 8012CCF4 27A40020 */ addiu $a0, $sp, 0x20 -.L8012CCF8: -/* C33F8 8012CCF8 00111400 */ sll $v0, $s1, 0x10 -/* C33FC 8012CCFC 00021403 */ sra $v0, $v0, 0x10 -/* C3400 8012CD00 44822000 */ mtc1 $v0, $f4 -/* C3404 8012CD04 00000000 */ nop -/* C3408 8012CD08 46802120 */ cvt.s.w $f4, $f4 -/* C340C 8012CD0C 00121400 */ sll $v0, $s2, 0x10 -/* C3410 8012CD10 00021403 */ sra $v0, $v0, 0x10 -/* C3414 8012CD14 00021023 */ negu $v0, $v0 -/* C3418 8012CD18 44052000 */ mfc1 $a1, $f4 -/* C341C 8012CD1C 44822000 */ mtc1 $v0, $f4 -/* C3420 8012CD20 00000000 */ nop -/* C3424 8012CD24 46802120 */ cvt.s.w $f4, $f4 -/* C3428 8012CD28 0000382D */ daddu $a3, $zero, $zero -/* C342C 8012CD2C 3C038015 */ lui $v1, %hi(D_8014C3C0) -/* C3430 8012CD30 2463C3C0 */ addiu $v1, $v1, %lo(D_8014C3C0) -/* C3434 8012CD34 24020001 */ addiu $v0, $zero, 1 -/* C3438 8012CD38 00134400 */ sll $t0, $s3, 0x10 -/* C343C 8012CD3C 00084403 */ sra $t0, $t0, 0x10 -/* C3440 8012CD40 00084023 */ negu $t0, $t0 -/* C3444 8012CD44 A4620000 */ sh $v0, ($v1) -/* C3448 8012CD48 A4620020 */ sh $v0, 0x20($v1) -/* C344C 8012CD4C A4700010 */ sh $s0, 0x10($v1) -/* C3450 8012CD50 A4700030 */ sh $s0, 0x30($v1) -/* C3454 8012CD54 A4680022 */ sh $t0, 0x22($v1) -/* C3458 8012CD58 A4680032 */ sh $t0, 0x32($v1) -/* C345C 8012CD5C 3C038015 */ lui $v1, %hi(D_8014C400) -/* C3460 8012CD60 2463C400 */ addiu $v1, $v1, %lo(D_8014C400) -/* C3464 8012CD64 44062000 */ mfc1 $a2, $f4 -/* C3468 8012CD68 02141021 */ addu $v0, $s0, $s4 -/* C346C 8012CD6C A4700000 */ sh $s0, ($v1) -/* C3470 8012CD70 A4700020 */ sh $s0, 0x20($v1) -/* C3474 8012CD74 A4620010 */ sh $v0, 0x10($v1) -/* C3478 8012CD78 A4620030 */ sh $v0, 0x30($v1) -/* C347C 8012CD7C A4680022 */ sh $t0, 0x22($v1) -/* C3480 8012CD80 A4680032 */ sh $t0, 0x32($v1) -/* C3484 8012CD84 3C038015 */ lui $v1, %hi(D_8014C440) -/* C3488 8012CD88 2463C440 */ addiu $v1, $v1, %lo(D_8014C440) -/* C348C 8012CD8C A4620000 */ sh $v0, ($v1) -/* C3490 8012CD90 A4620020 */ sh $v0, 0x20($v1) -/* C3494 8012CD94 02021021 */ addu $v0, $s0, $v0 -/* C3498 8012CD98 A4620010 */ sh $v0, 0x10($v1) -/* C349C 8012CD9C A4620030 */ sh $v0, 0x30($v1) -/* C34A0 8012CDA0 A4680022 */ sh $t0, 0x22($v1) -/* C34A4 8012CDA4 0C019E40 */ jal guTranslateF -/* C34A8 8012CDA8 A4680032 */ sh $t0, 0x32($v1) -/* C34AC 8012CDAC 3C013FF0 */ lui $at, 0x3ff0 -/* C34B0 8012CDB0 44811800 */ mtc1 $at, $f3 -/* C34B4 8012CDB4 44801000 */ mtc1 $zero, $f2 -/* C34B8 8012CDB8 4600B021 */ cvt.d.s $f0, $f22 -/* C34BC 8012CDBC 46220032 */ c.eq.d $f0, $f2 -/* C34C0 8012CDC0 00000000 */ nop -/* C34C4 8012CDC4 45000007 */ bc1f .L8012CDE4 -/* C34C8 8012CDC8 27B00060 */ addiu $s0, $sp, 0x60 -/* C34CC 8012CDCC 4600A021 */ cvt.d.s $f0, $f20 -/* C34D0 8012CDD0 46220032 */ c.eq.d $f0, $f2 -/* C34D4 8012CDD4 00000000 */ nop -/* C34D8 8012CDD8 4501000C */ bc1t .L8012CE0C -/* C34DC 8012CDDC 3C120001 */ lui $s2, 1 -/* C34E0 8012CDE0 27B00060 */ addiu $s0, $sp, 0x60 -.L8012CDE4: -/* C34E4 8012CDE4 4405B000 */ mfc1 $a1, $f22 -/* C34E8 8012CDE8 4406A000 */ mfc1 $a2, $f20 -/* C34EC 8012CDEC 3C073F80 */ lui $a3, 0x3f80 -/* C34F0 8012CDF0 0C019DF0 */ jal guScaleF -/* C34F4 8012CDF4 0200202D */ daddu $a0, $s0, $zero -/* C34F8 8012CDF8 0200202D */ daddu $a0, $s0, $zero -/* C34FC 8012CDFC 27A50020 */ addiu $a1, $sp, 0x20 -/* C3500 8012CE00 0C019D80 */ jal guMtxCatF -/* C3504 8012CE04 00A0302D */ daddu $a2, $a1, $zero -/* C3508 8012CE08 3C120001 */ lui $s2, 1 -.L8012CE0C: -/* C350C 8012CE0C 36521630 */ ori $s2, $s2, 0x1630 -/* C3510 8012CE10 27A40020 */ addiu $a0, $sp, 0x20 -/* C3514 8012CE14 3C108007 */ lui $s0, %hi(gMatrixListPos) -/* C3518 8012CE18 261041F0 */ addiu $s0, $s0, %lo(gMatrixListPos) -/* C351C 8012CE1C 3C11800A */ lui $s1, %hi(gDisplayContext) -/* C3520 8012CE20 2631A674 */ addiu $s1, $s1, %lo(gDisplayContext) -/* C3524 8012CE24 96050000 */ lhu $a1, ($s0) -/* C3528 8012CE28 8E220000 */ lw $v0, ($s1) -/* C352C 8012CE2C 00052980 */ sll $a1, $a1, 6 -/* C3530 8012CE30 00B22821 */ addu $a1, $a1, $s2 -/* C3534 8012CE34 0C019D40 */ jal guMtxF2L -/* C3538 8012CE38 00452821 */ addu $a1, $v0, $a1 -/* C353C 8012CE3C 3C03DA38 */ lui $v1, 0xda38 -/* C3540 8012CE40 34630002 */ ori $v1, $v1, 2 -/* C3544 8012CE44 3C05E300 */ lui $a1, 0xe300 -/* C3548 8012CE48 34A50A01 */ ori $a1, $a1, 0xa01 -/* C354C 8012CE4C 3C06D9FD */ lui $a2, 0xd9fd -/* C3550 8012CE50 34C6F9FF */ ori $a2, $a2, 0xf9ff -/* C3554 8012CE54 3C08D9FF */ lui $t0, 0xd9ff -/* C3558 8012CE58 3508FFFF */ ori $t0, $t0, 0xffff -/* C355C 8012CE5C 3C070020 */ lui $a3, 0x20 -/* C3560 8012CE60 34E70004 */ ori $a3, $a3, 4 -/* C3564 8012CE64 3C09E300 */ lui $t1, 0xe300 -/* C3568 8012CE68 35291801 */ ori $t1, $t1, 0x1801 -/* C356C 8012CE6C 3C0AD700 */ lui $t2, 0xd700 -/* C3570 8012CE70 354A0002 */ ori $t2, $t2, 2 -/* C3574 8012CE74 3C0BE300 */ lui $t3, 0xe300 -/* C3578 8012CE78 3C0D800A */ lui $t5, %hi(gMasterGfxPos) -/* C357C 8012CE7C 25ADA66C */ addiu $t5, $t5, %lo(gMasterGfxPos) -/* C3580 8012CE80 356B0C00 */ ori $t3, $t3, 0xc00 -/* C3584 8012CE84 8DAC0000 */ lw $t4, ($t5) -/* C3588 8012CE88 96020000 */ lhu $v0, ($s0) -/* C358C 8012CE8C 0180202D */ daddu $a0, $t4, $zero -/* C3590 8012CE90 258C0008 */ addiu $t4, $t4, 8 -/* C3594 8012CE94 ADAC0000 */ sw $t4, ($t5) -/* C3598 8012CE98 AC830000 */ sw $v1, ($a0) -/* C359C 8012CE9C 24430001 */ addiu $v1, $v0, 1 -/* C35A0 8012CEA0 3042FFFF */ andi $v0, $v0, 0xffff -/* C35A4 8012CEA4 00021180 */ sll $v0, $v0, 6 -/* C35A8 8012CEA8 A6030000 */ sh $v1, ($s0) -/* C35AC 8012CEAC 8E230000 */ lw $v1, ($s1) -/* C35B0 8012CEB0 00521021 */ addu $v0, $v0, $s2 -/* C35B4 8012CEB4 00621821 */ addu $v1, $v1, $v0 -/* C35B8 8012CEB8 3C028000 */ lui $v0, 0x8000 -/* C35BC 8012CEBC 00621821 */ addu $v1, $v1, $v0 -/* C35C0 8012CEC0 25820008 */ addiu $v0, $t4, 8 -/* C35C4 8012CEC4 AC830004 */ sw $v1, 4($a0) -/* C35C8 8012CEC8 ADA20000 */ sw $v0, ($t5) -/* C35CC 8012CECC 3C02E700 */ lui $v0, 0xe700 -/* C35D0 8012CED0 AD820000 */ sw $v0, ($t4) -/* C35D4 8012CED4 25820010 */ addiu $v0, $t4, 0x10 -/* C35D8 8012CED8 AD800004 */ sw $zero, 4($t4) -/* C35DC 8012CEDC ADA20000 */ sw $v0, ($t5) -/* C35E0 8012CEE0 25820018 */ addiu $v0, $t4, 0x18 -/* C35E4 8012CEE4 AD850008 */ sw $a1, 8($t4) -/* C35E8 8012CEE8 AD80000C */ sw $zero, 0xc($t4) -/* C35EC 8012CEEC ADA20000 */ sw $v0, ($t5) -/* C35F0 8012CEF0 25820020 */ addiu $v0, $t4, 0x20 -/* C35F4 8012CEF4 AD860010 */ sw $a2, 0x10($t4) -/* C35F8 8012CEF8 AD800014 */ sw $zero, 0x14($t4) -/* C35FC 8012CEFC ADA20000 */ sw $v0, ($t5) -/* C3600 8012CF00 25820028 */ addiu $v0, $t4, 0x28 -/* C3604 8012CF04 AD880018 */ sw $t0, 0x18($t4) -/* C3608 8012CF08 AD87001C */ sw $a3, 0x1c($t4) -/* C360C 8012CF0C ADA20000 */ sw $v0, ($t5) -/* C3610 8012CF10 240200C0 */ addiu $v0, $zero, 0xc0 -/* C3614 8012CF14 AD820024 */ sw $v0, 0x24($t4) -/* C3618 8012CF18 25820030 */ addiu $v0, $t4, 0x30 -/* C361C 8012CF1C AD890020 */ sw $t1, 0x20($t4) -/* C3620 8012CF20 ADA20000 */ sw $v0, ($t5) -/* C3624 8012CF24 2402FFFF */ addiu $v0, $zero, -1 -/* C3628 8012CF28 AD82002C */ sw $v0, 0x2c($t4) -/* C362C 8012CF2C 25820038 */ addiu $v0, $t4, 0x38 -/* C3630 8012CF30 AD8A0028 */ sw $t2, 0x28($t4) -/* C3634 8012CF34 ADA20000 */ sw $v0, ($t5) -/* C3638 8012CF38 3C020008 */ lui $v0, 8 -/* C363C 8012CF3C AD8B0030 */ sw $t3, 0x30($t4) -/* C3640 8012CF40 AD820034 */ sw $v0, 0x34($t4) -/* C3644 8012CF44 92C3053C */ lbu $v1, 0x53c($s6) -/* C3648 8012CF48 24020003 */ addiu $v0, $zero, 3 -/* C364C 8012CF4C 14620008 */ bne $v1, $v0, .L8012CF70 -/* C3650 8012CF50 3C02E300 */ lui $v0, 0xe300 -/* C3654 8012CF54 3C03E300 */ lui $v1, 0xe300 -/* C3658 8012CF58 34631201 */ ori $v1, $v1, 0x1201 -/* C365C 8012CF5C 25820040 */ addiu $v0, $t4, 0x40 -/* C3660 8012CF60 ADA20000 */ sw $v0, ($t5) -/* C3664 8012CF64 AD830038 */ sw $v1, 0x38($t4) -/* C3668 8012CF68 0804B3E2 */ j .L8012CF88 -/* C366C 8012CF6C AD80003C */ sw $zero, 0x3c($t4) -.L8012CF70: -/* C3670 8012CF70 34421201 */ ori $v0, $v0, 0x1201 -/* C3674 8012CF74 25830040 */ addiu $v1, $t4, 0x40 -/* C3678 8012CF78 ADA30000 */ sw $v1, ($t5) -/* C367C 8012CF7C AD820038 */ sw $v0, 0x38($t4) -/* C3680 8012CF80 24022000 */ addiu $v0, $zero, 0x2000 -/* C3684 8012CF84 AD82003C */ sw $v0, 0x3c($t4) -.L8012CF88: -/* C3688 8012CF88 32AA00FF */ andi $t2, $s5, 0xff -/* C368C 8012CF8C 2D4200FF */ sltiu $v0, $t2, 0xff -/* C3690 8012CF90 14400016 */ bnez $v0, .L8012CFEC -/* C3694 8012CF94 3C08E200 */ lui $t0, 0xe200 -/* C3698 8012CF98 3C07E200 */ lui $a3, 0xe200 -/* C369C 8012CF9C 34E7001C */ ori $a3, $a3, 0x1c -/* C36A0 8012CFA0 3C050055 */ lui $a1, 0x55 -/* C36A4 8012CFA4 34A51208 */ ori $a1, $a1, 0x1208 -/* C36A8 8012CFA8 3C08FCFF */ lui $t0, 0xfcff -/* C36AC 8012CFAC 3508FFFF */ ori $t0, $t0, 0xffff -/* C36B0 8012CFB0 3C06FFFC */ lui $a2, 0xfffc -/* C36B4 8012CFB4 3C04800A */ lui $a0, %hi(gMasterGfxPos) -/* C36B8 8012CFB8 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos) -/* C36BC 8012CFBC 8C820000 */ lw $v0, ($a0) -/* C36C0 8012CFC0 34C6F279 */ ori $a2, $a2, 0xf279 -/* C36C4 8012CFC4 0040182D */ daddu $v1, $v0, $zero -/* C36C8 8012CFC8 24420008 */ addiu $v0, $v0, 8 -/* C36CC 8012CFCC AC820000 */ sw $v0, ($a0) -/* C36D0 8012CFD0 AC670000 */ sw $a3, ($v1) -/* C36D4 8012CFD4 AC650004 */ sw $a1, 4($v1) -/* C36D8 8012CFD8 24430008 */ addiu $v1, $v0, 8 -/* C36DC 8012CFDC AC830000 */ sw $v1, ($a0) -/* C36E0 8012CFE0 AC480000 */ sw $t0, ($v0) -/* C36E4 8012CFE4 0804B416 */ j .L8012D058 -/* C36E8 8012CFE8 AC460004 */ sw $a2, 4($v0) -.L8012CFEC: -/* C36EC 8012CFEC 3508001C */ ori $t0, $t0, 0x1c -/* C36F0 8012CFF0 3C060050 */ lui $a2, 0x50 -/* C36F4 8012CFF4 34C64B40 */ ori $a2, $a2, 0x4b40 -/* C36F8 8012CFF8 3C09FCFF */ lui $t1, 0xfcff -/* C36FC 8012CFFC 352997FF */ ori $t1, $t1, 0x97ff -/* C3700 8012D000 3C07FF2C */ lui $a3, 0xff2c -/* C3704 8012D004 34E7FE7F */ ori $a3, $a3, 0xfe7f -/* C3708 8012D008 3C052020 */ lui $a1, 0x2020 -/* C370C 8012D00C 3C04800A */ lui $a0, %hi(gMasterGfxPos) -/* C3710 8012D010 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos) -/* C3714 8012D014 34A52000 */ ori $a1, $a1, 0x2000 -/* C3718 8012D018 8C820000 */ lw $v0, ($a0) -/* C371C 8012D01C 01452825 */ or $a1, $t2, $a1 -/* C3720 8012D020 0040182D */ daddu $v1, $v0, $zero -/* C3724 8012D024 24420008 */ addiu $v0, $v0, 8 -/* C3728 8012D028 AC820000 */ sw $v0, ($a0) -/* C372C 8012D02C AC680000 */ sw $t0, ($v1) -/* C3730 8012D030 AC660004 */ sw $a2, 4($v1) -/* C3734 8012D034 24430008 */ addiu $v1, $v0, 8 -/* C3738 8012D038 AC830000 */ sw $v1, ($a0) -/* C373C 8012D03C 24430010 */ addiu $v1, $v0, 0x10 -/* C3740 8012D040 AC490000 */ sw $t1, ($v0) -/* C3744 8012D044 AC470004 */ sw $a3, 4($v0) -/* C3748 8012D048 AC830000 */ sw $v1, ($a0) -/* C374C 8012D04C 3C03FA00 */ lui $v1, 0xfa00 -/* C3750 8012D050 AC430008 */ sw $v1, 8($v0) -/* C3754 8012D054 AC45000C */ sw $a1, 0xc($v0) -.L8012D058: -/* C3758 8012D058 3C03E300 */ lui $v1, 0xe300 -/* C375C 8012D05C 34631001 */ ori $v1, $v1, 0x1001 -/* C3760 8012D060 3C06F500 */ lui $a2, 0xf500 -/* C3764 8012D064 34C60100 */ ori $a2, $a2, 0x100 -/* C3768 8012D068 3C070703 */ lui $a3, 0x703 -/* C376C 8012D06C 34E7C000 */ ori $a3, $a3, 0xc000 -/* C3770 8012D070 3C0FFD48 */ lui $t7, 0xfd48 -/* C3774 8012D074 35EF000F */ ori $t7, $t7, 0xf -/* C3778 8012D078 3C11F548 */ lui $s1, 0xf548 -/* C377C 8012D07C 36310400 */ ori $s1, $s1, 0x400 -/* C3780 8012D080 3C100709 */ lui $s0, 0x709 -/* C3784 8012D084 36108250 */ ori $s0, $s0, 0x8250 -/* C3788 8012D088 3C130703 */ lui $s3, 0x703 -/* C378C 8012D08C 3673E0FC */ ori $s3, $s3, 0xe0fc -/* C3790 8012D090 3C16F540 */ lui $s6, 0xf540 -/* C3794 8012D094 36D60400 */ ori $s6, $s6, 0x400 -/* C3798 8012D098 3C170009 */ lui $s7, 9 -/* C379C 8012D09C 36F78250 */ ori $s7, $s7, 0x8250 -/* C37A0 8012D0A0 3C190007 */ lui $t9, 7 -/* C37A4 8012D0A4 3739C0FC */ ori $t9, $t9, 0xc0fc -/* C37A8 8012D0A8 3C090100 */ lui $t1, 0x100 -/* C37AC 8012D0AC 35294008 */ ori $t1, $t1, 0x4008 -/* C37B0 8012D0B0 3C0B0600 */ lui $t3, 0x600 -/* C37B4 8012D0B4 356B0402 */ ori $t3, $t3, 0x402 -/* C37B8 8012D0B8 3C0A0002 */ lui $t2, 2 -/* C37BC 8012D0BC 354A0406 */ ori $t2, $t2, 0x406 -/* C37C0 8012D0C0 3C0CFD48 */ lui $t4, 0xfd48 -/* C37C4 8012D0C4 358C0003 */ ori $t4, $t4, 3 -/* C37C8 8012D0C8 3C0EF548 */ lui $t6, 0xf548 -/* C37CC 8012D0CC 35CE0200 */ ori $t6, $t6, 0x200 -/* C37D0 8012D0D0 3C0D0701 */ lui $t5, 0x701 -/* C37D4 8012D0D4 35AD8030 */ ori $t5, $t5, 0x8030 -/* C37D8 8012D0D8 3C120700 */ lui $s2, 0x700 -/* C37DC 8012D0DC 3652E0FC */ ori $s2, $s2, 0xe0fc -/* C37E0 8012D0E0 3C15F540 */ lui $s5, 0xf540 -/* C37E4 8012D0E4 36B50200 */ ori $s5, $s5, 0x200 -/* C37E8 8012D0E8 3C140001 */ lui $s4, 1 -/* C37EC 8012D0EC 36948030 */ ori $s4, $s4, 0x8030 -/* C37F0 8012D0F0 3C180001 */ lui $t8, 1 -/* C37F4 8012D0F4 3C04800A */ lui $a0, %hi(gMasterGfxPos) -/* C37F8 8012D0F8 2484A66C */ addiu $a0, $a0, %lo(gMasterGfxPos) -/* C37FC 8012D0FC 3718C0FC */ ori $t8, $t8, 0xc0fc -/* C3800 8012D100 8C820000 */ lw $v0, ($a0) -/* C3804 8012D104 3C08E600 */ lui $t0, 0xe600 -/* C3808 8012D108 0040282D */ daddu $a1, $v0, $zero -/* C380C 8012D10C 24420008 */ addiu $v0, $v0, 8 -/* C3810 8012D110 AC820000 */ sw $v0, ($a0) -/* C3814 8012D114 ACA30000 */ sw $v1, ($a1) -/* C3818 8012D118 34038000 */ ori $v1, $zero, 0x8000 -/* C381C 8012D11C ACA30004 */ sw $v1, 4($a1) -/* C3820 8012D120 24430008 */ addiu $v1, $v0, 8 -/* C3824 8012D124 AC830000 */ sw $v1, ($a0) -/* C3828 8012D128 3C058015 */ lui $a1, %hi(msg_drawState) -/* C382C 8012D12C 8CA55D74 */ lw $a1, %lo(msg_drawState)($a1) -/* C3830 8012D130 3C03FD10 */ lui $v1, 0xfd10 -/* C3834 8012D134 AC430000 */ sw $v1, ($v0) -/* C3838 8012D138 90A5002B */ lbu $a1, 0x2b($a1) -/* C383C 8012D13C 24430010 */ addiu $v1, $v0, 0x10 -/* C3840 8012D140 AC830000 */ sw $v1, ($a0) -/* C3844 8012D144 3C03E800 */ lui $v1, 0xe800 -/* C3848 8012D148 AC430008 */ sw $v1, 8($v0) -/* C384C 8012D14C 24430018 */ addiu $v1, $v0, 0x18 -/* C3850 8012D150 AC40000C */ sw $zero, 0xc($v0) -/* C3854 8012D154 AC830000 */ sw $v1, ($a0) -/* C3858 8012D158 3C030700 */ lui $v1, 0x700 -/* C385C 8012D15C AC430014 */ sw $v1, 0x14($v0) -/* C3860 8012D160 24430020 */ addiu $v1, $v0, 0x20 -/* C3864 8012D164 AC460010 */ sw $a2, 0x10($v0) -/* C3868 8012D168 AC830000 */ sw $v1, ($a0) -/* C386C 8012D16C 24430028 */ addiu $v1, $v0, 0x28 -/* C3870 8012D170 AC480018 */ sw $t0, 0x18($v0) -/* C3874 8012D174 AC40001C */ sw $zero, 0x1c($v0) -/* C3878 8012D178 AC830000 */ sw $v1, ($a0) -/* C387C 8012D17C 3C03F000 */ lui $v1, 0xf000 -/* C3880 8012D180 AC430020 */ sw $v1, 0x20($v0) -/* C3884 8012D184 24430030 */ addiu $v1, $v0, 0x30 -/* C3888 8012D188 AC470024 */ sw $a3, 0x24($v0) -/* C388C 8012D18C 3C07E700 */ lui $a3, 0xe700 -/* C3890 8012D190 AC830000 */ sw $v1, ($a0) -/* C3894 8012D194 24430038 */ addiu $v1, $v0, 0x38 -/* C3898 8012D198 AC470028 */ sw $a3, 0x28($v0) -/* C389C 8012D19C AC40002C */ sw $zero, 0x2c($v0) -/* C38A0 8012D1A0 AC830000 */ sw $v1, ($a0) -/* C38A4 8012D1A4 3C03802F */ lui $v1, %hi(D_802EB670) -/* C38A8 8012D1A8 2463B670 */ addiu $v1, $v1, %lo(D_802EB670) -/* C38AC 8012D1AC AC430034 */ sw $v1, 0x34($v0) -/* C38B0 8012D1B0 24430040 */ addiu $v1, $v0, 0x40 -/* C38B4 8012D1B4 AC4F0030 */ sw $t7, 0x30($v0) -/* C38B8 8012D1B8 AC830000 */ sw $v1, ($a0) -/* C38BC 8012D1BC 24430048 */ addiu $v1, $v0, 0x48 -/* C38C0 8012D1C0 AC510038 */ sw $s1, 0x38($v0) -/* C38C4 8012D1C4 AC50003C */ sw $s0, 0x3c($v0) -/* C38C8 8012D1C8 AC830000 */ sw $v1, ($a0) -/* C38CC 8012D1CC 3C03802F */ lui $v1, %hi(D_802EC3F0) -/* C38D0 8012D1D0 2463C3F0 */ addiu $v1, $v1, %lo(D_802EC3F0) -/* C38D4 8012D1D4 3C06F400 */ lui $a2, 0xf400 -/* C38D8 8012D1D8 AC480040 */ sw $t0, 0x40($v0) -/* C38DC 8012D1DC AC400044 */ sw $zero, 0x44($v0) -/* C38E0 8012D1E0 00052940 */ sll $a1, $a1, 5 -/* C38E4 8012D1E4 00A32821 */ addu $a1, $a1, $v1 -/* C38E8 8012D1E8 24430050 */ addiu $v1, $v0, 0x50 -/* C38EC 8012D1EC AC450004 */ sw $a1, 4($v0) -/* C38F0 8012D1F0 AC830000 */ sw $v1, ($a0) -/* C38F4 8012D1F4 24430058 */ addiu $v1, $v0, 0x58 -/* C38F8 8012D1F8 AC460048 */ sw $a2, 0x48($v0) -/* C38FC 8012D1FC AC53004C */ sw $s3, 0x4c($v0) -/* C3900 8012D200 AC830000 */ sw $v1, ($a0) -/* C3904 8012D204 24430060 */ addiu $v1, $v0, 0x60 -/* C3908 8012D208 AC470050 */ sw $a3, 0x50($v0) -/* C390C 8012D20C AC400054 */ sw $zero, 0x54($v0) -/* C3910 8012D210 AC830000 */ sw $v1, ($a0) -/* C3914 8012D214 24430068 */ addiu $v1, $v0, 0x68 -/* C3918 8012D218 3C05F200 */ lui $a1, 0xf200 -/* C391C 8012D21C AC560058 */ sw $s6, 0x58($v0) -/* C3920 8012D220 AC57005C */ sw $s7, 0x5c($v0) -/* C3924 8012D224 AC830000 */ sw $v1, ($a0) -/* C3928 8012D228 24430070 */ addiu $v1, $v0, 0x70 -/* C392C 8012D22C AC450060 */ sw $a1, 0x60($v0) -/* C3930 8012D230 AC590064 */ sw $t9, 0x64($v0) -/* C3934 8012D234 AC830000 */ sw $v1, ($a0) -/* C3938 8012D238 3C038015 */ lui $v1, %hi(D_8014C3C0) -/* C393C 8012D23C 2463C3C0 */ addiu $v1, $v1, %lo(D_8014C3C0) -/* C3940 8012D240 AC43006C */ sw $v1, 0x6c($v0) -/* C3944 8012D244 24430078 */ addiu $v1, $v0, 0x78 -/* C3948 8012D248 AC490068 */ sw $t1, 0x68($v0) -/* C394C 8012D24C AC830000 */ sw $v1, ($a0) -/* C3950 8012D250 24430080 */ addiu $v1, $v0, 0x80 -/* C3954 8012D254 AC4B0070 */ sw $t3, 0x70($v0) -/* C3958 8012D258 AC4A0074 */ sw $t2, 0x74($v0) -/* C395C 8012D25C AC830000 */ sw $v1, ($a0) -/* C3960 8012D260 3C03802F */ lui $v1, %hi(D_802EBA70) -/* C3964 8012D264 2463BA70 */ addiu $v1, $v1, %lo(D_802EBA70) -/* C3968 8012D268 AC43007C */ sw $v1, 0x7c($v0) -/* C396C 8012D26C 24430088 */ addiu $v1, $v0, 0x88 -/* C3970 8012D270 AC4C0078 */ sw $t4, 0x78($v0) -/* C3974 8012D274 AC830000 */ sw $v1, ($a0) -/* C3978 8012D278 24430090 */ addiu $v1, $v0, 0x90 -/* C397C 8012D27C AC4E0080 */ sw $t6, 0x80($v0) -/* C3980 8012D280 AC4D0084 */ sw $t5, 0x84($v0) -/* C3984 8012D284 AC830000 */ sw $v1, ($a0) -/* C3988 8012D288 24430098 */ addiu $v1, $v0, 0x98 -/* C398C 8012D28C AC480088 */ sw $t0, 0x88($v0) -/* C3990 8012D290 AC40008C */ sw $zero, 0x8c($v0) -/* C3994 8012D294 AC830000 */ sw $v1, ($a0) -/* C3998 8012D298 244300A0 */ addiu $v1, $v0, 0xa0 -/* C399C 8012D29C AC460090 */ sw $a2, 0x90($v0) -/* C39A0 8012D2A0 AC520094 */ sw $s2, 0x94($v0) -/* C39A4 8012D2A4 AC830000 */ sw $v1, ($a0) -/* C39A8 8012D2A8 244300A8 */ addiu $v1, $v0, 0xa8 -/* C39AC 8012D2AC AC470098 */ sw $a3, 0x98($v0) -/* C39B0 8012D2B0 AC40009C */ sw $zero, 0x9c($v0) -/* C39B4 8012D2B4 AC830000 */ sw $v1, ($a0) -/* C39B8 8012D2B8 244300B0 */ addiu $v1, $v0, 0xb0 -/* C39BC 8012D2BC AC5500A0 */ sw $s5, 0xa0($v0) -/* C39C0 8012D2C0 AC5400A4 */ sw $s4, 0xa4($v0) -/* C39C4 8012D2C4 AC830000 */ sw $v1, ($a0) -/* C39C8 8012D2C8 244300B8 */ addiu $v1, $v0, 0xb8 -/* C39CC 8012D2CC AC4500A8 */ sw $a1, 0xa8($v0) -/* C39D0 8012D2D0 AC5800AC */ sw $t8, 0xac($v0) -/* C39D4 8012D2D4 AC830000 */ sw $v1, ($a0) -/* C39D8 8012D2D8 3C038015 */ lui $v1, %hi(D_8014C400) -/* C39DC 8012D2DC 2463C400 */ addiu $v1, $v1, %lo(D_8014C400) -/* C39E0 8012D2E0 AC4300B4 */ sw $v1, 0xb4($v0) -/* C39E4 8012D2E4 244300C0 */ addiu $v1, $v0, 0xc0 -/* C39E8 8012D2E8 AC4900B0 */ sw $t1, 0xb0($v0) -/* C39EC 8012D2EC AC830000 */ sw $v1, ($a0) -/* C39F0 8012D2F0 244300C8 */ addiu $v1, $v0, 0xc8 -/* C39F4 8012D2F4 AC4B00B8 */ sw $t3, 0xb8($v0) -/* C39F8 8012D2F8 AC4A00BC */ sw $t2, 0xbc($v0) -/* C39FC 8012D2FC AC830000 */ sw $v1, ($a0) -/* C3A00 8012D300 3C03802F */ lui $v1, %hi(D_802EBB70) -/* C3A04 8012D304 2463BB70 */ addiu $v1, $v1, %lo(D_802EBB70) -/* C3A08 8012D308 AC4300C4 */ sw $v1, 0xc4($v0) -/* C3A0C 8012D30C 244300D0 */ addiu $v1, $v0, 0xd0 -/* C3A10 8012D310 AC4F00C0 */ sw $t7, 0xc0($v0) -/* C3A14 8012D314 AC830000 */ sw $v1, ($a0) -/* C3A18 8012D318 244300D8 */ addiu $v1, $v0, 0xd8 -/* C3A1C 8012D31C AC5100C8 */ sw $s1, 0xc8($v0) -/* C3A20 8012D320 AC5000CC */ sw $s0, 0xcc($v0) -/* C3A24 8012D324 AC830000 */ sw $v1, ($a0) -/* C3A28 8012D328 244300E0 */ addiu $v1, $v0, 0xe0 -/* C3A2C 8012D32C AC4800D0 */ sw $t0, 0xd0($v0) -/* C3A30 8012D330 AC4000D4 */ sw $zero, 0xd4($v0) -/* C3A34 8012D334 AC830000 */ sw $v1, ($a0) -/* C3A38 8012D338 244300E8 */ addiu $v1, $v0, 0xe8 -/* C3A3C 8012D33C AC4600D8 */ sw $a2, 0xd8($v0) -/* C3A40 8012D340 AC5300DC */ sw $s3, 0xdc($v0) -/* C3A44 8012D344 AC830000 */ sw $v1, ($a0) -/* C3A48 8012D348 244300F0 */ addiu $v1, $v0, 0xf0 -/* C3A4C 8012D34C AC4700E0 */ sw $a3, 0xe0($v0) -/* C3A50 8012D350 AC4000E4 */ sw $zero, 0xe4($v0) -/* C3A54 8012D354 AC830000 */ sw $v1, ($a0) -/* C3A58 8012D358 244300F8 */ addiu $v1, $v0, 0xf8 -/* C3A5C 8012D35C AC5600E8 */ sw $s6, 0xe8($v0) -/* C3A60 8012D360 AC5700EC */ sw $s7, 0xec($v0) -/* C3A64 8012D364 AC830000 */ sw $v1, ($a0) -/* C3A68 8012D368 24430100 */ addiu $v1, $v0, 0x100 -/* C3A6C 8012D36C AC4500F0 */ sw $a1, 0xf0($v0) -/* C3A70 8012D370 AC5900F4 */ sw $t9, 0xf4($v0) -/* C3A74 8012D374 AC830000 */ sw $v1, ($a0) -/* C3A78 8012D378 3C038015 */ lui $v1, %hi(D_8014C440) -/* C3A7C 8012D37C 2463C440 */ addiu $v1, $v1, %lo(D_8014C440) -/* C3A80 8012D380 AC4900F8 */ sw $t1, 0xf8($v0) -/* C3A84 8012D384 AC4300FC */ sw $v1, 0xfc($v0) -/* C3A88 8012D388 24430108 */ addiu $v1, $v0, 0x108 -/* C3A8C 8012D38C AC830000 */ sw $v1, ($a0) -/* C3A90 8012D390 24430110 */ addiu $v1, $v0, 0x110 -/* C3A94 8012D394 AC4B0100 */ sw $t3, 0x100($v0) -/* C3A98 8012D398 AC4A0104 */ sw $t2, 0x104($v0) -/* C3A9C 8012D39C AC830000 */ sw $v1, ($a0) -/* C3AA0 8012D3A0 AC470108 */ sw $a3, 0x108($v0) -/* C3AA4 8012D3A4 AC40010C */ sw $zero, 0x10c($v0) -/* C3AA8 8012D3A8 8FBF00C0 */ lw $ra, 0xc0($sp) -/* C3AAC 8012D3AC 8FB700BC */ lw $s7, 0xbc($sp) -/* C3AB0 8012D3B0 8FB600B8 */ lw $s6, 0xb8($sp) -/* C3AB4 8012D3B4 8FB500B4 */ lw $s5, 0xb4($sp) -/* C3AB8 8012D3B8 8FB400B0 */ lw $s4, 0xb0($sp) -/* C3ABC 8012D3BC 8FB300AC */ lw $s3, 0xac($sp) -/* C3AC0 8012D3C0 8FB200A8 */ lw $s2, 0xa8($sp) -/* C3AC4 8012D3C4 8FB100A4 */ lw $s1, 0xa4($sp) -/* C3AC8 8012D3C8 8FB000A0 */ lw $s0, 0xa0($sp) -/* C3ACC 8012D3CC D7B600D0 */ ldc1 $f22, 0xd0($sp) -/* C3AD0 8012D3D0 D7B400C8 */ ldc1 $f20, 0xc8($sp) -/* C3AD4 8012D3D4 03E00008 */ jr $ra -/* C3AD8 8012D3D8 27BD00D8 */ addiu $sp, $sp, 0xd8 diff --git a/ver/us/asm/nonmatchings/world/area_pra/pra_04/D54840/func_802401B0_D54840.s b/ver/us/asm/nonmatchings/world/area_pra/pra_04/D54840/func_802401B0_D54840.s deleted file mode 100644 index 3a4ae71920..0000000000 --- a/ver/us/asm/nonmatchings/world/area_pra/pra_04/D54840/func_802401B0_D54840.s +++ /dev/null @@ -1,529 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_802414D0_D55B60 -.word .L80240310_D549A0, .L8024033C_D549CC, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L8024090C_D54F9C, .L802403A8_D54A38, .L802404AC_D54B3C, .L80240594_D54C24, .L802406A0_D54D30, .L802408C4_D54F54, .L802408F4_D54F84 - -dlabel D_80241510_D55BA0 -.double 0.7 - -dlabel D_80241518_D55BA8 -.double 0.7 - -.section .text - -glabel func_802401B0_D54840 -/* D54840 802401B0 27BDFF88 */ addiu $sp, $sp, -0x78 -/* D54844 802401B4 AFB3005C */ sw $s3, 0x5c($sp) -/* D54848 802401B8 0080982D */ daddu $s3, $a0, $zero -/* D5484C 802401BC AFBF006C */ sw $ra, 0x6c($sp) -/* D54850 802401C0 AFB60068 */ sw $s6, 0x68($sp) -/* D54854 802401C4 AFB50064 */ sw $s5, 0x64($sp) -/* D54858 802401C8 AFB40060 */ sw $s4, 0x60($sp) -/* D5485C 802401CC AFB20058 */ sw $s2, 0x58($sp) -/* D54860 802401D0 AFB10054 */ sw $s1, 0x54($sp) -/* D54864 802401D4 AFB00050 */ sw $s0, 0x50($sp) -/* D54868 802401D8 F7B40070 */ sdc1 $f20, 0x70($sp) -/* D5486C 802401DC 8E720148 */ lw $s2, 0x148($s3) -/* D54870 802401E0 86440008 */ lh $a0, 8($s2) -/* D54874 802401E4 0C00EABB */ jal get_npc_unsafe -/* D54878 802401E8 00A0802D */ daddu $s0, $a1, $zero -/* D5487C 802401EC 8E63000C */ lw $v1, 0xc($s3) -/* D54880 802401F0 0260202D */ daddu $a0, $s3, $zero -/* D54884 802401F4 8C650000 */ lw $a1, ($v1) -/* D54888 802401F8 0C0B1EAF */ jal evt_get_variable -/* D5488C 802401FC 0040882D */ daddu $s1, $v0, $zero -/* D54890 80240200 AFA00020 */ sw $zero, 0x20($sp) -/* D54894 80240204 8E4300D0 */ lw $v1, 0xd0($s2) -/* D54898 80240208 8C630030 */ lw $v1, 0x30($v1) -/* D5489C 8024020C AFA30024 */ sw $v1, 0x24($sp) -/* D548A0 80240210 8E4300D0 */ lw $v1, 0xd0($s2) -/* D548A4 80240214 8C63001C */ lw $v1, 0x1c($v1) -/* D548A8 80240218 AFA30028 */ sw $v1, 0x28($sp) -/* D548AC 8024021C 8E4300D0 */ lw $v1, 0xd0($s2) -/* D548B0 80240220 8C630024 */ lw $v1, 0x24($v1) -/* D548B4 80240224 AFA3002C */ sw $v1, 0x2c($sp) -/* D548B8 80240228 8E4300D0 */ lw $v1, 0xd0($s2) -/* D548BC 8024022C 3C158011 */ lui $s5, %hi(gPlayerStatus) -/* D548C0 80240230 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus) -/* D548C4 80240234 8C630028 */ lw $v1, 0x28($v1) -/* D548C8 80240238 27B60020 */ addiu $s6, $sp, 0x20 -/* D548CC 8024023C AFA30030 */ sw $v1, 0x30($sp) -/* D548D0 80240240 8E4300D0 */ lw $v1, 0xd0($s2) -/* D548D4 80240244 3C0143FA */ lui $at, 0x43fa -/* D548D8 80240248 44810000 */ mtc1 $at, $f0 -/* D548DC 8024024C 8C63002C */ lw $v1, 0x2c($v1) -/* D548E0 80240250 0040A02D */ daddu $s4, $v0, $zero -/* D548E4 80240254 E7A00038 */ swc1 $f0, 0x38($sp) -/* D548E8 80240258 A7A0003C */ sh $zero, 0x3c($sp) -/* D548EC 8024025C 12000019 */ beqz $s0, .L802402C4 -/* D548F0 80240260 AFA30034 */ sw $v1, 0x34($sp) -/* D548F4 80240264 27A50040 */ addiu $a1, $sp, 0x40 -/* D548F8 80240268 27A60044 */ addiu $a2, $sp, 0x44 -/* D548FC 8024026C AE600070 */ sw $zero, 0x70($s3) -/* D54900 80240270 A620008E */ sh $zero, 0x8e($s1) -/* D54904 80240274 8E4200B0 */ lw $v0, 0xb0($s2) -/* D54908 80240278 3C01447A */ lui $at, 0x447a -/* D5490C 8024027C 44810000 */ mtc1 $at, $f0 -/* D54910 80240280 34420010 */ ori $v0, $v0, 0x10 -/* D54914 80240284 AE4200B0 */ sw $v0, 0xb0($s2) -/* D54918 80240288 C6220038 */ lwc1 $f2, 0x38($s1) -/* D5491C 8024028C C624003C */ lwc1 $f4, 0x3c($s1) -/* D54920 80240290 C6260040 */ lwc1 $f6, 0x40($s1) -/* D54924 80240294 27A2004C */ addiu $v0, $sp, 0x4c -/* D54928 80240298 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D5492C 8024029C E7A20040 */ swc1 $f2, 0x40($sp) -/* D54930 802402A0 E7A40044 */ swc1 $f4, 0x44($sp) -/* D54934 802402A4 E7A60048 */ swc1 $f6, 0x48($sp) -/* D54938 802402A8 AFA20010 */ sw $v0, 0x10($sp) -/* D5493C 802402AC 8E240080 */ lw $a0, 0x80($s1) -/* D54940 802402B0 0C0372DF */ jal npc_raycast_down_sides -/* D54944 802402B4 27A70048 */ addiu $a3, $sp, 0x48 -/* D54948 802402B8 C7A00044 */ lwc1 $f0, 0x44($sp) -/* D5494C 802402BC 4600028D */ trunc.w.s $f10, $f0 -/* D54950 802402C0 E64A0070 */ swc1 $f10, 0x70($s2) -.L802402C4: -/* D54954 802402C4 8E4300B0 */ lw $v1, 0xb0($s2) -/* D54958 802402C8 30620004 */ andi $v0, $v1, 4 -/* D5495C 802402CC 10400007 */ beqz $v0, .L802402EC -/* D54960 802402D0 00000000 */ nop -/* D54964 802402D4 824200B4 */ lb $v0, 0xb4($s2) -/* D54968 802402D8 1440018D */ bnez $v0, .L80240910 -/* D5496C 802402DC 0000102D */ daddu $v0, $zero, $zero -/* D54970 802402E0 2402FFFB */ addiu $v0, $zero, -5 -/* D54974 802402E4 00621024 */ and $v0, $v1, $v0 -/* D54978 802402E8 AE4200B0 */ sw $v0, 0xb0($s2) -.L802402EC: -/* D5497C 802402EC 8E630070 */ lw $v1, 0x70($s3) -/* D54980 802402F0 2C620010 */ sltiu $v0, $v1, 0x10 -/* D54984 802402F4 10400185 */ beqz $v0, .L8024090C_D54F9C -/* D54988 802402F8 00031080 */ sll $v0, $v1, 2 -/* D5498C 802402FC 3C018024 */ lui $at, %hi(jtbl_802414D0_D55B60) -/* D54990 80240300 00220821 */ addu $at, $at, $v0 -/* D54994 80240304 8C2214D0 */ lw $v0, %lo(jtbl_802414D0_D55B60)($at) -/* D54998 80240308 00400008 */ jr $v0 -/* D5499C 8024030C 00000000 */ nop -.L80240310_D549A0: -/* D549A0 80240310 8E4200CC */ lw $v0, 0xcc($s2) -/* D549A4 80240314 922300A9 */ lbu $v1, 0xa9($s1) -/* D549A8 80240318 8C440000 */ lw $a0, ($v0) -/* D549AC 8024031C 8E220000 */ lw $v0, ($s1) -/* D549B0 80240320 A22300AB */ sb $v1, 0xab($s1) -/* D549B4 80240324 34420080 */ ori $v0, $v0, 0x80 -/* D549B8 80240328 AE220000 */ sw $v0, ($s1) -/* D549BC 8024032C 24020001 */ addiu $v0, $zero, 1 -/* D549C0 80240330 AE240028 */ sw $a0, 0x28($s1) -/* D549C4 80240334 AE600074 */ sw $zero, 0x74($s3) -/* D549C8 80240338 AE620070 */ sw $v0, 0x70($s3) -.L8024033C_D549CC: -/* D549CC 8024033C 8E830014 */ lw $v1, 0x14($s4) -/* D549D0 80240340 04600015 */ bltz $v1, .L80240398 -/* D549D4 80240344 00000000 */ nop -/* D549D8 80240348 8E620074 */ lw $v0, 0x74($s3) -/* D549DC 8024034C 1C400011 */ bgtz $v0, .L80240394 -/* D549E0 80240350 2442FFFF */ addiu $v0, $v0, -1 -/* D549E4 80240354 02C0202D */ daddu $a0, $s6, $zero -/* D549E8 80240358 AE630074 */ sw $v1, 0x74($s3) -/* D549EC 8024035C AFA00010 */ sw $zero, 0x10($sp) -/* D549F0 80240360 8E86000C */ lw $a2, 0xc($s4) -/* D549F4 80240364 8E870010 */ lw $a3, 0x10($s4) -/* D549F8 80240368 0C01242D */ jal basic_ai_check_player_dist -/* D549FC 8024036C 0240282D */ daddu $a1, $s2, $zero -/* D54A00 80240370 10400006 */ beqz $v0, .L8024038C -/* D54A04 80240374 0220202D */ daddu $a0, $s1, $zero -/* D54A08 80240378 240502F4 */ addiu $a1, $zero, 0x2f4 -/* D54A0C 8024037C 0C012530 */ jal ai_enemy_play_sound -/* D54A10 80240380 3C060020 */ lui $a2, 0x20 -/* D54A14 80240384 2402000A */ addiu $v0, $zero, 0xa -/* D54A18 80240388 AE620070 */ sw $v0, 0x70($s3) -.L8024038C: -/* D54A1C 8024038C 8E620074 */ lw $v0, 0x74($s3) -/* D54A20 80240390 2442FFFF */ addiu $v0, $v0, -1 -.L80240394: -/* D54A24 80240394 AE620074 */ sw $v0, 0x74($s3) -.L80240398: -/* D54A28 80240398 8E630070 */ lw $v1, 0x70($s3) -/* D54A2C 8024039C 2402000A */ addiu $v0, $zero, 0xa -/* D54A30 802403A0 1462015B */ bne $v1, $v0, .L80240910 -/* D54A34 802403A4 0000102D */ daddu $v0, $zero, $zero -.L802403A8_D54A38: -/* D54A38 802403A8 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D54A3C 802403AC 8E4200CC */ lw $v0, 0xcc($s2) -/* D54A40 802403B0 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D54A44 802403B4 8C42000C */ lw $v0, 0xc($v0) -/* D54A48 802403B8 AE220028 */ sw $v0, 0x28($s1) -/* D54A4C 802403BC 8EA60028 */ lw $a2, 0x28($s5) -/* D54A50 802403C0 0C00A720 */ jal atan2 -/* D54A54 802403C4 8EA70030 */ lw $a3, 0x30($s5) -/* D54A58 802403C8 3C013FA6 */ lui $at, 0x3fa6 -/* D54A5C 802403CC 34216666 */ ori $at, $at, 0x6666 -/* D54A60 802403D0 44811000 */ mtc1 $at, $f2 -/* D54A64 802403D4 27A50040 */ addiu $a1, $sp, 0x40 -/* D54A68 802403D8 E6200010 */ swc1 $f0, 0x10($s1) -/* D54A6C 802403DC C6200038 */ lwc1 $f0, 0x38($s1) -/* D54A70 802403E0 C6240040 */ lwc1 $f4, 0x40($s1) -/* D54A74 802403E4 3C01447A */ lui $at, 0x447a -/* D54A78 802403E8 44813000 */ mtc1 $at, $f6 -/* D54A7C 802403EC 27A60044 */ addiu $a2, $sp, 0x44 -/* D54A80 802403F0 AE20001C */ sw $zero, 0x1c($s1) -/* D54A84 802403F4 E6220014 */ swc1 $f2, 0x14($s1) -/* D54A88 802403F8 C6880000 */ lwc1 $f8, ($s4) -/* D54A8C 802403FC C622003C */ lwc1 $f2, 0x3c($s1) -/* D54A90 80240400 27A2004C */ addiu $v0, $sp, 0x4c -/* D54A94 80240404 E7A00040 */ swc1 $f0, 0x40($sp) -/* D54A98 80240408 E7A40048 */ swc1 $f4, 0x48($sp) -/* D54A9C 8024040C E7A6004C */ swc1 $f6, 0x4c($sp) -/* D54AA0 80240410 E7A20044 */ swc1 $f2, 0x44($sp) -/* D54AA4 80240414 E6280018 */ swc1 $f8, 0x18($s1) -/* D54AA8 80240418 AFA20010 */ sw $v0, 0x10($sp) -/* D54AAC 8024041C 8E240080 */ lw $a0, 0x80($s1) -/* D54AB0 80240420 0C0372DF */ jal npc_raycast_down_sides -/* D54AB4 80240424 27A70048 */ addiu $a3, $sp, 0x48 -/* D54AB8 80240428 10400010 */ beqz $v0, .L8024046C -/* D54ABC 8024042C 00000000 */ nop -/* D54AC0 80240430 C620003C */ lwc1 $f0, 0x3c($s1) -/* D54AC4 80240434 C6440070 */ lwc1 $f4, 0x70($s2) -/* D54AC8 80240438 46802120 */ cvt.s.w $f4, $f4 -/* D54ACC 8024043C 46040001 */ sub.s $f0, $f0, $f4 -/* D54AD0 80240440 3C018024 */ lui $at, %hi(D_80241510_D55BA0) -/* D54AD4 80240444 D4221510 */ ldc1 $f2, %lo(D_80241510_D55BA0)($at) -/* D54AD8 80240448 46000021 */ cvt.d.s $f0, $f0 -/* D54ADC 8024044C 46220002 */ mul.d $f0, $f0, $f2 -/* D54AE0 80240450 00000000 */ nop -/* D54AE4 80240454 460020A1 */ cvt.d.s $f2, $f4 -/* D54AE8 80240458 46201080 */ add.d $f2, $f2, $f0 -/* D54AEC 8024045C E7A40044 */ swc1 $f4, 0x44($sp) -/* D54AF0 80240460 462010A0 */ cvt.s.d $f2, $f2 -/* D54AF4 80240464 08090127 */ j .L8024049C -/* D54AF8 80240468 E6220064 */ swc1 $f2, 0x64($s1) -.L8024046C: -/* D54AFC 8024046C C6A0002C */ lwc1 $f0, 0x2c($s5) -/* D54B00 80240470 C622003C */ lwc1 $f2, 0x3c($s1) -/* D54B04 80240474 46001081 */ sub.s $f2, $f2, $f0 -/* D54B08 80240478 3C018024 */ lui $at, %hi(D_80241518_D55BA8) -/* D54B0C 8024047C D4241518 */ ldc1 $f4, %lo(D_80241518_D55BA8)($at) -/* D54B10 80240480 460010A1 */ cvt.d.s $f2, $f2 -/* D54B14 80240484 46241082 */ mul.d $f2, $f2, $f4 -/* D54B18 80240488 00000000 */ nop -/* D54B1C 8024048C 46000021 */ cvt.d.s $f0, $f0 -/* D54B20 80240490 46220000 */ add.d $f0, $f0, $f2 -/* D54B24 80240494 46200020 */ cvt.s.d $f0, $f0 -/* D54B28 80240498 E6200064 */ swc1 $f0, 0x64($s1) -.L8024049C: -/* D54B2C 8024049C C620003C */ lwc1 $f0, 0x3c($s1) -/* D54B30 802404A0 2402000B */ addiu $v0, $zero, 0xb -/* D54B34 802404A4 E6200068 */ swc1 $f0, 0x68($s1) -/* D54B38 802404A8 AE620070 */ sw $v0, 0x70($s3) -.L802404AC_D54B3C: -/* D54B3C 802404AC C6200018 */ lwc1 $f0, 0x18($s1) -/* D54B40 802404B0 44801000 */ mtc1 $zero, $f2 -/* D54B44 802404B4 44801800 */ mtc1 $zero, $f3 -/* D54B48 802404B8 46000021 */ cvt.d.s $f0, $f0 -/* D54B4C 802404BC 4620103C */ c.lt.d $f2, $f0 -/* D54B50 802404C0 00000000 */ nop -/* D54B54 802404C4 45000025 */ bc1f .L8024055C -/* D54B58 802404C8 27A50040 */ addiu $a1, $sp, 0x40 -/* D54B5C 802404CC C6200038 */ lwc1 $f0, 0x38($s1) -/* D54B60 802404D0 C622003C */ lwc1 $f2, 0x3c($s1) -/* D54B64 802404D4 C6240040 */ lwc1 $f4, 0x40($s1) -/* D54B68 802404D8 C6260018 */ lwc1 $f6, 0x18($s1) -/* D54B6C 802404DC E7A00040 */ swc1 $f0, 0x40($sp) -/* D54B70 802404E0 E7A20044 */ swc1 $f2, 0x44($sp) -/* D54B74 802404E4 E7A40048 */ swc1 $f4, 0x48($sp) -/* D54B78 802404E8 E7A60010 */ swc1 $f6, 0x10($sp) -/* D54B7C 802404EC C620000C */ lwc1 $f0, 0xc($s1) -/* D54B80 802404F0 E7A00014 */ swc1 $f0, 0x14($sp) -/* D54B84 802404F4 862200A8 */ lh $v0, 0xa8($s1) -/* D54B88 802404F8 44820000 */ mtc1 $v0, $f0 -/* D54B8C 802404FC 00000000 */ nop -/* D54B90 80240500 46800020 */ cvt.s.w $f0, $f0 -/* D54B94 80240504 E7A00018 */ swc1 $f0, 0x18($sp) -/* D54B98 80240508 862200A6 */ lh $v0, 0xa6($s1) -/* D54B9C 8024050C 27A60044 */ addiu $a2, $sp, 0x44 -/* D54BA0 80240510 44820000 */ mtc1 $v0, $f0 -/* D54BA4 80240514 00000000 */ nop -/* D54BA8 80240518 46800020 */ cvt.s.w $f0, $f0 -/* D54BAC 8024051C E7A0001C */ swc1 $f0, 0x1c($sp) -/* D54BB0 80240520 8E240080 */ lw $a0, 0x80($s1) -/* D54BB4 80240524 0C037711 */ jal npc_test_move_simple_with_slipping -/* D54BB8 80240528 27A70048 */ addiu $a3, $sp, 0x48 -/* D54BBC 8024052C 54400001 */ bnel $v0, $zero, .L80240534 -/* D54BC0 80240530 AE200018 */ sw $zero, 0x18($s1) -.L80240534: -/* D54BC4 80240534 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D54BC8 80240538 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D54BCC 8024053C 8EA60028 */ lw $a2, 0x28($s5) -/* D54BD0 80240540 0C00A720 */ jal atan2 -/* D54BD4 80240544 8EA70030 */ lw $a3, 0x30($s5) -/* D54BD8 80240548 8E250018 */ lw $a1, 0x18($s1) -/* D54BDC 8024054C 44060000 */ mfc1 $a2, $f0 -/* D54BE0 80240550 0220202D */ daddu $a0, $s1, $zero -/* D54BE4 80240554 0C00EA95 */ jal npc_move_heading -/* D54BE8 80240558 AE26000C */ sw $a2, 0xc($s1) -.L8024055C: -/* D54BEC 8024055C C620001C */ lwc1 $f0, 0x1c($s1) -/* D54BF0 80240560 C6220014 */ lwc1 $f2, 0x14($s1) -/* D54BF4 80240564 46020001 */ sub.s $f0, $f0, $f2 -/* D54BF8 80240568 C622003C */ lwc1 $f2, 0x3c($s1) -/* D54BFC 8024056C C6240064 */ lwc1 $f4, 0x64($s1) -/* D54C00 80240570 46001080 */ add.s $f2, $f2, $f0 -/* D54C04 80240574 E620001C */ swc1 $f0, 0x1c($s1) -/* D54C08 80240578 4604103C */ c.lt.s $f2, $f4 -/* D54C0C 8024057C 00000000 */ nop -/* D54C10 80240580 450000E2 */ bc1f .L8024090C_D54F9C -/* D54C14 80240584 E622003C */ swc1 $f2, 0x3c($s1) -/* D54C18 80240588 2402000C */ addiu $v0, $zero, 0xc -/* D54C1C 8024058C E624003C */ swc1 $f4, 0x3c($s1) -/* D54C20 80240590 AE620070 */ sw $v0, 0x70($s3) -.L80240594_D54C24: -/* D54C24 80240594 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D54C28 80240598 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D54C2C 8024059C 8EA60028 */ lw $a2, 0x28($s5) -/* D54C30 802405A0 0C00A7B5 */ jal dist2D -/* D54C34 802405A4 8EA70030 */ lw $a3, 0x30($s5) -/* D54C38 802405A8 3C014270 */ lui $at, 0x4270 -/* D54C3C 802405AC 44811000 */ mtc1 $at, $f2 -/* D54C40 802405B0 00000000 */ nop -/* D54C44 802405B4 4602003C */ c.lt.s $f0, $f2 -/* D54C48 802405B8 00000000 */ nop -/* D54C4C 802405BC 45000002 */ bc1f .L802405C8 -/* D54C50 802405C0 E6200010 */ swc1 $f0, 0x10($s1) -/* D54C54 802405C4 E6220010 */ swc1 $f2, 0x10($s1) -.L802405C8: -/* D54C58 802405C8 C6860018 */ lwc1 $f6, 0x18($s4) -/* D54C5C 802405CC C6400070 */ lwc1 $f0, 0x70($s2) -/* D54C60 802405D0 46800020 */ cvt.s.w $f0, $f0 -/* D54C64 802405D4 E7A00044 */ swc1 $f0, 0x44($sp) -/* D54C68 802405D8 46000021 */ cvt.d.s $f0, $f0 -/* D54C6C 802405DC C6240010 */ lwc1 $f4, 0x10($s1) -/* D54C70 802405E0 3C014024 */ lui $at, 0x4024 -/* D54C74 802405E4 44811800 */ mtc1 $at, $f3 -/* D54C78 802405E8 44801000 */ mtc1 $zero, $f2 -/* D54C7C 802405EC 46062103 */ div.s $f4, $f4, $f6 -/* D54C80 802405F0 46220000 */ add.d $f0, $f0, $f2 -/* D54C84 802405F4 C622003C */ lwc1 $f2, 0x3c($s1) -/* D54C88 802405F8 4600228D */ trunc.w.s $f10, $f4 -/* D54C8C 802405FC 44025000 */ mfc1 $v0, $f10 -/* D54C90 80240600 00000000 */ nop -/* D54C94 80240604 A622008E */ sh $v0, 0x8e($s1) -/* D54C98 80240608 460010A1 */ cvt.d.s $f2, $f2 -/* D54C9C 8024060C 46220001 */ sub.d $f0, $f0, $f2 -/* D54CA0 80240610 00021400 */ sll $v0, $v0, 0x10 -/* D54CA4 80240614 E6260018 */ swc1 $f6, 0x18($s1) -/* D54CA8 80240618 14400003 */ bnez $v0, .L80240628 -/* D54CAC 8024061C 46200120 */ cvt.s.d $f4, $f0 -/* D54CB0 80240620 24020001 */ addiu $v0, $zero, 1 -/* D54CB4 80240624 A622008E */ sh $v0, 0x8e($s1) -.L80240628: -/* D54CB8 80240628 8622008E */ lh $v0, 0x8e($s1) -/* D54CBC 8024062C C620001C */ lwc1 $f0, 0x1c($s1) -/* D54CC0 80240630 44821000 */ mtc1 $v0, $f2 -/* D54CC4 80240634 00000000 */ nop -/* D54CC8 80240638 468010A0 */ cvt.s.w $f2, $f2 -/* D54CCC 8024063C 46000007 */ neg.s $f0, $f0 -/* D54CD0 80240640 46020002 */ mul.s $f0, $f0, $f2 -/* D54CD4 80240644 00000000 */ nop -/* D54CD8 80240648 00420018 */ mult $v0, $v0 -/* D54CDC 8024064C 8E230000 */ lw $v1, ($s1) -/* D54CE0 80240650 46040000 */ add.s $f0, $f0, $f4 -/* D54CE4 80240654 A22000AB */ sb $zero, 0xab($s1) -/* D54CE8 80240658 2402FF7F */ addiu $v0, $zero, -0x81 -/* D54CEC 8024065C 00004012 */ mflo $t0 -/* D54CF0 80240660 00621824 */ and $v1, $v1, $v0 -/* D54CF4 80240664 24020005 */ addiu $v0, $zero, 5 -/* D54CF8 80240668 46000000 */ add.s $f0, $f0, $f0 -/* D54CFC 8024066C AE230000 */ sw $v1, ($s1) -/* D54D00 80240670 44881000 */ mtc1 $t0, $f2 -/* D54D04 80240674 00000000 */ nop -/* D54D08 80240678 468010A0 */ cvt.s.w $f2, $f2 -/* D54D0C 8024067C 46000007 */ neg.s $f0, $f0 -/* D54D10 80240680 46020003 */ div.s $f0, $f0, $f2 -/* D54D14 80240684 46000005 */ abs.s $f0, $f0 -/* D54D18 80240688 46000007 */ neg.s $f0, $f0 -/* D54D1C 8024068C E6200014 */ swc1 $f0, 0x14($s1) -/* D54D20 80240690 AE42006C */ sw $v0, 0x6c($s2) -/* D54D24 80240694 2402000D */ addiu $v0, $zero, 0xd -/* D54D28 80240698 A620008E */ sh $zero, 0x8e($s1) -/* D54D2C 8024069C AE620070 */ sw $v0, 0x70($s3) -.L802406A0_D54D30: -/* D54D30 802406A0 C620001C */ lwc1 $f0, 0x1c($s1) -/* D54D34 802406A4 C6220014 */ lwc1 $f2, 0x14($s1) -/* D54D38 802406A8 46020001 */ sub.s $f0, $f0, $f2 -/* D54D3C 802406AC 4480A000 */ mtc1 $zero, $f20 -/* D54D40 802406B0 00000000 */ nop -/* D54D44 802406B4 4614003C */ c.lt.s $f0, $f20 -/* D54D48 802406B8 00000000 */ nop -/* D54D4C 802406BC 45000012 */ bc1f .L80240708 -/* D54D50 802406C0 E620001C */ swc1 $f0, 0x1c($s1) -/* D54D54 802406C4 27A50040 */ addiu $a1, $sp, 0x40 -/* D54D58 802406C8 27A60044 */ addiu $a2, $sp, 0x44 -/* D54D5C 802406CC 27A2004C */ addiu $v0, $sp, 0x4c -/* D54D60 802406D0 C6220038 */ lwc1 $f2, 0x38($s1) -/* D54D64 802406D4 C624003C */ lwc1 $f4, 0x3c($s1) -/* D54D68 802406D8 C6260040 */ lwc1 $f6, 0x40($s1) -/* D54D6C 802406DC 46000007 */ neg.s $f0, $f0 -/* D54D70 802406E0 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D54D74 802406E4 E7A20040 */ swc1 $f2, 0x40($sp) -/* D54D78 802406E8 E7A40044 */ swc1 $f4, 0x44($sp) -/* D54D7C 802406EC E7A60048 */ swc1 $f6, 0x48($sp) -/* D54D80 802406F0 AFA20010 */ sw $v0, 0x10($sp) -/* D54D84 802406F4 8E240080 */ lw $a0, 0x80($s1) -/* D54D88 802406F8 0C0372DF */ jal npc_raycast_down_sides -/* D54D8C 802406FC 27A70048 */ addiu $a3, $sp, 0x48 -/* D54D90 80240700 54400001 */ bnel $v0, $zero, .L80240708 -/* D54D94 80240704 E634001C */ swc1 $f20, 0x1c($s1) -.L80240708: -/* D54D98 80240708 C624003C */ lwc1 $f4, 0x3c($s1) -/* D54D9C 8024070C C620001C */ lwc1 $f0, 0x1c($s1) -/* D54DA0 80240710 46002100 */ add.s $f4, $f4, $f0 -/* D54DA4 80240714 C6200018 */ lwc1 $f0, 0x18($s1) -/* D54DA8 80240718 44801000 */ mtc1 $zero, $f2 -/* D54DAC 8024071C 44801800 */ mtc1 $zero, $f3 -/* D54DB0 80240720 46000021 */ cvt.d.s $f0, $f0 -/* D54DB4 80240724 4620103C */ c.lt.d $f2, $f0 -/* D54DB8 80240728 00000000 */ nop -/* D54DBC 8024072C 45000057 */ bc1f .L8024088C -/* D54DC0 80240730 E624003C */ swc1 $f4, 0x3c($s1) -/* D54DC4 80240734 46002086 */ mov.s $f2, $f4 -/* D54DC8 80240738 C6200038 */ lwc1 $f0, 0x38($s1) -/* D54DCC 8024073C C6240040 */ lwc1 $f4, 0x40($s1) -/* D54DD0 80240740 C6260018 */ lwc1 $f6, 0x18($s1) -/* D54DD4 80240744 E7A20044 */ swc1 $f2, 0x44($sp) -/* D54DD8 80240748 E7A00040 */ swc1 $f0, 0x40($sp) -/* D54DDC 8024074C E7A40048 */ swc1 $f4, 0x48($sp) -/* D54DE0 80240750 E7A60010 */ swc1 $f6, 0x10($sp) -/* D54DE4 80240754 C620000C */ lwc1 $f0, 0xc($s1) -/* D54DE8 80240758 E7A00014 */ swc1 $f0, 0x14($sp) -/* D54DEC 8024075C 862200A8 */ lh $v0, 0xa8($s1) -/* D54DF0 80240760 27A50040 */ addiu $a1, $sp, 0x40 -/* D54DF4 80240764 44820000 */ mtc1 $v0, $f0 -/* D54DF8 80240768 00000000 */ nop -/* D54DFC 8024076C 46800020 */ cvt.s.w $f0, $f0 -/* D54E00 80240770 E7A00018 */ swc1 $f0, 0x18($sp) -/* D54E04 80240774 862200A6 */ lh $v0, 0xa6($s1) -/* D54E08 80240778 27A60044 */ addiu $a2, $sp, 0x44 -/* D54E0C 8024077C 44820000 */ mtc1 $v0, $f0 -/* D54E10 80240780 00000000 */ nop -/* D54E14 80240784 46800020 */ cvt.s.w $f0, $f0 -/* D54E18 80240788 E7A0001C */ swc1 $f0, 0x1c($sp) -/* D54E1C 8024078C 8E240080 */ lw $a0, 0x80($s1) -/* D54E20 80240790 0C037711 */ jal npc_test_move_simple_with_slipping -/* D54E24 80240794 27A70048 */ addiu $a3, $sp, 0x48 -/* D54E28 80240798 10400003 */ beqz $v0, .L802407A8 -/* D54E2C 8024079C 00000000 */ nop -/* D54E30 802407A0 0809021F */ j .L8024087C -/* D54E34 802407A4 AE200018 */ sw $zero, 0x18($s1) -.L802407A8: -/* D54E38 802407A8 C620001C */ lwc1 $f0, 0x1c($s1) -/* D54E3C 802407AC 3C01C004 */ lui $at, 0xc004 -/* D54E40 802407B0 44811800 */ mtc1 $at, $f3 -/* D54E44 802407B4 44801000 */ mtc1 $zero, $f2 -/* D54E48 802407B8 46000021 */ cvt.d.s $f0, $f0 -/* D54E4C 802407BC 4622003C */ c.lt.d $f0, $f2 -/* D54E50 802407C0 00000000 */ nop -/* D54E54 802407C4 4500002D */ bc1f .L8024087C -/* D54E58 802407C8 00000000 */ nop -/* D54E5C 802407CC 9622008E */ lhu $v0, 0x8e($s1) -/* D54E60 802407D0 24420001 */ addiu $v0, $v0, 1 -/* D54E64 802407D4 A622008E */ sh $v0, 0x8e($s1) -/* D54E68 802407D8 00021400 */ sll $v0, $v0, 0x10 -/* D54E6C 802407DC 8E830020 */ lw $v1, 0x20($s4) -/* D54E70 802407E0 00021403 */ sra $v0, $v0, 0x10 -/* D54E74 802407E4 0043102A */ slt $v0, $v0, $v1 -/* D54E78 802407E8 14400024 */ bnez $v0, .L8024087C -/* D54E7C 802407EC 00000000 */ nop -/* D54E80 802407F0 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D54E84 802407F4 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D54E88 802407F8 8EA60028 */ lw $a2, 0x28($s5) -/* D54E8C 802407FC 0C00A720 */ jal atan2 -/* D54E90 80240800 8EA70030 */ lw $a3, 0x30($s5) -/* D54E94 80240804 46000506 */ mov.s $f20, $f0 -/* D54E98 80240808 C62C000C */ lwc1 $f12, 0xc($s1) -/* D54E9C 8024080C 0C00A70A */ jal get_clamped_angle_diff -/* D54EA0 80240810 4600A386 */ mov.s $f14, $f20 -/* D54EA4 80240814 46000086 */ mov.s $f2, $f0 -/* D54EA8 80240818 8E82001C */ lw $v0, 0x1c($s4) -/* D54EAC 8024081C 46001005 */ abs.s $f0, $f2 -/* D54EB0 80240820 44822000 */ mtc1 $v0, $f4 -/* D54EB4 80240824 00000000 */ nop -/* D54EB8 80240828 46802120 */ cvt.s.w $f4, $f4 -/* D54EBC 8024082C 4600203C */ c.lt.s $f4, $f0 -/* D54EC0 80240830 00000000 */ nop -/* D54EC4 80240834 4500000D */ bc1f .L8024086C -/* D54EC8 80240838 00000000 */ nop -/* D54ECC 8024083C 44800000 */ mtc1 $zero, $f0 -/* D54ED0 80240840 C634000C */ lwc1 $f20, 0xc($s1) -/* D54ED4 80240844 4600103C */ c.lt.s $f2, $f0 -/* D54ED8 80240848 00000000 */ nop -/* D54EDC 8024084C 45000006 */ bc1f .L80240868 -/* D54EE0 80240850 00021023 */ negu $v0, $v0 -/* D54EE4 80240854 44820000 */ mtc1 $v0, $f0 -/* D54EE8 80240858 00000000 */ nop -/* D54EEC 8024085C 46800020 */ cvt.s.w $f0, $f0 -/* D54EF0 80240860 0809021B */ j .L8024086C -/* D54EF4 80240864 4600A500 */ add.s $f20, $f20, $f0 -.L80240868: -/* D54EF8 80240868 4604A500 */ add.s $f20, $f20, $f4 -.L8024086C: -/* D54EFC 8024086C 0C00A6C9 */ jal clamp_angle -/* D54F00 80240870 4600A306 */ mov.s $f12, $f20 -/* D54F04 80240874 E620000C */ swc1 $f0, 0xc($s1) -/* D54F08 80240878 A620008E */ sh $zero, 0x8e($s1) -.L8024087C: -/* D54F0C 8024087C 8E250018 */ lw $a1, 0x18($s1) -/* D54F10 80240880 8E26000C */ lw $a2, 0xc($s1) -/* D54F14 80240884 0C00EA95 */ jal npc_move_heading -/* D54F18 80240888 0220202D */ daddu $a0, $s1, $zero -.L8024088C: -/* D54F1C 8024088C 8E42006C */ lw $v0, 0x6c($s2) -/* D54F20 80240890 2442FFFF */ addiu $v0, $v0, -1 -/* D54F24 80240894 1C400003 */ bgtz $v0, .L802408A4 -/* D54F28 80240898 AE42006C */ sw $v0, 0x6c($s2) -/* D54F2C 8024089C 24020005 */ addiu $v0, $zero, 5 -/* D54F30 802408A0 AE42006C */ sw $v0, 0x6c($s2) -.L802408A4: -/* D54F34 802408A4 C620003C */ lwc1 $f0, 0x3c($s1) -/* D54F38 802408A8 C6220068 */ lwc1 $f2, 0x68($s1) -/* D54F3C 802408AC 4600103C */ c.lt.s $f2, $f0 -/* D54F40 802408B0 00000000 */ nop -/* D54F44 802408B4 45000015 */ bc1f .L8024090C_D54F9C -/* D54F48 802408B8 2402000E */ addiu $v0, $zero, 0xe -/* D54F4C 802408BC E622003C */ swc1 $f2, 0x3c($s1) -/* D54F50 802408C0 AE620070 */ sw $v0, 0x70($s3) -.L802408C4_D54F54: -/* D54F54 802408C4 8E4200CC */ lw $v0, 0xcc($s2) -/* D54F58 802408C8 922300A9 */ lbu $v1, 0xa9($s1) -/* D54F5C 802408CC 8C440020 */ lw $a0, 0x20($v0) -/* D54F60 802408D0 8E220000 */ lw $v0, ($s1) -/* D54F64 802408D4 A22300AB */ sb $v1, 0xab($s1) -/* D54F68 802408D8 34420080 */ ori $v0, $v0, 0x80 -/* D54F6C 802408DC AE220000 */ sw $v0, ($s1) -/* D54F70 802408E0 2402000F */ addiu $v0, $zero, 0xf -/* D54F74 802408E4 A622008E */ sh $v0, 0x8e($s1) -/* D54F78 802408E8 2402000F */ addiu $v0, $zero, 0xf -/* D54F7C 802408EC AE240028 */ sw $a0, 0x28($s1) -/* D54F80 802408F0 AE620070 */ sw $v0, 0x70($s3) -.L802408F4_D54F84: -/* D54F84 802408F4 9622008E */ lhu $v0, 0x8e($s1) -/* D54F88 802408F8 2442FFFF */ addiu $v0, $v0, -1 -/* D54F8C 802408FC A622008E */ sh $v0, 0x8e($s1) -/* D54F90 80240900 00021400 */ sll $v0, $v0, 0x10 -/* D54F94 80240904 58400001 */ blezl $v0, .L8024090C_D54F9C -/* D54F98 80240908 AE600070 */ sw $zero, 0x70($s3) -.L8024090C_D54F9C: -/* D54F9C 8024090C 0000102D */ daddu $v0, $zero, $zero -.L80240910: -/* D54FA0 80240910 8FBF006C */ lw $ra, 0x6c($sp) -/* D54FA4 80240914 8FB60068 */ lw $s6, 0x68($sp) -/* D54FA8 80240918 8FB50064 */ lw $s5, 0x64($sp) -/* D54FAC 8024091C 8FB40060 */ lw $s4, 0x60($sp) -/* D54FB0 80240920 8FB3005C */ lw $s3, 0x5c($sp) -/* D54FB4 80240924 8FB20058 */ lw $s2, 0x58($sp) -/* D54FB8 80240928 8FB10054 */ lw $s1, 0x54($sp) -/* D54FBC 8024092C 8FB00050 */ lw $s0, 0x50($sp) -/* D54FC0 80240930 D7B40070 */ ldc1 $f20, 0x70($sp) -/* D54FC4 80240934 03E00008 */ jr $ra -/* D54FC8 80240938 27BD0078 */ addiu $sp, $sp, 0x78 -/* D54FCC 8024093C 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_pra/pra_10/D5F2D0/func_80240F20_D601D0.s b/ver/us/asm/nonmatchings/world/area_pra/pra_10/D5F2D0/func_80240F20_D601D0.s deleted file mode 100644 index 1e2ef9aaf5..0000000000 --- a/ver/us/asm/nonmatchings/world/area_pra/pra_10/D5F2D0/func_80240F20_D601D0.s +++ /dev/null @@ -1,529 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_80242200_D614B0 -.word .L80241080_D60330, .L802410AC_D6035C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L8024167C_D6092C, .L80241118_D603C8, .L8024121C_D604CC, .L80241304_D605B4, .L80241410_D606C0, .L80241634_D608E4, .L80241664_D60914 - -dlabel D_80242240_D614F0 -.double 0.7 - -dlabel D_80242248_D614F8 -.double 0.7 - -.section .text - -glabel func_80240F20_D601D0 -/* D601D0 80240F20 27BDFF88 */ addiu $sp, $sp, -0x78 -/* D601D4 80240F24 AFB3005C */ sw $s3, 0x5c($sp) -/* D601D8 80240F28 0080982D */ daddu $s3, $a0, $zero -/* D601DC 80240F2C AFBF006C */ sw $ra, 0x6c($sp) -/* D601E0 80240F30 AFB60068 */ sw $s6, 0x68($sp) -/* D601E4 80240F34 AFB50064 */ sw $s5, 0x64($sp) -/* D601E8 80240F38 AFB40060 */ sw $s4, 0x60($sp) -/* D601EC 80240F3C AFB20058 */ sw $s2, 0x58($sp) -/* D601F0 80240F40 AFB10054 */ sw $s1, 0x54($sp) -/* D601F4 80240F44 AFB00050 */ sw $s0, 0x50($sp) -/* D601F8 80240F48 F7B40070 */ sdc1 $f20, 0x70($sp) -/* D601FC 80240F4C 8E720148 */ lw $s2, 0x148($s3) -/* D60200 80240F50 86440008 */ lh $a0, 8($s2) -/* D60204 80240F54 0C00EABB */ jal get_npc_unsafe -/* D60208 80240F58 00A0802D */ daddu $s0, $a1, $zero -/* D6020C 80240F5C 8E63000C */ lw $v1, 0xc($s3) -/* D60210 80240F60 0260202D */ daddu $a0, $s3, $zero -/* D60214 80240F64 8C650000 */ lw $a1, ($v1) -/* D60218 80240F68 0C0B1EAF */ jal evt_get_variable -/* D6021C 80240F6C 0040882D */ daddu $s1, $v0, $zero -/* D60220 80240F70 AFA00020 */ sw $zero, 0x20($sp) -/* D60224 80240F74 8E4300D0 */ lw $v1, 0xd0($s2) -/* D60228 80240F78 8C630030 */ lw $v1, 0x30($v1) -/* D6022C 80240F7C AFA30024 */ sw $v1, 0x24($sp) -/* D60230 80240F80 8E4300D0 */ lw $v1, 0xd0($s2) -/* D60234 80240F84 8C63001C */ lw $v1, 0x1c($v1) -/* D60238 80240F88 AFA30028 */ sw $v1, 0x28($sp) -/* D6023C 80240F8C 8E4300D0 */ lw $v1, 0xd0($s2) -/* D60240 80240F90 8C630024 */ lw $v1, 0x24($v1) -/* D60244 80240F94 AFA3002C */ sw $v1, 0x2c($sp) -/* D60248 80240F98 8E4300D0 */ lw $v1, 0xd0($s2) -/* D6024C 80240F9C 3C158011 */ lui $s5, %hi(gPlayerStatus) -/* D60250 80240FA0 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus) -/* D60254 80240FA4 8C630028 */ lw $v1, 0x28($v1) -/* D60258 80240FA8 27B60020 */ addiu $s6, $sp, 0x20 -/* D6025C 80240FAC AFA30030 */ sw $v1, 0x30($sp) -/* D60260 80240FB0 8E4300D0 */ lw $v1, 0xd0($s2) -/* D60264 80240FB4 3C0143FA */ lui $at, 0x43fa -/* D60268 80240FB8 44810000 */ mtc1 $at, $f0 -/* D6026C 80240FBC 8C63002C */ lw $v1, 0x2c($v1) -/* D60270 80240FC0 0040A02D */ daddu $s4, $v0, $zero -/* D60274 80240FC4 E7A00038 */ swc1 $f0, 0x38($sp) -/* D60278 80240FC8 A7A0003C */ sh $zero, 0x3c($sp) -/* D6027C 80240FCC 12000019 */ beqz $s0, .L80241034 -/* D60280 80240FD0 AFA30034 */ sw $v1, 0x34($sp) -/* D60284 80240FD4 27A50040 */ addiu $a1, $sp, 0x40 -/* D60288 80240FD8 27A60044 */ addiu $a2, $sp, 0x44 -/* D6028C 80240FDC AE600070 */ sw $zero, 0x70($s3) -/* D60290 80240FE0 A620008E */ sh $zero, 0x8e($s1) -/* D60294 80240FE4 8E4200B0 */ lw $v0, 0xb0($s2) -/* D60298 80240FE8 3C01447A */ lui $at, 0x447a -/* D6029C 80240FEC 44810000 */ mtc1 $at, $f0 -/* D602A0 80240FF0 34420010 */ ori $v0, $v0, 0x10 -/* D602A4 80240FF4 AE4200B0 */ sw $v0, 0xb0($s2) -/* D602A8 80240FF8 C6220038 */ lwc1 $f2, 0x38($s1) -/* D602AC 80240FFC C624003C */ lwc1 $f4, 0x3c($s1) -/* D602B0 80241000 C6260040 */ lwc1 $f6, 0x40($s1) -/* D602B4 80241004 27A2004C */ addiu $v0, $sp, 0x4c -/* D602B8 80241008 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D602BC 8024100C E7A20040 */ swc1 $f2, 0x40($sp) -/* D602C0 80241010 E7A40044 */ swc1 $f4, 0x44($sp) -/* D602C4 80241014 E7A60048 */ swc1 $f6, 0x48($sp) -/* D602C8 80241018 AFA20010 */ sw $v0, 0x10($sp) -/* D602CC 8024101C 8E240080 */ lw $a0, 0x80($s1) -/* D602D0 80241020 0C0372DF */ jal npc_raycast_down_sides -/* D602D4 80241024 27A70048 */ addiu $a3, $sp, 0x48 -/* D602D8 80241028 C7A00044 */ lwc1 $f0, 0x44($sp) -/* D602DC 8024102C 4600028D */ trunc.w.s $f10, $f0 -/* D602E0 80241030 E64A0070 */ swc1 $f10, 0x70($s2) -.L80241034: -/* D602E4 80241034 8E4300B0 */ lw $v1, 0xb0($s2) -/* D602E8 80241038 30620004 */ andi $v0, $v1, 4 -/* D602EC 8024103C 10400007 */ beqz $v0, .L8024105C -/* D602F0 80241040 00000000 */ nop -/* D602F4 80241044 824200B4 */ lb $v0, 0xb4($s2) -/* D602F8 80241048 1440018D */ bnez $v0, .L80241680 -/* D602FC 8024104C 0000102D */ daddu $v0, $zero, $zero -/* D60300 80241050 2402FFFB */ addiu $v0, $zero, -5 -/* D60304 80241054 00621024 */ and $v0, $v1, $v0 -/* D60308 80241058 AE4200B0 */ sw $v0, 0xb0($s2) -.L8024105C: -/* D6030C 8024105C 8E630070 */ lw $v1, 0x70($s3) -/* D60310 80241060 2C620010 */ sltiu $v0, $v1, 0x10 -/* D60314 80241064 10400185 */ beqz $v0, .L8024167C_D6092C -/* D60318 80241068 00031080 */ sll $v0, $v1, 2 -/* D6031C 8024106C 3C018024 */ lui $at, %hi(jtbl_80242200_D614B0) -/* D60320 80241070 00220821 */ addu $at, $at, $v0 -/* D60324 80241074 8C222200 */ lw $v0, %lo(jtbl_80242200_D614B0)($at) -/* D60328 80241078 00400008 */ jr $v0 -/* D6032C 8024107C 00000000 */ nop -.L80241080_D60330: -/* D60330 80241080 8E4200CC */ lw $v0, 0xcc($s2) -/* D60334 80241084 922300A9 */ lbu $v1, 0xa9($s1) -/* D60338 80241088 8C440000 */ lw $a0, ($v0) -/* D6033C 8024108C 8E220000 */ lw $v0, ($s1) -/* D60340 80241090 A22300AB */ sb $v1, 0xab($s1) -/* D60344 80241094 34420080 */ ori $v0, $v0, 0x80 -/* D60348 80241098 AE220000 */ sw $v0, ($s1) -/* D6034C 8024109C 24020001 */ addiu $v0, $zero, 1 -/* D60350 802410A0 AE240028 */ sw $a0, 0x28($s1) -/* D60354 802410A4 AE600074 */ sw $zero, 0x74($s3) -/* D60358 802410A8 AE620070 */ sw $v0, 0x70($s3) -.L802410AC_D6035C: -/* D6035C 802410AC 8E830014 */ lw $v1, 0x14($s4) -/* D60360 802410B0 04600015 */ bltz $v1, .L80241108 -/* D60364 802410B4 00000000 */ nop -/* D60368 802410B8 8E620074 */ lw $v0, 0x74($s3) -/* D6036C 802410BC 1C400011 */ bgtz $v0, .L80241104 -/* D60370 802410C0 2442FFFF */ addiu $v0, $v0, -1 -/* D60374 802410C4 02C0202D */ daddu $a0, $s6, $zero -/* D60378 802410C8 AE630074 */ sw $v1, 0x74($s3) -/* D6037C 802410CC AFA00010 */ sw $zero, 0x10($sp) -/* D60380 802410D0 8E86000C */ lw $a2, 0xc($s4) -/* D60384 802410D4 8E870010 */ lw $a3, 0x10($s4) -/* D60388 802410D8 0C01242D */ jal basic_ai_check_player_dist -/* D6038C 802410DC 0240282D */ daddu $a1, $s2, $zero -/* D60390 802410E0 10400006 */ beqz $v0, .L802410FC -/* D60394 802410E4 0220202D */ daddu $a0, $s1, $zero -/* D60398 802410E8 240502F4 */ addiu $a1, $zero, 0x2f4 -/* D6039C 802410EC 0C012530 */ jal ai_enemy_play_sound -/* D603A0 802410F0 3C060020 */ lui $a2, 0x20 -/* D603A4 802410F4 2402000A */ addiu $v0, $zero, 0xa -/* D603A8 802410F8 AE620070 */ sw $v0, 0x70($s3) -.L802410FC: -/* D603AC 802410FC 8E620074 */ lw $v0, 0x74($s3) -/* D603B0 80241100 2442FFFF */ addiu $v0, $v0, -1 -.L80241104: -/* D603B4 80241104 AE620074 */ sw $v0, 0x74($s3) -.L80241108: -/* D603B8 80241108 8E630070 */ lw $v1, 0x70($s3) -/* D603BC 8024110C 2402000A */ addiu $v0, $zero, 0xa -/* D603C0 80241110 1462015B */ bne $v1, $v0, .L80241680 -/* D603C4 80241114 0000102D */ daddu $v0, $zero, $zero -.L80241118_D603C8: -/* D603C8 80241118 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D603CC 8024111C 8E4200CC */ lw $v0, 0xcc($s2) -/* D603D0 80241120 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D603D4 80241124 8C42000C */ lw $v0, 0xc($v0) -/* D603D8 80241128 AE220028 */ sw $v0, 0x28($s1) -/* D603DC 8024112C 8EA60028 */ lw $a2, 0x28($s5) -/* D603E0 80241130 0C00A720 */ jal atan2 -/* D603E4 80241134 8EA70030 */ lw $a3, 0x30($s5) -/* D603E8 80241138 3C013FA6 */ lui $at, 0x3fa6 -/* D603EC 8024113C 34216666 */ ori $at, $at, 0x6666 -/* D603F0 80241140 44811000 */ mtc1 $at, $f2 -/* D603F4 80241144 27A50040 */ addiu $a1, $sp, 0x40 -/* D603F8 80241148 E6200010 */ swc1 $f0, 0x10($s1) -/* D603FC 8024114C C6200038 */ lwc1 $f0, 0x38($s1) -/* D60400 80241150 C6240040 */ lwc1 $f4, 0x40($s1) -/* D60404 80241154 3C01447A */ lui $at, 0x447a -/* D60408 80241158 44813000 */ mtc1 $at, $f6 -/* D6040C 8024115C 27A60044 */ addiu $a2, $sp, 0x44 -/* D60410 80241160 AE20001C */ sw $zero, 0x1c($s1) -/* D60414 80241164 E6220014 */ swc1 $f2, 0x14($s1) -/* D60418 80241168 C6880000 */ lwc1 $f8, ($s4) -/* D6041C 8024116C C622003C */ lwc1 $f2, 0x3c($s1) -/* D60420 80241170 27A2004C */ addiu $v0, $sp, 0x4c -/* D60424 80241174 E7A00040 */ swc1 $f0, 0x40($sp) -/* D60428 80241178 E7A40048 */ swc1 $f4, 0x48($sp) -/* D6042C 8024117C E7A6004C */ swc1 $f6, 0x4c($sp) -/* D60430 80241180 E7A20044 */ swc1 $f2, 0x44($sp) -/* D60434 80241184 E6280018 */ swc1 $f8, 0x18($s1) -/* D60438 80241188 AFA20010 */ sw $v0, 0x10($sp) -/* D6043C 8024118C 8E240080 */ lw $a0, 0x80($s1) -/* D60440 80241190 0C0372DF */ jal npc_raycast_down_sides -/* D60444 80241194 27A70048 */ addiu $a3, $sp, 0x48 -/* D60448 80241198 10400010 */ beqz $v0, .L802411DC -/* D6044C 8024119C 00000000 */ nop -/* D60450 802411A0 C620003C */ lwc1 $f0, 0x3c($s1) -/* D60454 802411A4 C6440070 */ lwc1 $f4, 0x70($s2) -/* D60458 802411A8 46802120 */ cvt.s.w $f4, $f4 -/* D6045C 802411AC 46040001 */ sub.s $f0, $f0, $f4 -/* D60460 802411B0 3C018024 */ lui $at, %hi(D_80242240_D614F0) -/* D60464 802411B4 D4222240 */ ldc1 $f2, %lo(D_80242240_D614F0)($at) -/* D60468 802411B8 46000021 */ cvt.d.s $f0, $f0 -/* D6046C 802411BC 46220002 */ mul.d $f0, $f0, $f2 -/* D60470 802411C0 00000000 */ nop -/* D60474 802411C4 460020A1 */ cvt.d.s $f2, $f4 -/* D60478 802411C8 46201080 */ add.d $f2, $f2, $f0 -/* D6047C 802411CC E7A40044 */ swc1 $f4, 0x44($sp) -/* D60480 802411D0 462010A0 */ cvt.s.d $f2, $f2 -/* D60484 802411D4 08090483 */ j .L8024120C -/* D60488 802411D8 E6220064 */ swc1 $f2, 0x64($s1) -.L802411DC: -/* D6048C 802411DC C6A0002C */ lwc1 $f0, 0x2c($s5) -/* D60490 802411E0 C622003C */ lwc1 $f2, 0x3c($s1) -/* D60494 802411E4 46001081 */ sub.s $f2, $f2, $f0 -/* D60498 802411E8 3C018024 */ lui $at, %hi(D_80242248_D614F8) -/* D6049C 802411EC D4242248 */ ldc1 $f4, %lo(D_80242248_D614F8)($at) -/* D604A0 802411F0 460010A1 */ cvt.d.s $f2, $f2 -/* D604A4 802411F4 46241082 */ mul.d $f2, $f2, $f4 -/* D604A8 802411F8 00000000 */ nop -/* D604AC 802411FC 46000021 */ cvt.d.s $f0, $f0 -/* D604B0 80241200 46220000 */ add.d $f0, $f0, $f2 -/* D604B4 80241204 46200020 */ cvt.s.d $f0, $f0 -/* D604B8 80241208 E6200064 */ swc1 $f0, 0x64($s1) -.L8024120C: -/* D604BC 8024120C C620003C */ lwc1 $f0, 0x3c($s1) -/* D604C0 80241210 2402000B */ addiu $v0, $zero, 0xb -/* D604C4 80241214 E6200068 */ swc1 $f0, 0x68($s1) -/* D604C8 80241218 AE620070 */ sw $v0, 0x70($s3) -.L8024121C_D604CC: -/* D604CC 8024121C C6200018 */ lwc1 $f0, 0x18($s1) -/* D604D0 80241220 44801000 */ mtc1 $zero, $f2 -/* D604D4 80241224 44801800 */ mtc1 $zero, $f3 -/* D604D8 80241228 46000021 */ cvt.d.s $f0, $f0 -/* D604DC 8024122C 4620103C */ c.lt.d $f2, $f0 -/* D604E0 80241230 00000000 */ nop -/* D604E4 80241234 45000025 */ bc1f .L802412CC -/* D604E8 80241238 27A50040 */ addiu $a1, $sp, 0x40 -/* D604EC 8024123C C6200038 */ lwc1 $f0, 0x38($s1) -/* D604F0 80241240 C622003C */ lwc1 $f2, 0x3c($s1) -/* D604F4 80241244 C6240040 */ lwc1 $f4, 0x40($s1) -/* D604F8 80241248 C6260018 */ lwc1 $f6, 0x18($s1) -/* D604FC 8024124C E7A00040 */ swc1 $f0, 0x40($sp) -/* D60500 80241250 E7A20044 */ swc1 $f2, 0x44($sp) -/* D60504 80241254 E7A40048 */ swc1 $f4, 0x48($sp) -/* D60508 80241258 E7A60010 */ swc1 $f6, 0x10($sp) -/* D6050C 8024125C C620000C */ lwc1 $f0, 0xc($s1) -/* D60510 80241260 E7A00014 */ swc1 $f0, 0x14($sp) -/* D60514 80241264 862200A8 */ lh $v0, 0xa8($s1) -/* D60518 80241268 44820000 */ mtc1 $v0, $f0 -/* D6051C 8024126C 00000000 */ nop -/* D60520 80241270 46800020 */ cvt.s.w $f0, $f0 -/* D60524 80241274 E7A00018 */ swc1 $f0, 0x18($sp) -/* D60528 80241278 862200A6 */ lh $v0, 0xa6($s1) -/* D6052C 8024127C 27A60044 */ addiu $a2, $sp, 0x44 -/* D60530 80241280 44820000 */ mtc1 $v0, $f0 -/* D60534 80241284 00000000 */ nop -/* D60538 80241288 46800020 */ cvt.s.w $f0, $f0 -/* D6053C 8024128C E7A0001C */ swc1 $f0, 0x1c($sp) -/* D60540 80241290 8E240080 */ lw $a0, 0x80($s1) -/* D60544 80241294 0C037711 */ jal npc_test_move_simple_with_slipping -/* D60548 80241298 27A70048 */ addiu $a3, $sp, 0x48 -/* D6054C 8024129C 54400001 */ bnel $v0, $zero, .L802412A4 -/* D60550 802412A0 AE200018 */ sw $zero, 0x18($s1) -.L802412A4: -/* D60554 802412A4 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D60558 802412A8 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D6055C 802412AC 8EA60028 */ lw $a2, 0x28($s5) -/* D60560 802412B0 0C00A720 */ jal atan2 -/* D60564 802412B4 8EA70030 */ lw $a3, 0x30($s5) -/* D60568 802412B8 8E250018 */ lw $a1, 0x18($s1) -/* D6056C 802412BC 44060000 */ mfc1 $a2, $f0 -/* D60570 802412C0 0220202D */ daddu $a0, $s1, $zero -/* D60574 802412C4 0C00EA95 */ jal npc_move_heading -/* D60578 802412C8 AE26000C */ sw $a2, 0xc($s1) -.L802412CC: -/* D6057C 802412CC C620001C */ lwc1 $f0, 0x1c($s1) -/* D60580 802412D0 C6220014 */ lwc1 $f2, 0x14($s1) -/* D60584 802412D4 46020001 */ sub.s $f0, $f0, $f2 -/* D60588 802412D8 C622003C */ lwc1 $f2, 0x3c($s1) -/* D6058C 802412DC C6240064 */ lwc1 $f4, 0x64($s1) -/* D60590 802412E0 46001080 */ add.s $f2, $f2, $f0 -/* D60594 802412E4 E620001C */ swc1 $f0, 0x1c($s1) -/* D60598 802412E8 4604103C */ c.lt.s $f2, $f4 -/* D6059C 802412EC 00000000 */ nop -/* D605A0 802412F0 450000E2 */ bc1f .L8024167C_D6092C -/* D605A4 802412F4 E622003C */ swc1 $f2, 0x3c($s1) -/* D605A8 802412F8 2402000C */ addiu $v0, $zero, 0xc -/* D605AC 802412FC E624003C */ swc1 $f4, 0x3c($s1) -/* D605B0 80241300 AE620070 */ sw $v0, 0x70($s3) -.L80241304_D605B4: -/* D605B4 80241304 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D605B8 80241308 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D605BC 8024130C 8EA60028 */ lw $a2, 0x28($s5) -/* D605C0 80241310 0C00A7B5 */ jal dist2D -/* D605C4 80241314 8EA70030 */ lw $a3, 0x30($s5) -/* D605C8 80241318 3C014270 */ lui $at, 0x4270 -/* D605CC 8024131C 44811000 */ mtc1 $at, $f2 -/* D605D0 80241320 00000000 */ nop -/* D605D4 80241324 4602003C */ c.lt.s $f0, $f2 -/* D605D8 80241328 00000000 */ nop -/* D605DC 8024132C 45000002 */ bc1f .L80241338 -/* D605E0 80241330 E6200010 */ swc1 $f0, 0x10($s1) -/* D605E4 80241334 E6220010 */ swc1 $f2, 0x10($s1) -.L80241338: -/* D605E8 80241338 C6860018 */ lwc1 $f6, 0x18($s4) -/* D605EC 8024133C C6400070 */ lwc1 $f0, 0x70($s2) -/* D605F0 80241340 46800020 */ cvt.s.w $f0, $f0 -/* D605F4 80241344 E7A00044 */ swc1 $f0, 0x44($sp) -/* D605F8 80241348 46000021 */ cvt.d.s $f0, $f0 -/* D605FC 8024134C C6240010 */ lwc1 $f4, 0x10($s1) -/* D60600 80241350 3C014024 */ lui $at, 0x4024 -/* D60604 80241354 44811800 */ mtc1 $at, $f3 -/* D60608 80241358 44801000 */ mtc1 $zero, $f2 -/* D6060C 8024135C 46062103 */ div.s $f4, $f4, $f6 -/* D60610 80241360 46220000 */ add.d $f0, $f0, $f2 -/* D60614 80241364 C622003C */ lwc1 $f2, 0x3c($s1) -/* D60618 80241368 4600228D */ trunc.w.s $f10, $f4 -/* D6061C 8024136C 44025000 */ mfc1 $v0, $f10 -/* D60620 80241370 00000000 */ nop -/* D60624 80241374 A622008E */ sh $v0, 0x8e($s1) -/* D60628 80241378 460010A1 */ cvt.d.s $f2, $f2 -/* D6062C 8024137C 46220001 */ sub.d $f0, $f0, $f2 -/* D60630 80241380 00021400 */ sll $v0, $v0, 0x10 -/* D60634 80241384 E6260018 */ swc1 $f6, 0x18($s1) -/* D60638 80241388 14400003 */ bnez $v0, .L80241398 -/* D6063C 8024138C 46200120 */ cvt.s.d $f4, $f0 -/* D60640 80241390 24020001 */ addiu $v0, $zero, 1 -/* D60644 80241394 A622008E */ sh $v0, 0x8e($s1) -.L80241398: -/* D60648 80241398 8622008E */ lh $v0, 0x8e($s1) -/* D6064C 8024139C C620001C */ lwc1 $f0, 0x1c($s1) -/* D60650 802413A0 44821000 */ mtc1 $v0, $f2 -/* D60654 802413A4 00000000 */ nop -/* D60658 802413A8 468010A0 */ cvt.s.w $f2, $f2 -/* D6065C 802413AC 46000007 */ neg.s $f0, $f0 -/* D60660 802413B0 46020002 */ mul.s $f0, $f0, $f2 -/* D60664 802413B4 00000000 */ nop -/* D60668 802413B8 00420018 */ mult $v0, $v0 -/* D6066C 802413BC 8E230000 */ lw $v1, ($s1) -/* D60670 802413C0 46040000 */ add.s $f0, $f0, $f4 -/* D60674 802413C4 A22000AB */ sb $zero, 0xab($s1) -/* D60678 802413C8 2402FF7F */ addiu $v0, $zero, -0x81 -/* D6067C 802413CC 00004012 */ mflo $t0 -/* D60680 802413D0 00621824 */ and $v1, $v1, $v0 -/* D60684 802413D4 24020005 */ addiu $v0, $zero, 5 -/* D60688 802413D8 46000000 */ add.s $f0, $f0, $f0 -/* D6068C 802413DC AE230000 */ sw $v1, ($s1) -/* D60690 802413E0 44881000 */ mtc1 $t0, $f2 -/* D60694 802413E4 00000000 */ nop -/* D60698 802413E8 468010A0 */ cvt.s.w $f2, $f2 -/* D6069C 802413EC 46000007 */ neg.s $f0, $f0 -/* D606A0 802413F0 46020003 */ div.s $f0, $f0, $f2 -/* D606A4 802413F4 46000005 */ abs.s $f0, $f0 -/* D606A8 802413F8 46000007 */ neg.s $f0, $f0 -/* D606AC 802413FC E6200014 */ swc1 $f0, 0x14($s1) -/* D606B0 80241400 AE42006C */ sw $v0, 0x6c($s2) -/* D606B4 80241404 2402000D */ addiu $v0, $zero, 0xd -/* D606B8 80241408 A620008E */ sh $zero, 0x8e($s1) -/* D606BC 8024140C AE620070 */ sw $v0, 0x70($s3) -.L80241410_D606C0: -/* D606C0 80241410 C620001C */ lwc1 $f0, 0x1c($s1) -/* D606C4 80241414 C6220014 */ lwc1 $f2, 0x14($s1) -/* D606C8 80241418 46020001 */ sub.s $f0, $f0, $f2 -/* D606CC 8024141C 4480A000 */ mtc1 $zero, $f20 -/* D606D0 80241420 00000000 */ nop -/* D606D4 80241424 4614003C */ c.lt.s $f0, $f20 -/* D606D8 80241428 00000000 */ nop -/* D606DC 8024142C 45000012 */ bc1f .L80241478 -/* D606E0 80241430 E620001C */ swc1 $f0, 0x1c($s1) -/* D606E4 80241434 27A50040 */ addiu $a1, $sp, 0x40 -/* D606E8 80241438 27A60044 */ addiu $a2, $sp, 0x44 -/* D606EC 8024143C 27A2004C */ addiu $v0, $sp, 0x4c -/* D606F0 80241440 C6220038 */ lwc1 $f2, 0x38($s1) -/* D606F4 80241444 C624003C */ lwc1 $f4, 0x3c($s1) -/* D606F8 80241448 C6260040 */ lwc1 $f6, 0x40($s1) -/* D606FC 8024144C 46000007 */ neg.s $f0, $f0 -/* D60700 80241450 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D60704 80241454 E7A20040 */ swc1 $f2, 0x40($sp) -/* D60708 80241458 E7A40044 */ swc1 $f4, 0x44($sp) -/* D6070C 8024145C E7A60048 */ swc1 $f6, 0x48($sp) -/* D60710 80241460 AFA20010 */ sw $v0, 0x10($sp) -/* D60714 80241464 8E240080 */ lw $a0, 0x80($s1) -/* D60718 80241468 0C0372DF */ jal npc_raycast_down_sides -/* D6071C 8024146C 27A70048 */ addiu $a3, $sp, 0x48 -/* D60720 80241470 54400001 */ bnel $v0, $zero, .L80241478 -/* D60724 80241474 E634001C */ swc1 $f20, 0x1c($s1) -.L80241478: -/* D60728 80241478 C624003C */ lwc1 $f4, 0x3c($s1) -/* D6072C 8024147C C620001C */ lwc1 $f0, 0x1c($s1) -/* D60730 80241480 46002100 */ add.s $f4, $f4, $f0 -/* D60734 80241484 C6200018 */ lwc1 $f0, 0x18($s1) -/* D60738 80241488 44801000 */ mtc1 $zero, $f2 -/* D6073C 8024148C 44801800 */ mtc1 $zero, $f3 -/* D60740 80241490 46000021 */ cvt.d.s $f0, $f0 -/* D60744 80241494 4620103C */ c.lt.d $f2, $f0 -/* D60748 80241498 00000000 */ nop -/* D6074C 8024149C 45000057 */ bc1f .L802415FC -/* D60750 802414A0 E624003C */ swc1 $f4, 0x3c($s1) -/* D60754 802414A4 46002086 */ mov.s $f2, $f4 -/* D60758 802414A8 C6200038 */ lwc1 $f0, 0x38($s1) -/* D6075C 802414AC C6240040 */ lwc1 $f4, 0x40($s1) -/* D60760 802414B0 C6260018 */ lwc1 $f6, 0x18($s1) -/* D60764 802414B4 E7A20044 */ swc1 $f2, 0x44($sp) -/* D60768 802414B8 E7A00040 */ swc1 $f0, 0x40($sp) -/* D6076C 802414BC E7A40048 */ swc1 $f4, 0x48($sp) -/* D60770 802414C0 E7A60010 */ swc1 $f6, 0x10($sp) -/* D60774 802414C4 C620000C */ lwc1 $f0, 0xc($s1) -/* D60778 802414C8 E7A00014 */ swc1 $f0, 0x14($sp) -/* D6077C 802414CC 862200A8 */ lh $v0, 0xa8($s1) -/* D60780 802414D0 27A50040 */ addiu $a1, $sp, 0x40 -/* D60784 802414D4 44820000 */ mtc1 $v0, $f0 -/* D60788 802414D8 00000000 */ nop -/* D6078C 802414DC 46800020 */ cvt.s.w $f0, $f0 -/* D60790 802414E0 E7A00018 */ swc1 $f0, 0x18($sp) -/* D60794 802414E4 862200A6 */ lh $v0, 0xa6($s1) -/* D60798 802414E8 27A60044 */ addiu $a2, $sp, 0x44 -/* D6079C 802414EC 44820000 */ mtc1 $v0, $f0 -/* D607A0 802414F0 00000000 */ nop -/* D607A4 802414F4 46800020 */ cvt.s.w $f0, $f0 -/* D607A8 802414F8 E7A0001C */ swc1 $f0, 0x1c($sp) -/* D607AC 802414FC 8E240080 */ lw $a0, 0x80($s1) -/* D607B0 80241500 0C037711 */ jal npc_test_move_simple_with_slipping -/* D607B4 80241504 27A70048 */ addiu $a3, $sp, 0x48 -/* D607B8 80241508 10400003 */ beqz $v0, .L80241518 -/* D607BC 8024150C 00000000 */ nop -/* D607C0 80241510 0809057B */ j .L802415EC -/* D607C4 80241514 AE200018 */ sw $zero, 0x18($s1) -.L80241518: -/* D607C8 80241518 C620001C */ lwc1 $f0, 0x1c($s1) -/* D607CC 8024151C 3C01C004 */ lui $at, 0xc004 -/* D607D0 80241520 44811800 */ mtc1 $at, $f3 -/* D607D4 80241524 44801000 */ mtc1 $zero, $f2 -/* D607D8 80241528 46000021 */ cvt.d.s $f0, $f0 -/* D607DC 8024152C 4622003C */ c.lt.d $f0, $f2 -/* D607E0 80241530 00000000 */ nop -/* D607E4 80241534 4500002D */ bc1f .L802415EC -/* D607E8 80241538 00000000 */ nop -/* D607EC 8024153C 9622008E */ lhu $v0, 0x8e($s1) -/* D607F0 80241540 24420001 */ addiu $v0, $v0, 1 -/* D607F4 80241544 A622008E */ sh $v0, 0x8e($s1) -/* D607F8 80241548 00021400 */ sll $v0, $v0, 0x10 -/* D607FC 8024154C 8E830020 */ lw $v1, 0x20($s4) -/* D60800 80241550 00021403 */ sra $v0, $v0, 0x10 -/* D60804 80241554 0043102A */ slt $v0, $v0, $v1 -/* D60808 80241558 14400024 */ bnez $v0, .L802415EC -/* D6080C 8024155C 00000000 */ nop -/* D60810 80241560 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D60814 80241564 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D60818 80241568 8EA60028 */ lw $a2, 0x28($s5) -/* D6081C 8024156C 0C00A720 */ jal atan2 -/* D60820 80241570 8EA70030 */ lw $a3, 0x30($s5) -/* D60824 80241574 46000506 */ mov.s $f20, $f0 -/* D60828 80241578 C62C000C */ lwc1 $f12, 0xc($s1) -/* D6082C 8024157C 0C00A70A */ jal get_clamped_angle_diff -/* D60830 80241580 4600A386 */ mov.s $f14, $f20 -/* D60834 80241584 46000086 */ mov.s $f2, $f0 -/* D60838 80241588 8E82001C */ lw $v0, 0x1c($s4) -/* D6083C 8024158C 46001005 */ abs.s $f0, $f2 -/* D60840 80241590 44822000 */ mtc1 $v0, $f4 -/* D60844 80241594 00000000 */ nop -/* D60848 80241598 46802120 */ cvt.s.w $f4, $f4 -/* D6084C 8024159C 4600203C */ c.lt.s $f4, $f0 -/* D60850 802415A0 00000000 */ nop -/* D60854 802415A4 4500000D */ bc1f .L802415DC -/* D60858 802415A8 00000000 */ nop -/* D6085C 802415AC 44800000 */ mtc1 $zero, $f0 -/* D60860 802415B0 C634000C */ lwc1 $f20, 0xc($s1) -/* D60864 802415B4 4600103C */ c.lt.s $f2, $f0 -/* D60868 802415B8 00000000 */ nop -/* D6086C 802415BC 45000006 */ bc1f .L802415D8 -/* D60870 802415C0 00021023 */ negu $v0, $v0 -/* D60874 802415C4 44820000 */ mtc1 $v0, $f0 -/* D60878 802415C8 00000000 */ nop -/* D6087C 802415CC 46800020 */ cvt.s.w $f0, $f0 -/* D60880 802415D0 08090577 */ j .L802415DC -/* D60884 802415D4 4600A500 */ add.s $f20, $f20, $f0 -.L802415D8: -/* D60888 802415D8 4604A500 */ add.s $f20, $f20, $f4 -.L802415DC: -/* D6088C 802415DC 0C00A6C9 */ jal clamp_angle -/* D60890 802415E0 4600A306 */ mov.s $f12, $f20 -/* D60894 802415E4 E620000C */ swc1 $f0, 0xc($s1) -/* D60898 802415E8 A620008E */ sh $zero, 0x8e($s1) -.L802415EC: -/* D6089C 802415EC 8E250018 */ lw $a1, 0x18($s1) -/* D608A0 802415F0 8E26000C */ lw $a2, 0xc($s1) -/* D608A4 802415F4 0C00EA95 */ jal npc_move_heading -/* D608A8 802415F8 0220202D */ daddu $a0, $s1, $zero -.L802415FC: -/* D608AC 802415FC 8E42006C */ lw $v0, 0x6c($s2) -/* D608B0 80241600 2442FFFF */ addiu $v0, $v0, -1 -/* D608B4 80241604 1C400003 */ bgtz $v0, .L80241614 -/* D608B8 80241608 AE42006C */ sw $v0, 0x6c($s2) -/* D608BC 8024160C 24020005 */ addiu $v0, $zero, 5 -/* D608C0 80241610 AE42006C */ sw $v0, 0x6c($s2) -.L80241614: -/* D608C4 80241614 C620003C */ lwc1 $f0, 0x3c($s1) -/* D608C8 80241618 C6220068 */ lwc1 $f2, 0x68($s1) -/* D608CC 8024161C 4600103C */ c.lt.s $f2, $f0 -/* D608D0 80241620 00000000 */ nop -/* D608D4 80241624 45000015 */ bc1f .L8024167C_D6092C -/* D608D8 80241628 2402000E */ addiu $v0, $zero, 0xe -/* D608DC 8024162C E622003C */ swc1 $f2, 0x3c($s1) -/* D608E0 80241630 AE620070 */ sw $v0, 0x70($s3) -.L80241634_D608E4: -/* D608E4 80241634 8E4200CC */ lw $v0, 0xcc($s2) -/* D608E8 80241638 922300A9 */ lbu $v1, 0xa9($s1) -/* D608EC 8024163C 8C440020 */ lw $a0, 0x20($v0) -/* D608F0 80241640 8E220000 */ lw $v0, ($s1) -/* D608F4 80241644 A22300AB */ sb $v1, 0xab($s1) -/* D608F8 80241648 34420080 */ ori $v0, $v0, 0x80 -/* D608FC 8024164C AE220000 */ sw $v0, ($s1) -/* D60900 80241650 2402000F */ addiu $v0, $zero, 0xf -/* D60904 80241654 A622008E */ sh $v0, 0x8e($s1) -/* D60908 80241658 2402000F */ addiu $v0, $zero, 0xf -/* D6090C 8024165C AE240028 */ sw $a0, 0x28($s1) -/* D60910 80241660 AE620070 */ sw $v0, 0x70($s3) -.L80241664_D60914: -/* D60914 80241664 9622008E */ lhu $v0, 0x8e($s1) -/* D60918 80241668 2442FFFF */ addiu $v0, $v0, -1 -/* D6091C 8024166C A622008E */ sh $v0, 0x8e($s1) -/* D60920 80241670 00021400 */ sll $v0, $v0, 0x10 -/* D60924 80241674 58400001 */ blezl $v0, .L8024167C_D6092C -/* D60928 80241678 AE600070 */ sw $zero, 0x70($s3) -.L8024167C_D6092C: -/* D6092C 8024167C 0000102D */ daddu $v0, $zero, $zero -.L80241680: -/* D60930 80241680 8FBF006C */ lw $ra, 0x6c($sp) -/* D60934 80241684 8FB60068 */ lw $s6, 0x68($sp) -/* D60938 80241688 8FB50064 */ lw $s5, 0x64($sp) -/* D6093C 8024168C 8FB40060 */ lw $s4, 0x60($sp) -/* D60940 80241690 8FB3005C */ lw $s3, 0x5c($sp) -/* D60944 80241694 8FB20058 */ lw $s2, 0x58($sp) -/* D60948 80241698 8FB10054 */ lw $s1, 0x54($sp) -/* D6094C 8024169C 8FB00050 */ lw $s0, 0x50($sp) -/* D60950 802416A0 D7B40070 */ ldc1 $f20, 0x70($sp) -/* D60954 802416A4 03E00008 */ jr $ra -/* D60958 802416A8 27BD0078 */ addiu $sp, $sp, 0x78 -/* D6095C 802416AC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_pra/pra_38/D955F0/func_80240F50_D96540.s b/ver/us/asm/nonmatchings/world/area_pra/pra_38/D955F0/func_80240F50_D96540.s deleted file mode 100644 index 26e7437eac..0000000000 --- a/ver/us/asm/nonmatchings/world/area_pra/pra_38/D955F0/func_80240F50_D96540.s +++ /dev/null @@ -1,529 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_80242250_D97840 -.word .L802410B0_D966A0, .L802410DC_D966CC, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L802416AC_D96C9C, .L80241148_D96738, .L8024124C_D9683C, .L80241334_D96924, .L80241440_D96A30, .L80241664_D96C54, .L80241694_D96C84 - -dlabel D_80242290_D97880 -.double 0.7 - -dlabel D_80242298_D97888 -.double 0.7 - -.section .text - -glabel func_80240F50_D96540 -/* D96540 80240F50 27BDFF88 */ addiu $sp, $sp, -0x78 -/* D96544 80240F54 AFB3005C */ sw $s3, 0x5c($sp) -/* D96548 80240F58 0080982D */ daddu $s3, $a0, $zero -/* D9654C 80240F5C AFBF006C */ sw $ra, 0x6c($sp) -/* D96550 80240F60 AFB60068 */ sw $s6, 0x68($sp) -/* D96554 80240F64 AFB50064 */ sw $s5, 0x64($sp) -/* D96558 80240F68 AFB40060 */ sw $s4, 0x60($sp) -/* D9655C 80240F6C AFB20058 */ sw $s2, 0x58($sp) -/* D96560 80240F70 AFB10054 */ sw $s1, 0x54($sp) -/* D96564 80240F74 AFB00050 */ sw $s0, 0x50($sp) -/* D96568 80240F78 F7B40070 */ sdc1 $f20, 0x70($sp) -/* D9656C 80240F7C 8E720148 */ lw $s2, 0x148($s3) -/* D96570 80240F80 86440008 */ lh $a0, 8($s2) -/* D96574 80240F84 0C00EABB */ jal get_npc_unsafe -/* D96578 80240F88 00A0802D */ daddu $s0, $a1, $zero -/* D9657C 80240F8C 8E63000C */ lw $v1, 0xc($s3) -/* D96580 80240F90 0260202D */ daddu $a0, $s3, $zero -/* D96584 80240F94 8C650000 */ lw $a1, ($v1) -/* D96588 80240F98 0C0B1EAF */ jal evt_get_variable -/* D9658C 80240F9C 0040882D */ daddu $s1, $v0, $zero -/* D96590 80240FA0 AFA00020 */ sw $zero, 0x20($sp) -/* D96594 80240FA4 8E4300D0 */ lw $v1, 0xd0($s2) -/* D96598 80240FA8 8C630030 */ lw $v1, 0x30($v1) -/* D9659C 80240FAC AFA30024 */ sw $v1, 0x24($sp) -/* D965A0 80240FB0 8E4300D0 */ lw $v1, 0xd0($s2) -/* D965A4 80240FB4 8C63001C */ lw $v1, 0x1c($v1) -/* D965A8 80240FB8 AFA30028 */ sw $v1, 0x28($sp) -/* D965AC 80240FBC 8E4300D0 */ lw $v1, 0xd0($s2) -/* D965B0 80240FC0 8C630024 */ lw $v1, 0x24($v1) -/* D965B4 80240FC4 AFA3002C */ sw $v1, 0x2c($sp) -/* D965B8 80240FC8 8E4300D0 */ lw $v1, 0xd0($s2) -/* D965BC 80240FCC 3C158011 */ lui $s5, %hi(gPlayerStatus) -/* D965C0 80240FD0 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus) -/* D965C4 80240FD4 8C630028 */ lw $v1, 0x28($v1) -/* D965C8 80240FD8 27B60020 */ addiu $s6, $sp, 0x20 -/* D965CC 80240FDC AFA30030 */ sw $v1, 0x30($sp) -/* D965D0 80240FE0 8E4300D0 */ lw $v1, 0xd0($s2) -/* D965D4 80240FE4 3C0143FA */ lui $at, 0x43fa -/* D965D8 80240FE8 44810000 */ mtc1 $at, $f0 -/* D965DC 80240FEC 8C63002C */ lw $v1, 0x2c($v1) -/* D965E0 80240FF0 0040A02D */ daddu $s4, $v0, $zero -/* D965E4 80240FF4 E7A00038 */ swc1 $f0, 0x38($sp) -/* D965E8 80240FF8 A7A0003C */ sh $zero, 0x3c($sp) -/* D965EC 80240FFC 12000019 */ beqz $s0, .L80241064 -/* D965F0 80241000 AFA30034 */ sw $v1, 0x34($sp) -/* D965F4 80241004 27A50040 */ addiu $a1, $sp, 0x40 -/* D965F8 80241008 27A60044 */ addiu $a2, $sp, 0x44 -/* D965FC 8024100C AE600070 */ sw $zero, 0x70($s3) -/* D96600 80241010 A620008E */ sh $zero, 0x8e($s1) -/* D96604 80241014 8E4200B0 */ lw $v0, 0xb0($s2) -/* D96608 80241018 3C01447A */ lui $at, 0x447a -/* D9660C 8024101C 44810000 */ mtc1 $at, $f0 -/* D96610 80241020 34420010 */ ori $v0, $v0, 0x10 -/* D96614 80241024 AE4200B0 */ sw $v0, 0xb0($s2) -/* D96618 80241028 C6220038 */ lwc1 $f2, 0x38($s1) -/* D9661C 8024102C C624003C */ lwc1 $f4, 0x3c($s1) -/* D96620 80241030 C6260040 */ lwc1 $f6, 0x40($s1) -/* D96624 80241034 27A2004C */ addiu $v0, $sp, 0x4c -/* D96628 80241038 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D9662C 8024103C E7A20040 */ swc1 $f2, 0x40($sp) -/* D96630 80241040 E7A40044 */ swc1 $f4, 0x44($sp) -/* D96634 80241044 E7A60048 */ swc1 $f6, 0x48($sp) -/* D96638 80241048 AFA20010 */ sw $v0, 0x10($sp) -/* D9663C 8024104C 8E240080 */ lw $a0, 0x80($s1) -/* D96640 80241050 0C0372DF */ jal npc_raycast_down_sides -/* D96644 80241054 27A70048 */ addiu $a3, $sp, 0x48 -/* D96648 80241058 C7A00044 */ lwc1 $f0, 0x44($sp) -/* D9664C 8024105C 4600028D */ trunc.w.s $f10, $f0 -/* D96650 80241060 E64A0070 */ swc1 $f10, 0x70($s2) -.L80241064: -/* D96654 80241064 8E4300B0 */ lw $v1, 0xb0($s2) -/* D96658 80241068 30620004 */ andi $v0, $v1, 4 -/* D9665C 8024106C 10400007 */ beqz $v0, .L8024108C -/* D96660 80241070 00000000 */ nop -/* D96664 80241074 824200B4 */ lb $v0, 0xb4($s2) -/* D96668 80241078 1440018D */ bnez $v0, .L802416B0 -/* D9666C 8024107C 0000102D */ daddu $v0, $zero, $zero -/* D96670 80241080 2402FFFB */ addiu $v0, $zero, -5 -/* D96674 80241084 00621024 */ and $v0, $v1, $v0 -/* D96678 80241088 AE4200B0 */ sw $v0, 0xb0($s2) -.L8024108C: -/* D9667C 8024108C 8E630070 */ lw $v1, 0x70($s3) -/* D96680 80241090 2C620010 */ sltiu $v0, $v1, 0x10 -/* D96684 80241094 10400185 */ beqz $v0, .L802416AC_D96C9C -/* D96688 80241098 00031080 */ sll $v0, $v1, 2 -/* D9668C 8024109C 3C018024 */ lui $at, %hi(jtbl_80242250_D97840) -/* D96690 802410A0 00220821 */ addu $at, $at, $v0 -/* D96694 802410A4 8C222250 */ lw $v0, %lo(jtbl_80242250_D97840)($at) -/* D96698 802410A8 00400008 */ jr $v0 -/* D9669C 802410AC 00000000 */ nop -.L802410B0_D966A0: -/* D966A0 802410B0 8E4200CC */ lw $v0, 0xcc($s2) -/* D966A4 802410B4 922300A9 */ lbu $v1, 0xa9($s1) -/* D966A8 802410B8 8C440000 */ lw $a0, ($v0) -/* D966AC 802410BC 8E220000 */ lw $v0, ($s1) -/* D966B0 802410C0 A22300AB */ sb $v1, 0xab($s1) -/* D966B4 802410C4 34420080 */ ori $v0, $v0, 0x80 -/* D966B8 802410C8 AE220000 */ sw $v0, ($s1) -/* D966BC 802410CC 24020001 */ addiu $v0, $zero, 1 -/* D966C0 802410D0 AE240028 */ sw $a0, 0x28($s1) -/* D966C4 802410D4 AE600074 */ sw $zero, 0x74($s3) -/* D966C8 802410D8 AE620070 */ sw $v0, 0x70($s3) -.L802410DC_D966CC: -/* D966CC 802410DC 8E830014 */ lw $v1, 0x14($s4) -/* D966D0 802410E0 04600015 */ bltz $v1, .L80241138 -/* D966D4 802410E4 00000000 */ nop -/* D966D8 802410E8 8E620074 */ lw $v0, 0x74($s3) -/* D966DC 802410EC 1C400011 */ bgtz $v0, .L80241134 -/* D966E0 802410F0 2442FFFF */ addiu $v0, $v0, -1 -/* D966E4 802410F4 02C0202D */ daddu $a0, $s6, $zero -/* D966E8 802410F8 AE630074 */ sw $v1, 0x74($s3) -/* D966EC 802410FC AFA00010 */ sw $zero, 0x10($sp) -/* D966F0 80241100 8E86000C */ lw $a2, 0xc($s4) -/* D966F4 80241104 8E870010 */ lw $a3, 0x10($s4) -/* D966F8 80241108 0C01242D */ jal basic_ai_check_player_dist -/* D966FC 8024110C 0240282D */ daddu $a1, $s2, $zero -/* D96700 80241110 10400006 */ beqz $v0, .L8024112C -/* D96704 80241114 0220202D */ daddu $a0, $s1, $zero -/* D96708 80241118 240502F4 */ addiu $a1, $zero, 0x2f4 -/* D9670C 8024111C 0C012530 */ jal ai_enemy_play_sound -/* D96710 80241120 3C060020 */ lui $a2, 0x20 -/* D96714 80241124 2402000A */ addiu $v0, $zero, 0xa -/* D96718 80241128 AE620070 */ sw $v0, 0x70($s3) -.L8024112C: -/* D9671C 8024112C 8E620074 */ lw $v0, 0x74($s3) -/* D96720 80241130 2442FFFF */ addiu $v0, $v0, -1 -.L80241134: -/* D96724 80241134 AE620074 */ sw $v0, 0x74($s3) -.L80241138: -/* D96728 80241138 8E630070 */ lw $v1, 0x70($s3) -/* D9672C 8024113C 2402000A */ addiu $v0, $zero, 0xa -/* D96730 80241140 1462015B */ bne $v1, $v0, .L802416B0 -/* D96734 80241144 0000102D */ daddu $v0, $zero, $zero -.L80241148_D96738: -/* D96738 80241148 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D9673C 8024114C 8E4200CC */ lw $v0, 0xcc($s2) -/* D96740 80241150 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D96744 80241154 8C42000C */ lw $v0, 0xc($v0) -/* D96748 80241158 AE220028 */ sw $v0, 0x28($s1) -/* D9674C 8024115C 8EA60028 */ lw $a2, 0x28($s5) -/* D96750 80241160 0C00A720 */ jal atan2 -/* D96754 80241164 8EA70030 */ lw $a3, 0x30($s5) -/* D96758 80241168 3C013FA6 */ lui $at, 0x3fa6 -/* D9675C 8024116C 34216666 */ ori $at, $at, 0x6666 -/* D96760 80241170 44811000 */ mtc1 $at, $f2 -/* D96764 80241174 27A50040 */ addiu $a1, $sp, 0x40 -/* D96768 80241178 E6200010 */ swc1 $f0, 0x10($s1) -/* D9676C 8024117C C6200038 */ lwc1 $f0, 0x38($s1) -/* D96770 80241180 C6240040 */ lwc1 $f4, 0x40($s1) -/* D96774 80241184 3C01447A */ lui $at, 0x447a -/* D96778 80241188 44813000 */ mtc1 $at, $f6 -/* D9677C 8024118C 27A60044 */ addiu $a2, $sp, 0x44 -/* D96780 80241190 AE20001C */ sw $zero, 0x1c($s1) -/* D96784 80241194 E6220014 */ swc1 $f2, 0x14($s1) -/* D96788 80241198 C6880000 */ lwc1 $f8, ($s4) -/* D9678C 8024119C C622003C */ lwc1 $f2, 0x3c($s1) -/* D96790 802411A0 27A2004C */ addiu $v0, $sp, 0x4c -/* D96794 802411A4 E7A00040 */ swc1 $f0, 0x40($sp) -/* D96798 802411A8 E7A40048 */ swc1 $f4, 0x48($sp) -/* D9679C 802411AC E7A6004C */ swc1 $f6, 0x4c($sp) -/* D967A0 802411B0 E7A20044 */ swc1 $f2, 0x44($sp) -/* D967A4 802411B4 E6280018 */ swc1 $f8, 0x18($s1) -/* D967A8 802411B8 AFA20010 */ sw $v0, 0x10($sp) -/* D967AC 802411BC 8E240080 */ lw $a0, 0x80($s1) -/* D967B0 802411C0 0C0372DF */ jal npc_raycast_down_sides -/* D967B4 802411C4 27A70048 */ addiu $a3, $sp, 0x48 -/* D967B8 802411C8 10400010 */ beqz $v0, .L8024120C -/* D967BC 802411CC 00000000 */ nop -/* D967C0 802411D0 C620003C */ lwc1 $f0, 0x3c($s1) -/* D967C4 802411D4 C6440070 */ lwc1 $f4, 0x70($s2) -/* D967C8 802411D8 46802120 */ cvt.s.w $f4, $f4 -/* D967CC 802411DC 46040001 */ sub.s $f0, $f0, $f4 -/* D967D0 802411E0 3C018024 */ lui $at, %hi(D_80242290_D97880) -/* D967D4 802411E4 D4222290 */ ldc1 $f2, %lo(D_80242290_D97880)($at) -/* D967D8 802411E8 46000021 */ cvt.d.s $f0, $f0 -/* D967DC 802411EC 46220002 */ mul.d $f0, $f0, $f2 -/* D967E0 802411F0 00000000 */ nop -/* D967E4 802411F4 460020A1 */ cvt.d.s $f2, $f4 -/* D967E8 802411F8 46201080 */ add.d $f2, $f2, $f0 -/* D967EC 802411FC E7A40044 */ swc1 $f4, 0x44($sp) -/* D967F0 80241200 462010A0 */ cvt.s.d $f2, $f2 -/* D967F4 80241204 0809048F */ j .L8024123C -/* D967F8 80241208 E6220064 */ swc1 $f2, 0x64($s1) -.L8024120C: -/* D967FC 8024120C C6A0002C */ lwc1 $f0, 0x2c($s5) -/* D96800 80241210 C622003C */ lwc1 $f2, 0x3c($s1) -/* D96804 80241214 46001081 */ sub.s $f2, $f2, $f0 -/* D96808 80241218 3C018024 */ lui $at, %hi(D_80242298_D97888) -/* D9680C 8024121C D4242298 */ ldc1 $f4, %lo(D_80242298_D97888)($at) -/* D96810 80241220 460010A1 */ cvt.d.s $f2, $f2 -/* D96814 80241224 46241082 */ mul.d $f2, $f2, $f4 -/* D96818 80241228 00000000 */ nop -/* D9681C 8024122C 46000021 */ cvt.d.s $f0, $f0 -/* D96820 80241230 46220000 */ add.d $f0, $f0, $f2 -/* D96824 80241234 46200020 */ cvt.s.d $f0, $f0 -/* D96828 80241238 E6200064 */ swc1 $f0, 0x64($s1) -.L8024123C: -/* D9682C 8024123C C620003C */ lwc1 $f0, 0x3c($s1) -/* D96830 80241240 2402000B */ addiu $v0, $zero, 0xb -/* D96834 80241244 E6200068 */ swc1 $f0, 0x68($s1) -/* D96838 80241248 AE620070 */ sw $v0, 0x70($s3) -.L8024124C_D9683C: -/* D9683C 8024124C C6200018 */ lwc1 $f0, 0x18($s1) -/* D96840 80241250 44801000 */ mtc1 $zero, $f2 -/* D96844 80241254 44801800 */ mtc1 $zero, $f3 -/* D96848 80241258 46000021 */ cvt.d.s $f0, $f0 -/* D9684C 8024125C 4620103C */ c.lt.d $f2, $f0 -/* D96850 80241260 00000000 */ nop -/* D96854 80241264 45000025 */ bc1f .L802412FC -/* D96858 80241268 27A50040 */ addiu $a1, $sp, 0x40 -/* D9685C 8024126C C6200038 */ lwc1 $f0, 0x38($s1) -/* D96860 80241270 C622003C */ lwc1 $f2, 0x3c($s1) -/* D96864 80241274 C6240040 */ lwc1 $f4, 0x40($s1) -/* D96868 80241278 C6260018 */ lwc1 $f6, 0x18($s1) -/* D9686C 8024127C E7A00040 */ swc1 $f0, 0x40($sp) -/* D96870 80241280 E7A20044 */ swc1 $f2, 0x44($sp) -/* D96874 80241284 E7A40048 */ swc1 $f4, 0x48($sp) -/* D96878 80241288 E7A60010 */ swc1 $f6, 0x10($sp) -/* D9687C 8024128C C620000C */ lwc1 $f0, 0xc($s1) -/* D96880 80241290 E7A00014 */ swc1 $f0, 0x14($sp) -/* D96884 80241294 862200A8 */ lh $v0, 0xa8($s1) -/* D96888 80241298 44820000 */ mtc1 $v0, $f0 -/* D9688C 8024129C 00000000 */ nop -/* D96890 802412A0 46800020 */ cvt.s.w $f0, $f0 -/* D96894 802412A4 E7A00018 */ swc1 $f0, 0x18($sp) -/* D96898 802412A8 862200A6 */ lh $v0, 0xa6($s1) -/* D9689C 802412AC 27A60044 */ addiu $a2, $sp, 0x44 -/* D968A0 802412B0 44820000 */ mtc1 $v0, $f0 -/* D968A4 802412B4 00000000 */ nop -/* D968A8 802412B8 46800020 */ cvt.s.w $f0, $f0 -/* D968AC 802412BC E7A0001C */ swc1 $f0, 0x1c($sp) -/* D968B0 802412C0 8E240080 */ lw $a0, 0x80($s1) -/* D968B4 802412C4 0C037711 */ jal npc_test_move_simple_with_slipping -/* D968B8 802412C8 27A70048 */ addiu $a3, $sp, 0x48 -/* D968BC 802412CC 54400001 */ bnel $v0, $zero, .L802412D4 -/* D968C0 802412D0 AE200018 */ sw $zero, 0x18($s1) -.L802412D4: -/* D968C4 802412D4 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D968C8 802412D8 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D968CC 802412DC 8EA60028 */ lw $a2, 0x28($s5) -/* D968D0 802412E0 0C00A720 */ jal atan2 -/* D968D4 802412E4 8EA70030 */ lw $a3, 0x30($s5) -/* D968D8 802412E8 8E250018 */ lw $a1, 0x18($s1) -/* D968DC 802412EC 44060000 */ mfc1 $a2, $f0 -/* D968E0 802412F0 0220202D */ daddu $a0, $s1, $zero -/* D968E4 802412F4 0C00EA95 */ jal npc_move_heading -/* D968E8 802412F8 AE26000C */ sw $a2, 0xc($s1) -.L802412FC: -/* D968EC 802412FC C620001C */ lwc1 $f0, 0x1c($s1) -/* D968F0 80241300 C6220014 */ lwc1 $f2, 0x14($s1) -/* D968F4 80241304 46020001 */ sub.s $f0, $f0, $f2 -/* D968F8 80241308 C622003C */ lwc1 $f2, 0x3c($s1) -/* D968FC 8024130C C6240064 */ lwc1 $f4, 0x64($s1) -/* D96900 80241310 46001080 */ add.s $f2, $f2, $f0 -/* D96904 80241314 E620001C */ swc1 $f0, 0x1c($s1) -/* D96908 80241318 4604103C */ c.lt.s $f2, $f4 -/* D9690C 8024131C 00000000 */ nop -/* D96910 80241320 450000E2 */ bc1f .L802416AC_D96C9C -/* D96914 80241324 E622003C */ swc1 $f2, 0x3c($s1) -/* D96918 80241328 2402000C */ addiu $v0, $zero, 0xc -/* D9691C 8024132C E624003C */ swc1 $f4, 0x3c($s1) -/* D96920 80241330 AE620070 */ sw $v0, 0x70($s3) -.L80241334_D96924: -/* D96924 80241334 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D96928 80241338 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D9692C 8024133C 8EA60028 */ lw $a2, 0x28($s5) -/* D96930 80241340 0C00A7B5 */ jal dist2D -/* D96934 80241344 8EA70030 */ lw $a3, 0x30($s5) -/* D96938 80241348 3C014270 */ lui $at, 0x4270 -/* D9693C 8024134C 44811000 */ mtc1 $at, $f2 -/* D96940 80241350 00000000 */ nop -/* D96944 80241354 4602003C */ c.lt.s $f0, $f2 -/* D96948 80241358 00000000 */ nop -/* D9694C 8024135C 45000002 */ bc1f .L80241368 -/* D96950 80241360 E6200010 */ swc1 $f0, 0x10($s1) -/* D96954 80241364 E6220010 */ swc1 $f2, 0x10($s1) -.L80241368: -/* D96958 80241368 C6860018 */ lwc1 $f6, 0x18($s4) -/* D9695C 8024136C C6400070 */ lwc1 $f0, 0x70($s2) -/* D96960 80241370 46800020 */ cvt.s.w $f0, $f0 -/* D96964 80241374 E7A00044 */ swc1 $f0, 0x44($sp) -/* D96968 80241378 46000021 */ cvt.d.s $f0, $f0 -/* D9696C 8024137C C6240010 */ lwc1 $f4, 0x10($s1) -/* D96970 80241380 3C014024 */ lui $at, 0x4024 -/* D96974 80241384 44811800 */ mtc1 $at, $f3 -/* D96978 80241388 44801000 */ mtc1 $zero, $f2 -/* D9697C 8024138C 46062103 */ div.s $f4, $f4, $f6 -/* D96980 80241390 46220000 */ add.d $f0, $f0, $f2 -/* D96984 80241394 C622003C */ lwc1 $f2, 0x3c($s1) -/* D96988 80241398 4600228D */ trunc.w.s $f10, $f4 -/* D9698C 8024139C 44025000 */ mfc1 $v0, $f10 -/* D96990 802413A0 00000000 */ nop -/* D96994 802413A4 A622008E */ sh $v0, 0x8e($s1) -/* D96998 802413A8 460010A1 */ cvt.d.s $f2, $f2 -/* D9699C 802413AC 46220001 */ sub.d $f0, $f0, $f2 -/* D969A0 802413B0 00021400 */ sll $v0, $v0, 0x10 -/* D969A4 802413B4 E6260018 */ swc1 $f6, 0x18($s1) -/* D969A8 802413B8 14400003 */ bnez $v0, .L802413C8 -/* D969AC 802413BC 46200120 */ cvt.s.d $f4, $f0 -/* D969B0 802413C0 24020001 */ addiu $v0, $zero, 1 -/* D969B4 802413C4 A622008E */ sh $v0, 0x8e($s1) -.L802413C8: -/* D969B8 802413C8 8622008E */ lh $v0, 0x8e($s1) -/* D969BC 802413CC C620001C */ lwc1 $f0, 0x1c($s1) -/* D969C0 802413D0 44821000 */ mtc1 $v0, $f2 -/* D969C4 802413D4 00000000 */ nop -/* D969C8 802413D8 468010A0 */ cvt.s.w $f2, $f2 -/* D969CC 802413DC 46000007 */ neg.s $f0, $f0 -/* D969D0 802413E0 46020002 */ mul.s $f0, $f0, $f2 -/* D969D4 802413E4 00000000 */ nop -/* D969D8 802413E8 00420018 */ mult $v0, $v0 -/* D969DC 802413EC 8E230000 */ lw $v1, ($s1) -/* D969E0 802413F0 46040000 */ add.s $f0, $f0, $f4 -/* D969E4 802413F4 A22000AB */ sb $zero, 0xab($s1) -/* D969E8 802413F8 2402FF7F */ addiu $v0, $zero, -0x81 -/* D969EC 802413FC 00004012 */ mflo $t0 -/* D969F0 80241400 00621824 */ and $v1, $v1, $v0 -/* D969F4 80241404 24020005 */ addiu $v0, $zero, 5 -/* D969F8 80241408 46000000 */ add.s $f0, $f0, $f0 -/* D969FC 8024140C AE230000 */ sw $v1, ($s1) -/* D96A00 80241410 44881000 */ mtc1 $t0, $f2 -/* D96A04 80241414 00000000 */ nop -/* D96A08 80241418 468010A0 */ cvt.s.w $f2, $f2 -/* D96A0C 8024141C 46000007 */ neg.s $f0, $f0 -/* D96A10 80241420 46020003 */ div.s $f0, $f0, $f2 -/* D96A14 80241424 46000005 */ abs.s $f0, $f0 -/* D96A18 80241428 46000007 */ neg.s $f0, $f0 -/* D96A1C 8024142C E6200014 */ swc1 $f0, 0x14($s1) -/* D96A20 80241430 AE42006C */ sw $v0, 0x6c($s2) -/* D96A24 80241434 2402000D */ addiu $v0, $zero, 0xd -/* D96A28 80241438 A620008E */ sh $zero, 0x8e($s1) -/* D96A2C 8024143C AE620070 */ sw $v0, 0x70($s3) -.L80241440_D96A30: -/* D96A30 80241440 C620001C */ lwc1 $f0, 0x1c($s1) -/* D96A34 80241444 C6220014 */ lwc1 $f2, 0x14($s1) -/* D96A38 80241448 46020001 */ sub.s $f0, $f0, $f2 -/* D96A3C 8024144C 4480A000 */ mtc1 $zero, $f20 -/* D96A40 80241450 00000000 */ nop -/* D96A44 80241454 4614003C */ c.lt.s $f0, $f20 -/* D96A48 80241458 00000000 */ nop -/* D96A4C 8024145C 45000012 */ bc1f .L802414A8 -/* D96A50 80241460 E620001C */ swc1 $f0, 0x1c($s1) -/* D96A54 80241464 27A50040 */ addiu $a1, $sp, 0x40 -/* D96A58 80241468 27A60044 */ addiu $a2, $sp, 0x44 -/* D96A5C 8024146C 27A2004C */ addiu $v0, $sp, 0x4c -/* D96A60 80241470 C6220038 */ lwc1 $f2, 0x38($s1) -/* D96A64 80241474 C624003C */ lwc1 $f4, 0x3c($s1) -/* D96A68 80241478 C6260040 */ lwc1 $f6, 0x40($s1) -/* D96A6C 8024147C 46000007 */ neg.s $f0, $f0 -/* D96A70 80241480 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D96A74 80241484 E7A20040 */ swc1 $f2, 0x40($sp) -/* D96A78 80241488 E7A40044 */ swc1 $f4, 0x44($sp) -/* D96A7C 8024148C E7A60048 */ swc1 $f6, 0x48($sp) -/* D96A80 80241490 AFA20010 */ sw $v0, 0x10($sp) -/* D96A84 80241494 8E240080 */ lw $a0, 0x80($s1) -/* D96A88 80241498 0C0372DF */ jal npc_raycast_down_sides -/* D96A8C 8024149C 27A70048 */ addiu $a3, $sp, 0x48 -/* D96A90 802414A0 54400001 */ bnel $v0, $zero, .L802414A8 -/* D96A94 802414A4 E634001C */ swc1 $f20, 0x1c($s1) -.L802414A8: -/* D96A98 802414A8 C624003C */ lwc1 $f4, 0x3c($s1) -/* D96A9C 802414AC C620001C */ lwc1 $f0, 0x1c($s1) -/* D96AA0 802414B0 46002100 */ add.s $f4, $f4, $f0 -/* D96AA4 802414B4 C6200018 */ lwc1 $f0, 0x18($s1) -/* D96AA8 802414B8 44801000 */ mtc1 $zero, $f2 -/* D96AAC 802414BC 44801800 */ mtc1 $zero, $f3 -/* D96AB0 802414C0 46000021 */ cvt.d.s $f0, $f0 -/* D96AB4 802414C4 4620103C */ c.lt.d $f2, $f0 -/* D96AB8 802414C8 00000000 */ nop -/* D96ABC 802414CC 45000057 */ bc1f .L8024162C -/* D96AC0 802414D0 E624003C */ swc1 $f4, 0x3c($s1) -/* D96AC4 802414D4 46002086 */ mov.s $f2, $f4 -/* D96AC8 802414D8 C6200038 */ lwc1 $f0, 0x38($s1) -/* D96ACC 802414DC C6240040 */ lwc1 $f4, 0x40($s1) -/* D96AD0 802414E0 C6260018 */ lwc1 $f6, 0x18($s1) -/* D96AD4 802414E4 E7A20044 */ swc1 $f2, 0x44($sp) -/* D96AD8 802414E8 E7A00040 */ swc1 $f0, 0x40($sp) -/* D96ADC 802414EC E7A40048 */ swc1 $f4, 0x48($sp) -/* D96AE0 802414F0 E7A60010 */ swc1 $f6, 0x10($sp) -/* D96AE4 802414F4 C620000C */ lwc1 $f0, 0xc($s1) -/* D96AE8 802414F8 E7A00014 */ swc1 $f0, 0x14($sp) -/* D96AEC 802414FC 862200A8 */ lh $v0, 0xa8($s1) -/* D96AF0 80241500 27A50040 */ addiu $a1, $sp, 0x40 -/* D96AF4 80241504 44820000 */ mtc1 $v0, $f0 -/* D96AF8 80241508 00000000 */ nop -/* D96AFC 8024150C 46800020 */ cvt.s.w $f0, $f0 -/* D96B00 80241510 E7A00018 */ swc1 $f0, 0x18($sp) -/* D96B04 80241514 862200A6 */ lh $v0, 0xa6($s1) -/* D96B08 80241518 27A60044 */ addiu $a2, $sp, 0x44 -/* D96B0C 8024151C 44820000 */ mtc1 $v0, $f0 -/* D96B10 80241520 00000000 */ nop -/* D96B14 80241524 46800020 */ cvt.s.w $f0, $f0 -/* D96B18 80241528 E7A0001C */ swc1 $f0, 0x1c($sp) -/* D96B1C 8024152C 8E240080 */ lw $a0, 0x80($s1) -/* D96B20 80241530 0C037711 */ jal npc_test_move_simple_with_slipping -/* D96B24 80241534 27A70048 */ addiu $a3, $sp, 0x48 -/* D96B28 80241538 10400003 */ beqz $v0, .L80241548 -/* D96B2C 8024153C 00000000 */ nop -/* D96B30 80241540 08090587 */ j .L8024161C -/* D96B34 80241544 AE200018 */ sw $zero, 0x18($s1) -.L80241548: -/* D96B38 80241548 C620001C */ lwc1 $f0, 0x1c($s1) -/* D96B3C 8024154C 3C01C004 */ lui $at, 0xc004 -/* D96B40 80241550 44811800 */ mtc1 $at, $f3 -/* D96B44 80241554 44801000 */ mtc1 $zero, $f2 -/* D96B48 80241558 46000021 */ cvt.d.s $f0, $f0 -/* D96B4C 8024155C 4622003C */ c.lt.d $f0, $f2 -/* D96B50 80241560 00000000 */ nop -/* D96B54 80241564 4500002D */ bc1f .L8024161C -/* D96B58 80241568 00000000 */ nop -/* D96B5C 8024156C 9622008E */ lhu $v0, 0x8e($s1) -/* D96B60 80241570 24420001 */ addiu $v0, $v0, 1 -/* D96B64 80241574 A622008E */ sh $v0, 0x8e($s1) -/* D96B68 80241578 00021400 */ sll $v0, $v0, 0x10 -/* D96B6C 8024157C 8E830020 */ lw $v1, 0x20($s4) -/* D96B70 80241580 00021403 */ sra $v0, $v0, 0x10 -/* D96B74 80241584 0043102A */ slt $v0, $v0, $v1 -/* D96B78 80241588 14400024 */ bnez $v0, .L8024161C -/* D96B7C 8024158C 00000000 */ nop -/* D96B80 80241590 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D96B84 80241594 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D96B88 80241598 8EA60028 */ lw $a2, 0x28($s5) -/* D96B8C 8024159C 0C00A720 */ jal atan2 -/* D96B90 802415A0 8EA70030 */ lw $a3, 0x30($s5) -/* D96B94 802415A4 46000506 */ mov.s $f20, $f0 -/* D96B98 802415A8 C62C000C */ lwc1 $f12, 0xc($s1) -/* D96B9C 802415AC 0C00A70A */ jal get_clamped_angle_diff -/* D96BA0 802415B0 4600A386 */ mov.s $f14, $f20 -/* D96BA4 802415B4 46000086 */ mov.s $f2, $f0 -/* D96BA8 802415B8 8E82001C */ lw $v0, 0x1c($s4) -/* D96BAC 802415BC 46001005 */ abs.s $f0, $f2 -/* D96BB0 802415C0 44822000 */ mtc1 $v0, $f4 -/* D96BB4 802415C4 00000000 */ nop -/* D96BB8 802415C8 46802120 */ cvt.s.w $f4, $f4 -/* D96BBC 802415CC 4600203C */ c.lt.s $f4, $f0 -/* D96BC0 802415D0 00000000 */ nop -/* D96BC4 802415D4 4500000D */ bc1f .L8024160C -/* D96BC8 802415D8 00000000 */ nop -/* D96BCC 802415DC 44800000 */ mtc1 $zero, $f0 -/* D96BD0 802415E0 C634000C */ lwc1 $f20, 0xc($s1) -/* D96BD4 802415E4 4600103C */ c.lt.s $f2, $f0 -/* D96BD8 802415E8 00000000 */ nop -/* D96BDC 802415EC 45000006 */ bc1f .L80241608 -/* D96BE0 802415F0 00021023 */ negu $v0, $v0 -/* D96BE4 802415F4 44820000 */ mtc1 $v0, $f0 -/* D96BE8 802415F8 00000000 */ nop -/* D96BEC 802415FC 46800020 */ cvt.s.w $f0, $f0 -/* D96BF0 80241600 08090583 */ j .L8024160C -/* D96BF4 80241604 4600A500 */ add.s $f20, $f20, $f0 -.L80241608: -/* D96BF8 80241608 4604A500 */ add.s $f20, $f20, $f4 -.L8024160C: -/* D96BFC 8024160C 0C00A6C9 */ jal clamp_angle -/* D96C00 80241610 4600A306 */ mov.s $f12, $f20 -/* D96C04 80241614 E620000C */ swc1 $f0, 0xc($s1) -/* D96C08 80241618 A620008E */ sh $zero, 0x8e($s1) -.L8024161C: -/* D96C0C 8024161C 8E250018 */ lw $a1, 0x18($s1) -/* D96C10 80241620 8E26000C */ lw $a2, 0xc($s1) -/* D96C14 80241624 0C00EA95 */ jal npc_move_heading -/* D96C18 80241628 0220202D */ daddu $a0, $s1, $zero -.L8024162C: -/* D96C1C 8024162C 8E42006C */ lw $v0, 0x6c($s2) -/* D96C20 80241630 2442FFFF */ addiu $v0, $v0, -1 -/* D96C24 80241634 1C400003 */ bgtz $v0, .L80241644 -/* D96C28 80241638 AE42006C */ sw $v0, 0x6c($s2) -/* D96C2C 8024163C 24020005 */ addiu $v0, $zero, 5 -/* D96C30 80241640 AE42006C */ sw $v0, 0x6c($s2) -.L80241644: -/* D96C34 80241644 C620003C */ lwc1 $f0, 0x3c($s1) -/* D96C38 80241648 C6220068 */ lwc1 $f2, 0x68($s1) -/* D96C3C 8024164C 4600103C */ c.lt.s $f2, $f0 -/* D96C40 80241650 00000000 */ nop -/* D96C44 80241654 45000015 */ bc1f .L802416AC_D96C9C -/* D96C48 80241658 2402000E */ addiu $v0, $zero, 0xe -/* D96C4C 8024165C E622003C */ swc1 $f2, 0x3c($s1) -/* D96C50 80241660 AE620070 */ sw $v0, 0x70($s3) -.L80241664_D96C54: -/* D96C54 80241664 8E4200CC */ lw $v0, 0xcc($s2) -/* D96C58 80241668 922300A9 */ lbu $v1, 0xa9($s1) -/* D96C5C 8024166C 8C440020 */ lw $a0, 0x20($v0) -/* D96C60 80241670 8E220000 */ lw $v0, ($s1) -/* D96C64 80241674 A22300AB */ sb $v1, 0xab($s1) -/* D96C68 80241678 34420080 */ ori $v0, $v0, 0x80 -/* D96C6C 8024167C AE220000 */ sw $v0, ($s1) -/* D96C70 80241680 2402000F */ addiu $v0, $zero, 0xf -/* D96C74 80241684 A622008E */ sh $v0, 0x8e($s1) -/* D96C78 80241688 2402000F */ addiu $v0, $zero, 0xf -/* D96C7C 8024168C AE240028 */ sw $a0, 0x28($s1) -/* D96C80 80241690 AE620070 */ sw $v0, 0x70($s3) -.L80241694_D96C84: -/* D96C84 80241694 9622008E */ lhu $v0, 0x8e($s1) -/* D96C88 80241698 2442FFFF */ addiu $v0, $v0, -1 -/* D96C8C 8024169C A622008E */ sh $v0, 0x8e($s1) -/* D96C90 802416A0 00021400 */ sll $v0, $v0, 0x10 -/* D96C94 802416A4 58400001 */ blezl $v0, .L802416AC_D96C9C -/* D96C98 802416A8 AE600070 */ sw $zero, 0x70($s3) -.L802416AC_D96C9C: -/* D96C9C 802416AC 0000102D */ daddu $v0, $zero, $zero -.L802416B0: -/* D96CA0 802416B0 8FBF006C */ lw $ra, 0x6c($sp) -/* D96CA4 802416B4 8FB60068 */ lw $s6, 0x68($sp) -/* D96CA8 802416B8 8FB50064 */ lw $s5, 0x64($sp) -/* D96CAC 802416BC 8FB40060 */ lw $s4, 0x60($sp) -/* D96CB0 802416C0 8FB3005C */ lw $s3, 0x5c($sp) -/* D96CB4 802416C4 8FB20058 */ lw $s2, 0x58($sp) -/* D96CB8 802416C8 8FB10054 */ lw $s1, 0x54($sp) -/* D96CBC 802416CC 8FB00050 */ lw $s0, 0x50($sp) -/* D96CC0 802416D0 D7B40070 */ ldc1 $f20, 0x70($sp) -/* D96CC4 802416D4 03E00008 */ jr $ra -/* D96CC8 802416D8 27BD0078 */ addiu $sp, $sp, 0x78 -/* D96CCC 802416DC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_pra/pra_39/D97890/func_80240F50_D987E0.s b/ver/us/asm/nonmatchings/world/area_pra/pra_39/D97890/func_80240F50_D987E0.s deleted file mode 100644 index 9a0375fa2c..0000000000 --- a/ver/us/asm/nonmatchings/world/area_pra/pra_39/D97890/func_80240F50_D987E0.s +++ /dev/null @@ -1,529 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_802420D0_D99960 -.word .L802410B0_D98940, .L802410DC_D9896C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L802416AC_D98F3C, .L80241148_D989D8, .L8024124C_D98ADC, .L80241334_D98BC4, .L80241440_D98CD0, .L80241664_D98EF4, .L80241694_D98F24 - -dlabel D_80242110_D999A0 -.double 0.7 - -dlabel D_80242118_D999A8 -.double 0.7 - -.section .text - -glabel func_80240F50_D987E0 -/* D987E0 80240F50 27BDFF88 */ addiu $sp, $sp, -0x78 -/* D987E4 80240F54 AFB3005C */ sw $s3, 0x5c($sp) -/* D987E8 80240F58 0080982D */ daddu $s3, $a0, $zero -/* D987EC 80240F5C AFBF006C */ sw $ra, 0x6c($sp) -/* D987F0 80240F60 AFB60068 */ sw $s6, 0x68($sp) -/* D987F4 80240F64 AFB50064 */ sw $s5, 0x64($sp) -/* D987F8 80240F68 AFB40060 */ sw $s4, 0x60($sp) -/* D987FC 80240F6C AFB20058 */ sw $s2, 0x58($sp) -/* D98800 80240F70 AFB10054 */ sw $s1, 0x54($sp) -/* D98804 80240F74 AFB00050 */ sw $s0, 0x50($sp) -/* D98808 80240F78 F7B40070 */ sdc1 $f20, 0x70($sp) -/* D9880C 80240F7C 8E720148 */ lw $s2, 0x148($s3) -/* D98810 80240F80 86440008 */ lh $a0, 8($s2) -/* D98814 80240F84 0C00EABB */ jal get_npc_unsafe -/* D98818 80240F88 00A0802D */ daddu $s0, $a1, $zero -/* D9881C 80240F8C 8E63000C */ lw $v1, 0xc($s3) -/* D98820 80240F90 0260202D */ daddu $a0, $s3, $zero -/* D98824 80240F94 8C650000 */ lw $a1, ($v1) -/* D98828 80240F98 0C0B1EAF */ jal evt_get_variable -/* D9882C 80240F9C 0040882D */ daddu $s1, $v0, $zero -/* D98830 80240FA0 AFA00020 */ sw $zero, 0x20($sp) -/* D98834 80240FA4 8E4300D0 */ lw $v1, 0xd0($s2) -/* D98838 80240FA8 8C630030 */ lw $v1, 0x30($v1) -/* D9883C 80240FAC AFA30024 */ sw $v1, 0x24($sp) -/* D98840 80240FB0 8E4300D0 */ lw $v1, 0xd0($s2) -/* D98844 80240FB4 8C63001C */ lw $v1, 0x1c($v1) -/* D98848 80240FB8 AFA30028 */ sw $v1, 0x28($sp) -/* D9884C 80240FBC 8E4300D0 */ lw $v1, 0xd0($s2) -/* D98850 80240FC0 8C630024 */ lw $v1, 0x24($v1) -/* D98854 80240FC4 AFA3002C */ sw $v1, 0x2c($sp) -/* D98858 80240FC8 8E4300D0 */ lw $v1, 0xd0($s2) -/* D9885C 80240FCC 3C158011 */ lui $s5, %hi(gPlayerStatus) -/* D98860 80240FD0 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus) -/* D98864 80240FD4 8C630028 */ lw $v1, 0x28($v1) -/* D98868 80240FD8 27B60020 */ addiu $s6, $sp, 0x20 -/* D9886C 80240FDC AFA30030 */ sw $v1, 0x30($sp) -/* D98870 80240FE0 8E4300D0 */ lw $v1, 0xd0($s2) -/* D98874 80240FE4 3C0143FA */ lui $at, 0x43fa -/* D98878 80240FE8 44810000 */ mtc1 $at, $f0 -/* D9887C 80240FEC 8C63002C */ lw $v1, 0x2c($v1) -/* D98880 80240FF0 0040A02D */ daddu $s4, $v0, $zero -/* D98884 80240FF4 E7A00038 */ swc1 $f0, 0x38($sp) -/* D98888 80240FF8 A7A0003C */ sh $zero, 0x3c($sp) -/* D9888C 80240FFC 12000019 */ beqz $s0, .L80241064 -/* D98890 80241000 AFA30034 */ sw $v1, 0x34($sp) -/* D98894 80241004 27A50040 */ addiu $a1, $sp, 0x40 -/* D98898 80241008 27A60044 */ addiu $a2, $sp, 0x44 -/* D9889C 8024100C AE600070 */ sw $zero, 0x70($s3) -/* D988A0 80241010 A620008E */ sh $zero, 0x8e($s1) -/* D988A4 80241014 8E4200B0 */ lw $v0, 0xb0($s2) -/* D988A8 80241018 3C01447A */ lui $at, 0x447a -/* D988AC 8024101C 44810000 */ mtc1 $at, $f0 -/* D988B0 80241020 34420010 */ ori $v0, $v0, 0x10 -/* D988B4 80241024 AE4200B0 */ sw $v0, 0xb0($s2) -/* D988B8 80241028 C6220038 */ lwc1 $f2, 0x38($s1) -/* D988BC 8024102C C624003C */ lwc1 $f4, 0x3c($s1) -/* D988C0 80241030 C6260040 */ lwc1 $f6, 0x40($s1) -/* D988C4 80241034 27A2004C */ addiu $v0, $sp, 0x4c -/* D988C8 80241038 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D988CC 8024103C E7A20040 */ swc1 $f2, 0x40($sp) -/* D988D0 80241040 E7A40044 */ swc1 $f4, 0x44($sp) -/* D988D4 80241044 E7A60048 */ swc1 $f6, 0x48($sp) -/* D988D8 80241048 AFA20010 */ sw $v0, 0x10($sp) -/* D988DC 8024104C 8E240080 */ lw $a0, 0x80($s1) -/* D988E0 80241050 0C0372DF */ jal npc_raycast_down_sides -/* D988E4 80241054 27A70048 */ addiu $a3, $sp, 0x48 -/* D988E8 80241058 C7A00044 */ lwc1 $f0, 0x44($sp) -/* D988EC 8024105C 4600028D */ trunc.w.s $f10, $f0 -/* D988F0 80241060 E64A0070 */ swc1 $f10, 0x70($s2) -.L80241064: -/* D988F4 80241064 8E4300B0 */ lw $v1, 0xb0($s2) -/* D988F8 80241068 30620004 */ andi $v0, $v1, 4 -/* D988FC 8024106C 10400007 */ beqz $v0, .L8024108C -/* D98900 80241070 00000000 */ nop -/* D98904 80241074 824200B4 */ lb $v0, 0xb4($s2) -/* D98908 80241078 1440018D */ bnez $v0, .L802416B0 -/* D9890C 8024107C 0000102D */ daddu $v0, $zero, $zero -/* D98910 80241080 2402FFFB */ addiu $v0, $zero, -5 -/* D98914 80241084 00621024 */ and $v0, $v1, $v0 -/* D98918 80241088 AE4200B0 */ sw $v0, 0xb0($s2) -.L8024108C: -/* D9891C 8024108C 8E630070 */ lw $v1, 0x70($s3) -/* D98920 80241090 2C620010 */ sltiu $v0, $v1, 0x10 -/* D98924 80241094 10400185 */ beqz $v0, .L802416AC_D98F3C -/* D98928 80241098 00031080 */ sll $v0, $v1, 2 -/* D9892C 8024109C 3C018024 */ lui $at, %hi(jtbl_802420D0_D99960) -/* D98930 802410A0 00220821 */ addu $at, $at, $v0 -/* D98934 802410A4 8C2220D0 */ lw $v0, %lo(jtbl_802420D0_D99960)($at) -/* D98938 802410A8 00400008 */ jr $v0 -/* D9893C 802410AC 00000000 */ nop -.L802410B0_D98940: -/* D98940 802410B0 8E4200CC */ lw $v0, 0xcc($s2) -/* D98944 802410B4 922300A9 */ lbu $v1, 0xa9($s1) -/* D98948 802410B8 8C440000 */ lw $a0, ($v0) -/* D9894C 802410BC 8E220000 */ lw $v0, ($s1) -/* D98950 802410C0 A22300AB */ sb $v1, 0xab($s1) -/* D98954 802410C4 34420080 */ ori $v0, $v0, 0x80 -/* D98958 802410C8 AE220000 */ sw $v0, ($s1) -/* D9895C 802410CC 24020001 */ addiu $v0, $zero, 1 -/* D98960 802410D0 AE240028 */ sw $a0, 0x28($s1) -/* D98964 802410D4 AE600074 */ sw $zero, 0x74($s3) -/* D98968 802410D8 AE620070 */ sw $v0, 0x70($s3) -.L802410DC_D9896C: -/* D9896C 802410DC 8E830014 */ lw $v1, 0x14($s4) -/* D98970 802410E0 04600015 */ bltz $v1, .L80241138 -/* D98974 802410E4 00000000 */ nop -/* D98978 802410E8 8E620074 */ lw $v0, 0x74($s3) -/* D9897C 802410EC 1C400011 */ bgtz $v0, .L80241134 -/* D98980 802410F0 2442FFFF */ addiu $v0, $v0, -1 -/* D98984 802410F4 02C0202D */ daddu $a0, $s6, $zero -/* D98988 802410F8 AE630074 */ sw $v1, 0x74($s3) -/* D9898C 802410FC AFA00010 */ sw $zero, 0x10($sp) -/* D98990 80241100 8E86000C */ lw $a2, 0xc($s4) -/* D98994 80241104 8E870010 */ lw $a3, 0x10($s4) -/* D98998 80241108 0C01242D */ jal basic_ai_check_player_dist -/* D9899C 8024110C 0240282D */ daddu $a1, $s2, $zero -/* D989A0 80241110 10400006 */ beqz $v0, .L8024112C -/* D989A4 80241114 0220202D */ daddu $a0, $s1, $zero -/* D989A8 80241118 240502F4 */ addiu $a1, $zero, 0x2f4 -/* D989AC 8024111C 0C012530 */ jal ai_enemy_play_sound -/* D989B0 80241120 3C060020 */ lui $a2, 0x20 -/* D989B4 80241124 2402000A */ addiu $v0, $zero, 0xa -/* D989B8 80241128 AE620070 */ sw $v0, 0x70($s3) -.L8024112C: -/* D989BC 8024112C 8E620074 */ lw $v0, 0x74($s3) -/* D989C0 80241130 2442FFFF */ addiu $v0, $v0, -1 -.L80241134: -/* D989C4 80241134 AE620074 */ sw $v0, 0x74($s3) -.L80241138: -/* D989C8 80241138 8E630070 */ lw $v1, 0x70($s3) -/* D989CC 8024113C 2402000A */ addiu $v0, $zero, 0xa -/* D989D0 80241140 1462015B */ bne $v1, $v0, .L802416B0 -/* D989D4 80241144 0000102D */ daddu $v0, $zero, $zero -.L80241148_D989D8: -/* D989D8 80241148 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D989DC 8024114C 8E4200CC */ lw $v0, 0xcc($s2) -/* D989E0 80241150 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D989E4 80241154 8C42000C */ lw $v0, 0xc($v0) -/* D989E8 80241158 AE220028 */ sw $v0, 0x28($s1) -/* D989EC 8024115C 8EA60028 */ lw $a2, 0x28($s5) -/* D989F0 80241160 0C00A720 */ jal atan2 -/* D989F4 80241164 8EA70030 */ lw $a3, 0x30($s5) -/* D989F8 80241168 3C013FA6 */ lui $at, 0x3fa6 -/* D989FC 8024116C 34216666 */ ori $at, $at, 0x6666 -/* D98A00 80241170 44811000 */ mtc1 $at, $f2 -/* D98A04 80241174 27A50040 */ addiu $a1, $sp, 0x40 -/* D98A08 80241178 E6200010 */ swc1 $f0, 0x10($s1) -/* D98A0C 8024117C C6200038 */ lwc1 $f0, 0x38($s1) -/* D98A10 80241180 C6240040 */ lwc1 $f4, 0x40($s1) -/* D98A14 80241184 3C01447A */ lui $at, 0x447a -/* D98A18 80241188 44813000 */ mtc1 $at, $f6 -/* D98A1C 8024118C 27A60044 */ addiu $a2, $sp, 0x44 -/* D98A20 80241190 AE20001C */ sw $zero, 0x1c($s1) -/* D98A24 80241194 E6220014 */ swc1 $f2, 0x14($s1) -/* D98A28 80241198 C6880000 */ lwc1 $f8, ($s4) -/* D98A2C 8024119C C622003C */ lwc1 $f2, 0x3c($s1) -/* D98A30 802411A0 27A2004C */ addiu $v0, $sp, 0x4c -/* D98A34 802411A4 E7A00040 */ swc1 $f0, 0x40($sp) -/* D98A38 802411A8 E7A40048 */ swc1 $f4, 0x48($sp) -/* D98A3C 802411AC E7A6004C */ swc1 $f6, 0x4c($sp) -/* D98A40 802411B0 E7A20044 */ swc1 $f2, 0x44($sp) -/* D98A44 802411B4 E6280018 */ swc1 $f8, 0x18($s1) -/* D98A48 802411B8 AFA20010 */ sw $v0, 0x10($sp) -/* D98A4C 802411BC 8E240080 */ lw $a0, 0x80($s1) -/* D98A50 802411C0 0C0372DF */ jal npc_raycast_down_sides -/* D98A54 802411C4 27A70048 */ addiu $a3, $sp, 0x48 -/* D98A58 802411C8 10400010 */ beqz $v0, .L8024120C -/* D98A5C 802411CC 00000000 */ nop -/* D98A60 802411D0 C620003C */ lwc1 $f0, 0x3c($s1) -/* D98A64 802411D4 C6440070 */ lwc1 $f4, 0x70($s2) -/* D98A68 802411D8 46802120 */ cvt.s.w $f4, $f4 -/* D98A6C 802411DC 46040001 */ sub.s $f0, $f0, $f4 -/* D98A70 802411E0 3C018024 */ lui $at, %hi(D_80242110_D999A0) -/* D98A74 802411E4 D4222110 */ ldc1 $f2, %lo(D_80242110_D999A0)($at) -/* D98A78 802411E8 46000021 */ cvt.d.s $f0, $f0 -/* D98A7C 802411EC 46220002 */ mul.d $f0, $f0, $f2 -/* D98A80 802411F0 00000000 */ nop -/* D98A84 802411F4 460020A1 */ cvt.d.s $f2, $f4 -/* D98A88 802411F8 46201080 */ add.d $f2, $f2, $f0 -/* D98A8C 802411FC E7A40044 */ swc1 $f4, 0x44($sp) -/* D98A90 80241200 462010A0 */ cvt.s.d $f2, $f2 -/* D98A94 80241204 0809048F */ j .L8024123C -/* D98A98 80241208 E6220064 */ swc1 $f2, 0x64($s1) -.L8024120C: -/* D98A9C 8024120C C6A0002C */ lwc1 $f0, 0x2c($s5) -/* D98AA0 80241210 C622003C */ lwc1 $f2, 0x3c($s1) -/* D98AA4 80241214 46001081 */ sub.s $f2, $f2, $f0 -/* D98AA8 80241218 3C018024 */ lui $at, %hi(D_80242118_D999A8) -/* D98AAC 8024121C D4242118 */ ldc1 $f4, %lo(D_80242118_D999A8)($at) -/* D98AB0 80241220 460010A1 */ cvt.d.s $f2, $f2 -/* D98AB4 80241224 46241082 */ mul.d $f2, $f2, $f4 -/* D98AB8 80241228 00000000 */ nop -/* D98ABC 8024122C 46000021 */ cvt.d.s $f0, $f0 -/* D98AC0 80241230 46220000 */ add.d $f0, $f0, $f2 -/* D98AC4 80241234 46200020 */ cvt.s.d $f0, $f0 -/* D98AC8 80241238 E6200064 */ swc1 $f0, 0x64($s1) -.L8024123C: -/* D98ACC 8024123C C620003C */ lwc1 $f0, 0x3c($s1) -/* D98AD0 80241240 2402000B */ addiu $v0, $zero, 0xb -/* D98AD4 80241244 E6200068 */ swc1 $f0, 0x68($s1) -/* D98AD8 80241248 AE620070 */ sw $v0, 0x70($s3) -.L8024124C_D98ADC: -/* D98ADC 8024124C C6200018 */ lwc1 $f0, 0x18($s1) -/* D98AE0 80241250 44801000 */ mtc1 $zero, $f2 -/* D98AE4 80241254 44801800 */ mtc1 $zero, $f3 -/* D98AE8 80241258 46000021 */ cvt.d.s $f0, $f0 -/* D98AEC 8024125C 4620103C */ c.lt.d $f2, $f0 -/* D98AF0 80241260 00000000 */ nop -/* D98AF4 80241264 45000025 */ bc1f .L802412FC -/* D98AF8 80241268 27A50040 */ addiu $a1, $sp, 0x40 -/* D98AFC 8024126C C6200038 */ lwc1 $f0, 0x38($s1) -/* D98B00 80241270 C622003C */ lwc1 $f2, 0x3c($s1) -/* D98B04 80241274 C6240040 */ lwc1 $f4, 0x40($s1) -/* D98B08 80241278 C6260018 */ lwc1 $f6, 0x18($s1) -/* D98B0C 8024127C E7A00040 */ swc1 $f0, 0x40($sp) -/* D98B10 80241280 E7A20044 */ swc1 $f2, 0x44($sp) -/* D98B14 80241284 E7A40048 */ swc1 $f4, 0x48($sp) -/* D98B18 80241288 E7A60010 */ swc1 $f6, 0x10($sp) -/* D98B1C 8024128C C620000C */ lwc1 $f0, 0xc($s1) -/* D98B20 80241290 E7A00014 */ swc1 $f0, 0x14($sp) -/* D98B24 80241294 862200A8 */ lh $v0, 0xa8($s1) -/* D98B28 80241298 44820000 */ mtc1 $v0, $f0 -/* D98B2C 8024129C 00000000 */ nop -/* D98B30 802412A0 46800020 */ cvt.s.w $f0, $f0 -/* D98B34 802412A4 E7A00018 */ swc1 $f0, 0x18($sp) -/* D98B38 802412A8 862200A6 */ lh $v0, 0xa6($s1) -/* D98B3C 802412AC 27A60044 */ addiu $a2, $sp, 0x44 -/* D98B40 802412B0 44820000 */ mtc1 $v0, $f0 -/* D98B44 802412B4 00000000 */ nop -/* D98B48 802412B8 46800020 */ cvt.s.w $f0, $f0 -/* D98B4C 802412BC E7A0001C */ swc1 $f0, 0x1c($sp) -/* D98B50 802412C0 8E240080 */ lw $a0, 0x80($s1) -/* D98B54 802412C4 0C037711 */ jal npc_test_move_simple_with_slipping -/* D98B58 802412C8 27A70048 */ addiu $a3, $sp, 0x48 -/* D98B5C 802412CC 54400001 */ bnel $v0, $zero, .L802412D4 -/* D98B60 802412D0 AE200018 */ sw $zero, 0x18($s1) -.L802412D4: -/* D98B64 802412D4 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D98B68 802412D8 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D98B6C 802412DC 8EA60028 */ lw $a2, 0x28($s5) -/* D98B70 802412E0 0C00A720 */ jal atan2 -/* D98B74 802412E4 8EA70030 */ lw $a3, 0x30($s5) -/* D98B78 802412E8 8E250018 */ lw $a1, 0x18($s1) -/* D98B7C 802412EC 44060000 */ mfc1 $a2, $f0 -/* D98B80 802412F0 0220202D */ daddu $a0, $s1, $zero -/* D98B84 802412F4 0C00EA95 */ jal npc_move_heading -/* D98B88 802412F8 AE26000C */ sw $a2, 0xc($s1) -.L802412FC: -/* D98B8C 802412FC C620001C */ lwc1 $f0, 0x1c($s1) -/* D98B90 80241300 C6220014 */ lwc1 $f2, 0x14($s1) -/* D98B94 80241304 46020001 */ sub.s $f0, $f0, $f2 -/* D98B98 80241308 C622003C */ lwc1 $f2, 0x3c($s1) -/* D98B9C 8024130C C6240064 */ lwc1 $f4, 0x64($s1) -/* D98BA0 80241310 46001080 */ add.s $f2, $f2, $f0 -/* D98BA4 80241314 E620001C */ swc1 $f0, 0x1c($s1) -/* D98BA8 80241318 4604103C */ c.lt.s $f2, $f4 -/* D98BAC 8024131C 00000000 */ nop -/* D98BB0 80241320 450000E2 */ bc1f .L802416AC_D98F3C -/* D98BB4 80241324 E622003C */ swc1 $f2, 0x3c($s1) -/* D98BB8 80241328 2402000C */ addiu $v0, $zero, 0xc -/* D98BBC 8024132C E624003C */ swc1 $f4, 0x3c($s1) -/* D98BC0 80241330 AE620070 */ sw $v0, 0x70($s3) -.L80241334_D98BC4: -/* D98BC4 80241334 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D98BC8 80241338 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D98BCC 8024133C 8EA60028 */ lw $a2, 0x28($s5) -/* D98BD0 80241340 0C00A7B5 */ jal dist2D -/* D98BD4 80241344 8EA70030 */ lw $a3, 0x30($s5) -/* D98BD8 80241348 3C014270 */ lui $at, 0x4270 -/* D98BDC 8024134C 44811000 */ mtc1 $at, $f2 -/* D98BE0 80241350 00000000 */ nop -/* D98BE4 80241354 4602003C */ c.lt.s $f0, $f2 -/* D98BE8 80241358 00000000 */ nop -/* D98BEC 8024135C 45000002 */ bc1f .L80241368 -/* D98BF0 80241360 E6200010 */ swc1 $f0, 0x10($s1) -/* D98BF4 80241364 E6220010 */ swc1 $f2, 0x10($s1) -.L80241368: -/* D98BF8 80241368 C6860018 */ lwc1 $f6, 0x18($s4) -/* D98BFC 8024136C C6400070 */ lwc1 $f0, 0x70($s2) -/* D98C00 80241370 46800020 */ cvt.s.w $f0, $f0 -/* D98C04 80241374 E7A00044 */ swc1 $f0, 0x44($sp) -/* D98C08 80241378 46000021 */ cvt.d.s $f0, $f0 -/* D98C0C 8024137C C6240010 */ lwc1 $f4, 0x10($s1) -/* D98C10 80241380 3C014024 */ lui $at, 0x4024 -/* D98C14 80241384 44811800 */ mtc1 $at, $f3 -/* D98C18 80241388 44801000 */ mtc1 $zero, $f2 -/* D98C1C 8024138C 46062103 */ div.s $f4, $f4, $f6 -/* D98C20 80241390 46220000 */ add.d $f0, $f0, $f2 -/* D98C24 80241394 C622003C */ lwc1 $f2, 0x3c($s1) -/* D98C28 80241398 4600228D */ trunc.w.s $f10, $f4 -/* D98C2C 8024139C 44025000 */ mfc1 $v0, $f10 -/* D98C30 802413A0 00000000 */ nop -/* D98C34 802413A4 A622008E */ sh $v0, 0x8e($s1) -/* D98C38 802413A8 460010A1 */ cvt.d.s $f2, $f2 -/* D98C3C 802413AC 46220001 */ sub.d $f0, $f0, $f2 -/* D98C40 802413B0 00021400 */ sll $v0, $v0, 0x10 -/* D98C44 802413B4 E6260018 */ swc1 $f6, 0x18($s1) -/* D98C48 802413B8 14400003 */ bnez $v0, .L802413C8 -/* D98C4C 802413BC 46200120 */ cvt.s.d $f4, $f0 -/* D98C50 802413C0 24020001 */ addiu $v0, $zero, 1 -/* D98C54 802413C4 A622008E */ sh $v0, 0x8e($s1) -.L802413C8: -/* D98C58 802413C8 8622008E */ lh $v0, 0x8e($s1) -/* D98C5C 802413CC C620001C */ lwc1 $f0, 0x1c($s1) -/* D98C60 802413D0 44821000 */ mtc1 $v0, $f2 -/* D98C64 802413D4 00000000 */ nop -/* D98C68 802413D8 468010A0 */ cvt.s.w $f2, $f2 -/* D98C6C 802413DC 46000007 */ neg.s $f0, $f0 -/* D98C70 802413E0 46020002 */ mul.s $f0, $f0, $f2 -/* D98C74 802413E4 00000000 */ nop -/* D98C78 802413E8 00420018 */ mult $v0, $v0 -/* D98C7C 802413EC 8E230000 */ lw $v1, ($s1) -/* D98C80 802413F0 46040000 */ add.s $f0, $f0, $f4 -/* D98C84 802413F4 A22000AB */ sb $zero, 0xab($s1) -/* D98C88 802413F8 2402FF7F */ addiu $v0, $zero, -0x81 -/* D98C8C 802413FC 00004012 */ mflo $t0 -/* D98C90 80241400 00621824 */ and $v1, $v1, $v0 -/* D98C94 80241404 24020005 */ addiu $v0, $zero, 5 -/* D98C98 80241408 46000000 */ add.s $f0, $f0, $f0 -/* D98C9C 8024140C AE230000 */ sw $v1, ($s1) -/* D98CA0 80241410 44881000 */ mtc1 $t0, $f2 -/* D98CA4 80241414 00000000 */ nop -/* D98CA8 80241418 468010A0 */ cvt.s.w $f2, $f2 -/* D98CAC 8024141C 46000007 */ neg.s $f0, $f0 -/* D98CB0 80241420 46020003 */ div.s $f0, $f0, $f2 -/* D98CB4 80241424 46000005 */ abs.s $f0, $f0 -/* D98CB8 80241428 46000007 */ neg.s $f0, $f0 -/* D98CBC 8024142C E6200014 */ swc1 $f0, 0x14($s1) -/* D98CC0 80241430 AE42006C */ sw $v0, 0x6c($s2) -/* D98CC4 80241434 2402000D */ addiu $v0, $zero, 0xd -/* D98CC8 80241438 A620008E */ sh $zero, 0x8e($s1) -/* D98CCC 8024143C AE620070 */ sw $v0, 0x70($s3) -.L80241440_D98CD0: -/* D98CD0 80241440 C620001C */ lwc1 $f0, 0x1c($s1) -/* D98CD4 80241444 C6220014 */ lwc1 $f2, 0x14($s1) -/* D98CD8 80241448 46020001 */ sub.s $f0, $f0, $f2 -/* D98CDC 8024144C 4480A000 */ mtc1 $zero, $f20 -/* D98CE0 80241450 00000000 */ nop -/* D98CE4 80241454 4614003C */ c.lt.s $f0, $f20 -/* D98CE8 80241458 00000000 */ nop -/* D98CEC 8024145C 45000012 */ bc1f .L802414A8 -/* D98CF0 80241460 E620001C */ swc1 $f0, 0x1c($s1) -/* D98CF4 80241464 27A50040 */ addiu $a1, $sp, 0x40 -/* D98CF8 80241468 27A60044 */ addiu $a2, $sp, 0x44 -/* D98CFC 8024146C 27A2004C */ addiu $v0, $sp, 0x4c -/* D98D00 80241470 C6220038 */ lwc1 $f2, 0x38($s1) -/* D98D04 80241474 C624003C */ lwc1 $f4, 0x3c($s1) -/* D98D08 80241478 C6260040 */ lwc1 $f6, 0x40($s1) -/* D98D0C 8024147C 46000007 */ neg.s $f0, $f0 -/* D98D10 80241480 E7A0004C */ swc1 $f0, 0x4c($sp) -/* D98D14 80241484 E7A20040 */ swc1 $f2, 0x40($sp) -/* D98D18 80241488 E7A40044 */ swc1 $f4, 0x44($sp) -/* D98D1C 8024148C E7A60048 */ swc1 $f6, 0x48($sp) -/* D98D20 80241490 AFA20010 */ sw $v0, 0x10($sp) -/* D98D24 80241494 8E240080 */ lw $a0, 0x80($s1) -/* D98D28 80241498 0C0372DF */ jal npc_raycast_down_sides -/* D98D2C 8024149C 27A70048 */ addiu $a3, $sp, 0x48 -/* D98D30 802414A0 54400001 */ bnel $v0, $zero, .L802414A8 -/* D98D34 802414A4 E634001C */ swc1 $f20, 0x1c($s1) -.L802414A8: -/* D98D38 802414A8 C624003C */ lwc1 $f4, 0x3c($s1) -/* D98D3C 802414AC C620001C */ lwc1 $f0, 0x1c($s1) -/* D98D40 802414B0 46002100 */ add.s $f4, $f4, $f0 -/* D98D44 802414B4 C6200018 */ lwc1 $f0, 0x18($s1) -/* D98D48 802414B8 44801000 */ mtc1 $zero, $f2 -/* D98D4C 802414BC 44801800 */ mtc1 $zero, $f3 -/* D98D50 802414C0 46000021 */ cvt.d.s $f0, $f0 -/* D98D54 802414C4 4620103C */ c.lt.d $f2, $f0 -/* D98D58 802414C8 00000000 */ nop -/* D98D5C 802414CC 45000057 */ bc1f .L8024162C -/* D98D60 802414D0 E624003C */ swc1 $f4, 0x3c($s1) -/* D98D64 802414D4 46002086 */ mov.s $f2, $f4 -/* D98D68 802414D8 C6200038 */ lwc1 $f0, 0x38($s1) -/* D98D6C 802414DC C6240040 */ lwc1 $f4, 0x40($s1) -/* D98D70 802414E0 C6260018 */ lwc1 $f6, 0x18($s1) -/* D98D74 802414E4 E7A20044 */ swc1 $f2, 0x44($sp) -/* D98D78 802414E8 E7A00040 */ swc1 $f0, 0x40($sp) -/* D98D7C 802414EC E7A40048 */ swc1 $f4, 0x48($sp) -/* D98D80 802414F0 E7A60010 */ swc1 $f6, 0x10($sp) -/* D98D84 802414F4 C620000C */ lwc1 $f0, 0xc($s1) -/* D98D88 802414F8 E7A00014 */ swc1 $f0, 0x14($sp) -/* D98D8C 802414FC 862200A8 */ lh $v0, 0xa8($s1) -/* D98D90 80241500 27A50040 */ addiu $a1, $sp, 0x40 -/* D98D94 80241504 44820000 */ mtc1 $v0, $f0 -/* D98D98 80241508 00000000 */ nop -/* D98D9C 8024150C 46800020 */ cvt.s.w $f0, $f0 -/* D98DA0 80241510 E7A00018 */ swc1 $f0, 0x18($sp) -/* D98DA4 80241514 862200A6 */ lh $v0, 0xa6($s1) -/* D98DA8 80241518 27A60044 */ addiu $a2, $sp, 0x44 -/* D98DAC 8024151C 44820000 */ mtc1 $v0, $f0 -/* D98DB0 80241520 00000000 */ nop -/* D98DB4 80241524 46800020 */ cvt.s.w $f0, $f0 -/* D98DB8 80241528 E7A0001C */ swc1 $f0, 0x1c($sp) -/* D98DBC 8024152C 8E240080 */ lw $a0, 0x80($s1) -/* D98DC0 80241530 0C037711 */ jal npc_test_move_simple_with_slipping -/* D98DC4 80241534 27A70048 */ addiu $a3, $sp, 0x48 -/* D98DC8 80241538 10400003 */ beqz $v0, .L80241548 -/* D98DCC 8024153C 00000000 */ nop -/* D98DD0 80241540 08090587 */ j .L8024161C -/* D98DD4 80241544 AE200018 */ sw $zero, 0x18($s1) -.L80241548: -/* D98DD8 80241548 C620001C */ lwc1 $f0, 0x1c($s1) -/* D98DDC 8024154C 3C01C004 */ lui $at, 0xc004 -/* D98DE0 80241550 44811800 */ mtc1 $at, $f3 -/* D98DE4 80241554 44801000 */ mtc1 $zero, $f2 -/* D98DE8 80241558 46000021 */ cvt.d.s $f0, $f0 -/* D98DEC 8024155C 4622003C */ c.lt.d $f0, $f2 -/* D98DF0 80241560 00000000 */ nop -/* D98DF4 80241564 4500002D */ bc1f .L8024161C -/* D98DF8 80241568 00000000 */ nop -/* D98DFC 8024156C 9622008E */ lhu $v0, 0x8e($s1) -/* D98E00 80241570 24420001 */ addiu $v0, $v0, 1 -/* D98E04 80241574 A622008E */ sh $v0, 0x8e($s1) -/* D98E08 80241578 00021400 */ sll $v0, $v0, 0x10 -/* D98E0C 8024157C 8E830020 */ lw $v1, 0x20($s4) -/* D98E10 80241580 00021403 */ sra $v0, $v0, 0x10 -/* D98E14 80241584 0043102A */ slt $v0, $v0, $v1 -/* D98E18 80241588 14400024 */ bnez $v0, .L8024161C -/* D98E1C 8024158C 00000000 */ nop -/* D98E20 80241590 C62C0038 */ lwc1 $f12, 0x38($s1) -/* D98E24 80241594 C62E0040 */ lwc1 $f14, 0x40($s1) -/* D98E28 80241598 8EA60028 */ lw $a2, 0x28($s5) -/* D98E2C 8024159C 0C00A720 */ jal atan2 -/* D98E30 802415A0 8EA70030 */ lw $a3, 0x30($s5) -/* D98E34 802415A4 46000506 */ mov.s $f20, $f0 -/* D98E38 802415A8 C62C000C */ lwc1 $f12, 0xc($s1) -/* D98E3C 802415AC 0C00A70A */ jal get_clamped_angle_diff -/* D98E40 802415B0 4600A386 */ mov.s $f14, $f20 -/* D98E44 802415B4 46000086 */ mov.s $f2, $f0 -/* D98E48 802415B8 8E82001C */ lw $v0, 0x1c($s4) -/* D98E4C 802415BC 46001005 */ abs.s $f0, $f2 -/* D98E50 802415C0 44822000 */ mtc1 $v0, $f4 -/* D98E54 802415C4 00000000 */ nop -/* D98E58 802415C8 46802120 */ cvt.s.w $f4, $f4 -/* D98E5C 802415CC 4600203C */ c.lt.s $f4, $f0 -/* D98E60 802415D0 00000000 */ nop -/* D98E64 802415D4 4500000D */ bc1f .L8024160C -/* D98E68 802415D8 00000000 */ nop -/* D98E6C 802415DC 44800000 */ mtc1 $zero, $f0 -/* D98E70 802415E0 C634000C */ lwc1 $f20, 0xc($s1) -/* D98E74 802415E4 4600103C */ c.lt.s $f2, $f0 -/* D98E78 802415E8 00000000 */ nop -/* D98E7C 802415EC 45000006 */ bc1f .L80241608 -/* D98E80 802415F0 00021023 */ negu $v0, $v0 -/* D98E84 802415F4 44820000 */ mtc1 $v0, $f0 -/* D98E88 802415F8 00000000 */ nop -/* D98E8C 802415FC 46800020 */ cvt.s.w $f0, $f0 -/* D98E90 80241600 08090583 */ j .L8024160C -/* D98E94 80241604 4600A500 */ add.s $f20, $f20, $f0 -.L80241608: -/* D98E98 80241608 4604A500 */ add.s $f20, $f20, $f4 -.L8024160C: -/* D98E9C 8024160C 0C00A6C9 */ jal clamp_angle -/* D98EA0 80241610 4600A306 */ mov.s $f12, $f20 -/* D98EA4 80241614 E620000C */ swc1 $f0, 0xc($s1) -/* D98EA8 80241618 A620008E */ sh $zero, 0x8e($s1) -.L8024161C: -/* D98EAC 8024161C 8E250018 */ lw $a1, 0x18($s1) -/* D98EB0 80241620 8E26000C */ lw $a2, 0xc($s1) -/* D98EB4 80241624 0C00EA95 */ jal npc_move_heading -/* D98EB8 80241628 0220202D */ daddu $a0, $s1, $zero -.L8024162C: -/* D98EBC 8024162C 8E42006C */ lw $v0, 0x6c($s2) -/* D98EC0 80241630 2442FFFF */ addiu $v0, $v0, -1 -/* D98EC4 80241634 1C400003 */ bgtz $v0, .L80241644 -/* D98EC8 80241638 AE42006C */ sw $v0, 0x6c($s2) -/* D98ECC 8024163C 24020005 */ addiu $v0, $zero, 5 -/* D98ED0 80241640 AE42006C */ sw $v0, 0x6c($s2) -.L80241644: -/* D98ED4 80241644 C620003C */ lwc1 $f0, 0x3c($s1) -/* D98ED8 80241648 C6220068 */ lwc1 $f2, 0x68($s1) -/* D98EDC 8024164C 4600103C */ c.lt.s $f2, $f0 -/* D98EE0 80241650 00000000 */ nop -/* D98EE4 80241654 45000015 */ bc1f .L802416AC_D98F3C -/* D98EE8 80241658 2402000E */ addiu $v0, $zero, 0xe -/* D98EEC 8024165C E622003C */ swc1 $f2, 0x3c($s1) -/* D98EF0 80241660 AE620070 */ sw $v0, 0x70($s3) -.L80241664_D98EF4: -/* D98EF4 80241664 8E4200CC */ lw $v0, 0xcc($s2) -/* D98EF8 80241668 922300A9 */ lbu $v1, 0xa9($s1) -/* D98EFC 8024166C 8C440020 */ lw $a0, 0x20($v0) -/* D98F00 80241670 8E220000 */ lw $v0, ($s1) -/* D98F04 80241674 A22300AB */ sb $v1, 0xab($s1) -/* D98F08 80241678 34420080 */ ori $v0, $v0, 0x80 -/* D98F0C 8024167C AE220000 */ sw $v0, ($s1) -/* D98F10 80241680 2402000F */ addiu $v0, $zero, 0xf -/* D98F14 80241684 A622008E */ sh $v0, 0x8e($s1) -/* D98F18 80241688 2402000F */ addiu $v0, $zero, 0xf -/* D98F1C 8024168C AE240028 */ sw $a0, 0x28($s1) -/* D98F20 80241690 AE620070 */ sw $v0, 0x70($s3) -.L80241694_D98F24: -/* D98F24 80241694 9622008E */ lhu $v0, 0x8e($s1) -/* D98F28 80241698 2442FFFF */ addiu $v0, $v0, -1 -/* D98F2C 8024169C A622008E */ sh $v0, 0x8e($s1) -/* D98F30 802416A0 00021400 */ sll $v0, $v0, 0x10 -/* D98F34 802416A4 58400001 */ blezl $v0, .L802416AC_D98F3C -/* D98F38 802416A8 AE600070 */ sw $zero, 0x70($s3) -.L802416AC_D98F3C: -/* D98F3C 802416AC 0000102D */ daddu $v0, $zero, $zero -.L802416B0: -/* D98F40 802416B0 8FBF006C */ lw $ra, 0x6c($sp) -/* D98F44 802416B4 8FB60068 */ lw $s6, 0x68($sp) -/* D98F48 802416B8 8FB50064 */ lw $s5, 0x64($sp) -/* D98F4C 802416BC 8FB40060 */ lw $s4, 0x60($sp) -/* D98F50 802416C0 8FB3005C */ lw $s3, 0x5c($sp) -/* D98F54 802416C4 8FB20058 */ lw $s2, 0x58($sp) -/* D98F58 802416C8 8FB10054 */ lw $s1, 0x54($sp) -/* D98F5C 802416CC 8FB00050 */ lw $s0, 0x50($sp) -/* D98F60 802416D0 D7B40070 */ ldc1 $f20, 0x70($sp) -/* D98F64 802416D4 03E00008 */ jr $ra -/* D98F68 802416D8 27BD0078 */ addiu $sp, $sp, 0x78 -/* D98F6C 802416DC 00000000 */ nop diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index 793cb9d421..ff3c1f6130 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -44,6 +44,7 @@ segments: - [0x1000, c, bss] - [0x1000, hasm, entry_point] - [0x1060, c, is_debug] + - [0x1370, c, main_pre] - [0x1370, c, main] - [0x1B40, c, main_loop] - [0x3BF0, c, input] @@ -273,8 +274,8 @@ segments: - [0x4AC90, pm_effect_loads, effect_loads] - [0x4DF30, c, battle/battle] - [0x4E5A0, bin, n_aspMain_text] - - [0x4F200, data] - - [0x4F410, .data, main] + - [0x4F200, .data, main_pre] + - [0x4F420, .data, main] - [0x4F420, .data, main_loop] - [0x4F660, .data, rumble] - [0x4F670, .data, 43F0] @@ -363,311 +364,387 @@ segments: - [0x8E790, c, 8e790_len_2850] - [0x90FE0, .data, npc_collision] - [0x913B0, .data, world/actions] - - [0x914E0, .data, world/partners] # TODO shiftability: include following images in c file to fix padding issues - - [0x919B0, ci4, ui/a_button_unpressed, 48, 40] - - [0x91D70, palette, ui/a_button_unpressed] - - [0x91D90, ci4, ui/a_button_pressed, 48, 40] - - [0x92150, palette, ui/a_button_pressed] - - [0x92170, ci4, ui/analog_stick, 32, 32] - - [0x92370, palette, ui/analog_stick] - - [0x92390, ci4, ui/analog_stick_left, 40, 32] - - [0x92610, palette, ui/analog_stick_left] - - [0x92630, ci4, ui/analog_stick2, 32, 32] - - [0x92830, palette, ui/analog_stick2] - - [0x92850, ci4, ui/analog_stick_right, 40, 32] - - [0x92AD0, palette, ui/analog_stick_right] - - [0x92AF0, ci4, ui/analog_stick3, 32, 32] - - [0x92CF0, palette, ui/analog_stick3] - - [0x92D10, ci4, ui/analog_stick_down, 32, 32] - - [0x92F10, palette, ui/analog_stick_down] - - [0x92F30, ci4, ui/analog_stick_up, 32, 32] - - [0x93130, palette, ui/analog_stick_up] - - [0x93150, ci4, ui/unk_bar, 72, 16] - - [0x93390, palette, ui/unk_bar] - - [0x933B0, ci4, ui/ok, 24, 16] - - [0x93470, palette, ui/ok] - - [0x93490, ci4, ui/start_button, 48, 40] - - [0x93850, palette, ui/start_button] - - [0x93870, ci4, ui/start_button2, 48, 40] - - [0x93C30, palette, ui/start_button2] - - [0x93C50, ci4, ui/start, 24, 8] - - [0x93CB0, palette, ui/start] - - [0x93CD0, ci4, ui/hammer, 32, 32] - - [0x93ED0, palette, ui/hammer] - - [0x93EF0, palette, ui/hammer.disabled] - - [0x93F10, ci4, ui/super_hammer, 32, 32] - - [0x94110, palette, ui/super_hammer] - - [0x94130, palette, ui/super_hammer.disabled] - - [0x94150, ci4, ui/ultra_hammer, 32, 32] - - [0x94350, palette, ui/ultra_hammer] - - [0x94370, palette, ui/ultra_hammer.disabled] - - [0x94390, ci4, ui/boots, 32, 32] - - [0x94590, palette, ui/boots] - - [0x945B0, palette, ui/boots.disabled] - - [0x945D0, ci4, ui/super_boots, 32, 32] - - [0x947D0, palette, ui/super_boots] - - [0x947F0, palette, ui/super_boots.disabled] - - [0x94810, ci4, ui/ultra_boots, 32, 32] - - [0x94A10, palette, ui/ultra_boots] - - [0x94A30, palette, ui/ultra_boots.disabled] - - [0x94A50, ci4, ui/item, 32, 32] - - [0x94C50, palette, ui/item] - - [0x94C70, palette, ui/item.disabled] - - [0x94C90, ci4, ui/star_spirit, 32, 32] - - [0x94E90, palette, ui/star_spirit] - - [0x94EB0, palette, ui/star_spirit.disabled] - - [0x94ED0, ci4, ui/arrow_left, 16, 16] - - [0x94F50, palette, ui/arrow_left] - - [0x94F70, ci4, ui/arrow_right, 16, 16] - - [0x94FF0, palette, ui/arrow_right] - - [0x95010, ci4, ui/point_right, 16, 16] - - [0x95090, palette, ui/point_right] - - [0x950B0, ci4, ui/pip, 8, 8] - - [0x950D0, palette, ui/pip] - - [0x950F0, ci4, ui/pip2, 8, 8] - - [0x95110, palette, ui/pip2] - - [0x95130, data] - - [0x95990, ci4, ui/kaime, 56, 24] - - [0x95C30, palette, ui/kaime] - - [0x95C50, ci4, ui/unused_1, 16, 16] - - [0x95CD0, palette, ui/unused_1] - - [0x95CF0, ci4, ui/unused_2, 16, 16] - - [0x95D70, palette, ui/unused_2] - - [0x95D90, ci4, ui/unused_3, 16, 16] - - [0x95E10, palette, ui/unused_3] - - [0x95E30, data] - - [0x963B0, ci4, ui/eldstar, 32, 32] - - [0x965B0, palette, ui/eldstar] - - [0x965D0, palette, ui/eldstar.disabled] - - [0x965F0, ci4, ui/mamar, 32, 32] - - [0x967F0, palette, ui/mamar] - - [0x96810, palette, ui/mamar.disabled] - - [0x96830, ci4, ui/skolar, 32, 32] - - [0x96A30, palette, ui/skolar] - - [0x96A50, palette, ui/skolar.disabled] - - [0x96A70, ci4, ui/muskular, 32, 32] - - [0x96C70, palette, ui/muskular] - - [0x96C90, palette, ui/muskular.disabled] - - [0x96CB0, ci4, ui/misstar, 32, 32] - - [0x96EB0, palette, ui/misstar] - - [0x96ED0, palette, ui/misstar.disabled] - - [0x96EF0, ci4, ui/klevar, 32, 32] - - [0x970F0, palette, ui/klevar] - - [0x97110, palette, ui/klevar.disabled] - - [0x97130, ci4, ui/kalmar, 32, 32] - - [0x97330, palette, ui/kalmar] - - [0x97350, palette, ui/kalmar.disabled] - - [0x97370, ci4, ui/all_spirits, 32, 32] - - [0x97570, palette, ui/all_spirits] - - [0x97590, palette, ui/all_spirits.disabled] - - [0x975B0, ci4, ui/peach_beam, 32, 32] - - [0x977B0, palette, ui/peach_beam] - - [0x977D0, palette, ui/peach_beam.disabled] - - [0x977F0, ci4, ui/mario_head, 16, 16] - - [0x97870, palette, ui/mario_head] - - [0x97890, ci4, ui/partner0, 32, 32] - - [0x97A90, palette, ui/partner0] - - [0x97AB0, palette, ui/partner0.disabled] - - [0x97AD0, ci4, ui/goombario, 32, 32] - - [0x97CD0, palette, ui/goombario] - - [0x97CF0, palette, ui/goombario.disabled] - - [0x97D10, ci4, ui/kooper, 32, 32] - - [0x97F10, palette, ui/kooper] - - [0x97F30, palette, ui/kooper.disabled] - - [0x97F50, ci4, ui/bombette, 32, 32] - - [0x98150, palette, ui/bombette] - - [0x98170, palette, ui/bombette.disabled] - - [0x98190, ci4, ui/parakarry, 32, 32] - - [0x98390, palette, ui/parakarry] - - [0x983B0, palette, ui/parakarry.disabled] - - [0x983D0, ci4, ui/bow, 32, 32] - - [0x985D0, palette, ui/bow] - - [0x985F0, palette, ui/bow.disabled] - - [0x98610, ci4, ui/watt, 32, 32] - - [0x98810, palette, ui/watt] - - [0x98830, palette, ui/watt.disabled] - - [0x98850, ci4, ui/sushie, 32, 32] - - [0x98A50, palette, ui/sushie] - - [0x98A70, palette, ui/sushie.disabled] - - [0x98A90, ci4, ui/lakilester, 32, 32] - - [0x98C90, palette, ui/lakilester] - - [0x98CB0, palette, ui/lakilester.disabled] - - [0x98CD0, ci4, ui/partner9, 32, 32] - - [0x98ED0, palette, ui/partner9] - - [0x98EF0, palette, ui/partner9.disabled] - - [0x98F10, ci4, ui/partner10, 32, 32] - - [0x99110, palette, ui/partner10] - - [0x99130, palette, ui/partner10.disabled] - - [0x99150, ci4, ui/partner11, 32, 32] - - [0x99350, palette, ui/partner11] - - [0x99370, palette, ui/partner11.disabled] - - [0x99390, data] - - [0x99430, ci4, ui/0, 16, 16] - - [0x994B0, palette, ui/0] - - [0x994D0, ci4, ui/1, 16, 16] - - [0x99550, palette, ui/1] - - [0x99570, ci4, ui/2, 16, 16] - - [0x995F0, palette, ui/2] - - [0x99610, ci4, ui/3, 16, 16] - - [0x99690, palette, ui/3] - - [0x996B0, ci4, ui/4, 16, 16] - - [0x99730, palette, ui/4] - - [0x99750, ci4, ui/5, 16, 16] - - [0x997D0, palette, ui/5] - - [0x997F0, ci4, ui/6, 16, 16] - - [0x99870, palette, ui/6] - - [0x99890, ci4, ui/7, 16, 16] - - [0x99910, palette, ui/7] - - [0x99930, ci4, ui/8, 16, 16] - - [0x999B0, palette, ui/8] - - [0x999D0, ci4, ui/9, 16, 16] - - [0x99A50, palette, ui/9] - - [0x99A70, ci4, ui/hp, 16, 16] - - [0x99AF0, palette, ui/hp] - - [0x99B10, ci4, ui/fp, 16, 16] - - [0x99B90, palette, ui/fp] - - [0x99BB0, data] - - [0x99FB0, ci4, ui/coins0, 16, 16] - - [0x9A030, palette, ui/coins0] - - [0x9A050, ci4, ui/coins1, 16, 16] - - [0x9A0D0, palette, ui/coins1] - - [0x9A0F0, ci4, ui/coins2, 16, 16] - - [0x9A170, palette, ui/coins2] - - [0x9A190, ci4, ui/coins3, 16, 16] - - [0x9A210, palette, ui/coins3] - - [0x9A230, ci4, ui/coins4, 16, 16] - - [0x9A2B0, palette, ui/coins4] - - [0x9A2D0, ci4, ui/coins5, 16, 16] - - [0x9A350, palette, ui/coins5] - - [0x9A370, ci4, ui/coins6, 16, 16] - - [0x9A3F0, palette, ui/coins6] - - [0x9A410, ci4, ui/coins7, 16, 16] - - [0x9A490, palette, ui/coins7] - - [0x9A4B0, ci4, ui/coins8, 16, 16] - - [0x9A530, palette, ui/coins8] - - [0x9A550, ci4, ui/coins9, 16, 16] - - [0x9A5D0, palette, ui/coins9] - - [0x9A5F0, ci4, ui/star_points0, 16, 16] - - [0x9A670, palette, ui/star_points0] - - [0x9A690, ci4, ui/star_points1, 16, 16] - - [0x9A710, palette, ui/star_points1] - - [0x9A730, ci4, ui/star_points2, 16, 16] - - [0x9A7B0, palette, ui/star_points2] - - [0x9A7D0, ci4, ui/star_points3, 16, 16] - - [0x9A850, palette, ui/star_points3] - - [0x9A870, ci4, ui/star_points4, 16, 16] - - [0x9A8F0, palette, ui/star_points4] - - [0x9A910, ci4, ui/star_points5, 16, 16] - - [0x9A990, palette, ui/star_points5] - - [0x9A9B0, ci4, ui/star_points6, 16, 16] - - [0x9AA30, palette, ui/star_points6] - - [0x9AA50, ci4, ui/star_points7, 16, 16] - - [0x9AAD0, palette, ui/star_points7] - - [0x9AAF0, ci4, ui/bluepip, 16, 16] - - [0x9AB70, palette, ui/bluepip] - - [0x9AB90, ci4, ui/bluepip2, 16, 16] - - [0x9AC10, palette, ui/bluepip2] - - [0x9AC30, ci4, ui/charge_jump, 24, 24] - - [0x9AD50, palette, ui/charge_jump] - - [0x9AD70, ci4, ui/charge_hammer, 24, 24] - - [0x9AE90, palette, ui/charge_hammer] - - [0x9AEB0, ci4, ui/charge_goombario, 24, 24] - - [0x9AFD0, palette, ui/charge_goombario] - - [0x9AFF0, ci4, ui/exclamation, 24, 24] - - [0x9B110, palette, ui/exclamation] - - [0x9B130, ci4, ui/sleeping, 16, 16] - - [0x9B1B0, palette, ui/sleeping] - - [0x9B1D0, ci4, ui/sleeping2, 16, 16] - - [0x9B250, palette, ui/sleeping2] - - [0x9B270, ci4, ui/sleeping3, 16, 16] - - [0x9B2F0, palette, ui/sleeping3] - - [0x9B310, ci4, ui/shocked, 16, 16] - - [0x9B390, palette, ui/shocked] - - [0x9B3B0, ci4, ui/shocked2, 16, 16] - - [0x9B430, palette, ui/shocked2] - - [0x9B450, ci4, ui/shocked3, 16, 16] - - [0x9B4D0, palette, ui/shocked3] - - [0x9B4F0, ci4, ui/shocked4, 16, 16] - - [0x9B570, palette, ui/shocked4] - - [0x9B590, ci4, ui/dizzy, 16, 16] - - [0x9B610, palette, ui/dizzy] - - [0x9B630, ci4, ui/dizzy2, 16, 16] - - [0x9B6B0, palette, ui/dizzy2] - - [0x9B6D0, ci4, ui/dizzy3, 16, 16] - - [0x9B750, palette, ui/dizzy3] - - [0x9B770, ci4, ui/dizzy4, 16, 16] - - [0x9B7F0, palette, ui/dizzy4] - - [0x9B810, ci4, ui/poisoned, 16, 16] - - [0x9B890, palette, ui/poisoned] - - [0x9B8B0, ci4, ui/poisoned2, 16, 16] - - [0x9B930, palette, ui/poisoned2] - - [0x9B950, ci4, ui/frozen, 16, 16] - - [0x9B9D0, palette, ui/frozen] - - [0x9B9F0, ci4, ui/frozen2, 16, 16] - - [0x9BA70, palette, ui/frozen2] - - [0x9BA90, ci4, ui/frozen3, 16, 16] - - [0x9BB10, palette, ui/frozen3] - - [0x9BB30, ci4, ui/frozen4, 16, 16] - - [0x9BBB0, palette, ui/frozen4] - - [0x9BBD0, ci4, ui/timed, 16, 16] - - [0x9BC50, palette, ui/timed] - - [0x9BC70, ci4, ui/timed2, 16, 16] - - [0x9BCF0, palette, ui/timed2] - - [0x9BD10, ci4, ui/timed3, 16, 16] - - [0x9BD90, palette, ui/timed3] - - [0x9BDB0, ci4, ui/timed4, 16, 16] - - [0x9BE30, palette, ui/timed4] - - [0x9BE50, ci4, ui/downed, 16, 16] - - [0x9BED0, palette, ui/downed] - - [0x9BEF0, ci4, ui/downed2, 16, 16] - - [0x9BF70, palette, ui/downed2] - - [0x9BF90, ci4, ui/shrink, 16, 16] - - [0x9C010, palette, ui/shrink] - - [0x9C030, ci4, ui/shrink2, 16, 16] - - [0x9C0B0, palette, ui/shrink2] - - [0x9C0D0, ci4, ui/shrink3, 16, 16] - - [0x9C150, palette, ui/shrink3] - - [0x9C170, ci4, ui/shrink4, 16, 16] - - [0x9C1F0, palette, ui/shrink4] - - [0x9C210, ci4, ui/transparent, 16, 16] - - [0x9C290, palette, ui/transparent] - - [0x9C2B0, ci4, ui/transparent2, 16, 16] - - [0x9C330, palette, ui/transparent2] - - [0x9C350, ci4, ui/transparent3, 16, 16] - - [0x9C3D0, palette, ui/transparent3] - - [0x9C3F0, ci4, ui/transparent4, 16, 16] - - [0x9C470, palette, ui/transparent4] - - [0x9C490, ci4, ui/transparent5, 16, 16] - - [0x9C510, palette, ui/transparent5] - - [0x9C530, ci4, ui/transparent6, 16, 16] - - [0x9C5B0, palette, ui/transparent6] - - [0x9C5D0, ci4, ui/peril, 40, 16] - - [0x9C710, palette, ui/peril] - - [0x9C730, ci4, ui/danger, 40, 16] - - [0x9C870, palette, ui/danger] - - [0x9C890, ci4, ui/refund, 40, 24] - - [0x9CA70, palette, ui/refund] - - [0x9CA90, ci4, ui/happy, 40, 16] - - [0x9CBD0, palette, ui/happy] - - [0x9CBF0, ci4, ui/hp_drain, 40, 16] - - [0x9CD30, palette, ui/hp_drain] - - [0x9CD50, ci4, ui/diamond, 32, 32] - - [0x9CF50, palette, ui/diamond] - - [0x9CF70, palette, ui/diamond.disabled] - - [0x9CF90, ci4, ui/orb_blue, 32, 32] - - [0x9D190, palette, ui/orb_blue] - - [0x9D1B0, palette, ui/orb_blue.disabled] - - [0x9D1D0, ci4, ui/orb_green, 32, 32] - - [0x9D3D0, palette, ui/orb_green] - - [0x9D3F0, palette, ui/orb_green.disabled] - - [0x9D410, ci4, ui/orb_red, 32, 32] - - [0x9D610, palette, ui/orb_red] - - [0x9D630, palette, ui/orb_red.disabled] - - start: 0x9D650 # TODO: The images before this (just above) should probably be with these in c + - [0x914E0, .data, world/partners] + - start: 0x919B0 type: .data - name: 9D650 + name: 919B0 subsegments: - - [0x9D650, .data, 9D650] + - [0x919B0, .data, 919B0] + - [0x919B0, ci4, ui/a_button_unpressed, 48, 40] + - [0x91D70, palette, ui/a_button_unpressed] + - [0x91D90, ci4, ui/a_button_pressed, 48, 40] + - [0x92150, palette, ui/a_button_pressed] + - [0x92170, ci4, ui/analog_stick, 32, 32] + - [0x92370, palette, ui/analog_stick] + - [0x92390, ci4, ui/analog_stick_left, 40, 32] + - [0x92610, palette, ui/analog_stick_left] + - [0x92630, ci4, ui/analog_stick2, 32, 32] + - [0x92830, palette, ui/analog_stick2] + - [0x92850, ci4, ui/analog_stick_right, 40, 32] + - [0x92AD0, palette, ui/analog_stick_right] + - [0x92AF0, ci4, ui/analog_stick3, 32, 32] + - [0x92CF0, palette, ui/analog_stick3] + - [0x92D10, ci4, ui/analog_stick_down, 32, 32] + - [0x92F10, palette, ui/analog_stick_down] + - [0x92F30, ci4, ui/analog_stick_up, 32, 32] + - [0x93130, palette, ui/analog_stick_up] + - [0x93150, ci4, ui/unk_bar, 72, 16] + - [0x93390, palette, ui/unk_bar] + - [0x933B0, ci4, ui/ok, 24, 16] + - [0x93470, palette, ui/ok] + - [0x93490, ci4, ui/start_button, 48, 40] + - [0x93850, palette, ui/start_button] + - [0x93870, ci4, ui/start_button2, 48, 40] + - [0x93C30, palette, ui/start_button2] + - [0x93C50, ci4, ui/start, 24, 8] + - [0x93CB0, palette, ui/start] + - [0x93CD0, ci4, ui/hammer, 32, 32] + - [0x93ED0, palette, ui/hammer] + - [0x93EF0, palette, ui/hammer.disabled] + - [0x93F10, ci4, ui/super_hammer, 32, 32] + - [0x94110, palette, ui/super_hammer] + - [0x94130, palette, ui/super_hammer.disabled] + - [0x94150, ci4, ui/ultra_hammer, 32, 32] + - [0x94350, palette, ui/ultra_hammer] + - [0x94370, palette, ui/ultra_hammer.disabled] + - [0x94390, ci4, ui/boots, 32, 32] + - [0x94590, palette, ui/boots] + - [0x945B0, palette, ui/boots.disabled] + - [0x945D0, ci4, ui/super_boots, 32, 32] + - [0x947D0, palette, ui/super_boots] + - [0x947F0, palette, ui/super_boots.disabled] + - [0x94810, ci4, ui/ultra_boots, 32, 32] + - [0x94A10, palette, ui/ultra_boots] + - [0x94A30, palette, ui/ultra_boots.disabled] + - [0x94A50, ci4, ui/item, 32, 32] + - [0x94C50, palette, ui/item] + - [0x94C70, palette, ui/item.disabled] + - [0x94C90, ci4, ui/star_spirit, 32, 32] + - [0x94E90, palette, ui/star_spirit] + - [0x94EB0, palette, ui/star_spirit.disabled] + - [0x94ED0, ci4, ui/arrow_left, 16, 16] + - [0x94F50, palette, ui/arrow_left] + - [0x94F70, ci4, ui/arrow_right, 16, 16] + - [0x94FF0, palette, ui/arrow_right] + - [0x95010, ci4, ui/point_right, 16, 16] + - [0x95090, palette, ui/point_right] + - [0x950B0, ci4, ui/pip, 8, 8] + - [0x950D0, palette, ui/pip] + - [0x950F0, ci4, ui/pip2, 8, 8] + - [0x95110, palette, ui/pip2] + - [0x95130, ci4, ui/coin_sparkle, 8, 8] + - [0x95150, palette, ui/coin_sparkle] + - [0x95170, ci4, ui/coin_sparkle2, 8, 8] + - [0x95190, palette, ui/coin_sparkle2] + - [0x951B0, ci4, ui/coin_sparkle3, 8, 8] + - [0x951D0, palette, ui/coin_sparkle3] + - [0x951F0, ci4, ui/coin_sparkle4, 8, 8] + - [0x95210, palette, ui/coin_sparkle4] + - [0x95230, ci4, ui/coin_sparkle5, 8, 8] + - [0x95250, palette, ui/coin_sparkle5] + - [0x95270, ci4, ui/coin_sparkle6, 8, 8] + - [0x95290, palette, ui/coin_sparkle6] + - [0x952B0, ci4, ui/coin_sparkle7, 8, 8] + - [0x952D0, palette, ui/coin_sparkle7] + - [0x952F0, ia8, ui/status_sp_shine, 24, 24] + - [0x95530, ci4, ui/star_piece_sparkle, 16, 16] + - [0x955B0, palette, ui/star_piece_sparkle] + - [0x955D0, ci4, ui/star_piece_sparkle2, 16, 16] + - [0x95650, palette, ui/star_piece_sparkle2] + - [0x95670, ci4, ui/star_piece_sparkle3, 16, 16] + - [0x956F0, palette, ui/star_piece_sparkle3] + - [0x95710, ci4, ui/menu_times, 8, 8] + - [0x95730, palette, ui/menu_times] + - [0x95750, ci4, ui/fp_cost, 16, 8] + - [0x95790, palette, ui/fp_cost] + - [0x957B0, palette, ui/fp_cost.reduced] + - [0x957D0, palette, ui/fp_cost.reduced2x] + - [0x957E0, palette, ui/fp_cost.notenough] + - [0x95810, ci4, ui/pow_cost, 16, 8] + - [0x95850, palette, ui/pow_cost] + - [0x95870, palette, ui/pow_cost.reduced] + - [0x95890, palette, ui/pow_cost.reduced2x] + - [0x958B0, palette, ui/pow_cost.notenough] + - [0x958D0, ci4, ui/green_arrow_down, 16, 8] + - [0x95910, palette, ui/green_arrow_down] + - [0x95930, ci4, ui/green_arrow_up, 16, 8] + - [0x95970, palette, ui/green_arrow_up] + - [0x95990, ci4, ui/kaime, 56, 24] + - [0x95C30, palette, ui/kaime] + - [0x95C50, ci4, ui/unused_1, 16, 16] + - [0x95CD0, palette, ui/unused_1] + - [0x95CF0, ci4, ui/unused_2, 16, 16] + - [0x95D70, palette, ui/unused_2] + - [0x95D90, ci4, ui/unused_3, 16, 16] + - [0x95E10, palette, ui/unused_3] + - [0x95E30, ci4, ui/red_bar1, 112, 8] + - [0x95FF0, palette, ui/red_bar1] + - [0x96010, ci4, ui/empty_bar, 112, 8] + - [0x961D0, palette, ui/empty_bar] + - [0x961F0, ci4, ui/red_bar2, 104, 8] + - [0x96390, palette, ui/red_bar2] + - [0x963B0, ci4, ui/eldstar, 32, 32] + - [0x965B0, palette, ui/eldstar] + - [0x965D0, palette, ui/eldstar.disabled] + - [0x965F0, ci4, ui/mamar, 32, 32] + - [0x967F0, palette, ui/mamar] + - [0x96810, palette, ui/mamar.disabled] + - [0x96830, ci4, ui/skolar, 32, 32] + - [0x96A30, palette, ui/skolar] + - [0x96A50, palette, ui/skolar.disabled] + - [0x96A70, ci4, ui/muskular, 32, 32] + - [0x96C70, palette, ui/muskular] + - [0x96C90, palette, ui/muskular.disabled] + - [0x96CB0, ci4, ui/misstar, 32, 32] + - [0x96EB0, palette, ui/misstar] + - [0x96ED0, palette, ui/misstar.disabled] + - [0x96EF0, ci4, ui/klevar, 32, 32] + - [0x970F0, palette, ui/klevar] + - [0x97110, palette, ui/klevar.disabled] + - [0x97130, ci4, ui/kalmar, 32, 32] + - [0x97330, palette, ui/kalmar] + - [0x97350, palette, ui/kalmar.disabled] + - [0x97370, ci4, ui/all_spirits, 32, 32] + - [0x97570, palette, ui/all_spirits] + - [0x97590, palette, ui/all_spirits.disabled] + - [0x975B0, ci4, ui/peach_beam, 32, 32] + - [0x977B0, palette, ui/peach_beam] + - [0x977D0, palette, ui/peach_beam.disabled] + - [0x977F0, ci4, ui/mario_head, 16, 16] + - [0x97870, palette, ui/mario_head] + - [0x97890, ci4, ui/partner0, 32, 32] + - [0x97A90, palette, ui/partner0] + - [0x97AB0, palette, ui/partner0.disabled] + - [0x97AD0, ci4, ui/goombario, 32, 32] + - [0x97CD0, palette, ui/goombario] + - [0x97CF0, palette, ui/goombario.disabled] + - [0x97D10, ci4, ui/kooper, 32, 32] + - [0x97F10, palette, ui/kooper] + - [0x97F30, palette, ui/kooper.disabled] + - [0x97F50, ci4, ui/bombette, 32, 32] + - [0x98150, palette, ui/bombette] + - [0x98170, palette, ui/bombette.disabled] + - [0x98190, ci4, ui/parakarry, 32, 32] + - [0x98390, palette, ui/parakarry] + - [0x983B0, palette, ui/parakarry.disabled] + - [0x983D0, ci4, ui/bow, 32, 32] + - [0x985D0, palette, ui/bow] + - [0x985F0, palette, ui/bow.disabled] + - [0x98610, ci4, ui/watt, 32, 32] + - [0x98810, palette, ui/watt] + - [0x98830, palette, ui/watt.disabled] + - [0x98850, ci4, ui/sushie, 32, 32] + - [0x98A50, palette, ui/sushie] + - [0x98A70, palette, ui/sushie.disabled] + - [0x98A90, ci4, ui/lakilester, 32, 32] + - [0x98C90, palette, ui/lakilester] + - [0x98CB0, palette, ui/lakilester.disabled] + - [0x98CD0, ci4, ui/partner9, 32, 32] + - [0x98ED0, palette, ui/partner9] + - [0x98EF0, palette, ui/partner9.disabled] + - [0x98F10, ci4, ui/partner10, 32, 32] + - [0x99110, palette, ui/partner10] + - [0x99130, palette, ui/partner10.disabled] + - [0x99150, ci4, ui/partner11, 32, 32] + - [0x99350, palette, ui/partner11] + - [0x99370, palette, ui/partner11.disabled] + - [0x99390, ci4, ui/status_times, 8, 8] + - [0x993B0, palette, ui/status_times] + - [0x993D0, ci4, ui/status_slash, 8, 16] + - [0x99410, palette, ui/status_slash] + - [0x99430, ci4, ui/0, 16, 16] + - [0x994B0, palette, ui/0] + - [0x994D0, ci4, ui/1, 16, 16] + - [0x99550, palette, ui/1] + - [0x99570, ci4, ui/2, 16, 16] + - [0x995F0, palette, ui/2] + - [0x99610, ci4, ui/3, 16, 16] + - [0x99690, palette, ui/3] + - [0x996B0, ci4, ui/4, 16, 16] + - [0x99730, palette, ui/4] + - [0x99750, ci4, ui/5, 16, 16] + - [0x997D0, palette, ui/5] + - [0x997F0, ci4, ui/6, 16, 16] + - [0x99870, palette, ui/6] + - [0x99890, ci4, ui/7, 16, 16] + - [0x99910, palette, ui/7] + - [0x99930, ci4, ui/8, 16, 16] + - [0x999B0, palette, ui/8] + - [0x999D0, ci4, ui/9, 16, 16] + - [0x99A50, palette, ui/9] + - [0x99A70, ci4, ui/hp, 16, 16] + - [0x99AF0, palette, ui/hp] + - [0x99B10, ci4, ui/fp, 16, 16] + - [0x99B90, palette, ui/fp] + - [0x99BB0, ci4, ui/status_sp_increment_1, 8, 8] + - [0x99BD0, palette, ui/status_sp_increment_1] + - [0x99BF0, ci4, ui/status_sp_increment_2, 8, 8] + - [0x99C10, palette, ui/status_sp_increment_2] + - [0x99C30, ci4, ui/status_sp_increment_3, 8, 8] + - [0x99C50, palette, ui/status_sp_increment_3] + - [0x99C70, ci4, ui/status_sp_increment_4, 8, 8] + - [0x99C90, palette, ui/status_sp_increment_4] + - [0x99CB0, ci4, ui/status_sp_increment_5, 8, 8] + - [0x99CD0, palette, ui/status_sp_increment_5] + - [0x99CF0, ci4, ui/status_sp_increment_6, 8, 8] + - [0x99D10, palette, ui/status_sp_increment_6] + - [0x99D30, ci4, ui/status_sp_increment_7, 8, 8] + - [0x99D50, palette, ui/status_sp_increment_7] + - [0x99D70, ci4, ui/status_sp_empty_increment, 8, 8] + - [0x99D90, palette, ui/status_sp_empty_increment] + - [0x99DB0, ci4, ui/status_sp_star_1, 8, 8] + - [0x99DD0, palette, ui/status_sp_star_1] + - [0x99DF0, ci4, ui/status_sp_star_2, 8, 8] + - [0x99E10, palette, ui/status_sp_star_2] + - [0x99E30, ci4, ui/status_sp_star_3, 8, 8] + - [0x99E50, palette, ui/status_sp_star_3] + - [0x99E70, ci4, ui/status_sp_star_4, 8, 8] + - [0x99E90, palette, ui/status_sp_star_4] + - [0x99EB0, ci4, ui/status_sp_star_5, 8, 8] + - [0x99ED0, palette, ui/status_sp_star_5] + - [0x99EF0, ci4, ui/status_sp_star_6, 8, 8] + - [0x99F10, palette, ui/status_sp_star_6] + - [0x99F30, ci4, ui/status_sp_star_7, 8, 8] + - [0x99F50, palette, ui/status_sp_star_7] + - [0x99F70, ci4, ui/status_sp_star_empty, 8, 8] + - [0x99F90, palette, ui/status_sp_star_empty] + - [0x99FB0, ci4, ui/coins0, 16, 16] + - [0x9A030, palette, ui/coins0] + - [0x9A050, ci4, ui/coins1, 16, 16] + - [0x9A0D0, palette, ui/coins1] + - [0x9A0F0, ci4, ui/coins2, 16, 16] + - [0x9A170, palette, ui/coins2] + - [0x9A190, ci4, ui/coins3, 16, 16] + - [0x9A210, palette, ui/coins3] + - [0x9A230, ci4, ui/coins4, 16, 16] + - [0x9A2B0, palette, ui/coins4] + - [0x9A2D0, ci4, ui/coins5, 16, 16] + - [0x9A350, palette, ui/coins5] + - [0x9A370, ci4, ui/coins6, 16, 16] + - [0x9A3F0, palette, ui/coins6] + - [0x9A410, ci4, ui/coins7, 16, 16] + - [0x9A490, palette, ui/coins7] + - [0x9A4B0, ci4, ui/coins8, 16, 16] + - [0x9A530, palette, ui/coins8] + - [0x9A550, ci4, ui/coins9, 16, 16] + - [0x9A5D0, palette, ui/coins9] + - [0x9A5F0, ci4, ui/star_points0, 16, 16] + - [0x9A670, palette, ui/star_points0] + - [0x9A690, ci4, ui/star_points1, 16, 16] + - [0x9A710, palette, ui/star_points1] + - [0x9A730, ci4, ui/star_points2, 16, 16] + - [0x9A7B0, palette, ui/star_points2] + - [0x9A7D0, ci4, ui/star_points3, 16, 16] + - [0x9A850, palette, ui/star_points3] + - [0x9A870, ci4, ui/star_points4, 16, 16] + - [0x9A8F0, palette, ui/star_points4] + - [0x9A910, ci4, ui/star_points5, 16, 16] + - [0x9A990, palette, ui/star_points5] + - [0x9A9B0, ci4, ui/star_points6, 16, 16] + - [0x9AA30, palette, ui/star_points6] + - [0x9AA50, ci4, ui/star_points7, 16, 16] + - [0x9AAD0, palette, ui/star_points7] + - [0x9AAF0, ci4, ui/bluepip, 16, 16] + - [0x9AB70, palette, ui/bluepip] + - [0x9AB90, ci4, ui/bluepip2, 16, 16] + - [0x9AC10, palette, ui/bluepip2] + - [0x9AC30, ci4, ui/charge_jump, 24, 24] + - [0x9AD50, palette, ui/charge_jump] + - [0x9AD70, ci4, ui/charge_hammer, 24, 24] + - [0x9AE90, palette, ui/charge_hammer] + - [0x9AEB0, ci4, ui/charge_goombario, 24, 24] + - [0x9AFD0, palette, ui/charge_goombario] + - [0x9AFF0, ci4, ui/exclamation, 24, 24] + - [0x9B110, palette, ui/exclamation] + - [0x9B130, ci4, ui/sleeping, 16, 16] + - [0x9B1B0, palette, ui/sleeping] + - [0x9B1D0, ci4, ui/sleeping2, 16, 16] + - [0x9B250, palette, ui/sleeping2] + - [0x9B270, ci4, ui/sleeping3, 16, 16] + - [0x9B2F0, palette, ui/sleeping3] + - [0x9B310, ci4, ui/shocked, 16, 16] + - [0x9B390, palette, ui/shocked] + - [0x9B3B0, ci4, ui/shocked2, 16, 16] + - [0x9B430, palette, ui/shocked2] + - [0x9B450, ci4, ui/shocked3, 16, 16] + - [0x9B4D0, palette, ui/shocked3] + - [0x9B4F0, ci4, ui/shocked4, 16, 16] + - [0x9B570, palette, ui/shocked4] + - [0x9B590, ci4, ui/dizzy, 16, 16] + - [0x9B610, palette, ui/dizzy] + - [0x9B630, ci4, ui/dizzy2, 16, 16] + - [0x9B6B0, palette, ui/dizzy2] + - [0x9B6D0, ci4, ui/dizzy3, 16, 16] + - [0x9B750, palette, ui/dizzy3] + - [0x9B770, ci4, ui/dizzy4, 16, 16] + - [0x9B7F0, palette, ui/dizzy4] + - [0x9B810, ci4, ui/poisoned, 16, 16] + - [0x9B890, palette, ui/poisoned] + - [0x9B8B0, ci4, ui/poisoned2, 16, 16] + - [0x9B930, palette, ui/poisoned2] + - [0x9B950, ci4, ui/frozen, 16, 16] + - [0x9B9D0, palette, ui/frozen] + - [0x9B9F0, ci4, ui/frozen2, 16, 16] + - [0x9BA70, palette, ui/frozen2] + - [0x9BA90, ci4, ui/frozen3, 16, 16] + - [0x9BB10, palette, ui/frozen3] + - [0x9BB30, ci4, ui/frozen4, 16, 16] + - [0x9BBB0, palette, ui/frozen4] + - [0x9BBD0, ci4, ui/timed, 16, 16] + - [0x9BC50, palette, ui/timed] + - [0x9BC70, ci4, ui/timed2, 16, 16] + - [0x9BCF0, palette, ui/timed2] + - [0x9BD10, ci4, ui/timed3, 16, 16] + - [0x9BD90, palette, ui/timed3] + - [0x9BDB0, ci4, ui/timed4, 16, 16] + - [0x9BE30, palette, ui/timed4] + - [0x9BE50, ci4, ui/downed, 16, 16] + - [0x9BED0, palette, ui/downed] + - [0x9BEF0, ci4, ui/downed2, 16, 16] + - [0x9BF70, palette, ui/downed2] + - [0x9BF90, ci4, ui/shrink, 16, 16] + - [0x9C010, palette, ui/shrink] + - [0x9C030, ci4, ui/shrink2, 16, 16] + - [0x9C0B0, palette, ui/shrink2] + - [0x9C0D0, ci4, ui/shrink3, 16, 16] + - [0x9C150, palette, ui/shrink3] + - [0x9C170, ci4, ui/shrink4, 16, 16] + - [0x9C1F0, palette, ui/shrink4] + - [0x9C210, ci4, ui/transparent, 16, 16] + - [0x9C290, palette, ui/transparent] + - [0x9C2B0, ci4, ui/transparent2, 16, 16] + - [0x9C330, palette, ui/transparent2] + - [0x9C350, ci4, ui/transparent3, 16, 16] + - [0x9C3D0, palette, ui/transparent3] + - [0x9C3F0, ci4, ui/transparent4, 16, 16] + - [0x9C470, palette, ui/transparent4] + - [0x9C490, ci4, ui/transparent5, 16, 16] + - [0x9C510, palette, ui/transparent5] + - [0x9C530, ci4, ui/transparent6, 16, 16] + - [0x9C5B0, palette, ui/transparent6] + - [0x9C5D0, ci4, ui/peril, 40, 16] + - [0x9C710, palette, ui/peril] + - [0x9C730, ci4, ui/danger, 40, 16] + - [0x9C870, palette, ui/danger] + - [0x9C890, ci4, ui/refund, 40, 24] + - [0x9CA70, palette, ui/refund] + - [0x9CA90, ci4, ui/happy, 40, 16] + - [0x9CBD0, palette, ui/happy] + - [0x9CBF0, ci4, ui/hp_drain, 40, 16] + - [0x9CD30, palette, ui/hp_drain] + - [0x9CD50, ci4, ui/diamond, 32, 32] + - [0x9CF50, palette, ui/diamond] + - [0x9CF70, palette, ui/diamond.disabled] + - [0x9CF90, ci4, ui/orb_blue, 32, 32] + - [0x9D190, palette, ui/orb_blue] + - [0x9D1B0, palette, ui/orb_blue.disabled] + - [0x9D1D0, ci4, ui/orb_green, 32, 32] + - [0x9D3D0, palette, ui/orb_green] + - [0x9D3F0, palette, ui/orb_green.disabled] + - [0x9D410, ci4, ui/orb_red, 32, 32] + - [0x9D610, palette, ui/orb_red] + - [0x9D630, palette, ui/orb_red.disabled] + - [0x9D650] - [0x9D658, rgba32, ui/stat_heart, 16, 16] - [0x9DA58] - [0x9DA60, rgba32, ui/stat_flower, 16, 16] @@ -2751,7 +2828,7 @@ segments: vram: 0xE0082000 subsegments: - [0x385640, c, disable_x] - - [0x386340, data] + - [0x386340] - [0x3863B0, bin] # disable_x gfx - name: effect_bombette_breaking dir: effects @@ -3553,7 +3630,7 @@ segments: overlay: True subsegments: - [0x425B50, c, "07"] - - [0x426130, data] + - [0x426130] - type: code start: 0x426170 vram: 0x802A9000 @@ -3598,7 +3675,7 @@ segments: overlay: True subsegments: - [0x4282E0, c, body_slam] - - [0x428A30, data] + - [0x428A30] - type: code start: 0x428A70 vram: 0x802A9000 @@ -3607,7 +3684,7 @@ segments: overlay: True subsegments: - [0x428A70, c, air_lift] - - [0x4292C0, data] + - [0x4292C0] - type: code start: 0x429320 vram: 0x802A9000 @@ -3616,7 +3693,7 @@ segments: overlay: True subsegments: - [0x429320, c, air_raid] - - [0x429C90, data] + - [0x429C90] - type: code start: 0x429D20 vram: 0x802A9000 diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index 8f17f3f469..3a6e54cc40 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -474,7 +474,7 @@ is_point_within_region = 0x80048FD4; // type:func rom:0x243D4 basic_ai_check_player_dist = 0x800490B4; // type:func rom:0x244B4 ai_check_player_dist = 0x800493EC; // type:func rom:0x247EC ai_enemy_play_sound = 0x800494C0; // type:func rom:0x248C0 -func_80049550 = 0x80049550; // type:func rom:0x24950 +ai_try_set_state = 0x80049550; // type:func rom:0x24950 basic_ai_wander_init = 0x800495A0; // type:func rom:0x249A0 basic_ai_wander = 0x800496B8; // type:func rom:0x24AB8 basic_ai_loiter_init = 0x80049B44; // type:func rom:0x24F44 @@ -1292,6 +1292,12 @@ func_80072CEC = 0x80072CEC; // type:func rom:0x4E0EC func_80072CF4 = 0x80072CF4; // type:func rom:0x4E0F4 setup_demo_player = 0x80072D2C; // type:func rom:0x4E12C load_demo_battle = 0x80072E14; // type:func rom:0x4E214 +D_80073E00 = 0x80073E00; // type:data rom:0x4F200 +D_80073E04 = 0x80073E04; // type:data rom:0x4F204 +D_80073E08 = 0x80073E08; // type:data rom:0x4F208 +D_80073E0A = 0x80073E0A; // type:data rom:0x4F20A +D_80073E0C = 0x80073E0C; // type:data rom:0x4F20C +D_80073E10 = 0x80073E10; // type:data rom:0x4F210 D_80074010 = 0x80074010; // type:data rom:0x4F410 gGameStepDelayAmount = 0x80074020; // type:data rom:0x4F420 gGameStepDelayCount = 0x80074021; // type:data rom:0x4F421 @@ -1894,6 +1900,7 @@ D_800A3BD8 = 0x800A3BD8; // type:data rom:0x7EFD8 nuAuDmaBufList = 0x800A3BE0; // rom:0x7EFE0 phys_peach_update = 0x800E5C78; // type:func rom:0x7F128 set_action_state = 0x800E5DA4; // type:func rom:0x7F254 +D_800A3FC8 = 0x800A3FC8; // type:data rom:0x7F3C8 D_800A3FD0 = 0x800A3FD0; // type:data rom:0x7F3D0 D_800A3FD4 = 0x800A3FD4; // type:data rom:0x7F3D4 D_800A3FE0 = 0x800A3FE0; // type:data rom:0x7F3E0 @@ -2238,9 +2245,382 @@ wSavedPartnerPosZ = 0x800F8344; // type:data rom:0x917F4 gPartnerAnimations = 0x800F8348; // rom:0x917F8 size:0x1B0 D_800B6590 = 0x800B6590; // type:data rom:0x91990 D_800F84F8 = 0x800F84F8; // type:data rom:0x919A8 +ui_a_button_unpressed_png = 0x800F8500; // type:data rom:0x919B0 +ui_a_button_unpressed_pal = 0x800F88C0; // type:data rom:0x91D70 +ui_a_button_pressed_png = 0x800F88E0; // type:data rom:0x91D90 +ui_a_button_pressed_pal = 0x800F8CA0; // type:data rom:0x92150 +ui_analog_stick_png = 0x800F8CC0; // type:data rom:0x92170 +ui_analog_stick_pal = 0x800F8EC0; // type:data rom:0x92370 +ui_analog_stick_left_png = 0x800F8EE0; // type:data rom:0x92390 +ui_analog_stick_left_pal = 0x800F9160; // type:data rom:0x92610 +ui_analog_stick2_png = 0x800F9180; // type:data rom:0x92630 +ui_analog_stick2_pal = 0x800F9380; // type:data rom:0x92830 +ui_analog_stick_right_png = 0x800F93A0; // type:data rom:0x92850 +ui_analog_stick_right_pal = 0x800F9620; // type:data rom:0x92AD0 +ui_analog_stick3_png = 0x800F9640; // type:data rom:0x92AF0 +ui_analog_stick3_pal = 0x800F9840; // type:data rom:0x92CF0 +ui_analog_stick_down_png = 0x800F9860; // type:data rom:0x92D10 +ui_analog_stick_down_pal = 0x800F9A60; // type:data rom:0x92F10 +ui_analog_stick_up_png = 0x800F9A80; // type:data rom:0x92F30 +ui_analog_stick_up_pal = 0x800F9C80; // type:data rom:0x93130 +ui_unk_bar_png = 0x800F9CA0; // type:data rom:0x93150 +ui_unk_bar_pal = 0x800F9EE0; // type:data rom:0x93390 +ui_ok_png = 0x800F9F00; // type:data rom:0x933B0 +ui_ok_pal = 0x800F9FC0; // type:data rom:0x93470 +ui_start_button_png = 0x800F9FE0; // type:data rom:0x93490 +ui_start_button_pal = 0x800FA3A0; // type:data rom:0x93850 +ui_start_button2_png = 0x800FA3C0; // type:data rom:0x93870 nuYieldBuf = 0x800B8590; // type:data rom:0x93990 +ui_start_button2_pal = 0x800FA780; // type:data rom:0x93C30 +ui_start_png = 0x800FA7A0; // type:data rom:0x93C50 +ui_start_pal = 0x800FA800; // type:data rom:0x93CB0 +ui_hammer_png = 0x800FA820; // type:data rom:0x93CD0 +ui_hammer_pal = 0x800FAA20; // type:data rom:0x93ED0 +ui_hammer_disabled_pal = 0x800FAA40; // type:data rom:0x93EF0 +ui_super_hammer_png = 0x800FAA60; // type:data rom:0x93F10 +ui_super_hammer_pal = 0x800FAC60; // type:data rom:0x94110 +ui_super_hammer_disabled_pal = 0x800FAC80; // type:data rom:0x94130 +ui_ultra_hammer_png = 0x800FACA0; // type:data rom:0x94150 +ui_ultra_hammer_pal = 0x800FAEA0; // type:data rom:0x94350 +ui_ultra_hammer_disabled_pal = 0x800FAEC0; // type:data rom:0x94370 +ui_boots_png = 0x800FAEE0; // type:data rom:0x94390 +ui_boots_pal = 0x800FB0E0; // type:data rom:0x94590 D_800B91A0 = 0x800B91A0; // type:data rom:0x945A0 +ui_boots_disabled_pal = 0x800FB100; // type:data rom:0x945B0 D_800B91D0 = 0x800B91D0; // type:data rom:0x945D0 +ui_super_boots_pal = 0x800FB320; // type:data rom:0x947D0 +ui_super_boots_disabled_pal = 0x800FB340; // type:data rom:0x947F0 +ui_ultra_boots_png = 0x800FB360; // type:data rom:0x94810 +ui_ultra_boots_pal = 0x800FB560; // type:data rom:0x94A10 +ui_ultra_boots_disabled_pal = 0x800FB580; // type:data rom:0x94A30 +ui_item_png = 0x800FB5A0; // type:data rom:0x94A50 +ui_item_pal = 0x800FB7A0; // type:data rom:0x94C50 +ui_item_disabled_pal = 0x800FB7C0; // type:data rom:0x94C70 +ui_star_spirit_png = 0x800FB7E0; // type:data rom:0x94C90 +ui_star_spirit_pal = 0x800FB9E0; // type:data rom:0x94E90 +ui_star_spirit_disabled_pal = 0x800FBA00; // type:data rom:0x94EB0 +ui_arrow_left_png = 0x800FBA20; // type:data rom:0x94ED0 +ui_arrow_left_pal = 0x800FBAA0; // type:data rom:0x94F50 +ui_arrow_right_png = 0x800FBAC0; // type:data rom:0x94F70 +ui_arrow_right_pal = 0x800FBB40; // type:data rom:0x94FF0 +ui_point_right_png = 0x800FBB60; // type:data rom:0x95010 +ui_point_right_pal = 0x800FBBE0; // type:data rom:0x95090 +ui_pip_png = 0x800FBC00; // type:data rom:0x950B0 +ui_pip_pal = 0x800FBC20; // type:data rom:0x950D0 +ui_pip2_png = 0x800FBC40; // type:data rom:0x950F0 +ui_pip2_pal = 0x800FBC60; // type:data rom:0x95110 +ui_coin_sparkle_png = 0x800FBC80; // type:data rom:0x95130 +ui_coin_sparkle_pal = 0x800FBCA0; // type:data rom:0x95150 +ui_coin_sparkle2_png = 0x800FBCC0; // type:data rom:0x95170 +ui_coin_sparkle2_pal = 0x800FBCE0; // type:data rom:0x95190 +ui_coin_sparkle3_png = 0x800FBD00; // type:data rom:0x951B0 +ui_coin_sparkle3_pal = 0x800FBD20; // type:data rom:0x951D0 +ui_coin_sparkle4_png = 0x800FBD40; // type:data rom:0x951F0 +ui_coin_sparkle4_pal = 0x800FBD60; // type:data rom:0x95210 +ui_coin_sparkle5_png = 0x800FBD80; // type:data rom:0x95230 +ui_coin_sparkle5_pal = 0x800FBDA0; // type:data rom:0x95250 +ui_coin_sparkle6_png = 0x800FBDC0; // type:data rom:0x95270 +ui_coin_sparkle6_pal = 0x800FBDE0; // type:data rom:0x95290 +ui_coin_sparkle7_png = 0x800FBE00; // type:data rom:0x952B0 +ui_coin_sparkle7_pal = 0x800FBE20; // type:data rom:0x952D0 +ui_status_sp_shine_png = 0x800FBE40; // type:data rom:0x952F0 +ui_star_piece_sparkle_png = 0x800FC080; // type:data rom:0x95530 +ui_star_piece_sparkle_pal = 0x800FC100; // type:data rom:0x955B0 +ui_star_piece_sparkle2_png = 0x800FC120; // type:data rom:0x955D0 +ui_star_piece_sparkle2_pal = 0x800FC1A0; // type:data rom:0x95650 +ui_star_piece_sparkle3_png = 0x800FC1C0; // type:data rom:0x95670 +ui_star_piece_sparkle3_pal = 0x800FC240; // type:data rom:0x956F0 +ui_menu_times_png = 0x800FC260; // type:data rom:0x95710 +ui_menu_times_pal = 0x800FC280; // type:data rom:0x95730 +ui_fp_cost_png = 0x800FC2A0; // type:data rom:0x95750 +ui_fp_cost_pal = 0x800FC2E0; // type:data rom:0x95790 +ui_fp_cost_reduced_pal = 0x800FC300; // type:data rom:0x957B0 +ui_fp_cost_reduced2x_pal = 0x800FC320; // type:data rom:0x957D0 +ui_fp_cost_notenough_pal = 0x800FC330; // type:data rom:0x957E0 +ui_pow_cost_png = 0x800FC360; // type:data rom:0x95810 +ui_pow_cost_pal = 0x800FC3A0; // type:data rom:0x95850 +ui_pow_cost_reduced_pal = 0x800FC3C0; // type:data rom:0x95870 +ui_pow_cost_reduced2x_pal = 0x800FC3E0; // type:data rom:0x95890 +ui_pow_cost_notenough_pal = 0x800FC400; // type:data rom:0x958B0 +ui_green_arrow_down_png = 0x800FC420; // type:data rom:0x958D0 +ui_green_arrow_down_pal = 0x800FC460; // type:data rom:0x95910 +ui_green_arrow_up_png = 0x800FC480; // type:data rom:0x95930 +ui_green_arrow_up_pal = 0x800FC4C0; // type:data rom:0x95970 +ui_kaime_png = 0x800FC4E0; // type:data rom:0x95990 +ui_kaime_pal = 0x800FC780; // type:data rom:0x95C30 +ui_unused_1_png = 0x800FC7A0; // type:data rom:0x95C50 +ui_unused_1_pal = 0x800FC820; // type:data rom:0x95CD0 +ui_unused_2_png = 0x800FC840; // type:data rom:0x95CF0 +ui_unused_2_pal = 0x800FC8C0; // type:data rom:0x95D70 +ui_unused_3_png = 0x800FC8E0; // type:data rom:0x95D90 +ui_unused_3_pal = 0x800FC960; // type:data rom:0x95E10 +ui_red_bar1_png = 0x800FC980; // type:data rom:0x95E30 +ui_red_bar1_pal = 0x800FCB40; // type:data rom:0x95FF0 +ui_empty_bar_png = 0x800FCB60; // type:data rom:0x96010 +ui_empty_bar_pal = 0x800FCD20; // type:data rom:0x961D0 +ui_red_bar2_png = 0x800FCD40; // type:data rom:0x961F0 +ui_red_bar2_pal = 0x800FCEE0; // type:data rom:0x96390 +ui_eldstar_png = 0x800FCF00; // type:data rom:0x963B0 +ui_eldstar_pal = 0x800FD100; // type:data rom:0x965B0 +ui_eldstar_disabled_pal = 0x800FD120; // type:data rom:0x965D0 +ui_mamar_png = 0x800FD140; // type:data rom:0x965F0 +ui_mamar_pal = 0x800FD340; // type:data rom:0x967F0 +ui_mamar_disabled_pal = 0x800FD360; // type:data rom:0x96810 +ui_skolar_png = 0x800FD380; // type:data rom:0x96830 +ui_skolar_pal = 0x800FD580; // type:data rom:0x96A30 +ui_skolar_disabled_pal = 0x800FD5A0; // type:data rom:0x96A50 +ui_muskular_png = 0x800FD5C0; // type:data rom:0x96A70 +ui_muskular_pal = 0x800FD7C0; // type:data rom:0x96C70 +ui_muskular_disabled_pal = 0x800FD7E0; // type:data rom:0x96C90 +ui_misstar_png = 0x800FD800; // type:data rom:0x96CB0 +ui_misstar_pal = 0x800FDA00; // type:data rom:0x96EB0 +ui_misstar_disabled_pal = 0x800FDA20; // type:data rom:0x96ED0 +ui_klevar_png = 0x800FDA40; // type:data rom:0x96EF0 +ui_klevar_pal = 0x800FDC40; // type:data rom:0x970F0 +ui_klevar_disabled_pal = 0x800FDC60; // type:data rom:0x97110 +ui_kalmar_png = 0x800FDC80; // type:data rom:0x97130 +ui_kalmar_pal = 0x800FDE80; // type:data rom:0x97330 +ui_kalmar_disabled_pal = 0x800FDEA0; // type:data rom:0x97350 +ui_all_spirits_png = 0x800FDEC0; // type:data rom:0x97370 +ui_all_spirits_pal = 0x800FE0C0; // type:data rom:0x97570 +ui_all_spirits_disabled_pal = 0x800FE0E0; // type:data rom:0x97590 +ui_peach_beam_png = 0x800FE100; // type:data rom:0x975B0 +ui_peach_beam_pal = 0x800FE300; // type:data rom:0x977B0 +ui_peach_beam_disabled_pal = 0x800FE320; // type:data rom:0x977D0 +ui_mario_head_png = 0x800FE340; // type:data rom:0x977F0 +ui_mario_head_pal = 0x800FE3C0; // type:data rom:0x97870 +ui_partner0_png = 0x800FE3E0; // type:data rom:0x97890 +ui_partner0_pal = 0x800FE5E0; // type:data rom:0x97A90 +ui_partner0_disabled_pal = 0x800FE600; // type:data rom:0x97AB0 +ui_goombario_png = 0x800FE620; // type:data rom:0x97AD0 +ui_goombario_pal = 0x800FE820; // type:data rom:0x97CD0 +ui_goombario_disabled_pal = 0x800FE840; // type:data rom:0x97CF0 +ui_kooper_png = 0x800FE860; // type:data rom:0x97D10 +ui_kooper_pal = 0x800FEA60; // type:data rom:0x97F10 +ui_kooper_disabled_pal = 0x800FEA80; // type:data rom:0x97F30 +ui_bombette_png = 0x800FEAA0; // type:data rom:0x97F50 +ui_bombette_pal = 0x800FECA0; // type:data rom:0x98150 +ui_bombette_disabled_pal = 0x800FECC0; // type:data rom:0x98170 +ui_parakarry_png = 0x800FECE0; // type:data rom:0x98190 +ui_parakarry_pal = 0x800FEEE0; // type:data rom:0x98390 +ui_parakarry_disabled_pal = 0x800FEF00; // type:data rom:0x983B0 +ui_bow_png = 0x800FEF20; // type:data rom:0x983D0 +ui_bow_pal = 0x800FF120; // type:data rom:0x985D0 +ui_bow_disabled_pal = 0x800FF140; // type:data rom:0x985F0 +ui_watt_png = 0x800FF160; // type:data rom:0x98610 +ui_watt_pal = 0x800FF360; // type:data rom:0x98810 +ui_watt_disabled_pal = 0x800FF380; // type:data rom:0x98830 +ui_sushie_png = 0x800FF3A0; // type:data rom:0x98850 +ui_sushie_pal = 0x800FF5A0; // type:data rom:0x98A50 +ui_sushie_disabled_pal = 0x800FF5C0; // type:data rom:0x98A70 +ui_lakilester_png = 0x800FF5E0; // type:data rom:0x98A90 +ui_lakilester_pal = 0x800FF7E0; // type:data rom:0x98C90 +ui_lakilester_disabled_pal = 0x800FF800; // type:data rom:0x98CB0 +ui_partner9_png = 0x800FF820; // type:data rom:0x98CD0 +ui_partner9_pal = 0x800FFA20; // type:data rom:0x98ED0 +ui_partner9_disabled_pal = 0x800FFA40; // type:data rom:0x98EF0 +ui_partner10_png = 0x800FFA60; // type:data rom:0x98F10 +ui_partner10_pal = 0x800FFC60; // type:data rom:0x99110 +ui_partner10_disabled_pal = 0x800FFC80; // type:data rom:0x99130 +ui_partner11_png = 0x800FFCA0; // type:data rom:0x99150 +ui_partner11_pal = 0x800FFEA0; // type:data rom:0x99350 +ui_partner11_disabled_pal = 0x800FFEC0; // type:data rom:0x99370 +ui_status_times_png = 0x800FFEE0; // type:data rom:0x99390 +ui_status_times_pal = 0x800FFF00; // type:data rom:0x993B0 +ui_status_slash_png = 0x800FFF20; // type:data rom:0x993D0 +ui_status_slash_pal = 0x800FFF60; // type:data rom:0x99410 +ui_0_png = 0x800FFF80; // type:data rom:0x99430 +ui_0_pal = 0x80100000; // type:data rom:0x994B0 +ui_1_png = 0x80100020; // type:data rom:0x994D0 +ui_1_pal = 0x801000A0; // type:data rom:0x99550 +ui_2_png = 0x801000C0; // type:data rom:0x99570 +ui_2_pal = 0x80100140; // type:data rom:0x995F0 +ui_3_png = 0x80100160; // type:data rom:0x99610 +ui_3_pal = 0x801001E0; // type:data rom:0x99690 +ui_4_png = 0x80100200; // type:data rom:0x996B0 +ui_4_pal = 0x80100280; // type:data rom:0x99730 +ui_5_png = 0x801002A0; // type:data rom:0x99750 +ui_5_pal = 0x80100320; // type:data rom:0x997D0 +ui_6_png = 0x80100340; // type:data rom:0x997F0 +ui_6_pal = 0x801003C0; // type:data rom:0x99870 +ui_7_png = 0x801003E0; // type:data rom:0x99890 +ui_7_pal = 0x80100460; // type:data rom:0x99910 +ui_8_png = 0x80100480; // type:data rom:0x99930 +ui_8_pal = 0x80100500; // type:data rom:0x999B0 +ui_9_png = 0x80100520; // type:data rom:0x999D0 +ui_9_pal = 0x801005A0; // type:data rom:0x99A50 +ui_hp_png = 0x801005C0; // type:data rom:0x99A70 +ui_hp_pal = 0x80100640; // type:data rom:0x99AF0 +ui_fp_png = 0x80100660; // type:data rom:0x99B10 +ui_fp_pal = 0x801006E0; // type:data rom:0x99B90 +ui_status_sp_increment_1_png = 0x80100700; // type:data rom:0x99BB0 +ui_status_sp_increment_1_pal = 0x80100720; // type:data rom:0x99BD0 +ui_status_sp_increment_2_png = 0x80100740; // type:data rom:0x99BF0 +ui_status_sp_increment_2_pal = 0x80100760; // type:data rom:0x99C10 +ui_status_sp_increment_3_png = 0x80100780; // type:data rom:0x99C30 +ui_status_sp_increment_3_pal = 0x801007A0; // type:data rom:0x99C50 +ui_status_sp_increment_4_png = 0x801007C0; // type:data rom:0x99C70 +ui_status_sp_increment_4_pal = 0x801007E0; // type:data rom:0x99C90 +ui_status_sp_increment_5_png = 0x80100800; // type:data rom:0x99CB0 +ui_status_sp_increment_5_pal = 0x80100820; // type:data rom:0x99CD0 +ui_status_sp_increment_6_png = 0x80100840; // type:data rom:0x99CF0 +ui_status_sp_increment_6_pal = 0x80100860; // type:data rom:0x99D10 +ui_status_sp_increment_7_png = 0x80100880; // type:data rom:0x99D30 +ui_status_sp_increment_7_pal = 0x801008A0; // type:data rom:0x99D50 +ui_status_sp_empty_increment_png = 0x801008C0; // type:data rom:0x99D70 +ui_status_sp_empty_increment_pal = 0x801008E0; // type:data rom:0x99D90 +ui_status_sp_star_1_png = 0x80100900; // type:data rom:0x99DB0 +ui_status_sp_star_1_pal = 0x80100920; // type:data rom:0x99DD0 +ui_status_sp_star_2_png = 0x80100940; // type:data rom:0x99DF0 +ui_status_sp_star_2_pal = 0x80100960; // type:data rom:0x99E10 +ui_status_sp_star_3_png = 0x80100980; // type:data rom:0x99E30 +ui_status_sp_star_3_pal = 0x801009A0; // type:data rom:0x99E50 +ui_status_sp_star_4_png = 0x801009C0; // type:data rom:0x99E70 +ui_status_sp_star_4_pal = 0x801009E0; // type:data rom:0x99E90 +ui_status_sp_star_5_png = 0x80100A00; // type:data rom:0x99EB0 +ui_status_sp_star_5_pal = 0x80100A20; // type:data rom:0x99ED0 +ui_status_sp_star_6_png = 0x80100A40; // type:data rom:0x99EF0 +ui_status_sp_star_6_pal = 0x80100A60; // type:data rom:0x99F10 +ui_status_sp_star_7_png = 0x80100A80; // type:data rom:0x99F30 +ui_status_sp_star_7_pal = 0x80100AA0; // type:data rom:0x99F50 +ui_status_sp_star_empty_png = 0x80100AC0; // type:data rom:0x99F70 +ui_status_sp_star_empty_pal = 0x80100AE0; // type:data rom:0x99F90 +ui_coins0_png = 0x80100B00; // type:data rom:0x99FB0 +ui_coins0_pal = 0x80100B80; // type:data rom:0x9A030 +ui_coins1_png = 0x80100BA0; // type:data rom:0x9A050 +ui_coins1_pal = 0x80100C20; // type:data rom:0x9A0D0 +ui_coins2_png = 0x80100C40; // type:data rom:0x9A0F0 +ui_coins2_pal = 0x80100CC0; // type:data rom:0x9A170 +ui_coins3_png = 0x80100CE0; // type:data rom:0x9A190 +ui_coins3_pal = 0x80100D60; // type:data rom:0x9A210 +ui_coins4_png = 0x80100D80; // type:data rom:0x9A230 +ui_coins4_pal = 0x80100E00; // type:data rom:0x9A2B0 +ui_coins5_png = 0x80100E20; // type:data rom:0x9A2D0 +ui_coins5_pal = 0x80100EA0; // type:data rom:0x9A350 +ui_coins6_png = 0x80100EC0; // type:data rom:0x9A370 +ui_coins6_pal = 0x80100F40; // type:data rom:0x9A3F0 +ui_coins7_png = 0x80100F60; // type:data rom:0x9A410 +ui_coins7_pal = 0x80100FE0; // type:data rom:0x9A490 +ui_coins8_png = 0x80101000; // type:data rom:0x9A4B0 +ui_coins8_pal = 0x80101080; // type:data rom:0x9A530 +ui_coins9_png = 0x801010A0; // type:data rom:0x9A550 +ui_coins9_pal = 0x80101120; // type:data rom:0x9A5D0 +ui_star_points0_png = 0x80101140; // type:data rom:0x9A5F0 +ui_star_points0_pal = 0x801011C0; // type:data rom:0x9A670 +ui_star_points1_png = 0x801011E0; // type:data rom:0x9A690 +ui_star_points1_pal = 0x80101260; // type:data rom:0x9A710 +ui_star_points2_png = 0x80101280; // type:data rom:0x9A730 +ui_star_points2_pal = 0x80101300; // type:data rom:0x9A7B0 +ui_star_points3_png = 0x80101320; // type:data rom:0x9A7D0 +ui_star_points3_pal = 0x801013A0; // type:data rom:0x9A850 +ui_star_points4_png = 0x801013C0; // type:data rom:0x9A870 +ui_star_points4_pal = 0x80101440; // type:data rom:0x9A8F0 +ui_star_points5_png = 0x80101460; // type:data rom:0x9A910 +ui_star_points5_pal = 0x801014E0; // type:data rom:0x9A990 +ui_star_points6_png = 0x80101500; // type:data rom:0x9A9B0 +ui_star_points6_pal = 0x80101580; // type:data rom:0x9AA30 +ui_star_points7_png = 0x801015A0; // type:data rom:0x9AA50 +ui_star_points7_pal = 0x80101620; // type:data rom:0x9AAD0 +ui_bluepip_png = 0x80101640; // type:data rom:0x9AAF0 +ui_bluepip_pal = 0x801016C0; // type:data rom:0x9AB70 +ui_bluepip2_png = 0x801016E0; // type:data rom:0x9AB90 +ui_bluepip2_pal = 0x80101760; // type:data rom:0x9AC10 +ui_charge_jump_png = 0x80101780; // type:data rom:0x9AC30 +ui_charge_jump_pal = 0x801018A0; // type:data rom:0x9AD50 +ui_charge_hammer_png = 0x801018C0; // type:data rom:0x9AD70 +ui_charge_hammer_pal = 0x801019E0; // type:data rom:0x9AE90 +ui_charge_goombario_png = 0x80101A00; // type:data rom:0x9AEB0 +ui_charge_goombario_pal = 0x80101B20; // type:data rom:0x9AFD0 +ui_exclamation_png = 0x80101B40; // type:data rom:0x9AFF0 +ui_exclamation_pal = 0x80101C60; // type:data rom:0x9B110 +ui_sleeping_png = 0x80101C80; // type:data rom:0x9B130 +ui_sleeping_pal = 0x80101D00; // type:data rom:0x9B1B0 +ui_sleeping2_png = 0x80101D20; // type:data rom:0x9B1D0 +ui_sleeping2_pal = 0x80101DA0; // type:data rom:0x9B250 +ui_sleeping3_png = 0x80101DC0; // type:data rom:0x9B270 +ui_sleeping3_pal = 0x80101E40; // type:data rom:0x9B2F0 +ui_shocked_png = 0x80101E60; // type:data rom:0x9B310 +ui_shocked_pal = 0x80101EE0; // type:data rom:0x9B390 +ui_shocked2_png = 0x80101F00; // type:data rom:0x9B3B0 +ui_shocked2_pal = 0x80101F80; // type:data rom:0x9B430 +ui_shocked3_png = 0x80101FA0; // type:data rom:0x9B450 +ui_shocked3_pal = 0x80102020; // type:data rom:0x9B4D0 +ui_shocked4_png = 0x80102040; // type:data rom:0x9B4F0 +ui_shocked4_pal = 0x801020C0; // type:data rom:0x9B570 +ui_dizzy_png = 0x801020E0; // type:data rom:0x9B590 +ui_dizzy_pal = 0x80102160; // type:data rom:0x9B610 +ui_dizzy2_png = 0x80102180; // type:data rom:0x9B630 +ui_dizzy2_pal = 0x80102200; // type:data rom:0x9B6B0 +ui_dizzy3_png = 0x80102220; // type:data rom:0x9B6D0 +ui_dizzy3_pal = 0x801022A0; // type:data rom:0x9B750 +ui_dizzy4_png = 0x801022C0; // type:data rom:0x9B770 +ui_dizzy4_pal = 0x80102340; // type:data rom:0x9B7F0 +ui_poisoned_png = 0x80102360; // type:data rom:0x9B810 +ui_poisoned_pal = 0x801023E0; // type:data rom:0x9B890 +ui_poisoned2_png = 0x80102400; // type:data rom:0x9B8B0 +ui_poisoned2_pal = 0x80102480; // type:data rom:0x9B930 +ui_frozen_png = 0x801024A0; // type:data rom:0x9B950 +ui_frozen_pal = 0x80102520; // type:data rom:0x9B9D0 +ui_frozen2_png = 0x80102540; // type:data rom:0x9B9F0 +ui_frozen2_pal = 0x801025C0; // type:data rom:0x9BA70 +ui_frozen3_png = 0x801025E0; // type:data rom:0x9BA90 +ui_frozen3_pal = 0x80102660; // type:data rom:0x9BB10 +ui_frozen4_png = 0x80102680; // type:data rom:0x9BB30 +ui_frozen4_pal = 0x80102700; // type:data rom:0x9BBB0 +ui_timed_png = 0x80102720; // type:data rom:0x9BBD0 +ui_timed_pal = 0x801027A0; // type:data rom:0x9BC50 +ui_timed2_png = 0x801027C0; // type:data rom:0x9BC70 +ui_timed2_pal = 0x80102840; // type:data rom:0x9BCF0 +ui_timed3_png = 0x80102860; // type:data rom:0x9BD10 +ui_timed3_pal = 0x801028E0; // type:data rom:0x9BD90 +ui_timed4_png = 0x80102900; // type:data rom:0x9BDB0 +ui_timed4_pal = 0x80102980; // type:data rom:0x9BE30 +ui_downed_png = 0x801029A0; // type:data rom:0x9BE50 +ui_downed_pal = 0x80102A20; // type:data rom:0x9BED0 +ui_downed2_png = 0x80102A40; // type:data rom:0x9BEF0 +ui_downed2_pal = 0x80102AC0; // type:data rom:0x9BF70 +ui_shrink_png = 0x80102AE0; // type:data rom:0x9BF90 +ui_shrink_pal = 0x80102B60; // type:data rom:0x9C010 +ui_shrink2_png = 0x80102B80; // type:data rom:0x9C030 +ui_shrink2_pal = 0x80102C00; // type:data rom:0x9C0B0 +ui_shrink3_png = 0x80102C20; // type:data rom:0x9C0D0 +ui_shrink3_pal = 0x80102CA0; // type:data rom:0x9C150 +ui_shrink4_png = 0x80102CC0; // type:data rom:0x9C170 +ui_shrink4_pal = 0x80102D40; // type:data rom:0x9C1F0 +ui_transparent_png = 0x80102D60; // type:data rom:0x9C210 +ui_transparent_pal = 0x80102DE0; // type:data rom:0x9C290 +ui_transparent2_png = 0x80102E00; // type:data rom:0x9C2B0 +ui_transparent2_pal = 0x80102E80; // type:data rom:0x9C330 +ui_transparent3_png = 0x80102EA0; // type:data rom:0x9C350 +ui_transparent3_pal = 0x80102F20; // type:data rom:0x9C3D0 +ui_transparent4_png = 0x80102F40; // type:data rom:0x9C3F0 +ui_transparent4_pal = 0x80102FC0; // type:data rom:0x9C470 +ui_transparent5_png = 0x80102FE0; // type:data rom:0x9C490 +ui_transparent5_pal = 0x80103060; // type:data rom:0x9C510 +ui_transparent6_png = 0x80103080; // type:data rom:0x9C530 +ui_transparent6_pal = 0x80103100; // type:data rom:0x9C5B0 +ui_peril_png = 0x80103120; // type:data rom:0x9C5D0 +ui_peril_pal = 0x80103260; // type:data rom:0x9C710 +ui_danger_png = 0x80103280; // type:data rom:0x9C730 +ui_danger_pal = 0x801033C0; // type:data rom:0x9C870 +ui_refund_png = 0x801033E0; // type:data rom:0x9C890 +ui_refund_pal = 0x801035C0; // type:data rom:0x9CA70 +ui_happy_png = 0x801035E0; // type:data rom:0x9CA90 +ui_happy_pal = 0x80103720; // type:data rom:0x9CBD0 +ui_hp_drain_png = 0x80103740; // type:data rom:0x9CBF0 +ui_hp_drain_pal = 0x80103880; // type:data rom:0x9CD30 +ui_diamond_png = 0x801038A0; // type:data rom:0x9CD50 +ui_diamond_pal = 0x80103AA0; // type:data rom:0x9CF50 +ui_diamond_disabled_pal = 0x80103AC0; // type:data rom:0x9CF70 +ui_orb_blue_png = 0x80103AE0; // type:data rom:0x9CF90 +ui_orb_blue_pal = 0x80103CE0; // type:data rom:0x9D190 +ui_orb_blue_disabled_pal = 0x80103D00; // type:data rom:0x9D1B0 +ui_orb_green_png = 0x80103D20; // type:data rom:0x9D1D0 +ui_orb_green_pal = 0x80103F20; // type:data rom:0x9D3D0 +ui_orb_green_disabled_pal = 0x80103F40; // type:data rom:0x9D3F0 +ui_orb_red_png = 0x80103F60; // type:data rom:0x9D410 +ui_orb_red_pal = 0x80104160; // type:data rom:0x9D610 +ui_orb_red_disabled_pal = 0x80104180; // type:data rom:0x9D630 D_801041A0 = 0x801041A0; // type:data rom:0x9D650 ui_stat_heart_png = 0x801041A8; // type:data rom:0x9D658 D_801045A8 = 0x801045A8; // type:data rom:0x9DA58 @@ -2567,7 +2947,7 @@ gZoneCollisionData = 0x800D91D0; // type:data rom:0xB45D0 wMapHitName = 0x800D91E0; // type:data rom:0xB45E0 nuSiMgrMesgQ = 0x800D91F8; // type:data rom:0xB45F8 wMapShapeName = 0x800D9230; // type:data rom:0xB4630 -nuAuHeap = 0x800D9248; // type:data rom:0xB4648 struct:ALHeap +nuAuHeap = 0x800D9248; // type:data rom:0xB4648 nuGfxTask = 0x800D9278; // type:data rom:0xB4678 animator_make_mirrorZ = 0x8011DFD0; // type:func rom:0xB46D0 animator_make_mirrorY = 0x8011E014; // type:func rom:0xB4714 @@ -3094,11 +3474,11 @@ D_8014C298 = 0x8014C298; // type:data rom:0xE2998 D_8014C2D8 = 0x8014C2D8; // type:data rom:0xE29D8 gMsgNumbers = 0x8014C340; // type:data rom:0xE2A40 D_8014C368 = 0x8014C368; // type:data rom:0xE2A68 -D_8014C3C0 = 0x8014C3C0; // type:data rom:0xE2AC0 -D_8014C400 = 0x8014C400; // type:data rom:0xE2B00 -D_8014C440 = 0x8014C440; // type:data rom:0xE2B40 -D_8014C480 = 0x8014C480; // type:data rom:0xE2B80 -D_8014C4C0 = 0x8014C4C0; // type:data rom:0xE2BC0 +gMsgSpeechBoxLQuad = 0x8014C3C0; // type:data rom:0xE2AC0 +gMsgSpeechBoxMQuad = 0x8014C400; // type:data rom:0xE2B00 +gMsgSpeechBoxRQuad = 0x8014C440; // type:data rom:0xE2B40 +gMsgUnkArrowQuad = 0x8014C480; // type:data rom:0xE2B80 +gMsgUnkQuad = 0x8014C4C0; // type:data rom:0xE2BC0 D_8014C500 = 0x8014C500; // type:data rom:0xE2C00 D_8014C580 = 0x8014C580; // type:data rom:0xE2C80 D_8014C588 = 0x8014C588; // type:data rom:0xE2C88 @@ -5719,6 +6099,7 @@ D_80283744 = 0x80283744; // type:data rom:0x1B2024 bMessages = 0x80283770; // type:data rom:0x1B2050 bActorMessages = 0x802838C4; // type:data rom:0x1B21A4 D_802838F8 = 0x802838F8; // type:data rom:0x1B21D8 +D_80283D98 = 0x80283D98; // type:data rom:0x1B2678 gBattleDmaDest = 0x80284000; // rom:0x1B28E0 MarioEnterStage = 0x80284A40; // rom:0x1B3320 PeachEnterStage = 0x80284D04; // rom:0x1B35E4 @@ -6567,6 +6948,7 @@ func_E0082580 = 0xE0082580; // type:func rom:0x385BC0 func_E00826C4 = 0xE00826C4; // type:func rom:0x385D04 func_E00828B4 = 0xE00828B4; // type:func rom:0x385EF4 func_E0082A84 = 0xE0082A84; // type:func rom:0x3860C4 +D_E0082D00 = 0xE0082D00; // type:data rom:0x386340 func_E0084000 = 0xE0084000; // type:func rom:0x3889D0 func_E008403C = 0xE008403C; // type:func rom:0x388A0C func_E0084060 = 0xE0084060; // type:func rom:0x388A30 @@ -6847,6 +7229,9 @@ throw_spiny_update = 0xE00C8220; // type:func rom:0x3CF5C0 throw_spiny_render = 0xE00C8404; // type:func rom:0x3CF7A4 func_E00C844C = 0xE00C844C; // type:func rom:0x3CF7EC throw_spiny_appendGfx = 0xE00C8454; // type:func rom:0x3CF7F4 +D_E00C8710 = 0xE00C8710; // type:data rom:0x3CFAB0 +D_E00C8718 = 0xE00C8718; // type:data rom:0x3CFAB8 +D_E00C8720 = 0xE00C8720; // type:data rom:0x3CFAC0 fx_65_main = 0xE00CA000; // type:func rom:0x3D0500 fx_65_init = 0xE00CA240; // type:func rom:0x3D0740 fx_65_update = 0xE00CA248; // type:func rom:0x3D0748 @@ -7196,12 +7581,15 @@ func_802A9184_428BF4 = 0x802A9184; // type:func rom:0x428BF4 func_802A9278_428CE8 = 0x802A9278; // type:func rom:0x428CE8 func_802A96EC_42915C = 0x802A96EC; // type:func rom:0x42915C action_command_air_lift_free_hud_elements = 0x802A9810; // type:func rom:0x429280 +D_802A9852_4292C0 = 0x802A9850; // type:data rom:0x4292C0 D_802A9852_4292C2 = 0x802A9852; // type:data rom:0x4292C2 +air_lift_bss_pre = 0x802A98A8; // type:data rom:0x429318 func_802A9000_429320 = 0x802A9000; // type:func rom:0x429320 action_command_air_raid_MashActionCommandInit = 0x802A9178; // type:func rom:0x429498 func_802A9294_4295B4 = 0x802A9294; // type:func rom:0x4295B4 action_command_air_raid_UnkActionCommandFunc1 = 0x802A984C; // type:func rom:0x429B6C action_command_air_raid_free_hud_elements = 0x802A992C; // type:func rom:0x429C4C +D_802A9970_429C90 = 0x802A9970; // type:data rom:0x429C90 D_802A9972_429C92 = 0x802A9972; // type:data rom:0x429C92 D_802A9984_429CA4 = 0x802A9984; // type:data rom:0x429CA4 D_802A9994_429CB4 = 0x802A9994; // type:data rom:0x429CB4 @@ -12061,7 +12449,7 @@ dup_mac_01_PatrolAI_ChaseInit = 0x8024189C; // type:func rom:0x80211C mac_01_PatrolAI_Chase = 0x802419CC; // type:func rom:0x80224C dup_mac_01_PatrolAI_LosePlayer = 0x80241AEC; // type:func rom:0x80236C mac_01_PatrolNoAttackAI_15 = 0x80241B54; // type:func rom:0x8023D4 -func_80241C14_802494 = 0x80241C14; // type:func rom:0x802494 +mac_01_PatrolNoAttackAI_Main = 0x80241C14; // type:func rom:0x802494 mac_01_Quizmo_StashVars = 0x80241F10; // type:func rom:0x802790 mac_01_Quizmo_GetItemName = 0x80241FC4; // type:func rom:0x802844 mac_01_Quizmo_HideEntities = 0x80242028; // type:func rom:0x8028A8 @@ -12154,7 +12542,7 @@ mac_01_PatrolAI_ChaseInit = 0x80245D6C; // type:func rom:0x8065EC dup_mac_01_PatrolAI_Chase = 0x80245E9C; // type:func rom:0x80671C mac_01_PatrolAI_LosePlayer = 0x80245FBC; // type:func rom:0x80683C dup_mac_01_PatrolNoAttackAI_15 = 0x80246024; // type:func rom:0x8068A4 -func_802460E4_806964 = 0x802460E4; // type:func rom:0x806964 +dup_mac_01_PatrolNoAttackAI_Main = 0x802460E4; // type:func rom:0x806964 func_802463E0_806C60 = 0x802463E0; // type:func rom:0x806C60 mac_01_foliage_setup_shear_mtx = 0x80246490; // type:func rom:0x806D10 mac_01_TransformFoliage = 0x80246500; // type:func rom:0x806D80 @@ -13030,7 +13418,6 @@ kmr_03_exitWalk_802406F0 = 0x802406F0; // type:data rom:0x8C8680 kmr_03_exitWalk_8024074C = 0x8024074C; // type:data rom:0x8C86DC kmr_03_802407A8 = 0x802407A8; // type:data rom:0x8C8738 kmr_03_main = 0x802407F0; // type:data rom:0x8C8780 -padding = 0x80240948; // type:data rom:0x8C88D8 kmr_03_npcSettings_80240950 = 0x80240950; // type:data rom:0x8C88E0 kmr_03_8024097C = 0x8024097C; // type:data rom:0x8C890C kmr_03_npcAI_80240B50 = 0x80240B50; // type:data rom:0x8C8AE0 @@ -13367,14 +13754,14 @@ iwa_01_CleftAI_PreAmbush = 0x802425C8; // type:func rom:0x911C78 iwa_01_CleftAI_Ambush = 0x80242664; // type:func rom:0x911D14 iwa_01_CleftAI_FindPlayerInit = 0x802426EC; // type:func rom:0x911D9C iwa_01_CleftAI_FindPlayer = 0x80242794; // type:func rom:0x911E44 -iwa_01_CleftAI_20 = 0x80242908; // type:func rom:0x911FB8 -iwa_01_CleftAI_21 = 0x80242958; // type:func rom:0x912008 +iwa_01_CleftAI_RevUpInit = 0x80242908; // type:func rom:0x911FB8 +iwa_01_CleftAI_RevUp = 0x80242958; // type:func rom:0x912008 iwa_01_CleftAI_Tackle = 0x80242AF8; // type:func rom:0x9121A8 iwa_01_CleftAI_LosePlayer = 0x80242C48; // type:func rom:0x9122F8 iwa_01_CleftAI_ReturnHome = 0x80242CF4; // type:func rom:0x9123A4 iwa_01_CleftAI_DisguiseInit = 0x80242E2C; // type:func rom:0x9124DC iwa_01_CleftAI_Disguise = 0x80242EA8; // type:func rom:0x912558 -iwa_01_ParatroopaAI_Reset = 0x80242F10; // type:func rom:0x9125C0 +iwa_01_CleftAI_PostDisguise = 0x80242F10; // type:func rom:0x9125C0 iwa_01_CleftAI_Main = 0x80242F54; // type:func rom:0x912604 func_802432B0_912960 = 0x802432B0; // type:func rom:0x912960 D_80243E00_9134B0 = 0x80243E00; // type:data rom:0x9134B0 @@ -13402,8 +13789,8 @@ iwa_02_CleftAI_PreAmbush = 0x80240304; // type:func rom:0x916074 iwa_02_CleftAI_Ambush = 0x802403A0; // type:func rom:0x916110 iwa_02_CleftAI_FindPlayerInit = 0x80240428; // type:func rom:0x916198 iwa_02_CleftAI_FindPlayer = 0x802404D0; // type:func rom:0x916240 -iwa_02_CleftAI_20 = 0x80240644; // type:func rom:0x9163B4 -iwa_02_CleftAI_21 = 0x80240694; // type:func rom:0x916404 +iwa_02_CleftAI_RevUpInit = 0x80240644; // type:func rom:0x9163B4 +iwa_02_CleftAI_RevUp = 0x80240694; // type:func rom:0x916404 iwa_02_CleftAI_Tackle = 0x80240834; // type:func rom:0x9165A4 iwa_02_CleftAI_LosePlayer = 0x80240984; // type:func rom:0x9166F4 iwa_02_CleftAI_ReturnHome = 0x80240A30; // type:func rom:0x9167A0 @@ -13431,8 +13818,8 @@ iwa_03_CleftAI_PreAmbush = 0x80240644; // type:func rom:0x9191F4 iwa_03_CleftAI_Ambush = 0x802406E0; // type:func rom:0x919290 iwa_03_CleftAI_FindPlayerInit = 0x80240768; // type:func rom:0x919318 iwa_03_CleftAI_FindPlayer = 0x80240810; // type:func rom:0x9193C0 -iwa_03_CleftAI_20 = 0x80240984; // type:func rom:0x919534 -iwa_03_CleftAI_21 = 0x802409D4; // type:func rom:0x919584 +iwa_03_CleftAI_RevUpInit = 0x80240984; // type:func rom:0x919534 +iwa_03_CleftAI_RevUp = 0x802409D4; // type:func rom:0x919584 iwa_03_CleftAI_Tackle = 0x80240B74; // type:func rom:0x919724 iwa_03_CleftAI_LosePlayer = 0x80240CC4; // type:func rom:0x919874 iwa_03_CleftAI_ReturnHome = 0x80240D70; // type:func rom:0x919920 @@ -13455,8 +13842,8 @@ iwa_04_CleftAI_PreAmbush = 0x80240384; // type:func rom:0x91BC64 iwa_04_CleftAI_Ambush = 0x80240420; // type:func rom:0x91BD00 iwa_04_CleftAI_FindPlayerInit = 0x802404A8; // type:func rom:0x91BD88 iwa_04_CleftAI_FindPlayer = 0x80240550; // type:func rom:0x91BE30 -iwa_04_CleftAI_20 = 0x802406C4; // type:func rom:0x91BFA4 -iwa_04_CleftAI_21 = 0x80240714; // type:func rom:0x91BFF4 +iwa_04_CleftAI_RevUpInit = 0x802406C4; // type:func rom:0x91BFA4 +iwa_04_CleftAI_RevUp = 0x80240714; // type:func rom:0x91BFF4 iwa_04_CleftAI_Tackle = 0x802408B4; // type:func rom:0x91C194 iwa_04_CleftAI_LosePlayer = 0x80240A04; // type:func rom:0x91C2E4 iwa_04_CleftAI_ReturnHome = 0x80240AB0; // type:func rom:0x91C390 @@ -13850,7 +14237,7 @@ dro_01_EVS_Quizmo_OtherCamScript = 0x802454F8; // type:data rom:0x9606F8 dro_01_EVS_Quizmo_ResetCamera = 0x802455F4; // type:data rom:0x9607F4 dro_01_EVS_Quizmo_MovePlayerToPodium = 0x80245630; // type:data rom:0x960830 dro_01_EVS_Quizmo_MovePartnerToPodium = 0x802457E0; // type:data rom:0x9609E0 -dro_01_EVS_Quizmo_MovePartnerToPodium = 0xEVS_Quizmo_MoveQuizmoToMicrophone; // type:data rom:0x960B18 +dro_01_EVS_Quizmo_MoveQuizmoToMicrophone = 0x80245918; // type:data rom:0x960B18 dro_01_EVS_Quizmo_SetCharacterPositons = 0x80245A84; // type:data rom:0x960C84 dro_01_EVS_Quizmo_PlayerThinking = 0x80245AB8; // type:data rom:0x960CB8 dro_01_EVS_Quizmo_PlayerHitBuzzer = 0x80245AF8; // type:data rom:0x960CF8 @@ -13863,7 +14250,7 @@ dro_01_EVS_Quizmo_QuizMain = 0x802468F8; // type:data rom:0x961AF8 dro_01_EVS_Quizmo_NPC_OtherAI = 0x80247628; // type:data rom:0x962828 dro_01_EVS_Quizmo_NPC_Interact = 0x8024769C; // type:data rom:0x96289C dro_01_EVS_Quizmo_NPC_Aux = 0x8024771C; // type:data rom:0x96291C -dro_01_Quizmo_Npc_AIScript = 0x80247738; // type:data rom:0x962938 +dro_01_Quizmo_NpcAISettings = 0x80247738; // type:data rom:0x962938 dro_01_EVS_Quizmo_Npc_AI = 0x80247768; // type:data rom:0x962968 dro_01_Quizmo_NpcSettings = 0x80247788; // type:data rom:0x962988 dro_01_Quizmo_AltNpcSettings = 0x802477B4; // type:data rom:0x9629B4 @@ -14000,10 +14387,10 @@ dro_02_func_8024303C_96C1FC = 0x8024303C; // type:func rom:0x96C1FC dro_02_func_80243068_96C228 = 0x80243068; // type:func rom:0x96C228 dro_02_GetNpcCollisionHeight = 0x80243094; // type:func rom:0x96C254 dro_02_AddPlayerHandsOffset = 0x802430F0; // type:func rom:0x96C2B0 -dro_02_func_802432C0_96C480 = 0x802432C0; // type:func rom:0x96C480 -dro_02_func_80243314_96C4D4 = 0x80243314; // type:func rom:0x96C4D4 -dro_02_func_8024334C_96C50C = 0x8024334C; // type:func rom:0x96C50C -dro_02_func_802433E8_96C5A8 = 0x802433E8; // type:func rom:0x96C5A8 +dro_02_ItemChoice_WaitForSelection = 0x802432C0; // type:func rom:0x96C480 +dro_02_ItemChoice_SaveSelected = 0x80243314; // type:func rom:0x96C4D4 +dro_02_BuildKeyItemChoiceList = 0x8024334C; // type:func rom:0x96C50C +dro_02_BuildItemChoiceList = 0x802433E8; // type:func rom:0x96C5A8 dro_02_ToadHouse_DisableStatusMenu = 0x80243484; // type:func rom:0x96C644 dro_02_ToadHouse_ShowStatusMenu = 0x802434A4; // type:func rom:0x96C664 dro_02_ToadHouse_UpdateScreenOverlay = 0x802434CC; // type:func rom:0x96C68C @@ -14793,7 +15180,7 @@ nok_13_HoppingAI_LoiterInit = 0x80240568; // type:func rom:0xA00B68 nok_13_HoppingAI_Loiter = 0x80240628; // type:func rom:0xA00C28 nok_13_HoppingAI_ChaseInit = 0x802407CC; // type:func rom:0xA00DCC nok_13_HoppingAI_Chase = 0x802408AC; // type:func rom:0xA00EAC -nok_13_HoppingAI_LosePlayerk = 0x80240BAC; // type:func rom:0xA011AC +nok_13_HoppingAI_LosePlayer = 0x80240BAC; // type:func rom:0xA011AC nok_13_HoppingAI_Main = 0x80240BF0; // type:func rom:0xA011F0 func_80240E20_A01420 = 0x80240E20; // type:func rom:0xA01420 func_80241360_A01960 = 0x80241360; // type:func rom:0xA01960 @@ -15810,11 +16197,10 @@ osr_01_varStash = 0x802411B8; // type:data rom:0xAB11A8 D_8024121C_AB120C = 0x8024121C; // type:data rom:0xAB120C D_80241220_AB1210 = 0x80241220; // type:data rom:0xAB1210 D_80242160_AB2150 = 0x80242160; // type:data rom:0xAB2150 -D_80242180 = 0x80242180; osr_02_SetPlayerSpriteSet2 = 0x80240000; // type:func rom:0xAB2170 func_80240020_AB2190 = 0x80240020; // type:func rom:0xAB2190 func_80240060_AB21D0 = 0x80240060; // type:func rom:0xAB21D0 -func_80240120_AB2290 = 0x80240120; // type:func rom:0xAB2290 +osr_02_GetPeachDisguise = 0x80240120; // type:func rom:0xAB2290 D_8024253C_AB46AC = 0x8024253C; // type:data rom:0xAB46AC osr_03_SetPlayerSpriteSet2 = 0x80240000; // type:func rom:0xAB6290 func_80240020_AB62B0 = 0x80240020; // type:func rom:0xAB62B0 @@ -15865,16 +16251,16 @@ kkj_03_UpdateTexturePanStepped = 0x80240144; // type:func rom:0xAC9854 func_80240000_ACAB20 = 0x80240000; // type:func rom:0xACAB20 func_80240034_ACAB54 = 0x80240034; // type:func rom:0xACAB54 kkj_10_SetEntityFlags100000 = 0x80240070; // type:func rom:0xACAB90 -func_802400B0_ACABD0 = 0x802400B0; // type:func rom:0xACABD0 -func_802402C0_ACADE0 = 0x802402C0; // type:func rom:0xACADE0 -func_8024036C_ACAE8C = 0x8024036C; // type:func rom:0xACAE8C -func_80240644_ACB164 = 0x80240644; // type:func rom:0xACB164 +kkj_10_UnkPhysicsFunc = 0x802400B0; // type:func rom:0xACABD0 +kkj_10_UnkModelMatrixFunc = 0x802402C0; // type:func rom:0xACADE0 +kkj_10_UnkModelMatrixFunc2 = 0x8024036C; // type:func rom:0xACAE8C +kkj_10_UnkAtan2Func = 0x80240644; // type:func rom:0xACB164 kkj_10_UnkGooberFunc = 0x80240728; // type:func rom:0xACB248 -func_802408A0_ACB3C0 = 0x802408A0; // type:func rom:0xACB3C0 -func_80240AB0_ACB5D0 = 0x80240AB0; // type:func rom:0xACB5D0 -func_80240B5C_ACB67C = 0x80240B5C; // type:func rom:0xACB67C -func_80240E34_ACB954 = 0x80240E34; // type:func rom:0xACB954 -func_80240F18_ACBA38 = 0x80240F18; // type:func rom:0xACBA38 +dup_kkj_10_UnkPhysicsFunc = 0x802408A0; // type:func rom:0xACB3C0 +dup_kkj_10_UnkModelMatrixFunc = 0x80240AB0; // type:func rom:0xACB5D0 +dup_kkj_10_UnkModelMatrixFunc2 = 0x80240B5C; // type:func rom:0xACB67C +dup_kkj_10_UnkAtan2Func = 0x80240E34; // type:func rom:0xACB954 +dup_kkj_10_GetPeachDisguise = 0x80240F18; // type:func rom:0xACBA38 func_80240F44_ACBA64 = 0x80240F44; // type:func rom:0xACBA64 dup_kkj_10_UnkGooberFunc = 0x80240F60; // type:func rom:0xACBA80 D_802435E0_ACE100 = 0x802435E0; // type:data rom:0xACE100 @@ -15886,16 +16272,16 @@ D_80243610_ACE130 = 0x80243610; // type:data rom:0xACE130 func_80240000_ACE140 = 0x80240000; // type:func rom:0xACE140 func_80240034_ACE174 = 0x80240034; // type:func rom:0xACE174 kkj_11_SetEntityFlags100000 = 0x80240070; // type:func rom:0xACE1B0 -func_802400B0_ACE1F0 = 0x802400B0; // type:func rom:0xACE1F0 -func_802402C0_ACE400 = 0x802402C0; // type:func rom:0xACE400 -func_8024036C_ACE4AC = 0x8024036C; // type:func rom:0xACE4AC -func_80240644_ACE784 = 0x80240644; // type:func rom:0xACE784 +kkj_11_UnkPhysicsFunc = 0x802400B0; // type:func rom:0xACE1F0 +kkj_11_UnkModelMatrixFunc = 0x802402C0; // type:func rom:0xACE400 +kkj_11_UnkModelMatrixFunc2 = 0x8024036C; // type:func rom:0xACE4AC +kkj_11_UnkAtan2Func = 0x80240644; // type:func rom:0xACE784 kkj_11_UnkGooberFunc = 0x80240728; // type:func rom:0xACE868 -func_802408A0_ACE9E0 = 0x802408A0; // type:func rom:0xACE9E0 -func_80240AB0_ACEBF0 = 0x80240AB0; // type:func rom:0xACEBF0 -func_80240B5C_ACEC9C = 0x80240B5C; // type:func rom:0xACEC9C -func_80240E34_ACEF74 = 0x80240E34; // type:func rom:0xACEF74 -func_80240F18_ACF058 = 0x80240F18; // type:func rom:0xACF058 +dup_kkj_11_UnkPhysicsFunc = 0x802408A0; // type:func rom:0xACE9E0 +dup_kkj_11_UnkModelMatrixFunc = 0x80240AB0; // type:func rom:0xACEBF0 +dup_kkj_11_UnkModelMatrixFunc2 = 0x80240B5C; // type:func rom:0xACEC9C +dup_kkj_11_UnkAtan2Func = 0x80240E34; // type:func rom:0xACEF74 +kkj_11_GetPeachDisguise = 0x80240F18; // type:func rom:0xACF058 func_80240F44_ACF084 = 0x80240F44; // type:func rom:0xACF084 dup_kkj_11_UnkGooberFunc = 0x80240F60; // type:func rom:0xACF0A0 D_80245F10_AD4050 = 0x80245F10; // type:data rom:0xAD4050 @@ -15906,11 +16292,11 @@ D_80245F38_AD4078 = 0x80245F38; // type:data rom:0xAD4078 D_80245F40_AD4080 = 0x80245F40; // type:data rom:0xAD4080 func_80240000_AD4090 = 0x80240000; // type:func rom:0xAD4090 func_80240034_AD40C4 = 0x80240034; // type:func rom:0xAD40C4 -func_80240070_AD4100 = 0x80240070; // type:func rom:0xAD4100 -func_80240280_AD4310 = 0x80240280; // type:func rom:0xAD4310 -func_8024032C_AD43BC = 0x8024032C; // type:func rom:0xAD43BC -func_80240604_AD4694 = 0x80240604; // type:func rom:0xAD4694 -func_802406E8_AD4778 = 0x802406E8; // type:func rom:0xAD4778 +kkj_12_UnkPhysicsFunc = 0x80240070; // type:func rom:0xAD4100 +kkj_12_UnkModelMatrixFunc = 0x80240280; // type:func rom:0xAD4310 +kkj_12_UnkModelMatrixFunc2 = 0x8024032C; // type:func rom:0xAD43BC +kkj_12_UnkAtan2Func = 0x80240604; // type:func rom:0xAD4694 +kkj_12_GetPeachDisguise = 0x802406E8; // type:func rom:0xAD4778 func_80240714_AD47A4 = 0x80240714; // type:func rom:0xAD47A4 kkj_12_UnkGooberFunc = 0x80240730; // type:func rom:0xAD47C0 func_8024089C_AD492C = 0x8024089C; // type:func rom:0xAD492C @@ -15935,7 +16321,7 @@ kkj_14_UpdateTexturePanSmooth = 0x80240050; // type:func rom:0xADAEF0 kkj_14_UpdateTexturePanStepped = 0x80240174; // type:func rom:0xADB014 func_8024035C_ADB1FC = 0x8024035C; // type:func rom:0xADB1FC func_80240384_ADB224 = 0x80240384; // type:func rom:0xADB224 -func_802403A0_ADB240 = 0x802403A0; // type:func rom:0xADB240 +kkj_14_GetPeachDisguise = 0x802403A0; // type:func rom:0xADB240 func_802403CC_ADB26C = 0x802403CC; // type:func rom:0xADB26C func_802403F8_ADB298 = 0x802403F8; // type:func rom:0xADB298 func_80240480_ADB320 = 0x80240480; // type:func rom:0xADB320 @@ -15952,18 +16338,18 @@ func_802405D0_AE5B60 = 0x802405D0; // type:func rom:0xAE5B60 func_802405EC_AE5B7C = 0x802405EC; // type:func rom:0xAE5B7C func_80240000_AED410 = 0x80240000; // type:func rom:0xAED410 func_80240028_AED438 = 0x80240028; // type:func rom:0xAED438 -func_80240060_AED470 = 0x80240060; // type:func rom:0xAED470 -func_80240270_AED680 = 0x80240270; // type:func rom:0xAED680 -func_8024031C_AED72C = 0x8024031C; // type:func rom:0xAED72C -func_802405F4_AEDA04 = 0x802405F4; // type:func rom:0xAEDA04 -kkj_16_UnkGooberFunc = 0x802406D8; // type:func rom:0xAEDAE8 -func_80240850_AEDC60 = 0x80240850; // type:func rom:0xAEDC60 -func_80240A60_AEDE70 = 0x80240A60; // type:func rom:0xAEDE70 -func_80240B0C_AEDF1C = 0x80240B0C; // type:func rom:0xAEDF1C -func_80240DE4_AEE1F4 = 0x80240DE4; // type:func rom:0xAEE1F4 -func_80240EC8_AEE2D8 = 0x80240EC8; // type:func rom:0xAEE2D8 +kkj_16_UnkPhysicsFunc = 0x80240060; // type:func rom:0xAED470 +kkj_16_UnkModelMatrixFunc = 0x80240270; // type:func rom:0xAED680 +kkj_16_UnkModelMatrixFunc2 = 0x8024031C; // type:func rom:0xAED72C +kkj_16_UnkAtan2Func = 0x802405F4; // type:func rom:0xAEDA04 +kkj_16_UnkGooberFunc50 = 0x802406D8; // type:func rom:0xAEDAE8 +dup_kkj_16_UnkPhysicsFunc = 0x80240850; // type:func rom:0xAEDC60 +dup_kkj_16_UnkModelMatrixFunc = 0x80240A60; // type:func rom:0xAEDE70 +dup_kkj_16_UnkModelMatrixFunc2 = 0x80240B0C; // type:func rom:0xAEDF1C +dup_kkj_16_UnkAtan2Func = 0x80240DE4; // type:func rom:0xAEE1F4 +kkj_16_GetPeachDisguise = 0x80240EC8; // type:func rom:0xAEE2D8 func_80240EF4_AEE304 = 0x80240EF4; // type:func rom:0xAEE304 -dup_kkj_16_UnkGooberFunc = 0x80240F10; // type:func rom:0xAEE320 +dup_kkj_16_UnkGooberFunc50 = 0x80240F10; // type:func rom:0xAEE320 D_80244810_AF1C20 = 0x80244810; // type:data rom:0xAF1C20 D_80244818_AF1C28 = 0x80244818; // type:data rom:0xAF1C28 D_80244820_AF1C30 = 0x80244820; // type:data rom:0xAF1C30 @@ -16036,19 +16422,19 @@ kkj_20_ToadHouse_InitScreenOverlay = 0x802404D4; // type:func rom:0xAFE014 kkj_20_ToadHouse_PutPartnerAway = 0x80240550; // type:func rom:0xAFE090 kkj_20_ToadHouse_GetPartnerBackOut = 0x80240584; // type:func rom:0xAFE0C4 kkj_20_ToadHouse_Stub = 0x802405B4; // type:func rom:0xAFE0F4 -func_802405BC_AFE0FC = 0x802405BC; // type:func rom:0xAFE0FC +kkj_20_GetPeachDisguise = 0x802405BC; // type:func rom:0xAFE0FC kkj_20_varStash = 0x80240880; // type:data rom:0xAFE3C0 kkj_23_SetPlayerSpriteSet2 = 0x80240000; // type:func rom:0xB02880 func_80240020_B028A0 = 0x80240020; // type:func rom:0xB028A0 func_80240048_B028C8 = 0x80240048; // type:func rom:0xB028C8 func_80240080_B02900 = 0x80240080; // type:func rom:0xB02900 -func_802400E0_B02960 = 0x802400E0; // type:func rom:0xB02960 -func_802402F0_B02B70 = 0x802402F0; // type:func rom:0xB02B70 -func_8024039C_B02C1C = 0x8024039C; // type:func rom:0xB02C1C -func_80240674_B02EF4 = 0x80240674; // type:func rom:0xB02EF4 -func_80240758_B02FD8 = 0x80240758; // type:func rom:0xB02FD8 +kkj_23_UnkPhysicsFunc = 0x802400E0; // type:func rom:0xB02960 +kkj_23_UnkModelMatrixFunc = 0x802402F0; // type:func rom:0xB02B70 +kkj_23_UnkModelMatrixFunc2 = 0x8024039C; // type:func rom:0xB02C1C +kkj_23_UnkAtan2Func = 0x80240674; // type:func rom:0xB02EF4 +kkj_23_GetPeachDisguise = 0x80240758; // type:func rom:0xB02FD8 func_80240784_B03004 = 0x80240784; // type:func rom:0xB03004 -kkj_23_UnkGooberFunc = 0x802407A0; // type:func rom:0xB03020 +kkj_23_UnkGooberFunc50 = 0x802407A0; // type:func rom:0xB03020 func_80240910_B03190 = 0x80240910; // type:func rom:0xB03190 func_802409AC_B0322C = 0x802409AC; // type:func rom:0xB0322C D_80243CD0_B06550 = 0x80243CD0; // type:data rom:0xB06550 @@ -16212,8 +16598,8 @@ jan_02_Quizmo_AddViewRelativeOffset = 0x80242294; // type:func rom:0xB2E704 jan_02_Quizmo_SpinPlayer = 0x80242430; // type:func rom:0xB2E8A0 jan_02_Quizmo_SpinPartner = 0x80242494; // type:func rom:0xB2E904 jan_02_Quizmo_UpdatePartnerPosition = 0x80242524; // type:func rom:0xB2E994 -Quizmo_CreateReactionEffect = 0x8024260C; // type:func rom:0xB2EA7C -Quizmo_CreateWorker = 0x80242678; // type:func rom:0xB2EAE8 +jan_02_Quizmo_CreateReactionEffect = 0x8024260C; // type:func rom:0xB2EA7C +jan_02_Quizmo_CreateWorker = 0x80242678; // type:func rom:0xB2EAE8 jan_02_SwitchToPartner = 0x802426A8; // type:func rom:0xB2EB18 jan_02_foliage_setup_shear_mtx = 0x802426E0; // type:func rom:0xB2EB50 jan_02_TransformFoliage = 0x80242750; // type:func rom:0xB2EBC0 @@ -16960,8 +17346,8 @@ arn_02_CleftAI_PreAmbush = 0x80240304; // type:func rom:0xBDD4B4 arn_02_CleftAI_Ambush = 0x802403A0; // type:func rom:0xBDD550 arn_02_CleftAI_FindPlayerInit = 0x80240428; // type:func rom:0xBDD5D8 arn_02_CleftAI_FindPlayer = 0x802404D0; // type:func rom:0xBDD680 -arn_02_CleftAI_20 = 0x80240644; // type:func rom:0xBDD7F4 -arn_02_CleftAI_21 = 0x80240694; // type:func rom:0xBDD844 +arn_02_CleftAI_RevUpInit = 0x80240644; // type:func rom:0xBDD7F4 +arn_02_CleftAI_RevUp = 0x80240694; // type:func rom:0xBDD844 arn_02_CleftAI_Tackle = 0x80240834; // type:func rom:0xBDD9E4 arn_02_CleftAI_LosePlayer = 0x80240984; // type:func rom:0xBDDB34 arn_02_CleftAI_ReturnHome = 0x80240A30; // type:func rom:0xBDDBE0 @@ -17014,7 +17400,7 @@ arn_03_GetNpcCollisionHeight = 0x802413C8; // type:func rom:0xBE0158 arn_03_AddPlayerHandsOffset = 0x80241424; // type:func rom:0xBE01B4 arn_03_ItemChoice_WaitForSelection = 0x802415F4; // type:func rom:0xBE0384 arn_03_ItemChoice_SaveSelected = 0x80241648; // type:func rom:0xBE03D8 -arn_03_func_80241680_BE0410 = 0x80241680; // type:func rom:0xBE0410 +arn_03_BuildKeyItemChoiceList = 0x80241680; // type:func rom:0xBE0410 arn_03_entryList = 0x80241720; // type:data rom:0xBE04B0 arn_03_config = 0x80241740; // type:data rom:0xBE04D0 arn_03_80241780 = 0x80241780; // type:data rom:0xBE0510 @@ -17097,8 +17483,8 @@ arn_04_CleftAI_PreAmbush = 0x8024268C; // type:func rom:0xBE5E3C arn_04_CleftAI_Ambush = 0x80242728; // type:func rom:0xBE5ED8 arn_04_CleftAI_FindPlayerInit = 0x802427B0; // type:func rom:0xBE5F60 arn_04_CleftAI_FindPlayer = 0x80242858; // type:func rom:0xBE6008 -arn_04_CleftAI_20 = 0x802429CC; // type:func rom:0xBE617C -arn_04_CleftAI_21 = 0x80242A1C; // type:func rom:0xBE61CC +arn_04_CleftAI_RevUpInit = 0x802429CC; // type:func rom:0xBE617C +arn_04_CleftAI_RevUp = 0x80242A1C; // type:func rom:0xBE61CC arn_04_CleftAI_Tackle = 0x80242BBC; // type:func rom:0xBE636C arn_04_CleftAI_LosePlayer = 0x80242D0C; // type:func rom:0xBE64BC arn_04_CleftAI_ReturnHome = 0x80242DB8; // type:func rom:0xBE6568 @@ -17839,7 +18225,7 @@ dgb_01_D_80252948_C101C8 = 0x80252948; // type:data rom:0xC101C8 dgb_01_D_80252974_C101F4 = 0x80252974; // type:data rom:0xC101F4 dgb_01_D_802529A0_C10220 = 0x802529A0; // type:data rom:0xC10220 dgb_01_D_802529CC_C1024C = 0x802529CC; // type:data rom:0xC1024C -mac_05_Quizmo_VannaTEffect = 0x802529F8; // type:data rom:0xC10278 +dgb_01_D_802529F8_C10278 = 0x802529F8; // type:data rom:0xC10278 dgb_01_D_80252A24_C102A4 = 0x80252A24; // type:data rom:0xC102A4 dgb_01_D_80252A50_C102D0 = 0x80252A50; // type:data rom:0xC102D0 dgb_01_D_80252A7C_C102FC = 0x80252A7C; // type:data rom:0xC102FC @@ -18408,7 +18794,7 @@ dgb_05_ClubbaNappingAI_ReturnHomeInit = 0x80240C00; // type:func rom:0xC3B610 dgb_05_ClubbaNappingAI_ReturnHome = 0x80240CAC; // type:func rom:0xC3B6BC dgb_05_ClubbaNappingAI_FallAsleep = 0x80240E24; // type:func rom:0xC3B834 dgb_05_ClubbaNappingAI_Main = 0x80240E80; // type:func rom:0xC3B890 -dgb_05_WanderMeleeAI = 0x802411D0; // type:func rom:0xC3BBE0 +dgb_05_WanderMeleeAI_Main = 0x802411D0; // type:func rom:0xC3BBE0 dgb_05_entryList = 0x80241490; // type:data rom:0xC3BEA0 dgb_05_config = 0x802414A0; // type:data rom:0xC3BEB0 dgb_05_802414E0 = 0x802414E0; // type:data rom:0xC3BEF0 @@ -19596,7 +19982,7 @@ flo_08_GetNpcCollisionHeight = 0x80241744; // type:func rom:0xCB0484 flo_08_AddPlayerHandsOffset = 0x802417A0; // type:func rom:0xCB04E0 flo_08_ItemChoice_WaitForSelection = 0x80241970; // type:func rom:0xCB06B0 flo_08_ItemChoice_SaveSelected = 0x802419C4; // type:func rom:0xCB0704 -flo_08_func_802419FC_CB073C = 0x802419FC; // type:func rom:0xCB073C +flo_08_BuildItemChoiceList = 0x802419FC; // type:func rom:0xCB073C flo_08_FlowerGuard_SetItemEntityPosition = 0x80241A98; // type:func rom:0xCB07D8 flo_08_FlowerGuard_JudgeItemTastiness = 0x80241B5C; // type:func rom:0xCB089C flo_08_FlowerGuard_MakeItemList = 0x80241BCC; // type:func rom:0xCB090C @@ -19974,7 +20360,7 @@ flo_14_GetNpcCollisionHeight = 0x80242008; // type:func rom:0xCCD318 flo_14_AddPlayerHandsOffset = 0x80242064; // type:func rom:0xCCD374 flo_14_ItemChoice_WaitForSelection = 0x80242234; // type:func rom:0xCCD544 flo_14_ItemChoice_SaveSelected = 0x80242288; // type:func rom:0xCCD598 -flo_14_func_802422C0_CCD5D0 = 0x802422C0; // type:func rom:0xCCD5D0 +flo_14_BuildItemChoiceList = 0x802422C0; // type:func rom:0xCCD5D0 flo_14_func_80242360_CCD670 = 0x80242360; // type:func rom:0xCCD670 flo_14_entryList = 0x80242390; // type:data rom:0xCCD6A0 flo_14_config = 0x802423B0; // type:data rom:0xCCD6C0 @@ -20026,7 +20412,7 @@ D_80245348_CD0658 = 0x80245348; // type:data rom:0xCD0658 D_80245350_CD0660 = 0x80245350; // type:data rom:0xCD0660 D_80245358_CD0668 = 0x80245358; // type:data rom:0xCD0668 D_80245360_CD0670 = 0x80245360; // type:data rom:0xCD0670 -flo_14_ConsumableChoiceList = 0x80240000; // type:data rom:0xCD06C0 +flo_15_entryList = 0x80240000; // type:data rom:0xCD06C0 flo_15_config = 0x80240020; // type:data rom:0xCD06E0 flo_15_80240060 = 0x80240060; // type:data rom:0xCD0720 flo_15_exitWalk_80240120 = 0x80240120; // type:data rom:0xCD07E0 @@ -20376,7 +20762,7 @@ flo_23_GetNpcCollisionHeight = 0x80240040; // type:func rom:0xCEE2A0 flo_23_AddPlayerHandsOffset = 0x8024009C; // type:func rom:0xCEE2FC flo_23_ItemChoice_WaitForSelection = 0x8024026C; // type:func rom:0xCEE4CC flo_23_ItemChoice_SaveSelected = 0x802402C0; // type:func rom:0xCEE520 -flo_23_func_802402F8_CEE558 = 0x802402F8; // type:func rom:0xCEE558 +flo_23_BuildItemChoiceList = 0x802402F8; // type:func rom:0xCEE558 flo_23_set_script_owner_npc_anim = 0x80240394; // type:func rom:0xCEE5F4 flo_23_UnkDistFunc = 0x80240410; // type:func rom:0xCEE670 flo_23_UnkNpcAIFunc12 = 0x80240544; // type:func rom:0xCEE7A4 @@ -20455,7 +20841,7 @@ flo_25_GetNpcCollisionHeight = 0x80241B2C; // type:func rom:0xCF46FC flo_25_AddPlayerHandsOffset = 0x80241B88; // type:func rom:0xCF4758 flo_25_ItemChoice_WaitForSelection = 0x80241D58; // type:func rom:0xCF4928 flo_25_ItemChoice_SaveSelected = 0x80241DAC; // type:func rom:0xCF497C -flo_25_func_80241DE4_CF49B4 = 0x80241DE4; // type:func rom:0xCF49B4 +flo_25_BuildItemChoiceList = 0x80241DE4; // type:func rom:0xCF49B4 flo_25_FlowerGuard_SetItemEntityPosition = 0x80241E80; // type:func rom:0xCF4A50 flo_25_FlowerGuard_JudgeItemTastiness = 0x80241F44; // type:func rom:0xCF4B14 flo_25_FlowerGuard_MakeItemList = 0x80241FB4; // type:func rom:0xCF4B84 @@ -20906,7 +21292,7 @@ pra_04_SetGameStatusUnk84_1 = 0x80240000; // type:func rom:0xD54690 func_80240020_D546B0 = 0x80240020; // type:func rom:0xD546B0 func_802400AC_D5473C = 0x802400AC; // type:func rom:0xD5473C func_80240138_D547C8 = 0x80240138; // type:func rom:0xD547C8 -func_802401B0_D54840 = 0x802401B0; // type:func rom:0xD54840 +pra_04_UnkFunc001 = 0x802401B0; // type:func rom:0xD54840 D_80241510_D55BA0 = 0x80241510; // type:data rom:0xD55BA0 D_80241518_D55BA8 = 0x80241518; // type:data rom:0xD55BA8 pra_05_SetGameStatusUnk84_1 = 0x80240000; // type:func rom:0xD55BB0 @@ -20984,7 +21370,7 @@ pra_10_ReflectPartner = 0x80240D3C; // type:func rom:0xD5FFEC pra_10_SetPartnerFlagsA0000 = 0x80240E84; // type:func rom:0xD60134 pra_10_SetPartnerFlags80000 = 0x80240EB8; // type:func rom:0xD60168 pra_10_SetPartnerFlags20000 = 0x80240EEC; // type:func rom:0xD6019C -func_80240F20_D601D0 = 0x80240F20; // type:func rom:0xD601D0 +pra_10_UnkFunc001 = 0x80240F20; // type:func rom:0xD601D0 D_80242240_D614F0 = 0x80242240; // type:data rom:0xD614F0 D_80242248_D614F8 = 0x80242248; // type:data rom:0xD614F8 pra_11_SetGameStatusUnk84_1 = 0x80240000; // type:func rom:0xD61500 @@ -21153,7 +21539,7 @@ func_80240020_D77F40 = 0x80240020; // type:func rom:0xD77F40 func_802400AC_D77FCC = 0x802400AC; // type:func rom:0xD77FCC pra_22_SetGameStatusUnk84_1 = 0x80240000; // type:func rom:0xD78880 pra_22_UnkFunc11 = 0x80240020; // type:func rom:0xD788A0 -pra_22_UnkFunc12 = 0x802400DC; // type:func rom:0xD7895C +func_802400DC_D7895C = 0x802400DC; // type:func rom:0xD7895C func_802401D0_D78A50 = 0x802401D0; // type:func rom:0xD78A50 func_8024025C_D78ADC = 0x8024025C; // type:func rom:0xD78ADC func_80240000_D799F0 = 0x80240000; // type:func rom:0xD799F0 @@ -21378,7 +21764,7 @@ pra_38_ReflectPartner = 0x80240D6C; // type:func rom:0xD9635C pra_38_SetPartnerFlagsA0000 = 0x80240EB4; // type:func rom:0xD964A4 pra_38_SetPartnerFlags80000 = 0x80240EE8; // type:func rom:0xD964D8 pra_38_SetPartnerFlags20000 = 0x80240F1C; // type:func rom:0xD9650C -func_80240F50_D96540 = 0x80240F50; // type:func rom:0xD96540 +pra_38_UnkFunc001 = 0x80240F50; // type:func rom:0xD96540 D_80242220_D97810 = 0x80242220; // type:data rom:0xD97810 D_80242230_D97820 = 0x80242230; // type:data rom:0xD97820 D_80242290_D97880 = 0x80242290; // type:data rom:0xD97880 @@ -21397,7 +21783,7 @@ pra_39_ReflectPartner = 0x80240D6C; // type:func rom:0xD985FC pra_39_SetPartnerFlagsA0000 = 0x80240EB4; // type:func rom:0xD98744 pra_39_SetPartnerFlags80000 = 0x80240EE8; // type:func rom:0xD98778 pra_39_SetPartnerFlags20000 = 0x80240F1C; // type:func rom:0xD987AC -func_80240F50_D987E0 = 0x80240F50; // type:func rom:0xD987E0 +pra_39_UnkFunc001 = 0x80240F50; // type:func rom:0xD987E0 D_802420A0_D99930 = 0x802420A0; // type:data rom:0xD99930 D_802420B0_D99940 = 0x802420B0; // type:data rom:0xD99940 D_80242110_D999A0 = 0x80242110; // type:data rom:0xD999A0 @@ -21510,6 +21896,7 @@ D_80244CB8_DB20B8 = 0x80244CB8; // type:data rom:0xDB20B8 D_80244CC0_DB20C0 = 0x80244CC0; // type:data rom:0xDB20C0 D_80244D08_DB2108 = 0x80244D08; // type:data rom:0xDB2108 D_80244D10_DB2110 = 0x80244D10; // type:data rom:0xDB2110 +omo_04_pad_8 = 0x80244EA8; // type:data rom:0xDB22A8 omo_05_ShyGuyWanderAI_14 = 0x80240000; // type:func rom:0xDB22C0 omo_05_ShyGuyWanderAI_15 = 0x80240070; // type:func rom:0xDB2330 omo_05_ShyGuyWanderAI_16 = 0x80240140; // type:func rom:0xDB2400 @@ -21926,7 +22313,7 @@ mgm_00_Pipe_GetCameraYaw = 0x802401D0; // type:func rom:0xE0E970 mgm_00_Pipe_GetPointAheadOfPlayer = 0x8024023C; // type:func rom:0xE0E9DC mgm_00_PatrolAI_MoveInit = 0x802402E0; // type:func rom:0xE0EA80 mgm_00_PatrolAI_Move = 0x80240438; // type:func rom:0xE0EBD8 -mgm_00_FlyingAI_LoiterInit = 0x802406E0; // type:func rom:0xE0EE80 +mgm_00_PatrolAI_LoiterInit = 0x802406E0; // type:func rom:0xE0EE80 mgm_00_PatrolAI_Loiter = 0x802407A0; // type:func rom:0xE0EF40 mgm_00_PatrolAI_PostLoiter = 0x8024095C; // type:func rom:0xE0F0FC mgm_00_PatrolAI_JumpInit = 0x80240A10; // type:func rom:0xE0F1B0 @@ -22399,7 +22786,7 @@ D_80241C10_EB8E40 = 0x80241C10; // type:data rom:0xEB8E40 func_80240000_EB8E50 = 0x80240000; // type:func rom:0xEB8E50 EB8E90_PatrolAI_MoveInit = 0x80240040; // type:func rom:0xEB8E90 EB8E90_PatrolAI_Move = 0x80240198; // type:func rom:0xEB8FE8 -EB8E90_FlyingAI_LoiterInit = 0x80240440; // type:func rom:0xEB9290 +EB8E90_PatrolAI_LoiterInit = 0x80240440; // type:func rom:0xEB9290 EB8E90_PatrolAI_Loiter = 0x80240500; // type:func rom:0xEB9350 EB8E90_PatrolAI_PostLoiter = 0x802406BC; // type:func rom:0xEB950C EB8E90_PatrolAI_JumpInit = 0x80240770; // type:func rom:0xEB95C0 @@ -22408,7 +22795,7 @@ EB8E90_PatrolAI_ChaseInit = 0x8024085C; // type:func rom:0xEB96AC EB8E90_PatrolAI_Chase = 0x8024098C; // type:func rom:0xEB97DC EB8E90_PatrolAI_LosePlayer = 0x80240AAC; // type:func rom:0xEB98FC EB8E90_PatrolNoAttackAI_15 = 0x80240B14; // type:func rom:0xEB9964 -func_80240BD4_EB9A24 = 0x80240BD4; // type:func rom:0xEB9A24 +EB8E90_PatrolNoAttackAI_Main = 0x80240BD4; // type:func rom:0xEB9A24 EB8E90_PostChapter6StatUpdate = 0x80240EFC; // type:func rom:0xEB9D4C func_80240F40_EB9D90 = 0x80240F40; // type:func rom:0xEB9D90 func_80240FB0_EB9E00 = 0x80240FB0; // type:func rom:0xEB9E00 @@ -22499,7 +22886,7 @@ ED0310_FlyingAI_ChaseInit = 0x80240FE0; // type:func rom:0xED0FD0 ED0310_FlyingAI_Chase = 0x80241114; // type:func rom:0xED1104 ED0310_FlyingAI_LosePlayer = 0x80241178; // type:func rom:0xED1168 ED0310_FlyingAI_Init = 0x80241508; // type:func rom:0xED14F8 -func_8024162C_ED161C = 0x8024162C; // type:func rom:0xED161C +ED0310_FlyingAI_Main = 0x8024162C; // type:func rom:0xED161C FlyingAI_JumpVels = 0x8024365C; // type:data rom:0xED364C D_802441D0_ED41C0 = 0x802441D0; // type:data rom:0xED41C0 D_802441D8_ED41C8 = 0x802441D8; // type:data rom:0xED41C8 @@ -22551,7 +22938,7 @@ EDEA00_FlyingAI_ChaseInit = 0x80240E84; // type:func rom:0xEDF844 EDEA00_FlyingAI_Chase = 0x80240FB8; // type:func rom:0xEDF978 EDEA00_FlyingAI_LosePlayer = 0x8024101C; // type:func rom:0xEDF9DC EDEA00_FlyingAI_Init = 0x802413AC; // type:func rom:0xEDFD6C -func_802414D0_EDFE90 = 0x802414D0; // type:func rom:0xEDFE90 +EDEA00_FlyingAI_Main = 0x802414D0; // type:func rom:0xEDFE90 EDEA00_LakituAI_GetAvailableSpiny = 0x802416E8; // type:func rom:0xEE00A8 EDEA00_LakituAI_Wander = 0x80241730; // type:func rom:0xEE00F0 EDEA00_LakituAI_Loiter = 0x80241B94; // type:func rom:0xEE0554 @@ -22573,7 +22960,7 @@ D_80247B00_EE64C0 = 0x80247B00; // type:data rom:0xEE64C0 D_80247B44_EE6504 = 0x80247B44; // type:data rom:0xEE6504 D_80247B50_EE6510 = 0x80247B50; // type:data rom:0xEE6510 D_80247BB0_EE6570 = 0x80247BB0; // type:data rom:0xEE6570 -D_80247BB8_EE6578 = 0x80247BB8; // type:data rom:0xEE6570 +D_80247BB8_EE6578 = 0x80247BB8; // type:data rom:0xEE6578 D_80247BE0_EE65A0 = 0x80247BE0; // type:data rom:0xEE65A0 EE65B0_UpdateTexturePanSmooth = 0x80240000; // type:func rom:0xEE65B0 EE65B0_UpdateTexturePanStepped = 0x80240124; // type:func rom:0xEE66D4 @@ -22584,7 +22971,7 @@ func_8024042C_EE69DC = 0x8024042C; // type:func rom:0xEE69DC func_8024046C_EE6A1C = 0x8024046C; // type:func rom:0xEE6A1C func_80240504_EE6AB4 = 0x80240504; // type:func rom:0xEE6AB4 func_802407D4_EE6D84 = 0x802407D4; // type:func rom:0xEE6D84 -func_80240B10_EE70C0 = 0x80240B10; // type:func rom:0xEE70C0 +EE70C0_FlyingAI_WanderInit = 0x80240B10; // type:func rom:0xEE70C0 EE70C0_FlyingAI_Wander = 0x80240CC0; // type:func rom:0xEE7270 EE70C0_FlyingAI_LoiterInit = 0x802412E8; // type:func rom:0xEE7898 EE70C0_FlyingAI_Loiter = 0x802413A8; // type:func rom:0xEE7958 @@ -22594,7 +22981,7 @@ EE70C0_FlyingAI_ChaseInit = 0x802417D0; // type:func rom:0xEE7D80 EE70C0_FlyingAI_Chase = 0x80241904; // type:func rom:0xEE7EB4 EE70C0_FlyingAI_LosePlayer = 0x80241968; // type:func rom:0xEE7F18 EE70C0_FlyingAI_Init = 0x80241CF8; // type:func rom:0xEE82A8 -func_80241E1C_EE83CC = 0x80241E1C; // type:func rom:0xEE83CC +EE70C0_FlyingAI_Main = 0x80241E1C; // type:func rom:0xEE83CC EE70C0_GetNpcCollisionHeight = 0x80242034; // type:func rom:0xEE85E4 EE70C0_AddPlayerHandsOffset = 0x80242090; // type:func rom:0xEE8640 func_80242260_EE8810 = 0x80242260; // type:func rom:0xEE8810 @@ -22604,7 +22991,6 @@ func_80242390_EE8940 = 0x80242390; // type:func rom:0xEE8940 D_802431FC_EE97AC = 0x802431FC; // type:data rom:0xEE97AC D_80243B44_EEA0F4 = 0x80243B44; // type:data rom:0xEEA0F4 D_80243B48_EEA0F8 = 0x80243B48; // type:data rom:0xEEA0F8 -N(FlyingAI_JumpVels) = 0x802444F0; // type:data rom:0xEEAAA0 D_8024462C_EEABDC = 0x8024462C; // type:data rom:0xEEABDC D_80244630_EEABE0 = 0x80244630; // type:data rom:0xEEABE0 D_80245350_EEB900 = 0x80245350; // type:data rom:0xEEB900 @@ -22616,6 +23002,7 @@ D_80245378_EEB928 = 0x80245378; // type:data rom:0xEEB928 D_80245380_EEB930 = 0x80245380; // type:data rom:0xEEB930 D_80245388_EEB938 = 0x80245388; // type:data rom:0xEEB938 D_80245390_EEB940 = 0x80245390; // type:data rom:0xEEB940 +padding = 0x80240948; // type:data rom:0xEEB984 D_802453E0_EEB990 = 0x802453E0; // type:data rom:0xEEB990 EED100_DeadUnkFunc1 = 0x80240000; // type:func rom:0xEED100 EED140_UnkFunc43 = 0x80240040; // type:func rom:0xEED140 @@ -22648,7 +23035,7 @@ EEDF50_FlyingAI_ChaseInit = 0x80241B10; // type:func rom:0xEEEC10 EEDF50_FlyingAI_Chase = 0x80241C44; // type:func rom:0xEEED44 EEDF50_FlyingAI_LosePlayer = 0x80241CA8; // type:func rom:0xEEEDA8 EEDF50_FlyingAI_Init = 0x80242038; // type:func rom:0xEEF138 -func_8024215C_EEF25C = 0x8024215C; // type:func rom:0xEEF25C +EEDF50_FlyingAI_Main = 0x8024215C; // type:func rom:0xEEF25C EEDF50_FlyingNoAttackAI_12 = 0x80242374; // type:func rom:0xEEF474 EEDF50_FlyingNoAttackAI_13 = 0x802424A4; // type:func rom:0xEEF5A4 EEDF50_FlyingNoAttackAI_20 = 0x80242724; // type:func rom:0xEEF824 @@ -22675,7 +23062,7 @@ EF2680_FlyingAI_ChaseInit = 0x80240D30; // type:func rom:0xEF3340 EF2680_FlyingAI_Chase = 0x80240E64; // type:func rom:0xEF3474 EF2680_FlyingAI_LosePlayer = 0x80240EC8; // type:func rom:0xEF34D8 EF2680_FlyingAI_Init = 0x80241258; // type:func rom:0xEF3868 -func_8024137C_EF398C = 0x8024137C; // type:func rom:0xEF398C +EF2680_FlyingAI_Main = 0x8024137C; // type:func rom:0xEF398C func_80241594_EF3BA4 = 0x80241594; // type:func rom:0xEF3BA4 func_802415DC_EF3BEC = 0x802415DC; // type:func rom:0xEF3BEC func_80241A40_EF4050 = 0x80241A40; // type:func rom:0xEF4050 @@ -22755,8 +23142,10 @@ D_090003F0 = 0x90003F0; // type:data D_09000430 = 0x9000430; // type:data D_09000470 = 0x9000470; // type:data D_09000800 = 0x9000800; // type:data +D_090008D8 = 0x90008D8; // type:data D_09000900 = 0x9000900; // type:data D_090009E8 = 0x90009E8; // type:data +D_090009F0 = 0x90009F0; // type:data D_09000A00 = 0x9000A00; // type:data D_09000B88 = 0x9000B88; // type:data D_09000BA8 = 0x9000BA8; // type:data @@ -22813,24 +23202,42 @@ D_09001CC8 = 0x9001CC8; // type:data D_09001D00 = 0x9001D00; // type:data D_09002000 = 0x9002000; // type:data D_090020E8 = 0x90020E8; // type:data +D_09002100 = 0x9002100; // type:data D_09002170 = 0x9002170; // type:data +D_09002198 = 0x9002198; // type:data D_090021D0 = 0x90021D0; // type:data +D_09002230 = 0x9002230; // type:data D_09002238 = 0x9002238; // type:data +D_09002250 = 0x9002250; // type:data +D_09002270 = 0x9002270; // type:data +D_09002290 = 0x9002290; // type:data +D_090022B0 = 0x90022B0; // type:data D_090022E0 = 0x90022E0; // type:data D_09002308 = 0x9002308; // type:data +D_09002320 = 0x9002320; // type:data +D_09002360 = 0x9002360; // type:data +D_090023A0 = 0x90023A0; // type:data D_090023B0 = 0x90023B0; // type:data D_090023C8 = 0x90023C8; // type:data D_090023D8 = 0x90023D8; // type:data D_090023E0 = 0x90023E0; // type:data D_090023F8 = 0x90023F8; // type:data D_09002410 = 0x9002410; // type:data +D_09002420 = 0x9002420; // type:data D_09002428 = 0x9002428; // type:data D_09002440 = 0x9002440; // type:data D_09002458 = 0x9002458; // type:data +D_09002460 = 0x9002460; // type:data D_09002480 = 0x9002480; // type:data +D_090024A0 = 0x90024A0; // type:data D_090024A8 = 0x90024A8; // type:data +D_090024E0 = 0x90024E0; // type:data +D_09002520 = 0x9002520; // type:data D_09002550 = 0x9002550; // type:data +D_09002560 = 0x9002560; // type:data D_09002578 = 0x9002578; // type:data +D_090025A0 = 0x90025A0; // type:data +D_090025E0 = 0x90025E0; // type:data D_09002780 = 0x9002780; // type:data D_09002868 = 0x9002868; // type:data D_09002950 = 0x9002950; // type:data @@ -22878,8 +23285,6 @@ osMemSize = 0x80000318; // type:data D_8000031C = 0x8000031C; // type:data D_80026AC7 = 0x80026AC7; // type:data dead_atan2 = 0x8002AF70; // type:data -dead_heap_free = 0x8002C01C; // type:data -dead_func_80041080 = 0x80041080; // type:data D_8004AA85 = 0x8004AA85; // type:data gcc2_compiled. = 0x80060D60; // type:data ai = 0x8006AD64; // @@ -22890,9 +23295,7 @@ dead_guMtxIdentF = 0x8006C660; // type:data dead_guMtxCatF = 0x8006C7C0; // type:data EnemyNpcHit = 0x80077F70; // EnemyNpcDefeat = 0x8007809C; // -dead_gGameStatusPtr = 0x80079430; // type:data -D_80079540 = 0x80079540; // type:data -dead_gCurrentCameraID = 0x8007C760; // type:data +D_80079540 = 0x80079540; // type:data dead:yes HudScript_HandPointDownLoop = 0x8007FF20; // type:data HudScript_HandPointDown = 0x800800A0; // type:data HudScript_HandPointDownHeld = 0x800801D8; // type:data @@ -23220,6 +23623,7 @@ wPartnerCurrentScriptID = 0x8010CFDC; // type:data D_8010CFE0 = 0x8010CFE0; // type:data D_8010CFE4 = 0x8010CFE4; // type:data D_8010CFE8 = 0x8010CFE8; // type:data +dead_80117163 = 0x80117160; // type:data dead_gPartnerActionStatus = 0x80117160; // type:data dead_gPlayerStatus = 0x80117578; // type:data dead_gPlayerActionState = 0x8011762C; // type:data @@ -23410,11 +23814,13 @@ dgb_15_pad_1E94 = 0x80241E94; // type:data D_80241ECC = 0x80241ECC; // type:data some_80241FBC = 0x80241FBC; // type:data flo_09_pad_2004 = 0x80242004; // type:data +D_80242180 = 0x80242180; // flo_24_pad_21A4 = 0x802421A4; // type:data D_80242208 = 0x80242208; // type:data D_80242310 = 0x80242310; // type:data D_80242330 = 0x80242330; // type:data D_80242344 = 0x80242344; // type:data +osr_01_LetterDelivery_SavedNpcAnim = 0x80242344; // type:data D_80242350 = 0x80242350; // type:data D_80242370 = 0x80242370; // type:data D_80242390 = 0x80242390; // type:data @@ -23425,20 +23831,25 @@ D_80242410 = 0x80242410; // type:data D_80242430 = 0x80242430; // type:data D_80242450 = 0x80242450; // type:data D_802424E0 = 0x802424E0; // type:data +D_80242568_filemenu = 0x80242568; // type:data flo_23_pad_2598 = 0x80242598; // type:data flo_23_ConsumableChoiceList = 0x802426E0; // type:data +flo_23_ItemChoiceList = 0x802426E0; // type:data flo_23_D_8024284C_pad = 0x8024284C; // type:data flo_23_FlowerGuard_ItemChoiceList = 0x80242850; // type:data flo_09_pad_2874 = 0x80242874; // type:data dgb_03_pad_2908 = 0x80242908; // type:data D_802429A4 = 0x802429A4; // type:data +sbk_34_LetterDelivery_SavedNpcAnim = 0x802429A4; // type:data D_802429BC = 0x802429BC; // type:data flo_23_D_802429BC = 0x802429BC; // type:data D_802429E0 = 0x802429E0; // type:data flo_12_D_802429E0 = 0x802429E0; // type:data +D_80242A00 = 0x80242A00; // type:data D_80242AC4 = 0x80242AC4; // type:data dgb_15_pad_2AC8 = 0x80242AC8; // type:data flo_14_pad_2BF4 = 0x80242BF4; // type:data +D_80242C00 = 0x80242C00; // type:data flo_08_pad_2EA8 = 0x80242EA8; // type:data D_80242FB0 = 0x80242FB0; // type:data D_80243090 = 0x80243090; // type:data @@ -23472,6 +23883,7 @@ flo_25_pad_3C8C = 0x80243C8C; // type:data flo_25_pad_3CD8 = 0x80243CD8; // type:data dgb_08_pad_3D88 = 0x80243D88; // type:data D_80243DA4 = 0x80243DA4; // type:data +obk_03_LetterDelivery_SavedNpcAnim = 0x80243DA4; // type:data dgb_09_pad_3E4C = 0x80243E4C; // type:data dgb_01_pad_3EE4 = 0x80243EE4; // type:data flo_17_pad_3FCC = 0x80243FCC; // type:data @@ -23504,20 +23916,25 @@ code_eb1170_bss = 0x802442D0; // type:data kzn_20_bss = 0x802442D0; // type:data flo_17_pad_XXX = 0x802443D8; // type:data EB1170_LetterDelivery_SavedNpcAnim = 0x80244494; // type:data +kzn_20_LetterDelivery_SavedNpcAnim = 0x80244494; // type:data flo_16_pad_44F8 = 0x802444F8; // type:data flo_25_pad_4734 = 0x80244734; // type:data D_802447C0 = 0x802447C0; // type:data arn_03_pad_47DC = 0x802447DC; // type:data D_80244A20 = 0x80244A20; // type:data arn_03_ConsumableChoiceList = 0x80244A20; // type:data +arn_03_KeyItemChoiceList = 0x80244A20; // type:data D_80244C18 = 0x80244C18; // type:data D_80244D88 = 0x80244D88; // type:data +sbk_30_LetterDelivery_SavedNpcAnim = 0x80244D88; // type:data dro_02_pad_4DD4 = 0x80244DD4; // type:data +D_80244E78 = 0x80244E78; // type:data flo_03_pad_4ECC = 0x80244ECC; // type:data flo_14_pad_4F24 = 0x80244F24; // type:data flo_08_pad_4F3C = 0x80244F3C; // type:data flo_14_pad_4F64 = 0x80244F64; // type:data flo_25_ConsumableChoiceList = 0x80244FA0; // type:data +flo_25_ItemChoiceList = 0x80244FA0; // type:data arn_05_pad_4FF8 = 0x80244FF8; // type:data flo_25_D_8024510C_pad = 0x8024510C; // type:data flo_25_FlowerGuard_ItemChoiceList = 0x80245110; // type:data @@ -23558,14 +23975,19 @@ D_8024592C = 0x8024592C; // type:data flo_08_pad_598C = 0x8024598C; // type:data D_802459C0 = 0x802459C0; // type:data D_80245AB4 = 0x80245AB4; // type:data +obk_01_LetterDelivery_SavedNpcAnim = 0x80245AB4; // type:data flo_00_pad_5E2C = 0x80245E2C; // type:data D_802461F0 = 0x802461F0; // type:data D_80246260 = 0x80246260; // type:data +flo_08_ItemChoiceList = 0x802462C0; // type:data ECAA80_ItemChoiceList = 0x802462F0; // type:data D_80246300 = 0x80246300; // type:data +D_802463B8_kkj_19 = 0x802463B8; // D_80246424 = 0x80246424; // type:data +hos_06_LetterDelivery_SavedNpcAnim = 0x80246424; // type:data flo_08_D_802462C4_pad = 0x8024642C; // type:data flo_08_FlowerGuard_ItemChoiceList = 0x80246430; // type:data +ECAA80_FlowerGuard_ItemChoiceList = 0x80246460; // type:data D_80246528 = 0x80246528; // type:data D_8024652C = 0x8024652C; // type:data D_80246530 = 0x80246530; // type:data @@ -23574,8 +23996,7 @@ D_80246538 = 0x80246538; // type:data D_80246550 = 0x80246550; // type:data D_80246554 = 0x80246554; // type:data D_80246558 = 0x80246558; // type:data -D_802463B8_kkj_19 = 0x802463B8; -D_80246558_kkj_19 = 0x80246558; +D_80246558_kkj_19 = 0x80246558; // D_8024655C = 0x8024655C; // type:data D_80246560 = 0x80246560; // type:data D_80246568 = 0x80246568; // type:data @@ -23589,9 +24010,11 @@ D_802465F0 = 0x802465F0; // type:data flo_18_pad_66B4 = 0x802466B4; // type:data D_802466D0 = 0x802466D0; // type:data D_80246794 = 0x80246794; // type:data +kzn_02_LetterDelivery_SavedNpcAnim = 0x80246794; // type:data kzn_17_LetterDelivery_SavedNpcAnim = 0x802467B4; // type:data flo_00_pad_684C = 0x8024684C; // type:data D_80246894 = 0x80246894; // type:data +EA0C10_LetterDelivery_SavedNpcAnim = 0x80246894; // type:data D_80246990 = 0x80246990; // type:data dgb_08_pad_69DC = 0x802469DC; // type:data D_80246A20 = 0x80246A20; // type:data @@ -23603,7 +24026,9 @@ D_80247420 = 0x80247420; // type:data D_802474A0 = 0x802474A0; // type:data D_80247548 = 0x80247548; // type:data D_802475E4 = 0x802475E4; // type:data +kzn_03_LetterDelivery_SavedNpcAnim = 0x802475E4; // type:data D_80247664 = 0x80247664; // type:data +kzn_09_LetterDelivery_SavedNpcAnim = 0x80247664; // type:data D_80247750 = 0x80247750; // type:data rodata_alignment = 0x80247938; // type:data D_802479F0 = 0x802479F0; // type:data @@ -23615,6 +24040,7 @@ 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 D_80247D00 = 0x80247D00; // type:data flo_13_D_80247D00 = 0x80247D00; // type:data raster.3 = 0x80247D00; // type:data @@ -23628,6 +24054,7 @@ D_802483C4 = 0x802483C4; // type:data D_802483D0 = 0x802483D0; // type:data D_80248480 = 0x80248480; // type:data D_8024854C = 0x8024854C; // type:data +EA8AE0_LetterDelivery_SavedNpcAnim = 0x8024854C; // type:data kzn_19_LetterDelivery_SavedNpcAnim = 0x8024854C; // type:data D_80248600 = 0x80248600; // type:data D_80248624 = 0x80248624; // type:data @@ -23673,6 +24100,7 @@ D_8024C108 = 0x8024C108; // type:data D_8024C110 = 0x8024C110; // type:data D_8024C117 = 0x8024C117; // type:data D_8024C1D8 = 0x8024C1D8; // type:data +sam_06_LetterDelivery_SavedNpcAnim = 0x8024C1D8; // type:data D_8024C5E0 = 0x8024C5E0; // type:data D_8024DBC0 = 0x8024DBC0; // type:data D_8024DD88 = 0x8024DD88; // type:data @@ -23682,6 +24110,7 @@ sam_01_Quizmo_StageEffect = 0x8024DF18; // type:data sam_01_Quizmo_AudienceEffect = 0x8024DF1C; // type:data sam_01_Quizmo_VannaTEffect = 0x8024DF20; // type:data D_8024DF24 = 0x8024DF24; // type:data +sam_01_LetterDelivery_SavedNpcAnim = 0x8024DF24; // type:data D_8024DFC0 = 0x8024DFC0; // type:data dro_01_Quizmo_Worker = 0x8024DFC0; // type:data dro_01_pad_D_8024DFC4 = 0x8024DFC4; // type:data @@ -23742,11 +24171,13 @@ dro_02_D_8024EFD0 = 0x8024EFD0; // type:data D_8024F010 = 0x8024F010; // type:data dro_02_D_8024F010 = 0x8024F010; // type:data dro_02_pad_D_8024F07C = 0x8024F07C; // type:data -dro_02_KeyItemChoiceList = 0x8024F080; // type:data dro_02_D_8024F080 = 0x8024F080; // type:data +dro_02_KeyItemChoiceList = 0x8024F080; // type:data dro_02_pad_D_8024F240 = 0x8024F240; // type:data D_8024F248 = 0x8024F248; // type:data +ItemChoiceList = 0x8024F248; // type:data dro_02_D_8024F248 = 0x8024F248; // type:data +dro_02_ItemChoiceList = 0x8024F248; // type:data D_8024F2A0 = 0x8024F2A0; // type:data D_8024F2A1 = 0x8024F2A1; // type:data D_8024F2A2 = 0x8024F2A2; // type:data @@ -23832,6 +24263,7 @@ jan_03_Quizmo_StageEffect = 0x8024FEF8; // type:data jan_03_Quizmo_AudienceEffect = 0x8024FEFC; // type:data jan_03_Quizmo_VannaTEffect = 0x8024FF00; // type:data D_8024FF04 = 0x8024FF04; // type:data +jan_03_LetterDelivery_SavedNpcAnim = 0x8024FF04; // type:data D_80250EF0 = 0x80250EF0; // type:data D_802510B0 = 0x802510B0; // type:data mac_03_Quizmo_Worker = 0x802513D0; // type:data @@ -23855,11 +24287,13 @@ nok_01_Quizmo_AudienceEffect = 0x80251C64; // type:data nok_01_Quizmo_VannaTEffect = 0x80251C68; // type:data D_80251C70 = 0x80251C70; // type:data D_80251E34 = 0x80251E34; // type:data +nok_01_LetterDelivery_SavedNpcAnim = 0x80251E34; // type:data mac_05_Quizmo_Worker = 0x802529D0; // type:data mac_05_Quizmo_AnswerResult = 0x802529E8; // type:data mac_05_Quizmo_StageEffect = 0x802529F0; // type:data mac_05_Quizmo_AudienceEffect = 0x802529F4; // type:data D_802529F8 = 0x802529F8; // type:data +mac_05_Quizmo_VannaTEffect = 0x802529F8; // type:data D_80252A00 = 0x80252A00; // type:data D_80252BC8 = 0x80252BC8; // type:data mac_05_LetterDelivery_SavedNpcAnim = 0x80252D38; // type:data @@ -23870,13 +24304,14 @@ D_80253384 = 0x80253384; // type:data D_8025338C = 0x8025338C; // type:data D_80253390 = 0x80253390; // type:data D_802547D0 = 0x802547D0; // type:data -nok_02_Quizmo_AnswerResult = 0x802549B8; // type:data nok_02_Quizmo_Worker = 0x802549A0; // type:data +nok_02_Quizmo_AnswerResult = 0x802549B8; // type:data nok_02_Quizmo_StageEffect = 0x802549C0; // type:data nok_02_Quizmo_AudienceEffect = 0x802549C4; // type:data nok_02_Quizmo_VannaTEffect = 0x802549C8; // type:data D_802549D0 = 0x802549D0; // type:data D_80254B94 = 0x80254B94; // type:data +nok_02_LetterDelivery_SavedNpcAnim = 0x80254B94; // type:data D_80254BA0 = 0x80254BA0; // type:data D_80254C50 = 0x80254C50; // type:data D_80254D68 = 0x80254D68; // type:data @@ -23916,6 +24351,7 @@ kmr_02_Quizmo_AudienceEffect = 0x80257F4C; // type:data kmr_02_Quizmo_VannaTEffect = 0x80257F50; // type:data D_80257F58 = 0x80257F58; // type:data D_8025811C = 0x8025811C; // type:data +kmr_02_LetterDelivery_SavedNpcAnim = 0x8025811C; // type:data D_80258120 = 0x80258120; // type:data D_80258140 = 0x80258140; // type:data D_80258340 = 0x80258340; // type:data @@ -24328,7 +24764,6 @@ func_802A9834 = 0x802A9834; // func_802A984C = 0x802A984C; // func_802A9894 = 0x802A9894; // func_802A9898 = 0x802A9898; // -func_802A98B0 = 0x802A98B0; // D_802A98C0 = 0x802A98C0; // type:data func_802A98D0 = 0x802A98D0; // func_802A98DC = 0x802A98DC; // @@ -24353,6 +24788,7 @@ D_802AA694 = 0x802AA694; // type:data D_802AAA08 = 0x802AAA08; // type:data D_802AAA30 = 0x802AAA30; // type:data D_802AB513 = 0x802AB513; // type:data +padding2 = 0x802ACC04; // type:data D_802ACC38 = 0x802ACC38; // type:data D_802ACC60 = 0x802ACC60; // type:data D_802ACC64 = 0x802ACC64; // type:data @@ -25006,8 +25442,8 @@ D_E007AC30 = 0xE007AC30; // type:data D_E007C510 = 0xE007C510; // type:data D_E007EC2F = 0xE007EC2F; // type:data D_E007EC40 = 0xE007EC40; // type:data -D_E0082D00 = 0xE0082D00; // type:data D_E0082D30 = 0xE0082D30; // type:data +D_E0082D30.6 = 0xE0082D30; // type:data D_E0082D60 = 0xE0082D60; // type:data D_E0086AA0 = 0xE0086AA0; // type:data D_E0086AB4 = 0xE0086AB4; // type:data @@ -25098,9 +25534,6 @@ D_E00C6CD8 = 0xE00C6CD8; // type:data D_E00C6CE0 = 0xE00C6CE0; // type:data D_E00C6CE8 = 0xE00C6CE8; // type:data D_E00C6CF0 = 0xE00C6CF0; // type:data -D_E00C8710 = 0xE00C8710; // type:data -D_E00C8718 = 0xE00C8718; // type:data -D_E00C8720 = 0xE00C8720; // type:data D_E00C8730 = 0xE00C8730; // type:data D_E00C8738 = 0xE00C8738; // type:data D_E00C8740 = 0xE00C8740; // type:data @@ -25358,12 +25791,31 @@ D_F5000007 = 0xF5000007; // type:data D_F79DDD0F = 0xF79DDD0F; // type:data D_FA000028 = 0xFA000028; // type:data D_FD100008 = 0xFD100008; // type:data -D_80283D98 = 0x80283D98; // type:data +dead_atan2 = 0x8002AF70; // type:data dead:yes dead_atan2 = 0x8002AF70; // type:func dead:yes dead_cos_rad = 0x8002B4C0; // type:func dead:yes +dead_heap_free = 0x8002C01C; // type:data dead:yes +dead_func_80041080 = 0x80041080; // type:data dead:yes +dead_guMtxIdentF = 0x8006C660; // type:data dead:yes +dead_guMtxCatF = 0x8006C7C0; // type:data dead:yes dead_playFX_11 = 0x80075170; // type:func dead:yes +dead_gGameStatusPtr = 0x80079430; // type:data dead:yes +dead_gCurrentCameraID = 0x8007C760; // type:data dead:yes dead_gItemTable = 0x8008D2C0; // type:data dead:true +dead_gItemTable = 0x8008D2C0; // type:data dead:yes +dead_gCurrentCamID = 0x800A158C; // type:data dead:yes +dead_gOverrideFlags = 0x800A15A8; // type:data dead:yes +dead_gCurrentEncounter = 0x800B7EF0; // type:data dead:yes +dead_gCameras = 0x800B8D80; // type:data dead:yes dead_gPlayerStatusPtr = 0x800FFC90; // type:data dead:yes +dead_wPartnerHudScripts = 0x80100060; // type:data dead:yes +dead_wDisabledPartnerHudScripts = 0x801000A0; // type:data dead:yes +dead_80117163 = 0x80117160; // type:data dead:yes +dead_gPartnerActionStatus = 0x80117160; // type:data dead:yes +dead_gPlayerStatus = 0x80117578; // type:data dead:yes +dead_gPlayerActionState = 0x8011762C; // type:data dead:yes +dead_gPlayerData = 0x80117840; // type:data dead:yes +dead_gCollisionStatus = 0x80169B12; // type:data dead:yes dead_evt_get_variable = 0x802D4E8C; // type:func dead:yes dead_evt_set_variable = 0x802D5468; // type:func dead:yes dead_evt_get_float_variable = 0x802D57FC; // type:func dead:yes diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index 41de79632f..05969f3eeb 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -222,6 +222,27 @@ D_09000B88 = 0x09000B88; D_09000C00 = 0x09000C00; D_09000C20 = 0x09000C20; +// effect_disable_x +D_09002100 = 0x09002100; +D_09002198 = 0x09002198; +D_09002230 = 0x09002230; +D_09002250 = 0x09002250; +D_09002270 = 0x09002270; +D_09002290 = 0x09002290; +D_090022B0 = 0x090022B0; +D_09002320 = 0x09002320; +D_09002360 = 0x09002360; +D_090023A0 = 0x090023A0; +D_090023E0 = 0x090023E0; +D_09002420 = 0x09002420; +D_09002460 = 0x09002460; +D_090024A0 = 0x090024A0; +D_090024E0 = 0x090024E0; +D_09002520 = 0x09002520; +D_09002560 = 0x09002560; +D_090025A0 = 0x090025A0; +D_090025E0 = 0x090025E0; + // effect_throw_spiny D_09000800 = 0x09000800; D_090008D8 = 0x090008D8; @@ -358,6 +379,9 @@ D_80169B16 = 0x80169B16; D_80248380 = 0x80248380; D_8024854C = 0x8024854C; D_80246894 = 0x80246894; +dead_gCurrentCameraID = 0x8007C760; +dead_gGameStatusPtr = 0x80079430; +D_80079540 = 0x80079540; // TODO below @@ -1240,7 +1264,6 @@ D_80246538_kkj_19 = 0x80246538; D_80246558_kkj_19 = 0x80246558; D_80246550_kkj_19 = 0x80246550; D_80246560_kkj_19 = 0x80246560; -D_80077A40 = 0x80077A40; // mgm_01 scripts (unsplit in E141D0.data.s) D_80242310 = 0x80242310;